[FFmpeg-devel] [PATCH] sbc: do not set sample format in parser
James Almer
jamrial at gmail.com
Sat Jan 9 20:26:56 EET 2021
On 1/9/2021 2:52 PM, Marc Gonzalez wrote:
> Hello ffmpeg devs,
>
> Any comments on the patch below?
>
> Regards.
Applied, thanks.
>
> On 05/01/2021 16:57, Marc Gonzalez wrote:
>
>> From: Arnaud Vrac <avrac at freebox.fr>
>> Date: Tue, 5 Jan 2021 13:47:43 +0100
>>
>> Commit bdd31feec934 changed the SBC decoder to only set the output
>> sample format on init, instead of setting it explicitly on each frame,
>> which is correct. But the SBC parser overrides the sample format to S16,
>> which triggers a crash when combining the parser and the decoder.
>>
>> Fix the issue by not setting the sample format anymore in the parser,
>> which is wrong.
>> ---
>> We've been seeing the following crash signature:
>>
>> Crash reason: SIGSEGV /0x00000000
>> Crash address: 0x0
>> 0 libavcodec.so.58 sbc_decode_frame
>> 1 libavcodec.so.58 decode_receive_frame_internal
>> 2 libavcodec.so.58 avcodec_send_packet
>> 3 fbxbta2dp decoder_th_func
>> 4 libpthread.so.0 start_thread
>> 5 libc.so.6 thread_start
>>
>> NB: call stack obtained via CFI, so not necessarily correct
>> ---
>> libavcodec/sbc_parser.c | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/libavcodec/sbc_parser.c b/libavcodec/sbc_parser.c
>> index f56564147a..5549b1951c 100644
>> --- a/libavcodec/sbc_parser.c
>> +++ b/libavcodec/sbc_parser.c
>> @@ -42,7 +42,6 @@ static int sbc_parse_header(AVCodecParserContext *s, AVCodecContext *avctx,
>>
>> if (data[0] == MSBC_SYNCWORD && data[1] == 0 && data[2] == 0) {
>> avctx->channels = 1;
>> - avctx->sample_fmt = AV_SAMPLE_FMT_S16;
>> avctx->sample_rate = 16000;
>> avctx->frame_size = 120;
>> s->duration = avctx->frame_size;
>> @@ -66,7 +65,6 @@ static int sbc_parse_header(AVCodecParserContext *s, AVCodecContext *avctx,
>> + (joint * subbands)) + 7) / 8;
>>
>> avctx->channels = channels;
>> - avctx->sample_fmt = AV_SAMPLE_FMT_S16;
>> avctx->sample_rate = sample_rates[sr];
>> avctx->frame_size = subbands * blocks;
>> s->duration = avctx->frame_size;
> _______________________________________________
> 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