亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtpfaketransmitter.h

?? Real Transport 流媒體編程資料
?? H
字號:
/*  This class allows for jrtp to process packets without sending them out   anywhere.  The incoming messages are handed in to jrtp through the TransmissionParams   and can be retreived from jrtp through the normal polling mecanisms.  The outgoing RTP/RTCP packets are given to jrtp through the normal  session->SendPacket() and those packets are handed back out to the  client through a callback function (packet_ready_cb).    example usage : Allows for integration of RTP into gstreamer.    Copyright (c) 2005 Philippe Khalaf <burger@speedy.org>    This file is a part of JRTPLIB  Copyright (c) 1999-2004 Jori Liesenborgs  Contact: jori@lumumba.luc.ac.be  This library was developed at the "Expertisecentrum Digitale Media"  (http://www.edm.luc.ac.be), a research center of the "Limburgs Universitair  Centrum" (http://www.luc.ac.be). The library is based upon work done for   my thesis at the School for Knowledge Technology (Belgium/The Netherlands).  Permission is hereby granted, free of charge, to any person obtaining a  copy of this software and associated documentation files (the "Software"),  to deal in the Software without restriction, including without limitation  the rights to use, copy, modify, merge, publish, distribute, sublicense,  and/or sell copies of the Software, and to permit persons to whom the  Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included  in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS  IN THE SOFTWARE.*/#ifndef RTPFAKETRANSMITTER_H#define RTPFAKETRANSMITTER_H#include "rtpconfig.h"#include "rtptransmitter.h"#include "rtpipv4destination.h"#include "rtphashtable.h"#include "rtpkeyhashtable.h"#include <list>#ifdef RTP_SUPPORT_THREAD	#include <jmutex.h>#endif // RTP_SUPPORT_THREAD#define RTPFAKETRANS_HASHSIZE									8317#define RTPFAKETRANS_DEFAULTPORTBASE								5000// Definition of a callback that is called when a packet is ready for sending// params (*data, data_len, dest_addr, dest_port, rtp [1 if rtp, 0 if rtcp])typedef void(*packet_ready_cb)(uint8_t*, uint16_t, uint32_t, uint16_t, int rtp);class RTPFakeTransmissionParams : public RTPTransmissionParams{public:	RTPFakeTransmissionParams():RTPTransmissionParams(RTPTransmitter::UserDefinedProto)	{ portbase = RTPFAKETRANS_DEFAULTPORTBASE; bindIP = 0; multicastTTL = 1; currentdata = NULL;}	void SetBindIP(uint32_t ip)								{ bindIP = ip; }	void SetPortbase(uint16_t pbase)							{ portbase = pbase; }	void SetMulticastTTL(uint8_t mcastTTL)							{ multicastTTL = mcastTTL; }	void SetLocalIPList(std::list<uint32_t> &iplist)					{ localIPs = iplist; } 	void ClearLocalIPList()									{ localIPs.clear(); }    void SetCurrentData(uint8_t *data)                      { currentdata = data; }    void SetCurrentDataLen(uint16_t len)                   { currentdatalen = len; }    void SetCurrentDataAddr(uint32_t addr)                 { currentdataaddr = addr; }    void SetCurrentDataPort(uint16_t port)                 { currentdataport = port; }    void SetCurrentDataType(bool type)                      { currentdatatype = type; }    void SetPacketReadyCB(packet_ready_cb cb)                 { packetreadycb = cb; };	uint32_t GetBindIP() const								{ return bindIP; }	uint16_t GetPortbase() const								{ return portbase; }	uint8_t GetMulticastTTL() const							{ return multicastTTL; }	const std::list<uint32_t> &GetLocalIPList() const					{ return localIPs; }    uint8_t* GetCurrentData() const                     { return currentdata; }    uint16_t GetCurrentDataLen() const                     { return currentdatalen; }    uint32_t GetCurrentDataAddr() const                { return currentdataaddr; }    uint16_t GetCurrentDataPort() const                 { return currentdataport; }    bool GetCurrentDataType() const                     { return currentdatatype; }    packet_ready_cb GetPacketReadyCB() const             { return packetreadycb; }private:	uint16_t portbase;	uint32_t bindIP;	std::list<uint32_t> localIPs;	uint8_t multicastTTL;    uint8_t* currentdata;    uint16_t currentdatalen;    uint32_t currentdataaddr;    uint16_t currentdataport;    bool currentdatatype;    packet_ready_cb packetreadycb;};class RTPFakeTransmissionInfo : public RTPTransmissionInfo{public:	RTPFakeTransmissionInfo(std::list<uint32_t> iplist,            RTPFakeTransmissionParams *transparams) :         RTPTransmissionInfo(RTPTransmitter::UserDefinedProto)     { localIPlist = iplist; params = transparams; } 	~RTPFakeTransmissionInfo()								{ }	std::list<uint32_t> GetLocalIPList() const						{ return localIPlist; }    RTPFakeTransmissionParams* GetTransParams()             { return params; }private:	std::list<uint32_t> localIPlist;    RTPFakeTransmissionParams *params;};	#ifdef RTP_SUPPORT_INLINETEMPLATEPARAM	inline int RTPFakeTrans_GetHashIndex_IPv4Dest(const RTPIPv4Destination &d)				{ return d.GetIP_HBO()%RTPFAKETRANS_HASHSIZE; }	inline int RTPFakeTrans_GetHashIndex_uint32_t(const uint32_t &k)					{ return k%RTPFAKETRANS_HASHSIZE; }#else // No support for inline function as template parameter	int RTPFakeTrans_GetHashIndex_IPv4Dest(const RTPIPv4Destination &d);	int RTPFakeTrans_GetHashIndex_uint32_t(const uint32_t &k);#endif // RTP_SUPPORT_INLINETEMPLATEPARAM#define RTPFAKETRANS_HEADERSIZE						(20+8)	class RTPFakeTransmitter : public RTPTransmitter{public:	RTPFakeTransmitter();	~RTPFakeTransmitter();	int Init(bool treadsafe);	int Create(size_t maxpacksize,const RTPTransmissionParams *transparams);	void Destroy();	RTPTransmissionInfo *GetTransmissionInfo();	int GetLocalHostName(uint8_t *buffer,size_t *bufferlength);	bool ComesFromThisTransmitter(const RTPAddress *addr);	size_t GetHeaderOverhead()							{ return RTPFAKETRANS_HEADERSIZE; }		int Poll();	int WaitForIncomingData(const RTPTime &delay,bool *dataavailable = 0);	int AbortWait();		int SendRTPData(const void *data,size_t len);		int SendRTCPData(const void *data,size_t len);	void ResetPacketCount();	uint32_t GetNumRTPPacketsSent();	uint32_t GetNumRTCPPacketsSent();					int AddDestination(const RTPAddress &addr);	int DeleteDestination(const RTPAddress &addr);	void ClearDestinations();	bool SupportsMulticasting();	int JoinMulticastGroup(const RTPAddress &addr);	int LeaveMulticastGroup(const RTPAddress &addr);	void LeaveAllMulticastGroups();	int SetReceiveMode(RTPTransmitter::ReceiveMode m);	int AddToIgnoreList(const RTPAddress &addr);	int DeleteFromIgnoreList(const RTPAddress &addr);	void ClearIgnoreList();	int AddToAcceptList(const RTPAddress &addr);	int DeleteFromAcceptList(const RTPAddress &addr);	void ClearAcceptList();	int SetMaximumPacketSize(size_t s);			bool NewDataAvailable();	RTPRawPacket *GetNextPacket();#ifdef RTPDEBUG	void Dump();#endif // RTPDEBUGprivate:	int CreateLocalIPList();	bool GetLocalIPList_Interfaces();	void GetLocalIPList_DNS();	void AddLoopbackAddress();	void FlushPackets();	int FakePoll();	int ProcessAddAcceptIgnoreEntry(uint32_t ip,uint16_t port);	int ProcessDeleteAcceptIgnoreEntry(uint32_t ip,uint16_t port);#ifdef RTP_SUPPORT_IPV4MULTICAST	bool SetMulticastTTL(uint8_t ttl);#endif // RTP_SUPPORT_IPV4MULTICAST	bool ShouldAcceptData(uint32_t srcip,uint16_t srcport);	void ClearAcceptIgnoreInfo();	    RTPFakeTransmissionParams *params;	bool init;	bool created;	bool waitingfordata;	std::list<uint32_t> localIPs;	uint16_t portbase;	uint8_t multicastTTL;	RTPTransmitter::ReceiveMode receivemode;	uint8_t *localhostname;	size_t localhostnamelength;		RTPHashTable<const RTPIPv4Destination,RTPFakeTrans_GetHashIndex_IPv4Dest,RTPFAKETRANS_HASHSIZE> destinations;#ifdef RTP_SUPPORT_IPV4MULTICAST//	RTPHashTable<const uint32_t,RTPFakeTrans_GetHashIndex_uint32_t,RTPFAKETRANS_HASHSIZE> multicastgroups;#endif // RTP_SUPPORT_IPV4MULTICAST	std::list<RTPRawPacket*> rawpacketlist;	bool supportsmulticasting;	size_t maxpacksize;	class PortInfo	{	public:		PortInfo() { all = false; }				bool all;		std::list<uint16_t> portlist;	};	RTPKeyHashTable<const uint32_t,PortInfo*,RTPFakeTrans_GetHashIndex_uint32_t,RTPFAKETRANS_HASHSIZE> acceptignoreinfo;	int CreateAbortDescriptors();	void DestroyAbortDescriptors();	void AbortWaitInternal();#ifdef RTP_SUPPORT_THREAD	JMutex mainmutex,waitmutex;	int threadsafe;#endif // RTP_SUPPORT_THREAD	uint32_t rtppackcount,rtcppackcount;};#endif // RTPFakeTRANSMITTER_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区日韩一区| 国产精品高潮久久久久无| 99久久精品一区| 国产东北露脸精品视频| 国产成人一区在线| 国产一区二区三区四区五区美女| 奇米在线7777在线精品| 另类的小说在线视频另类成人小视频在线| 日韩黄色免费电影| 蜜桃av噜噜一区| 国产精品自拍在线| 99精品视频在线观看免费| 色综合天天视频在线观看 | 国精产品一区一区三区mba视频| 亚洲成人第一页| 久久99精品视频| 成人免费看黄yyy456| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 久久九九久久九九| 国产精品久久久久久亚洲毛片 | 在线视频国内自拍亚洲视频| 欧美三级视频在线播放| 6080午夜不卡| 久久久久国色av免费看影院| 国产精品伦理一区二区| 亚洲综合久久久| 激情丁香综合五月| 色综合天天综合给合国产| 欧美日韩国产高清一区二区三区 | 丰满白嫩尤物一区二区| 日本丰满少妇一区二区三区| 国产视频一区不卡| 亚洲综合色婷婷| 国产精品资源站在线| 欧美日韩国产影片| 国产精品久久久久久妇女6080| 亚洲一区二区精品久久av| 国产一区二区视频在线| 欧美三级韩国三级日本一级| 国产日韩三级在线| 日韩在线播放一区二区| 99麻豆久久久国产精品免费 | 午夜精品一区在线观看| 国产成人免费高清| 88在线观看91蜜桃国自产| 成人免费在线视频| 国产一区二区网址| 制服.丝袜.亚洲.另类.中文 | 免费在线观看日韩欧美| 99久久亚洲一区二区三区青草| 欧美电视剧免费全集观看| 一区二区三区 在线观看视频 | 亚洲精品日产精品乱码不卡| 久久99精品网久久| 91麻豆精品国产91久久久久久久久| 国产精品第四页| 国产精选一区二区三区| 日韩欧美中文一区二区| 五月激情综合色| 欧美日韩国产综合一区二区| 亚洲视频免费在线观看| 国产91丝袜在线播放0| 日韩精品一区二区三区中文不卡 | 久久久久久亚洲综合影院红桃 | 五月天丁香久久| 欧美丝袜丝nylons| 一区二区三区在线观看国产| 91免费视频观看| 中文字幕亚洲精品在线观看| 成人污污视频在线观看| 国产欧美一区二区在线观看| 岛国精品在线播放| 亚洲国产精品av| gogogo免费视频观看亚洲一| 国产精品嫩草影院av蜜臀| 国产成人av电影免费在线观看| 国产无人区一区二区三区| 国产精品一区免费在线观看| 精品国免费一区二区三区| 国产精品一区二区视频| 国产精品亲子伦对白| 99久久久精品免费观看国产蜜| 亚洲图片欧美激情| 欧美性色欧美a在线播放| 日韩精品国产欧美| 日韩欧美一级片| 福利一区二区在线| 亚洲精选在线视频| 欧美精品精品一区| 久久国产精品72免费观看| 精品久久久网站| 成人黄色电影在线| 一区二区三区在线免费| 91麻豆精品国产91久久久| 激情图片小说一区| 综合久久一区二区三区| 欧美亚洲禁片免费| 奇米影视一区二区三区| 欧美激情一区二区三区四区| 在线观看三级视频欧美| 久久成人综合网| 国产精品久久久久影院| 欧美久久久久久久久中文字幕| 国产自产v一区二区三区c| 国产精品国产三级国产a| 欧美日韩精品一区二区| 国产美女av一区二区三区| 亚洲精品亚洲人成人网| 精品毛片乱码1区2区3区| 一本大道久久a久久精品综合| 亚洲bt欧美bt精品| 亚洲国产精品t66y| 日韩一区二区免费电影| 91色视频在线| 国产福利一区二区三区视频 | 国产老妇另类xxxxx| 亚洲欧美另类久久久精品| 日韩精品专区在线影院观看| 99久久99久久综合| 国产精品一区免费视频| 蜜臀91精品一区二区三区 | 欧美日韩国产精选| eeuss鲁片一区二区三区| 麻豆免费看一区二区三区| 亚洲韩国精品一区| 成人欧美一区二区三区在线播放| 日韩久久精品一区| 欧美久久久久久蜜桃| 91黄视频在线| av午夜一区麻豆| 国产成人精品免费视频网站| 麻豆成人综合网| 日韩精品成人一区二区在线| 亚洲午夜一区二区三区| 亚洲色图色小说| 国产精品久久久久久亚洲毛片 | 成人禁用看黄a在线| 国产综合成人久久大片91| 日韩av一区二区三区四区| 亚洲黄色小说网站| 亚洲男人都懂的| 亚洲视频一区二区在线| 一色屋精品亚洲香蕉网站| 日本一区二区三区高清不卡| 国产亚洲欧美日韩在线一区| 精品久久国产老人久久综合| 欧美一级专区免费大片| 91精品国产91热久久久做人人| 91福利在线看| 欧美日韩成人激情| 91精品国产福利| 欧美成人一区二区三区片免费 | 成人国产精品免费观看动漫| 国产精品综合一区二区三区| 国产精品一区2区| 国产jizzjizz一区二区| 国产成+人+日韩+欧美+亚洲| 不卡在线视频中文字幕| 91亚洲大成网污www| 色爱区综合激月婷婷| 欧美日韩在线播放三区四区| 欧美日韩在线精品一区二区三区激情| 91蜜桃在线观看| 欧美天堂亚洲电影院在线播放| 欧美日韩一区二区三区高清| 欧美日韩视频一区二区| 欧美日韩电影在线| 精品国产一区二区三区久久久蜜月| 日韩欧美区一区二| 国产精品麻豆欧美日韩ww| 亚洲精品久久嫩草网站秘色| 亚洲电影一级片| 激情综合网av| 成人美女在线观看| 欧美色手机在线观看| 精品国产在天天线2019| 亚洲国产成人午夜在线一区| 亚洲小少妇裸体bbw| 免费观看在线色综合| 成人午夜精品一区二区三区| 欧洲中文字幕精品| 久久综合狠狠综合久久激情 | 奇米精品一区二区三区四区| 国产麻豆午夜三级精品| 色狠狠一区二区三区香蕉| 日韩色视频在线观看| 亚洲欧洲三级电影| 日韩电影在线一区| aaa欧美日韩| 精品处破学生在线二十三| 亚洲精品免费视频| 国产成人精品三级| 欧美一区在线视频| 亚洲丝袜美腿综合| 高清国产一区二区| 精品精品国产高清一毛片一天堂| 亚洲精品国产精品乱码不99| 韩日av一区二区| 91精品福利在线一区二区三区| 日韩一区中文字幕|