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

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

?? hust_rtp.h

?? 實(shí)現(xiàn)基于ip2022的MPEG2 TS的IP組播接收
?? H
字號(hào):
/*------------------------------------------------------------------------- * rtp.h - RTP_HEADER_LEN, RTP_DATA, RTP_INACTIVE, RTP_CNAMEPRESENT, * RTP_DATASEEN *------------------------------------------------------------------------- */#ifndef RTP_H#define RTP_H#include <ipOS.h>#include <ipHAL.h>#include <ipStack.h>#include <ipEthernet.h>#include 	"hust_rtplibcommon.h"#include 	"hust_bufpool.h"#include	"hust_hash.h"/* RTP Constants */#define RTP_CURRVERS		2          /* current version number */#define RTP_HEADERMINLEN	16         /* min header length      */#define RTP_MAXDROPOUT		3000       /* for rtpupdateseq()     */#define RTP_MAXMISORDER		100        /* for rtpupdateseq()     */#define RTP_MINSEQUENTIAL	2          /* for rtpupdateseq()     */#define RTP_SEQMOD		(1 << 16)  /* for rtpupdateseq()     */#define CLOCKRATE		90000#define MAXCC			16#define MPEG2TYPE		33#define RTP_DATASIZE		1316#define RTP_PACKETLEN		1332#define SSRCDESTROY		0#define CNAMEDESTROY		1/* RTP Macros */#define RTP_HEADER_LEN(prtp)	(RTP_HEADERMINLEN + \				((prtp)->rtp_cc * sizeof(ssrc_t)))#define RTP_DATA(prtp)		((char *)prtp + RTP_HEADER_LEN(prtp))/* Structure for RTP packet */struct rtp {#if __BYTE_ORDER == __LITTLE_ENDIAN || defined(_LITTLE_ENDIAN)  u8_t	rtp_cc:4;	 /* source count			*/  u8_t	rtp_ext:1;	 /* extension flag			*/  u8_t	rtp_pad:1;	 /* padding flag			*/  u8_t	rtp_ver:2;	 /* version				*/  u8_t	rtp_payload:7;	 /* payload type			*/  u8_t	rtp_mark:1;	 /* marker flag				*/#elif __BYTE_ORDER == __BIG_ENDIAN || defined(_BIG_ENDIAN)  u8_t	rtp_ver:2;	 /* version				*/  u8_t	rtp_pad:1;	 /* padding flag			*/  u8_t	rtp_ext:1;	 /* extension flag			*/  u8_t	rtp_cc:4;	 /* source count			*/  u8_t	rtp_mark:1;	 /* marker flag				*/  u8_t	rtp_payload:7;	 /* payload type			*/#endif  seq_t		rtp_seq;	 /* sequence number			*/  mediatime_t	rtp_time;	 /* timestamp				*/  ssrc_t	rtp_ssrc;	 /* synchronization source identifier	*////  char*		rtp_data;	 /* beginning of header extnsn or data  */  u32_t		rtp_data_addr;};/* Structure for linked list node for RTP packets */struct rtpln {  u16_t		rln_len;	/* total length of packet	*/  u32_t		rln_seq;	/* extended sequence number	*/  struct rtpln	*rln_next;	/* older packer			*/  struct rtpln	*rln_prev;	/* newer packet			*/  struct rtp	rln_rtp;	/* RTP packet			*/};/* Structure for queue of struct rtplns */struct rtpqueue {  struct rtpln  *rq_head;       /* oldest packet in queue       */  struct rtpln  *rq_tail;       /* newest packet in queue       */  u16_t         rq_len;         /* sum of packet sizes in queue */  ///pthread_mutex_t rq_mutex;     /* mutex to lock queue          */};/* Stream Constants */#define RTP_BYERECEIVED			-1#define RTP_TIMEDOUT			-2#define RTP_PAYLOADUNINITIALIZED	-1#define RTP_INADDRUNINITIALIZED		INADDR_ANY#define RTP_INFINITEINACTIVETHRESH	-1#define RTP_DEFAULT_INACTIVETHRESH	5#define RTP_NTPINT			1#define RTP_NTPFRAC			0/* Stream macros */#define RTP_INACTIVE(v)		(v == RTP_BYERECEIVED || v == RTP_TIMEDOUT)#define RTP_CNAMEPRESENT(pstm)	(pstm->stm_cname[0] != 0)#define RTP_DATASEEN(pstm)	(pstm->stm_packets > pstm->stm_recprior)/* State structure for stream */struct stream {  ///pthread_mutex_t   ///              stm_mutex;	/* mutex for locking stream structure	*/  ssrc_t	stm_ssrc;	/* synchronization source identifier	*/  bool		stm_zombie;	/* stream marked for removal when true	*/  u32_t		stm_clkrt;	/* participant's clockrate in Hz	*/  u8_t		stm_payload;	/* stream's payload type		*/  bool		stm_enqueue;	/* switch to turn on data enqueueing	*/  u32_t		stm_ip;		/* partipant's IP address		*/  ref_t		stm_refcnt;	/* reference count			*/  struct rtpqueue                 stm_queue;      /* queue of RTP packets                 */  bool		stm_mark;	/* source marked for rblock generation	*/  s8_t		stm_inactive;	/* number of inactive cycles or status	*/  s8_t		stm_inactthresh;/* number of inactive cycles to timeout */  s32_t		stm_jitter;	/* jitter measure			*/   u16_t		stm_packets;	/* cumulative packets received		*/  u8_t		stm_probation;	/* sequential pkts to validate stream	*/  seq_t		stm_firstseq;	/* first sequence number received	*/  seq_t		stm_hiseq;	/* greatest seq number recently received*/  u16_t		stm_badseq;	/* bad sequence number (RFC 1889)	*/   u8_t		stm_roll;	/* number of `roll-overs'		*/  u16_t		stm_recprior;	/* value saved from last RTCP cycle	*/  u16_t		stm_expprior;	/* value saved from last RTCP cycle	*/  mediatime_t	stm_lastts;	/* last timestamp for jitter		*/  u32_t		stm_lastrec;	/* time last packet received for jitter */  u32_t		stm_lastntp[2];	/* NTP timestamp of last SR (low, high)	*/  /////要寫入rr包中的時(shí)間戳    u32_t		stm_lastsr;	/* my time last sender report received	*/  mediatime_t	stm_lastsrts;	/* RTP timestamp in last sender report	*/    struct stream *stm_cnamenext; /* next participant with same cname	*/  struct stream *stm_cnameprev; /* previous participant with same cname	*/  char		*stm_cname;	/* canonical name			*/  char		*stm_name;	/* participant's name			*/  char		*stm_email;	/* participant's email address		*/  char		*stm_phone;	/* participant's phone			*/  char		*stm_loc;	/* participant's location		*/  char		*stm_tool;	/* participant's tool name		*/  char		*stm_note;	/* participant's note			*/  char		*stm_priv;	/* private data				*////add by xu  u8_t		stm_lostfra;	/* fraction lost of RR			*/  u32_t		stm_lostpac;	/* cumulative number of packets lost of RR*/  u32_t		stm_exthiseq;	/* extended highest sequence number received*/  u32_t 	stm_delay;      /* delay since last SR			*/  u32_t		stm_sdpackets;  u32_t         stm_sdoctets;};struct cnamelist {  struct stream  *cn_stream;};/* Session constants */#define RTP_CNAMEHTSZ	             27#define RTP_SSRCHTSZ	             27#define RTP_DEFAULT_SESSIONBW        16000#define RTP_DEFAULT_SESSIONTTL       16#define RTP_MAXEVENTQUEUES           16/* Commands for rtpctl */#define RTP_CTL_ADDEVENTQUEUE        1#define RTP_CTL_REMEVENTQUEUE        2#define RTP_CTL_SETTTL               3#define	RTP_CTL_SETBW                4#define RTP_CTL_SETCLEANUP           5#define RTP_CTL_RTCPCYCLETHREAD      6#define RTP_CTL_RTPRECVTHREAD        7#define RTP_CTL_RTCPRECVTHREAD       8#define RTP_CTL_STREAM_GETENQUEUE    9#define RTP_CTL_STREAM_GETCLKRT      10#define RTP_CTL_STREAM_SETCLKRT      11#define RTP_CTL_STREAM_GETPT         12#define RTP_CTL_STREAM_GETQLEN       15#define RTP_CTL_STREAM_GETINACTIVE   16#define RTP_CTL_STREAM_GETJITTER     17#define RTP_CTL_STREAM_GETPACKETCNT  18#define RTP_CTL_STREAM_GETROLLOVERS  19 #define RTP_CTL_STREAM_GETPROBATION  20#define RTP_CTL_STREAM_GETCNAME      21#define RTP_CTL_STREAM_GETNAME       22#define RTP_CTL_STREAM_GETEMAIL      23 #define RTP_CTL_STREAM_GETPHONE      24#define RTP_CTL_STREAM_GETTOOL       25#define RTP_CTL_STREAM_GETNOTE       26#define RTP_CTL_STREAM_GETPRIV       27#define RTP_CTL_STREAM_GETINACTTHR   28#define RTP_CTL_STREAM_SETINACTTHR   29#define RTP_CTL_STREAM_GETSRTS       30#define RTP_CTL_STREAM_GETSRNTP      31#define RTP_CTL_STREAM_LOCK          32#define RTP_CTL_STREAM_UNLOCK        33#define RTP_CTL_STREAM_NULL          34#define RTP_CTL_STREAM_EXISTS        RTP_CTL_STREAM_NULLstruct session {  ////struct in_addr       sn_addr; /* session address                      */  u32_t		sn_addr;  u16_t         sn_port;        /* session port                         */  ///pthread_mutex_t sn_mutex;     /* mutex to lock session structure      */  ///pthread_cond_t  sn_cond;      /* session condition variable           */  ///pthread_mutex_t sn_cnamemutex;/* mutex to lock cname threadings       */  ///pthread_mutex_t   ///            sn_getstreammutex;/* mutex for rtpgetstream function      */  u32_t		sn_ssrc;	/* my synchronization source identifier	*/  u32_t         sn_bw;          /* approx session bandwidth in bits/sec	*/  bool		sn_autocleanup;	/* action to take on stream expiration	*/  ///int		sn_rtpfd;	/* file descriptor for RTP		*/  ///int		sn_rtcpfd;	/* file descriptor for RTCP		*/  struct ht	*sn_ssrcs;	/* ssrc -> stream * hashtable		*/  struct ht     *sn_cnames;     /* cname -> stream * hashtable		*/    //////struct sockaddr_in  //////              	sn_rtcpto;	/* destination for RTCP packets		*/  u32_t			sn_rtcpto;    u16_t           sn_avgrtcp;     /* RTCP len for interval computation	*/  struct eventqueue                *sn_eventqs[RTP_MAXEVENTQUEUES];                                /* event queues                         */  /////pthread_t	sn_rtcpcyclethr;/* thread to perform RTCP cycle dutes	*/  ///int                       ///sn_rtcpcyclethrstat;/* state of RTCP cycle thread           */  ////pthread_mutex_t   //////         sn_rtcpcyclethrmutex;/* mutex for cycle thread state         */  /////pthread_t	sn_rtpthr;	/* thread to process RTP packets	*/  ///int           sn_rtpthrstat;  /* RTP receive thread state             */  /////pthread_mutex_t   /////              sn_rtpthrmutex; /* mutex for RTP receive thread state   */  /////pthread_t	sn_rtcpthr;	/* thread to process RTCP packets	*/  ///int           sn_rtcpthrstat; /* RTCP receive thread state            */  ///////pthread_mutex_t  //////             sn_rtcpthrmutex; /* mutex for RTCP receive thread state  */  ///struct bufpool sn_bpool;      /* pool of buffers for RTP packets      */  ssrc_t                      *sn_cyclesources; /* memory for rtcpcycle() to hold ssrcs */  char          *sn_cyclebuf;   /* memory for rtcpcycle() to make RR    */  u32_t		sn_rtppktcnt;  u32_t		sn_rtpoctcnt; };#endif/*********************************注:所有的線程變量和線程互斥變量都被注釋掉    所有的地址型結(jié)構(gòu),包括:struct sockaddr_in和struct in_addr都用u32_t類型(unsigned long int)    來代替*************************/struct session	*rtpopen(u32_t, u16_t, u16_t, u8_t);int rtpclose(struct session *);int rtpstreamon(struct session *, ssrc_t, u32_t);int rtpstreamoff(struct session *, ssrc_t);int rtpctl(struct session *, int, char *, int, ssrc_t);int rtpsources(struct session *, ssrc_t *, u16_t);int rtpwritefifo(struct stream*);/* API queue functions */int rtpqlock(struct session *, ssrc_t ssrc);int rtpqunlock(struct session *, ssrc_t ssrc);struct rtpln *rtpqextracthead(struct session *, ssrc_t ssrc);int rtpqinsert(struct session *, ssrc_t, struct rtpln *);int rtpqclear(struct session *, ssrc_t);int rtpqinit(struct rtpqueue *);int rtpqdestroy(struct rtpqueue *);/* utility */int copypacket(struct rtpln *, char *, int);int copypacket2(struct rtpln *, char *, int *, char *, int *);/* Internal calls *////int rtpopensockets(struct session *, struct in_addr, int);///struct stream	*rtpnewstream(struct session *, ssrc_t);struct stream	*rtpnewstream();///int		rtprecv(struct session *);int		rtpupdate(struct session *, struct stream *, struct rtp *);void rtpinitseq(struct stream *, seq_t);int rtpupdateseq(struct session *, struct stream *, seq_t);void            rtpdestroystream(struct stream *);int		rtpremovestream(struct session *, struct stream *);struct stream	*rtpgetstream(struct session *, ssrc_t);////struct stream	*rtpgetstream();int rtpreleasestream(struct session *, struct stream *);ssrc_t rtpmkssrc(struct session *);///void rtphton(struct rtp *);///void rtpntoh(struct rtp *);int rtpstreamcleanup(struct session *, struct stream *);///void rtpinitseq(struct stream *, unsigned short);int rtpcheckcollision(struct session *, ssrc_t);///void rtprecvthreadfcn(struct session *);int rtppostevent(struct session *, u8_t, ssrc_t, void *, u16_t);/* queue internal */struct rtpln *rtpqextract(struct rtpqueue *, struct rtpln *);int _rtpqinsert(struct rtpqueue *, struct rtpln *, bool *);int _rtpqclear(struct rtpqueue *);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品免费看国产| 91网页版在线| 尤物av一区二区| 日韩精品专区在线影院重磅| a在线播放不卡| 久久99精品国产麻豆婷婷洗澡| 亚洲欧洲精品天堂一级| 日韩你懂的电影在线观看| 在线观看中文字幕不卡| 国产白丝精品91爽爽久久| 日韩电影在线免费| 亚洲激情自拍偷拍| 国产精品乱码一区二三区小蝌蚪| 日韩免费高清视频| 欧美色成人综合| 色菇凉天天综合网| 本田岬高潮一区二区三区| 极品少妇xxxx精品少妇| 日韩精品高清不卡| 亚洲国产精品尤物yw在线观看| 国产精品全国免费观看高清 | 99re视频精品| 国产中文字幕一区| 美国欧美日韩国产在线播放| 亚洲成av人片在线| 亚洲精品国产精品乱码不99 | 精品视频一区三区九区| 99久久精品国产导航| 国产成人啪免费观看软件| 青青草国产精品97视觉盛宴| 午夜视频一区在线观看| 亚洲一区日韩精品中文字幕| 亚洲欧美激情插| 亚洲色图欧美在线| 亚洲色图.com| 一区二区在线观看免费| 一区二区三区日韩在线观看| 亚洲视频一二三区| 亚洲乱码国产乱码精品精的特点 | 欧美亚洲动漫精品| 欧美性极品少妇| 欧美天堂亚洲电影院在线播放| 欧美性大战久久久| 欧美视频精品在线| 欧美日韩亚洲另类| 91精品国产综合久久久久久久久久| 欧美日韩精品电影| 91.xcao| 欧美精品在线视频| 欧美一级欧美一级在线播放| 日韩欧美一级片| 日韩欧美国产不卡| 久久网站热最新地址| 久久久精品2019中文字幕之3| 久久久精品黄色| 中文字幕中文字幕一区| 亚洲激情自拍视频| 五月婷婷久久丁香| 狠狠色综合播放一区二区| 国产精品1区2区3区| 制服丝袜激情欧洲亚洲| 色狠狠桃花综合| 91精品国模一区二区三区| 精品日韩成人av| 久久久午夜精品理论片中文字幕| 日本一区二区三级电影在线观看| 中文字幕在线播放不卡一区| 亚洲自拍偷拍网站| 免费一级片91| 国产成人丝袜美腿| 欧美性做爰猛烈叫床潮| 欧美一区二区三区四区视频| 26uuu欧美| 中文字幕一区二区不卡| 亚洲妇熟xx妇色黄| 国产一区二区三区| 91成人网在线| 欧美精品一区二区三区蜜桃视频| 中文字幕精品三区| 亚洲黄色录像片| 久久国产精品露脸对白| 不卡电影一区二区三区| 91精品国产综合久久福利 | 在线播放亚洲一区| 国产精品沙发午睡系列990531| 亚洲人成在线观看一区二区| 蜜桃视频一区二区三区在线观看| 成人国产精品免费观看| 欧美日本一区二区三区| 国产女人aaa级久久久级| 亚洲韩国精品一区| 高清beeg欧美| 欧美日本在线视频| 中文字幕在线视频一区| 视频一区免费在线观看| 99国产精品久久| 91精品国模一区二区三区| 亚洲色图制服诱惑| 国产精品一区在线| 欧美人牲a欧美精品| 国产精品久久午夜| 成人理论电影网| 欧美久久一二区| 亚洲欧美另类小说视频| 久久99国产精品麻豆| 欧美色网一区二区| 国产精品久久久久久久久免费樱桃| 日欧美一区二区| 色妹子一区二区| 欧美国产激情一区二区三区蜜月| 日韩国产精品大片| 91黄视频在线观看| 国产精品青草综合久久久久99| 看片的网站亚洲| 欧美精品自拍偷拍动漫精品| 一区二区三区在线影院| 成人深夜在线观看| 久久香蕉国产线看观看99| 青青草97国产精品免费观看无弹窗版 | 欧美精品一区视频| 日韩不卡在线观看日韩不卡视频| 日本精品免费观看高清观看| 中文无字幕一区二区三区| 国产综合色精品一区二区三区| 69堂精品视频| 亚洲成a人v欧美综合天堂下载| 日本道在线观看一区二区| 欧美国产日韩一二三区| 国产成人在线免费| 久久久久久亚洲综合| 久久福利视频一区二区| 欧美不卡一区二区| 精品一区二区在线播放| 日韩午夜精品视频| 日本网站在线观看一区二区三区| 欧美日韩在线一区二区| 亚洲一区二区在线观看视频| 欧美综合天天夜夜久久| 亚洲精品成人a在线观看| 色婷婷久久久综合中文字幕| 亚洲乱码国产乱码精品精小说 | 五月天亚洲婷婷| 3atv一区二区三区| 久久99精品一区二区三区三区| 精品久久五月天| 国产高清久久久久| 中文字幕一区在线| 91理论电影在线观看| 一区二区三区高清| 欧美人妇做爰xxxⅹ性高电影| 亚洲成av人影院在线观看网| 3atv在线一区二区三区| 六月婷婷色综合| 久久一区二区三区四区| 国产大陆a不卡| 中文一区在线播放| 91成人网在线| 久久成人免费网| 中文一区在线播放| 在线视频中文字幕一区二区| 五月天欧美精品| 精品日韩在线观看| 国产99精品国产| 亚洲欧美色一区| 欧美一区二区三区四区在线观看| 国产一区二区主播在线| 亚洲欧洲日产国产综合网| 日韩精品中文字幕在线不卡尤物 | 亚洲亚洲精品在线观看| 日韩三级在线免费观看| 国产一区二区伦理| 日韩美女精品在线| 欧美日韩国产不卡| 国产美女av一区二区三区| 国产精品福利在线播放| 欧洲中文字幕精品| 精品亚洲国内自在自线福利| 中文字幕av在线一区二区三区| 色婷婷综合久久| 激情久久五月天| 亚洲另类在线制服丝袜| 精品sm捆绑视频| 日本精品裸体写真集在线观看| 蜜臀av亚洲一区中文字幕| 欧美韩国一区二区| 欧美精品777| fc2成人免费人成在线观看播放| 舔着乳尖日韩一区| 国产精品久久久久久久裸模| 69久久99精品久久久久婷婷| 久久99精品国产91久久来源| 伊人婷婷欧美激情| 国产网站一区二区| 欧美日产国产精品| 99精品欧美一区二区蜜桃免费 | 亚洲女爱视频在线| 精品国产网站在线观看| 欧美专区日韩专区| 成人理论电影网| 国内精品第一页|