Opened 4 years ago

Closed 4 years ago

#1033 closed defect (fixed)

Mismatch spec/VTM on RefPicLtPocList set

Reported by: audrey.turquin Owned by:
Priority: minor Milestone:
Component: spec Version:
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

The calculation of FullPocLt[i][j] is not aligned with the specification.
In the VTM, at each calculation (present at multiple places), there is a condition that is not present in the spec.

For example (source/Lib/CommonLib/Slice.cpp, function 'constructRefPicList') :

int ltrpPoc = m_pRPL0->getRefPicIdentifier(ii) & pocMask;
if(m_localRPL0.getDeltaPocMSBPresentFlag(ii))
{
  ltrpPoc += getPOC() - m_localRPL0.getDeltaPocMSBCycleLT(ii) * (pocMask + 1) - (getPOC() & pocMask);
}

The condition "if(m_localRPL0.getDeltaPocMSBPresentFlag(ii))" should not be here, the calculation should be in any case :

int ltrpPoc = m_pRPL0->getRefPicIdentifier(ii) + getPOC() - m_localRPL0.getDeltaPocMSBCycleLT(ii) * (pocMask + 1) - (getPOC() & pocMask);

Moreover, the POC calculated this way is always the POC with MSB.
Consequently, in function xGetLongTermRefPic, the part with "pocHasMsb" is wrong and should be removed.

Change history (4)

comment:2 Changed 4 years ago by bheng

I believe the software is working as intended. In the text JVET-R2001-v3, the condition appears in Equation (204). Specifically, the FullPocLt is only used in the "else" case below, otherwise just POC LSB is used.

if( !delta_poc_msb_cycle_lt[ i ][ k ] ) {

...
RefPicLtPocList[ i ][ j ] = PocLsbLt[ i ][ k ]

} else {

...
RefPicLtPocList[ i ][ j ] = FullPocLt[ i ][ k ]

}

However, in the text, I believe this if-condition above was supposed to be based on the flag delta_poc_msb_cycle_present_flag, not the value delta_poc_msb_cycle_lt.

Using delta_poc_msb_cycle_lt in this if-condition doesn't make sense. So, I would suggest changing this to a spec ticket instead, then it should match the software.

comment:3 Changed 4 years ago by audrey.turquin

  • Component changed from VTM to spec
  • Summary changed from Wrong calculation of FullPocLt to Mismatch spec/VTM on RefPicLtPocList set

Yes, you are right, I missed this part when setting the RefPicLtPocList. I thought it was always equal to FullPocLt.

Consequently there is only a mismatch about the condition :

  • spec uses delta_poc_msb_cycle_lt
  • VTM uses delta_poc_msb_cycle_present_flag.

If you say it is rather a spec ticket, I will change it.

comment:4 Changed 4 years ago by yk

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

Good catch! Thanks! Will be fixed in JVET-R2001-v8 (as suggested above by Brian).

Note: See TracTickets for help on using tickets.