Mercurial > libavformat.hg
annotate rm.h @ 3778:85d3aca03313 libavformat
Import more MXF muxer code from the SoC tree
author | vitor |
---|---|
date | Mon, 25 Aug 2008 20:28:12 +0000 |
parents | 74fbde8871c4 |
children | 1b6245500d8c |
rev | line source |
---|---|
0 | 1 /* |
1415
3b00fb8ef8e4
replace coder/decoder file description in libavformat by muxer/demuxer
aurel
parents:
1358
diff
changeset
|
2 * "Real" compatible muxer and demuxer. |
0 | 3 * Copyright (c) 2000, 2001 Fabrice Bellard. |
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 | 8 * modify it under the terms of the GNU Lesser General Public |
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 | 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 | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Lesser General Public License for more details. | |
16 * | |
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 | 20 */ |
2103 | 21 |
2620
792383dd085e
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
2103
diff
changeset
|
22 #ifndef FFMPEG_RM_H |
792383dd085e
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
2103
diff
changeset
|
23 #define FFMPEG_RM_H |
2103 | 24 |
0 | 25 #include "avformat.h" |
26 | |
27 | |
28 typedef struct { | |
29 int nb_packets; | |
30 int packet_total_size; | |
31 int packet_max_size; | |
32 /* codec related output */ | |
33 int bit_rate; | |
34 float frame_rate; | |
35 int nb_frames; /* current frame number */ | |
36 int total_frames; /* total number of frames */ | |
37 int num; | |
38 AVCodecContext *enc; | |
39 } StreamInfo; | |
40 | |
41 typedef struct { | |
42 StreamInfo streams[2]; | |
43 StreamInfo *audio_stream, *video_stream; | |
44 int data_pos; /* position of the data after the header */ | |
45 int nb_packets; | |
194 | 46 int old_format; |
609 | 47 int current_stream; |
48 int remaining_len; | |
2653 | 49 uint8_t *videobuf; ///< place to store merged video frame |
50 int videobufsize; ///< current assembled frame size | |
51 int videobufpos; ///< position for the next slice in the video buffer | |
52 int curpic_num; ///< picture number of current frame | |
53 int cur_slice, slices; | |
2696 | 54 int64_t pktpos; ///< first slice position in file |
879 | 55 /// Audio descrambling matrix parameters |
56 uint8_t *audiobuf; ///< place to store reordered audio data | |
57 int64_t audiotimestamp; ///< Audio packet timestamp | |
58 int sub_packet_cnt; // Subpacket counter, used while reading | |
59 int sub_packet_size, sub_packet_h, coded_framesize; ///< Descrambling parameters from container | |
60 int audio_stream_num; ///< Stream number for audio packets | |
61 int audio_pkt_cnt; ///< Output packet counter | |
62 int audio_framesize; /// Audio frame size from container | |
1105 | 63 int sub_packet_lengths[16]; /// Length of each aac subpacket |
0 | 64 } RMContext; |
65 | |
2889 | 66 /** |
67 * Read the MDPR chunk, which contains stream-specific codec initialization | |
68 * parameters. | |
69 * | |
70 * @param s context containing RMContext and ByteIOContext for stream reading | |
71 * @param st the stream that the MDPR chunk belongs to and where to store the | |
72 * parameters read from the chunk into | |
73 * @return 0 on success, errno codes on error | |
74 */ | |
75 int ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st); | |
76 | |
77 /** | |
78 * Parse one rm-stream packet from the input bytestream. | |
79 * | |
80 * @param s context containing RMContext and ByteIOContext for stream reading | |
81 * @param st stream to which the packet to be read belongs | |
82 * @param len packet length to read from the input | |
83 * @param pkt packet location to store the parsed packet data | |
84 * @param seq pointer to an integer containing the sequence number, may be | |
85 * updated | |
86 * @param flags pointer to an integer containing the packet flags, may be | |
87 updated | |
88 * @param ts pointer to timestamp, may be updated | |
89 * @return 0 on success, errno codes on error | |
90 */ | |
91 int ff_rm_parse_packet (AVFormatContext *s, AVStream *st, int len, | |
92 AVPacket *pkt, int *seq, int *flags, int64_t *ts); | |
93 | |
94 /** | |
95 * Retrieve one cached packet from the rm-context. The real container can | |
96 * store several packets (as interpreted by the codec) in a single container | |
97 * packet, which means the demuxer holds some back when the first container | |
98 * packet is parsed and returned. The result is that rm->audio_pkt_cnt is | |
99 * a positive number, the amount of cached packets. Using this function, each | |
100 * of those packets can be retrieved sequentially. | |
101 * | |
102 * @param s context containing RMContext and ByteIOContext for stream reading | |
103 * @param st stream that this packet belongs to | |
104 * @param pkt location to store the packet data | |
105 */ | |
106 void ff_rm_retrieve_cache (AVFormatContext *s, AVStream *st, AVPacket *pkt); | |
107 | |
2620
792383dd085e
Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents:
2103
diff
changeset
|
108 #endif /* FFMPEG_RM_H */ |