[FFmpeg-devel] [PATCH] sbc: do not set sample format in parser
Marc Gonzalez
marc.w.gonzalez at free.fr
Sat Jan 9 19:52:52 EET 2021
Hello ffmpeg devs,
Any comments on the patch below?
Regards.
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;
More information about the ffmpeg-devel
mailing list