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

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

?? rtpfaketransmitter.cpp

?? Real Transport 流媒體編程資料
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	}	destinations.GotoFirstElement();    // send to each destination	while (destinations.HasCurrentElement())	{        (*params->GetPacketReadyCB())((uint8_t*)data, len,        destinations.GetCurrentElement().GetIP_NBO(),        destinations.GetCurrentElement().GetRTCPPort_NBO(),         0);		destinations.GotoNextElement();	}		rtcppackcount++;	MAINMUTEX_UNLOCK	return 0;}void RTPFakeTransmitter::ResetPacketCount(){	if (!init)		return;	MAINMUTEX_LOCK	if (created)	{		rtppackcount = 0;		rtcppackcount = 0;		}	MAINMUTEX_UNLOCK	}uint32_t RTPFakeTransmitter::GetNumRTPPacketsSent(){	if (!init)		return 0;	MAINMUTEX_LOCK		uint32_t num;	if (!created)		num = 0;	else		num = rtppackcount;	MAINMUTEX_UNLOCK	return num;}uint32_t RTPFakeTransmitter::GetNumRTCPPacketsSent(){	if (!init)		return 0;		MAINMUTEX_LOCK		uint32_t num;	if (!created)		num = 0;	else		num = rtcppackcount;	MAINMUTEX_UNLOCK	return num;}	int RTPFakeTransmitter::AddDestination(const RTPAddress &addr){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK	if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}		RTPIPv4Address &address = (RTPIPv4Address &)addr;	RTPIPv4Destination dest(address.GetIP(),address.GetPort());	int status = destinations.AddElement(dest);	MAINMUTEX_UNLOCK	return status;}int RTPFakeTransmitter::DeleteDestination(const RTPAddress &addr){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK		if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}		RTPIPv4Address &address = (RTPIPv4Address &)addr;		RTPIPv4Destination dest(address.GetIP(),address.GetPort());	int status = destinations.DeleteElement(dest);		MAINMUTEX_UNLOCK	return status;}void RTPFakeTransmitter::ClearDestinations(){	if (!init)		return;		MAINMUTEX_LOCK	if (created)		destinations.Clear();	MAINMUTEX_UNLOCK}bool RTPFakeTransmitter::SupportsMulticasting(){	if (!init)		return false;		MAINMUTEX_LOCK		bool v;			if (!created)		v = false;	else		v = supportsmulticasting;	MAINMUTEX_UNLOCK	return v;}#ifdef RTP_SUPPORT_IPV4MULTICASTint RTPFakeTransmitter::JoinMulticastGroup(const RTPAddress &addr){// hrrm wonder how will manage to get multicast info thru to the UDPSINK/*	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;	MAINMUTEX_LOCK		int status;		if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}		const RTPIPv4Address &address = (const RTPIPv4Address &)addr;	uint32_t mcastIP = address.GetIP();		if (!RTPFakeTRANS_IS_MCASTADDR(mcastIP))	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTAMULTICASTADDRESS;	}		status = multicastgroups.AddElement(mcastIP);	if (status >= 0)	{		RTPFakeTRANS_MCASTMEMBERSHIP(rtpsock,IP_ADD_MEMBERSHIP,mcastIP,status);		if (status != 0)		{			multicastgroups.DeleteElement(mcastIP);			MAINMUTEX_UNLOCK			return ERR_RTP_FAKETRANS_COULDNTJOINMULTICASTGROUP;		}		RTPFakeTRANS_MCASTMEMBERSHIP(rtcpsock,IP_ADD_MEMBERSHIP,mcastIP,status);		if (status != 0)		{			RTPFakeTRANS_MCASTMEMBERSHIP(rtpsock,IP_DROP_MEMBERSHIP,mcastIP,status);			multicastgroups.DeleteElement(mcastIP);			MAINMUTEX_UNLOCK			return ERR_RTP_FAKETRANS_COULDNTJOINMULTICASTGROUP;		}	}	MAINMUTEX_UNLOCK		return status;*/	return ERR_RTP_FAKETRANS_NOMULTICASTSUPPORT;}int RTPFakeTransmitter::LeaveMulticastGroup(const RTPAddress &addr){    /*	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;	MAINMUTEX_LOCK		int status;		if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}		const RTPIPv4Address &address = (const RTPIPv4Address &)addr;	uint32_t mcastIP = address.GetIP();		if (!RTPFakeTRANS_IS_MCASTADDR(mcastIP))	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTAMULTICASTADDRESS;	}		status = multicastgroups.DeleteElement(mcastIP);	if (status >= 0)	{			RTPFakeTRANS_MCASTMEMBERSHIP(rtpsock,IP_DROP_MEMBERSHIP,mcastIP,status);		RTPFakeTRANS_MCASTMEMBERSHIP(rtcpsock,IP_DROP_MEMBERSHIP,mcastIP,status);		status = 0;	}		MAINMUTEX_UNLOCK	return status;    */	return ERR_RTP_FAKETRANS_NOMULTICASTSUPPORT;}void RTPFakeTransmitter::LeaveAllMulticastGroups(){/*	if (!init)		return;		MAINMUTEX_LOCK	if (created)	{		multicastgroups.GotoFirstElement();		while (multicastgroups.HasCurrentElement())		{			uint32_t mcastIP;			int status = 0;			mcastIP = multicastgroups.GetCurrentElement();			RTPFakeTRANS_MCASTMEMBERSHIP(rtpsock,IP_DROP_MEMBERSHIP,mcastIP,status);			RTPFakeTRANS_MCASTMEMBERSHIP(rtcpsock,IP_DROP_MEMBERSHIP,mcastIP,status);			multicastgroups.GotoNextElement();		}		multicastgroups.Clear();	}	MAINMUTEX_UNLOCK*/}#else // no multicast supportint RTPFakeTransmitter::JoinMulticastGroup(const RTPAddress &addr){	return ERR_RTP_FAKETRANS_NOMULTICASTSUPPORT;}int RTPFakeTransmitter::LeaveMulticastGroup(const RTPAddress &addr){	return ERR_RTP_FAKETRANS_NOMULTICASTSUPPORT;}void RTPFakeTransmitter::LeaveAllMulticastGroups(){}#endif // RTP_SUPPORT_IPV4MULTICASTint RTPFakeTransmitter::SetReceiveMode(RTPTransmitter::ReceiveMode m){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK	if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (m != receivemode)	{		receivemode = m;		acceptignoreinfo.Clear();	}	MAINMUTEX_UNLOCK	return 0;}int RTPFakeTransmitter::AddToIgnoreList(const RTPAddress &addr){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;	MAINMUTEX_LOCK		int status;	if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}	if (receivemode != RTPTransmitter::IgnoreSome)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_DIFFERENTRECEIVEMODE;	}		const RTPIPv4Address &address = (const RTPIPv4Address &)addr;	status = ProcessAddAcceptIgnoreEntry(address.GetIP(),address.GetPort());		MAINMUTEX_UNLOCK	return status;}int RTPFakeTransmitter::DeleteFromIgnoreList(const RTPAddress &addr){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK		int status;		if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}	if (receivemode != RTPTransmitter::IgnoreSome)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_DIFFERENTRECEIVEMODE;	}		const RTPIPv4Address &address = (const RTPIPv4Address &)addr;		status = ProcessDeleteAcceptIgnoreEntry(address.GetIP(),address.GetPort());	MAINMUTEX_UNLOCK	return status;}void RTPFakeTransmitter::ClearIgnoreList(){	if (!init)		return;		MAINMUTEX_LOCK	if (created && receivemode == RTPTransmitter::IgnoreSome)		ClearAcceptIgnoreInfo();	MAINMUTEX_UNLOCK}int RTPFakeTransmitter::AddToAcceptList(const RTPAddress &addr){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK		int status;		if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}	if (receivemode != RTPTransmitter::AcceptSome)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_DIFFERENTRECEIVEMODE;	}		const RTPIPv4Address &address = (const RTPIPv4Address &)addr;	status = ProcessAddAcceptIgnoreEntry(address.GetIP(),address.GetPort());	MAINMUTEX_UNLOCK	return status;}int RTPFakeTransmitter::DeleteFromAcceptList(const RTPAddress &addr){	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK		int status;		if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (addr.GetAddressType() != RTPAddress::IPv4Address)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_INVALIDADDRESSTYPE;	}	if (receivemode != RTPTransmitter::AcceptSome)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_DIFFERENTRECEIVEMODE;	}		const RTPIPv4Address &address = (const RTPIPv4Address &)addr;	status = ProcessDeleteAcceptIgnoreEntry(address.GetIP(),address.GetPort());	MAINMUTEX_UNLOCK	return status;}void RTPFakeTransmitter::ClearAcceptList(){	if (!init)		return;		MAINMUTEX_LOCK	if (created && receivemode == RTPTransmitter::AcceptSome)		ClearAcceptIgnoreInfo();	MAINMUTEX_UNLOCK}int RTPFakeTransmitter::SetMaximumPacketSize(size_t s)	{	if (!init)		return ERR_RTP_FAKETRANS_NOTINIT;		MAINMUTEX_LOCK	if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (s > RTPFAKETRANS_MAXPACKSIZE)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_SPECIFIEDSIZETOOBIG;	}	maxpacksize = s;	MAINMUTEX_UNLOCK	return 0;}bool RTPFakeTransmitter::NewDataAvailable(){	if (!init)		return false;		MAINMUTEX_LOCK		bool v;			if (!created)		v = false;	else	{		if (rawpacketlist.empty())			v = false;		else			v = true;	}		MAINMUTEX_UNLOCK	return v;}RTPRawPacket *RTPFakeTransmitter::GetNextPacket(){	if (!init)		return 0;		MAINMUTEX_LOCK		RTPRawPacket *p;		if (!created)	{		MAINMUTEX_UNLOCK		return 0;	}	if (rawpacketlist.empty())	{		MAINMUTEX_UNLOCK		return 0;	}	p = *(rawpacketlist.begin());	rawpacketlist.pop_front();	MAINMUTEX_UNLOCK	return p;}// Here the private functions start...#ifdef RTP_SUPPORT_IPV4MULTICASTbool RTPFakeTransmitter::SetMulticastTTL(uint8_t ttl){/*	int ttl2,status;	ttl2 = (int)ttl;	status = setsockopt(rtpsock,IPPROTO_IP,IP_MULTICAST_TTL,(const char *)&ttl2,sizeof(int));	if (status != 0)		return false;	status = setsockopt(rtcpsock,IPPROTO_IP,IP_MULTICAST_TTL,(const char *)&ttl2,sizeof(int));	if (status != 0)		return false;	return true;*/}#endif // RTP_SUPPORT_IPV4MULTICASTvoid RTPFakeTransmitter::FlushPackets(){	std::list<RTPRawPacket*>::const_iterator it;	for (it = rawpacketlist.begin() ; it != rawpacketlist.end() ; ++it)		delete (*it);	rawpacketlist.clear();}int RTPFakeTransmitter::FakePoll(){    uint8_t *data = NULL;    int data_len = 0;    uint32_t sourceaddr;    uint16_t sourceport;    bool rtp;    bool acceptdata;    RTPTime curtime = RTPTime::CurrentTime();    data = params->GetCurrentData();    data_len = params->GetCurrentDataLen();    rtp = params->GetCurrentDataType();    sourceaddr = params->GetCurrentDataAddr();    sourceport = params->GetCurrentDataPort();    // lets make sure we got something    if (data == NULL || data_len <= 0)    {        return 0;    }    // let's make a RTPIPv4Address    RTPIPv4Address *addr = new RTPIPv4Address(sourceaddr, sourceport);    if (addr == 0)    {        return ERR_RTP_OUTOFMEM;    }    // ok we got the src addr, now this should be the actual packet    uint8_t *datacopy;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日av在线不卡| 欧美性受xxxx| 日韩精品一区二区三区三区免费| 国产精品久久久久永久免费观看| 日本欧美大码aⅴ在线播放| 欧美伊人精品成人久久综合97| 亚洲视频免费在线观看| 99久久免费国产| 一区二区三区国产豹纹内裤在线| 在线看日本不卡| 亚洲gay无套男同| 久久综合九色综合欧美就去吻 | 欧美丰满少妇xxxbbb| 午夜精品国产更新| 精品日韩成人av| av中文字幕一区| 亚洲国产精品久久久久婷婷884 | av一区二区三区在线| 午夜影院久久久| 国产日韩欧美高清在线| 91浏览器入口在线观看| 日韩va欧美va亚洲va久久| 国产亚洲精品bt天堂精选| 日本福利一区二区| 国产一本一道久久香蕉| 亚洲免费高清视频在线| 精品三级在线观看| 欧美在线观看禁18| 成人黄色软件下载| 日本欧美久久久久免费播放网| 欧美激情一区二区三区| 欧美一区二区国产| 欧美日韩中文字幕一区二区| 福利一区二区在线| 精品一区二区三区欧美| 视频在线在亚洲| 亚洲乱码国产乱码精品精的特点| 久久综合99re88久久爱| 91精品视频网| 欧美一区在线视频| 欧美日韩国产精品自在自线| av一区二区三区在线| 成人av网站在线观看| 国产成人在线免费观看| 国产精品一区二区不卡| 国产成人综合亚洲网站| 国产精品亚洲一区二区三区妖精| 精品一区二区av| 国产美女在线观看一区| 丁香激情综合五月| 99国产精品久久久久久久久久 | 成人精品电影在线观看| 99久久综合狠狠综合久久| 成人国产一区二区三区精品| 不卡高清视频专区| 91成人免费在线视频| 欧美日韩一区不卡| 欧美一激情一区二区三区| 日韩免费视频一区| 国产欧美一区二区在线观看| 国产精品电影院| 亚洲成人精品一区| 久久精品国产免费看久久精品| 国产激情一区二区三区桃花岛亚洲| 豆国产96在线|亚洲| 欧美亚洲另类激情小说| 精品理论电影在线观看| 亚洲人吸女人奶水| 久久激情五月激情| 91女神在线视频| 精品乱码亚洲一区二区不卡| 亚洲视频在线一区二区| 蜜臀av一级做a爰片久久| 成人免费黄色大片| 欧美一区二区在线播放| 日本一区二区不卡视频| 奇米精品一区二区三区四区 | 2020日本不卡一区二区视频| 一区二区三区在线观看动漫| 国产一区二三区| 91 com成人网| 亚洲综合激情另类小说区| 岛国av在线一区| 精品99999| 精品无码三级在线观看视频| 欧美精品v国产精品v日韩精品| 亚洲国产精品传媒在线观看| 久久国产精品色婷婷| 日韩午夜在线观看| 美女免费视频一区| 日韩欧美国产电影| 蜜桃视频免费观看一区| 精品国产一二三| 日本视频在线一区| 精品国产91久久久久久久妲己| 亚洲va欧美va国产va天堂影院| 色综合色综合色综合色综合色综合 | 中文字幕亚洲一区二区av在线| 国产乱码精品一区二区三| 亚洲丝袜精品丝袜在线| 国产精品一区二区91| 欧美激情资源网| 91亚洲精华国产精华精华液| 国产精品每日更新在线播放网址| 国产91富婆露脸刺激对白| 国产精品白丝在线| 91成人网在线| 极品少妇xxxx精品少妇| 久久久av毛片精品| 99国产精品久久久| 日韩高清不卡在线| 久久久国产一区二区三区四区小说| 韩国精品免费视频| 一区二区在线免费观看| 777久久久精品| 成人高清免费在线播放| 亚洲成人av中文| 亚洲精品一区二区三区99| a4yy欧美一区二区三区| 日韩精品亚洲一区二区三区免费| 久久久久久免费网| 在线综合视频播放| 91美女片黄在线| 九一九一国产精品| 亚洲成a人片在线观看中文| 国产日韩综合av| 日韩欧美国产电影| 欧美老人xxxx18| 在线观看日韩av先锋影音电影院| 成人午夜激情在线| 韩国av一区二区| 久久精品国产亚洲aⅴ | 欧美精品一区二区三区在线播放| 91丨porny丨最新| 国产乱码精品一区二区三 | 国产在线播精品第三| 丰满放荡岳乱妇91ww| 午夜精品免费在线| 午夜视频在线观看一区二区三区| 国产精品第五页| 国产丝袜欧美中文另类| 久久综合999| 中文在线免费一区三区高中清不卡| 精品av综合导航| 久久五月婷婷丁香社区| 555夜色666亚洲国产免| 欧美日韩精品免费| 678五月天丁香亚洲综合网| 精品视频一区三区九区| 欧美色综合网站| 日韩三级伦理片妻子的秘密按摩| 欧美三级中文字幕| 日韩精品中午字幕| 欧美va亚洲va| 亚洲男人的天堂在线aⅴ视频| 国产精品女人毛片| 午夜激情一区二区三区| 日韩va欧美va亚洲va久久| 国产一区高清在线| 97精品久久久久中文字幕| 色嗨嗨av一区二区三区| 91精品国产高清一区二区三区 | 成人免费福利片| 91成人免费在线| 精品国产乱码久久久久久牛牛 | 久久精品一区二区三区不卡| 国产一区二区久久| 成人在线视频一区二区| 色香蕉成人二区免费| 欧美日韩久久久| 欧美r级电影在线观看| 国产三级久久久| 亚洲午夜激情网站| 国产激情一区二区三区| 91黄色免费看| 精品久久一二三区| 亚洲日本va在线观看| 日本麻豆一区二区三区视频| 国产伦精品一区二区三区免费| 97久久精品人人爽人人爽蜜臀| 91精品国产一区二区三区蜜臀| 中文字幕的久久| 极品少妇xxxx精品少妇偷拍| 色噜噜狠狠色综合中国| 久久九九影视网| 免费观看日韩av| 欧美日韩国产经典色站一区二区三区 | bt欧美亚洲午夜电影天堂| 在线不卡a资源高清| 亚洲国产一区二区在线播放| 成人午夜视频福利| 国产日韩欧美精品电影三级在线 | 国产精品久久夜| 从欧美一区二区三区| 欧美精品一区二区三区一线天视频| 性久久久久久久久| 欧美午夜精品理论片a级按摩| 亚洲人成亚洲人成在线观看图片| 成人国产电影网| 欧美经典一区二区|