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

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

?? rtpsession.h

?? jrtp庫
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*  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 rtpsession.h */#ifndef RTPSESSION_H#define RTPSESSION_H#include "rtpconfig.h"#include "rtplibraryversion.h"#include "rtppacketbuilder.h"#include "rtpsessionsources.h"#include "rtptransmitter.h"#include "rtpcollisionlist.h"#include "rtcpscheduler.h"#include "rtcppacketbuilder.h"#include "rtptimeutilities.h"#include "rtcpcompoundpacketbuilder.h"#include "rtpmemoryobject.h"#include <list>#ifdef RTP_SUPPORT_THREAD	#include <jmutex.h>	#endif // RTP_SUPPORT_THREADclass RTPTransmitter;class RTPSessionParams;class RTPTransmissionParams;class RTPAddress;class RTPSourceData;class RTPPacket;class RTPPollThread;class RTPTransmissionInfo;class RTCPCompoundPacket;class RTCPPacket;class RTCPAPPPacket;/** High level class for using RTP. *  For most RTP based applications, the RTPSession class will probably be the one to use. It handles  *  the RTCP part completely internally, so the user can focus on sending and receiving the actual data. *  \note The RTPSession class is not meant to be thread safe. The user should use some kind of locking  *        mechanism to prevent different threads from using the same RTPSession instance. */class RTPSession : public RTPMemoryObject{public:	/** Constructs an RTPSession instance, optionally installing a memory manager. */	RTPSession(RTPMemoryManager *mgr = 0);	virtual ~RTPSession();		/** Creates an RTP session.	 *  This function creates an RTP session with parameters \c sessparams, which will use a transmitter 	 *  corresponding to \c proto. Parameters for this transmitter can be specified as well. If \c	 *  proto is of type RTPTransmitter::UserDefinedProto, the NewUserDefinedTransmitter function must	 *  be implemented.	 */	int Create(const RTPSessionParams &sessparams,const RTPTransmissionParams *transparams = 0, RTPTransmitter::TransmissionProtocol proto = RTPTransmitter::IPv4UDPProto);	/** Creates an RTP session using \c transmitter as transmission component.	 *  This function creates an RTP session with parameters \c sessparams, which will use the	 *  transmission component \c transmitter. Initialization and destruction of the transmitter	 *  will not be done by the RTPSession class if this Create function is used. This function	 *  can be useful if you which to reuse the transmission component in another RTPSession	 *  instance, once the original RTPSession isn't using the transmitter anymore.	 */	int Create(const RTPSessionParams &sessparams,RTPTransmitter *transmitter);	/** Leaves the session without sending a BYE packet. */	void Destroy();	/** Sends a BYE packet and leaves the session. 	 *  Sends a BYE packet and leaves the session. At most a time \c maxwaittime will be waited to 	 *  send the BYE packet. If this time expires, the session will be left without sending a BYE packet. 	 *  The BYE packet will contain as reason for leaving \c reason with length \c reasonlength.	 */	void BYEDestroy(const RTPTime &maxwaittime,const void *reason,size_t reasonlength);	/** Returns whether the session has been created or not. */	bool IsActive();		/** Returns our own SSRC. */	uint32_t GetLocalSSRC();		/** Adds \c addr to the list of destinations. */	int AddDestination(const RTPAddress &addr);	/** Deletes \c addr from the list of destinations. */	int DeleteDestination(const RTPAddress &addr);	/** Clears the list of destinations. */	void ClearDestinations();	/** Returns \c true if multicasting is supported. */	bool SupportsMulticasting();	/** Joins the multicast group specified by \c addr. */	int JoinMulticastGroup(const RTPAddress &addr);	/** Leaves the multicast group specified by \c addr. */	int LeaveMulticastGroup(const RTPAddress &addr);	/** Leaves all multicast groups. */	void LeaveAllMulticastGroups();	/** Sends the RTP packet with payload \c data which has length \c len.	 *  Sends the RTP packet with payload \c data which has length \c len.	 *  The used payload type, marker and timestamp increment will be those that have been set 	 *  using the \c SetDefault member functions.	 */	int SendPacket(const void *data,size_t len);	/** Sends the RTP packet with payload \c data which has length \c len.	 *  It will use payload type \c pt, marker \c mark and after the packet has been built, the 	 *  timestamp will be incremented by \c timestampinc.	 */	int SendPacket(const void *data,size_t len,	                uint8_t pt,bool mark,uint32_t timestampinc);	/** Sends the RTP packet with payload \c data which has length \c len.	 *  The packet will contain a header extension with identifier \c hdrextID and containing data 	 *  \c hdrextdata. The length of this data is given by \c numhdrextwords and is specified in a 	 *  number of 32-bit words. The used payload type, marker and timestamp increment will be those that	 *  have been set using the \c SetDefault member functions.	 */	int SendPacketEx(const void *data,size_t len,	                  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords);	/** Sends the RTP packet with payload \c data which has length \c len.	 *  It will use payload type \c pt, marker \c mark and after the packet has been built, the 	 *  timestamp will be incremented by \c timestampinc. The packet will contain a header 	 *  extension with identifier \c hdrextID and containing data \c hdrextdata. The length 	 *  of this data is given by \c numhdrextwords and is specified in a number of 32-bit words.	 */	int SendPacketEx(const void *data,size_t len,	                  uint8_t pt,bool mark,uint32_t timestampinc,	                  uint16_t hdrextID,const void *hdrextdata,size_t numhdrextwords);#ifdef RTP_SUPPORT_SENDAPP	/** If sending of RTCP APP packets was enabled at compile time, this function creates a compound packet 	 *  containing an RTCP APP packet and sends it immediately. 	 *  If sending of RTCP APP packets was enabled at compile time, this function creates a compound packet 	 *  containing an RTCP APP packet and sends it immediately. If successful, the function returns the number 	 *  of bytes in the RTCP compound packet. Note that this immediate sending is not compliant with the RTP 	 *  specification, so use with care. 	 */	int SendRTCPAPPPacket(uint8_t subtype, const uint8_t name[4], const void *appdata, size_t appdatalen);#endif // RTP_SUPPORT_SENDAPP	/** Sets the default payload type for RTP packets to \c pt. */	int SetDefaultPayloadType(uint8_t pt);	/** Sets the default marker for RTP packets to \c m. */	int SetDefaultMark(bool m);	/** Sets the default value to increment the timestamp with 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();	/** This function allows you to inform the library about the delay between sampling the first 	 *  sample of a packet and sending the packet.	 *  This function allows you to inform the library 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);		/** This function returns an instance of a subclass of RTPTransmissionInfo which will give some 	 *  additional information about the transmitter (a list of local IP addresses for example).	 *  This function returns an instance of a subclass of RTPTransmissionInfo which will give some 	 *  additional information about the transmitter (a list of local IP addresses for example). The user	 *  has to free the returned instance when it is no longer needed, preferably using the DeleteTransmissionInfo	 *  function.	 */	RTPTransmissionInfo *GetTransmissionInfo();	/** Frees the memory used by the transmission information \c inf. */	void DeleteTransmissionInfo(RTPTransmissionInfo *inf);	/** If you're not using the poll thread, this function must be called regularly to process incoming data	 *  and to send RTCP data when necessary.	 */	int Poll();	/** Waits at most a time \c delay until incoming data has been detected. 	 *  Waits at most a time \c delay until incoming data has been detected. Only works when you're not 	 *  using the poll thread. If \c dataavailable is not \c NULL, it should be set to \c true if data 	 *  was actually read and to \c false otherwise.	 */	int WaitForIncomingData(const RTPTime &delay,bool *dataavailable = 0);	/** If the previous function has been called, this one aborts the waiting (only works when you're not 	 *  using the poll thread).	 */	int AbortWait();	/** Returns the time interval after which an RTCP compound packet may have to be sent (only works when 	 *  you're not using the poll thread.	 */	RTPTime GetRTCPDelay();	/** The following member functions (till EndDataAccess}) need to be accessed between a call 	 *  to BeginDataAccess and EndDataAccess. 	 *  The BeginDataAccess function makes sure that the poll thread won't access the source table	 *  at the same time that you're using it. When the EndDataAccess is called, the lock on the 	 *  source table is freed again.	 */	int BeginDataAccess();	/** Starts the iteration over the participants by going to the first member in the table. 	 *  Starts the iteration over the participants by going to the first member in the table.	 *  If a member was found, the function returns \c true, otherwise it returns \c false.	 */	bool GotoFirstSource();	/** Sets the current source to be the next source in the table. 	 *  Sets the current source to be the next source in the table. If we're already at the last 	 *  source, the function returns \c false, otherwise it returns \c true.	 */	bool GotoNextSource();	/** Sets the current source to be the previous source in the table.	 *  Sets the current source to be the previous source in the table. If we're at the first source, 	 *  the function returns \c false, otherwise it returns \c true.	 */	bool GotoPreviousSource();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女性喷水在线观看一区| 综合激情网...| 成人午夜私人影院| 天堂一区二区在线免费观看| 国产欧美视频在线观看| 欧美日韩一本到| 99热在这里有精品免费| 精品一区二区久久| 日韩一区精品字幕| 一区二区三区四区视频精品免费| 久久视频一区二区| 欧美一级精品在线| 欧美色视频在线观看| www.亚洲在线| 国产成人精品一区二区三区网站观看| 午夜精品福利久久久| 一区二区在线免费| 亚洲欧美日韩在线播放| 日本一区二区综合亚洲| 欧美成人综合网站| 91精品国产欧美日韩| 精品污污网站免费看| 在线视频欧美精品| 色综合久久综合网97色综合| 成人国产精品免费观看视频| 国产aⅴ综合色| 国产91精品露脸国语对白| 久久69国产一区二区蜜臀| 丝袜a∨在线一区二区三区不卡 | 日韩视频在线观看一区二区| 91黄视频在线| 色8久久人人97超碰香蕉987| 色综合视频在线观看| 99久久精品国产一区| av网站免费线看精品| 99久久精品国产导航| 91蜜桃视频在线| 色婷婷av一区二区三区大白胸| av在线不卡电影| av动漫一区二区| 日本电影欧美片| 在线观看一区二区视频| 欧美日韩高清一区二区不卡 | 精品国产一区二区三区四区四| 91麻豆精品国产综合久久久久久 | 日韩精品一区二区三区老鸭窝| 欧美一区二区三区四区视频| 在线综合亚洲欧美在线视频| 日韩三级伦理片妻子的秘密按摩| 欧美一区二视频| 精品国产1区2区3区| 久久九九久久九九| 中文字幕亚洲成人| 亚洲一卡二卡三卡四卡无卡久久 | 精品一区二区在线播放| 国产一区二区福利| 不卡免费追剧大全电视剧网站| 91在线云播放| 欧美三级资源在线| 日韩精品在线一区二区| 日本一区二区视频在线| 亚洲精品综合在线| 三级欧美韩日大片在线看| 精品夜夜嗨av一区二区三区| 国产精品白丝av| 色一区在线观看| 日韩视频免费观看高清在线视频| 久久久久久99久久久精品网站| 国产精品对白交换视频| 天堂蜜桃一区二区三区| 国产成人免费在线视频| 在线欧美日韩精品| 欧美刺激午夜性久久久久久久| 国产亚洲美州欧州综合国| 亚洲综合在线免费观看| 久久精品国产精品青草| 99热这里都是精品| 日韩视频在线一区二区| 中文字幕人成不卡一区| 美女爽到高潮91| fc2成人免费人成在线观看播放| 欧美日韩精品欧美日韩精品一 | 国产精品美女久久久久久久久久久| 亚洲免费观看在线视频| 久久99精品视频| 在线观看日韩电影| 国产午夜精品一区二区三区视频| 亚洲最色的网站| 成人少妇影院yyyy| 91麻豆精品国产无毒不卡在线观看| 国产亚洲精品bt天堂精选| 婷婷亚洲久悠悠色悠在线播放| 丁香一区二区三区| 欧美一级视频精品观看| 亚洲精品视频免费看| 国产精品一区二区免费不卡| 欧美亚洲另类激情小说| 国产欧美综合在线| 久久精品国产一区二区| 欧美伊人久久久久久午夜久久久久| 久久亚洲一区二区三区四区| 亚洲国产日韩在线一区模特| 大尺度一区二区| 日韩欧美国产系列| 亚洲成人一区在线| 99re亚洲国产精品| 国产日韩综合av| 久久国产生活片100| 欧美老肥妇做.爰bbww| 亚洲欧美电影院| 成人午夜视频在线| 精品处破学生在线二十三| 丝瓜av网站精品一区二区| 色成年激情久久综合| 国产欧美一区二区在线观看| 久久国内精品自在自线400部| 欧美日韩一级黄| 亚洲永久免费视频| 91美女福利视频| **网站欧美大片在线观看| 岛国精品在线观看| 久久精品亚洲国产奇米99| 激情国产一区二区| 欧美第一区第二区| 蜜桃av一区二区三区电影| 91精选在线观看| 日本不卡123| 欧美精品视频www在线观看| 亚洲伊人伊色伊影伊综合网| 色婷婷综合久久久久中文一区二区| 国产精品乱人伦一区二区| 国产黄色精品视频| 国产无一区二区| 国产很黄免费观看久久| 日本一区二区视频在线观看| 成人在线视频一区| 国产精品美女久久久久av爽李琼 | 欧美tickle裸体挠脚心vk| 青草国产精品久久久久久| 91精品国产日韩91久久久久久| 丝袜a∨在线一区二区三区不卡 | 亚洲欧美综合在线精品| va亚洲va日韩不卡在线观看| 成人免费一区二区三区在线观看| 成人免费毛片片v| 日韩美女视频19| 在线观看91视频| 日本vs亚洲vs韩国一区三区二区 | 国产jizzjizz一区二区| 国产精品污www在线观看| av在线不卡电影| 亚洲成人一区在线| 欧美va亚洲va香蕉在线| 国产99久久久国产精品潘金| 亚洲欧洲99久久| 欧美精品777| 国产一区二区三区美女| 国产精品久久久久久久久久久免费看 | 舔着乳尖日韩一区| 精品国产乱码久久久久久牛牛| 国产suv精品一区二区6| 亚洲男同性恋视频| 日韩一区二区电影在线| 国产精品一区二区久激情瑜伽| 国产亚洲精品aa午夜观看| 色拍拍在线精品视频8848| 日韩中文字幕91| 亚洲国产高清不卡| 欧美三级在线视频| 国产麻豆精品95视频| 亚洲激情欧美激情| 精品av久久707| 色网综合在线观看| 精品一区二区免费| 一区二区三区四区视频精品免费 | 97精品久久久午夜一区二区三区 | 国产精品国产三级国产三级人妇 | 欧美猛男超大videosgay| 国产专区欧美精品| 亚洲另类中文字| 精品久久久久一区| 色婷婷狠狠综合| 国产一区在线观看麻豆| 一区二区三区精品在线| 欧美videos中文字幕| 欧洲精品在线观看| 国产精品77777竹菊影视小说| 亚洲自拍偷拍图区| 中文字幕欧美三区| 日韩欧美色综合网站| 91丨九色丨蝌蚪丨老版| 开心九九激情九九欧美日韩精美视频电影 | 国产精品免费观看视频| 欧美精品一卡二卡| 97超碰欧美中文字幕| 国产一区欧美一区| 天天射综合影视| 悠悠色在线精品| 中文av字幕一区| 精品av久久707|