⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtp.h

📁 comer s TCPIP-vol3源代码...当然是经典咯
💻 H
字号:
/* rtp.h - rtptsgt, rtptsmax, rtphdrlen, rtpdata */#include <common.h>#include <util.h>typedef unsigned int   ssrc_t;typedef unsigned int   mediatime_t;typedef	unsigned short seq_t;#define RTP_TSWINDOW      (1 << 31)#define RTP_CURRVERS	  2	/* RTP current version			*/#define RTP_MINHDRLEN     12	/* RTP minimum header length		*/#define RTP_MINSEQUENTIAL 2	/* sequential packets required		*/#define RTP_JITTHRESH	  8000	/* jitter buffer `K' (in 1/8000 sec)	*/#define RTP_BPBUFSZ	  2048	/* buffer pool buffer size		*/#define RTP_BPBUFCNT      64	/* buffers in buffer pool		*/#define RTP_LEEWAY	  400	/* playback leeway (in 1/8000 sec)	*/#define RTP_INACTTHRESH	  5	/* number of cycles until timeout	*/#define PCMMU_ID	  0	/* RTP ID for PCM mu-law		*/#define PCMMU_CLKRT       8000	/* PCM clockrate			*/#define PCMMU_BW	  64000	/* PCM bandwidth (bits/sec)		*/#define rtptsgt(x, y)    (x>y?(x-y<RTP_TSWINDOW?TRUE:FALSE):		 \			   (y-x<RTP_TSWINDOW?FALSE:TRUE))#define rtptsmax(x, y)   (rtptsgt(x, y) ? x : y)#define rtphdrlen(prtp)  (RTP_MINHDRLEN + (prtp->rtp_cc * 4))#define rtpdata(prtp)	  ((char *) prtp + rtphdrlen(prtp))struct rtp {  unsigned int	rtp_cc:4;	/* source count				*/  unsigned int	rtp_ext:1;	/* extension flag			*/  unsigned int	rtp_pad:1;	/* padding flag				*/  unsigned int	rtp_ver:2;	/* version				*/  unsigned int	rtp_payload:7;	/* payload type				*/  unsigned int	rtp_mark:1;	/* marker flag				*/  seq_t		rtp_seq;	/* sequence number			*/  mediatime_t	rtp_time;	/* timestamp				*/  ssrc_t	rtp_ssrc;	/* synchronization source identifier	*/  char		rtp_data[1];	/* beginning of RTP data		*/};struct rtpln {  int		rln_len;	/* total length of packet		*/  unsigned int	rln_seq;	/* extended sequence number	        */  struct rtpln	*rln_next;	/* pkt with next lower sequence number	*/  struct rtpln	*rln_prev;	/* pkt with next greater seq number	*/  struct rtp	rln_rtp;	/* RTP packet			        */};struct stream {  ssrc_t	  stm_ssrc;	/* synchronization source identifier	*/  struct rtpln   *stm_qhead;	/* pointer to pkt with lowest seq num	*/  struct rtpln   *stm_qtail;	/* pointer to pkt with highest seq num	*/  pthread_mutex_t stm_qmutex;	/* mutex to lock queue			*/  pthread_cond_t  stm_rcond;    /* cond var for blocking read	        */  pthread_mutex_t stm_rmutex;   /* mutex associated read cond var	*/  pthread_mutex_t stm_smutex;	/* mutex for locking stream structure	*/  bool		  stm_buffering;/* TRUE when stream is still buffering  */  struct timeval  stm_clkx;	/* local time stamp			*/  mediatime_t	  stm_clky;	/* equivalent media time stamp		*/  double	  stm_jitter;	/* jitter measure			*/   int		  stm_inactive; /* number of inactive cycles or status	*/  int		  stm_packets;	/* cumulative packets received		*/  int		  stm_probation;/* sequential pkts to validate stream	*/  seq_t		  stm_firstseq; /* first sequence number received	*/  seq_t		  stm_hiseq;	/* greatest seq number recently recvd	*/  int		  stm_badseq;	/* bad sequence number			*/  int		  stm_roll;	/* sequence space ``roll-overs''	*/  int		  stm_recprior; /* packets recv'd in last RTCP cycle	*/  int		  stm_expprior; /* packets expected in last RTCP cycle	*/  mediatime_t	  stm_lastts;	/* last ts for jitter compuataion	*/  struct timeval  stm_lastrec;	/* time last pkt rcvd for jitter comp	*/  unsigned int	  stm_ntp[2];   /* NTP timestamp of last SR (frac, int)	*/  struct timeval  stm_lastsr;	/* local time last SR received	        */};struct session {  unsigned int	  sn_ssrc;	/* local SSRC                           */  int		  sn_rtpfd;	/* file descriptor for RTP		*/  int		  sn_rtcpfd;	/* file descriptor for RTCP		*/  struct sockaddr_in sn_rtcpto;	/* destination for RTCP packets		*/  struct stream   sn_stream;    /* single stream being received         */  bool            sn_detected;  /* TRUE once stream detected            */  int             sn_avgrtcp;   /* RTCP len for interval computation	*/};void		rtpinit(unsigned int, int);void		rtprecv(void);int		rtpupdate(struct rtp *);void		rtpinitseq(seq_t);int		rtpupdateseq(seq_t);void		rtpnewdata(void);bool		rtpqinsert(struct rtpln *);struct rtpln   *rtpqdequeue(void);void		playaudio(void);extern struct session	sn;extern struct stream	stm;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -