00001
00002
00003
00004
00005
00006
00007
00008 #define RTP_SEQ_MOD (1<<16)
00009 #define RTP_TS_MOD (0xffffffff)
00010
00011
00012
00013 #define RTP_VERSION 2
00014
00015 #define RTP_MAX_SDES 256
00016
00017 typedef enum {
00018 RTCP_SR = 200,
00019 RTCP_RR = 201,
00020 RTCP_SDES = 202,
00021 RTCP_BYE = 203,
00022 RTCP_APP = 204
00023 } rtcp_type_t;
00024
00025 typedef enum {
00026 RTCP_SDES_END = 0,
00027 RTCP_SDES_CNAME = 1,
00028 RTCP_SDES_NAME = 2,
00029 RTCP_SDES_EMAIL = 3,
00030 RTCP_SDES_PHONE = 4,
00031 RTCP_SDES_LOC = 5,
00032 RTCP_SDES_TOOL = 6,
00033 RTCP_SDES_NOTE = 7,
00034 RTCP_SDES_PRIV = 8,
00035 RTCP_SDES_IMG = 9,
00036 RTCP_SDES_DOOR = 10,
00037 RTCP_SDES_SOURCE = 11
00038 } rtcp_sdes_type_t;
00039
00040 typedef struct {
00041 unsigned int version:2;
00042 unsigned int p:1;
00043 unsigned int x:1;
00044 unsigned int cc:4;
00045 unsigned int m:1;
00046 unsigned int pt:7;
00047 u_int16 seq;
00048 u_int32 ts;
00049 u_int32 ssrc;
00050 u_int32 csrc[1];
00051 } rtp_hdr_t;
00052
00053 typedef struct {
00054 unsigned int version:2;
00055 unsigned int p:1;
00056 unsigned int count:5;
00057 unsigned int pt:8;
00058 u_int16 length;
00059 } rtcp_common_t;
00060
00061
00062 typedef struct {
00063 u_int32 ssrc;
00064 unsigned int fraction:8;
00065 int lost:24;
00066 u_int32 last_seq;
00067 u_int32 jitter;
00068 u_int32 lsr;
00069 u_int32 dlsr;
00070 } rtcp_rr_t;
00071
00072 typedef struct {
00073 u_int8 type;
00074 u_int8 length;
00075 char data[1];
00076 } rtcp_sdes_item_t;
00077
00078
00079 typedef struct {
00080 rtcp_common_t common;
00081 union {
00082
00083 struct {
00084 u_int32 ssrc;
00085 u_int32 ntp_sec;
00086 u_int32 ntp_frac;
00087 u_int32 rtp_ts;
00088 u_int32 psent;
00089 u_int32 osent;
00090
00091 rtcp_rr_t rr[1];
00092 } sr;
00093
00094
00095 struct {
00096 u_int32 ssrc;
00097
00098 rtcp_rr_t rr[1];
00099 } rr;
00100
00101
00102 struct {
00103 u_int32 src[1];
00104
00105 } bye;
00106
00107
00108 struct rtcp_sdes_t {
00109 u_int32 src;
00110 rtcp_sdes_item_t item[1];
00111 } sdes;
00112 } r;
00113 } rtcp_t;