From patchwork Tue Jan 5 15:57:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Gonzalez X-Patchwork-Id: 24802 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0785E44ADBC for ; Tue, 5 Jan 2021 17:58:04 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CF90F68A18D; Tue, 5 Jan 2021 17:58:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtp6-g21.free.fr (smtp6-g21.free.fr [212.27.42.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DF59B689B8C for ; Tue, 5 Jan 2021 17:57:56 +0200 (EET) Received: from [192.168.1.91] (unknown [77.207.133.132]) (Authenticated sender: marc.w.gonzalez) by smtp6-g21.free.fr (Postfix) with ESMTPSA id 879DC780373; Tue, 5 Jan 2021 16:57:44 +0100 (CET) To: ffmpeg-devel@ffmpeg.org, Anton Khirnov , Aurelien Jacobs , Michael Niedermayer From: Marc Gonzalez Message-ID: <55f514f1-3148-d5c3-22c1-31d233ce0f19@free.fr> Date: Tue, 5 Jan 2021 16:57:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] [PATCH] sbc: do not set sample format in parser X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Arnaud Vrac Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Arnaud Vrac 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;