[FFmpeg-devel] [PATCH 2/2] avcodec/speexdec: fix setting frame_size from extradata

James Almer jamrial at gmail.com
Wed Jan 24 20:52:06 EET 2024


On 1/24/2024 11:35 AM, Andreas Rheinhardt wrote:
> James Almer:
>> 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>
>> ---
>>   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
> 
> This changes the checksum of the generated Matroska file; presumably
> some header parameter is now set differently without affecting the size
> of the generated file (which one?). But this means that this test

mkvinfo for the output, pre and post patch:

--- old.txt     2024-01-24 15:48:57.639516100 -0300
+++ new.txt     2024-01-24 15:49:01.301839500 -0300
@@ -42,7 +42,7 @@
  |  + Audio track
  |   + Channels: 1
  |   + Sampling frequency: 32000
-|   + Bit depth: 16
+|   + Bit depth: 32
  |  + Maximum block additional ID: 0
  |  + Codec's private data: size 132 (format tag: 0xa109)
  |+ Tags

Post patch the audio stream is reported as FLT AVSampleFormat.

> probably needs an explicit dependency on the speex decoder (which it
> currently doesn't have).

Can add one.

> 
> - Andreas
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list