mp3dec: fix reading the Xing tag
authorAnton Khirnov <anton@khirnov.net>
Sat, 18 Oct 2014 14:25:16 +0000 (16:25 +0200)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Mon, 12 Jan 2015 23:02:16 +0000 (00:02 +0100)
The quality scale field is only supposed to be present if the fourth bit
is set. In practice, lame always sets it, but other tools might not.

CC:libav-stable@libav.org

libavformat/mp3dec.c

index ce734b7..bf12fdb 100644 (file)
@@ -36,6 +36,7 @@
 #define XING_FLAG_FRAMES 0x01
 #define XING_FLAG_SIZE   0x02
 #define XING_FLAG_TOC    0x04
+#define XING_FLAC_QSCALE 0x08
 
 #define XING_TOC_COUNT 100
 
@@ -168,7 +169,8 @@ static void mp3_parse_info_tag(AVFormatContext *s, AVStream *st,
                                        st->time_base));
 
     /* VBR quality */
-    avio_rb32(s->pb);
+    if (v & XING_FLAC_QSCALE)
+        avio_rb32(s->pb);
 
     /* Encoder short version string */
     memset(version, 0, sizeof(version));