Opened 5 years ago
Closed 5 years ago
#680 closed defect (fixed)
Mismatch between SW and spec on DepQuant state transition
Reported by: | wzeng | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | VVC D7 vB |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
In VVC D7 vB, par_level_flag[n] is used for DepQuant state transition.
QState = QStateTransTable[ QState ][ par_level_flag[ n ] ]
But in VTM7.0rc1, (level & 1) is used (in function Quantizer::dequantBlock).
state = ( 32040 >> ((state<<2)+((level&1)<<1)) ) & 3;
When level=1, par_level_flag[n] is not parsed and it's inferred to be 0. In this case, (level & 1) != par_level_flag[n].
Suggest to align the text with VTM by changing the line to:
QState = QStateTransTable[ QState ][ AbsLevel[xC][yC] & 1]
Change history (2)
comment:1 Changed 5 years ago by schwarz
comment:2 Changed 5 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Thanks for reporting.
This will be fixed JVET-P2001-vC.
Note: See TracTickets for help on using tickets.
I agree.
There are three places in the syntax, where the state transition table is used. Two of them are correct (they use AbsLevel1 or Abslevel), but the last one (in final reconstruction), should be changed from
QState = QStateTransTable[ QState ][ par_level_flag[ n ] ]
to
QState = QStateTransTable[ QState ][ AbsLevel[ xC ][ yC ] & 1 ]