Mercurial > libavformat.hg
annotate amr.c @ 440:404fe714eea1 libavformat
distclean by ("Steven M. Schultz" <sms at 2BSD dot COM>)
author | michael |
---|---|
date | Mon, 12 Apr 2004 18:42:23 +0000 |
parents | 59c2e84817a1 |
children | 60f897e8dd2d |
rev | line source |
---|---|
148 | 1 /* |
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 | |
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
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 |
31 static int amr_write_header(AVFormatContext *s) | |
32 { | |
33 ByteIOContext *pb = &s->pb; | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
34 AVCodecContext *enc = &s->streams[0]->codec; |
148 | 35 |
36 s->priv_data = NULL; | |
37 | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
38 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
|
39 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
40 put_tag(pb, AMR_header); /* magic number */ |
148 | 41 } |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
42 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
|
43 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
44 put_tag(pb, AMRWB_header); /* magic number */ |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
45 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
46 else |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
47 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
48 //This is an error! |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
49 } |
148 | 50 put_flush_packet(pb); |
51 return 0; | |
52 } | |
53 | |
54 static int amr_write_packet(AVFormatContext *s, int stream_index_ptr, | |
55 uint8_t *buf, int size, int force_pts) | |
56 { | |
57 put_buffer(&s->pb, buf, size); | |
58 put_flush_packet(&s->pb); | |
59 return 0; | |
60 } | |
61 | |
62 static int amr_write_trailer(AVFormatContext *s) | |
63 { | |
64 return 0; | |
65 } | |
66 | |
67 static int amr_probe(AVProbeData *p) | |
68 { | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
69 //Only check for "#!AMR" which could be amr-wb, amr-nb. |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
70 //This will also trigger multichannel files: "#!AMR_MC1.0\n" and |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
71 //"#!AMR-WB_MC1.0\n" (not supported) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
72 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
73 if (p->buf_size < 5) |
148 | 74 return 0; |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
75 if(memcmp(p->buf,AMR_header,5)==0) |
148 | 76 return AVPROBE_SCORE_MAX; |
77 else | |
78 return 0; | |
79 } | |
80 | |
81 /* amr input */ | |
82 static int amr_read_header(AVFormatContext *s, | |
83 AVFormatParameters *ap) | |
84 { | |
85 ByteIOContext *pb = &s->pb; | |
86 AVStream *st; | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
87 uint8_t header[9]; |
148 | 88 |
89 get_buffer(pb, header, 6); | |
90 | |
91 if(memcmp(header,AMR_header,6)!=0) | |
92 { | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
93 get_buffer(pb, header+6, 3); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
94 if(memcmp(header,AMRWB_header,9)!=0) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
95 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
96 return -1; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
97 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
98 st = av_new_stream(s, 0); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
99 if (!st) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
100 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
101 return AVERROR_NOMEM; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
102 } |
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 st->codec.codec_type = CODEC_TYPE_AUDIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
105 st->codec.codec_tag = CODEC_ID_AMR_WB; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
106 st->codec.codec_id = CODEC_ID_AMR_WB; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
107 st->codec.channels = 1; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
108 st->codec.sample_rate = 16000; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
109 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
110 else |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
111 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
112 st = av_new_stream(s, 0); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
113 if (!st) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
114 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
115 return AVERROR_NOMEM; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
116 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
117 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
118 st->codec.codec_type = CODEC_TYPE_AUDIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
119 st->codec.codec_tag = CODEC_ID_AMR_NB; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
120 st->codec.codec_id = CODEC_ID_AMR_NB; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
121 st->codec.channels = 1; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
122 st->codec.sample_rate = 8000; |
148 | 123 } |
124 | |
125 return 0; | |
126 } | |
127 | |
128 #define MAX_SIZE 32 | |
129 | |
130 static int amr_read_packet(AVFormatContext *s, | |
131 AVPacket *pkt) | |
132 { | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
133 AVCodecContext *enc = &s->streams[0]->codec; |
148 | 134 |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
135 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
|
136 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
137 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
|
138 uint8_t toc, q, ft; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
139 int read; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
140 int size; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
141 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
142 if (url_feof(&s->pb)) |
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 return -EIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
145 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
146 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
147 toc=get_byte(&s->pb); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
148 q = (toc >> 2) & 0x01; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
149 ft = (toc >> 3) & 0x0F; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
150 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
151 size=packed_size[ft]; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
152 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
153 if (av_new_packet(pkt, size+1)) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
154 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
155 return -EIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
156 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
157 pkt->stream_index = 0; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
158 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
159 pkt->data[0]=toc; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
160 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
161 read = get_buffer(&s->pb, pkt->data+1, size); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
162 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
163 if (read != size) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
164 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
165 av_free_packet(pkt); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
166 return -EIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
167 } |
148 | 168 |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
169 return 0; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
170 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
171 else if(enc->codec_id == CODEC_ID_AMR_WB) |
148 | 172 { |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
173 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
|
174 uint8_t toc, mode; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
175 int read; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
176 int size; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
177 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
178 if (url_feof(&s->pb)) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
179 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
180 return -EIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
181 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
182 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
183 toc=get_byte(&s->pb); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
184 mode = (uint8_t)((toc >> 3) & 0x0F); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
185 size = packed_size[mode]; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
186 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
187 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
|
188 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
189 return -EIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
190 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
191 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
192 pkt->stream_index = 0; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
193 pkt->data[0]=toc; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
194 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
195 read = get_buffer(&s->pb, pkt->data+1, size-1); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
196 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
197 if (read != (size-1)) |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
198 { |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
199 av_free_packet(pkt); |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
200 return -EIO; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
201 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
202 |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
203 return 0; |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
204 } |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
205 else |
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
206 { |
148 | 207 return -EIO; |
208 } | |
209 } | |
210 | |
211 static int amr_read_close(AVFormatContext *s) | |
212 { | |
213 return 0; | |
214 } | |
215 | |
216 static AVInputFormat amr_iformat = { | |
217 "amr", | |
218 "3gpp amr file format", | |
258
59c2e84817a1
AMR-WB support by (Johannes Carlsson <joca at rixmail dot se>)
michaelni
parents:
154
diff
changeset
|
219 0, /*priv_data_size*/ |
148 | 220 amr_probe, |
221 amr_read_header, | |
222 amr_read_packet, | |
223 amr_read_close, | |
224 }; | |
225 | |
226 static AVOutputFormat amr_oformat = { | |
227 "amr", | |
228 "3gpp amr file format", | |
229 "audio/amr", | |
230 "amr", | |
231 0, | |
232 CODEC_ID_AMR_NB, | |
233 CODEC_ID_NONE, | |
234 amr_write_header, | |
235 amr_write_packet, | |
236 amr_write_trailer, | |
237 }; | |
238 | |
239 int amr_init(void) | |
240 { | |
241 av_register_input_format(&amr_iformat); | |
242 av_register_output_format(&amr_oformat); | |
243 return 0; | |
244 } |