annotate amr.c @ 5149:4a53fcd622ea libavformat

Check for seek failures in avi_load_index, otherwise if the index offset is invalid (e.g. truncated file) we might end up reading the whole file since trying to seek beyond the end of file does not set EOF.
author reimar
date Wed, 26 Aug 2009 08:38:44 +0000
parents c3102b189cb6
children 536e5527c1e0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 820
diff changeset
1 /*
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
2 * amr file format
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
3 * Copyright (c) 2001 ffmpeg project
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
4 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
5 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
6 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
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: 1332
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
11 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1332
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
15 * Lesser General Public License for more details.
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
16 *
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
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: 1332
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: 885
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
20 */
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
21
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
22 /*
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
23 Write and read amr data according to RFC3267, http://www.ietf.org/rfc/rfc3267.txt?number=3267
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
24
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
25 Only mono files are supported.
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
26
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
27 */
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
28 #include "avformat.h"
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
29
1332
7474cc6383d4 fix some signedness warnings
mru
parents: 1242
diff changeset
30 static const char AMR_header [] = "#!AMR\n";
7474cc6383d4 fix some signedness warnings
mru
parents: 1242
diff changeset
31 static const char AMRWB_header [] = "#!AMR-WB\n";
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
32
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3871
diff changeset
33 #if CONFIG_AMR_MUXER
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
34 static int amr_write_header(AVFormatContext *s)
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
35 {
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
36 ByteIOContext *pb = s->pb;
820
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
37 AVCodecContext *enc = s->streams[0]->codec;
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
38
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
39 s->priv_data = NULL;
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
40
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
41 if (enc->codec_id == CODEC_ID_AMR_NB)
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
42 {
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
43 put_tag(pb, AMR_header); /* magic number */
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
44 }
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
45 else if(enc->codec_id == CODEC_ID_AMR_WB)
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
46 {
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
47 put_tag(pb, AMRWB_header); /* magic number */
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
48 }
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
49 else
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
50 {
1365
54d50e11dc57 return cleanup
michael
parents: 1358
diff changeset
51 return -1;
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
52 }
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
53 put_flush_packet(pb);
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
54 return 0;
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
55 }
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
56
468
60f897e8dd2d pass AVPacket into av_write_frame()
michael
parents: 258
diff changeset
57 static int amr_write_packet(AVFormatContext *s, AVPacket *pkt)
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
58 {
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
59 put_buffer(s->pb, pkt->data, pkt->size);
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
60 put_flush_packet(s->pb);
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
61 return 0;
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
62 }
3871
e6aeb2733e34 Replace generic CONFIG_MUXERS preprocessor conditionals by more specific
diego
parents: 3424
diff changeset
63 #endif /* CONFIG_AMR_MUXER */
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
64
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
65 static int amr_probe(AVProbeData *p)
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
66 {
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 820
diff changeset
67 //Only check for "#!AMR" which could be amr-wb, amr-nb.
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 820
diff changeset
68 //This will also trigger multichannel files: "#!AMR_MC1.0\n" and
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
69 //"#!AMR-WB_MC1.0\n" (not supported)
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
70
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
71 if(memcmp(p->buf,AMR_header,5)==0)
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
72 return AVPROBE_SCORE_MAX;
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
73 else
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
74 return 0;
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
75 }
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
76
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
77 /* amr input */
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
78 static int amr_read_header(AVFormatContext *s,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
79 AVFormatParameters *ap)
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
80 {
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
81 ByteIOContext *pb = s->pb;
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
82 AVStream *st;
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
83 uint8_t header[9];
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
84
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
85 get_buffer(pb, header, 6);
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
86
1369
bf2c4889a9bf more factoriztaion and a FIXME note
michael
parents: 1368
diff changeset
87 st = av_new_stream(s, 0);
bf2c4889a9bf more factoriztaion and a FIXME note
michael
parents: 1368
diff changeset
88 if (!st)
bf2c4889a9bf more factoriztaion and a FIXME note
michael
parents: 1368
diff changeset
89 {
2273
7eb456c4ed8a Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents: 2225
diff changeset
90 return AVERROR(ENOMEM);
1369
bf2c4889a9bf more factoriztaion and a FIXME note
michael
parents: 1368
diff changeset
91 }
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
92 if(memcmp(header,AMR_header,6)!=0)
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
93 {
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
94 get_buffer(pb, header+6, 3);
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
95 if(memcmp(header,AMRWB_header,9)!=0)
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
96 {
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
97 return -1;
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
98 }
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 820
diff changeset
99
820
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
100 st->codec->codec_tag = MKTAG('s', 'a', 'w', 'b');
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
101 st->codec->codec_id = CODEC_ID_AMR_WB;
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
102 st->codec->sample_rate = 16000;
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
103 }
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
104 else
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
105 {
820
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
106 st->codec->codec_tag = MKTAG('s', 'a', 'm', 'r');
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
107 st->codec->codec_id = CODEC_ID_AMR_NB;
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
108 st->codec->sample_rate = 8000;
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
109 }
1368
f9d59429f182 factorze another 2 lines
michael
parents: 1367
diff changeset
110 st->codec->channels = 1;
f9d59429f182 factorze another 2 lines
michael
parents: 1367
diff changeset
111 st->codec->codec_type = CODEC_TYPE_AUDIO;
1367
8e0ee2faf4d5 set duration and timebase (based on a patch by Simon Morlat simon.morlat linphone org)
michael
parents: 1366
diff changeset
112 av_set_pts_info(st, 64, 1, st->codec->sample_rate);
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
113
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
114 return 0;
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
115 }
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
116
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
117 static int amr_read_packet(AVFormatContext *s,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
118 AVPacket *pkt)
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
119 {
820
feca73904e67 changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents: 775
diff changeset
120 AVCodecContext *enc = s->streams[0]->codec;
2225
7e5e26f8052a kill uninitialised variable warning in amr_read_packet()
mru
parents: 2210
diff changeset
121 int read, size = 0, toc, mode;
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
122
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
123 if (url_feof(s->pb))
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
124 {
2274
b21c2af60bc9 Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents: 2273
diff changeset
125 return AVERROR(EIO);
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
126 }
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
127
1369
bf2c4889a9bf more factoriztaion and a FIXME note
michael
parents: 1368
diff changeset
128 //FIXME this is wrong, this should rather be in a AVParset
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
129 toc=get_byte(s->pb);
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
130 mode = (toc >> 3) & 0x0F;
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
131
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
132 if (enc->codec_id == CODEC_ID_AMR_NB)
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
133 {
1242
996ce2a68147 Fix some "'static' is not at beginning of declaration" warnings.
diego
parents: 1169
diff changeset
134 static const uint8_t packed_size[16] = {12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0};
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 820
diff changeset
135
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
136 size=packed_size[mode]+1;
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
137 }
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
138 else if(enc->codec_id == CODEC_ID_AMR_WB)
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
139 {
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
140 static uint8_t packed_size[16] = {18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1};
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 820
diff changeset
141
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
142 size=packed_size[mode];
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
143 }
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
144 else
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
145 {
1365
54d50e11dc57 return cleanup
michael
parents: 1358
diff changeset
146 assert(0);
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
147 }
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
148
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
149 if ( (size==0) || av_new_packet(pkt, size))
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
150 {
2274
b21c2af60bc9 Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents: 2273
diff changeset
151 return AVERROR(EIO);
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
152 }
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
153
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
154 pkt->stream_index = 0;
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
155 pkt->pos= url_ftell(s->pb);
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
156 pkt->data[0]=toc;
1367
8e0ee2faf4d5 set duration and timebase (based on a patch by Simon Morlat simon.morlat linphone org)
michael
parents: 1366
diff changeset
157 pkt->duration= enc->codec_id == CODEC_ID_AMR_NB ? 160 : 320;
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
158 read = get_buffer(s->pb, pkt->data+1, size-1);
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
159
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
160 if (read != size-1)
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
161 {
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
162 av_free_packet(pkt);
2274
b21c2af60bc9 Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents: 2273
diff changeset
163 return AVERROR(EIO);
1366
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
164 }
31ab2ac4e173 factorize (untested)
michael
parents: 1365
diff changeset
165
1365
54d50e11dc57 return cleanup
michael
parents: 1358
diff changeset
166 return 0;
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
167 }
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
168
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3871
diff changeset
169 #if CONFIG_AMR_DEMUXER
1169
d18cc9a1fd02 allow individual selection of muxers and demuxers
mru
parents: 1167
diff changeset
170 AVInputFormat amr_demuxer = {
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
171 "amr",
3424
7a0230981402 Make long_names in lavf/lavdev optional depending on CONFIG_SMALL.
diego
parents: 2771
diff changeset
172 NULL_IF_CONFIG_SMALL("3GPP AMR file format"),
258
59c2e84817a1 AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents: 154
diff changeset
173 0, /*priv_data_size*/
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
174 amr_probe,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
175 amr_read_header,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
176 amr_read_packet,
1370
49421e5b5335 remove dummy amr_read_close()
michael
parents: 1369
diff changeset
177 NULL,
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
178 };
1169
d18cc9a1fd02 allow individual selection of muxers and demuxers
mru
parents: 1167
diff changeset
179 #endif
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
180
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3871
diff changeset
181 #if CONFIG_AMR_MUXER
1169
d18cc9a1fd02 allow individual selection of muxers and demuxers
mru
parents: 1167
diff changeset
182 AVOutputFormat amr_muxer = {
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
183 "amr",
3424
7a0230981402 Make long_names in lavf/lavdev optional depending on CONFIG_SMALL.
diego
parents: 2771
diff changeset
184 NULL_IF_CONFIG_SMALL("3GPP AMR file format"),
148
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
185 "audio/amr",
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
186 "amr",
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
187 0,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
188 CODEC_ID_AMR_NB,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
189 CODEC_ID_NONE,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
190 amr_write_header,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
191 amr_write_packet,
31d7c9a8678c * amr format - by Johannes Carlsson
kabi
parents:
diff changeset
192 };
906
dd0d3138fdbe Place proper #ifdef around muxer-specific code.
diego
parents: 896
diff changeset
193 #endif