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


Ignore:
Timestamp:
10 Dec 2013, 13:50:12 (11 years ago)
Author:
tech
Message:

Merged HTM-9.0-dev0@731. (MV-HEVC 6 HLS)

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

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/CommonDef.h

    r736 r738  
    6060
    6161#if H_MV
    62 #define NV_VERSION        "9.0r1"               ///< Current software version
     62#define NV_VERSION        "9.1"                 ///< Current software version
    6363#define HM_VERSION        "12.0"                ///<
    6464#else
     
    121121#define MAX_UINT                    0xFFFFFFFFU ///< max. value of unsigned 32-bit integer
    122122#define MAX_INT                     2147483647  ///< max. value of signed 32-bit integer
    123 #if H_3D
    124123#define MIN_INT                     (-2147483647-1) // < min. value of signed 32-bit integer
    125 #endif
     124
    126125#define MAX_INT64                   0x7FFFFFFFFFFFFFFFLL  ///< max. value of signed 64-bit integer
    127126#define MAX_DOUBLE                  1.7e+308    ///< max. value of double-type value
  • trunk/source/Lib/TLibCommon/TComPic.cpp

    r655 r738  
    503503{
    504504  if ( legend )
    505     std::cout  << "LId"        << "\t" << "POC"   << "\t" << "Rec"          << "\t" << "Ref"                       << "\t" << "LT"            << std::endl;
     505    std::cout  << std::endl << "LId"        << "\t" << "POC"   << "\t" << "Rec"          << "\t" << "Ref"                       << "\t" << "LT"            <<  "\t" << "OutMark" <<  "\t" << "OutFlag" << std::endl;
    506506  else
    507     std::cout  << getLayerId() << "\t" << getPOC()<< "\t" << getReconMark() << "\t" << getSlice(0)->isReferenced() << "\t" << getIsLongTerm() << std::endl;
     507    std::cout  << getLayerId() << "\t" << getPOC()<< "\t" << getReconMark() << "\t" << getSlice(0)->isReferenced() << "\t" << getIsLongTerm() << "\t" << getOutputMark() << "\t" << getSlice(0)->getPicOutputFlag() <<std::endl;
    508508}
    509509
     
    530530  return getPic   ( m_vps->getLayerIdInNuh( viewIndex, depthFlag ), poc );
    531531}
    532 
     532#endif
    533533Void TComPicLists::print()
    534534{
     
    571571}
    572572
     573#if H_3D
    573574TComPicYuv* TComPicLists::getPicYuv( Int viewIndex, Bool depthFlag, Int poc, Bool recon )
    574575
     
    593594}
    594595#endif
    595 #endif // H_3D
     596#endif
    596597#endif // H_MV
    597598
  • trunk/source/Lib/TLibCommon/TComRom.cpp

    r724 r738  
    573573#if H_MV_ENC_DEC_TRAC
    574574#if ENC_DEC_TRACE
     575#if H_MV_FIX_TRACE_FILE
     576Void writeToTraceFile( const Char* symbolName, Int val, Bool doIt )
     577#else
    575578Void writeToTraceFile( Char* symbolName, Int val, Bool doIt )
     579#endif
    576580{
    577581  if ( ( ( g_nSymbolCounter >= COUNTER_START && g_nSymbolCounter <= COUNTER_END )|| g_bJustDoIt ) && doIt  )
     
    588592}
    589593
     594#if H_MV_FIX_TRACE_FILE
     595Void writeToTraceFile( const Char* symbolName, Bool doIt )
     596#else
    590597Void writeToTraceFile( Char* symbolName, Bool doIt )
     598#endif
    591599{
    592600  if ( ( ( g_nSymbolCounter >= COUNTER_START && g_nSymbolCounter <= COUNTER_END )|| g_bJustDoIt ) && doIt  )
  • trunk/source/Lib/TLibCommon/TComRom.h

    r724 r738  
    236236
    237237
     238#if H_MV_FIX_TRACE_FILE
     239 Void           writeToTraceFile( const Char* symbolName, Int val, Bool doIt );
     240 Void           writeToTraceFile( const Char* symbolName, Bool doIt );
     241#else
    238242 Void           writeToTraceFile( Char* symbolName, Int val, Bool doIt );
    239243 Void           writeToTraceFile( Char* symbolName, Bool doIt );
     244#endif
    240245#endif
    241246#else
  • trunk/source/Lib/TLibCommon/TComSlice.cpp

    r724 r738  
    110110#endif
    111111, m_pocResetFlag                  (false)
     112#if H_MV_6_RALS_O0149_11
     113, m_crossLayerBlaFlag             (false)
     114#endif
    112115, m_discardableFlag               (false)
    113116, m_interLayerPredEnabledFlag     (false)
     
    148151  for (Int i = 0; i < MAX_NUM_LAYERS; i++ )
    149152  {
    150    m_interLayerPredLayerIdc[ i ] = i;
     153    m_interLayerPredLayerIdc[ i ] = -1;
    151154  }
    152155#endif
     
    17091712, m_hrdOpSetIdx               (NULL)
    17101713, m_cprmsPresentFlag          (NULL)
     1714#if H_MV_6_HRD_O0217_13
     1715, m_dpbSize                   (NULL)
     1716#endif
    17111717#if H_MV
    17121718, m_vpsVUI                 (  NULL )
     
    17241730    for( Int layerId = 0; layerId < MAX_VPS_NUH_LAYER_ID_PLUS1; layerId++ )
    17251731    {
     1732#if H_MV_6_HRD_O0217_13
     1733      m_layerIdIncludedFlag[lsIdx][layerId] = (( lsIdx == 0 ) && ( layerId == 0 )) ;
     1734#else
    17261735      m_layerIdIncludedFlag[lsIdx][layerId] = false;
     1736#endif
    17271737    }
    17281738  }
     
    17381748  m_moreOutputLayerSetsThanDefaultFlag = false;   
    17391749  m_numAddOutputLayerSetsMinus1        = -1;   
     1750#if H_MV_6_PS_0109_25
     1751  m_defaultOneTargetOutputLayerIdc     = 0;
     1752#else
    17401753  m_defaultOneTargetOutputLayerFlag    = false;
     1754#endif
    17411755 
    17421756  for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++)
     
    17491763    }
    17501764  }
    1751  
     1765#if H_MV_6_GEN_0153_28
     1766  m_altOutputLayerFlag       = false;
     1767#endif
    17521768  m_maxOneActiveRefLayerFlag = false;
    17531769  m_directDepTypeLenMinus2   = 0;         
     
    17861802    m_layerIdInNuh      [i] = ( i == 0 ) ? 0 : -1;
    17871803    m_numDirectRefLayers[i] = 0;
     1804#if !H_MV_6_ILDDS_O0225_30
    17881805    m_maxTidIlRefPicPlus1[i] = 7;
     1806#endif
    17891807    m_vpsRepFormatIdx    [i] = 0;
     1808#if H_MV_6_MISC_O0062_31
     1809    m_pocLsbNotPresentFlag[i] = 0;
     1810#endif
    17901811    m_repFormat          [i] = NULL;
    17911812    m_viewIdVal          [i] = 0;
     
    18211842      m_directDependencyType[i][j] = -1;
    18221843      m_refLayerId[i][j]           = -1;
     1844#if H_MV_6_ILDDS_O0225_30     
     1845      m_maxTidIlRefPicsPlus1[i][j]  = 7;
     1846#endif
    18231847    }
    18241848
     
    18331857  }
    18341858  m_vpsVUI = new TComVPSVUI;
     1859#if H_MV_6_HRD_O0217_13
     1860  m_dpbSize = new TComDpbSize;
     1861#endif
     1862#
    18351863#if H_3D
    18361864  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
     
    18661894#if H_MV
    18671895  if ( m_vpsVUI          != NULL )     delete m_vpsVUI;
     1896#if H_MV_6_HRD_O0217_13
     1897  if ( m_dpbSize         != NULL )     delete m_dpbSize;
     1898#endif
     1899
    18681900  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
    18691901  {
     
    20682100  assert( lsIdx >= 0 );
    20692101  assert( lsIdx <= getVpsNumLayerSetsMinus1() );
     2102#if H_MV_6_HRD_O0217_13
     2103  return (Int) m_layerSetLayerIdList[ lsIdx ].size();
     2104#else
    20702105  Int numLayersInIdList = 0;
    20712106  for (Int layerId = 0; layerId < getVpsMaxLayerId(); layerId++ )
     
    20742109  }
    20752110  return numLayersInIdList;
    2076 }
     2111#endif
     2112}
     2113
     2114#if H_MV_6_HRD_O0217_13
     2115Int    TComVPS::getNumOutputLayerSets()
     2116{
     2117  Int numOutputLayerSets = getVpsNumberLayerSetsMinus1( ) + 1;
     2118  if ( getMoreOutputLayerSetsThanDefaultFlag( ) )
     2119  {     
     2120    numOutputLayerSets += (getNumAddOutputLayerSetsMinus1( ) + 1);
     2121}
     2122  return numOutputLayerSets;
     2123}
     2124#endif
     2125
    20772126Int TComVPS::getNumViews()
    20782127{
     
    21042153  return dependentFlag;
    21052154}
     2155
     2156#if H_MV_6_HRD_O0217_13
     2157Void TComVPS::deriveLayerSetLayerIdList()
     2158{
     2159  m_layerSetLayerIdList.resize( getVpsNumLayerSetsMinus1() + 1 );
     2160  for (Int i = 0; i <= getVpsNumLayerSetsMinus1(); i++ )
     2161  {
     2162    for( Int m = 0; m  <= getVpsMaxLayerId(); m++ )
     2163    {
     2164      if( getLayerIdIncludedFlag( i, m) )
     2165      {
     2166        m_layerSetLayerIdList[ i ].push_back( m );       
     2167      }
     2168    }
     2169  }
     2170}
     2171
     2172Void TComVPS::deriveTargetLayerIdLists()
     2173{
     2174  m_targetDecLayerIdLists.resize( getNumOutputLayerSets() );
     2175  m_targetOptLayerIdLists.resize( getNumOutputLayerSets() );
     2176
     2177  for (Int targetOptLayerSetIdx = 0; targetOptLayerSetIdx < getNumOutputLayerSets(); targetOptLayerSetIdx++ )
     2178  {
     2179    Int targetDecLayerSetIdx = getOutputLayerSetIdxMinus1( targetOptLayerSetIdx ) + 1;     
     2180    Int lsIdx                = targetDecLayerSetIdx;
     2181
     2182    for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ )
     2183    {
     2184      m_targetDecLayerIdLists[targetOptLayerSetIdx].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] );
     2185      if( getOutputLayerFlag( targetOptLayerSetIdx, j  )) // This seems to be wrong in draft text
     2186      {
     2187        m_targetOptLayerIdLists[targetOptLayerSetIdx].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] );
     2188      }
     2189    } 
     2190  }
     2191}
     2192#endif
    21062193#endif // H_MV
    21072194
     
    21572244, m_spsInferScalingListFlag   ( false )
    21582245, m_spsScalingListRefLayerId  ( 0 )
     2246
     2247#if !H_MV_6_PS_REP_FORM_18_19_20
    21592248, m_updateRepFormatFlag       ( true )
     2249#else
     2250, m_updateRepFormatFlag       ( false )
     2251, m_spsRepFormatIdx           ( 0 )
     2252#endif
    21602253, m_interViewMvVertConstraintFlag (false)
    21612254#endif
     
    21732266  ::memset(m_ltRefPicPocLsbSps, 0, sizeof(m_ltRefPicPocLsbSps));
    21742267  ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag));
     2268#if H_MV_6_PSEM_O0142_3
     2269  m_spsExtensionFlag = false;
     2270  for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ )
     2271  {
     2272    m_spsExtensionTypeFlag[ i ] = false;
     2273  }
     2274#endif
     2275#if H_MV_6_SHVC_O0098_36
     2276  m_numScaledRefLayerOffsets = 0;
     2277
     2278  for (Int i = 0; i < MAX_NUM_SCALED_REF_LAYERS; i++ )
     2279  {
     2280    m_scaledRefLayerId             [i] = -1;
     2281  }
     2282
     2283  for (Int i = 0; i < MAX_NUM_LAYERS; i++ )
     2284  {
     2285    m_scaledRefLayerLeftOffset     [i] = 0;
     2286    m_scaledRefLayerTopOffset      [i] = 0;
     2287    m_scaledRefLayerRightOffset    [i] = 0;
     2288    m_scaledRefLayerBottomOffset   [i] = 0;
     2289  }
     2290#endif
    21752291}
    21762292
     
    23532469  if ( layerIdCurr > 0 )
    23542470  {
     2471#if H_MV_6_PS_REP_FORM_18_19_20
     2472    Int            repFormatIdx = getUpdateRepFormatFlag() ?  getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ;
     2473    TComRepFormat* repFormat    = vps->getRepFormat( repFormatIdx );
     2474#else
    23552475    TComRepFormat* repFormat = vps->getRepFormat( vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) );
    23562476    if ( !getUpdateRepFormatFlag() )
    23572477    {       
     2478#endif
    23582479      setChromaFormatIdc( repFormat->getChromaFormatVpsIdc() );         
    23592480      //// ToDo: add when supported:
     
    23682489      setBitDepthC             ( repFormat->getBitDepthVpsChromaMinus8() + 8 );
    23692490      setQpBDOffsetC           ( (Int) (6* ( getBitDepthC() -8 ) ) );
     2491#if !H_MV_6_PS_REP_FORM_18_19_20
    23702492    }
    23712493    else
     2494#else
     2495    if ( getLayerId() > 0 && getUpdateRepFormatFlag() )
     2496#endif
    23722497    {
    23732498      assert( getChromaFormatIdc()      <=  repFormat->getChromaFormatVpsIdc()         );
     
    27152840Void TComSlice::markIvRefPicsAsUnused( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc )
    27162841{
    2717   // Fill targetDecLayerIdSet with all layers if empty.
     2842  // Fill targetDecLayerIdSet with all layers if empty (at encoder side)
    27182843  if (targetDecLayerIdSet.size() == 0 )   
    27192844  {
     
    27392864    {
    27402865      TComPic* pcPic = ivPicLists->getPic( targetDecLayerIdSet[ i ], curPoc );
     2866#if H_MV_LAYER_WISE_STARTUP
     2867      if ( pcPic )
     2868      {
     2869#endif
    27412870      if( pcPic->getSlice(0)->isReferenced() && pcPic->getSlice(0)->getTemporalLayerNonReferenceFlag() )
    27422871      {
     
    27612890      }
    27622891    }
     2892#if H_MV_LAYER_WISE_STARTUP
     2893      }
     2894#endif
    27632895  }
    27642896}
     
    28162948  return pcPic;
    28172949}
     2950
     2951
     2952#if H_MV_6_ILDDS_ILREFPICS_27_34
     2953Int  TComSlice::getRefLayerPicFlag( Int i )
     2954{
     2955  TComVPS* vps = getVPS();
     2956  Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) );
     2957
     2958  Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >=  getTLayer() )  &&
     2959    ( vps->getMaxTidIlRefPicsPlus1( refLayerIdx, vps->getLayerIdInVps( getLayerId() )) > getTLayer() );
     2960
     2961  return refLayerPicFlag;       
     2962}   
     2963
     2964Int TComSlice::getRefLayerPicIdc( Int j )
     2965
     2966  Int refLayerPicIdc = -1;
     2967  Int curj = 0;
     2968  for( Int i = 0;  i < getVPS()->getNumDirectRefLayers( getLayerId()) ; i++ )
     2969  {
     2970    if( getRefLayerPicFlag( i ) )
     2971    {
     2972      if ( curj == j )
     2973      {
     2974        refLayerPicIdc = i;         
     2975        break;
     2976      }
     2977      curj++;
     2978    }
     2979  }
     2980
     2981  assert( curj == j );
     2982  assert( refLayerPicIdc != -1 );
     2983  return refLayerPicIdc;
     2984}
     2985
     2986Int  TComSlice::getNumRefLayerPics( )
     2987
     2988  Int numRefLayerPics = 0;
     2989  for( Int i = 0;  i < getVPS()->getNumDirectRefLayers( getLayerId()) ; i++ )
     2990  {
     2991    numRefLayerPics += getRefLayerPicFlag( i );
     2992  }
     2993  return numRefLayerPics;
     2994}
     2995#endif
     2996
     2997
     2998
    28182999Int TComSlice::getNumActiveRefLayerPics()
    28193000{
     
    28263007  else if (getVPS()->getAllRefLayersActiveFlag() )
    28273008  {
     3009#if H_MV_6_ILDDS_ILREFPICS_27_34
     3010    numActiveRefLayerPics = getNumRefLayerPics();
     3011#else
    28283012    numActiveRefLayerPics = getVPS()->getNumDirectRefLayers( getLayerId() );
     3013#endif
    28293014  }
    28303015  else if ( !getInterLayerPredEnabledFlag() )
     
    28343019  else if( getVPS()->getMaxOneActiveRefLayerFlag() || getVPS()->getNumDirectRefLayers( getLayerId() ) == 1 )
    28353020  {
     3021#if H_MV_6_ILDDS_ILREFPICS_27_34
     3022    numActiveRefLayerPics = getRefLayerPicFlag( 0 ) ? 1 : 0;
     3023#else
    28363024    numActiveRefLayerPics = 1;
     3025#endif
    28373026  }
    28383027  else
     
    34343623TComVPSVUI::TComVPSVUI()
    34353624{
     3625#if H_MV_6_PS_O0223_29
     3626  m_crossLayerIrapAlignedFlag = true;
     3627#endif
    34363628  m_bitRatePresentVpsFlag = false;
    34373629  m_picRatePresentVpsFlag = false;
     
    34613653    }
    34623654  }
    3463 }
    3464 #endif
     3655#if H_MV_6_PS_O0118_33 
     3656  for ( Int i = 0; i < MAX_NUM_VIDEO_SIGNAL_INFO; i++ )
     3657  {
     3658    m_videoSignalInfo          [i] = NULL;     
     3659  }
     3660#endif
     3661
     3662#if H_MV_6_HRD_O0164_15
     3663  m_vpsVuiBspHrdPresentFlag = false;
     3664  m_vpsVuiBspHrdParameters  = new TComVpsVuiBspHrdParameters();
     3665#endif
     3666}
     3667
     3668#if H_MV_6_PS_O0118_33
     3669TComVPSVUI::~TComVPSVUI()
     3670{
     3671  for ( Int i = 0; i < MAX_NUM_VIDEO_SIGNAL_INFO; i++ )
     3672  {
     3673    if (m_videoSignalInfo[ i ] != NULL )      delete m_videoSignalInfo[ i ];   
     3674    m_videoSignalInfo    [ i ] = NULL;
     3675  }
     3676
     3677#if H_MV_6_HRD_O0164_15
     3678  if ( m_vpsVuiBspHrdParameters ) delete m_vpsVuiBspHrdParameters;
     3679  m_vpsVuiBspHrdParameters = NULL;
     3680#endif
     3681}
     3682#endif
     3683
     3684#if H_MV_6_PS_REP_FORM_18_19_20
     3685Void TComRepFormat::inferChromaAndBitDepth( TComRepFormat* prevRepFormat, Bool encoderFlag )
     3686{
     3687  if ( !encoderFlag )
     3688  {
     3689    setChromaAndBitDepthVpsPresentFlag( prevRepFormat->getChromaAndBitDepthVpsPresentFlag() );
     3690    setSeparateColourPlaneVpsFlag     ( prevRepFormat->getSeparateColourPlaneVpsFlag     () );
     3691    setBitDepthVpsLumaMinus8          ( prevRepFormat->getBitDepthVpsLumaMinus8          () );
     3692    setBitDepthVpsChromaMinus8        ( prevRepFormat->getBitDepthVpsChromaMinus8        () );
     3693  }
     3694  else
     3695  {
     3696    assert( getChromaAndBitDepthVpsPresentFlag() == prevRepFormat->getChromaAndBitDepthVpsPresentFlag() );
     3697    assert( getSeparateColourPlaneVpsFlag     () == prevRepFormat->getSeparateColourPlaneVpsFlag     () );
     3698    assert( getBitDepthVpsLumaMinus8          () == prevRepFormat->getBitDepthVpsLumaMinus8          () );
     3699    assert( getBitDepthVpsChromaMinus8        () == prevRepFormat->getBitDepthVpsChromaMinus8        () );
     3700}
     3701}
     3702#endif
     3703
     3704#if H_MV_6_HRD_O0164_15
     3705Void TComVpsVuiBspHrdParameters::checkLayerInBspFlag( TComVPS* vps, Int h )
     3706{
     3707  // It is a requirement of bitstream conformance that bitstream partition with index j shall not include
     3708  // direct or indirect reference layers of any layers in bitstream partition i for any values of i and j
     3709  // in the range of 0 to num_bitstream_partitions[ h ] – 1, inclusive, such that i is less than j.
     3710
     3711  for ( Int partJ = 0; partJ < getNumBitstreamPartitions( h ); partJ++ )
     3712  {       
     3713    for ( Int partI = 0; partI < partJ; partI++ )
     3714    {
     3715      for ( Int layerJ = 0; layerJ < vps->getMaxLayersMinus1(); layerJ++ )
     3716      {
     3717        if ( m_layerInBspFlag[ h ][partJ][layerJ ] )
     3718        {
     3719          for ( Int layerI = 0; layerI < vps->getMaxLayersMinus1(); layerI++ )
     3720          {
     3721            if ( m_layerInBspFlag[ h ][partI][layerI] )
     3722            {
     3723              assert( !vps->getInDirectDependencyFlag( layerI, layerJ ) );
     3724            }
     3725          }
     3726        }
     3727      }
     3728    }
     3729  }
     3730}
     3731#endif
     3732#endif
  • trunk/source/Lib/TLibCommon/TComSlice.h

    r724 r738  
    6262// ====================================================================================================================
    6363
     64#if H_MV_6_HRD_O0164_15
     65class TComVPS;
     66#endif
    6467/// Reference Picture Set class
    6568class TComReferencePictureSet
     
    403406
    404407#if H_MV
     408
     409#if H_MV_6_PS_O0118_33
     410class TComVideoSignalInfo
     411{
     412private:
     413  Int  m_videoVpsFormat;
     414  Bool m_videoFullRangeVpsFlag;
     415  Int  m_colourPrimariesVps;
     416  Int  m_transferCharacteristicsVps;
     417  Int  m_matrixCoeffsVps;
     418public:
     419  Void setVideoVpsFormat( Int  val ) { m_videoVpsFormat = val; }
     420  Int  getVideoVpsFormat(  ) { return m_videoVpsFormat; }
     421
     422  Void setVideoFullRangeVpsFlag( Bool flag ) { m_videoFullRangeVpsFlag = flag; }
     423  Bool getVideoFullRangeVpsFlag(  ) { return m_videoFullRangeVpsFlag; }
     424
     425  Void setColourPrimariesVps( Int  val ) { m_colourPrimariesVps = val; }
     426  Int  getColourPrimariesVps(  ) { return m_colourPrimariesVps; }
     427
     428  Void setTransferCharacteristicsVps( Int  val ) { m_transferCharacteristicsVps = val; }
     429  Int  getTransferCharacteristicsVps(  ) { return m_transferCharacteristicsVps; }
     430
     431  Void setMatrixCoeffsVps( Int  val ) { m_matrixCoeffsVps = val; }
     432  Int  getMatrixCoeffsVps(  ) { return m_matrixCoeffsVps; }
     433};
     434#endif
     435#if H_MV_6_HRD_O0164_15
     436class TComVpsVuiBspHrdParameters
     437{
     438private:
     439  Int  m_vpsNumBspHrdParametersMinus1;
     440  Bool m_bspCprmsPresentFlag[MAX_NUM_BSP_HRD_PARAMETERS];
     441  Int  m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1];
     442  Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS];
     443  Int  m_numBspSchedCombinations[MAX_VPS_OP_SETS_PLUS1];
     444  Int  m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
     445  Int  m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
     446  TComHRD* m_hrdParameters[MAX_NUM_BSP_HRD_PARAMETERS];
     447public:
     448
     449  Void setVpsNumBspHrdParametersMinus1( Int  val ) { m_vpsNumBspHrdParametersMinus1 = val; }
     450  Int  getVpsNumBspHrdParametersMinus1(  ) { return m_vpsNumBspHrdParametersMinus1; }
     451
     452  Void setBspCprmsPresentFlag( Int i, Bool flag ) { m_bspCprmsPresentFlag[i] = flag; }
     453  Bool getBspCprmsPresentFlag( Int i ) { return m_bspCprmsPresentFlag[i]; }
     454
     455  Void setNumBitstreamPartitions( Int h, Int  val ) { m_numBitstreamPartitions[h] = val; }
     456  Int  getNumBitstreamPartitions( Int h ) { return m_numBitstreamPartitions[h]; }
     457
     458  Void setLayerInBspFlag( Int h, Int i, Int j, Bool flag ) { m_layerInBspFlag[h][i][j] = flag; }
     459  Bool getLayerInBspFlag( Int h, Int i, Int j ) { return m_layerInBspFlag[h][i][j]; }
     460  Void checkLayerInBspFlag ( TComVPS* vps, Int h ); 
     461
     462  Void setNumBspSchedCombinations( Int h, Int  val ) { m_numBspSchedCombinations[h] = val; }
     463  Int  getNumBspSchedCombinations( Int h ) { return m_numBspSchedCombinations[h]; }
     464
     465  Void setBspCombHrdIdx( Int h, Int i, Int j, Int  val ) { m_bspCombHrdIdx[h][i][j] = val; }
     466  Int  getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; }
     467
     468  Void setBspCombSchedIdx( Int h, Int i, Int j, Int  val ) { m_bspCombSchedIdx[h][i][j] = val; }
     469  Int  getBspCombSchedIdx( Int h, Int i, Int j ) { return m_bspCombSchedIdx[h][i][j]; }
     470
     471  Void setHrdParametermeters( Int k, TComHRD* val  ) {  m_hrdParameters[k] = val; };
     472  TComHRD* getHrdParametermeters( Int k ) {  return m_hrdParameters[k]; };
     473};
     474
     475#endif
    405476class TComVPSVUI
    406477{
    407478private:
     479#if H_MV_6_PS_O0223_29
     480  Bool m_crossLayerPicTypeAlignedFlag;
     481  Bool m_crossLayerIrapAlignedFlag;
     482#endif
    408483  Bool m_bitRatePresentVpsFlag;
    409484  Bool m_picRatePresentVpsFlag;
     
    414489  Int  m_constantPicRateIdc          [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
    415490  Int  m_avgPicRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     491#if H_MV_6_O0226_37
     492  Bool m_tilesNotInUseFlag;
     493  Bool m_tilesInUseFlag              [MAX_NUM_LAYERS];
     494  Bool m_loopFilterNotAcrossTilesFlag[MAX_NUM_LAYERS];
     495#endif 
    416496  Bool m_tileBoundariesAlignedFlag   [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     497#if H_MV_6_O0226_37
     498  Bool m_wppNotInUseFlag;
     499  Bool m_wppInUseFlag                [MAX_NUM_LAYERS];
     500#endif
    417501  Bool m_ilpRestrictedRefLayersFlag;
    418502  Int  m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    419503  Bool m_ctuBasedOffsetEnabledFlag   [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    420504  Int  m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     505#if H_MV_6_PS_O0118_33
     506  Bool m_videoSignalInfoIdxPresentFlag;
     507  Int  m_vpsNumVideoSignalInfoMinus1;
     508  TComVideoSignalInfo* m_videoSignalInfo[MAX_NUM_VIDEO_SIGNAL_INFO];   
     509  Int  m_vpsVideoSignalInfoIdx       [MAX_NUM_VIDEO_SIGNAL_INFO];
     510#endif
     511#if H_MV_6_HRD_O0164_15
     512  Bool m_vpsVuiBspHrdPresentFlag;
     513  TComVpsVuiBspHrdParameters* m_vpsVuiBspHrdParameters;
     514#endif
    421515
    422516public:
    423   TComVPSVUI();;
     517  TComVPSVUI();
     518  ~TComVPSVUI();
     519#if H_MV_6_PS_O0223_29
     520  Void setCrossLayerPicTypeAlignedFlag( Bool flag ) { m_crossLayerPicTypeAlignedFlag = flag; }
     521  Bool getCrossLayerPicTypeAlignedFlag(  ) { return m_crossLayerPicTypeAlignedFlag; }
     522
     523  Void setCrossLayerIrapAlignedFlag( Bool flag ) { m_crossLayerIrapAlignedFlag = flag; }
     524  Bool getCrossLayerIrapAlignedFlag(  ) { return m_crossLayerIrapAlignedFlag; }
     525#endif
    424526
    425527  Void setBitRatePresentVpsFlag( Bool flag ) { m_bitRatePresentVpsFlag = flag; }
     
    447549  Int  getAvgPicRate( Int i, Int j ) { return m_avgPicRate[i][j]; }
    448550
     551#if H_MV_6_O0226_37
     552  Void setTilesNotInUseFlag( Bool flag ) { m_tilesNotInUseFlag = flag; }
     553  Bool getTilesNotInUseFlag(  ) { return m_tilesNotInUseFlag; }
     554
     555  Void setTilesInUseFlag( Int i, Bool flag ) { m_tilesInUseFlag[i] = flag; }
     556  Bool getTilesInUseFlag( Int i ) { return m_tilesInUseFlag[i]; }
     557
     558  Void setLoopFilterNotAcrossTilesFlag( Int i, Int  val ) { m_loopFilterNotAcrossTilesFlag[i] = val; }
     559  Bool getLoopFilterNotAcrossTilesFlag( Int i ) { return m_loopFilterNotAcrossTilesFlag[i]; }
     560#endif
     561
    449562  Void setTileBoundariesAlignedFlag( Int i, Int j, Bool flag ) { m_tileBoundariesAlignedFlag[i][j] = flag; }
    450563  Bool getTileBoundariesAlignedFlag( Int i, Int j ) { return m_tileBoundariesAlignedFlag[i][j]; }
    451564
     565#if H_MV_6_O0226_37
     566  Void setWppNotInUseFlag( Bool flag ) { m_wppNotInUseFlag = flag; }
     567  Bool getWppNotInUseFlag(  ) { return m_wppNotInUseFlag; }
     568
     569  Void setWppInUseFlag( Int i, Bool flag ) { m_wppInUseFlag[i] = flag; }
     570  Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; }
     571#endif
     572
    452573  Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; }
    453574  Bool getIlpRestrictedRefLayersFlag(  ) { return m_ilpRestrictedRefLayersFlag; }
     
    462583  Int  getMinHorizontalCtuOffsetPlus1( Int i, Int j ) { return m_minHorizontalCtuOffsetPlus1[i][j]; }
    463584
     585#if H_MV_6_PS_O0118_33
     586  Void setVideoSignalInfoIdxPresentFlag( Bool flag ) { m_videoSignalInfoIdxPresentFlag = flag; }
     587  Bool getVideoSignalInfoIdxPresentFlag(  ) { return m_videoSignalInfoIdxPresentFlag; }
     588
     589  Void    setVideoSignalInfo( Int i, TComVideoSignalInfo* val )                        { m_videoSignalInfo[i] = val;  } 
     590  TComVideoSignalInfo* getVideoSignalInfo( Int i )                                     { return m_videoSignalInfo[i]; }
     591
     592  Void setVpsNumVideoSignalInfoMinus1( Int  val ) { m_vpsNumVideoSignalInfoMinus1 = val; }
     593  Int  getVpsNumVideoSignalInfoMinus1(  ) { return m_vpsNumVideoSignalInfoMinus1; }
     594
     595  Void setVpsVideoSignalInfoIdx( Int i, Int  val ) { m_vpsVideoSignalInfoIdx[i] = val; }
     596  Int  getVpsVideoSignalInfoIdx( Int i ) { return m_vpsVideoSignalInfoIdx[i]; }
     597#endif
     598
     599#if H_MV_6_HRD_O0164_15
     600  Void setVpsVuiBspHrdPresentFlag( Bool flag ) { m_vpsVuiBspHrdPresentFlag = flag; }
     601  Bool getVpsVuiBspHrdPresentFlag(  ) { return m_vpsVuiBspHrdPresentFlag; }
     602
     603  Void setVpsVuiBspHrdParameters( TComVpsVuiBspHrdParameters* val) {  m_vpsVuiBspHrdParameters = val; }
     604  TComVpsVuiBspHrdParameters* getVpsVuiBspHrdParameters(  ) { return m_vpsVuiBspHrdParameters; }
     605#endif
    464606};
    465607
     
    467609{
    468610private:
     611#if H_MV_6_PS_REP_FORM_18_19_20
     612  Bool m_chromaAndBitDepthVpsPresentFlag;
     613#endif
    469614  Int  m_chromaFormatVpsIdc;
    470615  Bool m_separateColourPlaneVpsFlag;
     
    477622  TComRepFormat() { }; 
    478623
     624#if H_MV_6_PS_REP_FORM_18_19_20
     625  Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; }
     626  Bool getChromaAndBitDepthVpsPresentFlag(  ) { return m_chromaAndBitDepthVpsPresentFlag; }
     627  Void checkChromaAndBitDepthVpsPresentFlag( Int i ) { assert( i != 0 || m_chromaAndBitDepthVpsPresentFlag ); } // The value of chroma_and_bit_depth_vps_present_flag of the first rep_format( ) syntax structure in the VPS shall be equal to 1. 
     628  Void inferChromaAndBitDepth( TComRepFormat* prevRepFormat, Bool encoderFlag );
     629#endif
     630
    479631  Void setChromaFormatVpsIdc( Int  val ) { m_chromaFormatVpsIdc = val; }
    480632  Int  getChromaFormatVpsIdc(  ) { return m_chromaFormatVpsIdc; }
     
    494646  Void setBitDepthVpsChromaMinus8( Int  val ) { m_bitDepthVpsChromaMinus8 = val; }
    495647  Int  getBitDepthVpsChromaMinus8(  ) { return m_bitDepthVpsChromaMinus8; }
     648};
     649#endif
     650
     651#if H_MV_6_HRD_O0217_13
     652class TComDpbSize
     653{
     654private:
     655  Bool  m_subLayerFlagInfoPresentFlag[MAX_VPS_OUTPUTLAYER_SETS];
     656  Bool  m_subLayerDpbInfoPresentFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
     657  Int   m_maxVpsDecPicBufferingMinus1[MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYER_IDS][MAX_TLAYER];;
     658  Int   m_maxVpsNumReorderPics       [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
     659  Int   m_maxVpsLatencyIncreasePlus1 [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
     660
     661public:
     662  TComDpbSize( )
     663  {
     664    for (Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++ )
     665    {     
     666      m_subLayerFlagInfoPresentFlag[i]  = false;
     667
     668      for (Int j = 0; j < MAX_TLAYER; j++  )
     669      {       
     670        m_subLayerDpbInfoPresentFlag [i][j] = ( j == 0) ;
     671        m_maxVpsNumReorderPics       [i][j] = 0;
     672        m_maxVpsLatencyIncreasePlus1 [i][j] = 0;
     673
     674        for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ )
     675        {
     676          m_maxVpsDecPicBufferingMinus1[i][k][j] = 0;
     677        }
     678      }
     679    } 
     680  } 
     681
     682  Void setSubLayerFlagInfoPresentFlag( Int i, Bool flag ) { m_subLayerFlagInfoPresentFlag[i] = flag; }
     683  Bool getSubLayerFlagInfoPresentFlag( Int i ) { return m_subLayerFlagInfoPresentFlag[i]; }
     684
     685  Void setSubLayerDpbInfoPresentFlag( Int i, Int j, Bool flag ) { m_subLayerDpbInfoPresentFlag[i][j] = flag; }
     686  Bool getSubLayerDpbInfoPresentFlag( Int i, Int j ) { return m_subLayerDpbInfoPresentFlag[i][j]; }
     687
     688  Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int  val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; }
     689  Int  getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; }
     690
     691  Void setMaxVpsNumReorderPics( Int i, Int j, Int  val ) { m_maxVpsNumReorderPics[i][j] = val; }
     692  Int  getMaxVpsNumReorderPics( Int i, Int j ) { return m_maxVpsNumReorderPics[i][j]; }
     693
     694  Void setMaxVpsLatencyIncreasePlus1( Int i, Int j, Int  val ) { m_maxVpsLatencyIncreasePlus1[i][j] = val; }
     695  Int  getMaxVpsLatencyIncreasePlus1( Int i, Int j ) { return m_maxVpsLatencyIncreasePlus1[i][j]; }
    496696};
    497697#endif
     
    547747  Int         m_layerIdInNuh             [MAX_NUM_LAYER_IDS];
    548748  Int         m_dimensionId              [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 
     749
     750#if H_MV_6_PS_O0109_22
     751  Int         m_viewIdLen;
     752#else
    549753  Int         m_viewIdLenMinus1;
     754#endif
    550755  Int         m_viewIdVal                [MAX_NUM_LAYERS];
    551756  Bool        m_directDependencyFlag     [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
     757#if H_MV_6_ILDSD_O0120_26
     758  Bool        m_vpsSubLayersMaxMinus1PresentFlag;
     759  Int         m_subLayersVpsMaxMinus1    [MAX_NUM_LAYERS];
     760#endif
    552761  Bool        m_maxTidRefPresentFlag;
     762#if H_MV_6_ILDDS_O0225_30
     763  Int         m_maxTidIlRefPicsPlus1     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     764#else
    553765  Int         m_maxTidIlRefPicPlus1      [MAX_NUM_LAYERS];
     766#endif
    554767  Bool        m_allRefLayersActiveFlag;
    555768  Int         m_vpsNumberLayerSetsMinus1;
     
    559772  Bool        m_moreOutputLayerSetsThanDefaultFlag;
    560773  Int         m_numAddOutputLayerSetsMinus1;   
     774#if H_MV_6_PS_0109_25
     775  Int         m_defaultOneTargetOutputLayerIdc;
     776#else
    561777  Bool        m_defaultOneTargetOutputLayerFlag;
     778#endif
    562779  Int         m_outputLayerSetIdxMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
    563780  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
    564781  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
     782#if H_MV_6_GEN_0153_28
     783  Bool        m_altOutputLayerFlag;
     784#endif
    565785  Bool        m_repFormatIdxPresentFlag;
    566786  Int         m_vpsNumRepFormatsMinus1;
     
    568788  TComRepFormat* m_repFormat             [MAX_NUM_LAYERS];
    569789  Bool        m_maxOneActiveRefLayerFlag;       
     790#if H_MV_6_MISC_O0062_31
     791  Bool        m_pocLsbNotPresentFlag     [MAX_NUM_LAYERS];
     792#endif
     793
     794#if H_MV_6_HRD_O0217_13
     795  TComDpbSize* m_dpbSize;
     796#endif
     797#if !H_MV_6_PS_O0223_29       
    570798  Bool        m_crossLayerIrapAlignedFlag;
     799#endif
    571800  Int         m_directDepTypeLenMinus2;         
     801#if H_MV_6_PS_O0096_21
     802  Bool        m_defaultDirectDependencyFlag;
     803  Int         m_defaultDirectDependencyType;
     804#endif
    572805  Bool        m_vpsVuiPresentFlag;
    573806  TComVPSVUI* m_vpsVUI;
     
    588821  Int         m_motionPredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    589822  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
     823 
     824#if H_MV_6_HRD_O0217_13
     825  std::vector< std::vector< Int> >       m_targetDecLayerIdLists;   //[TargetOptLayerSetIdx][i]
     826  std::vector< std::vector< Int> >       m_targetOptLayerIdLists;
     827  std::vector< std::vector< Int> >       m_layerSetLayerIdList;
     828#endif
     829
     830
    590831  Int         xGetDimBitOffset( Int j );
    591832 
     
    649890  UInt    getMaxTLayers  ()                   { return m_uiMaxTLayers;   }
    650891  Void    setMaxTLayers  (UInt t)             { m_uiMaxTLayers = t; }
    651  
     892#if H_MV_6_HRD_O0164_15
     893  UInt    getMaxSubLayersMinus1()             { return m_uiMaxTLayers - 1;  }  // For consistency with draft spec
     894#endif
    652895#if H_MV   
    653896  UInt    getMaxLayersMinus1()                { return m_uiMaxLayersMinus1;  };
     
    724967  Int     getDimensionId( Int layerIdInVps, Int scalIdx )                  { return m_dimensionId[layerIdInVps][scalIdx]; }
    725968
     969#if H_MV_6_PS_O0109_22
     970  Void    setViewIdLen( Int  val )                                         { m_viewIdLen = val; }
     971  Int     getViewIdLen(  )                                                 { return m_viewIdLen; }
     972#else
    726973  Void    setViewIdLenMinus1( Int  val )                                   { m_viewIdLenMinus1 = val; }
    727974  Int     getViewIdLenMinus1(  )                                           { return m_viewIdLenMinus1; }
     975#endif
    728976
    729977  Void    setViewIdVal( Int viewOrderIndex, Int  val )                     { m_viewIdVal[viewOrderIndex] = val; }
     
    731979  Void    setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val;  }
    732980  Bool    getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps )           { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; }
    733 
     981#if H_MV_6_ILDSD_O0120_26
     982  Void    setVpsSubLayersMaxMinus1PresentFlag( Bool flag )                 { m_vpsSubLayersMaxMinus1PresentFlag = flag; }
     983  Bool    getVpsSubLayersMaxMinus1PresentFlag(  )                          { return m_vpsSubLayersMaxMinus1PresentFlag; }
     984  Void    setSubLayersVpsMaxMinus1( Int i, Int  val )                      { m_subLayersVpsMaxMinus1[i] = val; }
     985  Int     getSubLayersVpsMaxMinus1( Int i )                                { return m_subLayersVpsMaxMinus1[i]; }
     986  Void    checkSubLayersVpsMaxMinus1( Int i )                              { assert( m_subLayersVpsMaxMinus1[i] >= 0 && m_subLayersVpsMaxMinus1[i] <= m_uiMaxTLayers - 1 ); }
     987#endif
    734988  Void    setMaxTidRefPresentFlag( Bool flag )                             { m_maxTidRefPresentFlag = flag; }
    735989  Bool    getMaxTidRefPresentFlag(  )                                      { return m_maxTidRefPresentFlag; }
     990#if H_MV_6_ILDDS_O0225_30
     991  Void    setMaxTidIlRefPicsPlus1( Int i, Int j, Int  val )                { m_maxTidIlRefPicsPlus1[i][j] = val; }
     992  Int     getMaxTidIlRefPicsPlus1( Int i, Int j )                          { return m_maxTidIlRefPicsPlus1[i][j]; }
     993#else
    736994  Void    setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val )              { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val;  }
    737995  Int     getMaxTidIlRefPicPlus1( Int layerIdInVps )                       { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; }
     996#endif
    738997  Void    setAllRefLayersActiveFlag( Bool flag )                           { m_allRefLayersActiveFlag = flag; }
    739998  Bool    getAllRefLayersActiveFlag(  )                                    { return m_allRefLayersActiveFlag; }
     
    7491008  Void    setProfileRefMinus1( Int profileTierLevelIdx, Int val )          { m_profileRefMinus1[ profileTierLevelIdx ] = val;  }
    7501009  Int     getProfileRefMinus1( Int profileTierLevelIdx )                   { return m_profileRefMinus1[ profileTierLevelIdx ]; }
    751 
     1010#if H_MV_6_PS_O0109_23
     1011  Void    checkProfileRefMinus1( Int i )                                   { assert( getProfileRefMinus1( i ) + 1 <= i ); };  //  The value of profile_ref_minus1[ i ] + 1 shall be less than or equal to i.
     1012#endif
    7521013  Void    setMoreOutputLayerSetsThanDefaultFlag( Bool flag )               { m_moreOutputLayerSetsThanDefaultFlag = flag; }
    7531014  Bool    getMoreOutputLayerSetsThanDefaultFlag()                          { return m_moreOutputLayerSetsThanDefaultFlag; }
     
    7561017  Int     getNumAddOutputLayerSetsMinus1( )                                { return m_numAddOutputLayerSetsMinus1; }
    7571018 
     1019#if H_MV_6_PS_0109_25 
     1020  Void    setDefaultOneTargetOutputLayerIdc( Int  val )                    { m_defaultOneTargetOutputLayerIdc = val; }
     1021  Int     getDefaultOneTargetOutputLayerIdc(  )                            { return m_defaultOneTargetOutputLayerIdc; }
     1022  Void    checkDefaultOneTargetOutputLayerIdc( )                           { assert( m_defaultOneTargetOutputLayerIdc >= 0 && m_defaultOneTargetOutputLayerIdc <= 1 ); }
     1023#else
    7581024  Void    setDefaultOneTargetOutputLayerFlag( Bool flag )                  { m_defaultOneTargetOutputLayerFlag = flag; }
    7591025  Bool    getDefaultOneTargetOutputLayerFlag( )                            { return m_defaultOneTargetOutputLayerFlag; }
     1026#endif
    7601027 
    7611028  Void    setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val )        { m_outputLayerSetIdxMinus1[ outLayerSetIdx ]  = val; }
     
    7641031  Void    setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag )       { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; }
    7651032  Bool    getOutputLayerFlag( Int outLayerSetIdx, Int i )                  { return m_outputLayerFlag[ outLayerSetIdx ][ i ]; }
     1033#if H_MV_6_HRD_O0217_13
     1034  Bool    inferOutputLayerFlag( Int layerSetIdx, Int i )                   { return ( getDefaultOneTargetOutputLayerIdc( ) == 0 || ( ( getDefaultOneTargetOutputLayerIdc( ) == 1 ) && ( i == m_layerSetLayerIdList[layerSetIdx].size() - 1  ) ));  }
     1035#endif
    7661036
    7671037  Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx  = val ]; }
    7681038  Int     getProfileLevelTierIdx( Int outLayerSetIdx )                     { return m_profileLevelTierIdx[ outLayerSetIdx ]; }
     1039#if H_MV_6_GEN_0153_28
     1040  Void    setAltOutputLayerFlag( Bool flag )                               { m_altOutputLayerFlag = flag; }
     1041  Bool    getAltOutputLayerFlag(  )                                        { return m_altOutputLayerFlag; }
     1042#endif
    7691043
    7701044  Void    setRepFormatIdxPresentFlag( Bool flag )                          { m_repFormatIdxPresentFlag = flag; }
     
    7811055  Void    setMaxOneActiveRefLayerFlag( Bool flag)                          { m_maxOneActiveRefLayerFlag = flag; }
    7821056  Bool    getMaxOneActiveRefLayerFlag( )                                   { return m_maxOneActiveRefLayerFlag; }
     1057
     1058#if H_MV_6_HRD_O0217_13
     1059  Void    setDpbSize( TComDpbSize* val )                                   { assert( m_dpbSize != 0 ); m_dpbSize = val; }
     1060  TComDpbSize* getDpbSize( )                                               { return m_dpbSize;}
     1061#endif
     1062
     1063#if H_MV_6_MISC_O0062_31
     1064  Void    setPocLsbNotPresentFlag( Int i, Bool flag )                      { m_pocLsbNotPresentFlag[i] = flag; }
     1065  Bool    getPocLsbNotPresentFlag( Int i )                                 { return m_pocLsbNotPresentFlag[i]; }
     1066#endif
     1067#if !H_MV_6_PS_O0223_29 
    7831068  Void    setCrossLayerIrapAlignedFlag( Bool flag )                        { m_crossLayerIrapAlignedFlag = flag; }
    7841069  Bool    getCrossLayerIrapAlignedFlag(  )                                 { return m_crossLayerIrapAlignedFlag; }
     1070#endif
    7851071  Void    setDirectDepTypeLenMinus2( Int val)                              { m_directDepTypeLenMinus2 = val; }
    7861072  Int     getDirectDepTypeLenMinus2( )                                     { return m_directDepTypeLenMinus2; }
    7871073
     1074#if H_MV_6_PS_O0096_21
     1075  Void    setDefaultDirectDependencyFlag( Bool flag )                      { m_defaultDirectDependencyFlag = flag; }
     1076  Bool    getDefaultDirectDependencyFlag(  )                               { return m_defaultDirectDependencyFlag; }
     1077
     1078  Void    setDefaultDirectDependencyType( Int  val )                       { m_defaultDirectDependencyType = val; }
     1079  Int     getDefaultDirectDependencyType(  )                               { return m_defaultDirectDependencyType; }
     1080#endif
    7881081  Void    setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; }
    7891082  Int     getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps)   { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; }
     
    7971090
    7981091  Int     getScalabilityId ( Int layerIdInVps, ScalabilityType scalType );
     1092#if H_MV_6_FIX_GET_VIEW_ID
     1093  Int     getViewId        ( Int layerIdInNuh )                            { return m_viewIdVal[ getViewIndex( layerIdInNuh )]; }
     1094#else
    7991095  Int     getViewId        ( Int layerIdInNuh )                            { return m_viewIdVal[ getViewIndex( getLayerIdInVps( layerIdInNuh) )]; }
     1096#endif
    8001097  Void    setRefLayers();
    8011098
     
    8101107Int     getProfileLevelTierIdxLen()                                      { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
    8111108
    812   Int     getNumLayersInIdList              ( Int lsIdx );;
     1109  Int     getNumLayersInIdList ( Int lsIdx );
     1110
     1111#if H_MV_6_HRD_O0217_13
     1112  Int     getNumOutputLayerSets() ;   
     1113  Int     getNumSubDpbs( Int i )                                           { return getNumLayersInIdList( i ); }; 
     1114  Bool    isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh );   
     1115#if H_MV_6_HRD_O0217_13
     1116  Void    deriveLayerSetLayerIdList();
     1117  Void    deriveTargetLayerIdLists();
     1118  std::vector<Int> getTargetDecLayerIdList( Int targetOptLayerSetIdx )     { return m_targetDecLayerIdLists[targetOptLayerSetIdx]; };
     1119  std::vector<Int> getTargetOptLayerIdList( Int targetOptLayerSetIdx )     { return m_targetDecLayerIdLists[targetOptLayerSetIdx]; };
     1120#endif
     1121#endif
     1122
    8131123
    8141124  // inference
     
    10961406  TimingInfo* getTimingInfo() { return &m_timingInfo; }
    10971407
     1408#if H_MV_6_PS_O0118_33
     1409  Void inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr )
     1410  {
     1411    if ( layerIdCurr == 0 || !vps->getVpsVuiPresentFlag() )
     1412    {
     1413      return;
     1414    }
     1415
     1416    TComVPSVUI* vpsVUI = vps->getVPSVUI();
     1417    assert( vpsVUI != NULL ); 
     1418
     1419    TComVideoSignalInfo* videoSignalInfo = vpsVUI->getVideoSignalInfo( vpsVUI->getVpsVideoSignalInfoIdx( vps->getLayerIdInVps( layerIdCurr ) ) );
     1420    assert( videoSignalInfo != NULL );
     1421
     1422    setVideoFormat            ( videoSignalInfo->getVideoVpsFormat            () );
     1423    setVideoFullRangeFlag     ( videoSignalInfo->getVideoFullRangeVpsFlag     () );
     1424    setColourPrimaries        ( videoSignalInfo->getColourPrimariesVps        () );
     1425    setTransferCharacteristics( videoSignalInfo->getTransferCharacteristicsVps() );
     1426    setMatrixCoefficients     ( videoSignalInfo->getMatrixCoeffsVps           () );     
     1427  }
     1428#endif
    10981429};
    10991430
     
    11811512  TComVPS*    m_pcVPS;
    11821513  // SPS
     1514#if H_MV_6_PSEM_O0142_3
     1515  Bool        m_spsExtensionFlag;
     1516  Bool        m_spsExtensionTypeFlag[PS_EX_T_MAX_NUM];
     1517#endif
    11831518  Bool        m_spsInferScalingListFlag;
    11841519  Int         m_spsScalingListRefLayerId;
    11851520  Bool        m_updateRepFormatFlag;
     1521#if H_MV_6_PS_REP_FORM_18_19_20 
     1522  Int         m_spsRepFormatIdx;
     1523#endif
    11861524  // SPS Extension
    11871525  Bool        m_interViewMvVertConstraintFlag;
     1526#if H_MV_6_SHVC_O0098_36
     1527  Int         m_numScaledRefLayerOffsets;
     1528  Int         m_scaledRefLayerId          [MAX_NUM_SCALED_REF_LAYERS];
     1529  Int         m_scaledRefLayerLeftOffset  [MAX_NUM_LAYERS];
     1530  Int         m_scaledRefLayerTopOffset   [MAX_NUM_LAYERS];
     1531  Int         m_scaledRefLayerRightOffset [MAX_NUM_LAYERS];
     1532  Int         m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS];
     1533#endif
    11881534#endif
    11891535#if H_3D
     
    13221668  TComPTL* getPTL()     { return &m_pcPTL; }
    13231669#if H_MV
     1670#if H_MV_6_PSEM_O0142_3
     1671  Void setSpsExtensionFlag( Bool flag ) { m_spsExtensionFlag = flag; }
     1672  Bool getSpsExtensionFlag( )  { return m_spsExtensionFlag; }
     1673
     1674  Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; }
     1675  Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; }
     1676#endif
    13241677  Void      setVPS          ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; }
    13251678  TComVPS*  getVPS          () { return m_pcVPS; }
     
    13331686  Void setUpdateRepFormatFlag( Bool flag )     { m_updateRepFormatFlag = flag; }
    13341687  Bool getUpdateRepFormatFlag(  )              { return m_updateRepFormatFlag; }
     1688#if H_MV_6_PS_REP_FORM_18_19_20
     1689  Void setSpsRepFormatIdx( Int  val )          { m_spsRepFormatIdx = val; }
     1690  Int  getSpsRepFormatIdx(  )                  { return m_spsRepFormatIdx; }
     1691#endif
    13351692  // SPS Extension
    13361693  Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; }
    13371694  Bool getInterViewMvVertConstraintFlag()         { return m_interViewMvVertConstraintFlag;}
     1695
     1696#if H_MV_6_SHVC_O0098_36
     1697  Void setNumScaledRefLayerOffsets( Int  val )    { m_numScaledRefLayerOffsets = val; }
     1698  Int  getNumScaledRefLayerOffsets(  )            { return m_numScaledRefLayerOffsets; }
     1699
     1700  Void setScaledRefLayerId( Int i, Int  val )     { m_scaledRefLayerId[i] = val; }
     1701  Int  getScaledRefLayerId( Int i )               { return m_scaledRefLayerId[i]; }
     1702
     1703  Void setScaledRefLayerLeftOffset( Int j, Int  val ) { m_scaledRefLayerLeftOffset[j] = val; }
     1704  Int  getScaledRefLayerLeftOffset( Int j )           { return m_scaledRefLayerLeftOffset[j]; }
     1705
     1706  Void setScaledRefLayerTopOffset( Int j, Int  val )  { m_scaledRefLayerTopOffset[j] = val; }
     1707  Int  getScaledRefLayerTopOffset( Int j )            { return m_scaledRefLayerTopOffset[j]; }
     1708
     1709  Void setScaledRefLayerRightOffset( Int j, Int  val ) { m_scaledRefLayerRightOffset[j] = val; }
     1710  Int  getScaledRefLayerRightOffset( Int j )           { return m_scaledRefLayerRightOffset[j]; }
     1711
     1712  Void setScaledRefLayerBottomOffset( Int j, Int  val ) { m_scaledRefLayerBottomOffset[j] = val; }
     1713  Int  getScaledRefLayerBottomOffset( Int j )           { return m_scaledRefLayerBottomOffset[j]; }
     1714#endif
    13381715  // Inference
    13391716  Void inferRepFormat( TComVPS* vps, Int layerIdCurr );
     
    17362113// Additional slice header syntax elements
    17372114  Bool       m_pocResetFlag;
     2115#if H_MV_6_RALS_O0149_11
     2116  Bool       m_crossLayerBlaFlag;
     2117#endif
    17382118  Bool       m_discardableFlag;
    17392119  Bool       m_interLayerPredEnabledFlag;
     
    20732453// Additional slice header syntax elements
    20742454
     2455#if H_MV_6_RALS_O0149_11
     2456  Void setCrossLayerBlaFlag( Bool flag ) { m_crossLayerBlaFlag = flag; }
     2457  Bool getCrossLayerBlaFlag(  ) { return m_crossLayerBlaFlag; }
     2458  Void checkCrossLayerBlaFlag ( )
     2459  {
     2460    // cross_layer_bla_flag shall be equal to 0 for pictures with nal_unit_type not equal to IDR_W_RADL or IDR_N_LP or with nuh_layer_id not equal to 0.
     2461    if ( getLayerId() != 0 || getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_W_RADL || getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP )
     2462    {
     2463      assert( m_crossLayerBlaFlag == 0 );
     2464    }
     2465  }
     2466#endif
     2467
    20752468  Void setPocResetFlag( Bool flag ) { m_pocResetFlag = flag; }
    20762469  Bool getPocResetFlag(  ) { return m_pocResetFlag; }
     
    20912484  Int  getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
    20922485  Int  getInterLayerPredLayerIdcLen    ( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
     2486
     2487#if H_MV_6_ILDDS_ILREFPICS_27_34
     2488  Int  getRefLayerPicFlag( Int i );
     2489  Int  getRefLayerPicIdc ( Int j );
     2490  Int  getNumRefLayerPics( );
     2491#endif
    20932492
    20942493  Int  getNumActiveRefLayerPics( );
  • trunk/source/Lib/TLibCommon/TypeDef.h

    r735 r738  
    243243#endif
    244244
    245 
     245/////////////////////////////////////////////////////////////////////////////////////////
     246///////////////////////////////////   HTM-9.2 Integrations //////////////////////////////
     247/////////////////////////////////////////////////////////////////////////////////////////
     248
     249// !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!!
     250// !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!!
     251// !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!!
     252// !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!!
     253// !!! PLEASE PUT MACROS RELATED TO HTM-9.2 INTEGRATIONS HERE !!!
     254
     255/////////////////////////////////////////////////////////////////////////////////////////
     256///////////////////////////////////   HTM-9.1 Integrations //////////////////////////////
     257/////////////////////////////////////////////////////////////////////////////////////////
     258
     259#define H_MV_FIX_TRACE_FILE                     1  // Fix linux compilation error related const char conversion
     260
     261#define H_MV_LAYER_WISE_STARTUP                 1  // Basic version of layer wise startup.
     262#define H_MV_FIX_SKIP_PICTURES                  1  // Fix related to skipping pictures.
     263#define H_MV_6_HRD_O0164_15                     1  // (HRD/O0164/Multilayer HRD) #15 Decision: Adopt, modified as follows: It was suggested to constrain the stalling based on the relative cpb removal times, which must be in decoding order. The "du_based_bpb_sync_flag" is not needed, in view of this. SEI in the highest layer of the layer set or (inclusive "or") VPS VUI is used to carry the parameters (at encoder discretion). SEI in higher layer and SEI in VUI do not need to repeat information available in some lower layer. Shall be after APS SEI and buffering period SEI and before all other SEI of all layers except other HRD related SEI.
     264#define H_MV_6_HRD_O0217_13                     1  // (HRD/O0217/Sub-DPB based DPB operations) #13 Decision: Adopt – Specify a separate DPB capacity for each layer – no sharing of capacity across layers – each layer has its own parameters (max pictures, max latency, max reordering). This proposal would specify distinct parameters for each "output layer set" and to change the definition of an operation point to be specific to an output layer set instead of a 'layer set". Decision: Adopted this aspect as well.
     265#define H_MV_6_SHVC_O0098_36                    1  // (SHVC/O0098/Scaled ref layer offset) #36 Modify signalling of scaled reference layer offsets to allow signalling of any lower layer, rather than just a direct reference layer, in order to enable alignment of auxiliary pictures. In further JCT-VC and JCT-3V discussion, it was also agreed to use the same offset signalling for MV-HEVC as well as SHVC
     266#define H_MV_6_GEN_0153_28                      1  //(Gen/O0153/output highest layer) #28 Add a flag in the VPS to indicate if startup process should output the highest available layer if the target output layer is not available.
     267#define H_MV_6_PS_0109_25                       1  //XXX(PS/O0109/default_one_target_output_layer_idc) #25 To change default_one_target_output_layer_flag to a two-bit default_one_target_output_layer_idc, and reserve the values 2 and 3
     268#define H_MV_6_O0226_37                         1  //(VUI/O0226/Mod tile WPP) #37 Modifications to the VUI indicators of tile and WPP alignment related syntax elements, from the r1.
     269#define H_MV_6_RALS_O0149_11                    1  //XXX (RALS/O0149/Prop2): #11 Proposal: A new slice_reserved_flag is taken into use to indicate if a base-layer IDR picture initiates the layer-wise start-up process. Decision: Adopt (the bit should not be required to be present; if present should be the bit after the discardable_flag, and discardable_flag should be the first one of the three, and the poc reset flag is not required to be present).
     270#define H_MV_6_PSEM_O0142_3                     1  // (PSEM/O0142/Conditional extension syntax) #3 Adopt JCTVC-O0142 (as a structure to be used to switch whatever extensions we define in SPS, not necessarily committing to having these extensions be separate for each extension, but the current plan unless decided otherwise is to use one flag for range extensions syntax presence and one flag for SHVC+MV-HEVC extension syntax presence)
     271#define H_MV_6_FIX_GET_VIEW_ID                  1  // Fix get view id
     272#define H_MV_6_LAYER_ID_32                      1  // (Gen/O0137,O0200,O0223,Layer id) #32 Add (editorial equivalent of) "The value of nuh_layer_id shall be in the range of 0 to 62. The value of 63 for nuh_layer_id is reserved for future use by ITU-T | ISO/IEC. Decoders shall ignore all data that follow the value 63 for nuh_layer_id in a NAL unit." and specify that vps_max_layers_minus1 shall not be equal to 63, but decoders shall allow that value to appear in the bitstream. Specify that the value 63 is interpreted the same as the value 62 (e.g., MaxLayersMinus1 = Min( 62, vps_max_layers_minus1) and subsequently refer to MaxLayersMinus1 instead of vps_max_layers_minus1)
     273#define H_MV_6_PS_O0118_33                      1  // (PS/O0118/visual signal info in vui per layer) #33 Add visual signal information (video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs) per layer to the VPS VUI, from v2 version of JCTVC-O0118.
     274#define H_MV_6_POC_31_35_38                     1  //XXX  Various related to POC
     275                                                   // (Misc/O0062/POC LSB present) (SH changes)
     276                                                   // (POC/O0117/Modify PicOrderCntVal of prevTid0Pic) #35 Modification of the PicOrderCntVal of prevTid0Pic and modification to the decoding process for reference picture set, to address problems found for cross-layer POC alignment.
     277                                                   // (POC/O0211/Fix ambiguity) #38 Modify POC derivation to correct an ambiguity in the spec.
     278#define H_MV_6_MISC_O0062_31                    1  // (Misc/O0062/POC LSB present) (without SH changes ) #31 The proposal's "option 3" is to add a flag in the VPS for each EL to control whether these LSBs are present or not (for IDR pictures), and when not present, the LSBs are inferred to be equal to 0. Decision: Adopted (as described herein).
     279#define H_MV_6_ILDDS_ILREFPICS_27_34            1  // Various inter layer reference picture derivation
     280                                                   // (ILDSD/O0225/max_tid_il_ref_pics RPL const.) #27 Change derivation of NumActiveRefLayerPics to consider max_tid_il_ref_pics.
     281                                                   // (ILDSD/O0120/sub_layers_vps_max_minus1 RPL const) #34 Modify inter-layer reference picture list default construction to incorporate max temporal sub-layers per layer syntax elements in VPS extension, from r2 version of JCTVC-O0120
     282#define H_MV_6_ILDDS_O0225_30                   1  // (ILDSD/O0225/signal max_tid_il_ref_pics per layer ) #30 2nd proposal of JCTVC-O0225 regarding signalling of max_tid_il_ref_pics per layer, based upon relation to SCE2 on single loop decoding. Decision: Adopted.
     283#define H_MV_6_ILDSD_O0120_26                   1  // (ILDSD/O0120/sub_layers_vps_max_minus1) #26 Add syntax elements to signal max temporal sub-layers for each layer in the VPS, with a gating flag, from JCTVC- option 2.
     284#define H_MV_6_PS_O0223_29                      1  // (PS/O0223/Cross layer alignment type) #29 Add a flag in VPS VUI to indicate cross layer pic type alignment.  Move cross_layer_irap_aligned_flag to VPS VUI and make presence condition on added flag
     285#define H_MV_6_PS_0092_17                       1  // (PS/O0092/Sharing SPS PPS) #17 Restrict sharing of SPS and PPS across layers to avoid creating problems during sub-bitstream extraction, based on modification of proposals in JCTVC-O0059 and JCTVC-O0092, reflected in the v2 version of O0092.
     286#define H_MV_6_PS_REP_FORM_18_19_20             1  //  Various Rep format
     287                                                   // (PS/O0096/rep format syntax element length ) #20 Modification of length to 8 bit as decided later in trac.
     288                                                   // (PS/O0179/Rep. Format) #18 Add flag in rep_format( ) syntax structure to control sending of chroma and bit depth related parameters, as proposed in the v2 version of JCTVC-O0179.
     289                                                   // (PS/O0096/rep format) #20 Modify the SPS syntax for layers with nuh_layer_id > 0 to signal a reference to a rep_format index in the VPS, rather than signalling explicit representation format data in the SPS, from the v2 version of JCTVC-O0096.
     290                                                   // (PS/FIX/N0092/Rep. Format) #19 Inferences.
     291#define H_MV_6_PS_O0096_21                      1  // (PS/O0096/direct_dependency_type gating flag) #21 Add a gating flag in VPS extension to condition the presence of direct dependency type, with a default type signalled, from JCTVC-O0096
     292#define H_MV_6_PS_O0109_22                      1  // (PS/O0109/view_id_len) #22 Modify the VPS extension syntax and semantics to replace view_id_len_minus1 with view_id_len, always signal that syntax element, add a constraint that (1<<view_id_len) >= NumViews, and modify view_id_val semantics to infer value of 0 when not present, from discussion of JCTVC-O0109
     293#define H_MV_6_PS_O0109_23                      1  // (PS/O0109/profile_ref_minus1 constraint) #23 Modify the semantics of profile_ref_minus1[ i ] to replace “shall be less than i” with “shall be less than or equal to i”, from discussion of JCTVC-O0109
     294#define H_MV_6_PS_O0109_24                      1  // (PS/O0109/vps_vui_present_flag move) #24 Move the vps_vui_present_flag to precede vps_vui_offset, and make vps_vui_offset conditional on that flag, from JCTVC-O0109
    246295/////////////////////////////////////////////////////////////////////////////////////////
    247296///////////////////////////////////   HTM-9.0 Integrations //////////////////////////////
     
    306355#define MAX_VPS_OP_SETS_PLUS1                     1024
    307356#if H_MV
     357#if H_MV_6_LAYER_ID_32
     358#define MAX_VPS_NUH_LAYER_ID_PLUS1  63
     359#else
    308360#define MAX_VPS_NUH_LAYER_ID_PLUS1  64
     361#endif
    309362#define MAX_NUM_SCALABILITY_TYPES   16
    310363#define ENC_CFG_CONSOUT_SPACE       29           
     
    329382
    330383#define MAX_CPB_CNT                     32  ///< Upper bound of (cpb_cnt_minus1 + 1)
     384#if H_MV
     385#if H_MV_6_LAYER_ID_32
     386#define MAX_NUM_LAYER_IDS               63
     387#define MAX_NUM_LAYERS                  63
     388#else
    331389#define MAX_NUM_LAYER_IDS               64
    332 #if H_MV
    333390#define MAX_NUM_LAYERS                  64
     391#endif
    334392#define MAX_VPS_PROFILE_TIER_LEVEL      64
    335393#define MAX_VPS_ADD_OUTPUT_LAYER_SETS   1024
    336394#define MAX_VPS_OUTPUTLAYER_SETS        ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 )
     395#if H_MV_6_PS_O0118_33
     396#define  MAX_NUM_VIDEO_SIGNAL_INFO      16
     397#endif
     398#if H_MV_6_SHVC_O0098_36
     399#define MAX_NUM_SCALED_REF_LAYERS       MAX_NUM_LAYERS-1
     400#endif
     401#if H_MV_6_HRD_O0164_15
     402#define MAX_NUM_BSP_HRD_PARAMETERS      100 ///< Maximum value is actually not specified
     403#define MAX_NUM_BITSTREAM_PARTITIONS    100 ///< Maximum value is actually not specified
     404#define MAX_NUM_BSP_SCHED_COMBINATION   100 ///< Maximum value is actually not specified
     405#endif
    337406#endif
    338407
     
    811880
    812881#if H_MV
     882
     883#if H_MV_6_PSEM_O0142_3
     884  enum PsExtensionTypes
     885  {
     886    PS_EX_T_MV   = 1,
     887#if H_3D
     888    PS_EX_T_3D   = 3,
     889#endif
     890    PS_EX_T_ESC  = 7,
     891    PS_EX_T_MAX_NUM = 8
     892  };
     893#endif
     894
    813895/// scalability types
    814896  enum ScalabilityType
Note: See TracChangeset for help on using the changeset viewer.