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

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

?? rtpinternalsourcedata.cpp

?? jrtp庫
?? CPP
字號:
/*  This file is a part of JRTPLIB  Copyright (c) 1999-2007 Jori Liesenborgs  Contact: jori.liesenborgs@gmail.com  This library was developed at the "Expertisecentrum Digitale Media"  (http://www.edm.uhasselt.be), a research center of the Hasselt University  (http://www.uhasselt.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.*/#include "rtpinternalsourcedata.h"#include "rtppacket.h"#include <string.h>#include "rtpdebug.h"#define RTPINTERNALSOURCEDATA_MAXPROBATIONPACKETS		32RTPInternalSourceData::RTPInternalSourceData(uint32_t ssrc,RTPSources::ProbationType probtype,RTPMemoryManager *mgr):RTPSourceData(ssrc,mgr){#ifdef RTP_SUPPORT_PROBATION	probationtype = probtype;#endif // RTP_SUPPORT_PROBATION}RTPInternalSourceData::~RTPInternalSourceData(){}// The following function should delete rtppack if necessaryint RTPInternalSourceData::ProcessRTPPacket(RTPPacket *rtppack,const RTPTime &receivetime,bool *stored){	bool accept,onprobation,applyprobation;	double tsunit;		*stored = false;		if (timestampunit < 0) 		tsunit = INF_GetEstimatedTimestampUnit();	else		tsunit = timestampunit;#ifdef RTP_SUPPORT_PROBATION	if (validated) 				// If the source is our own process, we can already be validated. No 		applyprobation = false;		// probation should be applied in that case.	else	{		if (probationtype == RTPSources::NoProbation)			applyprobation = false;		else			applyprobation = true;	}#else	applyprobation = false;#endif // RTP_SUPPORT_PROBATION	stats.ProcessPacket(rtppack,receivetime,tsunit,ownssrc,&accept,applyprobation,&onprobation);#ifdef RTP_SUPPORT_PROBATION	switch (probationtype)	{		case RTPSources::ProbationStore:			if (!(onprobation || accept))				return 0;			if (accept)				validated = true;			break;		case RTPSources::ProbationDiscard:		case RTPSources::NoProbation:			if (!accept)				return 0;			validated = true;			break;		default:			return ERR_RTP_INTERNALSOURCEDATA_INVALIDPROBATIONTYPE;	}#else	if (!accept)		return 0;	validated = true;#endif // RTP_SUPPORT_PROBATION;		if (validated && !ownssrc) // for own ssrc these variables depend on the outgoing packets, not on the incoming		issender = true;		// Now, we can place the packet in the queue		if (packetlist.empty())	{		*stored = true;		packetlist.push_back(rtppack);		return 0;	}		if (!validated) // still on probation	{		// Make sure that we don't buffer too much packets to avoid wasting memory		// on a bad source. Delete the packet in the queue with the lowest sequence		// number.		if (packetlist.size() == RTPINTERNALSOURCEDATA_MAXPROBATIONPACKETS)		{			RTPPacket *p = *(packetlist.begin());			packetlist.pop_front();			RTPDelete(p,GetMemoryManager());		}	}	// find the right position to insert the packet		std::list<RTPPacket*>::iterator it,start;	bool done = false;	uint32_t newseqnr = rtppack->GetExtendedSequenceNumber();		it = packetlist.end();	--it;	start = packetlist.begin();		while (!done)	{		RTPPacket *p;		uint32_t seqnr;				p = *it;		seqnr = p->GetExtendedSequenceNumber();		if (seqnr > newseqnr)		{			if (it != start)				--it;			else // we're at the start of the list			{				*stored = true;				done = true;				packetlist.push_front(rtppack);			}		}		else if (seqnr < newseqnr) // insert after this packet		{			++it;			packetlist.insert(it,rtppack);			done = true;			*stored = true;		}		else // they're equal !! Drop packet		{			done = true;		}	}	return 0;}int RTPInternalSourceData::ProcessSDESItem(uint8_t sdesid,const uint8_t *data,size_t itemlen,const RTPTime &receivetime,bool *cnamecollis){	*cnamecollis = false;		stats.SetLastMessageTime(receivetime);		switch(sdesid)	{	case RTCP_SDES_ID_CNAME:		{			size_t curlen;			uint8_t *oldcname;						// NOTE: we're going to make sure that the CNAME is only set once.			oldcname = SDESinf.GetCNAME(&curlen);			if (curlen == 0)			{				// if CNAME is set, the source is validated				SDESinf.SetCNAME(data,itemlen);				validated = true;			}			else // check if this CNAME is equal to the one that is already present			{				if (curlen != itemlen)					*cnamecollis = true;				else				{					if (memcmp(data,oldcname,itemlen) != 0)						*cnamecollis = true;				}			}		}		break;	case RTCP_SDES_ID_NAME:		{			uint8_t *oldname;			size_t oldlen;			oldname = SDESinf.GetName(&oldlen);			if (oldlen == 0) // Name not set				return SDESinf.SetName(data,itemlen);		}		break;	case RTCP_SDES_ID_EMAIL:		{			uint8_t *oldemail;			size_t oldlen;			oldemail = SDESinf.GetEMail(&oldlen);			if (oldlen == 0)				return SDESinf.SetEMail(data,itemlen);		}		break;	case RTCP_SDES_ID_PHONE:		return SDESinf.SetPhone(data,itemlen);	case RTCP_SDES_ID_LOCATION:		return SDESinf.SetLocation(data,itemlen);	case RTCP_SDES_ID_TOOL:		{			uint8_t *oldtool;			size_t oldlen;			oldtool = SDESinf.GetTool(&oldlen);			if (oldlen == 0)				return SDESinf.SetTool(data,itemlen);		}		break;	case RTCP_SDES_ID_NOTE:		stats.SetLastNoteTime(receivetime);		return SDESinf.SetNote(data,itemlen);	}	return 0;}#ifdef RTP_SUPPORT_SDESPRIVint RTPInternalSourceData::ProcessPrivateSDESItem(const uint8_t *prefix,size_t prefixlen,const uint8_t *value,size_t valuelen,const RTPTime &receivetime){	int status;		stats.SetLastMessageTime(receivetime);	status = SDESinf.SetPrivateValue(prefix,prefixlen,value,valuelen);	if (status == ERR_RTP_SDES_MAXPRIVITEMS)		return 0; // don't stop processing just because the number of items is full	return status;}#endif // RTP_SUPPORT_SDESPRIVint RTPInternalSourceData::ProcessBYEPacket(const uint8_t *reason,size_t reasonlen,const RTPTime &receivetime){	if (byereason)	{		RTPDeleteByteArray(byereason,GetMemoryManager());		byereason = 0;		byereasonlen = 0;	}	byetime = receivetime;	byereason = RTPNew(GetMemoryManager(),RTPMEM_TYPE_BUFFER_RTCPBYEREASON) uint8_t[reasonlen];	if (byereason == 0)		return ERR_RTP_OUTOFMEM;	memcpy(byereason,reason,reasonlen);	byereasonlen = reasonlen;	receivedbye = true;	stats.SetLastMessageTime(receivetime);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合久久久久影院| 国产曰批免费观看久久久| 欧美一区二区视频观看视频| 青青青伊人色综合久久| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人精品1024| 亚洲综合一区二区精品导航| 日韩三级视频在线观看| 久久99九九99精品| 中文字幕一区二区三区在线观看| 欧美日韩1234| 久久精品二区亚洲w码| 中文字幕日韩av资源站| 欧美精品久久99久久在免费线 | 精品国产三级电影在线观看| 成人av电影在线网| 亚洲一区国产视频| 国产亚洲综合在线| 欧美人动与zoxxxx乱| 极品美女销魂一区二区三区免费| 亚洲精选免费视频| 精品精品国产高清a毛片牛牛 | 日韩三级在线观看| 91久久国产最好的精华液| 国模无码大尺度一区二区三区| 一区二区久久久久久| 欧美tickling网站挠脚心| 在线观看视频91| 国产精品亚洲专一区二区三区 | 99视频精品免费视频| 极品少妇xxxx精品少妇| 美日韩一区二区三区| 日本中文字幕一区二区视频 | 一区二区在线观看视频在线观看| 中文字幕av在线一区二区三区| 久久精品一区八戒影视| 久久综合五月天婷婷伊人| 精品成人a区在线观看| 欧美videos中文字幕| 精品国产91亚洲一区二区三区婷婷| 在线播放一区二区三区| 777久久久精品| 欧美精品欧美精品系列| 欧美一区二区啪啪| 欧美一级高清大全免费观看| 欧美一激情一区二区三区| 日韩一区二区在线观看| 欧美mv日韩mv| 久久免费看少妇高潮| 中文字幕不卡三区| 亚洲精品菠萝久久久久久久| 亚洲午夜一区二区| 丝袜脚交一区二区| 韩国毛片一区二区三区| 国产成人免费9x9x人网站视频| 成人一级视频在线观看| av中文字幕亚洲| 欧美午夜精品一区二区三区| 6080午夜不卡| 国产亚洲婷婷免费| 亚洲精品一二三四区| 天天操天天干天天综合网| 久久国产日韩欧美精品| 成人午夜免费视频| 欧美在线色视频| 91精品国产综合久久精品性色| 精品久久久久久久久久久久久久久久久 | 日韩av不卡一区二区| 激情丁香综合五月| av亚洲精华国产精华精| 欧美亚洲图片小说| 精品黑人一区二区三区久久| 中文字幕一区二| 日日摸夜夜添夜夜添国产精品| 国精产品一区一区三区mba桃花| 成人av高清在线| 91精品国产91久久久久久最新毛片| 精品国产欧美一区二区| 亚洲欧美精品午睡沙发| 日韩影院免费视频| 成人午夜免费视频| 91精品国产综合久久久久久漫画| 国产夜色精品一区二区av| 亚洲一区二区在线免费看| 国产在线播放一区三区四| 在线中文字幕一区| 久久综合99re88久久爱| 亚洲综合一区二区三区| 国产一区二区日韩精品| 欧美在线观看一区二区| 久久精品人人做人人爽人人| 亚洲一区二区三区爽爽爽爽爽| 狠狠色丁香久久婷婷综合_中| 色网站国产精品| 国产亚洲精品aa| 欧美a级一区二区| 色哟哟一区二区三区| 久久免费看少妇高潮| 午夜电影久久久| 91农村精品一区二区在线| 精品噜噜噜噜久久久久久久久试看| 亚洲天堂2016| 东方aⅴ免费观看久久av| 日韩午夜三级在线| 夜夜嗨av一区二区三区四季av| 国产99久久久国产精品潘金| 91精品国产综合久久久久久久| 自拍偷自拍亚洲精品播放| 国产精品一区二区视频| 91精品欧美综合在线观看最新| 亚洲精品久久久蜜桃| 国产91在线观看丝袜| 亚洲精品一区二区在线观看| 午夜视频在线观看一区| 91国产视频在线观看| 亚洲国产成人一区二区三区| 精品亚洲国内自在自线福利| 欧美日韩激情一区| 亚洲午夜私人影院| 一本大道久久a久久综合| 国产精品美女久久福利网站| 国产九九视频一区二区三区| 精品少妇一区二区三区日产乱码| 丝瓜av网站精品一区二区| 欧美日韩国产首页| 亚洲国产人成综合网站| 91麻豆免费看| 中文字幕日本不卡| 99久久99久久综合| 中文字幕一区二区三区四区| 成人网页在线观看| 亚洲欧美综合网| 91丨九色丨蝌蚪富婆spa| 亚洲欧洲一区二区在线播放| 99九九99九九九视频精品| 国产精品久久久久久久岛一牛影视| 国产91对白在线观看九色| 亚洲国产精品精华液ab| 成人高清视频在线观看| 中日韩av电影| 91麻豆国产精品久久| 一区二区三区不卡视频| 精品视频一区二区三区免费| 亚洲一区av在线| 制服丝袜一区二区三区| 美女视频黄久久| 久久九九全国免费| 从欧美一区二区三区| 18欧美乱大交hd1984| 欧美系列一区二区| 欧美aaa在线| 国产欧美va欧美不卡在线| av在线综合网| 亚洲国产乱码最新视频| 日韩视频免费观看高清在线视频| 久久99国产精品免费网站| 久久九九久久九九| 色婷婷综合激情| 香蕉久久夜色精品国产使用方法| 日韩午夜av电影| 国内外成人在线| 日韩一区欧美一区| 欧美精品黑人性xxxx| 国产福利一区二区三区视频| 亚洲视频网在线直播| 欧美疯狂做受xxxx富婆| 激情深爱一区二区| √…a在线天堂一区| 欧美日韩国产综合一区二区 | 一区二区在线观看免费视频播放| 欧美老年两性高潮| 国产美女精品人人做人人爽| 亚洲色图.com| 日韩欧美在线综合网| 粉嫩aⅴ一区二区三区四区五区| 一区二区三区四区精品在线视频| 欧美一区二区视频观看视频 | 在线精品视频免费观看| 麻豆一区二区三区| 国产精品久久久久精k8| 91精品一区二区三区在线观看| 国产精品99久久久久| 亚洲午夜精品在线| 国产亚洲欧美在线| 精品视频在线看| 成人在线综合网| 亚洲一二三四在线观看| 日韩精品一区二区三区在线观看 | 亚洲精品成人天堂一二三| 日韩欧美一级片| 日本乱人伦一区| 国产美女主播视频一区| 午夜精品福利一区二区三区av| 久久精品水蜜桃av综合天堂| 欧美日产国产精品| 一本大道av伊人久久综合| 国产综合久久久久影院| 日韩精品国产欧美| 亚洲人成伊人成综合网小说| 久久久不卡影院|