annotate rtpdec.h @ 6187:c4c35a9d4ab5 libavformat

rtpdec: Add generic function for iterating over FMTP configuration lines This will be used for cleaning up code that is common among RTP depacketizers. Patch by Josh Allmann, joshua dot allmann at gmail
author mstorsjo
date Mon, 28 Jun 2010 11:24:12 +0000
parents 83978c1b9739
children e87b379e8816
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 /*
4388
80f21f72d7d6 Split rtp.h in rtp.h, rtpdec.h, and rtpenc.h
lucabe
parents: 4387
diff changeset
2 * RTP demuxer 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 */
4388
80f21f72d7d6 Split rtp.h in rtp.h, rtpdec.h, and rtpenc.h
lucabe
parents: 4387
diff changeset
22 #ifndef AVFORMAT_RTPDEC_H
80f21f72d7d6 Split rtp.h in rtp.h, rtpdec.h, and rtpenc.h
lucabe
parents: 4387
diff changeset
23 #define AVFORMAT_RTPDEC_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"
4388
80f21f72d7d6 Split rtp.h in rtp.h, rtpdec.h, and rtpenc.h
lucabe
parents: 4387
diff changeset
27 #include "rtp.h"
2171
a6d6b2b19341 include all prerequisites in header files
mru
parents: 1869
diff changeset
28
6186
83978c1b9739 rtpdec: Move space_chars from avformat/internal to rtpdec
mstorsjo
parents: 6179
diff changeset
29 #define SPACE_CHARS " \t\r\n"
83978c1b9739 rtpdec: Move space_chars from avformat/internal to rtpdec
mstorsjo
parents: 6179
diff changeset
30
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
31 typedef struct PayloadContext PayloadContext;
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
32 typedef struct RTPDynamicProtocolHandler_s RTPDynamicProtocolHandler;
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
33
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
34 #define RTP_MIN_PACKET_LENGTH 12
4392
ef5d6bb2c41b Move RTP_MAX_PACKET_LENGTH to rtpdec.h: it is not used in the muxer anymore
lucabe
parents: 4388
diff changeset
35 #define RTP_MAX_PACKET_LENGTH 1500 /* XXX: suppress this define */
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
36
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
37 typedef struct RTPDemuxContext RTPDemuxContext;
6179
736165b749f8 RTSP, rtpdec: Move RTPPayloadData into rtpdec_mpeg4 and remove all references to rtp_payload_data in rtpdec and rtsp
mstorsjo
parents: 5967
diff changeset
38 RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type);
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
39 void rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
40 RTPDynamicProtocolHandler *handler);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
41 int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
42 const uint8_t *buf, int len);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
43 void rtp_parse_close(RTPDemuxContext *s);
5964
2d2273c246ce Make rtp protocol obey rfc3550
lu_zero
parents: 5936
diff changeset
44 #if (LIBAVFORMAT_VERSION_MAJOR <= 53)
2d2273c246ce Make rtp protocol obey rfc3550
lu_zero
parents: 5936
diff changeset
45 int rtp_get_local_port(URLContext *h);
2d2273c246ce Make rtp protocol obey rfc3550
lu_zero
parents: 5936
diff changeset
46 #endif
2d2273c246ce Make rtp protocol obey rfc3550
lu_zero
parents: 5936
diff changeset
47 int rtp_get_local_rtp_port(URLContext *h);
2d2273c246ce Make rtp protocol obey rfc3550
lu_zero
parents: 5936
diff changeset
48 int rtp_get_local_rtcp_port(URLContext *h);
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
49
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
50 int rtp_set_remote_url(URLContext *h, const char *uri);
4640
b34d9614b887 Add url_get_file_handle(), which is used to get the file descriptor
rbultje
parents: 4590
diff changeset
51 #if (LIBAVFORMAT_VERSION_MAJOR <= 52)
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
52 void rtp_get_file_handles(URLContext *h, int *prtp_fd, int *prtcp_fd);
4640
b34d9614b887 Add url_get_file_handle(), which is used to get the file descriptor
rbultje
parents: 4590
diff changeset
53 #endif
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
54
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
55 /**
5665
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
56 * Send a dummy packet on both port pairs to set up the connection
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
57 * state in potential NAT routers, so that we're able to receive
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
58 * packets.
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
59 *
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
60 * Note, this only works if the NAT router doesn't remap ports. This
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
61 * isn't a standardized procedure, but it works in many cases in practice.
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
62 *
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
63 * The same routine is used with RDT too, even if RDT doesn't use normal
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
64 * RTP packets otherwise.
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
65 */
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
66 void rtp_send_punch_packets(URLContext* rtp_handle);
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
67
93b0d64bf0c9 When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents: 4640
diff changeset
68 /**
4100
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
69 * some rtp servers assume client is dead if they don't hear from them...
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
70 * so we send a Receiver Report to the provided ByteIO context
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
71 * (we don't have access to the rtcp handle from here)
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
72 */
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
73 int rtp_check_and_send_back_rr(RTPDemuxContext *s, int count);
2e81931d3995 Remove useless typedef
lucabe
parents: 4099
diff changeset
74
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
75 // 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
76 typedef struct {
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
77 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
78 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
79 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
80 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
81 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
82 int received; ///< packets received
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
83 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
84 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
85 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
86 uint32_t jitter; ///< estimated jitter.
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
87 } RTPStatistics;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
88
4589
df35708c640a Don't (ab)use PKT_FLAG_* in RTP code, since the two have virtually nothing
rbultje
parents: 4518
diff changeset
89 #define RTP_FLAG_KEY 0x1 ///< RTP packet contains a keyframe
4590
85c7d517d556 Implement marker bit, which is used for several RTP payloads currently
rbultje
parents: 4589
diff changeset
90 #define RTP_FLAG_MARKER 0x2 ///< RTP marker bit was set for this packet
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
91 /**
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
92 * 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
93 *
4387
5c42816e12c6 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents: 4380
diff changeset
94 * @param ctx RTSP demuxer context
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
95 * @param s stream context
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
96 * @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
97 * @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
98 * @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
99 * @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
100 * @param len length of buf
4589
df35708c640a Don't (ab)use PKT_FLAG_* in RTP code, since the two have virtually nothing
rbultje
parents: 4518
diff changeset
101 * @param flags flags from the RTP packet header (RTP_FLAG_*)
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
102 */
4387
5c42816e12c6 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents: 4380
diff changeset
103 typedef int (*DynamicPayloadPacketHandlerProc) (AVFormatContext *ctx,
5c42816e12c6 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents: 4380
diff changeset
104 PayloadContext *s,
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
105 AVStream *st,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
106 AVPacket * pkt,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
107 uint32_t *timestamp,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
108 const uint8_t * buf,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
109 int len, int flags);
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
110
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
111 struct RTPDynamicProtocolHandler_s {
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
112 // fields from AVRtpDynamicPayloadType_s
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
113 const char enc_name[50]; /* XXX: still why 50 ? ;-) */
5910
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 5697
diff changeset
114 enum AVMediaType codec_type;
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
115 enum CodecID codec_id;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
116
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
117 // may be null
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
118 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
119 int st_index,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
120 PayloadContext *priv_data,
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
121 const char *line); ///< Parse the a= line from the sdp field
5935
bd378c64a9f5 Add void to a function prototype that takes no arguments. Fixes a potential
rbultje
parents: 5910
diff changeset
122 PayloadContext *(*open) (void); ///< allocate any data needed by the rtp parsing for this dynamic data.
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
123 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
124 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
125
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
126 struct RTPDynamicProtocolHandler_s *next;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
127 };
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
128
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
129 // 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
130 struct RTPDemuxContext {
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
131 AVFormatContext *ic;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
132 AVStream *st;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
133 int payload_type;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
134 uint32_t ssrc;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
135 uint16_t seq;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
136 uint32_t timestamp;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
137 uint32_t base_timestamp;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
138 uint32_t cur_timestamp;
5967
c5a3e1951fc6 Reset RTCP timestamps after seeking, add range start offset to the packets timestamps
mstorsjo
parents: 5966
diff changeset
139 int64_t range_start_offset;
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
140 int max_payload_size;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
141 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
142 int read_buf_index;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
143 int read_buf_size;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
144 /* used to send back RTCP RR */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
145 URLContext *rtp_ctx;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
146 char hostname[256];
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
147
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
148 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
149
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
150 /* rtcp sender statistics receive */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
151 int64_t last_rtcp_ntp_time; // TODO: move into statistics
5966
9a86b49201bb Revert svn rev 21857, readd first_rtcp_ntp_time in RTPDemuxContext
mstorsjo
parents: 5964
diff changeset
152 int64_t first_rtcp_ntp_time; // TODO: move into statistics
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
153 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
154
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
155 /* rtcp sender statistics */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
156 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
157 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
158 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
159 int first_packet;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
160 /* buffer for output */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
161 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
162 uint8_t *buf_ptr;
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 /* dynamic payload stuff */
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
165 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
166 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
167 int max_frames_per_packet;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
168 };
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
169
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
170 extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler;
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
171 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
172
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5666
diff changeset
173 int ff_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.
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
174
6187
c4c35a9d4ab5 rtpdec: Add generic function for iterating over FMTP configuration lines
mstorsjo
parents: 6186
diff changeset
175 int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
c4c35a9d4ab5 rtpdec: Add generic function for iterating over FMTP configuration lines
mstorsjo
parents: 6186
diff changeset
176 int (*parse_fmtp)(AVStream *stream,
c4c35a9d4ab5 rtpdec: Add generic function for iterating over FMTP configuration lines
mstorsjo
parents: 6186
diff changeset
177 PayloadContext *data,
c4c35a9d4ab5 rtpdec: Add generic function for iterating over FMTP configuration lines
mstorsjo
parents: 6186
diff changeset
178 char *attr, char *value));
c4c35a9d4ab5 rtpdec: Add generic function for iterating over FMTP configuration lines
mstorsjo
parents: 6186
diff changeset
179
4291
f49e5d92ab26 Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents: 4251
diff changeset
180 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
181
4388
80f21f72d7d6 Split rtp.h in rtp.h, rtpdec.h, and rtpenc.h
lucabe
parents: 4387
diff changeset
182 #endif /* AVFORMAT_RTPDEC_H */