Changeset 848 in SHVCSoftware for branches/SHM-dev


Ignore:
Timestamp:
29 Jul 2014, 02:49:46 (10 years ago)
Author:
qualcomm
Message:

Update implementation of rep format for independent non-base layer such that it uses the rep format that is signalled in SPS, instead of in VPS.

Adoption of JCTVC-R0279. (Macro: R0279_REP_FORMAT_INBL)

From: Hendry <fhendry@…>

Location:
branches/SHM-dev/source/Lib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibCommon/TComSlice.cpp

    r836 r848  
    21152115  UInt retVal, layerId = getLayerId();
    21162116#if O0096_REP_FORMAT_INDEX
     2117#if R0279_REP_FORMAT_INBL
     2118  if ( layerId == 0 || sps->getV1CompatibleSPSFlag() == 1 )
     2119  {
     2120    if( layerId == 0 && vps->getAvcBaseLayerFlag() )
     2121#else
    21172122  if ( layerId == 0 )
    21182123  {
    21192124    if( vps->getAvcBaseLayerFlag() )
     2125#endif
    21202126    {
    21212127      retVal = vps->getVpsRepFormat(layerId)->getPicWidthVpsInLumaSamples();
     
    21482154  UInt retVal, layerId = getLayerId();
    21492155#if O0096_REP_FORMAT_INDEX
    2150   if( layerId == 0 )
     2156#if R0279_REP_FORMAT_INBL
     2157  if ( layerId == 0 || sps->getV1CompatibleSPSFlag() == 1 )
     2158  {
     2159    if( layerId == 0 && vps->getAvcBaseLayerFlag() )
     2160#else
     2161  if ( layerId == 0 )
    21512162  {
    21522163    if( vps->getAvcBaseLayerFlag() )
     2164#endif
    21532165    {
    21542166      retVal = vps->getVpsRepFormat(layerId)->getPicHeightVpsInLumaSamples();
     
    21902202#endif
    21912203#if O0096_REP_FORMAT_INDEX
    2192   if( layerId == 0 )
     2204#if R0279_REP_FORMAT_INBL
     2205  if ( layerId == 0 || sps->getV1CompatibleSPSFlag() == 1 )
     2206  {
     2207    if( layerId == 0 && vps->getAvcBaseLayerFlag() )
     2208#else
     2209  if ( layerId == 0 )
    21932210  {
    21942211    if( vps->getAvcBaseLayerFlag() )
     2212#endif
    21952213    {
    21962214      retVal = vps->getVpsRepFormat(layerId)->getChromaFormatVpsIdc();
     
    22232241  UInt retVal, layerId = getLayerId();
    22242242#if O0096_REP_FORMAT_INDEX
    2225   if( layerId == 0 )
     2243#if R0279_REP_FORMAT_INBL
     2244  if ( layerId == 0 || sps->getV1CompatibleSPSFlag() == 1 )
     2245#else
     2246  if ( layerId == 0 )
     2247#endif
    22262248  {
    22272249    retVal = sps->getBitDepthY();
     
    22492271  UInt retVal, layerId = getLayerId();
    22502272#if O0096_REP_FORMAT_INDEX
    2251   if( layerId == 0 )
     2273#if R0279_REP_FORMAT_INBL
     2274  if ( layerId == 0 || sps->getV1CompatibleSPSFlag() == 1 )
     2275#else
     2276  if ( layerId == 0 )
     2277#endif
    22522278  {
    22532279    retVal = sps->getBitDepthC();
     
    29963022, m_chromaFormatIdc           (CHROMA_420)
    29973023, m_uiMaxTLayers              (  1)
     3024#if R0279_REP_FORMAT_INBL
     3025, m_bV1CompatibleSPSFlag      (  0)
     3026#endif
    29983027// Structure
    29993028, m_picWidthInLumaSamples     (352)
  • branches/SHM-dev/source/Lib/TLibCommon/TComSlice.h

    r836 r848  
    14561456  UInt        m_uiMaxTLayers;           // maximum number of temporal layers
    14571457
     1458#if R0279_REP_FORMAT_INBL
     1459  Bool        m_bV1CompatibleSPSFlag;
     1460#endif
     1461
    14581462  // Structure
    14591463  UInt        m_picWidthInLumaSamples;
     
    15651569  static Int getWinUnitY (Int chromaFormatIdc) { assert (chromaFormatIdc > 0 && chromaFormatIdc <= MAX_CHROMA_FORMAT_IDC); return m_winUnitY[chromaFormatIdc];      }
    15661570#endif
    1567  
     1571
     1572#if R0279_REP_FORMAT_INBL //These two functions shall be used / called when the syntax element sps_ext_or_max_sub_layers_minus1 and V1CompatibleSPSFlag are implemented
     1573  Bool getV1CompatibleSPSFlag()        {return m_bV1CompatibleSPSFlag;}
     1574  Void setV1CompatibleSPSFlag(Bool x)       { m_bV1CompatibleSPSFlag = x;}
     1575#endif
     1576
    15681577  // structure
    15691578  Void setPicWidthInLumaSamples       ( UInt u ) { m_picWidthInLumaSamples = u;        }
  • branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h

    r847 r848  
    5151#define O0137_MAX_LAYERID                1      ///< JCTVC-O0137, JCTVC-O0200, JCTVC-O0223: restrict nuh_layer_id and vps_max_layers_minus1
    5252
     53#define R0279_REP_FORMAT_INBL            1      ///< JCTVC-R0279, For any independent non-base layer the used representation format is the one that is signalled in the active SPS for the layer
    5354#define R0227_VUI_BSP_HRD_FLAG           1      ///< JCTVC-R0227, Conformance checking such that VPS VUI HRD only present if VPS timing info is signalled
    5455#define R0227_REP_FORMAT_CONSTRAINT      1      ///< JCTVC-R0227, Conformance checking such that representation format of a particular layer shall not be greater than the one defined in VPS for that layer
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r844 r848  
    25302530  TComVPS* vps = NULL;
    25312531  vps = parameterSetManager->getPrefetchedVPS(sps->getVPSId());
     2532#if R0279_REP_FORMAT_INBL
     2533  if ( vps->getVpsExtensionFlag() == 1 && (rpcSlice->getLayerId() == 0 || sps->getV1CompatibleSPSFlag() == 1) )
     2534  {
     2535    assert( sps->getPicWidthInLumaSamples() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(rpcSlice->getLayerId()) )->getPicWidthVpsInLumaSamples() );
     2536    assert( sps->getPicHeightInLumaSamples() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(rpcSlice->getLayerId()) )->getPicHeightVpsInLumaSamples() );
     2537    assert( sps->getChromaFormatIdc() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(rpcSlice->getLayerId()) )->getChromaFormatVpsIdc() );
     2538    assert( sps->getBitDepthY() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(rpcSlice->getLayerId()) )->getBitDepthVpsLuma() );
     2539    assert( sps->getBitDepthC() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(rpcSlice->getLayerId()) )->getBitDepthVpsChroma() );
     2540#else
    25322541  if ( rpcSlice->getLayerId() == 0 && vps->getVpsExtensionFlag() == 1 )
    25332542  {
     
    25372546    assert( sps->getBitDepthY() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(0) )->getBitDepthVpsLuma() );
    25382547    assert( sps->getBitDepthC() <= vps->getVpsRepFormat( vps->getVpsRepFormatIdx(0) )->getBitDepthVpsChroma() );
     2548#endif
    25392549  }
    25402550  else if ( vps->getVpsExtensionFlag() == 1 )
Note: See TracChangeset for help on using the changeset viewer.