]> git.sesse.net Git - ffmpeg/commitdiff
sbc: do not set sample format in parser
authorArnaud Vrac <avrac@freebox.fr>
Tue, 5 Jan 2021 12:47:43 +0000 (13:47 +0100)
committerJames Almer <jamrial@gmail.com>
Sat, 9 Jan 2021 18:24:32 +0000 (15:24 -0300)
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.

Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/sbc_parser.c

index f56564147a43e5c951b86b11c967a484178b6813..5549b1951cf63cf69e67b445c2757bcb2bf20f23 100644 (file)
@@ -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;