riff: don't overwrite bps from WAVEFORMATEX if EXTENSIBLE doesn't contain that data.
authorHendrik Leppkes <h.leppkes@gmail.com>
Wed, 2 May 2012 14:34:45 +0000 (16:34 +0200)
committerAnton Khirnov <anton@khirnov.net>
Fri, 22 Jul 2016 17:08:12 +0000 (19:08 +0200)
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

Bug-Id: 950

Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavformat/riffdec.c

index 531413c..8124835 100644 (file)
@@ -57,7 +57,11 @@ enum AVCodecID ff_codec_guid_get_id(const AVCodecGuid *guids, ff_asf_guid guid)
 static void parse_waveformatex(AVIOContext *pb, AVCodecParameters *par)
 {
     ff_asf_guid subformat;
-    par->bits_per_coded_sample = avio_rl16(pb);
+    int bps;
+
+    bps = avio_rl16(pb);
+    if (bps)
+        par->bits_per_coded_sample = bps;
     par->channel_layout        = avio_rl32(pb); /* dwChannelMask */
 
     ff_get_guid(pb, &subformat);