Changeset 663 in SHVCSoftware for branches/SHM-6-dev


Ignore:
Timestamp:
10 Apr 2014, 02:39:09 (11 years ago)
Author:
seregin
Message:

fix encoder setting for rep_format_idx_present_flag and add check for vps_num_rep_formats_minus1

Location:
branches/SHM-6-dev/source
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-6-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r658 r663  
    9191  }
    9292
    93 #if REPN_FORMAT_IN_VPS
    94   vps->setRepFormatIdxPresentFlag( true );   // Could be disabled to optimize in some cases.
     93#if REPN_FORMAT_IN_VPS 
    9594  Int maxRepFormatIdx = -1;
    9695  Int formatIdx = -1;
     
    125124
    126125    assert( m_acLayerCfg[layer].getRepFormatIdx() != -1 && "RepFormatIdx not assigned for a layer" );
     126
    127127    vps->setVpsRepFormatIdx( layer, m_acLayerCfg[layer].getRepFormatIdx() );
     128
    128129    maxRepFormatIdx = std::max( m_acLayerCfg[layer].getRepFormatIdx(), maxRepFormatIdx );
    129130  }
     131
    130132  assert( vps->getVpsRepFormatIdx( 0 ) == 0 );  // Base layer should point to the first one.
     133
    131134  Int* mapIdxToLayer = new Int[maxRepFormatIdx + 1];
     135
    132136  // Check that all the indices from 0 to maxRepFormatIdx are used in the VPS
    133137  for(Int i = 0; i <= maxRepFormatIdx; i++)
     
    145149    assert( layer != m_numLayers );   // One of the VPS Rep format indices not set
    146150  }
     151
    147152  vps->setVpsNumRepFormats( maxRepFormatIdx + 1 );
     153
     154#if Q0195_REP_FORMAT_CLEANUP
     155  // When not present, the value of rep_format_idx_present_flag is inferred to be equal to 0
     156  vps->setRepFormatIdxPresentFlag( vps->getVpsNumRepFormats() > 1 ? true : false );
     157#else
     158  vps->setRepFormatIdxPresentFlag( true );
     159#endif
     160
    148161  for(UInt idx=0; idx < vps->getVpsNumRepFormats(); idx++)
    149162  {
  • branches/SHM-6-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r662 r663  
    14381438  READ_UVLC( uiCode, "vps_num_rep_formats_minus1" );
    14391439  vps->setVpsNumRepFormats( uiCode + 1 );
     1440
     1441  // The value of vps_num_rep_formats_minus1 shall be in the range of 0 to 255, inclusive.
     1442  assert( vps->getVpsNumRepFormats() > 0 && vps->getVpsNumRepFormats() <= 256 );
     1443
    14401444  for(i = 0; i < vps->getVpsNumRepFormats(); i++)
    14411445  {
     
    14541458  else
    14551459  {
     1460    // When not present, the value of rep_format_idx_present_flag is inferred to be equal to 0
    14561461    vps->setRepFormatIdxPresentFlag( false );
    14571462  }
     1463
    14581464  if( vps->getRepFormatIdxPresentFlag() )
    14591465  {
  • branches/SHM-6-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r662 r663  
    10721072
    10731073#if REPN_FORMAT_IN_VPS
    1074 #if Q0195_REP_FORMAT_CLEANUP
     1074#if Q0195_REP_FORMAT_CLEANUP 
     1075  // The value of vps_num_rep_formats_minus1 shall be in the range of 0 to 255, inclusive.
     1076  assert( vps->getVpsNumRepFormats() > 0 && vps->getVpsNumRepFormats() <= 256 );
     1077 
    10751078  WRITE_UVLC( vps->getVpsNumRepFormats() - 1, "vps_num_rep_formats_minus1" );
     1079
    10761080  for(i = 0; i < vps->getVpsNumRepFormats(); i++)
    10771081  {
     
    10801084  }
    10811085
    1082   if ( vps->getVpsNumRepFormats() > 1 )
     1086  if( vps->getVpsNumRepFormats() > 1 )
     1087  {
    10831088    WRITE_FLAG( vps->getRepFormatIdxPresentFlag(), "rep_format_idx_present_flag");
     1089  }
     1090  else
     1091  {
     1092    // When not present, the value of rep_format_idx_present_flag is inferred to be equal to 0
     1093    assert( !vps->getRepFormatIdxPresentFlag() );
     1094  }
    10841095
    10851096  if( vps->getRepFormatIdxPresentFlag() )
Note: See TracChangeset for help on using the changeset viewer.