diff mbox series

[FFmpeg-devel,v2,1/2] avformat/mvdec: fix reading number of audio channels

Message ID 20211127214551.22949-1-jpstewart@personalprojects.net
State Accepted
Commit 4a90c039e7a17c913d2961f902f667d38490b6ab
Headers show
Series [FFmpeg-devel,v2,1/2] avformat/mvdec: fix reading number of audio channels | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

John-Paul Stewart Nov. 27, 2021, 9:45 p.m. UTC
The number of audio channels is stored after the magic number
identifying the audio format.  Prior to this patch the code has been
reading it earlier, causing files with only one audio channel to be
handled incorrectly.
---
 libavformat/mvdec.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/libavformat/mvdec.c b/libavformat/mvdec.c
index d58281c3a9..8492928820 100644
--- a/libavformat/mvdec.c
+++ b/libavformat/mvdec.c
@@ -340,8 +340,8 @@  static int mv_read_header(AVFormatContext *avctx)
             return AVERROR_INVALIDDATA;
         }
         avpriv_set_pts_info(ast, 33, 1, ast->codecpar->sample_rate);
-        if (set_channels(avctx, ast, avio_rb32(pb)) < 0)
-            return AVERROR_INVALIDDATA;
+
+        avio_skip(pb, 4);
 
         v = avio_rb32(pb);
         if (v == AUDIO_FORMAT_SIGNED) {
@@ -350,7 +350,11 @@  static int mv_read_header(AVFormatContext *avctx)
             avpriv_request_sample(avctx, "Audio compression (format %i)", v);
         }
 
-        avio_skip(pb, 12);
+        if (set_channels(avctx, ast, avio_rb32(pb)) < 0)
+            return AVERROR_INVALIDDATA;
+
+        avio_skip(pb, 8);
+
         var_read_metadata(avctx, "title", 0x80);
         var_read_metadata(avctx, "comment", 0x100);
         avio_skip(pb, 0x80);