mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-06-16 04:32:47 +02:00
avcodec/cbs_h266: fix wrong condition for chroma MTT depth in PH
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 <moufan17@126.com>
(cherry-picked from commit 28ecb07e55)
This commit is contained in:
@@ -2808,7 +2808,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 =
|
||||
sps->sps_log2_diff_min_qt_min_cb_intra_slice_chroma +
|
||||
min_cb_log2_size_y;
|
||||
|
||||
Reference in New Issue
Block a user