Ignore:
Timestamp:
13 Jul 2013, 10:26:41 (12 years ago)
Author:
tech
Message:

MergeMerged tags/HTM-DEV-1.0.

Location:
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.cpp

    r532 r534  
    43214321
    43224322  // use coldir.
     4323#if H_MV
     4324  TComPic *pColPic; 
     4325  if (getSlice()->getAltCollocatedIndicationFlag() )
     4326  {
     4327    pColPic = getSlice()->getPicFromRefPicSetInterLayer( getSlice()->getActiveMotionPredRefLayerId( getSlice()->getCollocatedRefLayerIdx() ));
     4328  }
     4329  else
     4330  {
     4331    pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx()); 
     4332  } 
     4333#else
    43234334  TComPic *pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx());
     4335#endif
    43244336  TComDataCU *pColCU = pColPic->getCU( uiCUAddr );
    43254337  if(pColCU->getPic()==0||pColCU->getPartitionSize(uiPartUnitIdx)==SIZE_NONE)
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp

    r532 r534  
    108108, m_enableTMVPFlag                ( true )
    109109#if H_MV
     110, m_refPicSetInterLayer           ( NULL )
    110111, m_layerId                       (0)
    111112, m_viewId                        (0)
     
    114115, m_isDepth                       (false)
    115116#endif
     117, m_discardableFlag               (false)
     118, m_interLayerPredEnabledFlag     (false)
     119, m_numInterLayerRefPicsMinus1    (0)
     120, m_interLayerSamplePredOnlyFlag  (false)
     121, m_altCollocatedIndicationFlag   (0)
     122, m_collocatedRefLayerIdx         (0)
    116123#if H_3D_IC
    117124, m_bApplyIC                      ( false )
     
    162169  initWpAcDcParam();
    163170  m_saoEnabledFlag = false;
     171#if H_MV
     172  for (Int i = 0; i < MAX_NUM_LAYERS; i++ )
     173  {
     174   m_interLayerPredLayerIdc[ i ] = 0;
     175  }
     176#endif
    164177}
    165178
     
    492505  UInt NumPocStCurr1 = 0;
    493506  UInt NumPocLtCurr = 0;
    494 #if H_MV
    495   Int numDirectRefLayers  = getVPS()->getNumDirectRefLayers( getLayerIdInVps() );
    496   assert( numDirectRefLayers == refPicSetInterLayer.size() );
    497 #endif
    498507  Int i;
    499508  for(i=0; i < m_pcRPS->getNumberOfNegativePictures(); i++)
     
    544553  TComPic*  rpsCurrList1[MAX_NUM_REF+1];
    545554#if H_MV
    546   Int numPocTotalCurr = NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + numDirectRefLayers;
     555  Int numPocInterCurr = NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr;
     556  assert( numPocInterCurr == 0 || getInterRefEnabledInRPLFlag() );
     557  Int numPocTotalCurr = numPocInterCurr + getNumActiveRefLayerPics( );
    547558  assert( numPocTotalCurr == getNumRpsCurrTempList() );
    548559#else
     
    582593
    583594  Int cIdx = 0;
     595#if H_MV
     596  if ( getInterRefEnabledInRPLFlag() )
     597  { 
     598#endif
    584599  for ( i=0; i<NumPocStCurr0; i++, cIdx++)
    585600  {
     
    595610  }
    596611#if H_MV
    597   for ( i=0; i<numDirectRefLayers;  i++, cIdx++)
    598   {
    599     if( cIdx <= MAX_NUM_REF )
    600     {
     612  }
     613  for ( i=0; i < getNumActiveRefLayerPics( );  i++, cIdx++)
     614    {
     615    assert( cIdx < MAX_NUM_REF );   
    601616      rpsCurrList0[cIdx] = refPicSetInterLayer[i];
    602617    }
    603   }
    604618#endif
    605619
     
    607621  {
    608622    cIdx = 0;
     623#if H_MV
     624    if ( getInterRefEnabledInRPLFlag() )
     625    { 
     626#endif
    609627    for ( i=0; i<NumPocStCurr1; i++, cIdx++)
    610628    {
     
    620638    }
    621639#if H_MV
    622     for ( i=0; i<numDirectRefLayers;  i++, cIdx++)
    623     {
    624       if( cIdx <= MAX_NUM_REF )
    625       {
     640    }
     641    for ( i=0; i < getNumActiveRefLayerPics( );  i++, cIdx++)
     642      {
     643      assert( cIdx < MAX_NUM_REF );   
    626644        rpsCurrList1[cIdx] = refPicSetInterLayer[i];
    627645      }
    628     }
    629646#endif
    630647  }
    631648
    632649  ::memset(m_bIsUsedAsLongTerm, 0, sizeof(m_bIsUsedAsLongTerm));
     650
     651#if H_MV
     652  Int numPocSt = NumPocStCurr0 + NumPocStCurr1;
     653  assert(  getInterRefEnabledInRPLFlag( ) || numPocSt == 0 );
     654
     655  for (Int li = 0; li < 2; li++)
     656  {
     657    if ( m_eSliceType == P_SLICE && li == 1 )
     658    {
     659      m_aiNumRefIdx[1] = 0;
     660      ::memset( m_apcRefPicList[1], 0, sizeof(m_apcRefPicList[1]));
     661    }
     662    else
     663    {
     664      for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[ li ] - 1 ); rIdx ++)
     665      {
     666        Bool listModified             =                m_RefPicListModification.getRefPicListModificationFlagL( li );
     667        Int orgIdx                    = listModified ? m_RefPicListModification.getRefPicSetIdxL(li, rIdx) : (rIdx % numPocTotalCurr);
     668
     669        m_apcRefPicList    [li][rIdx] = ( li == 0 )  ? rpsCurrList0[ orgIdx  ] : rpsCurrList1[ orgIdx  ];
     670        m_bIsUsedAsLongTerm[li][rIdx] = ( orgIdx >= numPocSt ) ;
     671      }
     672    }
     673  }
     674#else
    633675
    634676  for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[0]-1); rIdx ++)
     
    652694    }
    653695  }
     696#endif
    654697}
    655698
     
    687730  }
    688731#if H_MV
    689   numRpsCurrTempList = numRpsCurrTempList + getVPS()->getNumDirectRefLayers( getLayerIdInVps() );
     732  assert( ( numRpsCurrTempList == 0 ) || getInterRefEnabledInRPLFlag() );
     733  numRpsCurrTempList = numRpsCurrTempList + getNumActiveRefLayerPics();
    690734#endif
    691735  return numRpsCurrTempList;
     
    10221066  m_enableTMVPFlag                = pSrc->m_enableTMVPFlag;
    10231067  m_maxNumMergeCand               = pSrc->m_maxNumMergeCand;
     1068
     1069#if H_MV
     1070  // Additional slice header syntax elements
     1071  m_discardableFlag            = pSrc->m_discardableFlag;
     1072  m_interLayerPredEnabledFlag  = pSrc->m_interLayerPredEnabledFlag;
     1073  m_numInterLayerRefPicsMinus1 = pSrc->m_numInterLayerRefPicsMinus1;
     1074
     1075  for (Int layer = 0; layer < MAX_NUM_LAYERS; layer++ )
     1076  {
     1077    m_interLayerPredLayerIdc[ layer ] = pSrc->m_interLayerPredLayerIdc[ layer ];
     1078  }
     1079 
     1080  m_interLayerSamplePredOnlyFlag = pSrc->m_interLayerSamplePredOnlyFlag;
     1081  m_altCollocatedIndicationFlag  = pSrc->m_altCollocatedIndicationFlag ;   
     1082  m_collocatedRefLayerIdx        = pSrc->m_collocatedRefLayerIdx       ;
     1083  m_numActiveMotionPredRefLayers = pSrc->m_numActiveMotionPredRefLayers;
     1084
     1085  for (Int layer = 0; layer < MAX_NUM_LAYER_IDS; layer++)
     1086  {   
     1087    m_interLayerPredLayerIdc[layer] = pSrc->m_interLayerPredLayerIdc[layer];
     1088  }
     1089#endif
    10241090#if H_3D_IC
    10251091  m_bApplyIC = pSrc->m_bApplyIC;
     
    14891555, m_numHrdParameters          (  0)
    14901556#if H_MV
    1491 , m_maxNuhLayerId             (  0)
     1557, m_maxLayerId             (  0)
    14921558#else
    14931559, m_maxNuhReservedZeroLayerId (  0)
     
    15081574  }
    15091575#if H_MV
     1576  for (Int lsIdx = 0; lsIdx < MAX_VPS_OP_SETS_PLUS1; lsIdx++ )
     1577  { 
     1578    for( Int layerId = 0; layerId < MAX_VPS_NUH_LAYER_ID_PLUS1; layerId++ )
     1579    {
     1580      m_layerIdIncludedFlag[lsIdx][layerId] = false;
     1581    }
     1582  }
     1583
     1584  m_vpsNumberLayerSetsMinus1     = -1;
     1585  m_vpsNumProfileTierLevelMinus1 = -1;
     1586   
     1587  for ( Int i = 0; i < MAX_VPS_PROFILE_TIER_LEVEL; i++)
     1588  {
     1589    m_profileRefMinus1[ i ] = -1;
     1590  }
     1591   
     1592  m_moreOutputLayerSetsThanDefaultFlag = false;   
     1593  m_numAddOutputLayerSetsMinus1        = -1;   
     1594  m_defaultOneTargetOutputLayerFlag    = false;
     1595 
     1596  for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++)
     1597  {
     1598    m_outputLayerSetIdxMinus1[i]  = -1;
     1599    m_profileLevelTierIdx[i]      = 0;
     1600    for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++)
     1601    {
     1602      m_outputLayerFlag[i][j] = false;
     1603    }
     1604  }
     1605 
     1606  m_maxOneActiveRefLayerFlag = false;
     1607  m_directDepTypeLenMinus2   = 0;         
     1608 
     1609
    15101610  m_avcBaseLayerFlag = false;
    15111611  m_splittingFlag    = false;
     
    15181618
    15191619  m_vpsNuhLayerIdPresentFlag = false;
    1520   m_numOutputLayerSets       = 0;
    15211620
    15221621  for( Int i = 0; i < MAX_VPS_OP_SETS_PLUS1; i++ )
    15231622  {
    15241623    m_vpsProfilePresentFlag   [i] = false;
    1525     m_profileLayerSetRefMinus1[i] = 0;
    1526     m_outputLayerSetIdx       [i] = 0;
     1624    m_profileRefMinus1[i] = 0;
     1625    m_outputLayerSetIdxMinus1       [i] = 0;
    15271626    for( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++ )
    15281627    {
     
    15401639    m_layerIdInNuh      [i] = ( i == 0 ) ? 0 : -1;
    15411640    m_numDirectRefLayers[i] = 0;
     1641    m_maxTidIlRefPicPlus1[i] = -1;
    15421642#if H_3D
    15431643    m_viewIndex         [i] = -1;
     
    15661666    {
    15671667      m_directDependencyFlag[i][j] = false;
     1668      m_directDependencyType[i][j] = -1;
    15681669      m_refLayerId[i][j]           = -1;
    15691670    }
     
    16861787Bool TComVPS::checkVPSExtensionSyntax()
    16871788{
    1688   // check splitting flag constraint
    1689   if ( getSplittingFlag() )
    1690   {
    1691     // Derive dimBitOffset[j]
    1692     Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1];
    1693     Int numScalabilityTypes = getNumScalabilityTypes();
    1694     dimBitOffset[0] = 0;
    1695 
    1696     for (Int type = 1; type <= numScalabilityTypes; type++ )
    1697     {
    1698       dimBitOffset[ type ] = 0;
    1699       for (Int dimIdx = 0; dimIdx <= type - 1; dimIdx++)
    1700         dimBitOffset[ type ] += ( getDimensionIdLen( dimIdx ) );
    1701     }
    1702 
    1703     for (Int type = 0; type < getNumScalabilityTypes(); type++ )
    1704     {
    1705       for( Int layer = 1; layer < getMaxLayers(); layer++ )
    1706       {
    1707         assert( getDimensionId( layer, type ) == ( ( getLayerIdInNuh( layer ) & ( (1 << dimBitOffset[ type + 1 ] ) - 1) ) >> dimBitOffset[ type ] ) );
    1708       };
    1709   };
    1710   }
    1711 
    17121789  for( Int layer = 1; layer < getMaxLayers(); layer++ )
    17131790  {
     
    17371814}
    17381815
    1739 
    1740 
    17411816Void TComVPS::setScalabilityMask( UInt val )
    17421817{
     
    17451820}
    17461821
    1747 Void TComVPS::calcIvRefLayers()
    1748 {
    1749   for( Int i = 1; i <= getMaxLayers(); i++ )
     1822Void TComVPS::setRefLayers()
     1823{
     1824  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
    17501825  {
     1826    m_numSamplePredRefLayers[ i ] = 0;
     1827    m_numMotionPredRefLayers[ i ] = 0;
    17511828    m_numDirectRefLayers[ i ] = 0;
     1829    for( Int j = 0; j < MAX_NUM_LAYERS; j++ ) {
     1830      m_samplePredEnabledFlag[ i ][ j ] = 0;
     1831      m_motionPredEnabledFlag[ i ][ j ] = 0;
     1832      m_refLayerId[ i ][ j ] = 0;
     1833      m_samplePredRefLayerId[ i ][ j ] = 0;
     1834      m_motionPredRefLayerId[ i ][ j ] = 0;
     1835    }
     1836  }
     1837
     1838  for( Int i = 1; i  <= getMaxLayers()- 1; i++ )
     1839  {
     1840    for( Int j = 0; j < i; j++ )
     1841    {
     1842      if( getDirectDependencyFlag(i,j) )
     1843      {
     1844        m_refLayerId[ i ][m_numDirectRefLayers[ i ]++ ] = getLayerIdInNuh( j );
     1845
     1846        m_samplePredEnabledFlag [ i ][ j ]  = ( (   getDirectDependencyType( i , j ) + 1 ) & 1 ) == 1;
     1847        m_numSamplePredRefLayers[ i ]      += m_samplePredEnabledFlag [ i ][ j ] ? 1 : 0;
     1848        m_motionPredEnabledFlag [ i ][ j ]  = ( ( ( getDirectDependencyType( i , j ) + 1 ) & 2 ) >> 1 ) == 1;
     1849        m_numMotionPredRefLayers[ i ]      += m_motionPredEnabledFlag  [ i][ j ] ? 1 : 0;
     1850      }
     1851    }
     1852  }
     1853
     1854  for( Int i = 1, mIdx = 0, sIdx = 0; i <= getMaxLayers()- 1; i++ )
     1855  {   
    17521856    for( Int j = 0 ; j < i; j++ )
    1753       if( m_directDependencyFlag[ i ][ j ])
    1754         m_refLayerId[ i ][ m_numDirectRefLayers[ i ]++ ] = m_layerIdInNuh[ j ];   
     1857    {
     1858      if( m_motionPredEnabledFlag[ i ][ j ] )
     1859      {
     1860        m_motionPredRefLayerId[ i ][ mIdx++ ] = getLayerIdInNuh( j );
     1861      }
     1862     
     1863      if( m_samplePredEnabledFlag[ i ][ j ] )
     1864      {
     1865        m_samplePredRefLayerId[ i ][ sIdx++ ] = getLayerIdInNuh( j );
     1866      }
     1867    }
    17551868  }
    17561869}
     
    18141927  return getLayerIdInNuh( foundlayerId );
    18151928}
     1929
    18161930#endif // H_3D
     1931
     1932Int TComVPS::xCeilLog2( Int val )
     1933{
     1934  assert( val > 0 );
     1935  Int ceilLog2 = 0;
     1936  while( val > ( 1 << ceilLog2 ) ) ceilLog2++;
     1937  return ceilLog2;
     1938}
     1939
     1940
     1941Int TComVPS::xGetDimBitOffset( Int j )
     1942{
     1943  Int dimBitOffset = 0;
     1944  if ( getSplittingFlag() && j == getNumScalabilityTypes() )
     1945  {
     1946     dimBitOffset = 6;
     1947  }
     1948  else
     1949  {
     1950    for (Int dimIdx = 0; dimIdx <= j-1; dimIdx++)
     1951    {
     1952      dimBitOffset += getDimensionIdLen( dimIdx );
     1953    }
     1954  }
     1955  return dimBitOffset;
     1956}
     1957
     1958Int TComVPS::inferDimensionId( Int i, Int j )
     1959{
     1960    return ( ( getLayerIdInNuh( i ) & ( (1 << xGetDimBitOffset( j + 1 ) ) - 1) ) >> xGetDimBitOffset( j ) );
     1961}
     1962
     1963Int TComVPS::inferLastDimsionIdLenMinus1()
     1964{
     1965  return ( 5 - xGetDimBitOffset( getNumScalabilityTypes() - 1 ) );
     1966}
     1967
     1968Int TComVPS::getNumLayersInIdList( Int lsIdx )
     1969{
     1970  assert( lsIdx >= 0 );
     1971  assert( lsIdx <= getVpsNumLayerSetsMinus1() );
     1972  Int numLayersInIdList = 0;
     1973  for (Int layerId = 0; layerId < getVpsMaxLayerId(); layerId++ )
     1974  {
     1975    numLayersInIdList += ( getLayerIdIncludedFlag( lsIdx, layerId ) );
     1976  }
     1977  return numLayersInIdList;
     1978}
    18171979#endif // H_MV
    18181980
     
    18652027#if H_MV
    18662028, m_interViewMvVertConstraintFlag (false)
     2029, m_numIlpRestrictedRefLayers ( 0 )
     2030
    18672031#endif
    18682032#if H_3D
     
    18832047  ::memset(m_ltRefPicPocLsbSps, 0, sizeof(m_ltRefPicPocLsbSps));
    18842048  ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag));
     2049#if H_MV
     2050  for (Int i = 0; i < MAX_NUM_LAYERS; i++ )
     2051  {
     2052    m_minSpatialSegmentOffsetPlus1[ i ] = 0;
     2053    m_ctuBasedOffsetEnabledFlag   [ i ] = false;
     2054    m_minHorizontalCtuOffsetPlus1 [ i ] = 0;
     2055  }
     2056#endif
    18852057}
    18862058
     
    23612533  refPicSetInterLayer.clear();
    23622534
    2363   for( Int i = 0; i < getVPS()->getNumDirectRefLayers( getLayerIdInVps() ); i++ )
    2364   {
    2365     Int layerIdRef = getVPS()->getRefLayerId( getLayerIdInVps(), i );
     2535  for( Int i = 0; i < getNumActiveRefLayerPics(); i++ )
     2536  {
     2537    Int layerIdRef = getRefPicLayerId( i );
    23662538    TComPic* picRef = ivPicLists->getPic( layerIdRef, getPOC() ) ;
    23672539    assert ( picRef != 0 );
     
    23712543    picRef->getSlice(0)->setReferenced( true );       
    23722544
     2545    // Consider to check here:
     2546    // "If the current picture is a RADL picture, there shall be no entry in the RefPicSetInterLayer that is a RASL picture. "
    23732547    refPicSetInterLayer.push_back( picRef );
    23742548  }
     
    24412615    }
    24422616  }
     2617}
     2618Int TComSlice::xCeilLog2( Int val )
     2619{
     2620  assert( val > 0 );
     2621  Int ceilLog2 = 0;
     2622  while( val > ( 1 << ceilLog2 ) ) ceilLog2++;
     2623  return ceilLog2;
     2624}
     2625
     2626Void TComSlice::markCurrPic( TComPic* currPic )
     2627{
     2628  if ( !currPic->getSlice(0)->getDiscardableFlag() )
     2629  {
     2630    currPic->getSlice(0)->setReferenced( true ) ;
     2631    currPic->setIsLongTerm( false );
     2632  }
     2633  else
     2634  {
     2635    currPic->getSlice(0)->setReferenced( false ) ;
     2636  }
     2637}
     2638
     2639Void TComSlice::setRefPicSetInterLayer( std::vector<TComPic*>* refPicSetInterLayer )
     2640{
     2641  m_refPicSetInterLayer = refPicSetInterLayer;
     2642}
     2643
     2644TComPic* TComSlice::getPicFromRefPicSetInterLayer( Int layerId )
     2645{
     2646  assert( m_refPicSetInterLayer != 0 );
     2647  assert( (*m_refPicSetInterLayer).size() == getNumActiveRefLayerPics() );
     2648  TComPic* pcPic = NULL;
     2649  for ( Int i = 0; i < getNumActiveRefLayerPics(); i++ )
     2650  {
     2651    if ((*m_refPicSetInterLayer)[ i ]->getLayerId() == layerId)
     2652    {
     2653      pcPic = (*m_refPicSetInterLayer)[ i ];
     2654    }
     2655  }
     2656  assert(pcPic != NULL);
     2657  return pcPic;
     2658}
     2659
     2660Int TComSlice::getNumActiveRefLayerPics()
     2661{
     2662  Int numActiveRefLayerPics;
     2663
     2664  if( getLayerId() == 0 || getVPS()->getNumDirectRefLayers( getLayerIdInVps() ) ==  0 || !getInterLayerPredEnabledFlag() )
     2665  {
     2666    numActiveRefLayerPics = 0;
     2667  }
     2668  else if( getVPS()->getMaxOneActiveRefLayerFlag() || getVPS()->getNumDirectRefLayers( getLayerIdInVps() ) == 1 )
     2669  {
     2670    numActiveRefLayerPics = 1;
     2671  }
     2672  else
     2673  {
     2674    numActiveRefLayerPics = getNumInterLayerRefPicsMinus1() + 1;
     2675  }
     2676  return numActiveRefLayerPics;
     2677}
     2678
     2679Int TComSlice::getRefPicLayerId( Int i )
     2680{
     2681  return getVPS()->getRefLayerId( getLayerIdInVps(), getInterLayerPredLayerIdc( i ) );
     2682}
     2683
     2684Void TComSlice::setActiveMotionPredRefLayers()
     2685{
     2686  Int j = 0;
     2687  for( Int i = 0; i < getNumActiveRefLayerPics(); i++)
     2688  {
     2689    if( getVPS()->getMotionPredEnabledFlag( getLayerIdInVps(), getInterLayerPredLayerIdc( i ))  )
     2690    {
     2691      m_activeMotionPredRefLayerId[ j++ ] = getVPS()->getRefLayerId( getLayerIdInVps(), i );
     2692    }
     2693  }
     2694  m_numActiveMotionPredRefLayers = j;
     2695
     2696  // Consider incorporating bitstream conformance tests on derived variables here.
     2697}
     2698
     2699Bool TComSlice::getInterRefEnabledInRPLFlag()
     2700{
     2701  Bool interRefEnabledInRPLFlag;
     2702  if ( getVPS()->getNumSamplePredRefLayers( getLayerIdInVps() ) > 0 && getNumActiveRefLayerPics() > 0 )
     2703  {
     2704    interRefEnabledInRPLFlag = !getInterLayerSamplePredOnlyFlag();
     2705  }
     2706  else
     2707  {
     2708    interRefEnabledInRPLFlag = 1;
     2709  }
     2710  return interRefEnabledInRPLFlag;
    24432711}
    24442712#if H_3D_ARP
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h

    r532 r534  
    487487  UInt        m_numHrdParameters;
    488488#if H_MV
    489   UInt        m_maxNuhLayerId;
     489  UInt        m_maxLayerId;
    490490#else
    491491  UInt        m_maxNuhReservedZeroLayerId;
     
    494494  UInt*       m_hrdOpSetIdx;
    495495  Bool*       m_cprmsPresentFlag;
    496   UInt        m_numOpSets;
    497 #if H_MV
     496#if H_MV
     497  UInt        m_vpsNumLayerSetsMinus1;
    498498  Bool        m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_LAYER_ID_PLUS1];
    499499#else
     500  UInt        m_numOpSets;
    500501  Bool        m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1];
    501502#endif
     
    514515
    515516#if H_MV
     517  /// VPS EXTENSION SYNTAX ELEMENTS
    516518  Bool        m_avcBaseLayerFlag;
    517519  Bool        m_splittingFlag;
     
    520522  Bool        m_vpsNuhLayerIdPresentFlag;
    521523  Int         m_layerIdInNuh             [MAX_NUM_LAYER_IDS];
     524  Int         m_dimensionId              [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 
     525  Bool        m_directDependencyFlag     [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
     526  Int         m_maxTidIlRefPicPlus1      [MAX_NUM_LAYERS];
     527  Int         m_vpsNumberLayerSetsMinus1;
     528  Int         m_vpsNumProfileTierLevelMinus1;   
     529  Bool        m_vpsProfilePresentFlag    [MAX_VPS_OP_SETS_PLUS1];
     530  Int         m_profileRefMinus1         [MAX_VPS_PROFILE_TIER_LEVEL];
     531  Bool        m_moreOutputLayerSetsThanDefaultFlag;
     532  Int         m_numAddOutputLayerSetsMinus1;   
     533  Bool        m_defaultOneTargetOutputLayerFlag;
     534  Int         m_outputLayerSetIdxMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
     535  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
     536  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
     537  Bool        m_maxOneActiveRefLayerFlag;       
     538  Int         m_directDepTypeLenMinus2;         
     539  Int         m_directDependencyType     [MAX_NUM_LAYERS] [MAX_NUM_LAYERS];
     540
     541  // VPS EXTENSION SEMANTICS VARIABLES
    522542  Int         m_layerIdInVps             [MAX_NUM_LAYERS   ];
    523   Int         m_dimensionId              [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 
     543
     544  Int         m_numDirectRefLayers       [MAX_NUM_LAYERS];
     545  Int         m_refLayerId               [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 
     546
     547  Int         m_numSamplePredRefLayers   [MAX_NUM_LAYERS];
     548  Bool        m_samplePredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     549  Int         m_samplePredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     550
     551  Int         m_numMotionPredRefLayers   [MAX_NUM_LAYERS];
     552  Bool        m_motionPredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     553  Int         m_motionPredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    524554#if H_3D
    525555  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
     556#endif
     557
     558  Int         xCeilLog2       ( Int val );
     559  Int         xGetDimBitOffset( Int j );
     560 
    526561#if H_3D_ARP
    527562  UInt        m_uiUseAdvResPred          [MAX_NUM_LAYERS   ];
     
    549584  Bool        m_ivMvScalingFlag;
    550585#endif
    551 
    552 #endif
    553 
    554  
    555   Bool        m_vpsProfilePresentFlag    [MAX_VPS_OP_SETS_PLUS1];
    556   Int         m_profileLayerSetRefMinus1 [MAX_VPS_OP_SETS_PLUS1];
    557   Int         m_numOutputLayerSets;
    558   Int         m_outputLayerSetIdx        [MAX_VPS_OP_SETS_PLUS1];
    559   Bool        m_outputLayerFlag          [MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_LAYER_ID_PLUS1];
    560   Bool        m_directDependencyFlag     [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
    561 
    562   Int         m_numDirectRefLayers       [ MAX_NUM_LAYERS ];
    563   Int         m_refLayerId               [ MAX_NUM_LAYERS ][MAX_NUM_LAYERS]; 
    564586
    565587#endif
     
    606628
    607629#if H_MV
    608   UInt    getMaxNuhLayerId()                                    { return m_maxNuhLayerId; }
    609   Void    setMaxNuhLayerId(UInt v)                              { m_maxNuhLayerId = v;    }
     630  UInt    getVpsMaxLayerId()                                    { return m_maxLayerId; }
     631  Void    setVpsMaxLayerId(UInt v)                              { m_maxLayerId = v;    }
     632
     633  UInt    getVpsNumLayerSetsMinus1()                            { return m_vpsNumLayerSetsMinus1; }
     634  Void    setVpsNumLayerSetsMinus1(UInt v)                      { m_vpsNumLayerSetsMinus1 = v;    }
    610635#else
    611636  UInt    getMaxNuhReservedZeroLayerId()                        { return m_maxNuhReservedZeroLayerId; }
    612637  Void    setMaxNuhReservedZeroLayerId(UInt v)                  { m_maxNuhReservedZeroLayerId = v;    }
    613 #endif
    614638
    615639  UInt    getMaxOpSets()                                        { return m_numOpSets; }
    616640  Void    setMaxOpSets(UInt v)                                  { m_numOpSets = v;    }
     641#endif
    617642  Bool    getLayerIdIncludedFlag(UInt opsIdx, UInt id)          { return m_layerIdIncludedFlag[opsIdx][id]; }
    618643  Void    setLayerIdIncludedFlag(Bool v, UInt opsIdx, UInt id)  { m_layerIdIncludedFlag[opsIdx][id] = v;    }
     
    652677  Int     getLayerIdInNuh( Int layerIdInVps )                              { assert( m_layerIdInNuh[layerIdInVps] >= 0 ); return m_layerIdInNuh[layerIdInVps]; }
    653678
     679  Bool    nuhLayerIdIncluded( Int layerIdinNuh )                           { return ( m_layerIdInVps[ layerIdinNuh ] > 0 );  }
     680
     681  Void    setDimensionId( Int layerIdInVps, Int scalIdx, Int val )         { m_dimensionId[layerIdInVps][scalIdx] = val;  }
     682  Int     getDimensionId( Int layerIdInVps, Int scalIdx )                  { return m_dimensionId[layerIdInVps][scalIdx]; }
     683
     684  Void    setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val;  }
     685  Bool    getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps )           { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; }
     686
     687  Void    setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val )              { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val;  }
     688  Int     getMaxTidIlRefPicPlus1( Int layerIdInVps )                       { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; }
     689 
     690  Void    setVpsNumberLayerSetsMinus1( Int val )                           { m_vpsNumberLayerSetsMinus1 = val;  }
     691  Int     getVpsNumberLayerSetsMinus1( )                                   { return m_vpsNumberLayerSetsMinus1; }
     692 
     693  Void    setVpsNumProfileTierLevelMinus1( Int val )                       { m_vpsNumProfileTierLevelMinus1 = val;  }
     694  Int     getVpsNumProfileTierLevelMinus1( )                               { return m_vpsNumProfileTierLevelMinus1; }
     695 
     696  Void    setVpsProfilePresentFlag( Int idx, Bool val )                    { m_vpsProfilePresentFlag[idx] = val;  }
     697  Bool    getVpsProfilePresentFlag( Int idx )                              { return m_vpsProfilePresentFlag[idx]; }
     698
     699  Void    setProfileRefMinus1( Int profileTierLevelIdx, Int val )          { m_profileRefMinus1[ profileTierLevelIdx ] = val;  }
     700  Int     getProfileRefMinus1( Int profileTierLevelIdx )                   { return m_profileRefMinus1[ profileTierLevelIdx ]; }
     701
     702  Void    setMoreOutputLayerSetsThanDefaultFlag( Bool flag )               { m_moreOutputLayerSetsThanDefaultFlag = flag; }
     703  Bool    getMoreOutputLayerSetsThanDefaultFlag()                          { return m_moreOutputLayerSetsThanDefaultFlag; }
     704 
     705  Void    setNumAddOutputLayerSetsMinus1( Int val )                        { m_numAddOutputLayerSetsMinus1 = val; }
     706  Int     getNumAddOutputLayerSetsMinus1( )                                { return m_numAddOutputLayerSetsMinus1; }
     707 
     708  Void    setDefaultOneTargetOutputLayerFlag( Bool flag )                  { m_defaultOneTargetOutputLayerFlag = flag; }
     709  Bool    getDefaultOneTargetOutputLayerFlag( )                            { return m_defaultOneTargetOutputLayerFlag; }
     710 
     711  Void    setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val )        { m_outputLayerSetIdxMinus1[ outLayerSetIdx ]  = val; }
     712  Int     getOutputLayerSetIdxMinus1( Int outLayerSetIdx )                 { return m_outputLayerSetIdxMinus1[ outLayerSetIdx ]; }
     713
     714  Void    setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag )       { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; }
     715  Bool    getOutputLayerFlag( Int outLayerSetIdx, Int i )                  { return m_outputLayerFlag[ outLayerSetIdx ][ i ]; }
     716
     717  Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx  = val ]; }
     718  Int     getProfileLevelTierIdx( Int outLayerSetIdx )                     { return m_profileLevelTierIdx[ outLayerSetIdx ]; }
     719
     720  Void    setMaxOneActiveRefLayerFlag( Bool flag)                          { m_maxOneActiveRefLayerFlag = flag; }
     721  Bool    getMaxOneActiveRefLayerFlag( )                                   { return m_maxOneActiveRefLayerFlag; }
     722
     723  Void    setDirectDepTypeLenMinus2( Int val)                              { m_directDepTypeLenMinus2 = val; }
     724  Int     getDirectDepTypeLenMinus2( )                                     { return m_directDepTypeLenMinus2; }
     725
     726  Void    setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; }
     727  Int     getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps)   { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; }
     728
     729
     730  // VPS EXTENSION SEMANTICS VARIABLES
    654731  Void    setLayerIdInVps( Int layerIdInNuh, Int val )                     { m_layerIdInVps[layerIdInNuh] = val;  }
    655732  Int     getLayerIdInVps( Int layerIdInNuh )                              { assert( m_layerIdInVps[layerIdInNuh] >= 0 ); return m_layerIdInVps[layerIdInNuh]; }
    656733
    657   Bool    nuhLayerIdIncluded( Int layerIdinNuh )                           { return ( m_layerIdInVps[ layerIdinNuh ] > 0 );  }
    658 
    659   Void    setDimensionId( Int layerIdInVps, Int scalIdx, Int val )         { m_dimensionId[layerIdInVps][scalIdx] = val;  }
    660   Int     getDimensionId( Int layerIdInVps, Int scalIdx )                  { return m_dimensionId[layerIdInVps][scalIdx]; }
    661 
    662734  Int     getScalabilityId ( Int layerIdInVps, ScalabilityType scalType );
    663 
    664735  Int     getViewId  ( Int layerIdInVps )                                  { return getScalabilityId( layerIdInVps, VIEW_ID  ); }
     736
     737  Void    setRefLayers();
     738
     739  Int     getNumDirectRefLayers( Int layerIdInVps )          { return m_numDirectRefLayers[ layerIdInVps ];  };                               
     740  Int     getRefLayerId        ( Int layerIdInVps, Int idx );;
     741 
     742  Int     getNumSamplePredRefLayers( Int layerIdInVps )          { return m_numSamplePredRefLayers[layerIdInVps]; }
     743  Bool    getSamplePredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_samplePredEnabledFlag [layerIdInVps][idx]; }
     744  Int     getSamplePredRefLayerId  ( Int layerIdInVps, Int idx ) { return m_samplePredRefLayerId  [layerIdInVps][idx]; }
     745
     746  Int     getNumMotionPredRefLayers( Int layerIdInVps )          { return m_numMotionPredRefLayers[layerIdInVps]; }
     747  Bool    getMotionPredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_motionPredEnabledFlag [layerIdInVps][idx]; }
     748  Int     getMotionPredRefLayerId  ( Int layerIdInVps, Int idx ) { return m_motionPredRefLayerId  [layerIdInVps][idx]; }
     749
     750  Bool    checkVPSExtensionSyntax();
     751  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
     752
     753  Int     getProfileLevelTierIdxLen() { return xCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
     754  Int     getNumLayersInIdList              ( Int lsIdx );;
     755
     756  // inference
     757  Int     inferDimensionId     ( Int i, Int j );
     758  Int     inferLastDimsionIdLenMinus1();
     759
    665760#if H_3D 
    666761  Void    initViewIndex();
    667762  Int     getViewIndex    ( Int layerIdInVps )                             { return m_viewIndex[ layerIdInVps ]; }   
    668763  Int     getDepthId      ( Int layerIdInVps )                             { return getScalabilityId( layerIdInVps, DEPTH_ID ); }
    669   Int     getLayerIdInNuh( Int viewIndex, Bool depthFlag ); 
     764  Int     getLayerIdInNuh( Int viewIndex, Bool depthFlag );   
     765
    670766#if H_3D_ARP
    671767  UInt    getUseAdvRP  ( Int layerIdInVps )                                { return m_uiUseAdvResPred[layerIdInVps];    }
     
    703799  Void    setIvMvScalingFlag   ( Bool b )                 { m_ivMvScalingFlag = b;    } 
    704800#endif
    705 #endif
    706 
    707   Void    setVpsProfilePresentFlag( Int layerSet, Bool val )               { m_vpsProfilePresentFlag[layerSet] = val;  }
    708   Bool    getVpsProfilePresentFlag( Int layerSet )                         { return m_vpsProfilePresentFlag[layerSet]; }
    709 
    710   Void    setProfileLayerSetRefMinus1( Int layerSet, Int val )             { m_profileLayerSetRefMinus1[layerSet] = val;  }
    711   Bool    getProfileLayerSetRefMinus1( Int layerSet )                      { return m_profileLayerSetRefMinus1[layerSet]; }
    712 
    713   Void    setNumOutputLayerSets( Int val )                                 { m_numOutputLayerSets = val;  }
    714   Int     getNumOutputLayerSets()                                          { return m_numOutputLayerSets; }
    715 
    716   Void    setOutputLayerSetIdx( Int layerSet, Int val )                    { m_outputLayerSetIdx[layerSet] = val;  }
    717   Int     getOutputLayerSetIdx( Int layerSet )                             { return m_outputLayerSetIdx[layerSet]; }
    718 
    719   Void    setOutputLayerFlag( Int layerSet, Int layer, Bool val )          { m_outputLayerFlag[layerSet][layer] = val;  }
    720   Bool    getOutputLayerFlag( Int layerSet, Int layer )                    { return m_outputLayerFlag[layerSet][layer]; }
    721 
    722   Void    setDirectDependencyFlag( Int layerHigh, Int layerLow, Bool val ) { m_directDependencyFlag[layerHigh][layerLow] = val;  }
    723   Bool    getDirectDependencyFlag( Int layerHigh, Int layerLow )           { return m_directDependencyFlag[layerHigh][layerLow]; }
    724 
    725   Void    calcIvRefLayers();
    726 
    727   Int     getNumDirectRefLayers( Int layerIdInVps )          { return m_numDirectRefLayers[ layerIdInVps ];  };                               
    728   Int     getRefLayerId        ( Int layerIdInVps, Int idx );;
    729  
    730   Bool    checkVPSExtensionSyntax();
    731   Int     scalTypeToScalIdx   ( ScalabilityType scalType );
     801
     802#endif 
    732803#endif
    733804};
     
    813884  Int  m_numTicksPocDiffOneMinus1;
    814885#endif
    815 
     886#if H_MV
     887  Bool m_tileBoundariesAlignedFlag;
     888#endif
    816889public:
    817890  TComVUI()
     
    849922    ,m_numTicksPocDiffOneMinus1(0)
    850923#endif
     924#if H_MV
     925    ,m_tileBoundariesAlignedFlag(true)
     926#endif
    851927  {}
    852928
     
    9501026  Int  getNumTicksPocDiffOneMinus1() {return m_numTicksPocDiffOneMinus1;}
    9511027  Void setNumTicksPocDiffOneMinus1(Int x) { m_numTicksPocDiffOneMinus1 = x;}
     1028#endif
     1029#if H_MV
     1030  Bool getTileBoundariesAlignedFlag(  ) { return m_tileBoundariesAlignedFlag; }
     1031  Void setTileBoundariesAlignedFlag( Bool flag ) { m_tileBoundariesAlignedFlag = flag; }
    9521032#endif
    9531033};
     
    10351115#if H_MV
    10361116  Bool        m_interViewMvVertConstraintFlag;
     1117  Int         m_numIlpRestrictedRefLayers        ;
     1118  Int         m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS];
     1119  Bool        m_ctuBasedOffsetEnabledFlag   [MAX_NUM_LAYERS];
     1120  Int         m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS];
    10371121#endif
    10381122#if H_3D
     
    10411125  Int         m_aaiCodedScale [2][MAX_NUM_LAYERS];
    10421126  Int         m_aaiCodedOffset[2][MAX_NUM_LAYERS];
     1127#endif
     1128#if H_MV
     1129  Int         m_layerId;
    10431130#endif
    10441131public:
     
    11751262  Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; }
    11761263  Bool getInterViewMvVertConstraintFlag()         { return m_interViewMvVertConstraintFlag;}
     1264
     1265  ////  sps_extension_vui_parameters( )
     1266  Void setNumIlpRestrictedRefLayers   ( Int val )        { m_numIlpRestrictedRefLayers         = val;}
     1267  Int  getNumIlpRestrictedRefLayers   ( )                { return m_numIlpRestrictedRefLayers        ;}
     1268 
     1269  Void setMinSpatialSegmentOffsetPlus1( Int i, Int val ) { m_minSpatialSegmentOffsetPlus1[ i ] = val;}
     1270  Int  getMinSpatialSegmentOffsetPlus1( Int i )          { return m_minSpatialSegmentOffsetPlus1[ i ];}
     1271 
     1272  Void setCtuBasedOffsetEnabledFlag   ( Int i, Bool flag ) { m_ctuBasedOffsetEnabledFlag   [ i ] = flag;}
     1273  Bool getCtuBasedOffsetEnabledFlag   ( Int i )            { return m_ctuBasedOffsetEnabledFlag   [ i ];}
     1274
     1275  Void setMinHorizontalCtuOffsetPlus1 ( Int i, Int val )   { m_minHorizontalCtuOffsetPlus1 [ i ] = val;}
     1276  Int  getMinHorizontalCtuOffsetPlus1 ( Int i )            { return m_minHorizontalCtuOffsetPlus1 [ i ];}
    11771277#endif
    11781278#if H_3D
     
    11851285  Int* getInvCodedOffset     ()  { return m_aaiCodedOffset[1]; }
    11861286#endif
     1287#if H_MV
     1288  Int  getLayerId            ()           { return m_layerId; }
     1289  Void setLayerId            ( Int val )  { m_layerId = val; }
     1290#endif
     1291
    11871292};
    11881293
     
    12131318#if H_MV
    12141319  // Why not an listIdx for all members, would avoid code duplication??
    1215   Void       setRefPicSetIdxL(UInt li, UInt idx, UInt refPicSetIdx) {( li==0 ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ) = refPicSetIdx; };
    1216   Void       setRefPicListModificationFlagL(UInt li, Bool flag) { ( li==0  ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1 ) = flag;  }; 
     1320  Void       setRefPicSetIdxL(UInt li, UInt idx, UInt refPicSetIdx) {( li==0 ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ) = refPicSetIdx; }
     1321  UInt       getRefPicSetIdxL(UInt li, UInt idx ) { return ( li == 0 ) ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ; }
     1322  Void       setRefPicListModificationFlagL(UInt li, Bool flag) { ( li==0  ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1 ) = flag;  }
     1323  Bool       getRefPicListModificationFlagL(UInt li ) { return ( li== 0) ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1; }
    12171324#endif
    12181325};
     
    15391646  Bool       m_enableTMVPFlag;
    15401647#if H_MV
     1648  std::vector<TComPic*>* m_refPicSetInterLayer;
    15411649  Int        m_layerId;
    15421650  Int        m_viewId;
     
    15651673#endif
    15661674#endif
     1675#if H_MV
     1676// Additional slice header syntax elements
     1677  Bool       m_discardableFlag;
     1678  Bool       m_interLayerPredEnabledFlag;
     1679  Int        m_numInterLayerRefPicsMinus1;
     1680  Int        m_interLayerPredLayerIdc       [MAX_NUM_LAYERS];
     1681  Bool       m_interLayerSamplePredOnlyFlag;
     1682  Bool       m_altCollocatedIndicationFlag;
     1683  Int        m_collocatedRefLayerIdx;
     1684// Additional slice header semantics variables
     1685  Int        m_numActiveMotionPredRefLayers;
     1686  Int        m_activeMotionPredRefLayerId   [ MAX_NUM_LAYER_IDS ];
     1687
     1688#endif
     1689
    15671690public:
    15681691  TComSlice();
     
    17571880  Void createAndApplyIvReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer );
    17581881  static Void markIvRefPicsAsShortTerm    ( std::vector<TComPic*> refPicSetInterLayer );
     1882  static Void markCurrPic                 ( TComPic* currPic );;
    17591883  static Void markIvRefPicsAsUnused       ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc  );
    17601884
     
    18731997
    18741998#endif
     1999#if H_MV
     2000// Additional slice header syntax elements
     2001Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; }
     2002Bool getDiscardableFlag(  ) { return m_discardableFlag; }
     2003
     2004Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; }
     2005Bool getInterLayerPredEnabledFlag(  ) { return m_interLayerPredEnabledFlag; }
     2006
     2007Void setNumInterLayerRefPicsMinus1( Int  val ) { m_numInterLayerRefPicsMinus1 = val; }
     2008Int  getNumInterLayerRefPicsMinus1(  ) { return m_numInterLayerRefPicsMinus1; }
     2009
     2010Void setInterLayerPredLayerIdc( Int i, Int  val ) { m_interLayerPredLayerIdc[i] = val; }
     2011Int  getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; }
     2012
     2013Void setInterLayerSamplePredOnlyFlag( Bool flag ) { m_interLayerSamplePredOnlyFlag = flag; }
     2014Bool getInterLayerSamplePredOnlyFlag(  ) { return m_interLayerSamplePredOnlyFlag; }
     2015
     2016Void setAltCollocatedIndicationFlag( Bool flag ) { m_altCollocatedIndicationFlag = flag; }
     2017Bool getAltCollocatedIndicationFlag(  ) { return m_altCollocatedIndicationFlag; }
     2018
     2019Void setCollocatedRefLayerIdx( Int  val ) { m_collocatedRefLayerIdx = val; }
     2020Int  getCollocatedRefLayerIdx(  ) { return m_collocatedRefLayerIdx; }
     2021
     2022// Additional variables derived in slice header semantics
     2023Int  getNumInterLayerRefPicsMinus1Len( ) { return xCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerIdInVps() )); }
     2024Int  getInterLayerPredLayerIdcLen    ( ) { return xCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerIdInVps() )); }
     2025
     2026Int  getNumActiveRefLayerPics( );
     2027Int  getRefPicLayerId               ( Int i );
     2028
     2029Void setActiveMotionPredRefLayers   ( );
     2030
     2031Int  getNumActiveMotionPredRefLayers(  )      { return m_numActiveMotionPredRefLayers; }
     2032Int  getActiveMotionPredRefLayerId  ( Int i ) { return m_activeMotionPredRefLayerId[i]; }
     2033
     2034Bool getInterRefEnabledInRPLFlag( );
     2035
     2036Void     setRefPicSetInterLayer       ( std::vector<TComPic*>* m_refPicSetInterLayer );
     2037TComPic* getPicFromRefPicSetInterLayer( Int layerId );
     2038
     2039#endif
    18752040
    18762041protected:
     
    18792044TComPic*  xGetLongTermRefPic(TComList<TComPic*>& rcListPic, Int poc, Bool pocHasMsb);
    18802045#if H_MV
     2046  Int       xCeilLog2( Int val );
    18812047  TComPic*  xGetInterLayerRefPic( std::vector<TComPic*>& rcListIlPic, Int layerId ); 
    18822048#endif
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h

    r532 r534  
    260260#if H_MV
    261261#define MAX_NUM_LAYERS                  64
     262#define MAX_VPS_PROFILE_TIER_LEVEL      64
     263#define MAX_VPS_ADD_OUTPUT_LAYER_SETS   1024
     264#define MAX_VPS_OUTPUTLAYER_SETS        ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 )
    262265#endif
    263266
Note: See TracChangeset for help on using the changeset viewer.