In the picture header parser, the chroma branch incorrectly tested
sps_max_mtt_hierarchy_depth_intra_slice_chroma to decide whether to
parse ph_log2_diff_max_{bt,tt}_min_qt_intra_slice_chroma.Per ITU-T H.266 (V4, 01/2026) section 7.3.2.8 "Picture header structure syntax", the condition is on the just-parsed ph_max_mtt_hierarchy_depth_intra_slice_chroma, exactly mirroring the luma branch a few lines above and the inter-slice branch below. sps_partition_constraints_override_enabled_flag allows the picture header to override the SPS values, so testing the SPS field is incorrect and desynchronises the parser whenever the PH override changes the chroma MTT depth from/to zero. Signed-off-by: Mou Fan <[email protected]> --- libavcodec/cbs_h266_syntax_template.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/cbs_h266_syntax_template.c b/libavcodec/cbs_h266_syntax_template.c index 98a8954943..fc79ba46c7 100644 --- a/libavcodec/cbs_h266_syntax_template.c +++ b/libavcodec/cbs_h266_syntax_template.c @@ -2819,7 +2819,7 @@ static int FUNC(picture_header) (CodedBitstreamContext *ctx, RWContext *rw, 0, FFMIN(6, ctb_log2_size_y) - min_cb_log2_size_y); ue(ph_max_mtt_hierarchy_depth_intra_slice_chroma, 0, 2 * (ctb_log2_size_y - min_cb_log2_size_y)); - if (sps->sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0) { + if (current->ph_max_mtt_hierarchy_depth_intra_slice_chroma != 0) { unsigned int min_qt_log2_size_intra_c = current->ph_log2_diff_min_qt_min_cb_intra_slice_chroma + min_cb_log2_size_y; -- 2.39.3 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
