From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id B621B4E35B for ; Tue, 20 Jan 2026 03:46:26 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'oi3wSixn19W3lMwNnzHD9ExceLQT5Yr4dcp8HWUQ02A=', expected b'OTEsYzf2uHefPCd7qVNkUQpj56COEfVLhftmQbZgNYM=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768880772; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=oi3wSixn19W3lMwNnzHD9ExceLQT5Yr4dcp8HWUQ02A=; b=rVd2OIIl8GjBn7koGRZAKpxbmhrXrnvYRVz5bWZqicKWNwCi6MEJEAn4heOu9Pj18iAG5 /fqF5Rak7qmbPz3watecmQE4Ym3XSOKIQbcBJ2/LV/+pItFukl0v3pcSWRxi0xNgeo4dsT/ IuVMFanuUiG4Z7iYxYiARxNyayTk3ppaVopsdnTFyo7qPrmtkO2ipASajtjQ3Sxl4eaI3Xq 1i52Q3osnRjwK3SBDzjmsmm/vpJlZU8o66yi8YRYBON8XnmmJDwZSY6+rBDgwcnujuYqfX9 6ZrZMxDzbcAt7RtzUIeXy2ayty7kgpfIntHiYAkt3KzSU1wgtsbq9jnaUMAg== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id D689F690E9B; Tue, 20 Jan 2026 05:46:12 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1768880754; b=P9yC3PmL09vWKkxlYHD+o1cJliSMBmgXk3G/aKwcRIdWB+qDGKx5tMYAgca3kPhjsm9O3 oHfw4giQvQ7T9/NTxL+Vi8mNOdTTjwYsb4zHIHLfPXeqd+XqtKxjmlx87cXgv87kR+pJ6Jr f/Dce2xCDeBTveJEds2sUoPRw5kr/xG7xoI0D6vbxHLR59pfMA66nxpGmARE0ipviXa7BOV gGjCi3dhGn1kkRgUtVL9xjDMAPYwQPPFQvuHP2TO5hUbQEiasMctoDzoddFrzFTRC+L5vii BF0vVba8KcJyYNVN2q2iFeMmHxuJ3fuRhpcgVGC+sd6rwJy0BJzEJPrLUJwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1768880754; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=1L3Gf8h0sh6ZxI43OdFNi2ra8HCHPM6WbJLFVB3hqRw=; b=SDI/+nLQj9cA2ueupXLZcz+lT807xeK0f51ELZ6aw4P5pUPhH8aZmOzXQuR8PsxP6qX6l YpHeQuwZAvVLBCe5U+o+h8yZWQmCg9obNKcMZmZ/pj4PcDKHUQ0C2DbGys108WvXEpeK4O+ IhGd7Xe/7aGePiPidxDwccb4MNql/kkiwHdKVysr+og4VjeF3FL0J/8KCBRr5/do8cX07g8 FPVLTD549Txp9uHAY/6tKewHmEiF9u9rE/9ZbGb9RXTnSqoWoIV2DbAQj/Hyih3vZOCwnY4 Ka1TGT4kan90xK41HHK43/96+H1pj08mrog3MZJpznn4aXpeJK9otXMl0V/Q== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768880746; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=OTEsYzf2uHefPCd7qVNkUQpj56COEfVLhftmQbZgNYM=; b=Osmi67kxfFEyuy0A/6HCBeBdigqEV6oIoqKVyXbrYWDX5gJplKFCxvtbQTXRVPF/QxVYJ 1oX+iz6S7dBCHR2WeBcyVx+ZccbhD0qC7vHswSDiU7I6ZGiwrG0WgOircQWHj22n16ttZEY didDpnd3TGrBItAbxeTtw6/XilcbUm3HMo1BGLhi9kZvZBuWJkGUIvsWsYwj1O3aU5Vf8AC nMvI6ZcgUd3UPKOQMb2tV0r3FPoqO9ktTsZEiVzxcdF5It61+cgaMa8klkuBwYD0DV2TVrw LqiRAJ5tW1QGIR5FZSch0oShgQpNyLGIKY3MDXje5W+GL9wgzOERh/6YteJQ== Received: from 69dab402ede7 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id C84B668BD3B for ; Tue, 20 Jan 2026 05:45:46 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Jan 2026 03:45:46 -0000 Message-ID: <176888074697.25.14098929608519422553@4457048688e7> Message-ID-Hash: GDGDAJOHNJ66EDCMNYLPIOBS7JLBPIHV X-Message-ID-Hash: GDGDAJOHNJ66EDCMNYLPIOBS7JLBPIHV X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] avformat/flv: codec_id assertion failures (PR #21527) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: michaelni via ffmpeg-devel Cc: michaelni Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21527 opened by michaelni URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21527 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21527.patch 2 commits fixing a file which set codec id a little later and with parsing requested and the code fails to handle that >>From c47504ef16897af73ca0f66ef8eb68ebb4ac69af Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 20 Jan 2026 04:14:08 +0100 Subject: [PATCH 1/2] avformat/flvdec: Check need_context_update when audio codec changes We did check video codecs but not audio Fixes: Assertion failure (on codec_id) in parser.c Fixes: 472097507/clusterfuzz-testcase-minimized-ffmpeg_dem_LIVE_FLV_fuzzer-6016386662203392 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer --- libavformat/flvdec.c | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index c75345d882..d10fbf216e 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -301,9 +301,13 @@ static int flv_same_audio_codec(AVCodecParameters *apar, int flags, uint32_t cod } } -static void flv_set_audio_codec(AVFormatContext *s, AVStream *astream, +static int flv_set_audio_codec(AVFormatContext *s, AVStream *astream, AVCodecParameters *apar, int flv_codecid) { + FFStream *const astreami = ffstream(astream); + AVCodecParameters *par = astream->codecpar; + enum AVCodecID old_codec_id = astream->codecpar->codec_id; + switch (flv_codecid) { // no distinction between S16 and S8 PCM codec flags case FLV_CODECID_PCM: @@ -356,28 +360,34 @@ static void flv_set_audio_codec(AVFormatContext *s, AVStream *astream, break; case MKBETAG('m', 'p', '4', 'a'): apar->codec_id = AV_CODEC_ID_AAC; - return; + break; case MKBETAG('O', 'p', 'u', 's'): apar->codec_id = AV_CODEC_ID_OPUS; apar->sample_rate = 48000; - return; + break; case MKBETAG('.', 'm', 'p', '3'): apar->codec_id = AV_CODEC_ID_MP3; - return; + break; case MKBETAG('f', 'L', 'a', 'C'): apar->codec_id = AV_CODEC_ID_FLAC; - return; + break; case MKBETAG('a', 'c', '-', '3'): apar->codec_id = AV_CODEC_ID_AC3; - return; + break; case MKBETAG('e', 'c', '-', '3'): apar->codec_id = AV_CODEC_ID_EAC3; - return; + break; default: avpriv_request_sample(s, "Audio codec (%x)", flv_codecid >> FLV_AUDIO_CODECID_OFFSET); apar->codec_tag = flv_codecid >> FLV_AUDIO_CODECID_OFFSET; } + + if (!astreami->need_context_update && par->codec_id != old_codec_id) { + avpriv_request_sample(s, "Changing the codec id midstream"); + return AVERROR_PATCHWELCOME; + } + return 0; } static int flv_same_video_codec(AVCodecParameters *vpar, uint32_t flv_codecid) @@ -719,7 +729,9 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, return ret; } else if (!strcmp(key, "audiocodecid") && apar) { int id = ((int)num_val) << FLV_AUDIO_CODECID_OFFSET; - flv_set_audio_codec(s, astream, apar, id); + int ret = flv_set_audio_codec(s, astream, apar, id); + if (ret < 0) + return ret; } else if (!strcmp(key, "audiosamplerate") && apar) { apar->sample_rate = num_val; } else if (!strcmp(key, "audiosamplesize") && apar) { @@ -1641,8 +1653,10 @@ retry_duration: st->codecpar->bits_per_coded_sample = bits_per_coded_sample; } if (!st->codecpar->codec_id) { - flv_set_audio_codec(s, st, st->codecpar, + ret = flv_set_audio_codec(s, st, st->codecpar, flags & FLV_AUDIO_CODECID_MASK); + if (ret < 0) + goto leave; flv->last_sample_rate = sample_rate = st->codecpar->sample_rate; flv->last_channels = @@ -1655,14 +1669,19 @@ retry_duration: } par->sample_rate = sample_rate; par->bits_per_coded_sample = bits_per_coded_sample; - flv_set_audio_codec(s, st, par, flags & FLV_AUDIO_CODECID_MASK); + ret = flv_set_audio_codec(s, st, par, flags & FLV_AUDIO_CODECID_MASK); + if (ret < 0) + goto leave; sample_rate = par->sample_rate; avcodec_parameters_free(&par); } } else if (stream_type == FLV_STREAM_TYPE_AUDIO) { - if (!st->codecpar->codec_id) - flv_set_audio_codec(s, st, st->codecpar, + if (!st->codecpar->codec_id) { + ret = flv_set_audio_codec(s, st, st->codecpar, codec_id ? codec_id : (flags & FLV_AUDIO_CODECID_MASK)); + if (ret < 0) + goto leave; + } // These are not signalled in the flags anymore channels = 0; -- 2.52.0 >>From 9f076ed04ef2dc05c89aa04f4120f5a3aa432fc0 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 20 Jan 2026 04:16:43 +0100 Subject: [PATCH 2/2] avformat/demux: Allow non opened codec in has_decode_delay_been_guessed() Fixes: assertion failure Fixes: 472097507/clusterfuzz-testcase-minimized-ffmpeg_dem_LIVE_FLV_fuzzer-6016386662203392 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer --- libavformat/demux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/demux.c b/libavformat/demux.c index 06cb8d0c54..5aa4a6c61b 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -762,7 +762,7 @@ static int has_decode_delay_been_guessed(AVStream *st) if (st->codecpar->codec_id != AV_CODEC_ID_H264) return 1; if (!sti->info) // if we have left find_stream_info then nb_decoded_frames won't increase anymore for stream copy return 1; - av_assert0(sti->avctx->codec_id == AV_CODEC_ID_H264); + av_assert0(sti->avctx->codec_id == AV_CODEC_ID_H264 || (sti->avctx->codec_id == AV_CODEC_ID_NONE && !avcodec_is_open(sti->avctx))); #if CONFIG_H264_DECODER if (sti->avctx->has_b_frames && avcodec_is_open(sti->avctx) && avpriv_h264_has_num_reorder_frames(sti->avctx) == sti->avctx->has_b_frames) -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org