Mercurial > libavformat.hg
annotate rtpdec.h @ 5966:9a86b49201bb libavformat
Revert svn rev 21857, readd first_rtcp_ntp_time in RTPDemuxContext
In order to sync RTP streams that get their initial RTCP timestamp at
different times, propagate the NTP timestamp of the first RTCP packet
to all other streams.
This makes the timestamps of returned packets start at (near) zero instead
of at any random offset.
author | mstorsjo |
---|---|
date | Tue, 20 Apr 2010 07:34:28 +0000 |
parents | 2d2273c246ce |
children | c5a3e1951fc6 |
rev | line source |
---|---|
0 | 1 /* |
4388 | 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 | 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 | 9 * modify it under the terms of the GNU Lesser General Public |
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 | 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 | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * Lesser General Public License for more details. | |
17 * | |
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 | 21 */ |
4388 | 22 #ifndef AVFORMAT_RTPDEC_H |
23 #define AVFORMAT_RTPDEC_H | |
0 | 24 |
3286 | 25 #include "libavcodec/avcodec.h" |
2171 | 26 #include "avformat.h" |
4388 | 27 #include "rtp.h" |
2171 | 28 |
1868
b92a67b0b4bd
Doxygenize the unaltered comments for the rtp_payload_data_s struct.
takis
parents:
1867
diff
changeset
|
29 /** 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
|
30 typedef struct rtp_payload_data |
774 | 31 { |
32 int sizelength; | |
33 int indexlength; | |
34 int indexdeltalength; | |
35 int profile_level_id; | |
36 int streamtype; | |
37 int objecttype; | |
38 char *mode; | |
39 | |
1869
48b1d0b70e09
Doxygenize the unaltered comments for the AUHeaders structure.
takis
parents:
1868
diff
changeset
|
40 /** mpeg 4 AU headers */ |
774 | 41 struct AUHeaders { |
42 int size; | |
43 int index; | |
44 int cts_flag; | |
45 int cts; | |
46 int dts_flag; | |
47 int dts; | |
48 int rap_flag; | |
49 int streamstate; | |
50 } *au_headers; | |
5936 | 51 int au_headers_allocated; |
774 | 52 int nb_au_headers; |
53 int au_headers_length_bytes; | |
54 int cur_au_index; | |
4101
af2c0aef892b
Rename rtp_payload_data_t to avoid clashes with the POSIX namespace
lucabe
parents:
4100
diff
changeset
|
55 } RTPPayloadData; |
774 | 56 |
4100 | 57 typedef struct PayloadContext PayloadContext; |
58 typedef struct RTPDynamicProtocolHandler_s RTPDynamicProtocolHandler; | |
59 | |
60 #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
|
61 #define RTP_MAX_PACKET_LENGTH 1500 /* XXX: suppress this define */ |
4100 | 62 |
63 typedef struct RTPDemuxContext RTPDemuxContext; | |
4101
af2c0aef892b
Rename rtp_payload_data_t to avoid clashes with the POSIX namespace
lucabe
parents:
4100
diff
changeset
|
64 RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data); |
4100 | 65 void rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, |
66 RTPDynamicProtocolHandler *handler); | |
67 int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, | |
68 const uint8_t *buf, int len); | |
69 void rtp_parse_close(RTPDemuxContext *s); | |
5964 | 70 #if (LIBAVFORMAT_VERSION_MAJOR <= 53) |
71 int rtp_get_local_port(URLContext *h); | |
72 #endif | |
73 int rtp_get_local_rtp_port(URLContext *h); | |
74 int rtp_get_local_rtcp_port(URLContext *h); | |
4100 | 75 |
76 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
|
77 #if (LIBAVFORMAT_VERSION_MAJOR <= 52) |
4100 | 78 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
|
79 #endif |
4100 | 80 |
81 /** | |
5665
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
82 * 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
|
83 * 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
|
84 * packets. |
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
85 * |
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
86 * 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
|
87 * 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
|
88 * |
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
89 * 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
|
90 * RTP packets otherwise. |
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
91 */ |
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
92 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
|
93 |
93b0d64bf0c9
When using RTP-over-UDP, send dummy packets during stream setup, similar to
rbultje
parents:
4640
diff
changeset
|
94 /** |
4100 | 95 * some rtp servers assume client is dead if they don't hear from them... |
96 * so we send a Receiver Report to the provided ByteIO context | |
97 * (we don't have access to the rtcp handle from here) | |
98 */ | |
99 int rtp_check_and_send_back_rr(RTPDemuxContext *s, int count); | |
100 | |
4291
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
101 // 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
|
102 typedef struct { |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
103 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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 int received; ///< packets received |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
109 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
|
110 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
|
111 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
|
112 uint32_t jitter; ///< estimated jitter. |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
113 } RTPStatistics; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
114 |
4589
df35708c640a
Don't (ab)use PKT_FLAG_* in RTP code, since the two have virtually nothing
rbultje
parents:
4518
diff
changeset
|
115 #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
|
116 #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
|
117 /** |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
118 * 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
|
119 * |
4387
5c42816e12c6
Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents:
4380
diff
changeset
|
120 * @param ctx RTSP demuxer context |
4291
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
121 * @param s stream context |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
122 * @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
|
123 * @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
|
124 * @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
|
125 * @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
|
126 * @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
|
127 * @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
|
128 */ |
4387
5c42816e12c6
Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents:
4380
diff
changeset
|
129 typedef int (*DynamicPayloadPacketHandlerProc) (AVFormatContext *ctx, |
5c42816e12c6
Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
rbultje
parents:
4380
diff
changeset
|
130 PayloadContext *s, |
4291
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
131 AVStream *st, |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
132 AVPacket * pkt, |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
133 uint32_t *timestamp, |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
134 const uint8_t * buf, |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
135 int len, int flags); |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
136 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
137 struct RTPDynamicProtocolHandler_s { |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
138 // fields from AVRtpDynamicPayloadType_s |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
139 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
|
140 enum AVMediaType codec_type; |
4291
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
141 enum CodecID codec_id; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
142 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
143 // may be null |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
144 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
|
145 int st_index, |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
146 PayloadContext *priv_data, |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
147 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
|
148 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
|
149 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
|
150 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
|
151 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
152 struct RTPDynamicProtocolHandler_s *next; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
153 }; |
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 // 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
|
156 struct RTPDemuxContext { |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
157 AVFormatContext *ic; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
158 AVStream *st; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
159 int payload_type; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
160 uint32_t ssrc; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
161 uint16_t seq; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
162 uint32_t timestamp; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
163 uint32_t base_timestamp; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
164 uint32_t cur_timestamp; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
165 int max_payload_size; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
166 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
|
167 int read_buf_index; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
168 int read_buf_size; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
169 /* used to send back RTCP RR */ |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
170 URLContext *rtp_ctx; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
171 char hostname[256]; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
172 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
173 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
|
174 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
175 /* rtcp sender statistics receive */ |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
176 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
|
177 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
|
178 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
|
179 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
180 /* rtcp sender statistics */ |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
181 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
|
182 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
|
183 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
|
184 int first_packet; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
185 /* buffer for output */ |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
186 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
|
187 uint8_t *buf_ptr; |
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 /* special infos for au headers parsing */ |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
190 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
|
191 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
192 /* dynamic payload stuff */ |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
193 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
|
194 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
|
195 int max_frames_per_packet; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
196 }; |
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 extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler; |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
199 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
|
200 |
5697 | 201 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
|
202 |
f49e5d92ab26
Merge rtp_internal.h in rtp.h, and remove rtp_internal.h
lucabe
parents:
4251
diff
changeset
|
203 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
|
204 |
4388 | 205 #endif /* AVFORMAT_RTPDEC_H */ |