annotate rm.h @ 6118:6780dc315f36 libavformat

Remove support for pre-Haiku, non-POSIX, non-C99 BeOS variants. BeOS support has been broken for many years and the "maintainer" of the port has not reacted to countless requests to get the port fixed. approved by Mans
author diego
date Thu, 10 Jun 2010 16:51:14 +0000
parents 87e28edf7a98
children
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"
6064
87e28edf7a98 Move rm_codec_tags to rm.c so muxer/demuxer can share it.
rbultje
parents: 5909
diff changeset
26 #include "internal.h"
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
27
5161
17ad184d14be ff_rm_metadata is const.
reimar
parents: 5119
diff changeset
28 extern const char * const ff_rm_metadata[4];
5830
f8093c5208f6 export sipr_subpk_size for future use by matroska demuxer
aurel
parents: 5161
diff changeset
29 extern const unsigned char ff_sipr_subpk_size[4];
6064
87e28edf7a98 Move rm_codec_tags to rm.c so muxer/demuxer can share it.
rbultje
parents: 5909
diff changeset
30 extern const AVCodecTag ff_rm_codec_tags[];
4522
aaf07b2acb3c use new metadata API in rm (de)muxer
aurel
parents: 4251
diff changeset
31
4132
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
32 typedef struct RMStream RMStream;
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
33
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
34 RMStream *ff_rm_alloc_rmstream (void);
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
35 void ff_rm_free_rmstream (RMStream *rms);
4c732153892b Implement RMStream stream-specific private data object in the RM demuxer.
rbultje
parents: 4097
diff changeset
36
3902
5f9bec099c69 Add dynamic payload handlers to rdt.c. These follow the same API as the ones
rbultje
parents: 3873
diff changeset
37 /*< 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
38 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
39
2889
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 * Read the MDPR chunk, which contains stream-specific codec initialization
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
42 * parameters.
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
43 *
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
44 * @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
45 * @param pb context to read the data from
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
46 * @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
47 * 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
48 * @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
49 * @param codec_data_size size of the MDPR chunk
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
50 * @return 0 on success, errno codes on error
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
51 */
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
52 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
53 AVStream *st, RMStream *rst,
90a12fced519 Add RMStream object as function argument to public functions so that non-.rm
rbultje
parents: 4132
diff changeset
54 int codec_data_size);
2889
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 /**
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
57 * Parse one rm-stream packet from the input bytestream.
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
58 *
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
59 * @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
60 * @param pb context to read the data from
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
61 * @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
62 * @param rst Real-specific stream information
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
63 * @param len packet length to read from the input
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
64 * @param pkt packet location to store the parsed packet data
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
65 * @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
66 * updated
5119
bb9cdd9ad9de Don't use a pointer-to-flags/timestamp in ff_rm_parse_packet(); the function
rbultje
parents: 5006
diff changeset
67 * @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
68 * @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
69 * @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
70 * 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
71 * data is available by calling ff_rm_retrieve_cache().
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
72 */
4036
1349c277efbd Add ByteIOContext argument to public ff_rm_* functions so that we can
rbultje
parents: 3902
diff changeset
73 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
74 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
75 AVPacket *pkt, int *seq, int flags, int64_t ts);
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
76
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
77 /**
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
78 * 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
79 * 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
80 * 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
81 * 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
82 * 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
83 * of those packets can be retrieved sequentially.
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
84 *
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
85 * @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
86 * @param pb context to read the data from
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
87 * @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
88 * @param rst Real-specific stream information
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
89 * @param pkt location to store the packet data
5909
b8041f85c327 Replace @returns by @return.
benoit
parents: 5831
diff changeset
90 * @return the number of samples left for subsequent calls to this same
4135
fd0fc1e26d82 Add audio_pkt_cnt return value to ff_rm_retrieve_cache(). See discussion in
rbultje
parents: 4133
diff changeset
91 * function, or 0 if all samples have been retrieved.
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
92 */
4135
fd0fc1e26d82 Add audio_pkt_cnt return value to ff_rm_retrieve_cache(). See discussion in
rbultje
parents: 4133
diff changeset
93 int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
4136
e29f278b7831 Reindent after r16368.
rbultje
parents: 4135
diff changeset
94 AVStream *st, RMStream *rst, AVPacket *pkt);
2889
60275d3b2e42 Make three rm demuxer functions non static.
benoit
parents: 2696
diff changeset
95
5831
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
96 /**
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
97 * Perform 4-bit block reordering for SIPR data.
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
98 *
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
99 * @param buf SIPR data
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
100 */
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
101 void ff_rm_reorder_sipr_data(uint8_t *buf, int sub_packet_h, int framesize);
6ff00deb94fb export rm_reorder_sipr_data() for future use by matroska demuxer
aurel
parents: 5830
diff changeset
102
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 3617
diff changeset
103 #endif /* AVFORMAT_RM_H */