Opened 8 months ago
Last modified 8 months ago
#1626 new defect
xParseSEIBufferingPeriod does not match spec, code omits some syntax elements
Reported by: | peterderivaz | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | VTM | Version: | VTM-23.0 |
Keywords: | Cc: | ksuehring, XiangLi, fbossen, jvet@… |
Description
The code in source/Lib/DecoderLib/SEIRead.cpp reads:
void SEIReader::xParseSEIBufferingPeriod ... for (i = (sei.m_sublayerInitialCpbRemovalDelayPresentFlag ? 0 : sei.m_bpMaxSubLayers - 1); i < sei.m_bpMaxSubLayers; i++) { for( nalOrVcl = 0; nalOrVcl < 2; nalOrVcl ++ ) { if( ( ( nalOrVcl == 0 ) && ( sei.m_bpNalCpbParamsPresentFlag ) ) || ( ( nalOrVcl == 1 ) && ( sei.m_bpVclCpbParamsPresentFlag ) ) ) { for( int j = 0; j < ( sei.m_bpCpbCnt ); j ++ ) { sei_read_code( pDecodedMessageOutputStream, sei.m_initialCpbRemovalDelayLength, code, nalOrVcl ? "vcl_initial_cpb_removal_delay[i][j]" : "nal_initial_cpb_removal_delay[i][j]" ); sei.m_initialCpbRemovalDelay[i][j][nalOrVcl] = code; sei_read_code( pDecodedMessageOutputStream, sei.m_initialCpbRemovalDelayLength, code, nalOrVcl ? "vcl_initial_cpb_removal_offset[i][j]" : "nal_initial_cpb_removal_offset[i][j]" ); sei.m_initialCpbRemovalOffset[i][j][nalOrVcl] = code; } } } }
This corresponds to D.3.1 of the specification:
for( i = ( bp_sublayer_initial_cpb_removal_delay_present_flag ? 0 : bp_max_sublayers_minus1 ); i <= bp_max_sublayers_minus1; i++ ) { if( bp_nal_hrd_params_present_flag ) for( j = 0; j < bp_cpb_cnt_minus1 + 1; j++ ) { bp_nal_initial_cpb_removal_delay[ i ][ j ] u(v) bp_nal_initial_cpb_removal_offset[ i ][ j ] u(v) if( bp_du_hrd_params_present_flag) { bp_nal_initial_alt_cpb_removal_delay[ i ][ j ] u(v) bp_nal_initial_alt_cpb_removal_offset[ i ][ j ] u(v) } } if( bp_vcl_hrd_params_present_flag ) for( j = 0; j < bp_cpb_cnt_minus1 + 1; j++ ) { bp_vcl_initial_cpb_removal_delay[ i ][ j ] u(v) bp_vcl_initial_cpb_removal_offset[ i ][ j ] u(v) if( bp_du_hrd_params_present_flag ) { bp_vcl_initial_alt_cpb_removal_delay[ i ][ j ] u(v) bp_vcl_initial_alt_cpb_removal_offset[ i ][ j ] u(v) } } }
The issue is that the VTM is missing code to parse the syntax elements bp_nal_initial_alt_cpb_removal_delay, bp_nal_initial_alt_cpb_removal_offset, bp_vcl_initial_alt_cpb_removal_delay, bp_vcl_initial_alt_cpb_removal_offset.
The encoder is also missing code to write these syntax elements.
(This bug is present in the latest VTM-23.0, but there does not seem to be an option in the Version dropdown for VTM-23.0.)
Change history (4)
comment:1 Changed 8 months ago by fbossen
- Version set to VTM-23.0
comment:2 Changed 8 months ago by fbossen
comment:3 Changed 8 months ago by fbossen
Suggested resolution:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/2717
comment:4 Changed 8 months ago by peterderivaz
Thanks for looking at this! I am happy for this issue to be marked as resolved when the suggested code changes are merged.
Thank you for the report. Looks like these syntax elements were added in response to JVET-O0189 and should have been part of https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/967