aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/riff.c
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2008-08-19 10:54:30 +0000
committerPeter Ross <pross@xvid.org>2008-08-19 10:54:30 +0000
commit57406d8eb85aba0a5527a84168dd361a00f819ba (patch)
tree8b69932143092fedbb4300dadbb11dde41835ed3 /libavformat/riff.c
parent7b21690a91ee7934d23d7adf6b78ef49f52d0faa (diff)
downloadffmpeg-57406d8eb85aba0a5527a84168dd361a00f819ba.tar.gz
Make RIFF-based demuxers handle F32LE and F64LE PCM audio.
Originally committed as revision 14835 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/riff.c')
-rw-r--r--libavformat/riff.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libavformat/riff.c b/libavformat/riff.c
index 51d8eb39e0..8ad28159c4 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -171,6 +171,8 @@ const AVCodecTag codec_wav_tags[] = {
{ CODEC_ID_PCM_S24LE, 0x0001 },
{ CODEC_ID_PCM_S32LE, 0x0001 },
{ CODEC_ID_ADPCM_MS, 0x0002 },
+ { CODEC_ID_PCM_F32LE, 0x0003 },
+ { CODEC_ID_PCM_F64LE, 0x0003 }, /* must come after f32le in this list */
{ CODEC_ID_PCM_ALAW, 0x0006 },
{ CODEC_ID_PCM_MULAW, 0x0007 },
{ CODEC_ID_WMAVOICE, 0x000A },
@@ -252,8 +254,10 @@ int put_wav_header(ByteIOContext *pb, AVCodecContext *enc)
bps = 4;
} else if (enc->codec_id == CODEC_ID_PCM_S24LE) {
bps = 24;
- } else if (enc->codec_id == CODEC_ID_PCM_S32LE) {
+ } else if (enc->codec_id == CODEC_ID_PCM_S32LE || enc->codec_id == CODEC_ID_PCM_F32LE) {
bps = 32;
+ } else if (enc->codec_id == CODEC_ID_PCM_F64LE) {
+ bps = 64;
} else {
bps = 16;
}
@@ -273,6 +277,8 @@ int put_wav_header(ByteIOContext *pb, AVCodecContext *enc)
if (enc->codec_id == CODEC_ID_PCM_U8 ||
enc->codec_id == CODEC_ID_PCM_S24LE ||
enc->codec_id == CODEC_ID_PCM_S32LE ||
+ enc->codec_id == CODEC_ID_PCM_F32LE ||
+ enc->codec_id == CODEC_ID_PCM_F64LE ||
enc->codec_id == CODEC_ID_PCM_S16LE) {
bytespersec = enc->sample_rate * blkalign;
} else {
@@ -410,6 +416,8 @@ int wav_codec_get_id(unsigned int tag, int bps)
id = CODEC_ID_PCM_S24LE;
if (id == CODEC_ID_PCM_S16LE && bps == 32)
id = CODEC_ID_PCM_S32LE;
+ if (id == CODEC_ID_PCM_F32LE && bps == 64)
+ id = CODEC_ID_PCM_F64LE;
if (id == CODEC_ID_ADPCM_IMA_WAV && bps == 8)
id = CODEC_ID_PCM_ZORK;
return id;