File: rtp.h

package info (click to toggle)
argus 2%3A5.0.2-3
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,576 kB
  • sloc: ansic: 41,305; sh: 3,757; lex: 466; makefile: 388; yacc: 371; perl: 178
file content (168 lines) | stat: -rw-r--r-- 4,895 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/*
 * Argus Software.  Argus files - main argus processing
 * Copyright (c) 2000-2024 QoSient, LLC
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

/* 
 * $Id: //depot/gargoyle/argus/include/netinet/rtp.h#4 $
 * $DateTime: 2015/04/13 00:39:28 $
 * $Change: 2980 $
 */


#ifndef _netinet_rtp_h
#define _netinet_rtp_h

/* RTP Upper Layer Format Numbers */

#define	IPPROTO_RTP	257
#define	IPPROTO_RTCP	258

#define RTP_VERSION		2

#define RTP_PT_BVC              22      /* Berkeley video codec */
#define RTP_PT_RGB8             23      /* 8-bit dithered RGB */
#define RTP_PT_HDCC             24      /* SGI proprietary */
#define RTP_PT_CELLB            25      /* Sun CellB */
#define RTP_PT_JPEG             26      /* JPEG */
#define RTP_PT_CUSEEME          27      /* Cornell CU-SeeMe */
#define RTP_PT_NV               28      /* Xerox PARC nv */ 
#define RTP_PT_PICW             29      /* BB&N PictureWindow */ 
#define RTP_PT_CPV              30      /* Concept/Bolter/Viewpoint codec */
#define RTP_PT_H261             31      /* ITU H.261 */ 
#define RTP_PT_MPEG             32      /* MPEG-I & MPEG-II */ 
#define RTP_PT_MP2T             33      /* MPEG-II either audio or video */
#define RTP_PT_H263		34
 
/* backward compat hack for decoding RTPv1 ivs streams */
#define RTP_PT_H261_COMPAT 127
 
/* RTP standard content encodings for audio */

#define RTP_PT_PCMU             0
#define RTP_PT_CELP             1
#define RTP_PT_GSM              3
#define RTP_PT_G723		4
#define RTP_PT_DVI              5
#define RTP_PT_LPC              7
#define RTP_PT_PCMA		8
#define RTP_PT_G722		9
#define RTP_PT_G728		15
#define RTP_PT_G729		18

#define RTP_TIME_OFFSET		2208988800UL
 
#define RTP_M			0x0080
#define RTP_P			0x2000
#define RTP_X			0x1000

#define RTCP_PT_SR		200  
#define RTCP_PT_RR		201      
#define RTCP_PT_SDES		202
#define RTCP_PT_BYE		203      
#define RTCP_PT_APP		204      

#define RTCP_SDES_MIN		1
#define RTCP_SDES_MAX		7

#define RTCP_SDES_CNAME		1
#define RTCP_SDES_NAME		2
#define RTCP_SDES_EMAIL		3
#define RTCP_SDES_PHONE		4
#define RTCP_SDES_LOC		5
#define RTCP_SDES_TOOL		6
#define RTCP_SDES_NOTE		7

/* RTP Header as defined in H.225 */

struct rtphdr {
#ifdef _LITTLE_ENDIAN
  unsigned char rh_cc:4,    /* CSRC count */
                 rh_x:1,    /* extension */
                 rh_p:1,    /* padding */
                rh_ver:2;   /* version */
#else
  unsigned char rh_ver:2,    /* version */
                  rh_p:1,    /* padding */
                  rh_x:1,    /* extension */
                 rh_cc:4;   /* CSRC count */
#endif
#ifdef _LITTLE_ENDIAN
  unsigned char   rh_pt:7,   /* payload type */
                rh_mark:1;   /* marker */
#else
  unsigned char rh_mark:1,   /* marker */
                  rh_pt:7;   /* payload type */
#endif
   unsigned short rh_seq;
   unsigned int   rh_time;
   unsigned int   rh_ssrc;
};


struct rtcphdr {
#ifdef _LITTLE_ENDIAN
  unsigned char  rh_rc:5,    /* report count */
                  rh_p:1,    /* padding */
                rh_ver:2;    /* version */
#else
  unsigned char rh_ver:2,    /* version */
                  rh_p:1,    /* padding */
                 rh_rc:5;    /* report count */
#endif
   unsigned char  rh_pt;     /* payload type */
   unsigned short rh_len;
   unsigned int   rh_ssrc;
};


struct rtpexthdr {
   unsigned short profile, length;
};

typedef struct {
   unsigned int high;
   unsigned int low;
} ntp64;
 
/*
 * Sender report.
 */

struct rtcp_sr {
   ntp64 sr_ntp;           /* 64-bit ntp timestamp */
   unsigned int sr_ts;        /* reference media timestamp */
   unsigned int sr_np;        /* no. packets sent */
   unsigned int sr_nb;        /* no. bytes sent */
};
 
/*
 * Receiver report.
 * Time stamps are middle 32-bits of ntp timestamp.
 */
struct rtcp_rr {
   unsigned int rr_srcid;     /* sender being reported */
   unsigned int rr_loss;      /* loss stats (8:fraction, 24:cumulative)*/
   unsigned int rr_ehsr;      /* ext. highest seqno received */
   unsigned int rr_dv;        /* jitter (delay variance) */
   unsigned int rr_lsr;       /* orig. ts from last rr from this src  */
   unsigned int rr_dlsr;      /* time from recpt of last rr to xmit time */
};

#endif /*!_netinet_rtp_h*/