annotate oma.c @ 6193:da9998b48dff libavformat

rtpdec: Malloc the fmtp value buffer This allows very large value strings, needed for xiph extradata. Patch by Josh Allmann, joshua dot allmann at gmail
author mstorsjo
date Mon, 28 Jun 2010 20:27:25 +0000
parents 0abe94ef06ce
children 4aaed59641ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
1 /*
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
2 * Sony OpenMG (OMA) demuxer
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
3 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
4 * Copyright (c) 2008 Maxim Poliakovski
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
5 * 2008 Benjamin Larsson
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
6 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
7 * This file is part of FFmpeg.
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
8 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
13 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
17 * Lesser General Public License for more details.
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
18 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
22 */
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
23
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
24 /**
5969
178de7695c6c Remove explicit filename from Doxygen @file commands.
diego
parents: 5910
diff changeset
25 * @file
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
26 * This is a demuxer for Sony OpenMG Music files
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
27 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
28 * Known file extensions: ".oma", "aa3"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
29 * The format of such files consists of three parts:
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
30 * - "ea3" header carrying overall info and metadata. Except for starting with
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
31 * "ea" instead of "ID", it's an ID3v2 header.
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
32 * - "EA3" header is a Sony-specific header containing information about
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
33 * the OpenMG file: codec type (usually ATRAC, can also be MP3 or WMA),
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
34 * codec specific info (packet size, sample rate, channels and so on)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
35 * and DRM related info (file encryption, content id).
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
36 * - Sound data organized in packets follow the EA3 header
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
37 * (can be encrypted using the Sony DRM!).
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
38 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
39 * LIMITATIONS: This version supports only plain (unencrypted) OMA files.
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
40 * If any DRM-protected (encrypted) file is encountered you will get the
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
41 * corresponding error message. Try to remove the encryption using any
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
42 * Sony software (for example SonicStage).
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
43 * CODEC SUPPORT: Only ATRAC3 codec is currently supported!
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
44 */
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
45
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
46 #include "avformat.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
47 #include "libavutil/intreadwrite.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
48 #include "raw.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
49 #include "riff.h"
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
50 #include "id3v2.h"
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
51
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
52 #define EA3_HEADER_SIZE 96
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
53
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
54 enum {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
55 OMA_CODECID_ATRAC3 = 0,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
56 OMA_CODECID_ATRAC3P = 1,
3505
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
57 OMA_CODECID_MP3 = 3,
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
58 OMA_CODECID_LPCM = 4,
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
59 OMA_CODECID_WMA = 5,
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
60 };
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
61
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
62 static const AVCodecTag codec_oma_tags[] = {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
63 { CODEC_ID_ATRAC3, OMA_CODECID_ATRAC3 },
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
64 { CODEC_ID_ATRAC3P, OMA_CODECID_ATRAC3P },
3505
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
65 { CODEC_ID_MP3, OMA_CODECID_MP3 },
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
66 };
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
67
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
68 #define ID3v2_EA3_MAGIC "ea3"
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
69
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
70 static int oma_read_header(AVFormatContext *s,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
71 AVFormatParameters *ap)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
72 {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
73 static const uint16_t srate_tab[6] = {320,441,480,882,960,0};
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
74 int ret, framesize, jsflag, samplerate;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
75 uint32_t codec_params;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
76 int16_t eid;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
77 uint8_t buf[EA3_HEADER_SIZE];
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
78 uint8_t *edata;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
79 AVStream *st;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
80
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
81 ff_id3v2_read(s, ID3v2_EA3_MAGIC);
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
82 ret = get_buffer(s->pb, buf, EA3_HEADER_SIZE);
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
83
4943
6fd474401f0c oma: fix build if memcmp() is a macro
mru
parents: 4331
diff changeset
84 if (memcmp(buf, ((const uint8_t[]){'E', 'A', '3'}),3) || buf[4] != 0 || buf[5] != EA3_HEADER_SIZE) {
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
85 av_log(s, AV_LOG_ERROR, "Couldn't find the EA3 header !\n");
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
86 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
87 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
88
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
89 eid = AV_RB16(&buf[6]);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
90 if (eid != -1 && eid != -128) {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
91 av_log(s, AV_LOG_ERROR, "Encrypted file! Eid: %d\n", eid);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
92 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
93 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
94
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
95 codec_params = AV_RB24(&buf[33]);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
96
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
97 st = av_new_stream(s, 0);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
98 if (!st)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
99 return AVERROR(ENOMEM);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
100
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
101 st->start_time = 0;
5910
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 5554
diff changeset
102 st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
103 st->codec->codec_tag = buf[32];
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 4943
diff changeset
104 st->codec->codec_id = ff_codec_get_id(codec_oma_tags, st->codec->codec_tag);
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
105
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
106 switch (buf[32]) {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
107 case OMA_CODECID_ATRAC3:
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
108 samplerate = srate_tab[(codec_params >> 13) & 7]*100;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
109 if (samplerate != 44100)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
110 av_log(s, AV_LOG_ERROR, "Unsupported sample rate, send sample file to developers: %d\n", samplerate);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
111
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
112 framesize = (codec_params & 0x3FF) * 8;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
113 jsflag = (codec_params >> 17) & 1; /* get stereo coding mode, 1 for joint-stereo */
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
114 st->codec->channels = 2;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
115 st->codec->sample_rate = samplerate;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
116 st->codec->bit_rate = st->codec->sample_rate * framesize * 8 / 1024;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
117
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
118 /* fake the atrac3 extradata (wav format, makes stream copy to wav work) */
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
119 st->codec->extradata_size = 14;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
120 edata = av_mallocz(14 + FF_INPUT_BUFFER_PADDING_SIZE);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
121 if (!edata)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
122 return AVERROR(ENOMEM);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
123
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
124 st->codec->extradata = edata;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
125 AV_WL16(&edata[0], 1); // always 1
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
126 AV_WL32(&edata[2], samplerate); // samples rate
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
127 AV_WL16(&edata[6], jsflag); // coding mode
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
128 AV_WL16(&edata[8], jsflag); // coding mode
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
129 AV_WL16(&edata[10], 1); // always 1
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
130 // AV_WL16(&edata[12], 0); // always 0
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
131
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
132 av_set_pts_info(st, 64, 1, st->codec->sample_rate);
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
133 break;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
134 case OMA_CODECID_ATRAC3P:
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
135 st->codec->channels = (codec_params >> 10) & 7;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
136 framesize = ((codec_params & 0x3FF) * 8) + 8;
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
137 st->codec->sample_rate = srate_tab[(codec_params >> 13) & 7]*100;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
138 st->codec->bit_rate = st->codec->sample_rate * framesize * 8 / 1024;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
139 av_set_pts_info(st, 64, 1, st->codec->sample_rate);
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
140 av_log(s, AV_LOG_ERROR, "Unsupported codec ATRAC3+!\n");
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
141 break;
3507
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
142 case OMA_CODECID_MP3:
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
143 st->need_parsing = AVSTREAM_PARSE_FULL;
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
144 framesize = 1024;
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
145 break;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
146 default:
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
147 av_log(s, AV_LOG_ERROR, "Unsupported codec %d!\n",buf[32]);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
148 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
149 break;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
150 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
151
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
152 st->codec->block_align = framesize;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
153
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
154 return 0;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
155 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
156
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
157
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
158 static int oma_read_packet(AVFormatContext *s, AVPacket *pkt)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
159 {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
160 int ret = av_get_packet(s->pb, pkt, s->streams[0]->codec->block_align);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
161
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
162 pkt->stream_index = 0;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
163 if (ret <= 0)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
164 return AVERROR(EIO);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
165
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
166 return ret;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
167 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
168
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
169 static int oma_read_probe(AVProbeData *p)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
170 {
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
171 const uint8_t *buf;
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
172 unsigned tag_len = 0;
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
173
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
174 buf = p->buf;
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
175 /* version must be 3 and flags byte zero */
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
176 if (ff_id3v2_match(buf, ID3v2_EA3_MAGIC) && buf[3] == 3 && !buf[4])
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
177 tag_len = ff_id3v2_tag_len(buf);
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
178
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
179 // This check cannot overflow as tag_len has at most 28 bits
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
180 if (p->buf_size < tag_len + 5)
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
181 return 0;
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
182
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
183 buf += tag_len;
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
184
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
185 if (!memcmp(buf, "EA3", 3) && !buf[4] && buf[5] == EA3_HEADER_SIZE)
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
186 return AVPROBE_SCORE_MAX;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
187 else
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
188 return 0;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
189 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
190
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
191
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
192 AVInputFormat oma_demuxer = {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
193 "oma",
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
194 NULL_IF_CONFIG_SMALL("Sony OpenMG audio"),
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
195 0,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
196 oma_read_probe,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
197 oma_read_header,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
198 oma_read_packet,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
199 0,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
200 pcm_read_seek,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
201 .flags= AVFMT_GENERIC_INDEX,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
202 .extensions = "oma,aa3",
3766
f062deeedb8d Change codec_tag type from const struct AVCodecTag ** to const struct AVCodecTag * const *
reimar
parents: 3507
diff changeset
203 .codec_tag= (const AVCodecTag* const []){codec_oma_tags, 0},
6140
0abe94ef06ce Add metadata support. Patch by Michael Karcher.
maxim
parents: 5969
diff changeset
204 .metadata_conv = ff_id3v2_metadata_conv,
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
205 };
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
206