annotate rtp.h @ 4387:5c42816e12c6 libavformat

Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument to the parse_packet() function pointer in RTPDynamicProtocolHandlers. This allows these functions to peek back and retrieve values from the demuxer's context (or RTSPState). The ASF/RTP payload parser will use this to be able to parse SDP values (which occur even before the payload ID is given), store them in the RTSPState and then retrieve them while parsing payload data. See "[PATCH] RTSP-MS 13/15: add RTSP demuxer AVFormatContext to parse_packet() function pointer (was: transport context)" mailinglist thread.
author rbultje
date Fri, 06 Feb 2009 01:37:19 +0000
parents 1b695f013cd3
children 80f21f72d7d6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 /*
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
2 * RTP definitions
4251
77e0c7511d41 cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 4101
diff changeset
3 * Copyright (c) 2002 Fabrice Bellard
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
4 * Copyright (c) 2006 Ryan Martell <rdm4@martellventures.com>
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
5 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1167
diff changeset
6 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1167
diff changeset
7 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1167
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1167
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
12 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1167
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
16 * Lesser General Public License for more details.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
17 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1167
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
896
edbe5c3717f9 Update licensing information: The FSF changed postal address.
diego
parents: 885
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
21 */
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
22 #ifndef AVFORMAT_RTP_H
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
23 #define AVFORMAT_RTP_H
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
24
3286
6f61c3b36632 Use full path for #includes from another directory.
diego
parents: 2901
diff changeset
25 #include "libavcodec/avcodec.h"
2171
a6d6b2b19341 include all prerequisites in header files
mru
parents: 1869
diff changeset
26 #include "avformat.h"
a6d6b2b19341 include all prerequisites in header files
mru
parents: 1869
diff changeset
27
1868
b92a67b0b4bd Doxygenize the unaltered comments for the rtp_payload_data_s struct.
takis
parents: 1867
diff changeset
28 /** Structure listing useful vars to parse RTP packet payload*/
4101
af2c0aef892b Rename rtp_payload_data_t to avoid clashes with the POSIX namespace
lucabe
parents: 4100
diff changeset
29 typedef struct rtp_payload_data
774
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
30 {
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
31 int sizelength;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
32 int indexlength;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
33 int indexdeltalength;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
34 int profile_level_id;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
35 int streamtype;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
36 int objecttype;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
37 char *mode;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
38
1869
48b1d0b70e09 Doxygenize the unaltered comments for the AUHeaders structure.
takis
parents: 1868
diff changeset
39 /** mpeg 4 AU headers */
774
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
40 struct AUHeaders {
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
41 int size;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
42 int index;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
43 int cts_flag;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
44 int cts;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
45 int dts_flag;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
46 int dts;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
47 int rap_flag;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
48 int streamstate;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
49 } *au_headers;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
50 int nb_au_headers;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
51 int au_headers_length_bytes;
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
52 int cur_au_index;
4101
af2c0aef892b Rename rtp_payload_data_t to avoid clashes with the POSIX namespace
lucabe
parents: 4100
diff changeset
53 } RTPPayloadData;
774
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 294
diff changeset
54
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
55 typedef struct PayloadContext PayloadContext;
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
56 typedef struct RTPDynamicProtocolHandler_s RTPDynamicProtocolHandler;
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
57
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
58 #define RTP_MIN_PACKET_LENGTH 12
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
59 #define RTP_MAX_PACKET_LENGTH 1500 /* XXX: suppress this define */
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
60
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
61 int rtp_get_codec_info(AVCodecContext *codec, int payload_type);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
62
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
63 /** return < 0 if unknown payload type */
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
64 int rtp_get_payload_type(AVCodecContext *codec);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
65
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
66 typedef struct RTPDemuxContext RTPDemuxContext;
4101
af2c0aef892b Rename rtp_payload_data_t to avoid clashes with the POSIX namespace
lucabe
parents: 4100
diff changeset
67 RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data);
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
68 void rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
69 RTPDynamicProtocolHandler *handler);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
70 int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
71 const uint8_t *buf, int len);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
72 void rtp_parse_close(RTPDemuxContext *s);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
73
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
74 int rtp_get_local_port(URLContext *h);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
75 int rtp_set_remote_url(URLContext *h, const char *uri);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
76 void rtp_get_file_handles(URLContext *h, int *prtp_fd, int *prtcp_fd);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
77
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
78 /**
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
79 * some rtp servers assume client is dead if they don't hear from them...
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
80 * so we send a Receiver Report to the provided ByteIO context
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
81 * (we don't have access to the rtcp handle from here)
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
82 */
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
83 int rtp_check_and_send_back_rr(RTPDemuxContext *s, int count);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
84
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
85 #define RTP_PT_PRIVATE 96
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
86 #define RTP_VERSION 2
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
87 #define RTP_MAX_SDES 256 /**< maximum text length for SDES */
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
88
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
89 /* RTCP paquets use 0.5 % of the bandwidth */
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
90 #define RTCP_TX_RATIO_NUM 5
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
91 #define RTCP_TX_RATIO_DEN 1000
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
92
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
93 // these statistics are used for rtcp receiver reports...
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
94 typedef struct {
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
95 uint16_t max_seq; ///< highest sequence number seen
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
96 uint32_t cycles; ///< shifted count of sequence number cycles
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
97 uint32_t base_seq; ///< base sequence number
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
98 uint32_t bad_seq; ///< last bad sequence number + 1
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
99 int probation; ///< sequence packets till source is valid
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
100 int received; ///< packets received
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
101 int expected_prior; ///< packets expected in last interval
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
102 int received_prior; ///< packets received in last interval
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
103 uint32_t transit; ///< relative transit time for previous packet
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
104 uint32_t jitter; ///< estimated jitter.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
105 } RTPStatistics;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
106
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
107 /**
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
108 * Packet parsing for "private" payloads in the RTP specs.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
109 *
4387
5c42816e12c6 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents: 4380
diff changeset
110 * @param ctx RTSP demuxer context
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
111 * @param s stream context
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
112 * @param st stream that this packet belongs to
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
113 * @param pkt packet in which to write the parsed data
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
114 * @param timestamp pointer in which to write the timestamp of this RTP packet
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
115 * @param buf pointer to raw RTP packet data
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
116 * @param len length of buf
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
117 * @param flags flags from the RTP packet header (PKT_FLAG_*)
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
118 */
4387
5c42816e12c6 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents: 4380
diff changeset
119 typedef int (*DynamicPayloadPacketHandlerProc) (AVFormatContext *ctx,
5c42816e12c6 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents: 4380
diff changeset
120 PayloadContext *s,
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
121 AVStream *st,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
122 AVPacket * pkt,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
123 uint32_t *timestamp,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
124 const uint8_t * buf,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
125 int len, int flags);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
126
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
127 struct RTPDynamicProtocolHandler_s {
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
128 // fields from AVRtpDynamicPayloadType_s
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
129 const char enc_name[50]; /* XXX: still why 50 ? ;-) */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
130 enum CodecType codec_type;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
131 enum CodecID codec_id;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
132
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
133 // may be null
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
134 int (*parse_sdp_a_line) (AVFormatContext *s,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
135 int st_index,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
136 PayloadContext *priv_data,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
137 const char *line); ///< Parse the a= line from the sdp field
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
138 PayloadContext *(*open) (); ///< allocate any data needed by the rtp parsing for this dynamic data.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
139 void (*close)(PayloadContext *protocol_data); ///< free any data needed by the rtp parsing for this dynamic data.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
140 DynamicPayloadPacketHandlerProc parse_packet; ///< parse handler for this dynamic packet.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
141
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
142 struct RTPDynamicProtocolHandler_s *next;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
143 };
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
144
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
145 // moved out of rtp.c, because the h264 decoder needs to know about this structure..
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
146 struct RTPDemuxContext {
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
147 AVFormatContext *ic;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
148 AVStream *st;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
149 int payload_type;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
150 uint32_t ssrc;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
151 uint16_t seq;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
152 uint32_t timestamp;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
153 uint32_t base_timestamp;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
154 uint32_t cur_timestamp;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
155 int max_payload_size;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
156 struct MpegTSContext *ts; /* only used for MP2T payloads */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
157 int read_buf_index;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
158 int read_buf_size;
4380
1b695f013cd3 Introduce a new num_frames field in RTPDemuxContext so that rtp_aac.c
lucabe
parents: 4291
diff changeset
159 int num_frames;
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
160 /* used to send back RTCP RR */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
161 URLContext *rtp_ctx;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
162 char hostname[256];
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
163
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
164 RTPStatistics statistics; ///< Statistics for this stream (used by RTCP receiver reports)
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
165
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
166 /* rtcp sender statistics receive */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
167 int64_t last_rtcp_ntp_time; // TODO: move into statistics
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
168 int64_t first_rtcp_ntp_time; // TODO: move into statistics
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
169 uint32_t last_rtcp_timestamp; // TODO: move into statistics
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
170
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
171 /* rtcp sender statistics */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
172 unsigned int packet_count; // TODO: move into statistics (outgoing)
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
173 unsigned int octet_count; // TODO: move into statistics (outgoing)
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
174 unsigned int last_octet_count; // TODO: move into statistics (outgoing)
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
175 int first_packet;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
176 /* buffer for output */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
177 uint8_t buf[RTP_MAX_PACKET_LENGTH];
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
178 uint8_t *buf_ptr;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
179
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
180 /* special infos for au headers parsing */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
181 RTPPayloadData *rtp_payload_data; // TODO: Move into dynamic payload handlers
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
182
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
183 /* dynamic payload stuff */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
184 DynamicPayloadPacketHandlerProc parse_packet; ///< This is also copied from the dynamic protocol handler structure
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
185 PayloadContext *dynamic_protocol_context; ///< This is a copy from the values setup from the sdp parsing, in rtsp.c don't free me.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
186 int max_frames_per_packet;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
187 };
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
188
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
189 extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
190 void ff_register_dynamic_payload_handler(RTPDynamicProtocolHandler *handler);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
191
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
192 int rtsp_next_attr_and_value(const char **p, char *attr, int attr_size, char *value, int value_size); ///< from rtsp.c, but used by rtp dynamic protocol handlers.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
193
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
194 void ff_rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
195 const char *ff_rtp_enc_name(int payload_type);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
196 enum CodecID ff_rtp_codec_id(const char *buf, enum CodecType codec_type);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
197
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
198 void av_register_rtp_dynamic_payload_handlers(void);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
199
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
200 #endif /* AVFORMAT_RTP_H */