Changeset 1066 in 3DVCSoftware for trunk/source/Lib/TLibCommon


Ignore:
Timestamp:
13 Oct 2014, 12:19:36 (10 years ago)
Author:
tech
Message:

Merged 12.0-dev1@1065.

Location:
trunk/source/Lib/TLibCommon
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r1039 r1066  
    41774177    TComPic * pcTexPic = m_pcSlice->getTexturePic();
    41784178#if H_3D_FCO
     4179#if LGE_FCO_I0116
     4180    if (pcTexPic && pcTexPic->getReconMark())
     4181#else
    41794182    if (pcTexturePic->getReconMark())
     4183#endif
    41804184    {
    41814185#endif   
     
    61606164  TComMv cMv;
    61616165#if MTK_I0093
    6162   Int iDisp     = getSlice()->getDepthToDisparityB( 0 )[ 1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ];
     6166#if H_3D_FIX_64BIT_SHIFT
     6167  Int iDisp     = getSlice()->getDepthToDisparityB( 0 )[ (Int64) (1 << ( getSlice()->getSPS()->getBitDepthY() - 1 )) ];
     6168#else
     6169  Int iDisp     = getSlice()->getDepthToDisparityB( 0 )[  1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ];
     6170#endif
    61636171#else
    61646172  Int iDisp     = getSlice()->getDepthToDisparityB( 0 )[ 128 ];
  • trunk/source/Lib/TLibCommon/TComRom.cpp

    r1039 r1066  
    7171    c <<= 1;
    7272  } 
     73
     74#if H_MV
     75#if H_MV_HLS_PTL_LIMITS
     76 g_generalTierAndLevelLimits[ Level::LEVEL1   ] = TComGeneralTierAndLevelLimits(    36864,     350,  INT_MIN,   16,   1,   1 );
     77 g_generalTierAndLevelLimits[ Level::LEVEL2   ] = TComGeneralTierAndLevelLimits(   122880,    1500,  INT_MIN,   16,   1,   1 );
     78 g_generalTierAndLevelLimits[ Level::LEVEL2_1 ] = TComGeneralTierAndLevelLimits(   245760,    3000,  INT_MIN,   20,   1,   1 );
     79 g_generalTierAndLevelLimits[ Level::LEVEL3   ] = TComGeneralTierAndLevelLimits(   552960,    6000,  INT_MIN,   30,   2,   2 );
     80 g_generalTierAndLevelLimits[ Level::LEVEL3_1 ] = TComGeneralTierAndLevelLimits(   983040,   10000,  INT_MIN,   40,   3,   3 );
     81 g_generalTierAndLevelLimits[ Level::LEVEL4   ] = TComGeneralTierAndLevelLimits(  2228224,   12000,    30000,   75,   5,   5 );
     82 g_generalTierAndLevelLimits[ Level::LEVEL4_1 ] = TComGeneralTierAndLevelLimits(  2228224,   20000,    50000,   75,   5,   5 );
     83 g_generalTierAndLevelLimits[ Level::LEVEL5   ] = TComGeneralTierAndLevelLimits(  8912896,   25000,   100000,  200,  11,  10 );
     84 g_generalTierAndLevelLimits[ Level::LEVEL5_1 ] = TComGeneralTierAndLevelLimits(  8912896,   40000,   160000,  200,  11,  10 );
     85 g_generalTierAndLevelLimits[ Level::LEVEL5_2 ] = TComGeneralTierAndLevelLimits(  8912896,   60000,   240000,  200,  11,  10 );
     86 g_generalTierAndLevelLimits[ Level::LEVEL6   ] = TComGeneralTierAndLevelLimits( 35651584,   60000,   240000,  600,  22,  20 );
     87 g_generalTierAndLevelLimits[ Level::LEVEL6_1 ] = TComGeneralTierAndLevelLimits( 35651584,  120000,   480000,  600,  22,  20 );
     88 g_generalTierAndLevelLimits[ Level::LEVEL6_2 ] = TComGeneralTierAndLevelLimits( 35651584,  240000,   800000,  600,  22,  20 );
     89#endif
     90#endif
     91
    7392}
    7493
     
    369388
    370389Char  g_aucConvertToBit  [ MAX_CU_SIZE+1 ];
    371 
     390#if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX
    372391#if H_3D_IC
    373392UInt g_aICEnableCANDIDATE[10] = { 0, };
    374393UInt g_aICEnableNUM[ 10 ] = { 0, };
    375394Int g_lastlayer=0;
     395#endif
    376396#endif
    377397#if ENC_DEC_TRACE
     
    383403UInt64 g_nSymbolCounter = 0;
    384404#if H_MV_ENC_DEC_TRAC
    385 Bool g_traceCU = true;
    386 Bool g_tracePU = true;
    387 Bool g_traceTU = true;
     405Bool g_traceCU = false;
     406Bool g_tracePU = false;
     407Bool g_traceTU = false;
    388408Bool g_disableHLSTrace = false;
    389409UInt64 g_stopAtCounter       = 0;
  • trunk/source/Lib/TLibCommon/TComRom.h

    r1039 r1066  
    187187// ==========================================
    188188
     189#if H_MV_HLS_PTL_LIMITS
     190class TComGeneralTierAndLevelLimits
     191{
     192public:
     193  TComGeneralTierAndLevelLimits::TComGeneralTierAndLevelLimits
     194  ( Int maxLumaPs,
     195    Int maxCPBMainTier,
     196    Int maxCPBHighTier,
     197    Int maxSliceSegmentsPerPicture,
     198    Int maxTileRows,
     199    Int maxTileCols )
     200  : m_maxLumaPs                 ( maxLumaPs                     ),
     201    m_maxCPBMainTier            ( maxCPBMainTier                ),
     202    m_maxCPBHighTier            ( maxCPBHighTier                ),
     203    m_maxSliceSegmentsPerPicture( maxSliceSegmentsPerPicture    ),
     204    m_maxTileRows               ( maxTileRows                   ),
     205    m_maxTileCols               ( maxTileCols                   );
     206  {};
     207
     208  Int getMaxLumaPs                 ( ) { return m_maxLumaPs                 ; };
     209  Int getMaxCPBMainTier            ( ) { return m_maxCPBMainTier            ; };
     210  Int getMaxCPBHighTier            ( ) { return m_maxCPBHighTier            ; };
     211  Int getMaxSliceSegmentsPerPicture( ) { return m_maxSliceSegmentsPerPicture; };
     212  Int getMaxTileRows               ( ) { return m_maxTileRows               ; };
     213  Int getMaxTileCols               ( ) { return m_maxTileCols               ; };
     214
     215private:
     216  const Int m_maxLumaPs;
     217  const Int m_maxCPBMainTier;
     218  const Int m_maxCPBHighTier;
     219  const Int m_maxSliceSegmentsPerPicture;
     220  const Int m_maxTileRows;
     221  const Int m_maxTileCols;
     222};
     223
     224extern std::map< Level::Name, TComGeneralTierAndLevelLimits > g_generalTierAndLevelLimits;   
     225
     226#endif
    189227// ====================================================================================================================
    190228// Misc.
     
    192230
    193231extern       Char   g_aucConvertToBit  [ MAX_CU_SIZE+1 ];   // from width to log2(width)-2
    194 
     232#if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX
    195233#if H_3D_IC
    196234extern UInt g_aICEnableCANDIDATE[10];
    197235extern UInt g_aICEnableNUM[ 10 ]; //10 layers
    198236extern Int  g_lastlayer;
     237#endif
    199238#endif
    200239
  • trunk/source/Lib/TLibCommon/TComSlice.cpp

    r1039 r1066  
    1 /* The copyright in this software is being made available under the BSD
     1/* The copyright in this software is being made available under the BSD
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
     
    103103, m_temporalLayerNonReferenceFlag ( false )
    104104, m_enableTMVPFlag                ( true )
     105#if I0044_SLICE_TMVP
     106, m_availableForTMVPRefFlag       ( true )
     107#endif
    105108#if H_MV
    106109, m_refPicSetInterLayer0           ( NULL )
     
    725728
    726729        assert( rpsCurrList[li][ orgIdx ] != NULL );
     730#if DISCARDABLE_PIC_RPS
     731        assert( rpsCurrList[li][ orgIdx ]->getSlice(0)->getDiscardableFlag() == 0 );    // Inter-layer RPS shall not contain picture with discardable_flag = 1.
     732#endif
    727733        m_apcRefPicList    [li][rIdx] = rpsCurrList    [li][ orgIdx ];
    728734        m_bIsUsedAsLongTerm[li][rIdx] = usedAsLongTerm [li][ orgIdx ] ;
     
    18751881#if H_MV
    18761882  m_vpsBaseLayerInternalFlag = true;
     1883#if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL
     1884  m_vpsBaseLayerAvailableFlag = true;
     1885#endif
    18771886#endif
    18781887
     
    19001909  {
    19011910    m_layerSetIdxForOlsMinus1[i]  = -1;
     1911#if !H_MV_HLS10_PTL
    19021912    m_profileLevelTierIdx[i]      = 0;
     1913#endif
    19031914    for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++)
    19041915    {
     1916#if H_MV_HLS10_PTL
     1917#if H_MV_HLS10_PTL_FIX
     1918      m_profileTierLevelIdx[i][j] = -1;
     1919#else
     1920      m_profileTierLevelIdx[i][j] = false;
     1921#endif
     1922#endif
    19051923      m_outputLayerFlag[i][j] = false;
    19061924    }
     
    19661984      m_directDependencyFlag[i][j] = false;
    19671985      m_directDependencyType[i][j] = -1;
     1986#if H_MV_HLS10_REF_PRED_LAYERS
     1987      m_dependencyFlag  [i][j]    = false;
     1988      m_idDirectRefLayer[i][j]    = -1;
     1989      m_idPredictedLayer[i][j]    = -1;
     1990      m_idRefLayer      [i][j]    = -1;
     1991#else
    19681992      m_refLayerId[i][j]           = -1;
     1993#endif
    19691994      m_maxTidIlRefPicsPlus1[i][j]  = 7;
    19701995    }
     
    20502075  assert( getVpsNumRepFormatsMinus1() <= 255 );
    20512076
     2077#if H_MV_HLS10_ADD_LAYERSETS
     2078  // The value of num_add_layer_sets shall be in the range of 0 to 1023, inclusive.
     2079  assert( getNumAddLayerSets() >= 0 && getNumAddLayerSets() <= 1023 );
     2080#endif
    20522081  return true;
    20532082}
     
    20812110Void TComVPS::setRefLayers()
    20822111{
     2112
     2113#if H_MV_HLS10_REF_PRED_LAYERS
     2114  for( Int i = 0; i  <=  getMaxLayersMinus1(); i++ )
     2115  {
     2116    for( Int j = 0; j  <=  getMaxLayersMinus1(); j++ )
     2117    {
     2118      m_dependencyFlag[ i ][ j ] = getDirectDependencyFlag( i , j );
     2119      for( Int k = 0; k < i; k++ )
     2120      {
     2121        if( getDirectDependencyFlag(i , k )  &&  m_dependencyFlag[k][j] )
     2122        {
     2123          m_dependencyFlag[ i ][ j ] = true;
     2124        }
     2125      }
     2126    }
     2127  }
     2128
     2129  for( Int i = 0; i  <=  getMaxLayersMinus1(); i++ )
     2130  {
     2131    Int iNuhLId = getLayerIdInNuh( i );
     2132    Int d = 0;
     2133    Int r = 0;
     2134    Int p = 0;
     2135    for( Int j = 0; j  <=  getMaxLayersMinus1(); j++ )
     2136    {
     2137      Int jNuhLid = getLayerIdInNuh( j );
     2138      if( getDirectDependencyFlag( i , j ) )
     2139      {
     2140        m_idDirectRefLayer[iNuhLId][d++] = jNuhLid;
     2141      }
     2142      if( getDependencyFlag( i , j ) )
     2143      {
     2144        m_idRefLayer      [iNuhLId][r++] = jNuhLid;
     2145      }
     2146      if( getDependencyFlag( j , i ) )
     2147      {
     2148        m_idPredictedLayer[iNuhLId][p++] = jNuhLid;
     2149      }
     2150    }
     2151    m_numDirectRefLayers[ iNuhLId ] = d;
     2152    m_numRefLayers      [ iNuhLId ] = r;
     2153    m_numPredictedLayers[ iNuhLId ] = p;
     2154  }
     2155 
     2156  Bool layerIdInListFlag[ 64 ];
     2157  for( Int i = 0; i  <=  63; i++ )
     2158  {
     2159    layerIdInListFlag[ i ] = 0;
     2160  }
     2161
     2162  Int k = 0;
     2163  for( Int i = 0; i  <=  getMaxLayersMinus1(); i++ )
     2164  {
     2165    Int iNuhLId = getLayerIdInNuh( i );
     2166    if( getNumDirectRefLayers( iNuhLId )  ==  0 )
     2167    {
     2168      m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId;
     2169      Int h = 1; 
     2170      for( Int j = 0; j < getNumPredictedLayers( iNuhLId ); j++ ) 
     2171      {
     2172        Int predLId = getIdPredictedLayer( iNuhLId, j );
     2173        if ( !layerIdInListFlag[ predLId ] )
     2174        {
     2175          m_treePartitionLayerIdList[ k ][ h++ ] = predLId;
     2176          layerIdInListFlag[ predLId ] = 1;
     2177        }         
     2178      }
     2179      m_numLayersInTreePartition[ k++ ] = h;
     2180    }
     2181  }
     2182  m_numIndependentLayers = k;
     2183#else // H_MV_HLS10_GEN
     2184
    20832185  for( Int i = 0; i  <= getMaxLayersMinus1(); i++ )
    20842186  {
     
    21162218    }
    21172219  }
    2118 
     2220 
    21192221  for( Int i = 0; i <= getMaxLayersMinus1(); i++ )  // Bug in spec "<" instead of "<="
    21202222  {
     
    21362238    countedLayerIdxFlag[ i ] = 0;
    21372239  }
    2138  
    21392240  for( Int i = 0, k = 0; i  <=  getMaxLayersMinus1(); i++ )
    21402241  {
     
    21442245      m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId;
    21452246      m_numLayersInTreePartition[ k ]      = 1;
     2247
    21462248      for( Int j = 0; j < m_numPredictedLayers[ iNuhLId ]; j++ ) 
    21472249      {
     
    21542256      }
    21552257      k++;
    2156     }
    2157     m_numIndependentLayers = k;
    2158   }
    2159 }
    2160 
     2258
     2259      m_numIndependentLayers = k;
     2260    }
     2261  }
     2262#endif // H_MV_HLS10_GEN
     2263}
     2264
     2265#if !H_MV_HLS10_REF_PRED_LAYERS
    21612266Int TComVPS::getRefLayerId( Int layerIdInNuh, Int idx )
    21622267{
     
    21662271  return refLayerIdInNuh;
    21672272}
     2273#endif
    21682274
    21692275Int TComVPS::getScalabilityId( Int layerIdInVps, ScalabilityType scalType )
     
    22032309  for ( i = 0; i < iNumViews ; i++ )
    22042310  {
     2311#if H_3D_FIX_UNINIT
     2312    m_bCamParPresent[i] = false;
     2313#endif
    22052314    m_bCamParInSliceHeader[i] = false;
    22062315    m_aaaiCodedScale[i] = new Int*[ 2 ];
     
    23152424{
    23162425  assert( lsIdx >= 0 );
     2426#if H_MV_HLS10_ADD_LAYERSETS
     2427  assert( lsIdx <= getNumLayerSets() );
     2428#else
    23172429  assert( lsIdx <= getVpsNumLayerSetsMinus1() );
     2430#endif
    23182431  return (Int) m_layerSetLayerIdList[ lsIdx ].size();
    23192432}
     
    23392452}
    23402453
     2454#if !H_MV_HLS10_REF_PRED_LAYERS
    23412455Bool TComVPS::getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth /*= 0 */ )
    23422456{
     2457#if H_MV_HLS10_REF_PRED_LAYERS
     2458  // TBD: Remove getInDirectDependencyFlag entirely.
     2459  return getDependencyFlag( depLayeridInVps, refLayeridInVps );
     2460#else
    23432461  assert( depth < 65 );
    23442462  Bool dependentFlag = getDirectDependencyFlag( depLayeridInVps, refLayeridInVps );
     
    23522470  }
    23532471  return dependentFlag;
    2354 }
     2472#endif
     2473}
     2474#endif
    23552475
    23562476Void TComVPS::deriveLayerSetLayerIdList()
     
    23782498
    23792499  Int lsIdx = olsIdxToLsIdx( i );     
    2380  
     2500
    23812501  for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ )
    23822502  {
    2383     m_targetDecLayerIdLists[i].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] );
     2503#if H_MV_HLS10_NESSECARY_LAYER
     2504    if ( getNecessaryLayerFlag( i , j ))
     2505    {
     2506#endif
     2507      m_targetDecLayerIdLists[i].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] );
     2508#if H_MV_HLS10_NESSECARY_LAYER
     2509    }
     2510#endif
     2511
    23842512    if( getOutputLayerFlag( i, j  ))
    23852513    {
     
    24292557}
    24302558
     2559#if !H_MV_HLS10_ADD_LAYERSETS
    24312560Void TComVPS::inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder )
    24322561{
     
    24512580  }
    24522581}
    2453 
     2582#endif
    24542583Bool TComVPS::getAltOutputLayerFlagVar( Int i )
    24552584{
     
    24652594}
    24662595
     2596#if !H_MV_HLS10_MAXNUMPICS
    24672597Int TComVPS::getMaxNumPics( Int layerId )
    24682598{
     
    24832613  return maxNumPics;
    24842614}
    2485 
     2615#endif
     2616
     2617#if !H_MV_HLS10_REF_PRED_LAYERS
    24862618Void TComVPS::xSetRefLayerFlags( Int currLayerId )
    24872619{
     
    24962628  }
    24972629}
     2630
     2631#endif
     2632
     2633#if H_MV_HLS10_PTL_FIX
     2634Int TComVPS::inferProfileTierLevelIdx(Int i, Int j)
     2635{
     2636  Bool inferZero        = ( i == 0 && j == 0 &&  getVpsBaseLayerInternalFlag() );
     2637  Bool inferGreaterZero = getNecessaryLayerFlag(i,j) && ( getVpsNumProfileTierLevelMinus1() == 0 );
     2638  assert( inferZero || inferGreaterZero );
     2639
     2640  Bool ptlIdx = 0; // inference for greaterZero
     2641  if ( inferZero )
     2642  {
     2643    ptlIdx = getMaxLayersMinus1() > 0 ? 1 : 0;
     2644    if ( inferGreaterZero )
     2645    {
     2646      assert( ptlIdx == 0 ); 
     2647      // This should never happen since :
     2648      // When vps_max_layers_minus1 is greater than 0, the value of vps_num_profile_tier_level_minus1 shall be greater than or equal to 1.
     2649    }
     2650  }
     2651  return ptlIdx;
     2652}
     2653#endif
     2654
     2655#if H_MV_HLS10_ADD_LAYERSETS
     2656Void TComVPS::deriveAddLayerSetLayerIdList(Int i)
     2657{
     2658  assert( m_layerSetLayerIdList.size() ==  ( getVpsNumLayerSetsMinus1() + 1 + i ) );
     2659  std::vector<Int> layerSetLayerIdList;
     2660
     2661  for( Int treeIdx = 1; treeIdx < getNumIndependentLayers(); treeIdx++ )
     2662  {
     2663    // The value of highest_layer_idx_plus1[ i ][ j ] shall be in the range of 0 to NumLayersInTreePartition[ j ], inclusive.
     2664    assert( getHighestLayerIdxPlus1( i, treeIdx ) >= 0 && getHighestLayerIdxPlus1( i, treeIdx ) <= getNumLayersInTreePartition( treeIdx ) );
     2665
     2666    for( Int layerCnt = 0; layerCnt < getHighestLayerIdxPlus1( i, treeIdx ); layerCnt++ )
     2667    {
     2668      layerSetLayerIdList.push_back( getTreePartitionLayerIdList( treeIdx, layerCnt ) );
     2669    }
     2670  }
     2671  m_layerSetLayerIdList.push_back( layerSetLayerIdList );
     2672
     2673  //It is a requirement of bitstream conformance that
     2674  //NumLayersInIdList[ vps_num_layer_sets_minus1 + 1 + i ] shall be greater than 0.
     2675  assert( getNumLayersInIdList( getVpsNumLayerSetsMinus1() + 1 + i ) > 0 );
     2676}
     2677
     2678#endif
     2679
     2680#if H_MV_HLS10_NESSECARY_LAYER
     2681Void TComVPS::deriveNecessaryLayerFlags(Int olsIdx)
     2682{
     2683  AOF( olsIdx >= 0 && olsIdx < getNumOutputLayerSets() );
     2684  Int lsIdx = olsIdxToLsIdx( olsIdx );
     2685  for( Int lsLayerIdx = 0; lsLayerIdx < getNumLayersInIdList( lsIdx) ; lsLayerIdx++ )
     2686  {
     2687    m_necessaryLayerFlag[ olsIdx ][ lsLayerIdx ] = 0;
     2688  }
     2689  for( Int lsLayerIdx = 0; lsLayerIdx < getNumLayersInIdList( lsIdx ); lsLayerIdx++ )
     2690  {
     2691    if( getOutputLayerFlag( olsIdx, lsLayerIdx  ))
     2692    {
     2693      m_necessaryLayerFlag[ olsIdx ][ lsLayerIdx ] = 1;
     2694      Int currLayerId = getLayerSetLayerIdList( lsIdx, lsLayerIdx );
     2695      for( Int rLsLayerIdx = 0; rLsLayerIdx < lsLayerIdx; rLsLayerIdx++ )
     2696      {
     2697        Int refLayerId = getLayerSetLayerIdList( lsIdx, rLsLayerIdx );
     2698        if( getDependencyFlag( getLayerIdInVps( currLayerId ), getLayerIdInVps( refLayerId ) ) )
     2699        {
     2700          m_necessaryLayerFlag[ olsIdx ][ rLsLayerIdx ] = 1;
     2701        }
     2702      }
     2703    }
     2704  }
     2705  m_numNecessaryLayers[ olsIdx ] = 0;
     2706  for( Int lsLayerIdx = 0; lsLayerIdx < getNumLayersInIdList( lsIdx ); lsLayerIdx++ )
     2707  {
     2708    m_numNecessaryLayers[ olsIdx ]  +=  m_necessaryLayerFlag[ olsIdx ][ lsLayerIdx ];
     2709  }
     2710}
     2711#endif
     2712
     2713#if H_MV_HLS10_ADD_LAYERSETS
     2714Void TComVPS::printPTL()
     2715{
     2716  std::vector<Int> idx;
     2717  std::vector<Int> num;
     2718  std::vector< std::vector<Int> > ptlInfo;
     2719
     2720  std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "PTLI" << std::endl;
     2721
     2722  for ( Int i = 0; i <= getVpsNumProfileTierLevelMinus1(); i++ )
     2723  {
     2724    std::vector<Int> curPtlInfo;
     2725    ProfileTierLevel* ptl = getPTL( i )->getGeneralPTL();
     2726    curPtlInfo.push_back( (Int) ptl->getProfileIdc()  );
     2727    curPtlInfo.push_back( (Int) ptl->getTierFlag()    );
     2728    curPtlInfo.push_back( (Int) ptl->getLevelIdc()    );
     2729    curPtlInfo.push_back( (Int) ptl->getInbldFlag()   );
     2730
     2731    idx.push_back ( i );
     2732    num.push_back ( 4 );
     2733    ptlInfo.push_back( curPtlInfo );
     2734  }
     2735
     2736  xPrintArray( "VpsProfileTierLevel", getVpsNumProfileTierLevelMinus1() + 1, idx, num, ptlInfo, false  );
     2737
     2738  num.clear();
     2739  idx.clear();
     2740  for (Int i = 0; i < getNumOutputLayerSets(); i++)
     2741  {
     2742    num.push_back ( getNumLayersInIdList( olsIdxToLsIdx( i ))  );
     2743    idx.push_back( i );
     2744  }
     2745
     2746  xPrintArray( "profile_tier_level_idx", getNumOutputLayerSets(), idx, num, m_profileTierLevelIdx, true );
     2747  std::cout << std::endl;
     2748}
     2749
     2750Void TComVPS::printLayerDependencies()
     2751{
     2752  vector<Int> fullArray;
     2753  vector<Int> range;
     2754
     2755#if H_3D
     2756  vector<Int> depthId;
     2757#endif
     2758
     2759#if H_MV_HLS10_AUX
     2760  vector<Int> viewOrderIndex;
     2761  vector<Int> auxId;
     2762  vector<Int> dependencyId;
     2763  vector<Int> viewId;
     2764#endif
     2765  for (Int i = 0; i <= getMaxLayersMinus1(); i++ )
     2766  {
     2767    fullArray.push_back( getMaxLayersMinus1() + 1 );
     2768    range.push_back( i );
     2769#if H_MV_HLS10_AUX     
     2770    viewOrderIndex.push_back( getViewIndex   ( i ) );
     2771    dependencyId  .push_back( getDependencyId( i ) );
     2772    auxId         .push_back( getAuxId       ( i ) );     
     2773    viewId        .push_back( getViewId      ( getLayerIdInNuh( i ) ) );
     2774#if H_3D 
     2775    depthId.push_back( getDepthId( i ) );
     2776#endif
     2777#endif
     2778  }
     2779  std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Layer Dependencies" << std::endl;
     2780  xPrintArray( "direct_dependency_flag", getMaxLayersMinus1()+1, range, fullArray, m_directDependencyFlag, false );
     2781  xPrintArray( "DependencyFlag", getMaxLayersMinus1()+1, range, fullArray, m_dependencyFlag, false );
     2782  xPrintArray( "layer_id_in_nuh", getMaxLayersMinus1()+1, m_layerIdInNuh, true  );     
     2783  xPrintArray( "IdPredictedLayer", getMaxLayersMinus1() + 1, m_layerIdInNuh, m_numPredictedLayers, m_idPredictedLayer, true );
     2784  xPrintArray( "IdRefLayer"      , getMaxLayersMinus1() + 1, m_layerIdInNuh, m_numRefLayers, m_idRefLayer, true );
     2785  xPrintArray( "IdDirectRefLayer", getMaxLayersMinus1() + 1, m_layerIdInNuh, m_numDirectRefLayers, m_idDirectRefLayer, true );
     2786  std::cout << std::endl;
     2787}
     2788
     2789#if H_MV_HLS10_AUX
     2790Void TComVPS::printScalabilityId()
     2791{
     2792  vector<Int> layerIdxInVps;
     2793
     2794#if H_3D
     2795  vector<Int> depthId;
     2796#endif
     2797
     2798  vector<Int> viewOrderIndex;
     2799  vector<Int> auxId;
     2800  vector<Int> dependencyId;
     2801  vector<Int> viewId;
     2802
     2803  for (Int i = 0; i <= getMaxLayersMinus1(); i++ )
     2804  {
     2805    Int layerIdInNuh = getLayerIdInNuh( i );
     2806    layerIdxInVps  .push_back( i );
     2807    viewOrderIndex.push_back( getViewIndex   ( layerIdInNuh ) );
     2808    dependencyId  .push_back( getDependencyId( layerIdInNuh ) );
     2809    auxId         .push_back( getAuxId       ( layerIdInNuh ) );     
     2810    viewId        .push_back( getViewId      ( layerIdInNuh ) );
     2811#if H_3D 
     2812    depthId       .push_back( getDepthId     ( layerIdInNuh ) );
     2813#endif
     2814  }
     2815
     2816  std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Scalability Ids" << std::endl;
     2817  xPrintArray( "layerIdxInVps"  , getMaxLayersMinus1()+1, layerIdxInVps,          false );
     2818  xPrintArray( "layer_id_in_nuh", getMaxLayersMinus1()+1, m_layerIdInNuh, false );     
     2819
     2820  xPrintArray( "ViewOrderIndex", getMaxLayersMinus1()+1, viewOrderIndex, false );     
     2821  xPrintArray( "DependencyId"  , getMaxLayersMinus1()+1, dependencyId  , false );     
     2822  xPrintArray( "AuxId"         , getMaxLayersMinus1()+1, auxId         , false );     
     2823  xPrintArray( "ViewId"        , getMaxLayersMinus1()+1, viewId        , false );     
     2824
     2825  std::cout << std::endl;
     2826}
     2827#endif
     2828
     2829Void TComVPS::printLayerSets()
     2830{
     2831  vector<Int> fullArray;
     2832  vector<Int> numLayersInIdList;
     2833  vector<Int> rangeLayerSets;
     2834
     2835
     2836  for (Int i = 0; i < getNumLayerSets(); i++ )
     2837  {
     2838    numLayersInIdList.push_back( getNumLayersInIdList( i ) );       
     2839    rangeLayerSets.push_back( i );
     2840  }
     2841
     2842  vector<Int> rangeOutputLayerSets;
     2843  vector<Int> numOutputLayersInOutputLayerSet;
     2844  vector<Int> numDecLayer;
     2845  vector<Int> numLayersInLayerSetForOutputLayerSet;
     2846  vector<Int> vOlsIdxToLsIdx;
     2847  for (Int i = 0; i < getNumOutputLayerSets(); i++ )
     2848  {
     2849    vOlsIdxToLsIdx.push_back( olsIdxToLsIdx(i));
     2850    numOutputLayersInOutputLayerSet.push_back( getNumOutputLayersInOutputLayerSet( i ) );       
     2851    numDecLayer.push_back( (Int) m_targetDecLayerIdLists[ i ].size() );
     2852    rangeOutputLayerSets.push_back( i );
     2853    numLayersInLayerSetForOutputLayerSet.push_back( getNumLayersInIdList( olsIdxToLsIdx( i ) ) );
     2854  }
     2855
     2856  vector<Int> rangeIndependentLayers;
     2857  for(Int i = 0; i < getNumIndependentLayers(); i++ )
     2858  {
     2859    rangeIndependentLayers.push_back( i );   
     2860  }
     2861
     2862  vector<Int> rangeAddLayerSets;
     2863  vector<Int> numHighestLayerIdxPlus1;
     2864  for(Int i = 0; i < getNumAddLayerSets(); i++ )
     2865  {
     2866    rangeAddLayerSets.push_back( i );   
     2867    numHighestLayerIdxPlus1.push_back( getNumIndependentLayers() );
     2868  }
     2869
     2870  std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Layer Sets" << std::endl;     
     2871  xPrintArray( "TreePartitionLayerIdList", getNumIndependentLayers(), rangeIndependentLayers, m_numLayersInTreePartition, m_treePartitionLayerIdList, true );
     2872  xPrintArray( "highest_layer_idx_plus1", getNumAddLayerSets(), rangeAddLayerSets, numHighestLayerIdxPlus1, m_highestLayerIdxPlus1, true );
     2873  xPrintArray( "LayerSetLayerIdList" , (Int) getNumLayerSets()      , rangeLayerSets      , numLayersInIdList, m_layerSetLayerIdList, true );
     2874  xPrintArray( "OlsIdxToLsIdx", (Int) vOlsIdxToLsIdx.size(), vOlsIdxToLsIdx, true );
     2875  xPrintArray( "OutputLayerFlag"     , getNumOutputLayerSets(), rangeOutputLayerSets, numLayersInLayerSetForOutputLayerSet, m_outputLayerFlag, true );
     2876  xPrintArray( "TargetOptLayerIdList", getNumOutputLayerSets(), rangeOutputLayerSets, numOutputLayersInOutputLayerSet, m_targetOptLayerIdLists, true );
     2877  xPrintArray( "NecessaryLayerFlag"  , getNumOutputLayerSets(), rangeOutputLayerSets, numLayersInLayerSetForOutputLayerSet, m_necessaryLayerFlag   , true );
     2878  xPrintArray( "TargetDecLayerIdList", getNumOutputLayerSets(), rangeOutputLayerSets, numDecLayer,                     m_targetDecLayerIdLists, true );
     2879  std::cout << endl;
     2880}
     2881
     2882#endif
    24982883
    24992884#endif // H_MV
     
    25792964#endif
    25802965
     2966#if !H_MV_HLS10_PPS
    25812967  m_numScaledRefLayerOffsets = 0;
    25822968
     
    25902976    m_scaledRefLayerLeftOffset     [i] = 0;
    25912977    m_scaledRefLayerTopOffset      [i] = 0;
    2592     m_scaledRefLayerRightOffset    [i] = 0;
     2978    m_scaledRefLayerRiFghtOffset    [i] = 0;
    25932979    m_scaledRefLayerBottomOffset   [i] = 0;
    25942980  }
     2981#endif
    25952982#endif
    25962983}
     
    29673354Void TComSPS::inferRepFormat( TComVPS* vps, Int layerIdCurr )
    29683355{
     3356#if H_MV_HLS10_MULTILAYERSPS
     3357  if ( getMultiLayerExtSpsFlag() )
     3358#else
    29693359  if ( layerIdCurr > 0 )
     3360#endif
    29703361  {
    29713362    Int            repFormatIdx = getUpdateRepFormatFlag() ?  getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ;
    29723363    TComRepFormat* repFormat    = vps->getRepFormat( repFormatIdx );
    2973       setChromaFormatIdc( repFormat->getChromaFormatVpsIdc() );         
    2974       //// ToDo: add when supported:
    2975       // setSeperateColourPlaneFlag( repFormat->getSeparateColourPlaneVpsFlag() ) ;
    2976 
    2977       setPicWidthInLumaSamples ( repFormat->getPicWidthVpsInLumaSamples()  );
    2978       setPicHeightInLumaSamples( repFormat->getPicHeightVpsInLumaSamples() );
    2979 
    2980       setBitDepthY             ( repFormat->getBitDepthVpsLumaMinus8()   + 8 );
    2981       setQpBDOffsetY           ( (Int) (6*( getBitDepthY() - 8 )) );
    2982 
    2983       setBitDepthC             ( repFormat->getBitDepthVpsChromaMinus8() + 8 );
    2984       setQpBDOffsetC           ( (Int) (6* ( getBitDepthC() -8 ) ) );
    2985     if ( getLayerId() > 0 && getUpdateRepFormatFlag() )
     3364    setChromaFormatIdc( repFormat->getChromaFormatVpsIdc() );         
     3365    //// ToDo: add when supported:
     3366    // setSeperateColourPlaneFlag( repFormat->getSeparateColourPlaneVpsFlag() ) ;
     3367
     3368    setPicWidthInLumaSamples ( repFormat->getPicWidthVpsInLumaSamples()  );
     3369    setPicHeightInLumaSamples( repFormat->getPicHeightVpsInLumaSamples() );
     3370
     3371    setBitDepthY             ( repFormat->getBitDepthVpsLumaMinus8()   + 8 );
     3372    setQpBDOffsetY           ( (Int) (6*( getBitDepthY() - 8 )) );
     3373
     3374    setBitDepthC             ( repFormat->getBitDepthVpsChromaMinus8() + 8 );
     3375    setQpBDOffsetC           ( (Int) (6* ( getBitDepthC() -8 ) ) );
     3376 #if H_MV_HLS10_GEN_VSP_CONF_WIN
     3377    Window &spsConf    = getConformanceWindow();   
     3378
     3379    // Scaled later
     3380    spsConf.setScaledFlag( false );
     3381    spsConf.setWindowLeftOffset  ( repFormat->getConfWinVpsLeftOffset()    );
     3382    spsConf.setWindowRightOffset ( repFormat->getConfWinVpsRightOffset()   );
     3383    spsConf.setWindowTopOffset   ( repFormat->getConfWinVpsTopOffset()     );
     3384    spsConf.setWindowBottomOffset( repFormat->getConfWinVpsBottomOffset()  );   
     3385#endif
     3386
     3387#if H_MV_HLS10_MULTILAYERSPS
     3388   if ( getMultiLayerExtSpsFlag() && getUpdateRepFormatFlag() )
     3389#else
     3390   if ( getLayerId() > 0 && getUpdateRepFormatFlag() )
     3391#endif
    29863392    {
    29873393      assert( getChromaFormatIdc()      <=  repFormat->getChromaFormatVpsIdc()         );
     
    30173423  const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx ));
    30183424
     3425#if H_MV_HLS10_MULTILAYERSPS
     3426  if ( getMultiLayerExtSpsFlag() )
     3427#else
    30193428  if (getLayerId() > 0 )
     3429#endif
    30203430  {
    30213431    Int layerIdx = 0;         
     
    30353445      Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ;
    30363446
    3037       if ( encoder )
     3447#if H_MV_HLS10_MULTILAYERSPS
     3448      // This preliminary fix needs to be checked.
     3449      Int maxNumReorderPics       = vps->getDpbSize()->getMaxVpsNumReorderPics( targetOptLayerSetIdx, i );
     3450      Int maxLatencyIncreasePlus1 = vps->getDpbSize()->getMaxVpsLatencyIncreasePlus1( targetOptLayerSetIdx, i );
     3451#endif
     3452      if ( encoder )     
    30383453      {
    30393454        assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 );
     3455#if H_MV_HLS10_MULTILAYERSPS
     3456        // This preliminary fix needs to be checked.
     3457        assert( getNumReorderPics( i )     == maxNumReorderPics       );
     3458        assert( getMaxLatencyIncrease( i ) == maxLatencyIncreasePlus1 );
     3459#endif   
     3460
    30403461      }
    30413462      else
    30423463      {
     3464#if !H_MV_HLS10_MULTILAYERSPS
    30433465        setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 );
    3044       }
    3045     }
     3466#else
     3467        // This preliminary fix needs to be checked.
     3468        setMaxDecPicBuffering( maxDecPicBufferingMinus1 + 1 , i);
     3469        setNumReorderPics    ( maxNumReorderPics, i );
     3470        setMaxLatencyIncrease( maxLatencyIncreasePlus1 - 1 , i);
     3471#endif
     3472      }
     3473    }   
    30463474  }
    30473475}
     
    30493477Void TComSPS::checkRpsMaxNumPics( TComVPS* vps, Int currLayerId )
    30503478{
     3479#if !H_MV_HLS10_MAXNUMPICS
    30513480  // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead
    30523481  // of nuh_layer_id of slice (currLayerId), this seems to be a bug.
    3053 
     3482#endif
    30543483  for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ )
    30553484  {
     
    30573486    if ( !rps->getInterRPSPrediction() )
    30583487    {
     3488#if H_MV_HLS10_MAXNUMPICS
     3489      rps->checkMaxNumPics( vps->getVpsExtensionFlag(), MAX_INT, getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 );   // INT_MAX to be replaced by DpbSize
     3490#else
    30593491      rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ),
    30603492        getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 
    3061     }
    3062   }
    3063 }
    3064 
     3493#endif
     3494    }
     3495  }
     3496}
     3497
     3498#if H_MV_HLS10_MULTILAYERSPS
     3499Void TComSPS::inferSpsMaxSubLayersMinus1(Bool atPsActivation, TComVPS* vps)
     3500{
     3501  assert( getLayerId() != 0 );
     3502  if ( !atPsActivation   )
     3503  {
     3504    assert( vps == NULL );
     3505    if (getSpsExtOrMaxSubLayersMinus1() != 7)
     3506    {
     3507      setSpsMaxSubLayersMinus1( getSpsExtOrMaxSubLayersMinus1() );
     3508    }
     3509  }
     3510  else
     3511  {
     3512    assert( vps != NULL );
     3513    if (getSpsExtOrMaxSubLayersMinus1() == 7)
     3514    {
     3515      setSpsMaxSubLayersMinus1( vps->getMaxSubLayersMinus1() );
     3516    }
     3517  }
     3518}
     3519#endif
    30653520#endif
    30663521
     
    34253880{
    34263881  TComVPS* vps = getVPS();
     3882#if H_MV_HLS10_REF_PRED_LAYERS
     3883  Int refLayerIdx = vps->getLayerIdInVps( vps->getIdDirectRefLayer( getLayerId(), i ) );
     3884#else
    34273885  Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) );
     3886#endif
    34283887
    34293888  Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >=  getTLayer() )  && ( getTLayer() == 0  ) &&
     
    34963955Int TComSlice::getRefPicLayerId( Int i )
    34973956{
     3957#if H_MV_HLS10_REF_PRED_LAYERS
     3958  return getVPS()->getIdDirectRefLayer( getLayerId(), getInterLayerPredLayerIdc( i ) );
     3959#else
    34983960  return getVPS()->getRefLayerId( getLayerId(), getInterLayerPredLayerIdc( i ) );
     3961#endif
    34993962}
    35003963
     
    36024065      m_bApplyIC = true;
    36034066      Int refLayer = curLayer-1;
    3604       if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) )
     4067#if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX
     4068      Int ICEnableCandidate = getICEnableCandidate(refLayer);
     4069      Int ICEnableNum = getICEnableNum(refLayer);
     4070      if( (refLayer>=0) && (ICEnableCandidate>0) )
    36054071      {   
    3606         Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);
     4072        Double ratio=Double(ICEnableNum/Double(ICEnableCandidate));
    36074073
    36084074        if( ratio > IC_LOW_LATENCY_ENCODING_THRESHOLD)
    3609 {
     4075        {
    36104076          m_bApplyIC=true;
    36114077        }
     
    36154081        }
    36164082      }
     4083      setICEnableCandidate(curLayer, 0);
     4084      setICEnableNum(curLayer, 0);
     4085#else
     4086      if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) )
     4087      {   
     4088        Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);
     4089
     4090        if( ratio > IC_LOW_LATENCY_ENCODING_THRESHOLD)
     4091{
     4092          m_bApplyIC=true;
     4093        }
     4094        else
     4095        {
     4096          m_bApplyIC=false;
     4097        }
     4098      }
    36174099      g_aICEnableNUM[curLayer]=0;
    36184100      g_aICEnableCANDIDATE[curLayer]=0;
    36194101      g_lastlayer=getDepth();
     4102#endif
    36204103    }
    36214104  }
     
    37274210
    37284211#if H_3D_DDD
     4212#if LGE_FCO_I0116
     4213  if( getIsDepth() && getViewIndex() > 0 && getVPS()->getMPIFlag(layerIdInVPS))
     4214#else
    37294215  if( getIsDepth() && getViewIndex() > 0 )
     4216#endif
    37304217  {
    37314218      TComSlice *pcTextSlice = getTexturePic()->getSlice( 0 );
     
    42094696, m_nonPackedConstraintFlag(false)
    42104697, m_frameOnlyConstraintFlag(false)
     4698#if H_MV_HLS10_PTL
     4699  , m_max12bitConstraintFlag      ( false )
     4700  , m_max10bitConstraintFlag      ( false )
     4701  , m_max8bitConstraintFlag       ( false )
     4702  , m_max422chromaConstraintFlag  ( false )
     4703  , m_max420chromaConstraintFlag  ( false )
     4704  , m_maxMonochromeConstraintFlag ( false )
     4705  , m_intraConstraintFlag         ( false )
     4706  , m_onePictureOnlyConstraintFlag( false )
     4707  , m_lowerBitRateConstraintFlag  ( false )
     4708  , m_inbldFlag                   ( false )
     4709#endif
    42114710{
    42124711  ::memset(m_profileCompatibilityFlag, 0, sizeof(m_profileCompatibilityFlag));
    42134712}
     4713
     4714#if H_MV_HLS10_PTL_INFER_FIX
     4715Bool ProfileTierLevel::getV2ConstraintsPresentFlag()
     4716{
     4717  return (
     4718    getProfileIdc( ) ==  4 || getProfileCompatibilityFlag( 4 ) || getProfileIdc( ) ==  5 || getProfileCompatibilityFlag( 5 )  ||
     4719    getProfileIdc( ) ==  6 || getProfileCompatibilityFlag( 6 ) || getProfileIdc( ) ==  7 || getProfileCompatibilityFlag( 7 )
     4720    );
     4721}
     4722
     4723Bool ProfileTierLevel::getInbldPresentFlag()
     4724{
     4725  return (
     4726    ( getProfileIdc() >= 1 && getProfileIdc() <= 5 )  || getProfileCompatibilityFlag( 1 ) || getProfileCompatibilityFlag( 2 ) ||
     4727    getProfileCompatibilityFlag( 3 ) || getProfileCompatibilityFlag( 4 )  ||   getProfileCompatibilityFlag( 5 )
     4728    );
     4729}
     4730
     4731Void ProfileTierLevel::copyV2ConstraintFlags(ProfileTierLevel* ptlRef)
     4732{
     4733  setMax12bitConstraintFlag         ( ptlRef->getMax12bitConstraintFlag       ( ) );
     4734  setMax10bitConstraintFlag         ( ptlRef->getMax10bitConstraintFlag       ( ) );
     4735  setMax8bitConstraintFlag          ( ptlRef->getMax8bitConstraintFlag        ( ) );
     4736  setMax422chromaConstraintFlag     ( ptlRef->getMax422chromaConstraintFlag   ( ) );
     4737  setMax420chromaConstraintFlag     ( ptlRef->getMax420chromaConstraintFlag   ( ) );
     4738  setMaxMonochromeConstraintFlag    ( ptlRef->getMaxMonochromeConstraintFlag  ( ) );
     4739  setIntraConstraintFlag            ( ptlRef->getIntraConstraintFlag          ( ) );
     4740  setOnePictureOnlyConstraintFlag   ( ptlRef->getOnePictureOnlyConstraintFlag ( ) );
     4741  setLowerBitRateConstraintFlag     ( ptlRef->getLowerBitRateConstraintFlag   ( ) );
     4742}
     4743
     4744Void ProfileTierLevel::copyProfile(ProfileTierLevel* ptlRef)
     4745{
     4746  setProfileSpace            ( ptlRef->getProfileSpace              ( ) );
     4747  setTierFlag                ( ptlRef->getTierFlag                  ( ) );
     4748  setProfileIdc              ( ptlRef->getProfileIdc                ( ) );
     4749  for (Int j = 0; j < 32; j++)
     4750  {     
     4751    setProfileCompatibilityFlag(j, ptlRef->getProfileCompatibilityFlag  ( j ) );           
     4752  }
     4753  setProgressiveSourceFlag   ( ptlRef->getProgressiveSourceFlag     ( ) );
     4754  setInterlacedSourceFlag    ( ptlRef->getInterlacedSourceFlag      ( ) );
     4755  setNonPackedConstraintFlag ( ptlRef->getNonPackedConstraintFlag   ( ) );
     4756  setFrameOnlyConstraintFlag ( ptlRef->getFrameOnlyConstraintFlag   ( ) );
     4757  copyV2ConstraintFlags      ( ptlRef );
     4758}
     4759
     4760#endif
    42144761
    42154762TComPTL::TComPTL()
     
    42204767
    42214768#if H_MV
     4769#if !H_MV_HLS10_PTL_INFER_FIX
    42224770Void TComPTL::copyLevelFrom( TComPTL* source )
    42234771{
     
    42294777  }
    42304778}
     4779#else
     4780Void TComPTL::inferGeneralValues(Bool profilePresentFlag, Int k, TComPTL* refPTL)
     4781{
     4782  ProfileTierLevel* refProfileTierLevel = NULL;
     4783  if ( k > 0 )
     4784  {   
     4785    assert( refPTL != NULL);
     4786    refProfileTierLevel = refPTL->getGeneralPTL();
     4787  }
     4788
     4789  ProfileTierLevel* curProfileTierLevel = getGeneralPTL( );
     4790
     4791  if( !profilePresentFlag )
     4792  {
     4793    assert( k > 0 );
     4794    assert( refProfileTierLevel != NULL );
     4795    curProfileTierLevel->copyProfile( refProfileTierLevel);
     4796  }
     4797  else
     4798  {
     4799    if ( !curProfileTierLevel->getV2ConstraintsPresentFlag() )
     4800    {
     4801      curProfileTierLevel->setMax12bitConstraintFlag         ( false );
     4802      curProfileTierLevel->setMax10bitConstraintFlag         ( false );
     4803      curProfileTierLevel->setMax8bitConstraintFlag          ( false );
     4804      curProfileTierLevel->setMax422chromaConstraintFlag     ( false );
     4805      curProfileTierLevel->setMax420chromaConstraintFlag     ( false );
     4806      curProfileTierLevel->setMaxMonochromeConstraintFlag    ( false );
     4807      curProfileTierLevel->setIntraConstraintFlag            ( false );
     4808      curProfileTierLevel->setOnePictureOnlyConstraintFlag   ( false );
     4809      curProfileTierLevel->setLowerBitRateConstraintFlag     ( false );   
     4810    }
     4811
     4812    if ( !curProfileTierLevel->getInbldPresentFlag() )
     4813    {
     4814      curProfileTierLevel->setInbldFlag( false );
     4815    }     
     4816  }
     4817}
     4818
     4819Void TComPTL::inferSubLayerValues(Int maxNumSubLayersMinus1, Int k, TComPTL* refPTL)
     4820{
     4821  assert( k == 0 || refPTL != NULL );
     4822
     4823  for (Int i = maxNumSubLayersMinus1; i >= 0; i--)
     4824  {
     4825    ProfileTierLevel* refProfileTierLevel;
     4826    if ( k != 0 )
     4827    {
     4828      refProfileTierLevel = refPTL->getSubLayerPTL( i );
     4829    }
     4830    else
     4831    {
     4832      if ( i == maxNumSubLayersMinus1)     
     4833      {
     4834        refProfileTierLevel = getGeneralPTL();
     4835      }
     4836      else
     4837      {
     4838        refProfileTierLevel = getSubLayerPTL( i + 1 );
     4839      }
     4840    }   
     4841
     4842    ProfileTierLevel* curProfileTierLevel = getSubLayerPTL( i );
     4843    if( !getSubLayerLevelPresentFlag( i ) )
     4844    {
     4845      curProfileTierLevel->setLevelIdc( refProfileTierLevel->getLevelIdc() );
     4846    }
     4847
     4848    if( !getSubLayerProfilePresentFlag( i ) )
     4849    {
     4850      curProfileTierLevel->copyProfile( refProfileTierLevel);
     4851    }
     4852    else
     4853    {
     4854      if ( !curProfileTierLevel->getV2ConstraintsPresentFlag() )
     4855      {
     4856        curProfileTierLevel->copyV2ConstraintFlags( refProfileTierLevel );
     4857      }
     4858
     4859      if ( !curProfileTierLevel->getInbldPresentFlag() )
     4860      {
     4861        curProfileTierLevel->setInbldFlag( refProfileTierLevel->getInbldFlag() );
     4862      }     
     4863    }     
     4864  }
     4865}
     4866
     4867#endif
    42314868#endif
    42324869//! \}
     
    42714908
    42724909  m_vpsVuiBspHrdPresentFlag = false;
     4910#if H_MV_HLS10_VPS_VUI_BSP
     4911  m_vpsVuiBspHrdParameters  = NULL;
     4912#else
    42734913  m_vpsVuiBspHrdParameters  = new TComVpsVuiBspHrdParameters();
     4914#endif
    42744915}
    42754916
     
    43144955    assert( getBitDepthVpsLumaMinus8          () == prevRepFormat->getBitDepthVpsLumaMinus8          () );
    43154956    assert( getBitDepthVpsChromaMinus8        () == prevRepFormat->getBitDepthVpsChromaMinus8        () );
    4316 }
    4317 }
    4318 
     4957  }
     4958}
     4959
     4960#if !H_MV_HLS10_VPS_VUI_BSP
    43194961Void TComVpsVuiBspHrdParameters::checkLayerInBspFlag( TComVPS* vps, Int h )
    43204962{
     
    43544996  // When num_bitstream_partitions[ h ] is equal to 1 for any value of h in the range 1 to vps_num_layer_set_minus1, inclusive,
    43554997  // the value of layer_in_bsp_flag[ h ][ 0 ][ j ] should be equal to 0 for at least one value of j in the range 0 to
    4356   // NumLayersInIdList[ h ] 1, inclusive.
     4998  // NumLayersInIdList[ h ] ? 1, inclusive.
    43574999
    43585000
     
    43695011 
    43705012  // For any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ]
    4371   // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] 1, inclusive.
     5013  // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] ? 1, inclusive.
    43725014
    43735015  for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ )
     
    43955037  //  assert(  getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) );
    43965038}
     5039#endif
     5040
     5041#if H_MV_HLS10_VPS_VUI_BSP
     5042
     5043TComVpsVuiBspHrdParameters::~TComVpsVuiBspHrdParameters()
     5044{
     5045  delete[] m_cprmsAddPresentFlag;
     5046  delete[] m_numSubLayerHrdMinus1;
     5047  delete[] m_hrdParameters;
     5048
     5049  for (Int h = 0; h < m_numOls; h++)
     5050  {
     5051    if ( h > 0 )
     5052    {   
     5053      for (Int i = 0; i < getNumSignalledPartitioningSchemes(h)+1; i++)
     5054      {
     5055        for (Int t = 0; t < m_vps->getMaxSubLayersInLayerSetMinus1( m_vps->olsIdxToLsIdx(h) ) + 1; t++)
     5056        {       
     5057          for ( Int j = 0; j <= getNumBspSchedulesMinus1(h,i,j);j++ )
     5058          {
     5059            delete[] m_bspHrdIdx  [h][i][t][j];
     5060            delete[] m_bspSchedIdx[h][i][t][j];
     5061          }
     5062        }
     5063        delete[] m_numBspSchedulesMinus1[h][i];
     5064      }
     5065    }
     5066
     5067    for (Int j = 0; j <= getNumSignalledPartitioningSchemes(h ) + 1; j++ )
     5068    {
     5069      for (Int k = 0; k <= getNumPartitionsInSchemeMinus1(h,j); k++ )
     5070      {
     5071        delete[] m_layerIncludedInPartitionFlag[h][j][k];
     5072      }       
     5073    }
     5074    delete[] m_numPartitionsInSchemeMinus1[h];       
     5075  }
     5076  delete[] m_numSignalledPartitioningSchemes;
     5077}
     5078
     5079
     5080Int TComVpsVuiBspHrdParameters::getBspHrdIdxLen(TComVPS* vps)
     5081{
     5082  return gCeilLog2( vps->getNumHrdParameters() + getVpsNumAddHrdParams() );
     5083}
     5084
     5085Void TComVpsVuiBspHrdParameters::createAfterVpsNumAddHrdParams( TComVPS* vps )
     5086{
     5087  assert( vps == NULL );
     5088  m_vps = vps;
     5089  m_offsetHrdParamIdx = vps->getNumHrdParameters();
     5090  m_numHrdParam       = vps->getNumHrdParameters() + getVpsNumAddHrdParams() - m_offsetHrdParamIdx;
     5091  m_numOls            = vps->getNumOutputLayerSets();
     5092
     5093  m_cprmsAddPresentFlag   = new Bool    [ m_numHrdParam ];
     5094  m_numSubLayerHrdMinus1  = new Int     [ m_numHrdParam ];
     5095  m_hrdParameters         = new TComHRD [ m_numHrdParam ];
     5096
     5097  m_numSignalledPartitioningSchemes = new Int    [ m_numOls ];
     5098  m_numPartitionsInSchemeMinus1     = new Int*   [ m_numOls ];
     5099  m_numBspSchedulesMinus1           = new Int**  [ m_numOls ];
     5100  m_bspHrdIdx                       = new Int****[ m_numOls ];
     5101  m_bspSchedIdx                     = new Int****[ m_numOls ];
     5102}
     5103
     5104Void TComVpsVuiBspHrdParameters::createAfterNumSignalledPartitioningSchemes( Int h )
     5105{
     5106  m_numPartitionsInSchemeMinus1 [h]    = new Int    [ getNumSignalledPartitioningSchemes(h) ];
     5107  m_layerIncludedInPartitionFlag[h]    = new Bool** [ getNumSignalledPartitioningSchemes(h) ];   
     5108
     5109  m_numBspSchedulesMinus1[h]           = new Int*   [ getNumSignalledPartitioningSchemes(h) + 1 ];
     5110  for (Int i = 0; i < getNumSignalledPartitioningSchemes(h) + 1; i++)
     5111  {
     5112    Int tMax = m_vps->getMaxSubLayersInLayerSetMinus1( m_vps->olsIdxToLsIdx(h) ) + 1;
     5113    m_numBspSchedulesMinus1[h][i] = new Int  [ tMax ];
     5114    m_bspHrdIdx            [h][i] = new Int**[ tMax ];
     5115    m_bspSchedIdx          [h][i] = new Int**[ tMax ];
     5116  }
     5117}
     5118
     5119Void TComVpsVuiBspHrdParameters::createAfterNumPartitionsInSchemeMinus1( Int h, Int j )
     5120{
     5121  m_layerIncludedInPartitionFlag[h][j] = new Bool*[ getNumPartitionsInSchemeMinus1(h,j)];
     5122  for( Int k = 0; k < getNumPartitionsInSchemeMinus1(h,j); k++ )
     5123  {
     5124    m_layerIncludedInPartitionFlag[h][j][k] = new Bool[ m_vps->getNumLayersInIdList( m_vps->olsIdxToLsIdx(h))];
     5125  }
     5126}
     5127
     5128Void TComVpsVuiBspHrdParameters::createAfterNumBspSchedulesMinus1( Int h, Int i, Int t )
     5129{
     5130  m_bspSchedIdx[h][i][t] = new Int* [ getNumBspSchedulesMinus1( h, i, t ) + 1 ];
     5131  m_bspHrdIdx  [h][i][t] = new Int* [ getNumBspSchedulesMinus1( h, i, t ) + 1 ];
     5132  for( Int j = 0; j < getNumBspSchedulesMinus1( h, i, t ) + 1; j++ )
     5133  {
     5134    m_bspSchedIdx[h][i][t][j] = new Int[ getNumPartitionsInSchemeMinus1( h, i ) ];
     5135    m_bspHrdIdx  [h][i][t][j] = new Int[ getNumPartitionsInSchemeMinus1( h, i ) ];
     5136  }
     5137}
     5138
     5139#endif
    43975140
    43985141Void TComVUI::inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr )
     
    44305173      for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ )
    44315174      {
     5175#if H_MV_HLS10_ADD_LAYERSETS
     5176        m_maxVpsDecPicBufferingMinus1[i][k][j] = MIN_INT;
     5177#else
    44325178        m_maxVpsDecPicBufferingMinus1[i][k][j] = 0;
     5179#endif
    44335180      }
    44345181    }
  • trunk/source/Lib/TLibCommon/TComSlice.h

    r1039 r1066  
    1 /* The copyright in this software is being made available under the BSD
     1/* The copyright in this software is being made available under the BSD
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
     
    4545#include "TComRom.h"
    4646#include "TComList.h"
    47 
     47#if H_MV_HLS10_GEN_FIX
     48#if H_MV
     49#include <ios>
     50#include <iostream>
     51#include <iomanip>
     52#endif
     53#endif
    4854//! \ingroup TLibCommon
    4955//! \{
     
    201207  Bool m_frameOnlyConstraintFlag;
    202208 
     209#if H_MV_HLS10_PTL
     210#if H_MV
     211  Bool m_max12bitConstraintFlag;
     212  Bool m_max10bitConstraintFlag;
     213  Bool m_max8bitConstraintFlag;
     214  Bool m_max422chromaConstraintFlag;
     215  Bool m_max420chromaConstraintFlag;
     216  Bool m_maxMonochromeConstraintFlag;
     217  Bool m_intraConstraintFlag;
     218  Bool m_onePictureOnlyConstraintFlag;
     219  Bool m_lowerBitRateConstraintFlag;
     220  Bool m_inbldFlag;
     221#endif
     222#endif
    203223public:
    204224  ProfileTierLevel();
     
    230250  Bool getFrameOnlyConstraintFlag() const { return m_frameOnlyConstraintFlag; }
    231251  Void setFrameOnlyConstraintFlag(Bool b) { m_frameOnlyConstraintFlag = b; }
     252
     253#if H_MV
     254#if H_MV_HLS10_PTL
     255  Void setMax12bitConstraintFlag( Bool flag ) { m_max12bitConstraintFlag = flag; }
     256  Bool getMax12bitConstraintFlag(  ) { return m_max12bitConstraintFlag; }
     257 
     258  Void setMax10bitConstraintFlag( Bool flag ) { m_max10bitConstraintFlag = flag; }
     259  Bool getMax10bitConstraintFlag(  ) { return m_max10bitConstraintFlag; }
     260 
     261  Void setMax8bitConstraintFlag( Bool flag ) { m_max8bitConstraintFlag = flag; }
     262  Bool getMax8bitConstraintFlag(  ) { return m_max8bitConstraintFlag; }
     263 
     264  Void setMax422chromaConstraintFlag( Bool flag ) { m_max422chromaConstraintFlag = flag; }
     265  Bool getMax422chromaConstraintFlag(  ) { return m_max422chromaConstraintFlag; }
     266 
     267  Void setMax420chromaConstraintFlag( Bool flag ) { m_max420chromaConstraintFlag = flag; }
     268  Bool getMax420chromaConstraintFlag(  ) { return m_max420chromaConstraintFlag; }
     269 
     270  Void setMaxMonochromeConstraintFlag( Bool flag ) { m_maxMonochromeConstraintFlag = flag; }
     271  Bool getMaxMonochromeConstraintFlag(  ) { return m_maxMonochromeConstraintFlag; }
     272  Void setIntraConstraintFlag( Bool flag ) { m_intraConstraintFlag = flag; }
     273  Bool getIntraConstraintFlag(  ) { return m_intraConstraintFlag; }
     274 
     275  Void setOnePictureOnlyConstraintFlag( Bool flag ) { m_onePictureOnlyConstraintFlag = flag; }
     276  Bool getOnePictureOnlyConstraintFlag(  ) { return m_onePictureOnlyConstraintFlag; }
     277 
     278  Void setLowerBitRateConstraintFlag( Bool flag ) { m_lowerBitRateConstraintFlag = flag; }
     279  Bool getLowerBitRateConstraintFlag(  ) { return m_lowerBitRateConstraintFlag; }
     280 
     281  Void setInbldFlag( Bool flag ) { m_inbldFlag = flag; }
     282  Bool getInbldFlag(  ) { return m_inbldFlag; }
     283#endif
     284#if H_MV_HLS10_PTL_INFER_FIX
     285  Bool getV2ConstraintsPresentFlag(); 
     286  Bool getInbldPresentFlag();
     287  Void copyV2ConstraintFlags( ProfileTierLevel* ptlRef );
     288  Void copyProfile( ProfileTierLevel* ptlRef );
     289#endif
     290#endif
    232291};
    233292
     
    251310  ProfileTierLevel* getSubLayerPTL(Int i)  { return &m_subLayerPTL[i]; }
    252311#if H_MV
     312#if H_MV_HLS10_PTL_INFER_FIX
     313  Void inferGeneralValues ( Bool profilePresentFlag  , Int k, TComPTL* refPTL );;
     314  Void inferSubLayerValues( Int maxNumSubLayersMinus1, Int k, TComPTL* refPTL );;
     315#else
    253316  Void copyLevelFrom( TComPTL* source );
     317#endif
    254318#endif
    255319};
     
    359423  Void setCpbCntMinus1           ( Int layer, UInt value ) { m_HRD[layer].cpbCntMinus1 = value; }
    360424  UInt getCpbCntMinus1           ( Int layer            )  { return m_HRD[layer].cpbCntMinus1; }
    361 
     425 
    362426  Void setBitRateValueMinus1     ( Int layer, Int cpbcnt, Int nalOrVcl, UInt value ) { m_HRD[layer].bitRateValueMinus1[cpbcnt][nalOrVcl] = value; }
    363427  UInt getBitRateValueMinus1     ( Int layer, Int cpbcnt, Int nalOrVcl             ) { return m_HRD[layer].bitRateValueMinus1[cpbcnt][nalOrVcl];  }
     
    434498  Int  getMatrixCoeffsVps(  ) { return m_matrixCoeffsVps; }
    435499};
     500
    436501class TComVpsVuiBspHrdParameters
    437502{
     503#if H_MV_HLS10_VPS_VUI_BSP
     504
     505  /* Not yet tested */
     506private:
     507
     508  Int   m_vpsNumAddHrdParams;
     509  Bool* m_cprmsAddPresentFlag;
     510  TComHRD* m_hrdParameters;
     511  Int*  m_numSubLayerHrdMinus1;
     512  Int*  m_numSignalledPartitioningSchemes;
     513  Int** m_numPartitionsInSchemeMinus1;
     514
     515  Bool****  m_layerIncludedInPartitionFlag;
     516  Int***    m_numBspSchedulesMinus1;
     517  Int*****  m_bspHrdIdx;
     518  Int*****  m_bspSchedIdx;
     519   
     520  // Array sizes
     521  Int      m_offsetHrdParamIdx;
     522  Int      m_numHrdParam;
     523  Int      m_numOls;
     524  TComVPS* m_vps;
     525public:   
     526
     527  ~TComVpsVuiBspHrdParameters();
     528 
     529  Void createAfterVpsNumAddHrdParams( TComVPS* vps );
     530  Void createAfterNumSignalledPartitioningSchemes(Int h );
     531  Void createAfterNumPartitionsInSchemeMinus1(Int h, Int j);
     532  Void createAfterNumBspSchedulesMinus1( Int h, Int i, Int t);
     533
     534  Void setVpsNumAddHrdParams( Int  val ) { m_vpsNumAddHrdParams = val; }
     535  Int  getVpsNumAddHrdParams(  ) { return m_vpsNumAddHrdParams; }
     536 
     537  Void setCprmsAddPresentFlag( Int i, Bool flag ) { m_cprmsAddPresentFlag[i - m_offsetHrdParamIdx] = flag; }
     538  Bool getCprmsAddPresentFlag( Int i ) { return m_cprmsAddPresentFlag[i  - m_offsetHrdParamIdx]; }
     539 
     540  Void setNumSubLayerHrdMinus1( Int i, Int  val ) { m_numSubLayerHrdMinus1[i  - m_offsetHrdParamIdx] = val; }
     541  Int  getNumSubLayerHrdMinus1( Int i ) { return m_numSubLayerHrdMinus1[i  - m_offsetHrdParamIdx]; }
     542 
     543  Void setNumSignalledPartitioningSchemes( Int h, Int  val ) { m_numSignalledPartitioningSchemes[h] = val; }
     544  Int  getNumSignalledPartitioningSchemes( Int h ) { return m_numSignalledPartitioningSchemes[h]; }
     545 
     546  Void setNumPartitionsInSchemeMinus1( Int h, Int j, Int  val ) { m_numPartitionsInSchemeMinus1[h][j] = val; }
     547  Int  getNumPartitionsInSchemeMinus1( Int h, Int j ) { return m_numPartitionsInSchemeMinus1[h][j]; }
     548 
     549  Void setLayerIncludedInPartitionFlag( Int h, Int j, Int k, Int r, Bool flag ) { m_layerIncludedInPartitionFlag[h][j][k][r] = flag; }
     550  Bool getLayerIncludedInPartitionFlag( Int h, Int j, Int k, Int r ) { return m_layerIncludedInPartitionFlag[h][j][k][r]; }
     551 
     552  Void setNumBspSchedulesMinus1( Int h, Int i, Int t, Int  val ) { m_numBspSchedulesMinus1[h][i][t] = val; }
     553  Int  getNumBspSchedulesMinus1( Int h, Int i, Int t ) { return m_numBspSchedulesMinus1[h][i][t]; }
     554 
     555  Void setBspHrdIdx( Int h, Int i, Int t, Int j, Int k, Int  val ) { m_bspHrdIdx[h][i  - m_offsetHrdParamIdx][t][j][k] = val; }
     556  Int  getBspHrdIdx( Int h, Int i, Int t, Int j, Int k ) { return m_bspHrdIdx[h][i  - m_offsetHrdParamIdx][t][j][k]; }
     557 
     558  Int  getBspHrdIdxLen( TComVPS* vps );
     559
     560  Void setBspSchedIdx( Int h, Int i, Int t, Int j, Int k, Int  val ) { m_bspSchedIdx[h][i - m_offsetHrdParamIdx][t][j][k] = val; }
     561  Int  getBspSchedIdx( Int h, Int i, Int t, Int j, Int k ) { return m_bspSchedIdx[h][i - m_offsetHrdParamIdx][t][j][k]; }
     562
     563  Void setHrdParametermeters( Int k, TComHRD* val  ) {  *(m_hrdParameters + k ) = *val; };
     564  TComHRD* getHrdParametermeters( Int k ) {  return m_hrdParameters + k; };
     565#else
    438566private:
    439567  Int  m_vpsNumBspHrdParametersMinus1;
     
    475603  Void setHrdParametermeters( Int k, TComHRD* val  ) {  m_hrdParameters[k] = val; };
    476604  TComHRD* getHrdParametermeters( Int k ) {  return m_hrdParameters[k]; };
     605#endif
    477606};
    478607
     
    501630  Bool m_wppNotInUseFlag;
    502631  Bool m_wppInUseFlag                [MAX_NUM_LAYERS];
     632#if H_MV_HLS10_VPS_VUI
     633  Bool m_singleLayerForNonIrapFlag;
     634  Bool m_higherLayerIrapSkipFlag;
     635#endif
    503636  Bool m_ilpRestrictedRefLayersFlag;
    504637  Int  m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     
    574707  Void setWppInUseFlag( Int i, Bool flag ) { m_wppInUseFlag[i] = flag; }
    575708  Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; }
     709
     710#if H_MV_HLS10_VPS_VUI
     711  Void setSingleLayerForNonIrapFlag( Bool flag ) { m_singleLayerForNonIrapFlag = flag; }
     712  Bool getSingleLayerForNonIrapFlag(  ) { return m_singleLayerForNonIrapFlag; }
     713
     714  Void setHigherLayerIrapSkipFlag( Bool flag ) { m_higherLayerIrapSkipFlag = flag; }
     715  Bool getHigherLayerIrapSkipFlag(  ) { return m_higherLayerIrapSkipFlag; }
     716#endif
    576717
    577718  Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; }
     
    609750  Int  m_bitDepthVpsLumaMinus8;
    610751  Int  m_bitDepthVpsChromaMinus8;
     752#if H_MV_HLS10_GEN_VSP_CONF_WIN
     753  Bool m_conformanceWindowVpsFlag;
     754  Int  m_confWinVpsLeftOffset;
     755  Int  m_confWinVpsRightOffset;
     756  Int  m_confWinVpsTopOffset;
     757  Int  m_confWinVpsBottomOffset;
     758#endif
    611759
    612760public:
     761
     762#if H_MV_HLS10_GEN_VSP_CONF_WIN
     763  TComRepFormat()
     764  {
     765  m_conformanceWindowVpsFlag = 0;
     766  m_confWinVpsLeftOffset     = 0;
     767  m_confWinVpsRightOffset    = 0;
     768  m_confWinVpsTopOffset      = 0;
     769  m_confWinVpsBottomOffset   = 0;
     770  }; 
     771#else
    613772  TComRepFormat() { }; 
     773#endif
    614774
    615775  Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; }
     
    635795  Void setBitDepthVpsChromaMinus8( Int  val ) { m_bitDepthVpsChromaMinus8 = val; }
    636796  Int  getBitDepthVpsChromaMinus8(  ) { return m_bitDepthVpsChromaMinus8; }
     797
     798#if H_MV_HLS10_GEN_VSP_CONF_WIN
     799  Void setConformanceWindowVpsFlag( Bool flag ) { m_conformanceWindowVpsFlag = flag; }
     800  Bool getConformanceWindowVpsFlag(  ) { return m_conformanceWindowVpsFlag; }
     801
     802  Void setConfWinVpsLeftOffset( Int  val ) { m_confWinVpsLeftOffset = val; }
     803  Int  getConfWinVpsLeftOffset(  ) { return m_confWinVpsLeftOffset; }
     804
     805  Void setConfWinVpsRightOffset( Int  val ) { m_confWinVpsRightOffset = val; }
     806  Int  getConfWinVpsRightOffset(  ) { return m_confWinVpsRightOffset; }
     807
     808  Void setConfWinVpsTopOffset( Int  val ) { m_confWinVpsTopOffset = val; }
     809  Int  getConfWinVpsTopOffset(  ) { return m_confWinVpsTopOffset; }
     810
     811  Void setConfWinVpsBottomOffset( Int  val ) { m_confWinVpsBottomOffset = val; }
     812  Int  getConfWinVpsBottomOffset(  ) { return m_confWinVpsBottomOffset; }
     813#endif
    637814};
    638815
     
    657834
    658835  Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int  val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; }
     836  #if H_MV_HLS10_ADD_LAYERSETS
     837  Int  getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { assert( m_maxVpsDecPicBufferingMinus1[i][k][j] >= 0 ); return m_maxVpsDecPicBufferingMinus1[i][k][j]; }     
     838  #else
    659839  Int  getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; }
     840  #endif
    660841
    661842  Void setMaxVpsNumReorderPics( Int i, Int j, Int  val ) { m_maxVpsNumReorderPics[i][j] = val; }
     
    672853#if H_MV
    673854  Bool        m_vpsBaseLayerInternalFlag;
     855#if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL
     856  Bool        m_vpsBaseLayerAvailableFlag;
     857#endif // H_MV_HLS10_GEN
    674858#endif
    675859
     
    741925  Int         m_layerSetIdxForOlsMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
    742926  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
     927#if H_MV_HLS10_PTL
     928  Int         m_profileTierLevelIdx      [MAX_VPS_OUTPUTLAYER_SETS ][MAX_NUM_LAYERS];
     929#else 
    743930  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
     931#endif
    744932  Bool        m_altOutputLayerFlag       [MAX_VPS_OUTPUTLAYER_SETS];
    745933  Bool        m_repFormatIdxPresentFlag;
     
    770958  // VPS EXTENSION SEMANTICS VARIABLES
    771959  Int         m_layerIdInVps             [MAX_NUM_LAYERS   ];
     960#if H_MV_HLS10_REF_PRED_LAYERS
     961  Int         m_dependencyFlag           [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     962#endif
    772963
    773964  Int         m_numDirectRefLayers       [MAX_NUM_LAYERS];
     965#if H_MV_HLS10_REF_PRED_LAYERS
     966  Int         m_idDirectRefLayer         [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 
     967#else
    774968  Int         m_refLayerId               [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 
     969#endif
    775970
    776971  Int         m_numRefLayers             [MAX_NUM_LAYER_IDS];
    777   Int         m_numPredictedLayers       [MAX_NUM_LAYERS];
     972#if H_MV_HLS10_REF_PRED_LAYERS
     973  Int         m_idRefLayer               [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 
     974#endif
     975
     976
     977  Int         m_numPredictedLayers       [MAX_NUM_LAYERS ];
     978#if !H_MV_HLS10_REF_PRED_LAYERS
    778979  Int         m_predictedLayerId         [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     980#else
     981  Int         m_idPredictedLayer         [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     982#endif
    779983  Int         m_numIndependentLayers;
    780984  Int         m_numLayersInTreePartition [MAX_NUM_LAYER_IDS];
    781985  Int         m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     986#if H_MV_HLS10_REF_PRED_LAYERS
    782987  Bool        m_recursiveRefLayerFlag    [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
    783 
     988  #endif
    784989  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
    785990 
     
    788993  std::vector< std::vector< Int> >       m_layerSetLayerIdList;
    789994
     995#if H_MV_HLS10_NESSECARY_LAYER
     996  Int        m_numNecessaryLayers        [MAX_VPS_OUTPUTLAYER_SETS];
     997  Bool       m_necessaryLayerFlag        [MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYERS];
     998#endif
    790999
    7911000  Int         xGetDimBitOffset( Int j );
     1001#if H_MV_HLS10_REF_PRED_LAYERS
    7921002  Void        xSetRefLayerFlags( Int currLayerId );
     1003#endif
    7931004  // VPS EXTENSION 2 SYNTAX ELEMENTS
    7941005#if H_3D_ARP
     
    8701081  Void    setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; }
    8711082  Bool    getVpsBaseLayerInternalFlag(  )          { return m_vpsBaseLayerInternalFlag; }
     1083#if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL
     1084  Void    setVpsBaseLayerAvailableFlag( Bool flag ) { m_vpsBaseLayerAvailableFlag = flag; }
     1085  Bool    getVpsBaseLayerAvailableFlag(  )          { return m_vpsBaseLayerAvailableFlag; }
     1086#endif
    8721087#endif
    8731088
     
    8771092#if H_MV   
    8781093  UInt    getMaxSubLayersMinus1()             { return m_uiMaxTLayers - 1;  }  // For consistency with draft spec
     1094#if H_MV_HLS10_GEN_FIX
     1095  Void    setMaxSubLayersMinus1(UInt val)     { m_uiMaxTLayers = (val + 1); };
     1096#endif
    8791097  UInt    getMaxLayersMinus1()                { return m_uiMaxLayersMinus1;  };
    8801098  Void    setMaxLayersMinus1(UInt l)          { m_uiMaxLayersMinus1 = l; }
     
    9161134
    9171135#if H_MV
     1136#if H_MV_HLS10_PTL
     1137  TComPTL* getPTL( Int idx = 0 ) { return &m_pcPTL[idx]; }
     1138#else
    9181139  TComPTL* getPTL( Int layerSet = 0 ) { return &m_pcPTL[layerSet]; }
     1140#endif
    9191141#else
    9201142  TComPTL* getPTL() { return &m_pcPTL; }
     
    9961218  Void    setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val )        { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]  = val; }
    9971219  Int     getLayerSetIdxForOlsMinus1( Int outLayerSetIdx )                 { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; }
     1220#if VPS_MISC_UPDATES
     1221  Int     getLayerSetIdxForOlsMinus1Len( Int outLayerSetIdx )              { return gCeilLog2( getNumLayerSets() ); }
     1222#endif
    9981223
    9991224  Void    setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag )       { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; }
     
    10021227  Bool    inferOutputLayerFlag( Int i, Int j );
    10031228
     1229#if H_MV_HLS10_PTL
     1230  Void    setProfileTierLevelIdx( Int i, Int j, Int val )                  { m_profileTierLevelIdx[ i ][ j ] = val; }
     1231  Int     getProfileTierLevelIdx( Int i, Int j )                           { return m_profileTierLevelIdx[ i ][ j ]; }
     1232#if H_MV_HLS10_PTL_FIX
     1233  Int     inferProfileTierLevelIdx( Int i, Int j );
     1234#endif
     1235#else
    10041236  Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx ] = val; }
    10051237  Int     getProfileLevelTierIdx( Int outLayerSetIdx )                     { return m_profileLevelTierIdx[ outLayerSetIdx ]; }
     1238#endif
    10061239 
    10071240  Void    setAltOutputLayerFlag( Int i, Bool flag )                        { m_altOutputLayerFlag[i] = flag; }
     
    10331266  TComDpbSize* getDpbSize( )                                               { return m_dpbSize;}
    10341267 
     1268#if !H_MV_HLS10_ADD_LAYERSETS 
    10351269  Void    inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder );
    1036  
     1270#endif
     1271
    10371272  Void    setPocLsbNotPresentFlag( Int i, Bool flag )                      { m_pocLsbNotPresentFlag[i] = flag; }
    10381273  Bool    getPocLsbNotPresentFlag( Int i )                                 { return m_pocLsbNotPresentFlag[i]; }
     
    10641299
    10651300  Int     getViewIndex    ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), VIEW_ORDER_INDEX  ); }   
     1301#if H_MV_HLS10_AUX
     1302  Int     getAuxId        ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), AUX_ID  ); }   
     1303  Int     getDependencyId ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPENDENCY_ID  ); }   
     1304#endif
    10661305  Int     getNumViews();
    10671306
     1307#if H_MV_HLS10_REF_PRED_LAYERS
     1308  Bool    getDependencyFlag( Int i, Int j )                                { return m_dependencyFlag[i][j]; }
     1309#endif
    10681310  Int     getNumDirectRefLayers( Int layerIdInNuh )                        { return m_numDirectRefLayers[ layerIdInNuh ];  };                               
     1311#if !H_MV_HLS10_REF_PRED_LAYERS
    10691312  Int     getRefLayerId        ( Int layerIdInNuh, Int idx );;
    1070 
     1313#endif
    10711314  Int     getNumRefLayers            ( Int i )        { return m_numRefLayers[i]; }
    10721315  Int     getNumPredictedLayers      ( Int i )        { return m_numPredictedLayers[i]; }
     1316
     1317#if !H_MV_HLS10_REF_PRED_LAYERS 
    10731318  Int     getPredictedLayerId        ( Int i, Int j ) { return m_predictedLayerId[i][j]; }
     1319#else
     1320  Int     getIdRefLayer              ( Int i, Int j ) { assert( j >= 0 && j < getNumRefLayers      ( i )); return m_idRefLayer      [i][j]; }
     1321  Int     getIdPredictedLayer        ( Int i, Int j ) { assert( j >= 0 && j < getNumPredictedLayers( i )); return m_idPredictedLayer[i][j]; }
     1322  Int     getIdDirectRefLayer        ( Int i, Int j ) { assert( j >= 0 && j < getNumDirectRefLayers( i )); return m_idDirectRefLayer[i][j]; }
     1323#endif
    10741324  Int     getNumIndependentLayers    (  )             { return m_numIndependentLayers; }
    10751325  Int     getNumLayersInTreePartition( Int i )        { return m_numLayersInTreePartition[i]; }
     
    10781328  Int     getNumLayerSets( )                                               { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets();  }; 
    10791329 
     1330#if H_MV_HLS10_ADD_LAYERSETS
     1331  Int     getFirstAddLayerSetIdx()                    { return getVpsNumLayerSetsMinus1() + 1; }
     1332  Int     getLastAddLayerSetIdx()                     { return getFirstAddLayerSetIdx() + getNumAddLayerSets() - 1; }
     1333#endif
    10801334  Bool    checkVPSExtensionSyntax();
    10811335  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
    10821336
     1337#if H_MV_HLS10_PTL
     1338  Int     getProfileTierLevelIdxLen()                                      { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
     1339#else
    10831340  Int     getProfileLevelTierIdxLen()                                      { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
     1341#endif
    10841342  Int     getVpsRepFormatIdxLen()                                          { return gCeilLog2( getVpsNumRepFormatsMinus1() + 1 ); };       
    10851343
     
    10921350  Void    deriveLayerSetLayerIdList();
    10931351
     1352#if H_MV_HLS10_ADD_LAYERSETS
     1353  Int     olsIdxToLsIdx( Int i )                                           { return ( i < getNumLayerSets() ) ? i  : getLayerSetIdxForOlsMinus1( i ) + 1 ; };
     1354#else
    10941355  Int     olsIdxToLsIdx( Int i )                                           { return ( i <= getVpsNumLayerSetsMinus1() ) ? i  : getLayerSetIdxForOlsMinus1( i ) + 1 ; };
    1095 
     1356#endif
    10961357  Void    initTargetLayerIdLists  ( );
    10971358  Void    deriveTargetLayerIdList ( Int i );
    1098 
    10991359  std::vector<Int> getTargetDecLayerIdList( Int targetDecLayerSetIdx )     { return m_targetDecLayerIdLists[targetDecLayerSetIdx]; };
    11001360  std::vector<Int> getTargetOptLayerIdList( Int targetOptLayerSetIdx )     { return m_targetOptLayerIdLists[targetOptLayerSetIdx]; };
     
    11031363  Int     getOlsHighestOutputLayerId( Int i )                              { return getTargetOptLayerIdList( i ).back(); }; 
    11041364
     1365#if H_MV_HLS10_ADD_LAYERSETS
     1366  Void    deriveAddLayerSetLayerIdList( Int i );
     1367#endif
     1368#if H_MV_HLS10_NESSECARY_LAYER
     1369  Void    deriveNecessaryLayerFlags( Int olsIdx );;
     1370  Int     getNecessaryLayerFlag( Int i, Int j )                            { AOF( i >= 0 && i < getNumOutputLayerSets() ); AOF( j >= 0 && j < getNumLayersInIdList( olsIdxToLsIdx( i ) )  );  return m_necessaryLayerFlag[i][j]; }; 
     1371#endif
     1372
    11051373  Int     getMaxSubLayersInLayerSetMinus1( Int i );
    11061374  Int     getHighestLayerIdxPlus1Len( Int j )                                   { return gCeilLog2( getNumLayersInTreePartition( j ) + 1 );   };
    1107 
    1108   Bool     getAltOutputLayerFlagVar( Int i );;
     1375  Bool    getAltOutputLayerFlagVar( Int i );;
    11091376
    11101377  // inference
     
    11131380
    11141381  // helpers
     1382#if !H_MV_HLS10_REF_PRED_LAYERS
    11151383  Bool    getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 );
     1384#endif
     1385#if !H_MV_HLS10_MAXNUMPICS
    11161386  Int     getMaxNumPics( Int layerId );
     1387#endif
     1388#if H_MV_HLS10_ADD_LAYERSETS
     1389  Void    printPTL();
     1390  Void    printLayerDependencies();
     1391#if H_MV_HLS10_AUX
     1392  Void    printScalabilityId();;
     1393#endif
     1394  Void    printLayerSets();;
     1395
     1396
     1397
     1398  template <typename T, typename S, typename U> Void xPrintArray( const Char* name, Int numElemDim1, U idx, S numElemDim2, T vec, Bool printNumber, Bool printIdx = true )
     1399  {
     1400    std::cout << std::endl;
     1401    for (Int j = 0; j < numElemDim1; j++ )
     1402    {
     1403      std::cout << std::right << std::setw(27) << name;
     1404      if (printIdx)
     1405      {
     1406        std::cout << "[" << std::right << std::setw(3) << idx[ j ] << "]" ;
     1407      }
     1408      else
     1409      {
     1410        std::cout << std::right << std::setw(5) << " ";
     1411      }
     1412     
     1413      if ( printNumber )
     1414      {
     1415        std::cout << " (" << std::right << std::setw(3) << numElemDim2[j] << ")";       
     1416      }         
     1417      else
     1418      {
     1419       std::cout << std::right << std::setw(6) << " ";             
     1420      }
     1421
     1422      std::cout << ":";
     1423      for (Int i = 0; i < numElemDim2[j]; i++)
     1424      {
     1425        std::cout << std::right << std::setw(3) << vec[j][i];
     1426      }   
     1427      std::cout << std::endl;
     1428    }
     1429  }
     1430
     1431  template <typename T> Void xPrintArray( const char* name, Int numElem, T vec, Bool printNumber  )
     1432  {
     1433    std::vector<Int> numElemDim2(1, numElem);   
     1434    std::vector<T>   vec2       (1,  vec    );
     1435    std::vector<Int> idx2       (0);
     1436    xPrintArray( name, 1, idx2, numElemDim2, vec2, printNumber, false );
     1437  }
     1438#endif
     1439
    11171440
    11181441  /// VPS EXTENSION 2 SYNTAX ELEMENTS
     
    15571880  TComVPS*    m_pcVPS;
    15581881  // SPS
     1882#if H_MV_HLS10_MULTILAYERSPS
     1883  Int         m_spsMaxSubLayersMinus1;
     1884  Int         m_spsExtOrMaxSubLayersMinus1;
     1885#endif
    15591886  Bool        m_spsExtensionPresentFlag;
    15601887
     
    15741901  // SPS Extension
    15751902  Bool        m_interViewMvVertConstraintFlag;
     1903#if !H_MV_HLS10_PPS
    15761904  Int         m_numScaledRefLayerOffsets;
    15771905  Int         m_scaledRefLayerId          [MAX_NUM_SCALED_REF_LAYERS];
     
    15801908  Int         m_scaledRefLayerRightOffset [MAX_NUM_LAYERS];
    15811909  Int         m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS];
     1910#endif
    15821911#endif
    15831912#if H_3D
     
    16832012#if H_MV
    16842013  UInt      getSpsMaxSubLayersMinus1()                { return ( m_uiMaxTLayers - 1); }
     2014#if H_MV_HLS10_MULTILAYERSPS
     2015  Void      setSpsMaxSubLayersMinus1( UInt val )       { setMaxTLayers( val + 1 ); }
     2016#endif
    16852017#endif
    16862018
     
    17152047  TComPTL* getPTL()     { return &m_pcPTL; }
    17162048#if H_MV
     2049#if H_MV_HLS10_MULTILAYERSPS
     2050  Void setSpsExtOrMaxSubLayersMinus1( Int  val ) { m_spsExtOrMaxSubLayersMinus1 = val; }
     2051  Int  getSpsExtOrMaxSubLayersMinus1(  ) { return m_spsExtOrMaxSubLayersMinus1; }
     2052  Void inferSpsMaxSubLayersMinus1( Bool atPsActivation, TComVPS* vps  );
     2053
     2054  Bool getMultiLayerExtSpsFlag()            { return ( getLayerId() != 0  &&  getSpsExtOrMaxSubLayersMinus1() == 7 ); }
     2055#endif
    17172056  Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder );
    17182057
     
    17532092  Bool getInterViewMvVertConstraintFlag()         { return m_interViewMvVertConstraintFlag;}
    17542093
     2094#if !H_MV_HLS10_PPS
    17552095  Void setNumScaledRefLayerOffsets( Int  val )    { m_numScaledRefLayerOffsets = val; }
    17562096  Int  getNumScaledRefLayerOffsets(  )            { return m_numScaledRefLayerOffsets; }
     
    17702110  Void setScaledRefLayerBottomOffset( Int j, Int  val ) { m_scaledRefLayerBottomOffset[j] = val; }
    17712111  Int  getScaledRefLayerBottomOffset( Int j )           { return m_scaledRefLayerBottomOffset[j]; }
     2112#endif
    17722113  // Inference
     2114
    17732115  Void inferRepFormat( TComVPS* vps, Int layerIdCurr );
    17742116  Void inferScalingList( TComSPS* spsSrc );
     
    21952537
    21962538  Bool       m_enableTMVPFlag;
     2539#if I0044_SLICE_TMVP
     2540  Bool       m_availableForTMVPRefFlag;
     2541#endif
     2542
    21972543#if H_MV
    21982544  std::vector<TComPic*>* m_refPicSetInterLayer0;
     
    22552601#if MTK_SINGLE_DEPTH_MODE_I0095
    22562602  Bool      m_bApplySingleDepthMode;
     2603#endif
     2604#if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX
     2605  Int *m_aICEnableCandidate;
     2606  Int *m_aICEnableNum;
    22572607#endif
    22582608public:
     
    25272877  Void      setEnableTMVPFlag     ( Bool   b )    { m_enableTMVPFlag = b; }
    25282878  Bool      getEnableTMVPFlag     ()              { return m_enableTMVPFlag;}
     2879#if I0044_SLICE_TMVP
     2880  Void      setAvailableForTMVPRefFlag     ( Bool   b )    { m_availableForTMVPRefFlag = b; }
     2881  Bool      getAvailableForTMVPRefFlag     ()              { return m_availableForTMVPRefFlag;}
     2882#endif
    25292883
    25302884#if H_MV
     
    25672921#endif
    25682922#endif
     2923#if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX
     2924  Void    setICEnableCandidate( Int* ICEnableCandidate)   { m_aICEnableCandidate = ICEnableCandidate; };
     2925  Void    setICEnableNum( Int* ICEnableNum)   { m_aICEnableNum = ICEnableNum; };
     2926  Void    setICEnableCandidate( UInt layer, Int value)   { m_aICEnableCandidate[ layer ] = value; };
     2927  Void    setICEnableNum( UInt layer, Int value)   { m_aICEnableNum[ layer ] = value; };
     2928
     2929  Int    getICEnableCandidate( Int layer){ return  m_aICEnableCandidate[ layer ]; };
     2930  Int    getICEnableNum( Int layer){ return m_aICEnableNum[ layer ]; };
     2931#endif
    25692932#if H_MV
    25702933// Additional slice header syntax elements
  • trunk/source/Lib/TLibCommon/TypeDef.h

    r1039 r1066  
    123123                                              // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
    124124                                              // MTK_LOW_LATENCY_IC_ENCODING_H0086  Low-latency IC encoding in JCT3V-H0086
     125
     126#define MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX  1  // Remove the global variables used in JCT3V-H0086
     127
    125128
    126129#define SEC_IC_NEIGHBOR_CLIP_I0080        1   // Clipping of neighboring sample position, JCT3V-I0080
     
    225228#endif
    226229
     230#define H_3D_FIX_UNINIT                   1   // Fix uninitialized flag
    227231#define H_3D_INTER_SDC                    1   // INTER SDC, Inter simplified depth coding
    228232                                              // LGE_INTER_SDC_E0156 Enable inter SDC for depth coding
     
    251255
    252256#define H_3D_FCO                          0   // Flexible coding order for 3D
     257#if H_3D_FCO
     258#define LGE_FCO_I0116                     1
     259#endif
    253260
    254261#define SCU_HS_FAST_INTRA_SDC_I0123       1
     
    275282#define SEC_HLS_CLEANUP_I0100             1
    276283
     284#define H_3D_FIX_64BIT_SHIFT              1
    277285#endif // H_3D
    278286
     
    300308#define H_3D_VSO_RM_ASSERTIONS            0   // Output VSO assertions
    301309#define H_3D_VSO_SYNTH_DIST_OUT           0   // Output of synthesized view distortion instead of depth distortion in encoder output
    302 #define H_3D_VSO_FIX                      0   // This fix should be enabled after verification
     310#define H_3D_VSO_FIX                      1   // This fix should be enabled after verification
    303311#endif
    304312
     
    381389/////////////////////////////////////////////////////////////////////////////////
    382390// TBD: Check if integration is necessary.
     391
     392
     393
     394//Added by Qualcomm for HLS
     395#define DISCARDABLE_PIC_RPS              1      ///< JCT3V-G0131: Inter-layer RPS and temporal RPS should not contain picture with discardable_flag equal to 1
     396#define VPS_MISC_UPDATES                 1      ///< Misc updates:JCT3V-0240,
     397#define NON_REF_NAL_TYPE_DISCARDABLE     1      ///< JCT3V-G0031: If discardable picture is a non-IRAP, it must be a non-referenced sub-layer picture
     398#define INFERENCE_POC_MSB_VAL_PRESENT    1      ///< JCT3V-H0042: poc_msb_val_present_flag shall be equal to 0 when slice_header_extension_length is (inferred to be ) equal to 0
     399#define INFERENCE_POC_RESET_INFO_PRESENT 1      ///< JCT3V-H0042: Infer the value of poc_reset_info_present_flag to be equal to 0 when no pps extension / pps extension for multilayer.
     400#define I0044_SLICE_TMVP                 1      ///< JCT3V-I0044: Regarding slice_temporal_mvp_enabled_flag
     401#define I0045_BR_PR_ADD_LAYER_SET        1      ///< JCT3V-I0045: Signalling of bit-rate and picture rate for additional layer set
     402#define I0045_VPS_VUI_VST_PARAMS         1      ///< JCT3V-I0045: Related to signalling of VST parameters of the base layer.
     403
     404
     405#define H_MV_HLS10_GEN                       0  // General changes (not tested)
     406
     407#define H_MV_HLS10_AUX                       1 // Auxiliary pictures
     408#define H_MV_HLS10_GEN_FIX                   1
     409#define H_MV_FIX_LOOP_GOPSIZE                1
     410#define H_MV_FIX_SUB_LAYERS_MAX_MINUS1       1
     411
     412#define H_MV_HLS10_GEN_VSP_CONF_WIN          1  // VPS conformance window
     413#define H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL  1  // vps_base_layer_available
     414#define H_MV_HLS10_REF_PRED_LAYERS           1  // reference and predicted layer derivation
     415#define H_MV_HLS10_NESSECARY_LAYER           1  // necessary layers
     416#define H_MV_HLS10_ADD_LAYERSETS             1  // additional layer sets
     417#define H_MV_HLS10_DBP_SIZE                  1  // dpb size syntax structure
     418#define H_MV_HLS10_MAXNUMPICS                1  // constraint on number of pictures in rps 
     419#define H_MV_HLS10_PTL                       1  // profile tier level
     420#define H_MV_HLS10_PTL_FIX                   1  // profile tier level fix
     421#define H_MV_HLS10_PTL_INBL_FIX              1  // profile tier level fix
     422#define H_MV_HLS10_PTL_INFER_FIX             1  // fix inference ptl
     423#define H_MV_HLS10_MULTILAYERSPS             1  // multilayer SPS extension
     424#define H_MV_HLS10_VPS_VUI                   1  // vsp vui
     425#define H_MV_HLS10_VPS_VUI_BSP               1  // vsp vui bsp
     426#define H_MV_HLS10_PPS                       1  // PPS modifications
     427
     428#define H_MV_HLS10_VPS_VUI_BSP_STORE         0  // Currently bsp vui bsp hrd parameters are not stored, some dynamic memory allocation with upper bounds is required.
     429
     430
    383431#define H_MV_HLS7_GEN                        0  // General changes (not tested)
     432
    384433
    385434// POC
     
    457506#define MAX_NESTING_NUM_LAYER       64
    458507
     508#if H_MV_HLS10_VPS_VUI_BSP
     509#define MAX_VPS_NUM_HRD_PARAMETERS                1024
     510#define MAX_NUM_SUB_LAYERS                        7
     511#define MAX_NUM_SIGNALLED_PARTITIONING_SCHEMES    16
     512#else
    459513#define MAX_VPS_NUM_HRD_PARAMETERS                1
     514#endif
     515
    460516#define MAX_VPS_OP_SETS_PLUS1                     1024
    461517#if H_MV
     518#if H_MV_HLS10_ADD_LAYERSETS
     519#define MAX_VPS_NUM_ADD_LAYER_SETS                1024
     520#endif
    462521#define MAX_VPS_NUH_LAYER_ID_PLUS1  63
    463522#define MAX_NUM_SCALABILITY_TYPES   16
     
    474533#define MAX_VPS_PROFILE_TIER_LEVEL      64
    475534#define MAX_VPS_ADD_OUTPUT_LAYER_SETS   1024
     535#if H_MV_HLS10_ADD_LAYERSETS
     536#define MAX_VPS_OUTPUTLAYER_SETS        ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 + MAX_VPS_OP_SETS_PLUS1 )
     537#else
    476538#define MAX_VPS_OUTPUTLAYER_SETS        ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 )
     539#endif
    477540#define  MAX_NUM_VIDEO_SIGNAL_INFO      16
    478541#define MAX_NUM_SCALED_REF_LAYERS       MAX_NUM_LAYERS-1
     542#if !H_MV_HLS10_VPS_VUI_BSP
    479543#define MAX_NUM_BSP_HRD_PARAMETERS      100 ///< Maximum value is actually not specified
    480544#define MAX_NUM_BITSTREAM_PARTITIONS    100 ///< Maximum value is actually not specified
    481545#define MAX_NUM_BSP_SCHED_COMBINATION   100 ///< Maximum value is actually not specified
    482546#define MAX_SUB_STREAMS                 1024
     547#endif
    483548#else
    484549#define MAX_NUM_LAYER_IDS                64
     
    9511016    MAINSTILLPICTURE = 3,
    9521017#if H_MV
     1018#if H_MV_HLS10_PTL
     1019    MULTIVIEWMAIN = 6,
     1020#if H_3D
     1021    MAIN3D = 8,
     1022#endif
     1023#else
    9531024    MAINSTEREO = 4,
    9541025    MAINMULTIVIEW = 5,
    9551026#if H_3D
    9561027    MAIN3D = 6,
     1028#endif
    9571029#endif
    9581030#endif
     
    9971069#endif   
    9981070    VIEW_ORDER_INDEX  = 1,
     1071#if H_MV_HLS10_AUX
     1072    DEPENDENCY_ID = 2,
     1073    AUX_ID = 3,
     1074#endif   
    9991075  };
    10001076#endif
Note: See TracChangeset for help on using the changeset viewer.