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

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

?? rtppacketbuilder.cpp

?? jrtp庫(kù)
?? CPP
字號(hào):
/*  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 "rtppacketbuilder.h"#include "rtperrors.h"#include "rtppacket.h"#include "rtpsources.h"#include <time.h>#include <stdlib.h>#ifdef RTPDEBUG	#include <iostream>#endif // RTPDEBUG#include "rtpdebug.h"RTPPacketBuilder::RTPPacketBuilder(RTPMemoryManager *mgr) : RTPMemoryObject(mgr),lastwallclocktime(0,0){	init = false;#if (defined(WIN32) || defined(_WIN32_WCE))	timeinit.Dummy();#endif // WIN32 || _WIN32_WCE}RTPPacketBuilder::~RTPPacketBuilder(){	Destroy();}int RTPPacketBuilder::Init(size_t max){	if (init)		return ERR_RTP_PACKBUILD_ALREADYINIT;	if (max <= 0)		return ERR_RTP_PACKBUILD_INVALIDMAXPACKETSIZE;		maxpacksize = max;	buffer = RTPNew(GetMemoryManager(),RTPMEM_TYPE_BUFFER_RTPPACKETBUILDERBUFFER) uint8_t [max];	if (buffer == 0)		return ERR_RTP_OUTOFMEM;	packetlength = 0;		CreateNewSSRC();	deftsset = false;	defptset = false;	defmarkset = false;			numcsrcs = 0;		init = true;	return 0;}void RTPPacketBuilder::Destroy(){	if (!init)		return;	RTPDeleteByteArray(buffer,GetMemoryManager());	init = false;}int RTPPacketBuilder::SetMaximumPacketSize(size_t max){	uint8_t *newbuf;	if (max <= 0)		return ERR_RTP_PACKBUILD_INVALIDMAXPACKETSIZE;	newbuf = RTPNew(GetMemoryManager(),RTPMEM_TYPE_BUFFER_RTPPACKETBUILDERBUFFER) uint8_t[max];	if (newbuf == 0)		return ERR_RTP_OUTOFMEM;		RTPDeleteByteArray(buffer,GetMemoryManager());	buffer = newbuf;	maxpacksize = max;	return 0;}int RTPPacketBuilder::AddCSRC(uint32_t csrc){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	if (numcsrcs >= RTP_MAXCSRCS)		return ERR_RTP_PACKBUILD_CSRCLISTFULL;	int i;		for (i = 0 ; i < numcsrcs ; i++)	{		if (csrcs[i] == csrc)			return ERR_RTP_PACKBUILD_CSRCALREADYINLIST;	}	csrcs[numcsrcs] = csrc;	numcsrcs++;	return 0;}int RTPPacketBuilder::DeleteCSRC(uint32_t csrc){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;		int i = 0;	bool found = false;	while (!found && i < numcsrcs)	{		if (csrcs[i] == csrc)			found = true;		else			i++;	}	if (!found)		return ERR_RTP_PACKBUILD_CSRCNOTINLIST;		// move the last csrc in the place of the deleted one	numcsrcs--;	if (numcsrcs > 0 && numcsrcs != i)		csrcs[i] = csrcs[numcsrcs];	return 0;}void RTPPacketBuilder::ClearCSRCList(){	if (!init)		return;	numcsrcs = 0;}uint32_t RTPPacketBuilder::CreateNewSSRC(){	ssrc = rtprnd.GetRandom32();	timestamp = rtprnd.GetRandom32();	seqnr = rtprnd.GetRandom16();	// p 38: the count SHOULD be reset if the sender changes its SSRC identifier	numpayloadbytes = 0;	numpackets = 0;	return ssrc;}uint32_t RTPPacketBuilder::CreateNewSSRC(RTPSources &sources){	bool found;		do	{		ssrc = rtprnd.GetRandom32();		found = sources.GotEntry(ssrc);	} while (found);		timestamp = rtprnd.GetRandom32();	seqnr = rtprnd.GetRandom16();	// p 38: the count SHOULD be reset if the sender changes its SSRC identifier	numpayloadbytes = 0;	numpackets = 0;	return ssrc;}int RTPPacketBuilder::BuildPacket(const void *data,size_t len){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	if (!defptset)		return ERR_RTP_PACKBUILD_DEFAULTPAYLOADTYPENOTSET;	if (!defmarkset)		return ERR_RTP_PACKBUILD_DEFAULTMARKNOTSET;	if (!deftsset)		return ERR_RTP_PACKBUILD_DEFAULTTSINCNOTSET;	return PrivateBuildPacket(data,len,defaultpayloadtype,defaultmark,defaulttimestampinc,false);}int RTPPacketBuilder::BuildPacket(const void *data,size_t len,                uint8_t pt,bool mark,uint32_t timestampinc){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	return PrivateBuildPacket(data,len,pt,mark,timestampinc,false);}int RTPPacketBuilder::BuildPacketEx(const void *data,size_t len,                  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	if (!defptset)		return ERR_RTP_PACKBUILD_DEFAULTPAYLOADTYPENOTSET;	if (!defmarkset)		return ERR_RTP_PACKBUILD_DEFAULTMARKNOTSET;	if (!deftsset)		return ERR_RTP_PACKBUILD_DEFAULTTSINCNOTSET;	return PrivateBuildPacket(data,len,defaultpayloadtype,defaultmark,defaulttimestampinc,true,hdrextID,hdrextdata,numhdrextwords);}int RTPPacketBuilder::BuildPacketEx(const void *data,size_t len,                  uint8_t pt,bool mark,uint32_t timestampinc,		  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	return PrivateBuildPacket(data,len,pt,mark,timestampinc,true,hdrextID,hdrextdata,numhdrextwords);}int RTPPacketBuilder::PrivateBuildPacket(const void *data,size_t len,	                  uint8_t pt,bool mark,uint32_t timestampinc,bool gotextension,	                  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords){	RTPPacket p(pt,data,len,seqnr,timestamp,ssrc,mark,numcsrcs,csrcs,gotextension,hdrextID,	            (uint16_t)numhdrextwords,hdrextdata,buffer,maxpacksize,GetMemoryManager());	int status = p.GetCreationError();	if (status < 0)		return status;	packetlength = p.GetPacketLength();	if (numpackets == 0) // first packet	{		lastwallclocktime = RTPTime::CurrentTime();		lastrtptimestamp = timestamp;		prevrtptimestamp = timestamp;	}	else if (timestamp != prevrtptimestamp)	{		lastwallclocktime = RTPTime::CurrentTime();		lastrtptimestamp = timestamp;		prevrtptimestamp = timestamp;	}		numpayloadbytes += (uint32_t)p.GetPayloadLength();	numpackets++;	timestamp += timestampinc;	seqnr++;	return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕国产一区二区| 亚洲成av人**亚洲成av**| 久久国产精品区| 久久久久久一二三区| 国产激情一区二区三区| 欧美精品一区男女天堂| 国产成人在线视频播放| 欧美一级艳片视频免费观看| 美国毛片一区二区三区| 久久久不卡网国产精品一区| 狂野欧美性猛交blacked| 国产精品卡一卡二| 欧美午夜电影一区| 六月丁香婷婷久久| 国产精品久久久久久一区二区三区 | 国产视频一区在线播放| 成人av综合一区| 久久精品国产亚洲a| 国产精品视频免费| 日韩一区二区三区视频在线观看| 国产在线播放一区二区三区| 日韩一区中文字幕| 精品国产乱码久久久久久影片| 成人精品小蝌蚪| 国产成人丝袜美腿| 天堂久久一区二区三区| 亚洲欧洲精品一区二区三区| 在线电影欧美成精品| 99热精品国产| 国产精品一二三四区| 麻豆91在线播放免费| 日韩avvvv在线播放| 亚洲成人综合在线| 18成人在线观看| 国产精品伦一区二区三级视频| 日韩欧美一级二级三级久久久| 欧美日韩一区二区三区不卡| 97久久超碰精品国产| 国产高清精品久久久久| 老司机免费视频一区二区三区| 一区二区三区产品免费精品久久75| 亚洲女厕所小便bbb| 97久久精品人人做人人爽50路| 国产综合一区二区| 国产盗摄一区二区| 色婷婷国产精品久久包臀 | 久久精品久久久精品美女| 奇米影视一区二区三区小说| 丝袜美腿亚洲一区| 国产精品一区二区久激情瑜伽| 国产精品18久久久久| 成人福利电影精品一区二区在线观看| 国产激情一区二区三区| 在线欧美日韩精品| 久久久亚洲国产美女国产盗摄| 国产精品久久久久久久第一福利 | 久久精品亚洲乱码伦伦中文| 日本高清成人免费播放| 日韩欧美激情四射| 日韩一区日韩二区| 欧美96一区二区免费视频| 国产一区二区在线影院| 91视视频在线观看入口直接观看www | 北条麻妃一区二区三区| 国产精品亚洲а∨天堂免在线| 不卡大黄网站免费看| 91激情五月电影| 国产欧美精品国产国产专区| 蜜臀va亚洲va欧美va天堂| 91美女视频网站| 亚洲欧洲精品一区二区三区不卡| 国产真实乱偷精品视频免| 欧美妇女性影城| 麻豆精品视频在线观看免费| 日本二三区不卡| 欧美刺激脚交jootjob| 国产无遮挡一区二区三区毛片日本| 亚洲视频综合在线| 国产一区中文字幕| 精品国产伦一区二区三区免费 | 黄色精品一二区| 欧美刺激午夜性久久久久久久| 亚洲国产视频a| 9191久久久久久久久久久| 亚洲高清在线视频| 精品成人在线观看| 99久久久国产精品免费蜜臀| 国产精品国产三级国产aⅴ入口| 国产美女在线精品| 日韩欧美电影一二三| 国产呦萝稀缺另类资源| 精品三级av在线| 丰满少妇在线播放bd日韩电影| 中文字幕一区二区日韩精品绯色| 国产98色在线|日韩| 国产精品人妖ts系列视频| 91色porny在线视频| 狠狠色丁香久久婷婷综合丁香| 中文字幕一区二区三区四区| 在线成人av影院| jiyouzz国产精品久久| 亚洲国产aⅴ成人精品无吗| 欧美老年两性高潮| 国产成人精品一区二| 一区视频在线播放| 精品欧美乱码久久久久久| 91丨porny丨中文| 成人av免费在线观看| 国产精品一级在线| 日本成人中文字幕在线视频| 亚洲视频在线一区二区| 久久毛片高清国产| 337p粉嫩大胆噜噜噜噜噜91av| 欧美视频精品在线观看| 不卡的av在线| 欧美色网站导航| 欧美日韩电影一区| thepron国产精品| 国内精品嫩模私拍在线| 老司机精品视频在线| 亚洲电影中文字幕在线观看| 亚洲欧美偷拍三级| 一区二区三区在线免费观看 | 色婷婷综合久久久| 91丨九色丨尤物| 4438x成人网最大色成网站| 欧美三日本三级三级在线播放| 91黄色免费版| 精品国产免费人成在线观看| 日韩美女视频一区二区在线观看| 精品久久人人做人人爰| 国产精品无遮挡| 一区二区三区免费网站| 美女免费视频一区二区| 国产精品资源在线| 99久久99久久久精品齐齐 | av在线免费不卡| 欧美乱妇15p| 国产欧美日韩麻豆91| 亚洲在线视频免费观看| 国产制服丝袜一区| 欧美综合久久久| 欧洲亚洲国产日韩| 精品久久久久久久人人人人传媒 | 天堂一区二区在线免费观看| 国产精品亚洲а∨天堂免在线| av在线播放一区二区三区| 欧美亚男人的天堂| 国产精品私人影院| 久久成人久久鬼色| 色88888久久久久久影院野外 | 高清av一区二区| 国产欧美日韩激情| 久久99精品久久久久久动态图 | 国产日本一区二区| 国产自产视频一区二区三区| 欧美日韩午夜在线视频| 亚洲天堂精品在线观看| av电影天堂一区二区在线| 欧美极品少妇xxxxⅹ高跟鞋 | 国内精品免费**视频| 欧美一区二区三区在线观看| 亚洲v中文字幕| 91麻豆精品国产综合久久久久久| 亚洲激情在线播放| 欧美日韩免费电影| 精品中文字幕一区二区小辣椒| 欧美一区二区三区四区高清| 欧美aaaaaa午夜精品| 精品国产三级电影在线观看| 久久aⅴ国产欧美74aaa| 国产午夜精品久久| 在线日韩一区二区| 久久超碰97中文字幕| 亚洲天堂av一区| 91精品国产色综合久久不卡蜜臀| 韩国一区二区在线观看| 久久精品亚洲精品国产欧美kt∨ | 国产农村妇女毛片精品久久麻豆 | 欧美日韩一区在线| 免费黄网站欧美| 国产精品丝袜一区| 日韩久久久精品| 欧美日韩黄色影视| av网站一区二区三区| 美国十次综合导航| 一区二区成人在线视频 | 精品一区二区三区视频| 视频一区国产视频| 国产精品三级视频| 91精品国产免费| 成人免费不卡视频| 国产在线观看一区二区| 欧美激情一区二区三区蜜桃视频 | 亚洲精品高清在线观看| 亚洲视频在线一区观看| 精品对白一区国产伦| 色偷偷成人一区二区三区91| 国产一区二区网址| 韩国欧美一区二区|