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