Opened 14 months ago

Closed 14 months ago

Last modified 14 months ago

#1340 closed defect (fixed)

Edge range in 8.8.3.4

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

Description

For coding blocks with width of 4, the following range:

xEdge = 0..min( ( nCbW / 8 ) - 1, numSbX - 1)

will evaluate to xEdge = [0 .. -1], since (nCbW / 8) is 0.

Depending on how one interprets that backwards range, either the xEdge set is empty, or xEdge goes backwards outside the CU. In either case, the behavior is not correct.

For example, if one treats xEdge as empty, the edgeIdc[x][y] is never set to 2 for the CU edge, and any motion vector differences are ignored for deblocking.

I believe (nCbW / 8) should be replaced by something like Max(1,(nCbW / 8)) to prevent this issue.

The same is true for the yEdge range later in the same section.

Change history (3)

comment:1 Changed 14 months ago by bbross

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

Right, thanks! The will be fixed in JVET-S2001-vH by adding the Max(1,..) operation for both xEdge and yEdge as suggested.

comment:2 Changed 14 months ago by bheng

Thanks for the fix!

The yEdge change ended up with an extra left-parenthesis:

For yEdge = 0..Min( ( Max (1, nCbH / 8 ) − 1, numSbY − 1 ), x = 0..nCbW − 1:

I would suggest:

For yEdge = 0..Min( Max (1, nCbH / 8 ) − 1, numSbY − 1 ), x = 0..nCbW − 1:

comment:3 Changed 14 months ago by bbross

Right! That was a test to see whether you check the fix ;)
Extra left-parenthesis is removed now in JVET-S2001-vH.

Note: See TracTickets for help on using tickets.