Opened 2 months ago

Closed 9 days ago

#470 closed defect (fixed)

4x4 Inter CUs with JVET-O0050 (SCIPU)

Reported by: bheng Owned by:
Priority: major Milestone:
Component: spec Version: VVC D6 vE
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

Prior to JVET-O0050, any 4x4 CU was inferred to be INTRA predicted (or IBC). This prevented any 4x4 INTER prediction.

After JVET-O0050, any CU within a modeType == MODE_TYPE_INTER constrained region must be inter coded. This would include any 4x4 CUs. Meaning the previous approach for preventing 4x4 INTER does not work in this case.

There do not appear to be any new checks in Section 6.4.1 through 6.4.3 to prevent 4x4 CUs in MODE_TYPE_INTER regions. So, it would appear that 4x4 INTER prediction has been accidentially reintroduced.

Assuming it was not intentional for JVET-O0050 to reintroduce 4x4 INTER prediction, additional checks should be added to the "Allowed Split Processes" in Section 6.4 to prevent this.

Change history (6)

comment:1 Changed 2 months ago by zhaoyin

You are right. Please refer to comment 1 in VTM ticket 439 (https://jvet.hhi.fraunhofer.de/trac/vvc/ticket/439).

The suggested spec text fix for this issue is as follows:

Add one check in allowBtSplit derivation(the last sentence in the following paragraph)

The variable allowBtSplit is derived as follows:
–	If one or more of the following conditions are true, allowBtSplit is set equal to FALSE:
  –	cbSize is less than or equal to MinBtSizeY
  –	cbWidth is greater than maxBtSize
  –	cbHeight is greater than maxBtSize
  –	mttDepth is greater than or equal to maxMttDepth
  –	treeType is equal to DUAL_TREE_CHROMA and ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC ) is less than or equal to 16
  –	treeType is equal to DUAL_TREE_CHROMA and modeType is equal to MODE_TYPE_INTRA
  –	modeType is equal to MODE_TYPE_INTER and cbWidth * cbHeight is equal to 32

Add one check in allowTtSplit derivation (the last sentence in the following paragraph)

The variable allowTtSplit is derived as follows:
–	If one or more of the following conditions are true, allowTtSplit is set equal to FALSE:
  –	cbSize is less than or equal to 2 * MinTtSizeY
  –	cbWidth is greater than Min( MaxTbSizeY, maxTtSize )
  –	cbHeight is greater than Min( MaxTbSizeY, maxTtSize )
  –	mttDepth is greater than or equal to maxMttDepth
  –	x0 + cbWidth is greater than pic_width_in_luma_samples
  –	y0 + cbHeight is greater than pic_height_in_luma_samples
  –	treeType is equal to DUAL_TREE_CHROMA and ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC ) is less than or equal to 32
  –	treeType is equal to DUAL_TREE_CHROMA and modeType is equal to MODE_TYPE_INTRA
  –	modeType is equal to MODE_TYPE_INTER and cbWidth * cbHeight is equal to 64

comment:2 Changed 2 months ago by hmjang

Thanks yin,

I think one more fix should be considered for QT split as follow:

The variable allowSplitQt is derived as follows:
–	If one or more of the following conditions are true, allowSplitQt is set equal to FALSE:
–	treeType is equal to SINGLE_TREE or DUAL_TREE_LUMA and cbSize is less than or equal to MinQtSizeY
–	treeType is equal to DUAL_TREE_CHROMA and cbSize / SubWidthC is less than or equal to MinQtSizeC
–	mttDepth is not equal to 0
–	treeType is equal to DUAL_TREE_CHROMA and ( cbSize / SubWidthC ) is less than or equal to 4
–	treeType is equal to DUAL_TREE_CHROMA and modeType is equal to MODE_TYPE_INTRA
–	modeType is equal to MODE_TYPE_INTER and cbSize is equal to 8
–	Otherwise, allowSplitQt is set equal to TRUE.

comment:3 Changed 2 months ago by zhaoyin

Thanks for the suggestion. However, restriction on allowQtSplit seems not necessary to me.

If the current node is 8x8 and the current node split with QT, it means the parent node of the current node is 16x16. A 16x16 node split by a quad-tree split will not make its child nodes (i.e., the current 8x8 node) enter MODE_TYPE_INTER status. Therefore, the current 8x8 node is still in MODE_TYPE_ALL status. So, I think this added condition (i.e., modeType is equal to MODE_TYPE_INTER and cbSize is equal to 8) would never be true.

Besides, if the current 8x8 node split by QT, this 8x8 region must be in MODE_TYPE_INTRA status, according to the derivation of modeType. So, in this case, it won't introduce 4x4 luma inter blocks.

comment:4 Changed 2 months ago by hmjang

Thanks for confimation.
On second thoughts, you are correct.

I just assume the case that a parents node is 16x8 block which is split to TT with MODE_TYPE_INTER case.
In this case, child nodes could be 8x8. But allowQtSplit is forced to false for child node. Because the mttDepth is not equal to 0.
so, the suggested AllowQtSplit condition is redundant with mttDepth condition for this case.

Again, thanks.

comment:5 Changed 2 months ago by zhou

Will the spec text be fixed now? Apparently, we did not intend to bring 4x4 inter PUs back because of the removal of 2x2/2x4/4x2 chroma intra prediction blocks.

comment:6 Changed 9 days ago by bbross

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

This issue should be fixed by the following meeting decision:
"Decision: Adopt the first aspect of P0063."

Note: See TracTickets for help on using tickets.