From 24e7a22e1fda8b5b18307a35f0511e659de76389 Mon Sep 17 00:00:00 2001 From: Hendrik Leppkes Date: Wed, 2 May 2012 16:34:45 +0200 Subject: riff: don't overwrite bps from WAVEFORMATEX if EXTENSIBLE doesn't contain that data. According to the specification on the MSDN [1], 0 is valid for that particular field, and it should be ignored in that case. [1]: http://msdn.microsoft.com/en-us/library/windows/desktop/dd757714(v=vs.85).aspx Signed-off-by: Michael Niedermayer --- libavformat/riff.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libavformat') diff --git a/libavformat/riff.c b/libavformat/riff.c index 3fc4fb2d9d..7c91b427d6 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -596,7 +596,9 @@ int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size) cbSize = FFMIN(size, cbSize); if (cbSize >= 22 && id == 0xfffe) { /* WAVEFORMATEXTENSIBLE */ ff_asf_guid subformat; - codec->bits_per_coded_sample = avio_rl16(pb); + int bps = avio_rl16(pb); + if (bps) + codec->bits_per_coded_sample = bps; codec->channel_layout = avio_rl32(pb); /* dwChannelMask */ ff_get_guid(pb, &subformat); if (!memcmp(subformat + 4, (const uint8_t[]){FF_MEDIASUBTYPE_BASE_GUID}, 12)) { -- cgit v1.2.3