﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1626	xParseSEIBufferingPeriod does not match spec, code omits some syntax elements	peterderivaz		"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.)"	defect	new	major		VTM	VTM-23.0			ksuehring XiangLi fbossen jvet@…
