[FFmpeg-cvslog] avcodec/speexdec: fix setting frame_size from extradata

James Almer git at videolan.org
Mon Jan 22 16:01:36 EET 2024


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Fri Jan 19 22:35:35 2024 -0300| [ab39cc36c72bb73318bb911acb66873de850a107] | committer: James Almer

avcodec/speexdec: fix setting frame_size from extradata

Finishes fixing vp5/potter512-400-partial.avi

The fate-matroska-ms-mode test ref is updated to reflect that the Speex decoder
can now read the stream.

Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ab39cc36c72bb73318bb911acb66873de850a107
---

 libavcodec/speexdec.c           | 4 +---
 tests/ref/fate/matroska-ms-mode | 2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/libavcodec/speexdec.c b/libavcodec/speexdec.c
index c73b2a7ec2..51c5834769 100644
--- a/libavcodec/speexdec.c
+++ b/libavcodec/speexdec.c
@@ -1420,9 +1420,7 @@ static int parse_speex_extradata(AVCodecContext *avctx,
     if (s->nb_channels <= 0 || s->nb_channels > 2)
         return AVERROR_INVALIDDATA;
     s->bitrate = bytestream_get_le32(&buf);
-    s->frame_size = bytestream_get_le32(&buf);
-    if (s->frame_size < NB_FRAME_SIZE << s->mode)
-        return AVERROR_INVALIDDATA;
+    s->frame_size = (1 + (s->mode > 0)) * bytestream_get_le32(&buf);
     s->vbr = bytestream_get_le32(&buf);
     s->frames_per_packet = bytestream_get_le32(&buf);
     if (s->frames_per_packet <= 0 ||
diff --git a/tests/ref/fate/matroska-ms-mode b/tests/ref/fate/matroska-ms-mode
index 5c91209910..0e31c990dc 100644
--- a/tests/ref/fate/matroska-ms-mode
+++ b/tests/ref/fate/matroska-ms-mode
@@ -1,4 +1,4 @@
-a2897e3951b0054d0fa31fe51860444f *tests/data/fate/matroska-ms-mode.matroska
+e7f44cd6a5c0f45fea11874afb8c1c0d *tests/data/fate/matroska-ms-mode.matroska
 413103 tests/data/fate/matroska-ms-mode.matroska
 #extradata 0:       40, 0x54290c93
 #extradata 1:      114, 0xb6c80771



More information about the ffmpeg-cvslog mailing list