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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rtpfaketransmitter.cpp

?? jrtp庫
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	MAINMUTEX_LOCK	if (!created)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_NOTCREATED;	}	if (len > maxpacksize)	{		MAINMUTEX_UNLOCK		return ERR_RTP_FAKETRANS_SPECIFIEDSIZETOOBIG;	}	destinations.GotoFirstElement();    // send to each destination	while (destinations.HasCurrentElement())	{        (*params->GetPacketReadyCB())(params->GetPacketReadyCBData(), (uint8_t*)data, len,        destinations.GetCurrentElement().GetIP_NBO(),        destinations.GetCurrentElement().GetRTCPPort_NBO(),         0);		destinations.GotoNextElement();	}		MAINMUTEX_UNLOCK	return 0;}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;*/	return true;}#endif // RTP_SUPPORT_IPV4MULTICASTvoid RTPFakeTransmitter::FlushPackets(){	std::list<RTPRawPacket*>::const_iterator it;	for (it = rawpacketlist.begin() ; it != rawpacketlist.end() ; ++it)		RTPDelete(*it,GetMemoryManager());	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 = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPADDRESS) 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;    datacopy = RTPNew(GetMemoryManager(),(rtp)?RTPMEM_TYPE_BUFFER_RECEIVEDRTPPACKET:RTPMEM_TYPE_BUFFER_RECEIVEDRTCPPACKET) uint8_t[data_len];    if (datacopy == 0)    {        RTPDelete(addr,GetMemoryManager());        return ERR_RTP_OUTOFMEM;    }    memcpy(datacopy, data, data_len);    // got data, process it    if (receivemode == RTPTransmitter::AcceptAll)        acceptdata = true;    else        acceptdata = ShouldAcceptData(addr->GetIP(),addr->GetPort());    if (acceptdata)    {        // adding packet to queue        RTPRawPacket *pack;        pack = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPRAWPACKET) RTPRawPacket(datacopy,data_len,addr,curtime,rtp,GetMemoryManager());

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类久久久精品2019| 欧美日本国产视频| 一区二区三区在线看| 69堂亚洲精品首页| 成人免费三级在线| 日本中文字幕一区二区有限公司| 久久久久久亚洲综合影院红桃| 色综合色狠狠天天综合色| 免费高清不卡av| 亚洲色图.com| 久久色视频免费观看| 欧美老女人第四色| 99热精品一区二区| 国产一区三区三区| 亚洲aaa精品| 麻豆一区二区99久久久久| 亚洲欧美另类在线| 国产女人aaa级久久久级 | 5858s免费视频成人| 成人激情开心网| 激情图区综合网| 日韩和欧美一区二区| 亚洲综合无码一区二区| 最新日韩av在线| 国产日产精品1区| 欧美不卡一二三| 51精品视频一区二区三区| 在线看日本不卡| 91美女蜜桃在线| k8久久久一区二区三区| 国产成人啪免费观看软件| 免费人成在线不卡| 日本免费在线视频不卡一不卡二 | 一区二区久久久久| 国产精品视频一二三| 久久中文字幕电影| 亚洲精品在线一区二区| 日韩美女一区二区三区| 日韩一级片在线观看| 欧美视频完全免费看| 在线亚洲+欧美+日本专区| 91麻豆福利精品推荐| 成人高清免费在线播放| 成人小视频在线| 丁香天五香天堂综合| 国产盗摄视频一区二区三区| 韩国午夜理伦三级不卡影院| 狠狠色综合日日| 国产精品69久久久久水密桃| 国产一区啦啦啦在线观看| 国产一区亚洲一区| 国产99久久久国产精品免费看| 国产精品影视网| 成人综合日日夜夜| www.色精品| 在线观看视频91| 欧美日韩在线播放三区四区| 欧美日韩电影一区| 日韩三级免费观看| 久久这里都是精品| 国产精品丝袜久久久久久app| 国产精品久久久久久久久免费樱桃| 国产精品日韩成人| 一级女性全黄久久生活片免费| 一区二区三区精密机械公司| av毛片久久久久**hd| 91污在线观看| 欧美日韩激情一区二区三区| 日韩三级精品电影久久久| 久久精品夜色噜噜亚洲aⅴ| 国产精品美女视频| 亚洲第一主播视频| 国内精品国产三级国产a久久| 国产精品2024| 欧美性一二三区| 精品国产免费人成电影在线观看四季 | 欧美日韩免费在线视频| 欧美一卡在线观看| 久久精品一区二区三区av| 1000精品久久久久久久久| 午夜精品一区二区三区免费视频| 久久99精品国产91久久来源| 91在线观看美女| 欧美一级一区二区| 国产免费成人在线视频| 亚洲国产日韩a在线播放性色| 韩日精品视频一区| 在线观看一区二区精品视频| 日韩一卡二卡三卡| 亚洲乱码国产乱码精品精的特点 | 久久久精品2019中文字幕之3| 亚洲欧美另类小说| 久久99精品一区二区三区 | 亚洲精品一区二区三区在线观看| 欧美国产日本韩| 日韩高清一区在线| 99久久婷婷国产综合精品| 欧美一级一区二区| 亚洲嫩草精品久久| 黄网站免费久久| 欧美日韩黄色一区二区| 国产精品乱子久久久久| 麻豆极品一区二区三区| 在线影视一区二区三区| 国产午夜一区二区三区| 午夜精品福利久久久| www.亚洲免费av| ww久久中文字幕| 丝袜诱惑制服诱惑色一区在线观看| 99精品桃花视频在线观看| 精品国免费一区二区三区| 亚洲成a人片综合在线| 色综合网色综合| 欧美激情一区不卡| 久久国产欧美日韩精品| 7777女厕盗摄久久久| 亚洲一区二区欧美激情| 2020国产成人综合网| 日产国产欧美视频一区精品| 精品视频免费看| 一区二区三区日本| www.99精品| 中文字幕欧美区| 国产精品综合一区二区三区| 日韩三级中文字幕| 日韩va亚洲va欧美va久久| 欧美三级日韩三级国产三级| 夜夜精品浪潮av一区二区三区| 成人av网站大全| 国产精品系列在线| 成人精品免费网站| 国产日韩精品一区二区三区| 国产一区二区三区在线观看精品| 日韩免费成人网| 久久精品99国产精品日本| 日韩精品中文字幕一区| 蜜臀国产一区二区三区在线播放| 欧美日韩二区三区| 日韩av不卡在线观看| 91精品国产高清一区二区三区| 亚洲一区二区三区影院| 欧美视频精品在线| 天堂成人免费av电影一区| 欧美日韩日日骚| 蜜臀a∨国产成人精品| 91精品国产色综合久久ai换脸 | 国产精品一品视频| 久久一留热品黄| 国产精品综合一区二区三区| 国产亚洲综合在线| 成人av电影在线| 亚洲天堂久久久久久久| 91国产丝袜在线播放| 亚洲成人av一区| 日韩欧美高清dvd碟片| 韩国女主播一区二区三区| 欧美高清在线精品一区| 99re6这里只有精品视频在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 欧美电影影音先锋| 乱一区二区av| 国产亚洲短视频| av网站免费线看精品| 亚洲一区在线视频| 91精品国产高清一区二区三区| 国产一区二区在线观看免费| 国产精品欧美一级免费| 日本乱人伦一区| 日韩激情中文字幕| 久久女同性恋中文字幕| 91丝袜美女网| 日韩精品久久理论片| 久久在线观看免费| 色噜噜偷拍精品综合在线| 蜜桃精品在线观看| 日本一区二区高清| 欧美艳星brazzers| 久久精品72免费观看| 日韩av高清在线观看| 中文字幕国产一区二区| 欧美日韩一区二区三区在线看| 亚欧色一区w666天堂| 精品一区二区影视| 99久精品国产| 99久久免费精品高清特色大片| 国精产品一区一区三区mba桃花| 国产欧美日韩精品一区| 色婷婷精品大视频在线蜜桃视频| 日本亚洲三级在线| 国产精品国产成人国产三级| 欧美日韩一二三区| 成人成人成人在线视频| 免费人成黄页网站在线一区二区| 国产精品视频看| 欧美成人艳星乳罩| 欧洲视频一区二区| 国产东北露脸精品视频| 日本在线不卡一区| 亚洲美女少妇撒尿| 国产网站一区二区|