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

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

?? rtcppacketbuilder.h

?? jrtp庫
?? H
字號:
/*  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.*//** * \file rtcppacketbuilder.h */#ifndef RTCPPACKETBUILDER_H#define RTCPPACKETBUILDER_H#include "rtpconfig.h"#include "rtptypes.h"#include "rtperrors.h"#include "rtcpsdesinfo.h"#include "rtptimeutilities.h"#include "rtpmemoryobject.h"class RTPSources;class RTPPacketBuilder;class RTCPScheduler;class RTCPCompoundPacket;class RTCPCompoundPacketBuilder;/** This class can be used to build RTCP compound packets, on a higher level than the RTCPCompoundPacketBuilder. *  The class RTCPPacketBuilder can be used to build RTCP compound packets. This class is more high-level *  than the RTCPCompoundPacketBuilder class: it uses the information of an RTPPacketBuilder instance and of  *  an RTPSources instance to automatically generate the next compound packet which should be sent. It also  *  provides functions to determine when SDES items other than the CNAME item should be sent. */class RTCPPacketBuilder : public RTPMemoryObject{public:	/** Creates an RTCPPacketBuilder instance. 	 *  Creates an instance which will use the source table \c sources and the RTP packet builder 	 *  \c rtppackbuilder to determine the information for the next RTCP compound packet. Optionally,	 *  the memory manager \c mgr can be installed.	 */	RTCPPacketBuilder(RTPSources &sources,RTPPacketBuilder &rtppackbuilder, RTPMemoryManager *mgr = 0);	~RTCPPacketBuilder();	/** Initializes the builder.	 *  Initializes the builder to use the maximum allowed packet size \c maxpacksize, timestamp unit 	 *  \c timestampunit and the SDES CNAME item specified by \c cname with length \c cnamelen. 	 *  The timestamp unit is defined as a time interval divided by the timestamp interval corresponding to 	 *  that interval: for 8000 Hz audio this would be 1/8000.	 */	int Init(size_t maxpacksize,double timestampunit,const void *cname,size_t cnamelen);	/** Cleans up the builder. */	void Destroy();	/** Sets the timestamp unit to be used to \c tsunit.	 *  Sets the timestamp unit to be used to \c tsunit. The timestamp unit is defined as a time interval 	 *  divided by the timestamp interval corresponding to that interval: for 8000 Hz audio this would 	 *  be 1/8000.	 */	int SetTimestampUnit(double tsunit)						{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; if (tsunit < 0) return ERR_RTP_RTCPPACKETBUILDER_ILLEGALTIMESTAMPUNIT; timestampunit = tsunit; return 0; }	/** Sets the maximum size allowed size of an RTCP compound packet to \c maxpacksize. */	int SetMaximumPacketSize(size_t maxpacksize)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; if (maxpacksize < RTP_MINPACKETSIZE) return ERR_RTP_RTCPPACKETBUILDER_ILLEGALMAXPACKSIZE; maxpacketsize = maxpacksize; return 0; }		/** This function allows you to inform RTCP packet builder about the delay between sampling the first 	 *  sample of a packet and sending the packet.	 *  This function allows you to inform RTCP packet builder about the delay between sampling the first	 *  sample of a packet and sending the packet. This delay is taken into account when calculating the 	 *  relation between RTP timestamp and wallclock time, used for inter-media synchronization.	 */	int SetPreTransmissionDelay(const RTPTime &delay)				{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; transmissiondelay = delay; return 0; }		/** Builds the next RTCP compound packet which should be sent and stores it in \c pack. */	int BuildNextPacket(RTCPCompoundPacket **pack);	/** Builds a BYE packet with reason for leaving specified by \c reason and length \c reasonlength.	 *  Builds a BYE packet with reason for leaving specified by \c reason and length \c reasonlength. If 	 *  \c useSRifpossible is set to \c true, the RTCP compound packet will start with a sender report if	 *  allowed. Otherwise, a receiver report is used.	 */ 	int BuildBYEPacket(RTCPCompoundPacket **pack,const void *reason,size_t reasonlength,bool useSRifpossible = true);	/** Sets the RTCP interval for the SDES name item.	 *  After all possible sources in the source table have been processed, the class will check if other 	 *  SDES items need to be sent. If \c count is zero or negative, nothing will happen. If \c count 	 *  is positive, an SDES name item will be added after the sources in the source table have been 	 *  processed \c count times.	 */	void SetNameInterval(int count)							{ if (!init) return; interval_name = count; }		/** Sets the RTCP interval for the SDES e-mail item.	 *  After all possible sources in the source table have been processed, the class will check if other 	 *  SDES items need to be sent. If \c count is zero or negative, nothing will happen. If \c count 	 *  is positive, an SDES e-mail item will be added after the sources in the source table have been 	 *  processed \c count times.	 */		void SetEMailInterval(int count)						{ if (!init) return; interval_email = count; }		/** Sets the RTCP interval for the SDES location item.	 *  After all possible sources in the source table have been processed, the class will check if other 	 *  SDES items need to be sent. If \c count is zero or negative, nothing will happen. If \c count 	 *  is positive, an SDES location item will be added after the sources in the source table have been 	 *  processed \c count times.	 */			void SetLocationInterval(int count)						{ if (!init) return; interval_location = count; }	/** Sets the RTCP interval for the SDES phone item.	 *  After all possible sources in the source table have been processed, the class will check if other 	 *  SDES items need to be sent. If \c count is zero or negative, nothing will happen. If \c count 	 *  is positive, an SDES phone item will be added after the sources in the source table have been 	 *  processed \c count times.	 */			void SetPhoneInterval(int count)						{ if (!init) return; interval_phone = count; }	/** Sets the RTCP interval for the SDES tool item.	 *  After all possible sources in the source table have been processed, the class will check if other 	 *  SDES items need to be sent. If \c count is zero or negative, nothing will happen. If \c count 	 *  is positive, an SDES tool item will be added after the sources in the source table have been 	 *  processed \c count times.	 */		void SetToolInterval(int count)							{ if (!init) return; interval_tool = count; }		/** Sets the RTCP interval for the SDES note item.	 *  After all possible sources in the source table have been processed, the class will check if other 	 *  SDES items need to be sent. If \c count is zero or negative, nothing will happen. If \c count 	 *  is positive, an SDES note item will be added after the sources in the source table have been 	 *  processed \c count times.	 */		void SetNoteInterval(int count)							{ if (!init) return; interval_note = count; }	/** Sets the SDES name item for the local participant to the value \c s with length \c len. */	int SetLocalName(const void *s,size_t len)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; return ownsdesinfo.SetName((const uint8_t *)s,len); }		/** Sets the SDES e-mail item for the local participant to the value \c s with length \c len. */	int SetLocalEMail(const void *s,size_t len)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; return ownsdesinfo.SetEMail((const uint8_t *)s,len); }		/** Sets the SDES location item for the local participant to the value \c s with length \c len. */	int SetLocalLocation(const void *s,size_t len)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; return ownsdesinfo.SetLocation((const uint8_t *)s,len); }		/** Sets the SDES phone item for the local participant to the value \c s with length \c len. */	int SetLocalPhone(const void *s,size_t len)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; return ownsdesinfo.SetPhone((const uint8_t *)s,len); }		/** Sets the SDES tool item for the local participant to the value \c s with length \c len. */	int SetLocalTool(const void *s,size_t len)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; return ownsdesinfo.SetTool((const uint8_t *)s,len); }		/** Sets the SDES note item for the local participant to the value \c s with length \c len. */	int SetLocalNote(const void *s,size_t len)					{ if (!init) return ERR_RTP_RTCPPACKETBUILDER_NOTINIT; return ownsdesinfo.SetNote((const uint8_t *)s,len); }	/** Returns the own CNAME item with length \c len */	uint8_t *GetLocalCNAME(size_t *len) const					{ if (!init) return 0; return ownsdesinfo.GetCNAME(len); }private:	void ClearAllSourceFlags();	int FillInReportBlocks(RTCPCompoundPacketBuilder *pack,const RTPTime &curtime,int maxcount,bool *full,int *added,int *skipped,bool *atendoflist);	int FillInSDES(RTCPCompoundPacketBuilder *pack,bool *full,bool *processedall,int *added);	void ClearAllSDESFlags();		RTPSources &sources;	RTPPacketBuilder &rtppacketbuilder;		bool init;	size_t maxpacketsize;	double timestampunit;	bool firstpacket;	RTPTime prevbuildtime,transmissiondelay;	class RTCPSDESInfoInternal : public RTCPSDESInfo	{	public:		RTCPSDESInfoInternal(RTPMemoryManager *mgr) : RTCPSDESInfo(mgr)	{ ClearFlags(); }		void ClearFlags()			{ pname = false; pemail = false; plocation = false; pphone = false; ptool = false; pnote = false; }		bool ProcessedName() const 		{ return pname; }		bool ProcessedEMail() const		{ return pemail; }		bool ProcessedLocation() const		{ return plocation; }		bool ProcessedPhone() const		{ return pphone; }		bool ProcessedTool() const		{ return ptool; }		bool ProcessedNote() const		{ return pnote; }		void SetProcessedName(bool v)		{ pname = v; }		void SetProcessedEMail(bool v)		{ pemail = v; }		void SetProcessedLocation(bool v)	{ plocation  = v; }		void SetProcessedPhone(bool v)		{ pphone = v; }		void SetProcessedTool(bool v)		{ ptool = v; }		void SetProcessedNote(bool v)		{ pnote = v; }	private:		bool pname,pemail,plocation,pphone,ptool,pnote;	};		RTCPSDESInfoInternal ownsdesinfo;	int interval_name,interval_email,interval_location;	int interval_phone,interval_tool,interval_note;	bool doname,doemail,doloc,dophone,dotool,donote;	bool processingsdes;	int sdesbuildcount;};#endif // RTCPPACKETBUILDER_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re这里都是精品| 色噜噜狠狠色综合中国| 国产激情精品久久久第一区二区| 久草这里只有精品视频| 欧美性videosxxxxx| 精品国产乱码久久久久久图片| 亚洲欧洲精品一区二区三区不卡| 国产精品美女www爽爽爽| 丝袜美腿一区二区三区| 视频一区在线视频| 日韩二区三区在线观看| 国产成人av福利| 3751色影院一区二区三区| 国产欧美日产一区| 激情欧美一区二区三区在线观看| 91蜜桃婷婷狠狠久久综合9色| 2019国产精品| 日韩精品电影在线| 欧美日韩大陆一区二区| 中文在线一区二区| 国产综合久久久久久久久久久久| 欧美图区在线视频| 国产精品久久久久国产精品日日| 韩国毛片一区二区三区| 欧美日韩另类一区| 亚洲国产欧美日韩另类综合| 国产 欧美在线| 久久精品一区二区三区不卡牛牛| 日日骚欧美日韩| 国产69精品久久777的优势| 精品久久久久久综合日本欧美| 亚洲在线视频免费观看| 日本韩国欧美在线| 亚洲欧洲成人自拍| 国产激情一区二区三区四区| 精品卡一卡二卡三卡四在线| 夜夜嗨av一区二区三区| 日本道色综合久久| 亚洲欧洲一区二区在线播放| www.激情成人| 久久久91精品国产一区二区精品 | 亚洲一区欧美一区| 国产成人精品三级麻豆| 日本一区二区三区在线观看| 五月婷婷激情综合| 91黄视频在线| 亚洲一区二区中文在线| 欧美在线一二三| 婷婷开心激情综合| 制服丝袜在线91| 日韩av高清在线观看| 欧美日韩精品一区二区三区四区| 亚洲欧美日韩国产一区二区三区| 91久久一区二区| 亚洲综合一二区| 欧美一级欧美一级在线播放| 一区二区三区四区av| 麻豆91精品91久久久的内涵| 26uuu久久天堂性欧美| 国产综合成人久久大片91| 欧美激情一区在线观看| av一区二区三区四区| 亚洲激情网站免费观看| 欧美午夜在线观看| 国内成人免费视频| 欧美国产日韩一二三区| 91色婷婷久久久久合中文| 亚洲综合色婷婷| 91看片淫黄大片一级在线观看| 亚洲va中文字幕| 日韩欧美精品在线视频| 成人精品视频一区二区三区尤物| 国产精品久久影院| 91精品国产综合久久精品图片| 美女脱光内衣内裤视频久久影院| 欧美三片在线视频观看| 麻豆传媒一区二区三区| 日本一区二区免费在线| 在线不卡的av| 国产精品中文字幕欧美| 亚洲国产精品久久人人爱蜜臀| 91精品国产综合久久久蜜臀粉嫩 | 欧美成人video| 成人福利电影精品一区二区在线观看| 国产精品视频在线看| 波多野结衣在线aⅴ中文字幕不卡| 亚洲精品成人天堂一二三| 在线免费观看一区| 国产精品123| 五月天激情小说综合| 亚洲男人的天堂av| 日韩欧美一级二级三级久久久| 麻豆成人久久精品二区三区红 | 精品处破学生在线二十三| 色八戒一区二区三区| 久久99精品国产麻豆婷婷 | 污片在线观看一区二区| xvideos.蜜桃一区二区| 不卡电影一区二区三区| 国产suv一区二区三区88区| 亚洲国产一区二区三区| 亚洲乱码日产精品bd| 26uuu亚洲婷婷狠狠天堂| 91精品国产综合久久久久久久久久| thepron国产精品| 国产激情一区二区三区| 青青国产91久久久久久| 亚洲一区av在线| 国产精品久久久久久久久晋中 | 一区二区三区**美女毛片| 欧美不卡视频一区| 日韩片之四级片| 欧美日韩免费视频| 欧美亚洲免费在线一区| kk眼镜猥琐国模调教系列一区二区| 国产精品综合视频| 久久不见久久见免费视频1| 中文字幕在线不卡| 成人欧美一区二区三区黑人麻豆| 欧美刺激午夜性久久久久久久| 日韩色视频在线观看| 欧美日韩国产一级片| 在线播放中文字幕一区| 欧美色视频在线观看| 欧美日韩国产在线观看| 欧洲一区二区三区在线| 5858s免费视频成人| 欧美性xxxxx极品少妇| 91.xcao| 欧美日韩日日骚| 色哟哟欧美精品| 99这里只有久久精品视频| 精品一区二区日韩| 国产成人精品三级| 国产99久久久国产精品免费看| 成人亚洲精品久久久久软件| 国产麻豆午夜三级精品| 成人av在线电影| 成人动漫精品一区二区| 91传媒视频在线播放| 在线中文字幕一区| 69p69国产精品| 精品国产一区久久| 国产精品久久久久久久久免费樱桃| 中文字幕亚洲综合久久菠萝蜜| 久久久www成人免费毛片麻豆| 国产精品久久久久久久久免费樱桃| 日本一区免费视频| 亚洲一区日韩精品中文字幕| 天天色 色综合| 国产精品996| 99久久精品国产精品久久| 在线观看91av| 久久久久久久综合日本| 悠悠色在线精品| 视频一区在线播放| 成人激情免费电影网址| 色综合久久久久久久久| 欧美成va人片在线观看| 亚洲国产精品成人综合色在线婷婷 | 国产在线视频一区二区三区| 成人综合激情网| 欧美日韩精品欧美日韩精品 | ●精品国产综合乱码久久久久| 亚洲大片免费看| 毛片av一区二区| 国产盗摄一区二区| 欧美综合色免费| 欧美一区二区高清| 亚洲欧洲99久久| 亚洲综合丁香婷婷六月香| 国产成人一级电影| 99久久婷婷国产| 久久午夜免费电影| 亚洲免费在线播放| 国产成人亚洲综合a∨婷婷| 91成人网在线| 亚洲欧美另类久久久精品| 美女网站一区二区| 欧美精品久久久久久久久老牛影院| 久久久一区二区| 精品一区二区在线视频| 色又黄又爽网站www久久| 国产精品久久久久aaaa樱花 | 美女性感视频久久| 欧美日韩国产免费| 国产精品久久久久天堂| 国产精品一区专区| 精品视频1区2区3区| 亚洲精品国产第一综合99久久| 九九热在线视频观看这里只有精品| 制服丝袜激情欧洲亚洲| 中文字幕一区三区| 国产成人av电影在线| 日韩午夜在线观看| 美女视频黄免费的久久 | 久久久三级国产网站| 男人的天堂久久精品| 色嗨嗨av一区二区三区| 亚洲免费电影在线|