[libav-stable] mp3dec: fix reading the Xing tag

Anton Khirnov git at libav.org
Fri Oct 24 09:09:45 CEST 2014


Module: libav
Branch: master
Commit: 99143140dea12363af680d02e23cb42cfe191679

Author:    Anton Khirnov <anton at khirnov.net>
Committer: Anton Khirnov <anton at khirnov.net>
Date:      Sat Oct 18 16:25:16 2014 +0200

mp3dec: fix reading the Xing tag

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 at libav.org

---

 libavformat/mp3dec.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c
index 14d8254..5aee21f 100644
--- a/libavformat/mp3dec.c
+++ b/libavformat/mp3dec.c
@@ -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
 
@@ -165,7 +166,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));



More information about the libav-stable mailing list