?? hust_rtcp.h
字號:
/*------------------------------------------------------------------------- * rtcp.h - RTCP_LENGTH_BYTE *------------------------------------------------------------------------- */#ifndef RTCP_H#define RTCP_H#include "hust_rtplibcommon.h"#include "hust_rtp.h"/* RTCP constants */#define RTCP_MAXRBLOCKS 31#define RTCP_MAXREASONLEN 255#define RTCP_HEADERSZ 6#define RTCP_SRSZ 24#define RTCP_RRSZ 4#define ITEMHEADERSZ 2#define APPSZ 8#define RTCP_BWFRAC .05#define RTCP_MAXPACKETSZ 1024#define RTCP_RRMAXRBLOCKS 2697 /* Maximum number of report blocks we'll send in 1 CYCLE */ /* Equal to maximum number that will fit in 1 UDP/IP packet *//* Types of RTCP messages */#define RTCP_SR 200#define RTCP_RR 201#define RTCP_SDES 202#define RTCP_BYE 203#define RTCP_APP 204/* Types of RTCP SDES items */#define RTCP_ITEM_NULL 0#define RTCP_ITEM_CNAME 1#define RTCP_ITEM_NAME 2#define RTCP_ITEM_EMAIL 3#define RTCP_ITEM_PHONE 4#define RTCP_ITEM_LOC 5#define RTCP_ITEM_TOOL 6#define RTCP_ITEM_NOTE 7#define RTCP_ITEM_PRIV 8/* Macros for RTP structure */#define RTCP_LENGTH_BYTE(prtcp) ((prtcp->rtcp_length + 1) * 4) /* assumes appropriate byte order */struct rtcp {#if __BYTE_ORDER == __LITTLE_ENDIAN || defined(_LITTLE_ENDIAN) u8_t rtcp_count:5; /* object count */ u8_t rtcp_pad:1; /* padding flag */ u8_t rtcp_ver:2; /* version */#elif __BYTE_ORDER == __BIG_ENDIAN || defined(_BIG_ENDIAN) u8_t rtcp_ver:2; /* version */ u8_t rtcp_pad:1; /* padding flag */ u8_t rtcp_count:5; /* object count */#endif u8_t rtcp_type; /* Message type */ u16_t rtcp_length; /* Message length */ char* rtcp_data; /* Message data */ };/* Struct for receiver report block */struct rblock { unsigned long int rb_ssrc; /* SSRC to which this rr refers */ unsigned char rb_fraclost:8; /* fraction lost */ unsigned long int rb_cumlost:24; /* cumulative packets lost */ unsigned long int rb_hiseq; /* Extended highest seq recvd */ unsigned long int rb_jitter; /* Jitter measure */ unsigned long int rb_lastsrts; /* Middle 32 of last SR NTP */ unsigned long int rb_delay; /* Delay since lsr */};/* Struct for receiver report message */struct rr { unsigned long int rr_ssrc; /* SSRC of sender */ char* rr_rb; /* Pointer to 1st report block */};/* Struct for sender report message */struct sr { unsigned long int sr_ssrc; /* SSRC of sender */ unsigned long int sr_intts; /* NTP Timestamp (high 32 bits) */ unsigned long int sr_fracts; /* NTP Timestamp (lo 32 bits) */ unsigned long int sr_rtpts; /* RTP media timestamp */ unsigned long int sr_packets; /* Sender's sent packet count */ unsigned long int sr_octets; /* Sender's sent octet count */ char* sr_rblock; /* First reception report */};/* Struct for source description message `chunk' */struct sdchunk { unsigned long int sdc_ssrc; /* SSRC to which chunk refers */ char* sdc_data; /* Beginning of SDES items */};/* Struct for source description chunk item */struct sditem { unsigned char sdi_type; /* Type of SDES item */ unsigned char sdi_len; /* Length of item data */ char* sdi_data; /* SDES item data */};/* Struct for reason in RTCP bye message */struct byereason { unsigned short bye_length; /* Length of reason text */ char* bye_reason; /* Reason for leaving. */};/* Struct for RTCP application-specific message */struct app { unsigned long int app_ssrc; /* SSRC of sender */ char app_name[4]; /* Name specififying app */ char* app_data; /* Application-specific data */};/* API Calls */////int rtcpsendbye(struct session *, char *);int rtcpsendbye(struct session *, char *);int rtcpsend(struct session *, struct rtcp *, int );int rtcpheader(struct rtcp *, int, unsigned char, u32_t);double rtcpcycle(struct session *);double rtcpinitinterval(struct session *);/* Internal Calls */void rtcpprocesschunk(struct session *, struct netbuf *);///void rtcpn2h(struct rtcp *);///void rtcph2n(struct rtcp *);double rtcpinterval(int, int, double, int, int, int *, int);bool rtcpcycleupdate(struct session *, struct stream *, struct rblock *);void rtcpconsumechunk(struct netbuf *);bool rtcpcycleupdate(struct session *, struct stream *, struct rblock *);int rtcprecv(struct session *);int rtcpcnameadd(struct session *, struct stream *);int rtcpcnamerem(struct session *, struct stream *);int rtcpprocess(struct session *, struct rtcp *, struct netbuf *);int rtcpsr(struct session *, struct rtcp *, struct netbuf *);int rtcprr(struct session *, struct rtcp *, struct netbuf *);int rtcpsdes(struct session *, struct rtcp *, struct netbuf *);int rtcpbye(struct session *, struct rtcp *, struct netbuf *);int rtcpapp(struct session *, struct rtcp *, struct netbuf *);///void rtcpcyclethreadfcn(struct session *);///void rtcprecvthreadfcn(struct session *);#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -