#1442 closed defect (fixed)
Mismatch on PTL signalling in VPS between VTM and VVC spec
Reported by: | martin.m.pettersson | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | VTM-11.1 |
Component: | VTM | Version: | VTM-11.0 |
Keywords: | Cc: | ksuehring, XiangLi, fbossen, jvet@… |
Description
In the spec (JVET-T2001-v2), the profile_tier_level is set for VPS in the following syntax lines in section 7.3.2.3:
for( i = 0; i <= vps_num_ptls_minus1; i++ )
profile_tier_level( vps_pt_present_flag[ i ], vps_ptl_max_tid[ i ] )
However, in VTM-11.0, the call to profile_tier_level for VPS is implemented as
VLCWriter.cpp void HLSWriter::codeVPS(const VPS* pcVPS) { ... for (int i = 0; i < pcVPS->getNumPtls(); i++) { codeProfileTierLevel(&pcVPS->getProfileTierLevel(i), pcVPS->getPtPresentFlag(i), pcVPS->getPtlMaxTemporalId(i) - 1); } ... } VLCReader.cpp void HLSyntaxReader::parseVPS(VPS* pcVPS) { ... for (int i = 0; i < pcVPS->getNumPtls(); i++) { parseProfileTierLevel(&ptls[i], pcVPS->getPtPresentFlag(i), pcVPS->getPtlMaxTemporalId(i) - 1); } ... }
As can be seen, there is a "-1" in the code but not in the spec. The effect is that information for the sublayer with the second highest TemporalID is never signalled in VPS.
The VTM code should probably be:
VLCWriter.cpp void HLSWriter::codeVPS(const VPS* pcVPS) { ... for (int i = 0; i < pcVPS->getNumPtls(); i++) { codeProfileTierLevel(&pcVPS->getProfileTierLevel(i), pcVPS->getPtPresentFlag(i), pcVPS->getPtlMaxTemporalId(i)); } ... } VLCReader.cpp void HLSyntaxReader::parseVPS(VPS* pcVPS) { ... for (int i = 0; i < pcVPS->getNumPtls(); i++) { parseProfileTierLevel(&ptls[i], pcVPS->getPtPresentFlag(i), pcVPS->getPtlMaxTemporalId(i)); } ... }
Change history (2)
comment:1 Changed 4 years ago by ksuehring
- Resolution set to fixed
- Status changed from new to closed
comment:2 Changed 4 years ago by ksuehring
- Milestone set to VTM-11.1
Note: See TracTickets for help on using tickets.
Fixed in
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/1974