annotate wav.c @ 587:fe24632a577b libavformat

allocate a few bytes more for extradata so the bitstream reader if its used by the codec for parsing extardata, doesnt read over the end
author michael
date Sat, 13 Nov 2004 01:27:35 +0000
parents f8edb92d97b6
children 9fc2d2cc4608
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 /*
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
2 * WAV encoder and decoder
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
3 * Copyright (c) 2001, 2002 Fabrice Bellard.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
4 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
9 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
13 * Lesser General Public License for more details.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
16 * License along with this library; if not, write to the Free Software
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
18 */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
19 #include "avformat.h"
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
20 #include "avi.h"
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
21
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
22 const CodecTag codec_wav_tags[] = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
23 { CODEC_ID_MP2, 0x50 },
232
eb90c0a5a1ba CODEC_ID_MP3LAME is obsolete
bellard
parents: 226
diff changeset
24 { CODEC_ID_MP3, 0x55 },
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
25 { CODEC_ID_AC3, 0x2000 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26 { CODEC_ID_PCM_S16LE, 0x01 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
27 { CODEC_ID_PCM_U8, 0x01 }, /* must come after s16le in this list */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
28 { CODEC_ID_PCM_ALAW, 0x06 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
29 { CODEC_ID_PCM_MULAW, 0x07 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
30 { CODEC_ID_ADPCM_MS, 0x02 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
31 { CODEC_ID_ADPCM_IMA_WAV, 0x11 },
362
07bf7ff87eb3 * Initial implementation of the G.726 ADPCM audio codec.
romansh
parents: 309
diff changeset
32 { CODEC_ID_ADPCM_G726, 0x45 },
226
d55e4b761e24 support for Duck DK3 and DK4 ADPCM
tmmm
parents: 196
diff changeset
33 { CODEC_ID_ADPCM_IMA_DK4, 0x61 }, /* rogue format number */
d55e4b761e24 support for Duck DK3 and DK4 ADPCM
tmmm
parents: 196
diff changeset
34 { CODEC_ID_ADPCM_IMA_DK3, 0x62 }, /* rogue format number */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
35 { CODEC_ID_WMAV1, 0x160 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
36 { CODEC_ID_WMAV2, 0x161 },
550
bc2751b2c189 untested AAC in WAV/AVI patch by (Mns Rullgrd <mru at mru dot ath dot cx>)
michael
parents: 529
diff changeset
37 { CODEC_ID_AAC, 0x706d },
411
64c347065c1b some random id for vorbis so we can do some experiments with vorbis in various containers, anyone knows if vorbis in WAV/AVI has a official id?
michael
parents: 384
diff changeset
38 { CODEC_ID_VORBIS, ('V'<<8)+'o' }, //HACK/FIXME, does vorbis in WAV/AVI have an (in)official id?
517
543990301444 unofficial ids for sonic for using in nut (fixme)
alex
parents: 496
diff changeset
39 { CODEC_ID_SONIC, 0x2048 },
543990301444 unofficial ids for sonic for using in nut (fixme)
alex
parents: 496
diff changeset
40 { CODEC_ID_SONIC_LS, 0x2048 },
561
d5925f47058d Creative ADPCM decoder, format 0x200, courtesy of Konstantin Shishkov
melanson
parents: 558
diff changeset
41 { CODEC_ID_ADPCM_CT, 0x200 },
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
42 { 0, 0 },
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
43 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
44
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
45 #ifdef CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
46 /* WAVEFORMATEX header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
47 /* returns the size or -1 on error */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
48 int put_wav_header(ByteIOContext *pb, AVCodecContext *enc)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
49 {
196
01bec1059bdf use codec_tag for encoding too
michaelni
parents: 87
diff changeset
50 int bps, blkalign, bytespersec;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
51 int hdrsize = 18;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
52
196
01bec1059bdf use codec_tag for encoding too
michaelni
parents: 87
diff changeset
53 if(!enc->codec_tag)
01bec1059bdf use codec_tag for encoding too
michaelni
parents: 87
diff changeset
54 enc->codec_tag = codec_get_tag(codec_wav_tags, enc->codec_id);
01bec1059bdf use codec_tag for encoding too
michaelni
parents: 87
diff changeset
55 if(!enc->codec_tag)
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
56 return -1;
196
01bec1059bdf use codec_tag for encoding too
michaelni
parents: 87
diff changeset
57
01bec1059bdf use codec_tag for encoding too
michaelni
parents: 87
diff changeset
58 put_le16(pb, enc->codec_tag);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
59 put_le16(pb, enc->channels);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
60 put_le32(pb, enc->sample_rate);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
61 if (enc->codec_id == CODEC_ID_PCM_U8 ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
62 enc->codec_id == CODEC_ID_PCM_ALAW ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
63 enc->codec_id == CODEC_ID_PCM_MULAW) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
64 bps = 8;
232
eb90c0a5a1ba CODEC_ID_MP3LAME is obsolete
bellard
parents: 226
diff changeset
65 } else if (enc->codec_id == CODEC_ID_MP2 || enc->codec_id == CODEC_ID_MP3) {
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
66 bps = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
67 } else if (enc->codec_id == CODEC_ID_ADPCM_IMA_WAV || enc->codec_id == CODEC_ID_ADPCM_MS) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
68 bps = 4;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
69 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
70 bps = 16;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
71 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
72
232
eb90c0a5a1ba CODEC_ID_MP3LAME is obsolete
bellard
parents: 226
diff changeset
73 if (enc->codec_id == CODEC_ID_MP2 || enc->codec_id == CODEC_ID_MP3) {
577
f8edb92d97b6 cbr audio muxing fix
michael
parents: 570
diff changeset
74 blkalign = enc->frame_size; //this is wrong, but seems many demuxers dont work if this is set correctly
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
75 //blkalign = 144 * enc->bit_rate/enc->sample_rate;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
76 } else if (enc->block_align != 0) { /* specified by the codec */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
77 blkalign = enc->block_align;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
78 } else
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
79 blkalign = enc->channels*bps >> 3;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
80 if (enc->codec_id == CODEC_ID_PCM_U8 ||
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
81 enc->codec_id == CODEC_ID_PCM_S16LE) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
82 bytespersec = enc->sample_rate * blkalign;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
83 } else {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
84 bytespersec = enc->bit_rate / 8;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
85 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
86 put_le32(pb, bytespersec); /* bytes per second */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
87 put_le16(pb, blkalign); /* block align */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
88 put_le16(pb, bps); /* bits per sample */
232
eb90c0a5a1ba CODEC_ID_MP3LAME is obsolete
bellard
parents: 226
diff changeset
89 if (enc->codec_id == CODEC_ID_MP3) {
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
90 put_le16(pb, 12); /* wav_extra_size */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
91 hdrsize += 12;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
92 put_le16(pb, 1); /* wID */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
93 put_le32(pb, 2); /* fdwFlags */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
94 put_le16(pb, 1152); /* nBlockSize */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
95 put_le16(pb, 1); /* nFramesPerBlock */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
96 put_le16(pb, 1393); /* nCodecDelay */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
97 } else if (enc->codec_id == CODEC_ID_MP2) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
98 put_le16(pb, 22); /* wav_extra_size */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
99 hdrsize += 22;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
100 put_le16(pb, 2); /* fwHeadLayer */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
101 put_le32(pb, enc->bit_rate); /* dwHeadBitrate */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
102 put_le16(pb, enc->channels == 2 ? 1 : 8); /* fwHeadMode */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
103 put_le16(pb, 0); /* fwHeadModeExt */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
104 put_le16(pb, 1); /* wHeadEmphasis */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
105 put_le16(pb, 16); /* fwHeadFlags */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
106 put_le32(pb, 0); /* dwPTSLow */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
107 put_le32(pb, 0); /* dwPTSHigh */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
108 } else if (enc->codec_id == CODEC_ID_ADPCM_IMA_WAV) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
109 put_le16(pb, 2); /* wav_extra_size */
379
b056f76ec6eb Correcting the header size for ADPCM_IMA_WAV files patch by (Brian Becker <brian dot becker at palmone dot com>)
michael
parents: 362
diff changeset
110 hdrsize += 2;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
111 put_le16(pb, ((enc->block_align - 4 * enc->channels) / (4 * enc->channels)) * 8 + 1); /* wSamplesPerBlock */
529
0b867ba59753 write shorter headers if possible
michael
parents: 517
diff changeset
112 } else if(enc->extradata_size){
412
459df3ed379e store extradata, vorbis in avi works now, dont expect av sync though
michael
parents: 411
diff changeset
113 put_le16(pb, enc->extradata_size);
459df3ed379e store extradata, vorbis in avi works now, dont expect av sync though
michael
parents: 411
diff changeset
114 put_buffer(pb, enc->extradata, enc->extradata_size);
459df3ed379e store extradata, vorbis in avi works now, dont expect av sync though
michael
parents: 411
diff changeset
115 hdrsize += enc->extradata_size;
413
michael
parents: 412
diff changeset
116 if(hdrsize&1){
michael
parents: 412
diff changeset
117 hdrsize++;
michael
parents: 412
diff changeset
118 put_byte(pb, 0);
michael
parents: 412
diff changeset
119 }
529
0b867ba59753 write shorter headers if possible
michael
parents: 517
diff changeset
120 } else {
0b867ba59753 write shorter headers if possible
michael
parents: 517
diff changeset
121 hdrsize -= 2;
412
459df3ed379e store extradata, vorbis in avi works now, dont expect av sync though
michael
parents: 411
diff changeset
122 }
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
123
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
124 return hdrsize;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
125 }
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
126 #endif //CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
127
84
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
128 /* We could be given one of the three possible structures here:
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
129 * WAVEFORMAT, PCMWAVEFORMAT or WAVEFORMATEX. Each structure
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
130 * is an expansion of the previous one with the fields added
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
131 * at the bottom. PCMWAVEFORMAT adds 'WORD wBitsPerSample' and
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
132 * WAVEFORMATEX adds 'WORD cbSize' and basically makes itself
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
133 * an openended structure.
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
134 */
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
135 void get_wav_header(ByteIOContext *pb, AVCodecContext *codec, int size)
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
136 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
137 int id;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
138
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
139 id = get_le16(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
140 codec->codec_type = CODEC_TYPE_AUDIO;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
141 codec->codec_tag = id;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
142 codec->channels = get_le16(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
143 codec->sample_rate = get_le32(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
144 codec->bit_rate = get_le32(pb) * 8;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
145 codec->block_align = get_le16(pb);
84
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
146 if (size == 14) { /* We're dealing with plain vanilla WAVEFORMAT */
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
147 codec->bits_per_sample = 8;
87
b43e201588dc sorry forgot
michaelni
parents: 84
diff changeset
148 }else
b43e201588dc sorry forgot
michaelni
parents: 84
diff changeset
149 codec->bits_per_sample = get_le16(pb);
b43e201588dc sorry forgot
michaelni
parents: 84
diff changeset
150 codec->codec_id = wav_codec_get_id(id, codec->bits_per_sample);
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
151
84
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
152 if (size > 16) { /* We're obviously dealing with WAVEFORMATEX */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
153 codec->extradata_size = get_le16(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
154 if (codec->extradata_size > 0) {
84
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
155 if (codec->extradata_size > size - 18)
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
156 codec->extradata_size = size - 18;
587
fe24632a577b allocate a few bytes more for extradata so the bitstream reader if its used by the codec for parsing extardata, doesnt read over the end
michael
parents: 577
diff changeset
157 codec->extradata = av_mallocz(codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
158 get_buffer(pb, codec->extradata, codec->extradata_size);
84
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
159 } else
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
160 codec->extradata_size = 0;
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
161
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
162 /* It is possible for the chunk to contain garbage at the end */
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
163 if (size - codec->extradata_size - 18 > 0)
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
164 url_fskip(pb, size - codec->extradata_size - 18);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
165 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
166 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
167
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
168
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
169 int wav_codec_get_id(unsigned int tag, int bps)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
170 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
171 int id;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
172 id = codec_get_id(codec_wav_tags, tag);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
173 if (id <= 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
174 return id;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
175 /* handle specific u8 codec */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
176 if (id == CODEC_ID_PCM_S16LE && bps == 8)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
177 id = CODEC_ID_PCM_U8;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
178 return id;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
179 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
180
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
181 #ifdef CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
182 typedef struct {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
183 offset_t data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
184 } WAVContext;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
185
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
186 static int wav_write_header(AVFormatContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
187 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
188 WAVContext *wav = s->priv_data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
189 ByteIOContext *pb = &s->pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
190 offset_t fmt;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
191
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
192 put_tag(pb, "RIFF");
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
193 put_le32(pb, 0); /* file length */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
194 put_tag(pb, "WAVE");
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
195
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
196 /* format header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
197 fmt = start_tag(pb, "fmt ");
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
198 if (put_wav_header(pb, &s->streams[0]->codec) < 0) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
199 av_free(wav);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
200 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
201 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
202 end_tag(pb, fmt);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
203
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
204 /* data header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
205 wav->data = start_tag(pb, "data");
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
206
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
207 put_flush_packet(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
208
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
209 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
210 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
211
468
60f897e8dd2d pass AVPacket into av_write_frame()
michael
parents: 413
diff changeset
212 static int wav_write_packet(AVFormatContext *s, AVPacket *pkt)
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
213 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
214 ByteIOContext *pb = &s->pb;
468
60f897e8dd2d pass AVPacket into av_write_frame()
michael
parents: 413
diff changeset
215 put_buffer(pb, pkt->data, pkt->size);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
216 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
217 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
218
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
219 static int wav_write_trailer(AVFormatContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
220 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
221 ByteIOContext *pb = &s->pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
222 WAVContext *wav = s->priv_data;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
223 offset_t file_size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
224
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
225 if (!url_is_streamed(&s->pb)) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
226 end_tag(pb, wav->data);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
227
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
228 /* update file size */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
229 file_size = url_ftell(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
230 url_fseek(pb, 4, SEEK_SET);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 0
diff changeset
231 put_le32(pb, (uint32_t)(file_size - 8));
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
232 url_fseek(pb, file_size, SEEK_SET);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
233
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
234 put_flush_packet(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
235 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
236 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
237 }
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
238 #endif //CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
239
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
240 /* return the size of the found tag */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
241 /* XXX: > 2GB ? */
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 0
diff changeset
242 static int find_tag(ByteIOContext *pb, uint32_t tag1)
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
243 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
244 unsigned int tag;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
245 int size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
246
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
247 for(;;) {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
248 if (url_feof(pb))
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
249 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
250 tag = get_le32(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
251 size = get_le32(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
252 if (tag == tag1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
253 break;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
254 url_fseek(pb, size, SEEK_CUR);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
255 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
256 if (size < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
257 size = 0x7fffffff;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
258 return size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
259 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
260
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
261 static int wav_probe(AVProbeData *p)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
262 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
263 /* check file header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
264 if (p->buf_size <= 32)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
265 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
266 if (p->buf[0] == 'R' && p->buf[1] == 'I' &&
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
267 p->buf[2] == 'F' && p->buf[3] == 'F' &&
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
268 p->buf[8] == 'W' && p->buf[9] == 'A' &&
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
269 p->buf[10] == 'V' && p->buf[11] == 'E')
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
270 return AVPROBE_SCORE_MAX;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
271 else
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
272 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
273 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
274
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
275 /* wav input */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
276 static int wav_read_header(AVFormatContext *s,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
277 AVFormatParameters *ap)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
278 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
279 int size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
280 unsigned int tag;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
281 ByteIOContext *pb = &s->pb;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
282 AVStream *st;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
283
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
284 /* check RIFF header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
285 tag = get_le32(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
286
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
287 if (tag != MKTAG('R', 'I', 'F', 'F'))
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
288 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
289 get_le32(pb); /* file size */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
290 tag = get_le32(pb);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
291 if (tag != MKTAG('W', 'A', 'V', 'E'))
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
292 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
293
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
294 /* parse fmt header */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
295 size = find_tag(pb, MKTAG('f', 'm', 't', ' '));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
296 if (size < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
297 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
298 st = av_new_stream(s, 0);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
299 if (!st)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
300 return AVERROR_NOMEM;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
301
84
0068a6902911 correct AUDIO strf parsing patch by (Roman Shaposhnick <rvs at sun dot com>)
michaelni
parents: 74
diff changeset
302 get_wav_header(pb, &st->codec, size);
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
303 st->need_parsing = 1;
567
23b915bb10f5 set correct timebase
michael
parents: 564
diff changeset
304
23b915bb10f5 set correct timebase
michael
parents: 564
diff changeset
305 av_set_pts_info(st, 64, 1, st->codec.sample_rate);
23b915bb10f5 set correct timebase
michael
parents: 564
diff changeset
306
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
307 size = find_tag(pb, MKTAG('d', 'a', 't', 'a'));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
308 if (size < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
309 return -1;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
310 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
311 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
312
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
313 #define MAX_SIZE 4096
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
314
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
315 static int wav_read_packet(AVFormatContext *s,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
316 AVPacket *pkt)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
317 {
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
318 int ret, size;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
319 AVStream *st;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
320
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
321 if (url_feof(&s->pb))
482
0fdc96c2f2fe sweeping change from -EIO -> AVERROR_IO
melanson
parents: 468
diff changeset
322 return AVERROR_IO;
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
323 st = s->streams[0];
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
324
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
325 size = MAX_SIZE;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
326 if (st->codec.block_align > 1) {
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
327 if (size < st->codec.block_align)
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
328 size = st->codec.block_align;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
329 size = (size / st->codec.block_align) * st->codec.block_align;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
330 }
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
331 if (av_new_packet(pkt, size))
482
0fdc96c2f2fe sweeping change from -EIO -> AVERROR_IO
melanson
parents: 468
diff changeset
332 return AVERROR_IO;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
333 pkt->stream_index = 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
334
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
335 ret = get_buffer(&s->pb, pkt->data, pkt->size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
336 if (ret < 0)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
337 av_free_packet(pkt);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
338 /* note: we need to modify the packet size here to handle the last
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
339 packet */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
340 pkt->size = ret;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
341 return ret;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
342 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
343
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
344 static int wav_read_close(AVFormatContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
345 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
346 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
347 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
348
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
349 static int wav_read_seek(AVFormatContext *s,
558
89bd76208427 100l (forgoten seeking functions)
michael
parents: 550
diff changeset
350 int stream_index, int64_t timestamp, int flags)
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
351 {
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
352 AVStream *st;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
353
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
354 st = s->streams[0];
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
355 switch(st->codec.codec_id) {
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
356 case CODEC_ID_MP2:
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
357 case CODEC_ID_MP3:
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
358 case CODEC_ID_AC3:
496
112057e05179 libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents: 482
diff changeset
359 case CODEC_ID_DTS:
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
360 /* use generic seeking with dynamically generated indexes */
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
361 return -1;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
362 default:
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
363 break;
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
364 }
558
89bd76208427 100l (forgoten seeking functions)
michael
parents: 550
diff changeset
365 return pcm_read_seek(s, stream_index, timestamp, flags);
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
366 }
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
367
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
368
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
369 static AVInputFormat wav_iformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
370 "wav",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
371 "wav format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
372 0,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
373 wav_probe,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
374 wav_read_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
375 wav_read_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
376 wav_read_close,
309
6c9fddf8458c seeking support - fixed some ADPCM decoding cases
bellard
parents: 277
diff changeset
377 wav_read_seek,
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
378 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
379
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
380 #ifdef CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
381 static AVOutputFormat wav_oformat = {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
382 "wav",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
383 "wav format",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
384 "audio/x-wav",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
385 "wav",
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
386 sizeof(WAVContext),
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
387 CODEC_ID_PCM_S16LE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
388 CODEC_ID_NONE,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
389 wav_write_header,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
390 wav_write_packet,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
391 wav_write_trailer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
392 };
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
393 #endif //CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
394
384
9479dac25620 fix global name conflicts patch by ("Ronald S. Bultje" <R dot S dot Bultje at students dot uu dot nl>)
michael
parents: 379
diff changeset
395 int ff_wav_init(void)
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
396 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
397 av_register_input_format(&wav_iformat);
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
398 #ifdef CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
399 av_register_output_format(&wav_oformat);
277
a313e1080322 disable encoders where appropriate (patch courtesy of BERO
melanson
parents: 241
diff changeset
400 #endif //CONFIG_ENCODERS
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
401 return 0;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
402 }