Mercurial > libavformat.hg
annotate amr.c @ 906:dd0d3138fdbe libavformat
Place proper #ifdef around muxer-specific code.
patch by Gianluigi Tiesi < mplayer at@at netfarm dot.dot it >
| author | diego |
|---|---|
| date | Sun, 22 Jan 2006 13:50:59 +0000 |
| parents | edbe5c3717f9 |
| children | d89d7ef290da |
| rev | line source |
|---|---|
| 885 | 1 /* |
| 148 | 2 * amr file format |
| 3 * Copyright (c) 2001 ffmpeg project | |
| 4 * | |
| 5 * This library is free software; you can redistribute it and/or | |
| 6 * modify it under the terms of the GNU Lesser General Public | |
| 7 * License as published by the Free Software Foundation; either | |
| 8 * version 2 of the License, or (at your option) any later version. | |
| 9 * | |
| 10 * This library is distributed in the hope that it will be useful, | |
| 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 * Lesser General Public License for more details. | |
| 14 * | |
| 15 * You should have received a copy of the GNU Lesser General Public | |
| 16 * License along with this library; if not, write to the Free Software | |
|
896
edbe5c3717f9
Update licensing information: The FSF changed postal address.
diego
parents:
885
diff
changeset
|
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 148 | 18 */ |
| 19 | |
| 20 /* | |
| 21 Write and read amr data according to RFC3267, http://www.ietf.org/rfc/rfc3267.txt?number=3267 | |
| 22 | |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
23 Only mono files are supported. |
| 148 | 24 |
| 25 */ | |
| 26 #include "avformat.h" | |
| 27 | |
| 28 static const unsigned char AMR_header [] = "#!AMR\n"; | |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
29 static const unsigned char AMRWB_header [] = "#!AMR-WB\n"; |
| 148 | 30 |
| 906 | 31 #ifdef CONFIG_MUXERS |
| 148 | 32 static int amr_write_header(AVFormatContext *s) |
| 33 { | |
| 34 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
|
35 AVCodecContext *enc = s->streams[0]->codec; |
| 148 | 36 |
| 37 s->priv_data = NULL; | |
| 38 | |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
39 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
|
40 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
41 put_tag(pb, AMR_header); /* magic number */ |
| 148 | 42 } |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
43 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
|
44 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
45 put_tag(pb, AMRWB_header); /* magic number */ |
|
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 else |
|
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 //This is an error! |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
50 } |
| 148 | 51 put_flush_packet(pb); |
| 52 return 0; | |
| 53 } | |
| 54 | |
| 468 | 55 static int amr_write_packet(AVFormatContext *s, AVPacket *pkt) |
| 148 | 56 { |
| 468 | 57 put_buffer(&s->pb, pkt->data, pkt->size); |
| 148 | 58 put_flush_packet(&s->pb); |
| 59 return 0; | |
| 60 } | |
| 61 | |
| 62 static int amr_write_trailer(AVFormatContext *s) | |
| 63 { | |
| 64 return 0; | |
| 65 } | |
| 906 | 66 #endif /* CONFIG_MUXERS */ |
| 148 | 67 |
| 68 static int amr_probe(AVProbeData *p) | |
| 69 { | |
| 885 | 70 //Only check for "#!AMR" which could be amr-wb, amr-nb. |
| 71 //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
|
72 //"#!AMR-WB_MC1.0\n" (not supported) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
73 |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
74 if (p->buf_size < 5) |
| 148 | 75 return 0; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
76 if(memcmp(p->buf,AMR_header,5)==0) |
| 148 | 77 return AVPROBE_SCORE_MAX; |
| 78 else | |
| 79 return 0; | |
| 80 } | |
| 81 | |
| 82 /* amr input */ | |
| 83 static int amr_read_header(AVFormatContext *s, | |
| 84 AVFormatParameters *ap) | |
| 85 { | |
| 86 ByteIOContext *pb = &s->pb; | |
| 87 AVStream *st; | |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
88 uint8_t header[9]; |
| 148 | 89 |
| 90 get_buffer(pb, header, 6); | |
| 91 | |
| 92 if(memcmp(header,AMR_header,6)!=0) | |
| 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 } |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
99 st = av_new_stream(s, 0); |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
100 if (!st) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
101 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
102 return AVERROR_NOMEM; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
103 } |
| 885 | 104 |
|
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
105 st->codec->codec_type = CODEC_TYPE_AUDIO; |
|
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', '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
|
107 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
|
108 st->codec->channels = 1; |
|
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
109 st->codec->sample_rate = 16000; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
110 } |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
111 else |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
112 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
113 st = av_new_stream(s, 0); |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
114 if (!st) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
115 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
116 return AVERROR_NOMEM; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
117 } |
| 885 | 118 |
|
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
119 st->codec->codec_type = CODEC_TYPE_AUDIO; |
|
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
120 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
|
121 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
|
122 st->codec->channels = 1; |
|
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
123 st->codec->sample_rate = 8000; |
| 148 | 124 } |
| 125 | |
| 126 return 0; | |
| 127 } | |
| 128 | |
| 129 #define MAX_SIZE 32 | |
| 130 | |
| 131 static int amr_read_packet(AVFormatContext *s, | |
| 132 AVPacket *pkt) | |
| 133 { | |
|
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
134 AVCodecContext *enc = s->streams[0]->codec; |
| 148 | 135 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
136 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
|
137 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
138 const static uint8_t packed_size[16] = {12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0}; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
139 uint8_t toc, q, ft; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
140 int read; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
141 int size; |
| 885 | 142 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
143 if (url_feof(&s->pb)) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
144 { |
| 482 | 145 return AVERROR_IO; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
146 } |
| 885 | 147 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
148 toc=get_byte(&s->pb); |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
149 q = (toc >> 2) & 0x01; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
150 ft = (toc >> 3) & 0x0F; |
| 885 | 151 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
152 size=packed_size[ft]; |
| 885 | 153 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
154 if (av_new_packet(pkt, size+1)) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
155 { |
| 482 | 156 return AVERROR_IO; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
157 } |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
158 pkt->stream_index = 0; |
| 775 | 159 pkt->pos= url_ftell(&s->pb); |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
160 pkt->data[0]=toc; |
| 885 | 161 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
162 read = get_buffer(&s->pb, pkt->data+1, size); |
| 885 | 163 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
164 if (read != size) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
165 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
166 av_free_packet(pkt); |
| 482 | 167 return AVERROR_IO; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
168 } |
| 885 | 169 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
170 return 0; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
171 } |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
172 else if(enc->codec_id == CODEC_ID_AMR_WB) |
| 148 | 173 { |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
174 static uint8_t packed_size[16] = {18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1}; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
175 uint8_t toc, mode; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
176 int read; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
177 int size; |
| 885 | 178 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
179 if (url_feof(&s->pb)) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
180 { |
| 482 | 181 return AVERROR_IO; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
182 } |
| 885 | 183 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
184 toc=get_byte(&s->pb); |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
185 mode = (uint8_t)((toc >> 3) & 0x0F); |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
186 size = packed_size[mode]; |
| 885 | 187 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
188 if ( (size==0) || av_new_packet(pkt, size)) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
189 { |
| 482 | 190 return AVERROR_IO; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
191 } |
| 885 | 192 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
193 pkt->stream_index = 0; |
| 775 | 194 pkt->pos= url_ftell(&s->pb); |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
195 pkt->data[0]=toc; |
| 885 | 196 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
197 read = get_buffer(&s->pb, pkt->data+1, size-1); |
| 885 | 198 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
199 if (read != (size-1)) |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
200 { |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
201 av_free_packet(pkt); |
| 482 | 202 return AVERROR_IO; |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
203 } |
| 885 | 204 |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
205 return 0; |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
206 } |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
207 else |
|
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
208 { |
| 482 | 209 return AVERROR_IO; |
| 148 | 210 } |
| 211 } | |
| 212 | |
| 213 static int amr_read_close(AVFormatContext *s) | |
| 214 { | |
| 215 return 0; | |
| 216 } | |
| 217 | |
| 218 static AVInputFormat amr_iformat = { | |
| 219 "amr", | |
| 220 "3gpp amr file format", | |
|
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
221 0, /*priv_data_size*/ |
| 148 | 222 amr_probe, |
| 223 amr_read_header, | |
| 224 amr_read_packet, | |
| 225 amr_read_close, | |
| 226 }; | |
| 227 | |
| 906 | 228 #ifdef CONFIG_MUXERS |
| 148 | 229 static AVOutputFormat amr_oformat = { |
| 230 "amr", | |
| 231 "3gpp amr file format", | |
| 232 "audio/amr", | |
| 233 "amr", | |
| 234 0, | |
| 235 CODEC_ID_AMR_NB, | |
| 236 CODEC_ID_NONE, | |
| 237 amr_write_header, | |
| 238 amr_write_packet, | |
| 239 amr_write_trailer, | |
| 240 }; | |
| 906 | 241 #endif |
| 148 | 242 |
| 243 int amr_init(void) | |
| 244 { | |
| 245 av_register_input_format(&amr_iformat); | |
| 906 | 246 #ifdef CONFIG_MUXERS |
| 148 | 247 av_register_output_format(&amr_oformat); |
| 906 | 248 #endif |
| 148 | 249 return 0; |
| 250 } |
