Changeset 118 in SHVCSoftware for branches/HM-10.0-dev-SHM/source/Lib


Ignore:
Timestamp:
11 Apr 2013, 00:34:54 (12 years ago)
Author:
qualcomm
Message:

Signaling direct reference layers in VPS extension (MACRO: VPS_EXTN_DIRECT_REF_LAYERS)

Includes signaling of direct_dependency_flag in VPS extension, that indicates the direct reference layers of all the layers. Includes configuration file support using NumDirectRefLayers%d and RefLayerIds%d. Arbitrary values of nuh_layer_id for different layers would still need configuration file support for layer_id_in_nuh.

From: Adarsh K. Ramasubramonian <aramasub@…>

Location:
branches/HM-10.0-dev-SHM/source/Lib
Files:
6 edited

Legend:

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

    r115 r118  
    15061506  ::memset(m_outputLayerSetIdx, 0, sizeof(m_outputLayerSetIdx));
    15071507  ::memset(m_outputLayerFlag, 0, sizeof(m_outputLayerFlag));
     1508#endif
     1509#if VPS_EXTN_DIRECT_REF_LAYERS
     1510  ::memset(m_directDependencyFlag, 0, sizeof(m_directDependencyFlag));
     1511  ::memset(m_numDirectRefLayers,   0, sizeof(m_numDirectRefLayers  ));
     1512  ::memset(m_refLayerId,           0, sizeof(m_refLayerId          ));
    15081513#endif
    15091514}
  • branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComSlice.h

    r115 r118  
    541541  UInt       m_outputLayerSetIdx[MAX_VPS_LAYER_SETS_PLUS1];
    542542  Bool       m_outputLayerFlag[MAX_VPS_LAYER_SETS_PLUS1][MAX_VPS_LAYER_ID_PLUS1];
    543   // .. More declarations here
     543#endif
     544#if VPS_EXTN_DIRECT_REF_LAYERS
     545  Bool       m_directDependencyFlag[MAX_VPS_LAYER_ID_PLUS1][MAX_VPS_LAYER_ID_PLUS1];
     546  UInt       m_numDirectRefLayers[MAX_VPS_LAYER_ID_PLUS1];
     547  UInt       m_refLayerId[MAX_VPS_LAYER_ID_PLUS1][MAX_VPS_LAYER_ID_PLUS1];
    544548#endif
    545549
     
    656660  Bool   getOutputLayerFlag(Int layerSet, Int layerId)          { return m_outputLayerFlag[layerSet][layerId]; }
    657661  Void   setOutputLayerFlag(Int layerSet, Int layerId, Bool x)  { m_outputLayerFlag[layerSet][layerId] = x;    }
     662#endif
     663#if VPS_EXTN_DIRECT_REF_LAYERS
     664  // Direct dependency of layers
     665  Bool   getDirectDependencyFlag(Int i, Int j)                  { return m_directDependencyFlag[i][j]; }
     666  Void   setDirectDependencyFlag(Int i, Int j, Bool x)          { m_directDependencyFlag[i][j] = x;    }
     667 
     668  UInt   getNumDirectRefLayers(Int i)                                { return m_numDirectRefLayers[i];         }
     669  Void   setNumDirectRefLayers(Int i, UInt x)                        { m_numDirectRefLayers[i] = x;            }
     670
     671  UInt   getRefLayerId(Int i, Int j)                            { return m_refLayerId[i][j];           }
     672  Void   setRefLayerId(Int i, Int j, UInt x)                    { m_refLayerId[i][j] = x;              }
    658673#endif
    659674};
  • branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TypeDef.h

    r117 r118  
    5050#define VPS_EXTN_OP_LAYER_SETS           1      ///< Include output layer sets in VPS extension
    5151#define VPS_EXTN_PROFILE_INFO            1      ///< Include profile information for layer sets in VPS extension
     52#define VPS_EXTN_DIRECT_REF_LAYERS       1      ///< Include indication of direct dependency of layers in VPS extension
    5253#endif
    5354#define MAX_LAYERS                       2      ///< max number of layers the codec is supposed to handle
  • branches/HM-10.0-dev-SHM/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r116 r118  
    934934  } 
    935935#endif
    936   // ... More syntax elements to be parsed here
     936#if VPS_EXTN_DIRECT_REF_LAYERS
     937  // For layer 0
     938  vps->setNumDirectRefLayers(0, 0);
     939  // For other layers
     940  for( Int layerCtr = 1; layerCtr <= vps->getMaxLayers() - 1; layerCtr++)
     941  {
     942    UInt numDirectRefLayers = 0;
     943    for( Int refLayerCtr = 0; refLayerCtr < layerCtr; refLayerCtr++)
     944    {
     945      READ_FLAG(uiCode, "direct_dependency_flag[i][j]" ); vps->setDirectDependencyFlag(layerCtr, refLayerCtr, uiCode? true : false);
     946      if(uiCode)
     947      {
     948        vps->setRefLayerId(layerCtr, numDirectRefLayers, refLayerCtr);
     949        numDirectRefLayers++;
     950      }
     951    }
     952    vps->setNumDirectRefLayers(layerCtr, numDirectRefLayers);
     953  }
     954#endif
    937955}
    938956#endif
  • branches/HM-10.0-dev-SHM/source/Lib/TLibEncoder/TEncCavlc.cpp

    r116 r118  
    731731  }
    732732#endif
    733   // ... More syntax elements to be written here
     733#if VPS_EXTN_DIRECT_REF_LAYERS
     734  for( Int layerCtr = 1; layerCtr <= vps->getMaxLayers() - 1; layerCtr++)
     735  {
     736    for( Int refLayerCtr = 0; refLayerCtr < layerCtr; refLayerCtr++)
     737    {
     738      WRITE_FLAG(vps->getDirectDependencyFlag(layerCtr, refLayerCtr), "direct_dependency_flag[i][j]" );
     739    }
     740  }
     741#endif
    734742}
    735743#endif
  • branches/HM-10.0-dev-SHM/source/Lib/TLibEncoder/TEncCfg.h

    r54 r118  
    142142  Int       m_maxTempLayer;                      ///< Max temporal layer
    143143  Bool m_useAMP;
     144#if VPS_EXTN_DIRECT_REF_LAYERS
     145  Int       m_numDirectRefLayers;
     146  Int       m_refLayerId[MAX_VPS_LAYER_ID_PLUS1];
     147#endif
    144148  //======= Transform =============
    145149  UInt      m_uiQuadtreeTULog2MaxSize;
     
    350354  Bool      getMaxTempLayer                 ()                              { return m_maxTempLayer;              }
    351355  Void      setMaxTempLayer                 ( Int maxTempLayer )            { m_maxTempLayer = maxTempLayer;      }
     356#if VPS_EXTN_DIRECT_REF_LAYERS
     357  Int       getNumDirectRefLayers           ()                              { return m_numDirectRefLayers;      }
     358  Void      setNumDirectRefLayers           (Int num)                       { m_numDirectRefLayers = num;       }
     359
     360  Int       getRefLayerId                   (Int i)                         { return m_refLayerId[i];           }
     361  Void      setRefLayerId                   (Int i, Int refLayerId)         { m_refLayerId[i] = refLayerId;     }
     362#endif
    352363  //======== Transform =============
    353364  Void      setQuadtreeTULog2MaxSize        ( UInt  u )      { m_uiQuadtreeTULog2MaxSize = u; }
Note: See TracChangeset for help on using the changeset viewer.