Opened 3 years ago

Closed 3 years ago

#72 closed defect (fixed)

Potential issue with CCLM specification text in VVC D2 v4

Reported by: vdrugeon Owned by:
Priority: minor Milestone: VVC D2 v5
Component: spec Version: VVC D2 v4
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In section 8.2.4.2.8, the neighboring luma samples pY[x][y] are derived for many values of x and y, specifically x = −1..−3, y = 0..2 * nTbH − 1 for the left samples, x = 0..2 * nTbW − 1, y = −1, −2 for the top samples and x = −1, y = −1, −2 for the top left samples. However, only three sample positions are checked for availability, namely position ( xTbY − 1, yTbY ) for availL, position ( xTbY, yTbY − 1 ) for availT and position ( xTbY − 1, yTbY − 1 ) for availTL. Therefore, if availL is equal to true, I think that it only means that the sample at position ( xTbY − 1, yTbY ) is available, but not that all the other samples left are available.
A similar issue was solved in process 8.2.4.2.2 by deriving availableN for every luma location. Should the same be done in this process?

Change history (5)

comment:1 Changed 3 years ago by vdrugeon

In step 7, I would suggest to use parenthesis to describe the calculation of l, c, ll and lc.
My current assumption is that, in equations (8-61) to (8-64), the operator "x ? y : z" should take precedence over the addition "+". Is that correct? If yes, it is an issue, because Table 5-1 clearly states that addition takes precedence over "x ? y : z".

comment:2 Changed 3 years ago by bbross

Also there is a division by 0 issue in CCLM reported by Minhua:

a1s = a1 >> k2
a2s = a2 >> k3 (8‑69)
lmDiv = ( 1 << ( BitDepthY + 4 ) + a2s / 2 ) / a2s
a2t = ( a2s < 32 ) ? 0 : lmDiv

a2s can be 0, so division by zero can happen.

If lmDiv is not used elsewhere, it might be better to rewrite it as

a1s = a1 >> k2
a2s = a2 >> k3 (8‑69)
a2t = ( a2s < 32 ) ? 0 : ( 1 << ( BitDepthY + 4 ) + a2s / 2 ) / a2s

comment:3 Changed 3 years ago by bbross

Regarding the neighboring luma samples, checking one sample left, top-left and top is enough since the neighboring luma samples are always available when decoding chroma except:
a) left picture / slice boundary -> checking one sample left is sufficient
b) top picture / slice boundary -> checking one sample top is sufficient
c) top left CTU is in another slice -> checking one sample top-left is sufficient

comment:4 Changed 3 years ago by bbross

  • Milestone set to VVC D2 v5

comment:5 Changed 3 years ago by bbross

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

fixed in D2 v5

Note: See TracTickets for help on using tickets.