annotate rm.h @ 5798:2af44abfbfe8 libavformat

RTSP: Resolve and use the actual IP address of the peer we're connected to, instead of using the original host name, since the RTP (and UDP) protocols may choose another IP address if the host name resolves into several different addresses.
author mstorsjo
date Tue, 09 Mar 2010 14:59:40 +0000
parents 17ad184d14be
children f8093c5208f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 /*
1415
3b00fb8ef8e4 replace coder/decoder file description in libavformat by muxer/demuxer
aurel
parents: 1358
diff changeset
2 * "Real" compatible muxer and demuxer.
4251
77e0c7511d41 cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 4136
diff changeset
3 * Copyright (c) 2000, 2001 Fabrice Bellard
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
4 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1350
diff changeset
5 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1350
diff changeset
6 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1350
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
9 * 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: 1350
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
11 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1350
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 * Lesser General Public License for more details.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
16 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
17 * 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: 1350
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
896
edbe5c3717f9 Update licensing information: The FSF changed postal address.
diego
parents: 888
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
20 */
2103
95139f2053a9 split rm muxer and demuxer in their own files
aurel
parents: 2024
diff changeset
21
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
22 #ifndef AVFORMAT_RM_H
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
23 #define AVFORMAT_RM_H
2103
95139f2053a9 split rm muxer and demuxer in their own files
aurel
parents: 2024
diff changeset
24
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
25 #include "avformat.h"
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26
5161
17ad184d14be ff_rm_metadata is const.
reimar
parents: 5119
diff changeset
27 extern const char * const ff_rm_metadata[4];
4522
aaf07b2acb3c use new metadata API in rm (de)muxer
aurel
parents: 4251
diff changeset
28
4132
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
29 typedef struct RMStream RMStream;
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
30
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
31 RMStream *ff_rm_alloc_rmstream (void);
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
32 void ff_rm_free_rmstream (RMStream *rms);
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
33
3902
5f9bec099c69 Add dynamic payload handlers to rdt.c. These follow the same API as the ones
rbultje
parents: 3873
diff changeset
34 /*< input format for Realmedia-style RTSP streams */
5f9bec099c69 Add dynamic payload handlers to rdt.c. These follow the same API as the ones
rbultje
parents: 3873
diff changeset
35 extern AVInputFormat rdt_demuxer;
5f9bec099c69 Add dynamic payload handlers to rdt.c. These follow the same API as the ones
rbultje
parents: 3873
diff changeset
36
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
37 /**
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
38 * Read the MDPR chunk, which contains stream-specific codec initialization
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
39 * parameters.
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
40 *
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
41 * @param s context containing RMContext and ByteIOContext for stream reading
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
42 * @param pb context to read the data from
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
43 * @param st the stream that the MDPR chunk belongs to and where to store the
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
44 * parameters read from the chunk into
4133
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
45 * @param rst real-specific stream information
3873
9a589ae59655 Use chunk-size in function calling mdpr_read_codecdata() rather than in the
rbultje
parents: 3852
diff changeset
46 * @param codec_data_size size of the MDPR chunk
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
47 * @return 0 on success, errno codes on error
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
48 */
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
49 int ff_rm_read_mdpr_codecdata (AVFormatContext *s, ByteIOContext *pb,
4133
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
50 AVStream *st, RMStream *rst,
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
51 int codec_data_size);
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
52
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
53 /**
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
54 * Parse one rm-stream packet from the input bytestream.
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
55 *
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
56 * @param s context containing RMContext and ByteIOContext for stream reading
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
57 * @param pb context to read the data from
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
58 * @param st stream to which the packet to be read belongs
4133
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
59 * @param rst Real-specific stream information
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
60 * @param len packet length to read from the input
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
61 * @param pkt packet location to store the parsed packet data
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
62 * @param seq pointer to an integer containing the sequence number, may be
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
63 * updated
5119
bb9cdd9ad9de Don't use a pointer-to-flags/timestamp in ff_rm_parse_packet(); the function
rbultje
parents: 5006
diff changeset
64 * @param flags the packet flags
bb9cdd9ad9de Don't use a pointer-to-flags/timestamp in ff_rm_parse_packet(); the function
rbultje
parents: 5006
diff changeset
65 * @param ts timestamp of the current packet
5006
686de8748c36 Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 4734
diff changeset
66 * @return <0 on error, 0 if a packet was placed in the pkt pointer. A
686de8748c36 Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 4734
diff changeset
67 * value >0 means that no data was placed in pkt, but that cached
4734
dfcf66d4a613 Remove packet returning in ff_rm_parse_packet() if we're using the packet
rbultje
parents: 4522
diff changeset
68 * data is available by calling ff_rm_retrieve_cache().
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
69 */
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
70 int ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb,
4133
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
71 AVStream *st, RMStream *rst, int len,
5119
bb9cdd9ad9de Don't use a pointer-to-flags/timestamp in ff_rm_parse_packet(); the function
rbultje
parents: 5006
diff changeset
72 AVPacket *pkt, int *seq, int flags, int64_t ts);
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
73
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
74 /**
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
75 * Retrieve one cached packet from the rm-context. The real container can
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
76 * store several packets (as interpreted by the codec) in a single container
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
77 * packet, which means the demuxer holds some back when the first container
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
78 * packet is parsed and returned. The result is that rm->audio_pkt_cnt is
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
79 * a positive number, the amount of cached packets. Using this function, each
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
80 * of those packets can be retrieved sequentially.
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
81 *
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
82 * @param s context containing RMContext and ByteIOContext for stream reading
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
83 * @param pb context to read the data from
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
84 * @param st stream that this packet belongs to
4133
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
85 * @param rst Real-specific stream information
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
86 * @param pkt location to store the packet data
4135
fd0fc1e26d82 Add audio_pkt_cnt return value to ff_rm_retrieve_cache(). See discussion in
rbultje
parents: 4133
diff changeset
87 * @returns the number of samples left for subsequent calls to this same
fd0fc1e26d82 Add audio_pkt_cnt return value to ff_rm_retrieve_cache(). See discussion in
rbultje
parents: 4133
diff changeset
88 * function, or 0 if all samples have been retrieved.
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
89 */
4135
fd0fc1e26d82 Add audio_pkt_cnt return value to ff_rm_retrieve_cache(). See discussion in
rbultje
parents: 4133
diff changeset
90 int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
4136
e29f278b7831 Reindent after r16368.
rbultje
parents: 4135
diff changeset
91 AVStream *st, RMStream *rst, AVPacket *pkt);
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
92
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
93 #endif /* AVFORMAT_RM_H */