Opened 6 years ago
Closed 5 years ago
#290 closed defect (fixed)
Mismatch on collocated subblock location in SbTMVP between VTM and spec
Reported by: | chhuanb | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | VVC D5 v10 |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
In specification, the collocated location of each sub-block is derived as follow (in clause 8.5.5.3):
– The luma location ( xSb, ySb ) specifying the top-left sample of the current coding subblock relative to the top left luma sample of the current picture is derived as follows: xSb = xCb + xSbIdx * sbWidth (8 538) ySb = yCb + ySbIdx * sbHeight (8 539) – The location ( xColSb, yColSb ) of the collocated subblock inside ColPic is derived as follows. xColSb = Clip3( xCtb, Min( CurPicWidthInSamplesY − 1, xCtb + ( 1 << CtbLog2SizeY ) + 3 ), (8 540) xSb + ( tempMv[0] >> 4 ) ) yColSb = Clip3( yCtb, Min( CurPicHeightInSamplesY − 1, yCtb + ( 1 << CtbLog2SizeY ) − 1 ), (8 541) ySb + ( tempMv[1] >> 4 ) )
which means the collocated location is equal to "top-left sample location + temporal motion vector".
In VTM, the collocated location of each sub-block is derived as follow (in function getInterMergeSubPuMvpCand):
int xOff = (puWidth >> 1) + tempX; int yOff = (puHeight >> 1) + tempY; MotionBuf& mb = mrgCtx.subPuMvpMiBuf; const bool isBiPred = isBipredRestriction(pu); for (int y = puPos.y; y < puPos.y + puSize.height; y += puHeight) { for (int x = puPos.x; x < puPos.x + puSize.width; x += puWidth) { Position colPos{ x + xOff, y + yOff }; clipColPos(colPos.x, colPos.y, pu); ... ... } }
which means the collocated location is equal to "below-right center sample location + temporal motion vector".
It is suggested to align spec to software as follow:
– The luma location ( xSb, ySb ) specifying the below-right center sample of the current coding subblock relative to the top left luma sample of the current picture is derived as follows: xSb = xCb + xSbIdx * sbWidth + (sbWidth >> 1) (8 538) ySb = yCb + ySbIdx * sbHeight + (sbHeight >> 1) (8 539) – The location ( xColSb, yColSb ) of the collocated subblock inside ColPic is derived as follows. xColSb = Clip3( xCtb, Min( CurPicWidthInSamplesY − 1, xCtb + ( 1 << CtbLog2SizeY ) + 3 ), (8 540) xSb + ( tempMv[0] >> 4 ) ) yColSb = Clip3( yCtb, Min( CurPicHeightInSamplesY − 1, yCtb + ( 1 << CtbLog2SizeY ) − 1 ), (8 541) ySb + ( tempMv[1] >> 4 ) )
Change history (7)
comment:1 Changed 6 years ago by bbross
- Version changed from VVC D5 v6 to VVC D5 v7
comment:2 Changed 6 years ago by bbross
- Version changed from VVC D5 v7 to VVC D5 v8
comment:3 Changed 6 years ago by bbross
comment:4 Changed 5 years ago by bbross
- Version changed from VVC D5 v8 to VVC D5 v9
comment:5 Changed 5 years ago by bbross
- Version changed from VVC D5 v9 to VVC D5 v10
comment:6 Changed 5 years ago by bbross
Fixed in D6 vC
comment:7 Changed 5 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Fixed in D6 vC
Note: See TracTickets for help on using tickets.
Ticket #329 has been marked as a duplicate of this ticket.