On 3/20/2022 2:03 PM, James Almer wrote:
On 3/19/2022 10:47 AM, Anton Khirnov wrote:
Quoting James Almer (2022-03-19 04:04:07)
The function is not meant to clear codec parameters, and the lavf
demux code
relies on this behavior.
Maybe it shouldn't?
Which code is it exactly?
The parser included by demux.c. That file calls avcodec_close() in
certain situations, but the avctx is still used when calling
av_parser_parse2() as it's expected that all the parameters are left
intact, and all were until 327efa6633, where avctx->ch_layout started
being uninitialized, and it shouldn't.
An alternative is
diff --git a/libavformat/demux.c b/libavformat/demux.c
index c1c9422ac0..c14e44cb07 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -2957,6 +2957,7 @@ find_stream_info_err:
av_freep(&sti->info);
}
avcodec_close(sti->avctx);
+ avcodec_parameters_to_context(sti->avctx, st->codecpar);
av_bsf_free(&sti->extract_extradata.bsf);
}
if (ic->pb) {
Which works around this specific issue, but either way,
avcodec_close(avctx) should not nuke avctx->ch_layout.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".