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:[email protected]
---
 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));
-- 
2.0.0

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to