Opened 6 months ago
Closed 2 months ago
#404 closed defect (fixed)
Issue in residual coding
Reported by: | forayr | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | VVC D6 vE |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
In spec:
for( n = numSbCoeff − 1; n >= firstPosMode1; n− − ) { xC = ( xS << log2SbW ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = ( yS << log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] if( abs_level_gtx_flag[ n ][ 1 ] ) abs_remainder[ n ] AbsLevel[ xC ][ yC ] = AbsLevelPass1[ xC ][ yC ] +2 * abs_remainder[ n ] } for( n = firstPosMode1; n >= 0; n− − ) { xC = ( xS << log2SbW ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 0 ] yC = ( yS << log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ n ][ 1 ] dec_abs_level[ n ] ...
The range of these two for loop include both firstPosMode1, which seems troublesome as this is two different way to code AbsLevel[n].
In vtm, the first loop do not include firstPosMode1.
Change history (2)
comment:1 Changed 6 months ago by forayr
comment:2 Changed 2 months ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Thanks and always very helpful!
Both issues will be fixed in JVET-P2001-vC as follows:
1.
a) init firstPosMode1 = firstPosMode0 (instead of -1)
b) remove if( remBinsPass1 < 4) before firstPosMode1 = n-1 (always set to n-1)
c) change abs_remainder loop to for( n = firstPosMode0; n > firstPosMode1; n− − )
2.
a) Condition dec_abs_level parsing on coded_sub_block_flag:
if( coded_sub_block_flag[ xS ][ yS ] )
dec_abs_level[ n ]
b) add derivation rule for AbsLevel in dec_abs_level semantics in case dec_abs_level is not present
There is also another issue which happens after O0052 integration.
A subblock fulfilling all the following conditions could happen:
In this case firstPosMode1 = numSbCoeff - 1, therefore no abs_remainder are parsed, but dec_abs_level are, which seems to be an issue as coded_sub_block_flag = 0 !
In the vtm, as soon as coded_sub_block_flag = 0, nothing is parsed.