Opened 6 years ago

Closed 6 years ago

#154 closed defect (fixed)

Availability check for CPR/IBC chroma CU reference block is missing

Reported by: axink Owned by:
Priority: major Milestone: VVC D4 v1
Component: spec Version: VVC D3 v9
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

When dual-tree is used, the reference block for a chroma CU coded in CPR/IBC mode should be already reconstructed. This is not always guaranteed as chroma blocks are coded separately from luma. Availability check is necessary in this case but missed in the current spec text. A possible fix is provided as follows:


– The derivation process for chroma motion vectors in clause 8.4.2.13 is invoked with mvL0[ xSbIdx ][ ySbIdx ] and refIdxL0 as inputs, and mvCL0[ xSbIdx ][ ySbIdx ] as output.
(ADDED TEXT START)
– It is a requirement of bitstream conformance that the chroma motion vector mvCL0 shall obey the following constraints:
– When the derivation process for block availability as specified in clause 6.4.X [Ed. (BB): Neighbouring blocks availability checking process tbd] is invoked with the current chroma location ( xCurr, yCurr ) set equal to ( xCb / SubWidthC, yCb / SubHeightC ) and the neighbouring chroma location ( xCb / SubWidthC + ( mvCL0[ xSbIdx ][ ySbIdx ][ 0 ] >> 5 ), yCb / SubHeightC + ( mvCL0[ xSbIdx ][ ySbIdx ][ 1 ] >> 5 ) ) as inputs, and the output shall be equal to TRUE.
– When the derivation process for block availability as specified in clause 6.4.X [Ed. (BB): Neighbouring blocks availability checking process tbd] is invoked with the current chroma location ( xCurr, yCurr ) set equal to ( xCb / SubWidthC, yCb / SubHeightC ) and the neighbouring chroma location ( xCb / SubWidthC + ( mvCL0[ xSbIdx ][ ySbIdx ][ 0 ] >> 5 ) + cbWidth / SubWidthC − 1, yCb / SubHeightC + ( mvCL0[ xSbIdx ][ ySbIdx ][ 1 ] >> 5 ) + cbHeight / SubHeightC − 1 ) as inputs, and the output shall be equal to TRUE.
(ADDED TEXT END)
– One or both of the following conditions shall be true:
– ( mvCL0[ xSbIdx ][ ySbIdx ][ 0 ] >> 5 ) + xSbIdx * 2 + 2 is less than or equal to 0.
– ( mvCL0[ xSbIdx ][ ySbIdx ][ 1 ] >> 5 ) + ySbIdx * 2 + 2 is less than or equal to 0.

Change history (2)

comment:1 Changed 6 years ago by bbross

  • Milestone changed from VVC D4 to VVC D4 v1

Milestone renamed

comment:2 Changed 6 years ago by bbross

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

Fixed in VVC D4 v1

Note: See TracTickets for help on using tickets.