annotate oma.c @ 5910:536e5527c1e0 libavformat

Define AVMediaType enum, and use it instead of enum CodecType, which is deprecated and will be dropped at the next major bump.
author stefano
date Tue, 30 Mar 2010 23:30:55 +0000
parents dde1a233f3f6
children 178de7695c6c
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 /**
4331
49c1d3b27727 Use full internal pathname in doxygen @file directives.
diego
parents: 3769
diff changeset
25 * @file libavformat/oma.c
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:
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
30 * - "ea3" header carrying overall info and metadata.
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
31 * - "EA3" header is a Sony-specific header containing information about
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
32 * the OpenMG file: codec type (usually ATRAC, can also be MP3 or WMA),
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
33 * codec specific info (packet size, sample rate, channels and so on)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
34 * and DRM related info (file encryption, content id).
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
35 * - Sound data organized in packets follow the EA3 header
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
36 * (can be encrypted using the Sony DRM!).
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
37 *
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
38 * LIMITATIONS: This version supports only plain (unencrypted) OMA files.
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
39 * If any DRM-protected (encrypted) file is encountered you will get the
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
40 * corresponding error message. Try to remove the encryption using any
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
41 * Sony software (for example SonicStage).
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
42 * CODEC SUPPORT: Only ATRAC3 codec is currently supported!
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
43 */
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
44
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
45 #include "avformat.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
46 #include "libavutil/intreadwrite.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
47 #include "raw.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
48 #include "riff.h"
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
49
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
50 #define EA3_HEADER_SIZE 96
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
51
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
52 enum {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
53 OMA_CODECID_ATRAC3 = 0,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
54 OMA_CODECID_ATRAC3P = 1,
3505
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
55 OMA_CODECID_MP3 = 3,
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
56 OMA_CODECID_LPCM = 4,
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
57 OMA_CODECID_WMA = 5,
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
58 };
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
59
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
60 static const AVCodecTag codec_oma_tags[] = {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
61 { CODEC_ID_ATRAC3, OMA_CODECID_ATRAC3 },
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
62 { CODEC_ID_ATRAC3P, OMA_CODECID_ATRAC3P },
3505
ad7e9ad3c19a Add more codec IDs and tags.
banan
parents: 3439
diff changeset
63 { CODEC_ID_MP3, OMA_CODECID_MP3 },
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
64 };
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
65
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
66 static int oma_read_header(AVFormatContext *s,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
67 AVFormatParameters *ap)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
68 {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
69 static const uint16_t srate_tab[6] = {320,441,480,882,960,0};
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
70 int ret, ea3_taglen, EA3_pos, framesize, jsflag, samplerate;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
71 uint32_t codec_params;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
72 int16_t eid;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
73 uint8_t buf[EA3_HEADER_SIZE];
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
74 uint8_t *edata;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
75 AVStream *st;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
76
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
77 ret = get_buffer(s->pb, buf, 10);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
78 if (ret != 10)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
79 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
80
5553
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
81 if(!memcmp(buf, "ea3", 3)) {
5554
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
82 ea3_taglen = ((buf[6] & 0x7f) << 21) | ((buf[7] & 0x7f) << 14) | ((buf[8] & 0x7f) << 7) | (buf[9] & 0x7f);
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
83
5554
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
84 EA3_pos = ea3_taglen + 10;
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
85 if (buf[5] & 0x10)
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
86 EA3_pos += 10;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
87
5554
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
88 url_fseek(s->pb, EA3_pos, SEEK_SET);
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
89 ret = get_buffer(s->pb, buf, EA3_HEADER_SIZE);
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
90 if (ret != EA3_HEADER_SIZE)
dde1a233f3f6 Fix indentation after r21257.
cehoyos
parents: 5553
diff changeset
91 return -1;
5553
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
92 } else {
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
93 ret = get_buffer(s->pb, buf + 10, EA3_HEADER_SIZE - 10);
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
94 EA3_pos = 0;
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
95 }
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
96
4943
6fd474401f0c oma: fix build if memcmp() is a macro
mru
parents: 4331
diff changeset
97 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
98 av_log(s, AV_LOG_ERROR, "Couldn't find the EA3 header !\n");
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
99 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
100 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
101
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
102 eid = AV_RB16(&buf[6]);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
103 if (eid != -1 && eid != -128) {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
104 av_log(s, AV_LOG_ERROR, "Encrypted file! Eid: %d\n", eid);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
105 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
106 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
107
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
108 codec_params = AV_RB24(&buf[33]);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
109
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
110 st = av_new_stream(s, 0);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
111 if (!st)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
112 return AVERROR(ENOMEM);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
113
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
114 st->start_time = 0;
5910
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 5554
diff changeset
115 st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
116 st->codec->codec_tag = buf[32];
5058
33a244b7ca65 Add ff_ prefixes to exported symbols in libavformat/riff.h.
diego
parents: 4943
diff changeset
117 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
118
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
119 switch (buf[32]) {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
120 case OMA_CODECID_ATRAC3:
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
121 samplerate = srate_tab[(codec_params >> 13) & 7]*100;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
122 if (samplerate != 44100)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
123 av_log(s, AV_LOG_ERROR, "Unsupported sample rate, send sample file to developers: %d\n", samplerate);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
124
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
125 framesize = (codec_params & 0x3FF) * 8;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
126 jsflag = (codec_params >> 17) & 1; /* get stereo coding mode, 1 for joint-stereo */
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
127 st->codec->channels = 2;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
128 st->codec->sample_rate = samplerate;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
129 st->codec->bit_rate = st->codec->sample_rate * framesize * 8 / 1024;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
130
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
131 /* fake the atrac3 extradata (wav format, makes stream copy to wav work) */
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
132 st->codec->extradata_size = 14;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
133 edata = av_mallocz(14 + FF_INPUT_BUFFER_PADDING_SIZE);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
134 if (!edata)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
135 return AVERROR(ENOMEM);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
136
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
137 st->codec->extradata = edata;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
138 AV_WL16(&edata[0], 1); // always 1
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
139 AV_WL32(&edata[2], samplerate); // samples rate
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
140 AV_WL16(&edata[6], jsflag); // coding mode
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
141 AV_WL16(&edata[8], jsflag); // coding mode
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
142 AV_WL16(&edata[10], 1); // always 1
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
143 // AV_WL16(&edata[12], 0); // always 0
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
144
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
145 av_set_pts_info(st, 64, 1, st->codec->sample_rate);
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
146 break;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
147 case OMA_CODECID_ATRAC3P:
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
148 st->codec->channels = (codec_params >> 10) & 7;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
149 framesize = ((codec_params & 0x3FF) * 8) + 8;
3506
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
150 st->codec->sample_rate = srate_tab[(codec_params >> 13) & 7]*100;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
151 st->codec->bit_rate = st->codec->sample_rate * framesize * 8 / 1024;
795b0af34f5c Rearrange parameter logic
banan
parents: 3505
diff changeset
152 av_set_pts_info(st, 64, 1, st->codec->sample_rate);
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
153 av_log(s, AV_LOG_ERROR, "Unsupported codec ATRAC3+!\n");
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
154 break;
3507
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
155 case OMA_CODECID_MP3:
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
156 st->need_parsing = AVSTREAM_PARSE_FULL;
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
157 framesize = 1024;
3c1206ad5d64 Add support for mp3 contained in oma
banan
parents: 3506
diff changeset
158 break;
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
159 default:
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
160 av_log(s, AV_LOG_ERROR, "Unsupported codec %d!\n",buf[32]);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
161 return -1;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
162 break;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
163 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
164
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
165 st->codec->block_align = framesize;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
166 url_fseek(s->pb, EA3_pos + EA3_HEADER_SIZE, SEEK_SET);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
167
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
168 return 0;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
169 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
170
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
171
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
172 static int oma_read_packet(AVFormatContext *s, AVPacket *pkt)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
173 {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
174 int ret = av_get_packet(s->pb, pkt, s->streams[0]->codec->block_align);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
175
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
176 pkt->stream_index = 0;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
177 if (ret <= 0)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
178 return AVERROR(EIO);
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
179
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
180 return ret;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
181 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
182
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
183 static int oma_read_probe(AVProbeData *p)
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
184 {
5553
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
185 if (!memcmp(p->buf, ((const uint8_t[]){'e', 'a', '3', 3, 0}), 5) ||
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
186 (!memcmp(p->buf, "EA3", 3) &&
d15ba827d5ea Support demuxing of Sony OpenMG files without metadata header.
cehoyos
parents: 5058
diff changeset
187 !p->buf[4] && p->buf[5] == EA3_HEADER_SIZE))
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
188 return AVPROBE_SCORE_MAX;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
189 else
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
190 return 0;
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
191 }
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
192
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
193
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
194 AVInputFormat oma_demuxer = {
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
195 "oma",
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
196 NULL_IF_CONFIG_SMALL("Sony OpenMG audio"),
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
197 0,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
198 oma_read_probe,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
199 oma_read_header,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
200 oma_read_packet,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
201 0,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
202 pcm_read_seek,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
203 .flags= AVFMT_GENERIC_INDEX,
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
204 .extensions = "oma,aa3",
3766
f062deeedb8d Change codec_tag type from const struct AVCodecTag ** to const struct AVCodecTag * const *
reimar
parents: 3507
diff changeset
205 .codec_tag= (const AVCodecTag* const []){codec_oma_tags, 0},
3439
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
206 };
0dfc37ba9453 Oma demuxer
banan
parents:
diff changeset
207