MinQtLog2SizeIntraC is usually (eq. (51) from VVCv3) defined as sps_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY However, in the case ph_log2_diff_min_qt_min_cb_intra_slice_chroma is present, it is instead (eq. (83) from VVCv3) defined as ph_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY When ph_log2_diff_max_bt_min_qt_intra_slice_chroma and ph_log2_diff_max_tt_min_qt_intra_slice_chroma are present, so is ph_log2_diff_min_qt_min_cb_intra_slice_chroma, and so we should use the second definition of MinQtLog2SizeIntraC, rather than the first, when calculating the bounds for these syntax elements.
Showing the changes to libavcodec (1 of 1 file). Show all
Unified · Split
| @@ -2812,7 +2812,7 @@ static int FUNC(picture_header) (CodedBitstreamContext *ctx, RWContext *rw, · 2811 unmodified lines | ||
| 2812 | 2812 | 0, 2 * (ctb_log2_size_y - min_cb_log2_size_y)); |
| 2813 | 2813 | if (sps->sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0) { |
| 2814 | 2814 | unsigned int min_qt_log2_size_intra_c = |
| 2815 | − sps->sps_log2_diff_min_qt_min_cb_intra_slice_chroma + | |
| 2815 | + current->ph_log2_diff_min_qt_min_cb_intra_slice_chroma + | |
| 2816 | 2816 | min_cb_log2_size_y; |
| 2817 | 2817 | ue(ph_log2_diff_max_bt_min_qt_intra_slice_chroma, |
| 2818 | 2818 | 0, FFMIN(6, ctb_log2_size_y) - min_qt_log2_size_intra_c); |