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
comment:2 Changed 6 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Fixed in VVC D4 v1
Milestone renamed