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

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

?? rtppacketbuilder.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 rtppacketbuilder.h */#ifndef RTPPACKETBUILDER_H#define RTPPACKETBUILDER_H#include "rtpconfig.h"#include "rtperrors.h"#include "rtpdefines.h"#include "rtprandom.h"#include "rtptimeutilities.h"#include "rtptypes.h"#include "rtpmemoryobject.h"class RTPSources;/** This class can be used to build RTP packets and is a bit more high-level than the RTPPacket  *  class: it generates an SSRC identifier, keeps track of timestamp and sequence number etc. */class RTPPacketBuilder : public RTPMemoryObject{public:	/** Constructs an instance, optionally installing a memory manager. */	RTPPacketBuilder(RTPMemoryManager *mgr = 0);	~RTPPacketBuilder();	/** Initializes the builder to only allow packets with a size below \c maxpacksize. */	int Init(size_t maxpacksize);	/** Cleans up the builder. */	void Destroy();	/** Returns the number of packets which have been created with the current SSRC identifier. */	uint32_t GetPacketCount()					{ if (!init) return 0; return numpackets; }	/** Returns the number of payload octets which have been generated with this SSRC identifier. */	uint32_t GetPayloadOctetCount()				{ if (!init) return 0; return numpayloadbytes; }	/** Sets the maximum allowed packet size to \c maxpacksize. */	int SetMaximumPacketSize(size_t maxpacksize);	/** Adds a CSRC to the CSRC list which will be stored in the RTP packets. */	int AddCSRC(uint32_t csrc);	/** Deletes a CSRC from the list which will be stored in the RTP packets. */	int DeleteCSRC(uint32_t csrc);	/** Clears the CSRC list. */	void ClearCSRCList();			/** Builds a packet with payload \c data and payload length \c len.	 *  Builds a packet with payload \c data and payload length \c len. The payload type, marker 	 *  and timestamp increment used will be those that have been set using the \c SetDefault 	 *  functions below.	 */	int BuildPacket(const void *data,size_t len);	/** Builds a packet with payload \c data and payload length \c len.	 *  Builds a packet with payload \c data and payload length \c len. The payload type will be 	 *  set to \c pt, the marker bit to \c mark and after building this packet, the timestamp will	 *  be incremented with \c timestamp.	 */	int BuildPacket(const void *data,size_t len,	                uint8_t pt,bool mark,uint32_t timestampinc);	/** Builds a packet with payload \c data and payload length \c len.	 *  Builds a packet with payload \c data and payload length \c len. The payload type, marker 	 *  and timestamp increment used will be those that have been set using the \c SetDefault 	 *  functions below. This packet will also contain an RTP header extension with identifier 	 *  \c hdrextID and data \c hdrextdata. The length of the header extension data is given by 	 *  \c numhdrextwords which expresses the length in a number of 32-bit words.	 */	int BuildPacketEx(const void *data,size_t len,	                  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords);	/** Builds a packet with payload \c data and payload length \c len. 	 *  Builds a packet with payload \c data and payload length \c len. The payload type will be set 	 *  to \c pt, the marker bit to \c mark and after building this packet, the timestamp will 	 *  be incremented with \c timestamp. This packet will also contain an RTP header extension 	 *  with identifier \c hdrextID and data \c hdrextdata. The length of the header extension 	 *  data is given by \c numhdrextwords which expresses the length in a number of 32-bit words.	 */	int BuildPacketEx(const void *data,size_t len,	                  uint8_t pt,bool mark,uint32_t timestampinc,	                  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords);	/** Returns a pointer to the last built RTP packet data. */	uint8_t *GetPacket()						{ if (!init) return 0; return buffer; }	/** Returns the size of the last built RTP packet. */	size_t GetPacketLength()					{ if (!init) return 0; return packetlength; }		/** Sets the default payload type to \c pt. */	int SetDefaultPayloadType(uint8_t pt);	/** Sets the default marker bit to \c m. */	int SetDefaultMark(bool m);	/** Sets the default timestamp increment to \c timestampinc. */	int SetDefaultTimestampIncrement(uint32_t timestampinc);	/** This function increments the timestamp with the amount given by \c inc.	 *  This function increments the timestamp with the amount given by \c inc. This can be useful 	 *  if, for example, a packet was not sent because it contained only silence. Then, this function 	 *  should be called to increment the timestamp with the appropriate amount so that the next packets 	 *  will still be played at the correct time at other hosts.	 */	int IncrementTimestamp(uint32_t inc);	/** This function increments the timestamp with the amount given set by the SetDefaultTimestampIncrement	 *  member function. 	 *  This function increments the timestamp with the amount given set by the SetDefaultTimestampIncrement	 *  member function. This can be useful if, for example, a packet was not sent because it contained only silence.	 *  Then, this function should be called to increment the timestamp with the appropriate amount so that the next	 *  packets will still be played at the correct time at other hosts.		 */	int IncrementTimestampDefault();		/** Creates a new SSRC to be used in generated packets. 	 *  Creates a new SSRC to be used in generated packets. This will also generate new timestamp and 	 *  sequence number offsets.	 */	uint32_t CreateNewSSRC();	/** Creates a new SSRC to be used in generated packets. 	 *  Creates a new SSRC to be used in generated packets. This will also generate new timestamp and 	 *  sequence number offsets. The source table \c sources is used to make sure that the chosen SSRC 	 *  isn't used by another participant yet.	 */	uint32_t CreateNewSSRC(RTPSources &sources);	/** Returns the current SSRC identifier. */	uint32_t GetSSRC() const					{ if (!init) return 0; return ssrc; }	/** Returns the current RTP timestamp. */	uint32_t GetTimestamp() const					{ if (!init) return 0; return timestamp; }	/** Returns the current sequence number. */	uint16_t GetSequenceNumber() const				{ if (!init) return 0; return seqnr; }	/** Returns the time at which a packet was generated.	 *  Returns the time at which a packet was generated. This is not necessarily the time at which 	 *  the last RTP packet was generated: if the timestamp increment was zero, the time is not updated.	 */	RTPTime GetPacketTime() const					{ if (!init) return RTPTime(0,0); return lastwallclocktime; }	/** Returns the RTP timestamp which corresponds to the time returned by the previous function. */	uint32_t GetPacketTimestamp() const				{ if (!init) return 0; return lastrtptimestamp; }private:	int PrivateBuildPacket(const void *data,size_t len,	                  uint8_t pt,bool mark,uint32_t timestampinc,bool gotextension,	                  uint16_t hdrextID = 0,const void *hdrextdata = 0,size_t numhdrextwords = 0);	RTPRandom rtprnd;		size_t maxpacksize;	uint8_t *buffer;	size_t packetlength;		uint32_t numpayloadbytes;	uint32_t numpackets;	bool init;	uint32_t ssrc;	uint32_t timestamp;	uint16_t seqnr;	uint32_t defaulttimestampinc;	uint8_t defaultpayloadtype;	bool defaultmark;	bool deftsset,defptset,defmarkset;	uint32_t csrcs[RTP_MAXCSRCS];	int numcsrcs;	RTPTime lastwallclocktime;	uint32_t lastrtptimestamp;	uint32_t prevrtptimestamp;};inline int RTPPacketBuilder::SetDefaultPayloadType(uint8_t pt){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	defptset = true;	defaultpayloadtype = pt;	return 0;}inline int RTPPacketBuilder::SetDefaultMark(bool m){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	defmarkset = true;	defaultmark = m;	return 0;}inline int RTPPacketBuilder::SetDefaultTimestampIncrement(uint32_t timestampinc){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	deftsset = true;	defaulttimestampinc = timestampinc;	return 0;}inline int RTPPacketBuilder::IncrementTimestamp(uint32_t inc){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	timestamp += inc;	return 0;}inline int RTPPacketBuilder::IncrementTimestampDefault(){	if (!init)		return ERR_RTP_PACKBUILD_NOTINIT;	if (!deftsset)		return ERR_RTP_PACKBUILD_DEFAULTTSINCNOTSET;	timestamp += defaulttimestampinc;	return 0;}#endif // RTPPACKETBUILDER_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品人成在线观看免费| 久久久久国产精品麻豆ai换脸| 91视频在线看| 精品视频在线免费| 秋霞国产午夜精品免费视频| 亚洲主播在线播放| 一区二区三区91| 日韩电影一区二区三区四区| 性久久久久久久| 日本不卡一区二区三区| 奇米影视一区二区三区小说| 麻豆精品视频在线观看| 国产成人免费在线观看| 韩国v欧美v日本v亚洲v| jiyouzz国产精品久久| 成人黄色小视频在线观看| 99re免费视频精品全部| 日韩一区二区三区电影| 精品国产一区a| 亚洲欧洲av在线| 免费成人深夜小野草| 国产69精品久久久久毛片| 在线观看视频91| 久久久久久久久久久久久夜| 亚洲特黄一级片| 狠狠色丁香久久婷婷综合丁香| 国产一区二区三区在线观看免费| 黄色精品一二区| 538在线一区二区精品国产| 国产欧美视频一区二区| 一区二区日韩av| 成人动漫一区二区| 久久青草国产手机看片福利盒子| 亚洲欧洲一区二区在线播放| 久久99国产精品久久99| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 精品午夜一区二区三区在线观看| 精品久久久网站| 亚洲一区二区三区美女| 欧美日韩国产首页在线观看| 久久99热国产| 亚洲综合在线第一页| 久久久一区二区| 国产精品美女久久久久久久久久久 | 91蜜桃传媒精品久久久一区二区| 国产丝袜在线精品| 久久99久久久久| 日韩三级中文字幕| 麻豆国产欧美日韩综合精品二区| 欧美少妇一区二区| 一二三四区精品视频| 欧美日韩精品二区第二页| 日韩精品成人一区二区三区| 在线播放中文一区| 国产一区二区三区综合| 久久精品一区二区三区不卡 | 国产美女精品在线| 国产精品丝袜在线| 日韩欧美中文字幕制服| 成人av在线观| 日韩免费看的电影| 亚洲一二三区在线观看| 色综合天天综合网国产成人综合天| 欧洲激情一区二区| 亚洲欧洲av色图| heyzo一本久久综合| 国产精品色哟哟网站| 在线亚洲精品福利网址导航| 青青草国产精品97视觉盛宴| 久久精品在这里| 欧美电影一区二区三区| 成人一区二区三区在线观看| 亚洲h动漫在线| 日韩一区在线免费观看| 国产欧美综合色| 久久久久久久一区| 日韩欧美一区二区视频| 色综合久久中文字幕综合网| 精品一区二区三区在线观看国产| 亚洲精品网站在线观看| 国产精品免费久久| 国产日韩欧美a| 久久久久久久综合狠狠综合| 日韩美女天天操| 91精品蜜臀在线一区尤物| 欧美三级韩国三级日本一级| 欧洲一区二区av| 欧美精品乱码久久久久久按摩| 欧美三级中文字| 正在播放亚洲一区| 精品久久久久久久久久久久久久久| 欧美亚洲国产bt| 日韩免费看的电影| 国产午夜一区二区三区| 亚洲人成网站影音先锋播放| 久久亚洲捆绑美女| 国产精品日韩成人| 亚洲主播在线播放| 免费观看成人av| 青草国产精品久久久久久| 国产露脸91国语对白| 国产精品一区二区视频| 一本色道久久综合狠狠躁的推荐| 成人黄色电影在线| 欧美日本一道本| 国产欧美日韩卡一| 丝袜亚洲另类丝袜在线| 国内国产精品久久| 欧美中文字幕久久| 精品久久久久久最新网址| 欧美福利一区二区| 日本一区二区三区在线不卡| 亚洲综合丁香婷婷六月香| 精品无人码麻豆乱码1区2区| 欧美性感一区二区三区| 91精品久久久久久久91蜜桃| 久久久久99精品一区| 亚洲小说春色综合另类电影| 激情文学综合网| 欧美一区二区在线视频| 亚洲精品伦理在线| 成人av网在线| 久久久久久久久久美女| 日本三级亚洲精品| 欧美另类高清zo欧美| 亚洲一区二区三区美女| 在线亚洲一区二区| 日韩理论片一区二区| jizzjizzjizz欧美| 久久久久高清精品| 国模娜娜一区二区三区| 欧美一级一级性生活免费录像| 亚洲一区在线视频观看| 色一情一伦一子一伦一区| 99在线精品一区二区三区| 欧美亚洲国产一区在线观看网站| 久久99精品国产| 亚洲免费av高清| 日韩午夜激情电影| 99精品国产99久久久久久白柏| 亚洲综合一区二区三区| 久久综合网色—综合色88| 色8久久精品久久久久久蜜| 麻豆国产一区二区| 亚洲成人免费在线观看| 欧美一区二视频| 国产大陆精品国产| 亚洲资源在线观看| 国产午夜亚洲精品理论片色戒| av一二三不卡影片| 精品午夜久久福利影院| 综合精品久久久| 欧美日韩国产成人在线免费| 久久狠狠亚洲综合| 男人操女人的视频在线观看欧美| 国产午夜精品一区二区三区视频| 一本到高清视频免费精品| 日韩精品色哟哟| 在线播放中文字幕一区| 国产在线播放一区三区四| 一区二区三区欧美久久| 久久久99免费| 中文字幕二三区不卡| 日本一区免费视频| 久久精品欧美一区二区三区麻豆| 555www色欧美视频| 久久夜色精品国产欧美乱极品| 2023国产精品自拍| 亚洲精品大片www| 亚洲视频中文字幕| 亚洲欧美日韩国产手机在线 | 久久久影视传媒| 日韩一区二区三区四区五区六区| 欧美日韩国产高清一区二区| 欧美精品1区2区| 色天天综合色天天久久| 欧美日韩成人在线| 日韩免费一区二区| 国产欧美日韩麻豆91| 亚洲国产日韩在线一区模特| 午夜精品福利视频网站| 免费看精品久久片| 色老汉av一区二区三区| 久久综合久久99| 亚洲一级片在线观看| 国产91精品久久久久久久网曝门| 在线这里只有精品| 国产精品成人免费在线| 国产一区美女在线| 久久久久久久综合色一本| 久草中文综合在线| 欧美在线观看一二区| 欧美sm极限捆绑bd| 亚洲午夜三级在线| 成人深夜视频在线观看| 69成人精品免费视频| 久久免费精品国产久精品久久久久| 26uuu久久天堂性欧美| 另类调教123区| 欧美视频一区在线|