Opened 5 years ago
Closed 5 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:1 Changed 5 years ago by audrey.turquin
comment:2 Changed 5 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 5 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 5 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).
Corresponding MR:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/1555