Opened 4 years ago

Closed 4 years ago

#1169 closed defect (fixed)

Mismatch with VTM on partition constraint range in Picture Header

Reported by: forayr Owned by:
Priority: major Milestone:
Component: spec Version: VVC D10 vA
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In VTM, minQtLog2SizeIntraY is derived after parsing ph_log2_diff_min_qt_min_cb_intra_slice_luma (and depends on its value), and this value is used to derived the range of ph_log2_diff_max_bt_min_qt_intra_slice_luma and ph_log2_diff_max_tt_min_qt_intra_slice_luma.

In the specification, the ranges depends directly to MinQtLog2SizeIntraY (which is derived from SPS parameters).

Change history (15)

comment:1 Changed 4 years ago by yk

It is the software that should be changed to match the spec, right?

comment:2 follow-up: Changed 4 years ago by forayr

I don't think so.
As all calculation in equation 120 to 140 are based on the picture header value, if the range is derived from the sps values, it could lead to not valid value of MaxBtSizeY or MaxTtSizeY (above 128).

comment:3 Changed 4 years ago by hanhuang

Maybe typos? MinCbLog2SizeY should be used instead of MinQtLog2SizeIntraY, and MinCbLog2SizeC should be used instead of MinQtLog2SizeIntraC.

There may be similar issues in the following two:
ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of coding units in intra slice that convey cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_intra_slice shall be in the range of 0 to 2 * ( CtbLog2SizeY − MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma ), inclusive.
When not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.

ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of coding units in intra slice that convey cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_intra_slice shall be in the range of 0 to 2 * ( CtbLog2SizeY − MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma ), inclusive.
When not present, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.

comment:4 in reply to: ↑ 2 Changed 4 years ago by hanhuang

The intention of range constrain was like what you said, to avoid not valid value. But not sure if we can change spec. as typo correction at this moment.
Replying to forayr:

I don't think so.
As all calculation in equation 120 to 140 are based on the picture header value, if the range is derived from the sps values, it could lead to not valid value of MaxBtSizeY or MaxTtSizeY (above 128).

comment:5 Changed 4 years ago by yk

Could you guys help further by clearly indicating what changes should be made to the spec, if any?

comment:6 Changed 4 years ago by forayr

there is a similar issue with the use of MinQtLog2SizeIntraC in the semantics of ph_log2_diff_max_tt_min_qt_intra_slice_chroma and ph_log2_diff_max_bt_min_qt_intra_slice_chroma

comment:7 Changed 4 years ago by forayr

I think the easiest solution will be to update MinQtLog2SizeIntraY and MinQtLog2SizeIntraC at the end of the semantics of respectively ph_log2_diff_min_qt_min_cb_intra_slice_luma and ph_log2_diff_min_qt_min_cb_intra_slice_chroma.

MinQtLog2SizeIntraY = ph_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY
MinQtLog2SizeIntraC = ph_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY

comment:8 follow-up: Changed 4 years ago by yk

Thanks Remy. That's looks good to me.

@Han: Do you see an issue with that?

comment:9 in reply to: ↑ 8 Changed 4 years ago by hanhuang

I think it's correct. The editors can further cleanup equations from 120 to 143 to remove the use of new variables MinQtLog2SizeY and MinQtLog2SizeC if necessary.

Another similar item need to be fixed is the min QT size of inter slice:

ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the base 2 logarithm of the minimum size in luma samples of a luma leaf block resulting from quadtree splitting of a CTU and the base 2 logarithm of the minimum luma coding block size in luma samples for luma CUs in the slices with sh_slice_type equal to 0 (B) or 1 (P) in the current picture. The value of ph_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to Min( 6, CtbLog2SizeY ) − MinCbLog2SizeY, inclusive. When not present, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_inter_slice.
The variable MinQtLog2SizeInterY is set equal to ph_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY

Replying to yk:

Thanks Remy. That's looks good to me.

@Han: Do you see an issue with that?

Last edited 4 years ago by hanhuang (previous) (diff)

comment:10 Changed 4 years ago by yk

Can someone confirm (or comment otherwise) the additional changes suggested by Han?

comment:11 Changed 4 years ago by forayr

I confirm that the update of MinQtLog2SizeInterY at the end of ph_log2_diff_min_qt_min_cb_inter_slice is needed.

comment:12 Changed 4 years ago by yk

Thank you both!

Gosh, we also have a few occurrences of ph_log2_diff_min_qt_min_cb_luma that should be replaced with the corresponding syntax elements.

comment:13 Changed 4 years ago by yk

OK, so besides the replacements of ph_log2_diff_min_qt_min_cb_luma, I added the following:

When ph_log2_diff_min_qt_min_cb_intra_slice_luma is present, the value of MinQtLog2SizeIntraY is updated as follows:
MinQtLog2SizeIntraY = ph_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY

When ph_log2_diff_min_qt_min_cb_intra_slice_chroma is present, the value of MinQtLog2SizeIntraC is updated as follows:
MinQtLog2SizeIntraC = ph_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY

When ph_log2_diff_min_qt_min_cb_inter_slice is present, the value of MinQtLog2SizeInterY is updated as follows:
MinQtLog2SizeInterY = ph_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY

Please let me know if these do not solve all the issues herein.

comment:14 Changed 4 years ago by forayr

I think the update need to always be done (either with the send ph_ value, or the inferred one).
As if a picture overwrite the constraint range, and the following not, we would have on this last picture the constraint range of the previous picture instead of the one send in the sps.

Version 0, edited 4 years ago by forayr (next)

comment:15 Changed 4 years ago by yk

  • Resolution set to fixed
  • Status changed from new to closed

You are right. Thanks! Changed to always update them. Will be fixed as discussed in S2001-vC.

Note: See TracTickets for help on using tickets.