Changeset 224 in SHVCSoftware


Ignore:
Timestamp:
22 May 2013, 20:38:25 (12 years ago)
Author:
qualcomm
Message:

Conditional signaling of temporal sub-layer information in SPS (MACRO: SPS_SUB_LAYER_INFO)

Do not signal sps_max_sub_layers_minus1 and sps_temporal_id_nesting_flag for nuh_layer_id > 0.

From: Adarsh K. Ramasubramonian <aramasub@…>

Location:
branches/SHM-2.1-dev/source/Lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TypeDef.h

    r216 r224  
    5858#define VPS_MOVE_DIR_DEPENDENCY_FLAG     1      ///< M0268: Move the syntax element direct_dependency_flag to follow the syntax element dimension_id
    5959#define VPS_PROFILE_OUTPUT_LAYERS        1      ///< M0268: Signal profile information and output layer information as in Sec. 3 of M0268v2
     60#define SPS_SUB_LAYER_INFO               1      ///< M0268: Do not signal sps_max_sub_layers_minus1 and sps_temporal_id_nesting_flag for nuh_layer_id greater than 0
    6061#endif
    6162
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r216 r224  
    554554}
    555555
     556#if SPS_SUB_LAYER_INFO
     557Void TDecCavlc::parseSPS(TComSPS* pcSPS, ParameterSetManagerDecoder *parameterSetManager)
     558#else
    556559Void TDecCavlc::parseSPS(TComSPS* pcSPS)
     560#endif
    557561{
    558562#if ENC_DEC_TRACE
     
    562566  UInt  uiCode;
    563567  READ_CODE( 4,  uiCode, "sps_video_parameter_set_id");          pcSPS->setVPSId        ( uiCode );
    564   READ_CODE( 3,  uiCode, "sps_max_sub_layers_minus1" );          pcSPS->setMaxTLayers   ( uiCode+1 );
    565   READ_FLAG( uiCode, "sps_temporal_id_nesting_flag" );               pcSPS->setTemporalIdNestingFlag ( uiCode > 0 ? true : false );
     568#if SPS_SUB_LAYER_INFO
     569  if(pcSPS->getLayerId() == 0)
     570  {
     571#endif
     572    READ_CODE( 3,  uiCode, "sps_max_sub_layers_minus1" );          pcSPS->setMaxTLayers   ( uiCode+1 );
     573    READ_FLAG( uiCode, "sps_temporal_id_nesting_flag" );               pcSPS->setTemporalIdNestingFlag ( uiCode > 0 ? true : false );
     574#if SPS_SUB_LAYER_INFO
     575  }
     576  else
     577  {
     578    pcSPS->setMaxTLayers           ( parameterSetManager->getPrefetchedVPS(pcSPS->getVPSId())->getMaxTLayers()          );
     579    pcSPS->setTemporalIdNestingFlag( parameterSetManager->getPrefetchedVPS(pcSPS->getVPSId())->getTemporalNestingFlag() );
     580  }
     581#endif
    566582  if ( pcSPS->getMaxTLayers() == 1 )
    567583  {
    568584    // sps_temporal_id_nesting_flag must be 1 when sps_max_sub_layers_minus1 is 0
     585#if SPS_SUB_LAYER_INFO
     586    assert( pcSPS->getTemporalIdNestingFlag() == true );
     587#else
    569588    assert( uiCode == 1 );
     589#endif
    570590  }
    571591
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecCAVLC.h

    r191 r224  
    7575  Void  parseVPSExtension   ( TComVPS* pcVPS );
    7676#endif
     77#if SPS_SUB_LAYER_INFO
     78  Void  parseSPS            ( TComSPS* pcSPS, ParameterSetManagerDecoder *parameterSetManager );
     79#else
    7780  Void  parseSPS            ( TComSPS* pcSPS );
     81#endif
    7882  Void  parsePPS            ( TComPPS* pcPPS);
    7983  Void  parseVUI            ( TComVUI* pcVUI, TComSPS* pcSPS );
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecEntropy.h

    r191 r224  
    6666
    6767  virtual Void  parseVPS                  ( TComVPS* pcVPS )                       = 0;
     68#if SPS_SUB_LAYER_INFO
     69  virtual Void  parseSPS                  ( TComSPS* pcSPS, ParameterSetManagerDecoder *parameterSetManager )           = 0;
     70#else
    6871  virtual Void  parseSPS                  ( TComSPS* pcSPS )                                      = 0;
     72#endif
    6973  virtual Void  parsePPS                  ( TComPPS* pcPPS )                                      = 0;
    7074
     
    134138  Void    resetEntropy                ( TComSlice* p)           { m_pcEntropyDecoderIf->resetEntropy(p);                    }
    135139  Void    decodeVPS                   ( TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parseVPS(pcVPS); }
     140#if SPS_SUB_LAYER_INFO
     141  Void    decodeSPS                   ( TComSPS* pcSPS, ParameterSetManagerDecoder *parameterSetManager )    { m_pcEntropyDecoderIf->parseSPS(pcSPS, parameterSetManager);                    }
     142#else
    136143  Void    decodeSPS                   ( TComSPS* pcSPS     )    { m_pcEntropyDecoderIf->parseSPS(pcSPS);                    }
     144#endif
    137145  Void    decodePPS                   ( TComPPS* pcPPS )    { m_pcEntropyDecoderIf->parsePPS(pcPPS);                    }
    138146  Void    decodeSliceHeader           ( TComSlice*& rpcSlice, ParameterSetManagerDecoder *parameterSetManager)  { m_pcEntropyDecoderIf->parseSliceHeader(rpcSlice, parameterSetManager);         }
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecSbac.h

    r191 r224  
    7676  Void  setBitstream              ( TComInputBitstream* p  ) { m_pcBitstream = p; m_pcTDecBinIf->init( p ); }
    7777  Void  parseVPS                  ( TComVPS* /*pcVPS*/ ) {}
     78#if SPS_SUB_LAYER_INFO
     79  Void  parseSPS                  ( TComSPS* /*pcSPS*/, ParameterSetManagerDecoder * /*parameterSetManager*/ ) {}
     80#else
    7881  Void  parseSPS                  ( TComSPS* /*pcSPS*/ ) {}
     82#endif
    7983  Void  parsePPS                  ( TComPPS* /*pcPPS*/ ) {}
    8084
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r215 r224  
    10111011  sps->setLayerId(m_layerId);
    10121012#endif
     1013#if SPS_SUB_LAYER_INFO
     1014  m_cEntropyDecoder.decodeSPS( sps, &m_parameterSetManagerDecoder[0] );
     1015#else
    10131016  m_cEntropyDecoder.decodeSPS( sps );
     1017#endif
    10141018#if SVC_EXTENSION
    10151019  m_parameterSetManagerDecoder[m_layerId].storePrefetchedSPS(sps);
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r216 r224  
    439439#endif
    440440  WRITE_CODE( pcSPS->getVPSId (),          4,       "sps_video_parameter_set_id" );
    441   WRITE_CODE( pcSPS->getMaxTLayers() - 1,  3,       "sps_max_sub_layers_minus1" );
    442   WRITE_FLAG( pcSPS->getTemporalIdNestingFlag() ? 1 : 0,                             "sps_temporal_id_nesting_flag" );
     441#if SPS_SUB_LAYER_INFO
     442  if(pcSPS->getLayerId() == 0)
     443  {
     444#endif
     445    WRITE_CODE( pcSPS->getMaxTLayers() - 1,  3,       "sps_max_sub_layers_minus1" );
     446    WRITE_FLAG( pcSPS->getTemporalIdNestingFlag() ? 1 : 0,                             "sps_temporal_id_nesting_flag" );
     447#if SPS_SUB_LAYER_INFO
     448  }
     449#endif
    443450  codePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1);
    444451  WRITE_UVLC( pcSPS->getSPSId (),                   "sps_seq_parameter_set_id" );
Note: See TracChangeset for help on using the changeset viewer.