Changeset 964 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComSlice.h


Ignore:
Timestamp:
5 Jul 2014, 05:16:45 (10 years ago)
Author:
tech
Message:
  • Merged 11.0-dev0@963. (Update to HM 14.0 + MV-HEVC Draft 8 HLS)
  • Added coding results.
  • Changed version number.
File:
1 edited

Legend:

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

    r950 r964  
    5454class TComPicLists;
    5555class TComVPS;
     56#if H_MV_HLS_8_RPS_Q0100_36
     57class TComSPS;
     58#endif
    5659#endif
    5760// ====================================================================================================================
     
    126129  Void sortDeltaPOC();
    127130  Void printDeltaPOC();
     131
     132#if H_MV_HLS_8_RPS_Q0100_36
     133  Void checkMaxNumPics( Bool vpsExtensionFlag, Int maxNumPics, Int nuhLayerId, Int spsMaxDecPicBufferingMinus1 )
     134  {
     135    assert( getNumberOfPictures() >= 0 );
     136    if ( nuhLayerId == 0 )
     137    {
     138      assert( getNumberOfPictures() <= spsMaxDecPicBufferingMinus1 );
     139    }
     140
     141    if ( vpsExtensionFlag )
     142    {
     143      assert( getNumberOfPictures() <= maxNumPics );
     144    }
     145  }
     146#endif
    128147};
    129148
     
    231250{
    232251  ProfileTierLevel m_generalPTL;
    233   ProfileTierLevel m_subLayerPTL[6];      // max. value of max_sub_layers_minus1 is 6
    234   Bool m_subLayerProfilePresentFlag[6];
    235   Bool m_subLayerLevelPresentFlag[6];
     252  ProfileTierLevel m_subLayerPTL    [MAX_TLAYER-1];      // max. value of max_sub_layers_minus1 is MAX_TLAYER-1 (= 6)
     253  Bool m_subLayerProfilePresentFlag [MAX_TLAYER-1];
     254  Bool m_subLayerLevelPresentFlag   [MAX_TLAYER-1];
    236255
    237256public:
     
    436455  Int  m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1];
    437456  Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS];
    438   Int  m_numBspSchedCombinations[MAX_VPS_OP_SETS_PLUS1];
     457  Int  m_numBspSchedCombinationsMinus1[MAX_VPS_OP_SETS_PLUS1];
    439458  Int  m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
    440459  Int  m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
     
    455474  Void checkLayerInBspFlag ( TComVPS* vps, Int h ); 
    456475
    457   Void setNumBspSchedCombinations( Int h, Int  val ) { m_numBspSchedCombinations[h] = val; }
    458   Int  getNumBspSchedCombinations( Int h ) { return m_numBspSchedCombinations[h]; }
     476  Void setNumBspSchedCombinationsMinus1( Int h, Int  val ) { m_numBspSchedCombinationsMinus1[h] = val; }
     477  Int  getNumBspSchedCombinationsMinus1( Int h ) { return m_numBspSchedCombinationsMinus1[h]; }
    459478
    460479  Void setBspCombHrdIdx( Int h, Int i, Int j, Int  val ) { m_bspCombHrdIdx[h][i][j] = val; }
    461480  Int  getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; }
     481#if H_MV_HLS_8_HRD_Q0101_04
     482  Int  getBspCombHrdIdxLen() { return gCeilLog2( getVpsNumBspHrdParametersMinus1() + 1);  };
     483  Void checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j ) 
     484  {
     485    // bsp_comb_hrd_idx
     486    assert( getBspCombSchedIdx(h, i, j ) >= 0 );
     487    assert( getBspCombSchedIdx(h, i, j ) <= getVpsNumBspHrdParametersMinus1() );
     488
     489    // bsp_comb_sched_idx
     490    assert( getBspCombSchedIdx(h, i, j ) >= 0 );
     491
     492    //* This check needs to activated,  when HighestTid is available here   
     493    //  assert(  getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) );
     494  }
     495#endif
    462496
    463497  Void setBspCombSchedIdx( Int h, Int i, Int j, Int  val ) { m_bspCombSchedIdx[h][i][j] = val; }
     
    636670  Int   m_maxVpsDecPicBufferingMinus1[MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYER_IDS][MAX_TLAYER];;
    637671  Int   m_maxVpsNumReorderPics       [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
    638 #if H_MV_HLS7_GEN
    639   Int  m_maxVpsLayerDecPicBuffMinus1[TO_BE_SPECIFIED][TO_BE_SPECIFIED][TO_BE_SPECIFIED];
    640 #endif
    641672  Int   m_maxVpsLatencyIncreasePlus1 [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
    642673
     
    655686  Void setMaxVpsNumReorderPics( Int i, Int j, Int  val ) { m_maxVpsNumReorderPics[i][j] = val; }
    656687  Int  getMaxVpsNumReorderPics( Int i, Int j ) { return m_maxVpsNumReorderPics[i][j]; }
    657 #if H_MV_HLS7_GEN
    658   Void setMaxVpsLayerDecPicBuffMinus1( Int i, Int k, Int j, Int  val ) { m_maxVpsLayerDecPicBuffMinus1[i][k][j] = val; }
    659   Int  getMaxVpsLayerDecPicBuffMinus1( Int i, Int k, Int j ) { return m_maxVpsLayerDecPicBuffMinus1[i][k][j]; }
    660 #endif
     688
    661689  Void setMaxVpsLatencyIncreasePlus1( Int i, Int j, Int  val ) { m_maxVpsLatencyIncreasePlus1[i][j] = val; }
    662690  Int  getMaxVpsLatencyIncreasePlus1( Int i, Int j ) { return m_maxVpsLatencyIncreasePlus1[i][j]; }
     
    667695private:
    668696  Int         m_VPSId;
     697#if H_MV_HLS_8_SYN_Q0041_03
     698  Bool        m_vpsBaseLayerInternalFlag;
     699#endif
     700
    669701  UInt        m_uiMaxTLayers;
    670702
     
    704736  TimingInfo  m_timingInfo;
    705737#if H_MV
     738  #if H_MV_HLS_8_RPS_Q0100_36
     739  Bool        m_vpsExtensionFlag;
     740#endif
    706741  /// VPS EXTENSION SYNTAX ELEMENTS
    707742  Bool        m_avcBaseLayerFlag;
     
    725760  Bool        m_vpsProfilePresentFlag    [MAX_VPS_OP_SETS_PLUS1];
    726761
    727   Int         m_numAddOutputLayerSets;   
    728   Int         m_defaultTargetOutputLayerIdc;
    729 
    730   Int         m_outputLayerSetIdxMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
     762  Int         m_numAddLayerSets;   
     763#if H_MV_HLS_8_SYN_39_19
     764  Int         m_highestLayerIdxPlus1     [MAX_VPS_ADD_OUTPUT_LAYER_SETS][MAX_NUM_LAYERS];
     765  Int         m_numAddOlss;
     766#endif
     767  Int         m_defaultOutputLayerIdc;
     768
     769  Int         m_layerSetIdxForOlsMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
    731770  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
    732771  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
    733772  Bool        m_altOutputLayerFlag       [MAX_VPS_OUTPUTLAYER_SETS];
    734773  Bool        m_repFormatIdxPresentFlag;
     774
    735775  Int         m_vpsNumRepFormatsMinus1;
    736776  Int         m_vpsRepFormatIdx          [MAX_NUM_LAYERS];
     
    762802  Int         m_refLayerId               [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 
    763803
     804#if H_MV_HLS_8
     805  Int         m_numRefLayers             [MAX_NUM_LAYER_IDS];
     806  Int         m_numPredictedLayers       [MAX_NUM_LAYERS];
     807  Int         m_predictedLayerId         [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     808  Int         m_numIndependentLayers;
     809  Int         m_numLayersInTreePartition [MAX_NUM_LAYER_IDS];
     810  Int         m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     811  Bool        m_recursiveRefLayerFlag    [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
     812#else
     813
    764814  Int         m_numSamplePredRefLayers   [MAX_NUM_LAYERS];
    765815  Bool        m_samplePredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     
    769819  Bool        m_motionPredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    770820  Int         m_motionPredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     821#endif
    771822  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
    772823 
     
    777828
    778829  Int         xGetDimBitOffset( Int j );
    779  
     830
     831#if H_MV_HLS_8
     832  Void xSetRefLayerFlags( Int currLayerId )
     833  {
     834    for( Int j = 0; j < getNumDirectRefLayers( currLayerId ); j++ )
     835    {
     836      Int refLayerId = m_refLayerId[ currLayerId ][ j ];
     837      m_recursiveRefLayerFlag[ currLayerId ][ refLayerId ] = 1;
     838      for( Int k = 0; k < MAX_NUM_LAYER_IDS; k++ )
     839      {
     840        m_recursiveRefLayerFlag[ currLayerId ][ k ] = m_recursiveRefLayerFlag[ currLayerId ][ k ]  ||  m_recursiveRefLayerFlag[ refLayerId ][ k ];
     841      }
     842    }
     843  }
     844#endif
    780845  // VPS EXTENSION 2 SYNTAX ELEMENTS
    781846#if H_3D_ARP
     
    837902  Void    setVPSId       (Int i)              { m_VPSId = i;             }
    838903
     904#if H_MV_HLS_8_SYN_Q0041_03
     905  Void    setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; }
     906  Bool    getVpsBaseLayerInternalFlag(  )          { return m_vpsBaseLayerInternalFlag; }
     907#endif
     908
    839909  UInt    getMaxTLayers  ()                   { return m_uiMaxTLayers;   }
    840910  Void    setMaxTLayers  (UInt t)             { m_uiMaxTLayers = t; }
     
    887957  TimingInfo* getTimingInfo() { return &m_timingInfo; }
    888958#if H_MV
     959
     960#if H_MV_HLS_8_RPS_Q0100_36
     961  Void    setVpsExtensionFlag( Bool flag )                                 { m_vpsExtensionFlag = flag; }
     962  Bool    getVpsExtensionFlag(  )                                          { return m_vpsExtensionFlag; }
     963#endif
     964#if !H_MV_HLS_8_SYN_Q0041_03
    889965  Void    setAvcBaseLayerFlag( Bool val )                                  { m_avcBaseLayerFlag = val;  }
    890966  Bool    getAvcBaseLayerFlag()                                            { return m_avcBaseLayerFlag; }
    891 
     967#endif
    892968  Void    setVpsNonVuiExtensionLength( Int  val )                          { m_vpsNonVuiExtensionLength = val; }
    893969  Int     getVpsNonVuiExtensionLength(  )                                  { return m_vpsNonVuiExtensionLength; }
     
    9471023  Bool    getVpsProfilePresentFlag( Int idx )                              { return m_vpsProfilePresentFlag[idx]; }
    9481024
    949   Void    setNumAddOutputLayerSets( Int val )                              { m_numAddOutputLayerSets = val; }
    950   Int     getNumAddOutputLayerSets( )                                      { return m_numAddOutputLayerSets; }
    951  
    952   Void    setDefaultTargetOutputLayerIdc( Int  val )                       { m_defaultTargetOutputLayerIdc = val; }
    953   Int     getDefaultTargetOutputLayerIdc(  )                               { return m_defaultTargetOutputLayerIdc; }   
    954  
    955   Void    setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val )        { m_outputLayerSetIdxMinus1[ outLayerSetIdx ]  = val; }
    956   Int     getOutputLayerSetIdxMinus1( Int outLayerSetIdx )                 { return m_outputLayerSetIdxMinus1[ outLayerSetIdx ]; }
     1025  Void    setNumAddLayerSets( Int val )                                    { m_numAddLayerSets = val; }
     1026  Int     getNumAddLayerSets( )                                            { return m_numAddLayerSets; }
     1027 
     1028#if H_MV_HLS_8_SYN_39_19
     1029  Void    setHighestLayerIdxPlus1( Int i, Int j, Int  val )                { m_highestLayerIdxPlus1[i][j] = val; }
     1030  Int     getHighestLayerIdxPlus1( Int i, Int j )                          { return m_highestLayerIdxPlus1[i][j]; }
     1031
     1032  Void    setNumAddOlss( Int  val )                                        { m_numAddOlss = val; }
     1033  Int     getNumAddOlss(  )                                                { return m_numAddOlss; }
     1034#endif
     1035
     1036  Void    setDefaultOutputLayerIdc( Int  val )                             { m_defaultOutputLayerIdc = val; }
     1037  Int     getDefaultOutputLayerIdc(  )                                     { return m_defaultOutputLayerIdc; }   
     1038 
     1039  Void    setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val )        { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]  = val; }
     1040  Int     getLayerSetIdxForOlsMinus1( Int outLayerSetIdx )                 { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; }
    9571041
    9581042  Void    setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag )       { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; }
     
    9751059  Void    setVpsRepFormatIdx( Int i, Int  val )                            { m_vpsRepFormatIdx[i] = val; }
    9761060  Int     getVpsRepFormatIdx( Int i )                                      { return m_vpsRepFormatIdx[i]; }
     1061
     1062#if H_MV_HLS_8_PMS_Q0195_20
     1063  Int     inferVpsRepFormatIdx( Int i )                                    { return std::min( i, getVpsNumRepFormatsMinus1()  );  }
     1064#endif
    9771065
    9781066  Void    setRepFormat( Int i, TComRepFormat* val )                        { m_repFormat[i] = val;  }
     
    9891077  Void    setDpbSize( TComDpbSize* val )                                   { assert( m_dpbSize != 0 ); m_dpbSize = val; }
    9901078  TComDpbSize* getDpbSize( )                                               { return m_dpbSize;}
     1079#if H_MV_HLS_8_RPS_Q0100_36
     1080  Void    inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder );
     1081#endif
     1082
    9911083
    9921084  Void    setPocLsbNotPresentFlag( Int i, Bool flag )                      { m_pocLsbNotPresentFlag[i] = flag; }
     
    10231115  Int     getNumDirectRefLayers( Int layerIdInNuh )                        { return m_numDirectRefLayers[ layerIdInNuh ];  };                               
    10241116  Int     getRefLayerId        ( Int layerIdInNuh, Int idx );;
     1117
     1118#if H_MV_HLS_8
     1119  Int     getNumRefLayers            ( Int i )        { return m_numRefLayers[i]; }
     1120  Int     getNumPredictedLayers      ( Int i )        { return m_numPredictedLayers[i]; }
     1121  Int     getPredictedLayerId        ( Int i, Int j ) { return m_predictedLayerId[i][j]; }
     1122  Int     getNumIndependentLayers    (  )             { return m_numIndependentLayers; }
     1123  Int     getNumLayersInTreePartition( Int i )        { return m_numLayersInTreePartition[i]; }
     1124  Int     getTreePartitionLayerIdList( Int i, Int j ) { return m_treePartitionLayerIdList[i][j]; }
     1125  Bool    getRecursiveRefLayerFlag   ( Int i, Int j ) { return m_recursiveRefLayerFlag[i][j]; }
     1126
     1127#endif
     1128
     1129#if H_MV_HLS_8_SYN_39_19
     1130  Int     getNumLayerSets( )                                               { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets();  }; 
     1131#endif
    10251132  Bool    checkVPSExtensionSyntax();
    10261133  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
     
    10301137
    10311138  Int     getNumLayersInIdList ( Int lsIdx );
     1139#if H_MV_HLS_8_RPS_Q0100_36
     1140  Int     getLayerSetLayerIdList(Int lsIdx, Int j )                       { return m_layerSetLayerIdList[ lsIdx ][ j ]; };
     1141#endif
    10321142
    10331143  Int     getNumOutputLayerSets() ;   
     1144#if !H_MV_HLS_8_DBP_NODOC_42
    10341145  Int     getNumSubDpbs( Int i )                                           { return getNumLayersInIdList( i ); }; 
     1146#endif
    10351147  Bool    isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh );   
    10361148  Void    deriveLayerSetLayerIdList();
    10371149
    1038   Int     getLayerSetIdxForOutputLayerSet( Int i )                         { return ( i <= getVpsNumLayerSetsMinus1() ) ? i  : getOutputLayerSetIdxMinus1( i ) + 1 ; };
     1150  Int     olsIdxToLsIdx( Int i )                                           { return ( i <= getVpsNumLayerSetsMinus1() ) ? i  : getLayerSetIdxForOlsMinus1( i ) + 1 ; };
    10391151
    10401152  Void    initTargetLayerIdLists  ( );
     
    10481160
    10491161  Int     getMaxSubLayersInLayerSetMinus1( Int i );
     1162
     1163#if H_MV_HLS_8_SYN_39_19
     1164  Int     getHighestLayerIdxPlus1Len( Int j )                                   { return gCeilLog2( getNumLayersInTreePartition( j ) + 1 );   };
     1165#endif
     1166
     1167 
     1168#if H_MV_HLS_7_VPS_P0300_27
     1169  Bool     getAltOutputLayerFlagVar( Int i )
     1170  {  // Semantics variable not syntax element !
     1171
     1172    Bool altOptLayerFlag = false;     
     1173    if ( i > 0 && getNumOutputLayersInOutputLayerSet( i ) == 1 &&
     1174      getNumDirectRefLayers( getOlsHighestOutputLayerId( i ) ) > 0 )
     1175    {
     1176      altOptLayerFlag = getAltOutputLayerFlag( i );
     1177    }
     1178    return altOptLayerFlag;
     1179  };
     1180#endif
    10501181
    10511182  // inference
     
    10551186  // helpers
    10561187  Bool    getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 );
     1188#if H_MV_HLS_8_RPS_Q0100_36
     1189  Int     getMaxNumPics( Int layerId )
     1190  {   
     1191    Int maxNumPics = MAX_INT;
     1192    for( Int olsIdx = 0; olsIdx < getNumOutputLayerSets(); olsIdx++)
     1193    {
     1194      Int lsIdx = olsIdxToLsIdx( olsIdx );
     1195      for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ )
     1196      {
     1197        if( getLayerSetLayerIdList(lsIdx, j ) ==  layerId )
     1198        {
     1199          Int maxSL = getMaxSubLayersInLayerSetMinus1( lsIdx );
     1200          maxNumPics = std::min( maxNumPics, getDpbSize()->getMaxVpsDecPicBufferingMinus1( olsIdx , j,  maxSL ) );
     1201        }
     1202      }
     1203    }
     1204    assert( maxNumPics != MAX_INT );
     1205    return maxNumPics;
     1206  }
     1207#endif
     1208
    10571209  /// VPS EXTENSION 2 SYNTAX ELEMENTS
    10581210#if H_3D 
     
    14471599
    14481600  UInt        m_uiBitsForPOC;
     1601
    14491602  UInt        m_numLongTermRefPicSPS;
    14501603  UInt        m_ltRefPicPocLsbSps[33];
     
    14761629  TComVPS*    m_pcVPS;
    14771630  // SPS
    1478   Bool        m_spsExtensionFlag;
    1479   Bool        m_spsExtensionTypeFlag[PS_EX_T_MAX_NUM];
     1631  Bool        m_spsExtensionPresentFlag;
     1632#if H_MV_HLS_8_SPS_NODOC_48
     1633  Bool        m_spsRangeExtensionsFlag;
     1634  Bool        m_spsMultilayerExtensionFlag;
     1635#if H_3D
     1636  Bool        m_sps3dExtensionFlag;
     1637  Int         m_spsExtension5bits;
     1638#else
     1639  Int         m_spsExtension6bits;
     1640#endif
     1641#else
     1642  Bool        m_spsExtensionTypeFlag     [PS_EX_T_MAX_NUM];
     1643#endif
    14801644  Bool        m_spsInferScalingListFlag;
    14811645  Int         m_spsScalingListRefLayerId;
     
    15911755  UInt      getMaxTLayers()                           { return m_uiMaxTLayers; }
    15921756  Void      setMaxTLayers( UInt uiMaxTLayers )        { assert( uiMaxTLayers <= MAX_TLAYER ); m_uiMaxTLayers = uiMaxTLayers; }
     1757#if H_MV_HLS_8
     1758  UInt      getSpsMaxSubLayersMinus1()                { return ( m_uiMaxTLayers - 1); }
     1759#endif
    15931760
    15941761  Bool      getTemporalIdNestingFlag()                { return m_bTemporalIdNestingFlag; }
     
    16221789  TComPTL* getPTL()     { return &m_pcPTL; }
    16231790#if H_MV
    1624   Void setSpsExtensionFlag( Bool flag ) { m_spsExtensionFlag = flag; }
    1625   Bool getSpsExtensionFlag( )  { return m_spsExtensionFlag; }
    1626 
    1627   Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; }
    1628   Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; }
     1791
     1792#if H_MV_HLS_8_HRD_Q0102_08
     1793  Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder )
     1794  {
     1795    const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx ));
     1796
     1797    if (getLayerId() > 0 )
     1798    {
     1799      Int layerIdx = 0;         
     1800      while (layerIdx < (Int) targetDecLayerIdList.size() )
     1801      {
     1802        if ( targetDecLayerIdList[layerIdx] == currLayerId )
     1803        {
     1804          break;
     1805        }
     1806        layerIdx++;
     1807      }
     1808
     1809      assert( layerIdx < (Int) targetDecLayerIdList.size() );
     1810
     1811      for (Int i = 0; i <= getSpsMaxSubLayersMinus1(); i++ )
     1812      {
     1813        Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ;
     1814
     1815        if ( encoder )
     1816        {
     1817          assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 );
     1818        }
     1819        else
     1820        {
     1821          setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 );
     1822        }
     1823      }
     1824    }   
     1825  }
     1826#endif
     1827
     1828  Void setSpsExtensionPresentFlag( Bool flag ) { m_spsExtensionPresentFlag = flag; }
     1829  Bool getSpsExtensionPresentFlag( )           { return m_spsExtensionPresentFlag; }
     1830
     1831#if H_MV_HLS_8_SPS_NODOC_48
     1832  Void setSpsRangeExtensionsFlag( Bool flag )            { m_spsRangeExtensionsFlag = flag; }
     1833  Bool getSpsRangeExtensionsFlag(  )                     { return m_spsRangeExtensionsFlag; }
     1834
     1835  Void setSpsMultilayerExtensionFlag( Bool flag )        { m_spsMultilayerExtensionFlag = flag; }
     1836  Bool getSpsMultilayerExtensionFlag( )                  { return m_spsMultilayerExtensionFlag; }
     1837#if H_3D
     1838  Void setSps3dExtensionFlag( Bool flag )                { m_sps3dExtensionFlag = flag; }
     1839  Bool getSps3dExtensionFlag(  )                        { return m_sps3dExtensionFlag; }
     1840
     1841  Void setSpsExtension5bits( Int  val )                  { m_spsExtension5bits = val; }
     1842  Int  getSpsExtension5bits(  )                          { return m_spsExtension5bits; }
     1843#else
     1844  Void setSpsExtension6bits( Int  val )                  { m_spsExtension6bits = val; }
     1845  Int  getSpsExtension6bits(  )                          { return m_spsExtension6bits; }
     1846#endif
     1847#else
     1848  Void setSpsExtensionTypeFlag( Int i, Bool flag )       { m_spsExtensionTypeFlag[i] = flag; }
     1849  Bool getSpsExtensionTypeFlag( Int i )                  { return m_spsExtensionTypeFlag[i]; }
     1850#endif
     1851 
    16291852  Void      setVPS          ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; }
    16301853  TComVPS*  getVPS          () { return m_pcVPS; }
     
    16651888
    16661889  Void inferScalingList( TComSPS* spsSrc );
     1890
     1891#if H_MV_HLS_8_RPS_Q0100_36
     1892  // others
     1893  Void checkRpsMaxNumPics( TComVPS* vps, Int currLayerId )
     1894  {
     1895    // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead
     1896    // of nuh_layer_id of slice (currLayerId), this seems to be a bug.
     1897
     1898    for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ )
     1899    {
     1900      TComReferencePictureSet* rps = getRPSList()->getReferencePictureSet( i );
     1901      if ( !rps->getInterRPSPrediction() )
     1902      {
     1903        rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ),
     1904          getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 
     1905      }
     1906    }
     1907  }
     1908#endif
     1909
    16671910#endif
    16681911#if H_3D_QTLPC
     
    17762019  Int  m_ppsScalingListRefLayerId;
    17772020
     2021#if H_MV_HLS_8_SPS_NODOC_48
     2022  Bool m_ppsRangeExtensionsFlag;
     2023  Bool m_ppsMultilayerExtensionFlag;
     2024#if !H_3D
     2025  Int  m_ppsExtension6bits;
     2026#else
     2027  Bool m_pps3dExtensionFlag;
     2028  Int  m_ppsExtension5bits;
     2029#endif
     2030
     2031#else
    17782032  Bool m_ppsExtensionTypeFlag[PS_EX_T_MAX_NUM];
     2033#endif
    17792034  Bool m_pocResetInfoPresentFlag;
    17802035#endif
     
    19202175  Int  getPpsScalingListRefLayerId(  ) { return m_ppsScalingListRefLayerId; }
    19212176
     2177#if H_MV_HLS_8_SPS_NODOC_48
     2178  Void setPpsRangeExtensionsFlag( Bool flag ) { m_ppsRangeExtensionsFlag = flag; }
     2179  Bool getPpsRangeExtensionsFlag(  ) { return m_ppsRangeExtensionsFlag; }
     2180
     2181  Void setPpsMultilayerExtensionFlag( Bool flag ) { m_ppsMultilayerExtensionFlag = flag; }
     2182  Bool getPpsMultilayerExtensionFlag(  ) { return m_ppsMultilayerExtensionFlag; }
     2183
     2184#if !H_3D
     2185  Void setPpsExtension6bits( Int  val ) { m_ppsExtension6bits = val; }
     2186  Int  getPpsExtension6bits(  ) { return m_ppsExtension6bits; }
     2187#else
     2188  Void setPps3dExtensionFlag( Bool flag ) { m_pps3dExtensionFlag = flag; }
     2189  Bool getPps3dExtensionFlag(  ) { return m_pps3dExtensionFlag; }
     2190
     2191  Void setPpsExtension5bits( Int  val ) { m_ppsExtension5bits = val; }
     2192  Int  getPpsExtension5bits(  ) { return m_ppsExtension5bits; }
     2193#endif
     2194#else
    19222195  Void setPpsExtensionTypeFlag( Int i, Bool flag ) { m_ppsExtensionTypeFlag[i] = flag; }
    19232196  Bool getPpsExtensionTypeFlag( Int i ) { return m_ppsExtensionTypeFlag[i]; }
     2197#endif
    19242198
    19252199  Void setPocResetInfoPresentFlag( Bool flag ) { m_pocResetInfoPresentFlag = flag; }
     
    19572231  Int         m_iPPSId;               ///< picture parameter set ID
    19582232  Bool        m_PicOutputFlag;        ///< pic_output_flag
     2233#if H_MV_HLS_8_POC_Q0142_32
     2234  Int         m_slicePicOrderCntLsb;   
     2235#endif 
    19592236  Int         m_iPOC;
    19602237#if H_MV
     
    20102287  UInt        m_colFromL0Flag;  // collocated picture from List0 flag
    20112288 
     2289#if SETTING_NO_OUT_PIC_PRIOR
     2290  Bool        m_noOutputPriorPicsFlag;
     2291  Bool        m_noRaslOutputFlag;
     2292  Bool        m_handleCraAsBlaFlag;
     2293#endif
     2294 
    20122295  UInt        m_colRefIdx;
    20132296  UInt        m_maxNumMergeCand;
     
    21312414  Void      setPicOutputFlag( Bool b )         { m_PicOutputFlag = b;    }
    21322415  Bool      getPicOutputFlag()                 { return m_PicOutputFlag; }
     2416#if H_MV_HLS_8_POC_Q0142_32
     2417  Void      setSlicePicOrderCntLsb( Int i ) { m_slicePicOrderCntLsb = i; };
     2418  Int       getSlicePicOrderCntLsb(  )      { return m_slicePicOrderCntLsb; };
     2419#endif
    21332420  Void      setSaoEnabledFlag(Bool s) {m_saoEnabledFlag =s; }
    21342421  Bool      getSaoEnabledFlag() { return m_saoEnabledFlag; }
     
    22812568  Void createInterLayerReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer0, std::vector<TComPic*>& refPicSetInterLayer1 );
    22822569  static Void markIvRefPicsAsShortTerm    ( std::vector<TComPic*> refPicSetInterLayer0, std::vector<TComPic*> refPicSetInterLayer1 );
    2283   static Void markCurrPic                 ( TComPic* currPic );;
     2570  static Void markCurrPic                 ( TComPic* currPic );
     2571#if !H_MV_HLS_8_DBP_NODOC_42
    22842572  static Void markIvRefPicsAsUnused       ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc  );
     2573#endif
    22852574  Void        printRefPicList();
    22862575#endif
    22872576  Bool isTemporalLayerSwitchingPoint( TComList<TComPic*>& rcListPic );
    22882577  Bool isStepwiseTemporalLayerSwitchingPointCandidate( TComList<TComPic*>& rcListPic );
     2578#if ALLOW_RECOVERY_POINT_AS_RAP
     2579  Int       checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess = 0, Bool bUseRecoveryPoint = false);
     2580  Void      createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP, Int pocRandomAccess = 0, Bool bUseRecoveryPoint = false);
     2581#else
    22892582  Int       checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess = 0);
    22902583  Void      createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP);
     2584#endif
    22912585
    22922586  Void setMaxNumMergeCand               (UInt val )         { m_maxNumMergeCand = val;                    }
    22932587  UInt getMaxNumMergeCand               ()                  { return m_maxNumMergeCand;                   }
     2588
     2589#if SETTING_NO_OUT_PIC_PRIOR
     2590  Void setNoOutputPriorPicsFlag              ( Bool val )         { m_noOutputPriorPicsFlag = val;                    }
     2591  Bool getNoOutputPriorPicsFlag              ()                   { return m_noOutputPriorPicsFlag;                   }
     2592
     2593  Void setNoRaslOutputFlag              ( Bool val )         { m_noRaslOutputFlag = val;                    }
     2594  Bool getNoRaslOutputFlag              ()                   { return m_noRaslOutputFlag;                   }
     2595
     2596  Void setHandleCraAsBlaFlag              ( Bool val )         { m_handleCraAsBlaFlag = val;                    }
     2597  Bool getHandleCraAsBlaFlag              ()                   { return m_handleCraAsBlaFlag;                   }
     2598#endif
    22942599
    22952600  Void setSliceMode                     ( UInt uiMode )     { m_sliceMode = uiMode;                     }
     
    24332738  Void setPocResetIdc( Int  val ) { m_pocResetIdc = val; }
    24342739  Int  getPocResetIdc(  ) { return m_pocResetIdc; }
    2435 
     2740#if H_MV_HLS_8_POC_Q0142_32
     2741  Void checkPocResetIdc( ) { assert( !(getVPS()->getPocLsbNotPresentFlag( getLayerIdInVps() ) )  || !(getSlicePicOrderCntLsb() > 0 ) || !( getPocResetIdc() == 2) ); } 
     2742#endif
    24362743  Void setPocResetPeriodId( Int  val ) { m_pocResetPeriodId = val; }
    24372744  Int  getPocResetPeriodId(  ) { return m_pocResetPeriodId; }
     
    24422749  Void setPocLsbVal( Int  val ) { m_pocLsbVal = val; }
    24432750  Int  getPocLsbVal(  ) { return m_pocLsbVal; }
     2751#if H_MV_HLS_8_POC_Q0142_32
     2752  Void checkPocLsbVal( ) { assert( !(getVPS()->getPocLsbNotPresentFlag( getLayerIdInVps() ) )  || !getFullPocResetFlag() || ( getPocLsbVal() == 0 ) ); } 
     2753#endif
    24442754
    24452755  Void setPocMsbValPresentFlag( Bool flag ) { m_pocMsbValPresentFlag = flag; }
     
    24662776
    24672777  // Additional variables derived in slice header semantics
     2778
    24682779  Int  getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
    24692780  Int  getInterLayerPredLayerIdcLen    ( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
     
    24832794  TComPic* getPicFromRefPicSetInterLayer( Int setIdc, Int layerId );
    24842795
     2796
     2797#if H_MV_HLS_8_POC_Q0146_15
     2798// Inference
     2799  Bool inferPocMsbValPresentFlag()
     2800  {
     2801    Bool pocMsbValPresentFlag;
     2802    if( getSliceSegmentHeaderExtensionLength() == 0 )
     2803    {
     2804      pocMsbValPresentFlag = false;
     2805    }
     2806    else if ( getPocMsbValRequiredFlag() )
     2807    {
     2808      pocMsbValPresentFlag = true;
     2809    }
     2810    else
     2811    {
     2812      pocMsbValPresentFlag = false;
     2813    }
     2814
     2815    return pocMsbValPresentFlag;
     2816  } 
     2817#endif
    24852818#endif
    24862819#if H_3D_DDD
Note: See TracChangeset for help on using the changeset viewer.