Ignore:
Timestamp:
9 Dec 2013, 17:16:03 (10 years ago)
Author:
tech
Message:

MV HEVC 6 HLS changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.0-dev0/source/Lib/TLibCommon/TComSlice.h

    r724 r730  
    3636*/
    3737
     38
    3839#ifndef __TCOMSLICE__
    3940#define __TCOMSLICE__
     
    6263// ====================================================================================================================
    6364
     65#if H_MV_6_HRD_O0164_15
     66class TComVPS;
     67#endif
    6468/// Reference Picture Set class
    6569class TComReferencePictureSet
     
    403407
    404408#if H_MV
     409
     410#if H_MV_6_PS_O0118_33
     411class TComVideoSignalInfo
     412{
     413private:
     414  Int  m_videoVpsFormat;
     415  Bool m_videoFullRangeVpsFlag;
     416  Int  m_colourPrimariesVps;
     417  Int  m_transferCharacteristicsVps;
     418  Int  m_matrixCoeffsVps;
     419public:
     420  Void setVideoVpsFormat( Int  val ) { m_videoVpsFormat = val; }
     421  Int  getVideoVpsFormat(  ) { return m_videoVpsFormat; }
     422
     423  Void setVideoFullRangeVpsFlag( Bool flag ) { m_videoFullRangeVpsFlag = flag; }
     424  Bool getVideoFullRangeVpsFlag(  ) { return m_videoFullRangeVpsFlag; }
     425
     426  Void setColourPrimariesVps( Int  val ) { m_colourPrimariesVps = val; }
     427  Int  getColourPrimariesVps(  ) { return m_colourPrimariesVps; }
     428
     429  Void setTransferCharacteristicsVps( Int  val ) { m_transferCharacteristicsVps = val; }
     430  Int  getTransferCharacteristicsVps(  ) { return m_transferCharacteristicsVps; }
     431
     432  Void setMatrixCoeffsVps( Int  val ) { m_matrixCoeffsVps = val; }
     433  Int  getMatrixCoeffsVps(  ) { return m_matrixCoeffsVps; }
     434};
     435#endif
     436#if H_MV_6_HRD_O0164_15
     437class TComVpsVuiBspHrdParameters
     438{
     439private:
     440  Int  m_vpsNumBspHrdParametersMinus1;
     441  Bool m_bspCprmsPresentFlag[MAX_NUM_BSP_HRD_PARAMETERS];
     442  Int  m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1];
     443  Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS];
     444  Int  m_numBspSchedCombinations[MAX_VPS_OP_SETS_PLUS1];
     445  Int  m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
     446  Int  m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
     447  TComHRD* m_hrdParameters[MAX_NUM_BSP_HRD_PARAMETERS];
     448public:
     449
     450  Void setVpsNumBspHrdParametersMinus1( Int  val ) { m_vpsNumBspHrdParametersMinus1 = val; }
     451  Int  getVpsNumBspHrdParametersMinus1(  ) { return m_vpsNumBspHrdParametersMinus1; }
     452
     453  Void setBspCprmsPresentFlag( Int i, Bool flag ) { m_bspCprmsPresentFlag[i] = flag; }
     454  Bool getBspCprmsPresentFlag( Int i ) { return m_bspCprmsPresentFlag[i]; }
     455
     456  Void setNumBitstreamPartitions( Int h, Int  val ) { m_numBitstreamPartitions[h] = val; }
     457  Int  getNumBitstreamPartitions( Int h ) { return m_numBitstreamPartitions[h]; }
     458
     459  Void setLayerInBspFlag( Int h, Int i, Int j, Bool flag ) { m_layerInBspFlag[h][i][j] = flag; }
     460  Bool getLayerInBspFlag( Int h, Int i, Int j ) { return m_layerInBspFlag[h][i][j]; }
     461  Void checkLayerInBspFlag ( TComVPS* vps, Int h ); 
     462
     463  Void setNumBspSchedCombinations( Int h, Int  val ) { m_numBspSchedCombinations[h] = val; }
     464  Int  getNumBspSchedCombinations( Int h ) { return m_numBspSchedCombinations[h]; }
     465
     466  Void setBspCombHrdIdx( Int h, Int i, Int j, Int  val ) { m_bspCombHrdIdx[h][i][j] = val; }
     467  Int  getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; }
     468
     469  Void setBspCombSchedIdx( Int h, Int i, Int j, Int  val ) { m_bspCombSchedIdx[h][i][j] = val; }
     470  Int  getBspCombSchedIdx( Int h, Int i, Int j ) { return m_bspCombSchedIdx[h][i][j]; }
     471
     472  Void setHrdParametermeters( Int k, TComHRD* val  ) {  m_hrdParameters[k] = val; };
     473  TComHRD* getHrdParametermeters( Int k ) {  return m_hrdParameters[k]; };
     474};
     475
     476#endif
    405477class TComVPSVUI
    406 {
     478{ 
    407479private:
     480#if H_MV_6_PS_O0223_29
     481  Bool m_crossLayerPicTypeAlignedFlag;
     482  Bool m_crossLayerIrapAlignedFlag;
     483#endif
    408484  Bool m_bitRatePresentVpsFlag;
    409485  Bool m_picRatePresentVpsFlag;
     
    413489  Int  m_maxBitRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
    414490  Int  m_constantPicRateIdc          [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
    415   Int  m_avgPicRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     491  Int  m_avgPicRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER]; 
     492#if H_MV_6_O0226_37
     493  Bool m_tilesNotInUseFlag;
     494  Bool m_tilesInUseFlag              [MAX_NUM_LAYERS];
     495  Bool m_loopFilterNotAcrossTilesFlag[MAX_NUM_LAYERS];
     496#endif 
    416497  Bool m_tileBoundariesAlignedFlag   [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     498#if H_MV_6_O0226_37
     499  Bool m_wppNotInUseFlag;
     500  Bool m_wppInUseFlag                [MAX_NUM_LAYERS];
     501#endif
    417502  Bool m_ilpRestrictedRefLayersFlag;
    418503  Int  m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    419504  Bool m_ctuBasedOffsetEnabledFlag   [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    420505  Int  m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     506#if H_MV_6_PS_O0118_33
     507  Bool m_videoSignalInfoIdxPresentFlag;
     508  Int  m_vpsNumVideoSignalInfoMinus1;
     509  TComVideoSignalInfo* m_videoSignalInfo[MAX_NUM_VIDEO_SIGNAL_INFO];   
     510  Int  m_vpsVideoSignalInfoIdx       [MAX_NUM_VIDEO_SIGNAL_INFO];
     511#endif
     512#if H_MV_6_HRD_O0164_15
     513  Bool m_vpsVuiBspHrdPresentFlag;
     514  TComVpsVuiBspHrdParameters* m_vpsVuiBspHrdParameters;
     515#endif
    421516
    422517public:
    423   TComVPSVUI();;
     518  TComVPSVUI();
     519  ~TComVPSVUI();
     520#if H_MV_6_PS_O0223_29
     521  Void setCrossLayerPicTypeAlignedFlag( Bool flag ) { m_crossLayerPicTypeAlignedFlag = flag; }
     522  Bool getCrossLayerPicTypeAlignedFlag(  ) { return m_crossLayerPicTypeAlignedFlag; }
     523
     524  Void setCrossLayerIrapAlignedFlag( Bool flag ) { m_crossLayerIrapAlignedFlag = flag; }
     525  Bool getCrossLayerIrapAlignedFlag(  ) { return m_crossLayerIrapAlignedFlag; }
     526#endif
    424527
    425528  Void setBitRatePresentVpsFlag( Bool flag ) { m_bitRatePresentVpsFlag = flag; }
     
    447550  Int  getAvgPicRate( Int i, Int j ) { return m_avgPicRate[i][j]; }
    448551
     552#if H_MV_6_O0226_37
     553  Void setTilesNotInUseFlag( Bool flag ) { m_tilesNotInUseFlag = flag; }
     554  Bool getTilesNotInUseFlag(  ) { return m_tilesNotInUseFlag; }
     555
     556  Void setTilesInUseFlag( Int i, Bool flag ) { m_tilesInUseFlag[i] = flag; }
     557  Bool getTilesInUseFlag( Int i ) { return m_tilesInUseFlag[i]; }
     558
     559  Void setLoopFilterNotAcrossTilesFlag( Int i, Int  val ) { m_loopFilterNotAcrossTilesFlag[i] = val; }
     560  Bool getLoopFilterNotAcrossTilesFlag( Int i ) { return m_loopFilterNotAcrossTilesFlag[i]; }
     561#endif
     562
    449563  Void setTileBoundariesAlignedFlag( Int i, Int j, Bool flag ) { m_tileBoundariesAlignedFlag[i][j] = flag; }
    450564  Bool getTileBoundariesAlignedFlag( Int i, Int j ) { return m_tileBoundariesAlignedFlag[i][j]; }
    451565
     566#if H_MV_6_O0226_37
     567  Void setWppNotInUseFlag( Bool flag ) { m_wppNotInUseFlag = flag; }
     568  Bool getWppNotInUseFlag(  ) { return m_wppNotInUseFlag; }
     569
     570  Void setWppInUseFlag( Int i, Bool flag ) { m_wppInUseFlag[i] = flag; }
     571  Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; }
     572#endif
     573
    452574  Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; }
    453575  Bool getIlpRestrictedRefLayersFlag(  ) { return m_ilpRestrictedRefLayersFlag; }
     
    462584  Int  getMinHorizontalCtuOffsetPlus1( Int i, Int j ) { return m_minHorizontalCtuOffsetPlus1[i][j]; }
    463585
     586#if H_MV_6_PS_O0118_33
     587  Void setVideoSignalInfoIdxPresentFlag( Bool flag ) { m_videoSignalInfoIdxPresentFlag = flag; }
     588  Bool getVideoSignalInfoIdxPresentFlag(  ) { return m_videoSignalInfoIdxPresentFlag; }
     589
     590  Void    setVideoSignalInfo( Int i, TComVideoSignalInfo* val )                        { m_videoSignalInfo[i] = val;  } 
     591  TComVideoSignalInfo* getVideoSignalInfo( Int i )                                     { return m_videoSignalInfo[i]; }
     592
     593  Void setVpsNumVideoSignalInfoMinus1( Int  val ) { m_vpsNumVideoSignalInfoMinus1 = val; }
     594  Int  getVpsNumVideoSignalInfoMinus1(  ) { return m_vpsNumVideoSignalInfoMinus1; }
     595
     596  Void setVpsVideoSignalInfoIdx( Int i, Int  val ) { m_vpsVideoSignalInfoIdx[i] = val; }
     597  Int  getVpsVideoSignalInfoIdx( Int i ) { return m_vpsVideoSignalInfoIdx[i]; }
     598#endif
     599
     600#if H_MV_6_HRD_O0164_15
     601  Void setVpsVuiBspHrdPresentFlag( Bool flag ) { m_vpsVuiBspHrdPresentFlag = flag; }
     602  Bool getVpsVuiBspHrdPresentFlag(  ) { return m_vpsVuiBspHrdPresentFlag; }
     603
     604  Void setVpsVuiBspHrdParameters( TComVpsVuiBspHrdParameters* val) {  m_vpsVuiBspHrdParameters = val; }
     605  TComVpsVuiBspHrdParameters* getVpsVuiBspHrdParameters(  ) { return m_vpsVuiBspHrdParameters; }
     606#endif
    464607};
     608
    465609
    466610class TComRepFormat
    467611{
    468612private:
     613#if H_MV_6_PS_REP_FORM_18_19_20
     614  Bool m_chromaAndBitDepthVpsPresentFlag;
     615#endif
    469616  Int  m_chromaFormatVpsIdc;
    470617  Bool m_separateColourPlaneVpsFlag;
     
    477624  TComRepFormat() { }; 
    478625
     626#if H_MV_6_PS_REP_FORM_18_19_20
     627  Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; }
     628  Bool getChromaAndBitDepthVpsPresentFlag(  ) { return m_chromaAndBitDepthVpsPresentFlag; }
     629  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. 
     630  Void inferChromaAndBitDepth( TComRepFormat* prevRepFormat, Bool encoderFlag );
     631#endif
     632
    479633  Void setChromaFormatVpsIdc( Int  val ) { m_chromaFormatVpsIdc = val; }
    480634  Int  getChromaFormatVpsIdc(  ) { return m_chromaFormatVpsIdc; }
     
    494648  Void setBitDepthVpsChromaMinus8( Int  val ) { m_bitDepthVpsChromaMinus8 = val; }
    495649  Int  getBitDepthVpsChromaMinus8(  ) { return m_bitDepthVpsChromaMinus8; }
     650};
     651#endif
     652
     653#if H_MV_6_HRD_O0217_13
     654class TComDpbSize
     655{
     656private:
     657  Bool  m_subLayerFlagInfoPresentFlag[MAX_VPS_OUTPUTLAYER_SETS];
     658  Bool  m_subLayerDpbInfoPresentFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
     659  Int   m_maxVpsDecPicBufferingMinus1[MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYER_IDS][MAX_TLAYER];;
     660  Int   m_maxVpsNumReorderPics       [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
     661  Int   m_maxVpsLatencyIncreasePlus1 [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
     662
     663public:
     664  TComDpbSize( )
     665  {
     666    for (Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++ )
     667    {     
     668      m_subLayerFlagInfoPresentFlag[i]  = false;
     669
     670      for (Int j = 0; j < MAX_TLAYER; j++  )
     671      {       
     672        m_subLayerDpbInfoPresentFlag [i][j] = ( j == 0) ;
     673        m_maxVpsNumReorderPics       [i][j] = 0;
     674        m_maxVpsLatencyIncreasePlus1 [i][j] = 0;
     675
     676        for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ )
     677        {
     678          m_maxVpsDecPicBufferingMinus1[i][k][j] = 0;
     679        }
     680      }
     681    } 
     682  } 
     683
     684  Void setSubLayerFlagInfoPresentFlag( Int i, Bool flag ) { m_subLayerFlagInfoPresentFlag[i] = flag; }
     685  Bool getSubLayerFlagInfoPresentFlag( Int i ) { return m_subLayerFlagInfoPresentFlag[i]; }
     686
     687  Void setSubLayerDpbInfoPresentFlag( Int i, Int j, Bool flag ) { m_subLayerDpbInfoPresentFlag[i][j] = flag; }
     688  Bool getSubLayerDpbInfoPresentFlag( Int i, Int j ) { return m_subLayerDpbInfoPresentFlag[i][j]; }
     689
     690  Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int  val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; }
     691  Int  getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; }
     692
     693  Void setMaxVpsNumReorderPics( Int i, Int j, Int  val ) { m_maxVpsNumReorderPics[i][j] = val; }
     694  Int  getMaxVpsNumReorderPics( Int i, Int j ) { return m_maxVpsNumReorderPics[i][j]; }
     695
     696  Void setMaxVpsLatencyIncreasePlus1( Int i, Int j, Int  val ) { m_maxVpsLatencyIncreasePlus1[i][j] = val; }
     697  Int  getMaxVpsLatencyIncreasePlus1( Int i, Int j ) { return m_maxVpsLatencyIncreasePlus1[i][j]; }
    496698};
    497699#endif
     
    547749  Int         m_layerIdInNuh             [MAX_NUM_LAYER_IDS];
    548750  Int         m_dimensionId              [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 
     751
     752#if H_MV_6_PS_O0109_22
     753  Int         m_viewIdLen;
     754#else
    549755  Int         m_viewIdLenMinus1;
     756#endif
    550757  Int         m_viewIdVal                [MAX_NUM_LAYERS];
    551758  Bool        m_directDependencyFlag     [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
     759#if H_MV_6_ILDSD_O0120_26
     760  Bool        m_vpsSubLayersMaxMinus1PresentFlag;
     761  Int         m_subLayersVpsMaxMinus1    [MAX_NUM_LAYERS];
     762#endif
    552763  Bool        m_maxTidRefPresentFlag;
     764#if H_MV_6_ILDDS_O0225_30
     765  Int         m_maxTidIlRefPicsPlus1     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     766#else
    553767  Int         m_maxTidIlRefPicPlus1      [MAX_NUM_LAYERS];
     768#endif
    554769  Bool        m_allRefLayersActiveFlag;
    555770  Int         m_vpsNumberLayerSetsMinus1;
     
    559774  Bool        m_moreOutputLayerSetsThanDefaultFlag;
    560775  Int         m_numAddOutputLayerSetsMinus1;   
     776#if H_MV_6_PS_0109_25
     777  Int         m_defaultOneTargetOutputLayerIdc;
     778#else
    561779  Bool        m_defaultOneTargetOutputLayerFlag;
     780#endif
    562781  Int         m_outputLayerSetIdxMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
    563782  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
    564783  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
     784#if H_MV_6_GEN_0153_28
     785  Bool        m_altOutputLayerFlag;
     786#endif
    565787  Bool        m_repFormatIdxPresentFlag;
    566788  Int         m_vpsNumRepFormatsMinus1;
    567789  Int         m_vpsRepFormatIdx          [MAX_NUM_LAYERS];
    568790  TComRepFormat* m_repFormat             [MAX_NUM_LAYERS];
    569   Bool        m_maxOneActiveRefLayerFlag;       
     791  Bool        m_maxOneActiveRefLayerFlag;
     792#if H_MV_6_MISC_O0062_31
     793  Bool        m_pocLsbNotPresentFlag     [MAX_NUM_LAYERS];
     794#endif
     795
     796#if H_MV_6_HRD_O0217_13
     797  TComDpbSize* m_dpbSize;
     798#endif
     799#if !H_MV_6_PS_O0223_29       
    570800  Bool        m_crossLayerIrapAlignedFlag;
     801#endif
    571802  Int         m_directDepTypeLenMinus2;         
     803#if H_MV_6_PS_O0096_21
     804  Bool        m_defaultDirectDependencyFlag;
     805  Int         m_defaultDirectDependencyType;
     806#endif
    572807  Bool        m_vpsVuiPresentFlag;
    573808  TComVPSVUI* m_vpsVUI;
     
    588823  Int         m_motionPredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    589824  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
     825 
     826#if H_MV_6_HRD_O0217_13
     827  std::vector< std::vector< Int> >       m_targetDecLayerIdLists;   //[TargetOptLayerSetIdx][i]
     828  std::vector< std::vector< Int> >       m_targetOptLayerIdLists;
     829  std::vector< std::vector< Int> >       m_layerSetLayerIdList;
     830#endif
     831
     832
    590833  Int         xGetDimBitOffset( Int j );
    591  
     834
    592835  // VPS EXTENSION 2 SYNTAX ELEMENTS
    593836#if H_3D_ARP
     
    649892  UInt    getMaxTLayers  ()                   { return m_uiMaxTLayers;   }
    650893  Void    setMaxTLayers  (UInt t)             { m_uiMaxTLayers = t; }
    651  
     894#if H_MV_6_HRD_O0164_15
     895  UInt    getMaxSubLayersMinus1()             { return m_uiMaxTLayers - 1;  }  // For consistency with draft spec
     896#endif
    652897#if H_MV   
    653898  UInt    getMaxLayersMinus1()                { return m_uiMaxLayersMinus1;  };
     
    724969  Int     getDimensionId( Int layerIdInVps, Int scalIdx )                  { return m_dimensionId[layerIdInVps][scalIdx]; }
    725970
     971#if H_MV_6_PS_O0109_22
     972  Void    setViewIdLen( Int  val )                                         { m_viewIdLen = val; }
     973  Int     getViewIdLen(  )                                                 { return m_viewIdLen; }
     974#else
    726975  Void    setViewIdLenMinus1( Int  val )                                   { m_viewIdLenMinus1 = val; }
    727976  Int     getViewIdLenMinus1(  )                                           { return m_viewIdLenMinus1; }
     977#endif
    728978
    729979  Void    setViewIdVal( Int viewOrderIndex, Int  val )                     { m_viewIdVal[viewOrderIndex] = val; }
     
    731981  Void    setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val;  }
    732982  Bool    getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps )           { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; }
    733 
     983#if H_MV_6_ILDSD_O0120_26
     984  Void    setVpsSubLayersMaxMinus1PresentFlag( Bool flag )                 { m_vpsSubLayersMaxMinus1PresentFlag = flag; }
     985  Bool    getVpsSubLayersMaxMinus1PresentFlag(  )                          { return m_vpsSubLayersMaxMinus1PresentFlag; }
     986  Void    setSubLayersVpsMaxMinus1( Int i, Int  val )                      { m_subLayersVpsMaxMinus1[i] = val; }
     987  Int     getSubLayersVpsMaxMinus1( Int i )                                { return m_subLayersVpsMaxMinus1[i]; }
     988  Void    checkSubLayersVpsMaxMinus1( Int i )                              { assert( m_subLayersVpsMaxMinus1[i] >= 0 && m_subLayersVpsMaxMinus1[i] <= m_uiMaxTLayers - 1 ); }
     989#endif
    734990  Void    setMaxTidRefPresentFlag( Bool flag )                             { m_maxTidRefPresentFlag = flag; }
    735991  Bool    getMaxTidRefPresentFlag(  )                                      { return m_maxTidRefPresentFlag; }
     992#if H_MV_6_ILDDS_O0225_30
     993  Void    setMaxTidIlRefPicsPlus1( Int i, Int j, Int  val )                { m_maxTidIlRefPicsPlus1[i][j] = val; }
     994  Int     getMaxTidIlRefPicsPlus1( Int i, Int j )                          { return m_maxTidIlRefPicsPlus1[i][j]; }
     995#else
    736996  Void    setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val )              { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val;  }
    737997  Int     getMaxTidIlRefPicPlus1( Int layerIdInVps )                       { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; }
     998#endif
    738999  Void    setAllRefLayersActiveFlag( Bool flag )                           { m_allRefLayersActiveFlag = flag; }
    7391000  Bool    getAllRefLayersActiveFlag(  )                                    { return m_allRefLayersActiveFlag; }
     
    7491010  Void    setProfileRefMinus1( Int profileTierLevelIdx, Int val )          { m_profileRefMinus1[ profileTierLevelIdx ] = val;  }
    7501011  Int     getProfileRefMinus1( Int profileTierLevelIdx )                   { return m_profileRefMinus1[ profileTierLevelIdx ]; }
    751 
     1012#if H_MV_6_PS_O0109_23
     1013  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.
     1014#endif
    7521015  Void    setMoreOutputLayerSetsThanDefaultFlag( Bool flag )               { m_moreOutputLayerSetsThanDefaultFlag = flag; }
    7531016  Bool    getMoreOutputLayerSetsThanDefaultFlag()                          { return m_moreOutputLayerSetsThanDefaultFlag; }
     
    7551018  Void    setNumAddOutputLayerSetsMinus1( Int val )                        { m_numAddOutputLayerSetsMinus1 = val; }
    7561019  Int     getNumAddOutputLayerSetsMinus1( )                                { return m_numAddOutputLayerSetsMinus1; }
    757  
     1020
     1021#if H_MV_6_PS_0109_25 
     1022  Void    setDefaultOneTargetOutputLayerIdc( Int  val )                    { m_defaultOneTargetOutputLayerIdc = val; }
     1023  Int     getDefaultOneTargetOutputLayerIdc(  )                            { return m_defaultOneTargetOutputLayerIdc; }
     1024  Void    checkDefaultOneTargetOutputLayerIdc( )                           { assert( m_defaultOneTargetOutputLayerIdc >= 0 && m_defaultOneTargetOutputLayerIdc <= 1 ); }
     1025#else
    7581026  Void    setDefaultOneTargetOutputLayerFlag( Bool flag )                  { m_defaultOneTargetOutputLayerFlag = flag; }
    7591027  Bool    getDefaultOneTargetOutputLayerFlag( )                            { return m_defaultOneTargetOutputLayerFlag; }
     1028#endif
    7601029 
    7611030  Void    setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val )        { m_outputLayerSetIdxMinus1[ outLayerSetIdx ]  = val; }
     
    7641033  Void    setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag )       { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; }
    7651034  Bool    getOutputLayerFlag( Int outLayerSetIdx, Int i )                  { return m_outputLayerFlag[ outLayerSetIdx ][ i ]; }
     1035#if H_MV_6_HRD_O0217_13
     1036  Bool    inferOutputLayerFlag( Int layerSetIdx, Int i )                   { return ( getDefaultOneTargetOutputLayerIdc( ) == 0 || ( ( getDefaultOneTargetOutputLayerIdc( ) == 1 ) && ( i == m_layerSetLayerIdList[layerSetIdx].size() - 1  ) ));  }
     1037#endif
    7661038
    7671039  Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx  = val ]; }
    7681040  Int     getProfileLevelTierIdx( Int outLayerSetIdx )                     { return m_profileLevelTierIdx[ outLayerSetIdx ]; }
    769 
     1041#if H_MV_6_GEN_0153_28
     1042  Void    setAltOutputLayerFlag( Bool flag )                               { m_altOutputLayerFlag = flag; }
     1043  Bool    getAltOutputLayerFlag(  )                                        { return m_altOutputLayerFlag; }
     1044#endif
    7701045  Void    setRepFormatIdxPresentFlag( Bool flag )                          { m_repFormatIdxPresentFlag = flag; }
    7711046  Bool    getRepFormatIdxPresentFlag(  )                                   { return m_repFormatIdxPresentFlag; }
     
    7811056  Void    setMaxOneActiveRefLayerFlag( Bool flag)                          { m_maxOneActiveRefLayerFlag = flag; }
    7821057  Bool    getMaxOneActiveRefLayerFlag( )                                   { return m_maxOneActiveRefLayerFlag; }
     1058
     1059#if H_MV_6_HRD_O0217_13
     1060  Void    setDpbSize( TComDpbSize* val )                                   { assert( m_dpbSize != 0 ); m_dpbSize = val; }
     1061  TComDpbSize* getDpbSize( )                                               { return m_dpbSize;}
     1062#endif
     1063
     1064#if H_MV_6_MISC_O0062_31
     1065  Void    setPocLsbNotPresentFlag( Int i, Bool flag )                      { m_pocLsbNotPresentFlag[i] = flag; }
     1066  Bool    getPocLsbNotPresentFlag( Int i )                                 { return m_pocLsbNotPresentFlag[i]; }
     1067#endif
     1068#if !H_MV_6_PS_O0223_29 
    7831069  Void    setCrossLayerIrapAlignedFlag( Bool flag )                        { m_crossLayerIrapAlignedFlag = flag; }
    7841070  Bool    getCrossLayerIrapAlignedFlag(  )                                 { return m_crossLayerIrapAlignedFlag; }
     1071#endif
    7851072  Void    setDirectDepTypeLenMinus2( Int val)                              { m_directDepTypeLenMinus2 = val; }
    7861073  Int     getDirectDepTypeLenMinus2( )                                     { return m_directDepTypeLenMinus2; }
    7871074
     1075#if H_MV_6_PS_O0096_21
     1076  Void    setDefaultDirectDependencyFlag( Bool flag )                      { m_defaultDirectDependencyFlag = flag; }
     1077  Bool    getDefaultDirectDependencyFlag(  )                               { return m_defaultDirectDependencyFlag; }
     1078
     1079  Void    setDefaultDirectDependencyType( Int  val )                       { m_defaultDirectDependencyType = val; }
     1080  Int     getDefaultDirectDependencyType(  )                               { return m_defaultDirectDependencyType; }
     1081#endif
    7881082  Void    setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; }
    7891083  Int     getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps)   { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; }
     
    7931087  TComVPSVUI* getVPSVUI(  )                                                { return m_vpsVUI;  }
    7941088  // VPS EXTENSION SEMANTICS VARIABLES
     1089
    7951090  Void    setLayerIdInVps( Int layerIdInNuh, Int val )                     { m_layerIdInVps[layerIdInNuh] = val;  }
    7961091  Int     getLayerIdInVps( Int layerIdInNuh )                              { assert( m_layerIdInVps[layerIdInNuh] >= 0 ); return m_layerIdInVps[layerIdInNuh]; }
    7971092
    7981093  Int     getScalabilityId ( Int layerIdInVps, ScalabilityType scalType );
     1094#if H_MV_6_FIX_GET_VIEW_ID
     1095  Int     getViewId        ( Int layerIdInNuh )                            { return m_viewIdVal[ getViewIndex( layerIdInNuh )]; }
     1096#else
    7991097  Int     getViewId        ( Int layerIdInNuh )                            { return m_viewIdVal[ getViewIndex( getLayerIdInVps( layerIdInNuh) )]; }
     1098#endif
    8001099  Void    setRefLayers();
    8011100
     
    8081107  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
    8091108
    810 Int     getProfileLevelTierIdxLen()                                      { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
    811 
    812   Int     getNumLayersInIdList              ( Int lsIdx );;
     1109  Int     getProfileLevelTierIdxLen()                                      { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
     1110
     1111  Int     getNumLayersInIdList ( Int lsIdx );
     1112
     1113#if H_MV_6_HRD_O0217_13
     1114  Int     getNumOutputLayerSets() ;   
     1115  Int     getNumSubDpbs( Int i )                                           { return getNumLayersInIdList( i ); }; 
     1116  Bool    isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh );   
     1117#if H_MV_6_HRD_O0217_13
     1118  Void    deriveLayerSetLayerIdList();
     1119  Void    deriveTargetLayerIdLists();
     1120  std::vector<Int> getTargetDecLayerIdList( Int targetOptLayerSetIdx )     { return m_targetDecLayerIdLists[targetOptLayerSetIdx]; };
     1121  std::vector<Int> getTargetOptLayerIdList( Int targetOptLayerSetIdx )     { return m_targetDecLayerIdLists[targetOptLayerSetIdx]; };
     1122#endif
     1123#endif
     1124
    8131125
    8141126  // inference
     
    10961408  TimingInfo* getTimingInfo() { return &m_timingInfo; }
    10971409
     1410#if H_MV_6_PS_O0118_33
     1411  Void inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr )
     1412  {
     1413    if ( layerIdCurr == 0 || !vps->getVpsVuiPresentFlag() )
     1414    {
     1415      return;
     1416    }
     1417
     1418    TComVPSVUI* vpsVUI = vps->getVPSVUI();
     1419    assert( vpsVUI != NULL ); 
     1420
     1421    TComVideoSignalInfo* videoSignalInfo = vpsVUI->getVideoSignalInfo( vpsVUI->getVpsVideoSignalInfoIdx( vps->getLayerIdInVps( layerIdCurr ) ) );
     1422    assert( videoSignalInfo != NULL );
     1423
     1424    setVideoFormat            ( videoSignalInfo->getVideoVpsFormat            () );
     1425    setVideoFullRangeFlag     ( videoSignalInfo->getVideoFullRangeVpsFlag     () );
     1426    setColourPrimaries        ( videoSignalInfo->getColourPrimariesVps        () );
     1427    setTransferCharacteristics( videoSignalInfo->getTransferCharacteristicsVps() );
     1428    setMatrixCoefficients     ( videoSignalInfo->getMatrixCoeffsVps           () );     
     1429  }
     1430#endif
    10981431};
    10991432
     
    11811514  TComVPS*    m_pcVPS;
    11821515  // SPS
     1516#if H_MV_6_PSEM_O0142_3
     1517  Bool        m_spsExtensionFlag;
     1518  Bool        m_spsExtensionTypeFlag[PS_EX_T_MAX_NUM];
     1519#endif
    11831520  Bool        m_spsInferScalingListFlag;
    11841521  Int         m_spsScalingListRefLayerId;
    11851522  Bool        m_updateRepFormatFlag;
     1523#if H_MV_6_PS_REP_FORM_18_19_20 
     1524  Int         m_spsRepFormatIdx;
     1525#endif
    11861526  // SPS Extension
    11871527  Bool        m_interViewMvVertConstraintFlag;
     1528#if H_MV_6_SHVC_O0098_36
     1529  Int         m_numScaledRefLayerOffsets;
     1530  Int         m_scaledRefLayerId          [MAX_NUM_SCALED_REF_LAYERS];
     1531  Int         m_scaledRefLayerLeftOffset  [MAX_NUM_LAYERS];
     1532  Int         m_scaledRefLayerTopOffset   [MAX_NUM_LAYERS];
     1533  Int         m_scaledRefLayerRightOffset [MAX_NUM_LAYERS];
     1534  Int         m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS];
     1535#endif
    11881536#endif
    11891537#if H_3D
     
    13221670  TComPTL* getPTL()     { return &m_pcPTL; }
    13231671#if H_MV
     1672#if H_MV_6_PSEM_O0142_3
     1673  Void setSpsExtensionFlag( Bool flag ) { m_spsExtensionFlag = flag; }
     1674  Bool getSpsExtensionFlag( )  { return m_spsExtensionFlag; }
     1675
     1676  Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; }
     1677  Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; }
     1678#endif
    13241679  Void      setVPS          ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; }
    13251680  TComVPS*  getVPS          () { return m_pcVPS; }
     
    13331688  Void setUpdateRepFormatFlag( Bool flag )     { m_updateRepFormatFlag = flag; }
    13341689  Bool getUpdateRepFormatFlag(  )              { return m_updateRepFormatFlag; }
     1690#if H_MV_6_PS_REP_FORM_18_19_20
     1691  Void setSpsRepFormatIdx( Int  val )          { m_spsRepFormatIdx = val; }
     1692  Int  getSpsRepFormatIdx(  )                  { return m_spsRepFormatIdx; }
     1693#endif
    13351694  // SPS Extension
    13361695  Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; }
    13371696  Bool getInterViewMvVertConstraintFlag()         { return m_interViewMvVertConstraintFlag;}
     1697
     1698#if H_MV_6_SHVC_O0098_36
     1699  Void setNumScaledRefLayerOffsets( Int  val )    { m_numScaledRefLayerOffsets = val; }
     1700  Int  getNumScaledRefLayerOffsets(  )            { return m_numScaledRefLayerOffsets; }
     1701
     1702  Void setScaledRefLayerId( Int i, Int  val )     { m_scaledRefLayerId[i] = val; }
     1703  Int  getScaledRefLayerId( Int i )               { return m_scaledRefLayerId[i]; }
     1704
     1705  Void setScaledRefLayerLeftOffset( Int j, Int  val ) { m_scaledRefLayerLeftOffset[j] = val; }
     1706  Int  getScaledRefLayerLeftOffset( Int j )           { return m_scaledRefLayerLeftOffset[j]; }
     1707
     1708  Void setScaledRefLayerTopOffset( Int j, Int  val )  { m_scaledRefLayerTopOffset[j] = val; }
     1709  Int  getScaledRefLayerTopOffset( Int j )            { return m_scaledRefLayerTopOffset[j]; }
     1710
     1711  Void setScaledRefLayerRightOffset( Int j, Int  val ) { m_scaledRefLayerRightOffset[j] = val; }
     1712  Int  getScaledRefLayerRightOffset( Int j )           { return m_scaledRefLayerRightOffset[j]; }
     1713
     1714  Void setScaledRefLayerBottomOffset( Int j, Int  val ) { m_scaledRefLayerBottomOffset[j] = val; }
     1715  Int  getScaledRefLayerBottomOffset( Int j )           { return m_scaledRefLayerBottomOffset[j]; }
     1716#endif
    13381717  // Inference
    13391718  Void inferRepFormat( TComVPS* vps, Int layerIdCurr );
    1340 
    13411719  Void inferScalingList( TComSPS* spsSrc );
    13421720#endif
     
    17362114// Additional slice header syntax elements
    17372115  Bool       m_pocResetFlag;
     2116#if H_MV_6_RALS_O0149_11
     2117  Bool       m_crossLayerBlaFlag;
     2118#endif
    17382119  Bool       m_discardableFlag;
    17392120  Bool       m_interLayerPredEnabledFlag;
     
    20732454// Additional slice header syntax elements
    20742455
     2456#if H_MV_6_RALS_O0149_11
     2457  Void setCrossLayerBlaFlag( Bool flag ) { m_crossLayerBlaFlag = flag; }
     2458  Bool getCrossLayerBlaFlag(  ) { return m_crossLayerBlaFlag; }
     2459  Void checkCrossLayerBlaFlag ( )
     2460  {
     2461    // 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.
     2462    if ( getLayerId() != 0 || getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_W_RADL || getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP )
     2463    {
     2464      assert( m_crossLayerBlaFlag == 0 );
     2465    }
     2466  }
     2467#endif
     2468
    20752469  Void setPocResetFlag( Bool flag ) { m_pocResetFlag = flag; }
    20762470  Bool getPocResetFlag(  ) { return m_pocResetFlag; }
    20772471
    2078 Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; }
    2079 Bool getDiscardableFlag(  ) { return m_discardableFlag; }
    2080 
    2081 Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; }
    2082 Bool getInterLayerPredEnabledFlag(  ) { return m_interLayerPredEnabledFlag; }
    2083 
    2084 Void setNumInterLayerRefPicsMinus1( Int  val ) { m_numInterLayerRefPicsMinus1 = val; }
    2085 Int  getNumInterLayerRefPicsMinus1(  ) { return m_numInterLayerRefPicsMinus1; }
    2086 
    2087 Void setInterLayerPredLayerIdc( Int i, Int  val ) { m_interLayerPredLayerIdc[i] = val; }
    2088 Int  getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; }
     2472  Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; }
     2473  Bool getDiscardableFlag(  ) { return m_discardableFlag; }
     2474
     2475  Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; }
     2476  Bool getInterLayerPredEnabledFlag(  ) { return m_interLayerPredEnabledFlag; }
     2477
     2478  Void setNumInterLayerRefPicsMinus1( Int  val ) { m_numInterLayerRefPicsMinus1 = val; }
     2479  Int  getNumInterLayerRefPicsMinus1(  ) { return m_numInterLayerRefPicsMinus1; }
     2480
     2481  Void setInterLayerPredLayerIdc( Int i, Int  val ) { m_interLayerPredLayerIdc[i] = val; }
     2482  Int  getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; }
    20892483
    20902484  // Additional variables derived in slice header semantics
    20912485  Int  getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
    20922486  Int  getInterLayerPredLayerIdcLen    ( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
     2487
     2488#if H_MV_6_ILDDS_ILREFPICS_27_34
     2489  Int  getRefLayerPicFlag( Int i );
     2490  Int  getRefLayerPicIdc ( Int j );
     2491  Int  getNumRefLayerPics( );
     2492#endif
    20932493
    20942494  Int  getNumActiveRefLayerPics( );
Note: See TracChangeset for help on using the changeset viewer.