Opened 2 months ago

Last modified 7 weeks ago

#1638 new defect

Incorrect sps_qtbtt_dual_tree_intra_flag value in TREE_C_HHI

Reported by: adamjw Owned by:
Priority: major Milestone:
Component: Conformance Version:
Keywords: Cc: ksuehring, fbossen, jvet@…


The spec states: "sps_log2_diff_max_bt_min_qt_intra_slice_luma... The value of sps_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY − MinQtLog2SizeIntraY, inclusive. When sps_log2_diff_max_bt_min_qt_intra_slice_luma is not present, the value of sps_log2_diff_max_bt_min_qt_intra_slice_luma is inferred to be equal to 0."

In TREE_C, CTU of 128 is always used. For that specific segment of the sequence minQtSize of 16 is used for intra, and maximum BT size of 128. This implies no dual I tree is used, because for CTU size 128 and dual I tree, an implicit QT split is used, making maximum BT size of 128 obsolete. Still, dual I tree is still used.

Proposed fix is to transcode the sequence and clip sps_log2_diff_max_bt_min_qt_intra_slice_luma to a maximal value that will not break the restriction. Since the too large value is otherwise ignored because of the implicit dual I tree split, all the remaining bitstream as well as the reconstruction hashes should be valid. Will try to provide an updated bitstream soon.

Change history (6)

comment:1 follow-up: Changed 2 months ago by iole_moccagatta

TREE_C consists of multiple streams which update the SPS coding tree settings, so the SPSs have different values of sps_log2_diff_max_bt_min_qt_intra_slice_luma. Which SPS(s) are you proposing to modify ?

comment:2 in reply to: ↑ 1 Changed 2 months ago by adamjw

Replying to iole_moccagatta:

The second one for sure. It is to be confirmed if the problem also occurs in any other SPS(s).

Last edited 2 months ago by adamjw (previous) (diff)

comment:3 follow-up: Changed 2 months ago by iole_moccagatta

The value of the second SPS's sps_log2_diff_max_bt_min_qt_intra_slice_luma is 3. Which value are you proposing ?

comment:4 in reply to: ↑ 3 Changed 2 months ago by adamjw

I propose using 2. I hope this would not change the syntax or semantics of any other syntax element of this segment. Using any other value would change the syntax and or semantics of the split signaling, requiring full reencoding.

comment:5 follow-up: Changed 8 weeks ago by iole_moccagatta

Thanks for the clarifications.

To make sure I understand: the rationale for this change is that under these conditions:
1) CTU=128
2) minQtSize = 16 for intra
3) dual Intra tree

an implicit QT split is done because of dual Intra tree.
Maximum BT after implicit QT split is 64, not 128.

sps_log2_diff_max_bt_min_qt_intra_slice_luma = 3 (maximum BT = 128)
should be replaced by
sps_log2_diff_max_bt_min_qt_intra_slice_luma = 2 (maximum BT = 64)

Please confirm or correct.

comment:6 in reply to: ↑ 5 Changed 7 weeks ago by adamjw

I confirm that your understanding is correct. I will try and prepare an appropriate bitstream this week. I will than also be able to check if the rest of the bitstream is correct or possibly another SPS needs a similar fix.

Note: See TracTickets for help on using tickets.