Changeset 224 in SHVCSoftware for branches/SHM-2.1-dev/source/Lib/TLibDecoder


Ignore:
Timestamp:
22 May 2013, 20:38:25 (13 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/TLibDecoder
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 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);
Note: See TracChangeset for help on using the changeset viewer.