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


Ignore:
Timestamp:
11 Sep 2013, 14:40:25 (12 years ago)
Author:
tech
Message:

Merged 8.0-dev0@621 (MV-HEVC 5 HLS).

File:
1 edited

Legend:

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

    r608 r622  
    169169  Void     processRefMatrix               (UInt sizeId, UInt listId , UInt refListId );
    170170  Bool     xParseScalingList              (Char* pchFile);
     171#if H_MV5
     172#if H_MV
     173  Void     inferFrom                      ( TComScalingList* srcScLi );
     174#endif
     175#endif
    171176
    172177private:
     
    402407};
    403408
     409#if H_MV5
     410#if H_MV
     411class TComVPSVUI
     412{
     413private:
     414  Bool m_bitRatePresentVpsFlag;
     415  Bool m_picRatePresentVpsFlag;
     416  Bool m_bitRatePresentFlag          [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     417  Bool m_picRatePresentFlag          [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     418  Int  m_avgBitRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     419  Int  m_maxBitRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     420  Int  m_constantPicRateIdc          [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     421  Int  m_avgPicRate                  [MAX_VPS_OP_SETS_PLUS1][MAX_TLAYER];
     422  Bool m_tileBoundariesAlignedFlag   [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     423  Bool m_ilpRestrictedRefLayersFlag;
     424  Int  m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     425  Bool m_ctuBasedOffsetEnabledFlag   [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     426  Int  m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     427
     428public:
     429  TComVPSVUI();;
     430
     431  Void setBitRatePresentVpsFlag( Bool flag ) { m_bitRatePresentVpsFlag = flag; }
     432  Bool getBitRatePresentVpsFlag(  ) { return m_bitRatePresentVpsFlag; }
     433
     434  Void setPicRatePresentVpsFlag( Bool flag ) { m_picRatePresentVpsFlag = flag; }
     435  Bool getPicRatePresentVpsFlag(  ) { return m_picRatePresentVpsFlag; }
     436
     437  Void setBitRatePresentFlag( Int i, Int j, Bool flag ) { m_bitRatePresentFlag[i][j] = flag; }
     438  Bool getBitRatePresentFlag( Int i, Int j ) { return m_bitRatePresentFlag[i][j]; }
     439
     440  Void setPicRatePresentFlag( Int i, Int j, Bool flag ) { m_picRatePresentFlag[i][j] = flag; }
     441  Bool getPicRatePresentFlag( Int i, Int j ) { return m_picRatePresentFlag[i][j]; }
     442
     443  Void setAvgBitRate( Int i, Int j, Int  val ) { m_avgBitRate[i][j] = val; }
     444  Int  getAvgBitRate( Int i, Int j ) { return m_avgBitRate[i][j]; }
     445
     446  Void setMaxBitRate( Int i, Int j, Int  val ) { m_maxBitRate[i][j] = val; }
     447  Int  getMaxBitRate( Int i, Int j ) { return m_maxBitRate[i][j]; }
     448
     449  Void setConstantPicRateIdc( Int i, Int j, Int  val ) { m_constantPicRateIdc[i][j] = val; }
     450  Int  getConstantPicRateIdc( Int i, Int j ) { return m_constantPicRateIdc[i][j]; }
     451
     452  Void setAvgPicRate( Int i, Int j, Int  val ) { m_avgPicRate[i][j] = val; }
     453  Int  getAvgPicRate( Int i, Int j ) { return m_avgPicRate[i][j]; }
     454
     455  Void setTileBoundariesAlignedFlag( Int i, Int j, Bool flag ) { m_tileBoundariesAlignedFlag[i][j] = flag; }
     456  Bool getTileBoundariesAlignedFlag( Int i, Int j ) { return m_tileBoundariesAlignedFlag[i][j]; }
     457
     458  Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; }
     459  Bool getIlpRestrictedRefLayersFlag(  ) { return m_ilpRestrictedRefLayersFlag; }
     460
     461  Void setMinSpatialSegmentOffsetPlus1( Int i, Int j, Int  val ) { m_minSpatialSegmentOffsetPlus1[i][j] = val; }
     462  Int  getMinSpatialSegmentOffsetPlus1( Int i, Int j ) { return m_minSpatialSegmentOffsetPlus1[i][j]; }
     463
     464  Void setCtuBasedOffsetEnabledFlag( Int i, Int j, Bool flag ) { m_ctuBasedOffsetEnabledFlag[i][j] = flag; }
     465  Bool getCtuBasedOffsetEnabledFlag( Int i, Int j ) { return m_ctuBasedOffsetEnabledFlag[i][j]; }
     466
     467  Void setMinHorizontalCtuOffsetPlus1( Int i, Int j, Int  val ) { m_minHorizontalCtuOffsetPlus1[i][j] = val; }
     468  Int  getMinHorizontalCtuOffsetPlus1( Int i, Int j ) { return m_minHorizontalCtuOffsetPlus1[i][j]; }
     469
     470};
     471
     472class TComRepFormat
     473{
     474private:
     475  Int  m_chromaFormatVpsIdc;
     476  Bool m_separateColourPlaneVpsFlag;
     477  Int  m_picWidthVpsInLumaSamples;
     478  Int  m_picHeightVpsInLumaSamples;
     479  Int  m_bitDepthVpsLumaMinus8;
     480  Int  m_bitDepthVpsChromaMinus8;
     481
     482public:
     483  TComRepFormat() { }; 
     484
     485  Void setChromaFormatVpsIdc( Int  val ) { m_chromaFormatVpsIdc = val; }
     486  Int  getChromaFormatVpsIdc(  ) { return m_chromaFormatVpsIdc; }
     487
     488  Void setSeparateColourPlaneVpsFlag( Bool flag ) { m_separateColourPlaneVpsFlag = flag; }
     489  Bool getSeparateColourPlaneVpsFlag(  ) { return m_separateColourPlaneVpsFlag; }
     490
     491  Void setPicWidthVpsInLumaSamples( Int  val ) { m_picWidthVpsInLumaSamples = val; }
     492  Int  getPicWidthVpsInLumaSamples(  ) { return m_picWidthVpsInLumaSamples; }
     493
     494  Void setPicHeightVpsInLumaSamples( Int  val ) { m_picHeightVpsInLumaSamples = val; }
     495  Int  getPicHeightVpsInLumaSamples(  ) { return m_picHeightVpsInLumaSamples; }
     496
     497  Void setBitDepthVpsLumaMinus8( Int  val ) { m_bitDepthVpsLumaMinus8 = val; }
     498  Int  getBitDepthVpsLumaMinus8(  ) { return m_bitDepthVpsLumaMinus8; }
     499
     500  Void setBitDepthVpsChromaMinus8( Int  val ) { m_bitDepthVpsChromaMinus8 = val; }
     501  Int  getBitDepthVpsChromaMinus8(  ) { return m_bitDepthVpsChromaMinus8; }
     502};
     503#endif
     504#endif
     505
    404506class TComVPS
    405507{
     
    407509  Int         m_VPSId;
    408510  UInt        m_uiMaxTLayers;
     511
     512#if H_MV5
     513#if H_MV
     514  UInt        m_uiMaxLayersMinus1;
     515#else
    409516  UInt        m_uiMaxLayers;
     517#endif
     518#else
     519  UInt        m_uiMaxLayers;
     520#endif
    410521  Bool        m_bTemporalIdNestingFlag;
    411522 
     
    440551  /// VPS EXTENSION SYNTAX ELEMENTS
    441552  Bool        m_avcBaseLayerFlag;
     553#if H_MV5
     554  Int         m_vpsVuiOffset;
     555#endif
    442556  Bool        m_splittingFlag;
     557#if H_MV5
     558  Bool        m_scalabilityMaskFlag          [MAX_NUM_SCALABILITY_TYPES];
     559#else
    443560  Bool        m_scalabilityMask          [MAX_NUM_SCALABILITY_TYPES];
     561#endif
    444562  Int         m_dimensionIdLen           [MAX_NUM_SCALABILITY_TYPES];
    445563  Bool        m_vpsNuhLayerIdPresentFlag;
    446564  Int         m_layerIdInNuh             [MAX_NUM_LAYER_IDS];
    447565  Int         m_dimensionId              [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 
     566#if H_MV5
     567  Int         m_viewIdLenMinus1;
     568  Int         m_viewIdVal                [MAX_NUM_LAYERS];
     569#endif
    448570  Bool        m_directDependencyFlag     [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
     571#if H_MV5
     572  Bool        m_maxTidRefPresentFlag;
     573#endif
    449574  Int         m_maxTidIlRefPicPlus1      [MAX_NUM_LAYERS];
     575#if H_MV5
     576  Bool        m_allRefLayersActiveFlag;
     577#endif
    450578  Int         m_vpsNumberLayerSetsMinus1;
    451579  Int         m_vpsNumProfileTierLevelMinus1;   
     
    458586  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
    459587  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
     588#if H_MV5
     589  Bool        m_repFormatIdxPresentFlag;
     590  Int         m_vpsNumRepFormatsMinus1;
     591  Int         m_vpsRepFormatIdx          [MAX_NUM_LAYERS];
     592  TComRepFormat* m_repFormat             [MAX_NUM_LAYERS];
     593#endif
    460594  Bool        m_maxOneActiveRefLayerFlag;       
     595#if H_MV5
     596  Bool        m_crossLayerIrapAlignedFlag;
     597#endif
    461598  Int         m_directDepTypeLenMinus2;         
     599#if H_MV5
     600  Bool        m_vpsVuiPresentFlag;
     601  TComVPSVUI* m_vpsVUI;
     602#endif
    462603  Int         m_directDependencyType     [MAX_NUM_LAYERS] [MAX_NUM_LAYERS];
    463604
     
    475616  Bool        m_motionPredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    476617  Int         m_motionPredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     618#if H_MV5
     619  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
     620#else
    477621#if H_3D
    478622  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
     
    480624
    481625  Int         xCeilLog2       ( Int val );
     626#endif
    482627  Int         xGetDimBitOffset( Int j );
    483628 
     629  // VPS EXTENSION 2 SYNTAX ELEMENTS
    484630#if H_3D_ARP
    485631  UInt        m_uiUseAdvResPred          [MAX_NUM_LAYERS   ];
     
    504650  Int*        m_iIdx2DepthValue          [MAX_NUM_LAYERS   ];
    505651#endif
    506 #if H_3D_TMVP
     652#if H_3D
    507653  Bool        m_ivMvScalingFlag;
    508654#endif
     
    535681  Void    setMaxTLayers  (UInt t)             { m_uiMaxTLayers = t; }
    536682 
     683#if H_MV5
     684#if H_MV   
     685  UInt    getMaxLayersMinus1()                { return m_uiMaxLayersMinus1;  };
     686  Void    setMaxLayersMinus1(UInt l)          { m_uiMaxLayersMinus1 = l; }
     687#else
    537688  UInt    getMaxLayers   ()                   { return m_uiMaxLayers;   }
    538689  Void    setMaxLayers   (UInt l)             { m_uiMaxLayers = l; }
     690#endif
     691#else
     692  UInt    getMaxLayers   ()                   { return m_uiMaxLayers;   }
     693  Void    setMaxLayers   (UInt l)             { m_uiMaxLayers = l; }
     694#endif
    539695
    540696  Bool    getTemporalNestingFlag   ()         { return m_bTemporalIdNestingFlag;   }
     
    579735  Bool    getAvcBaseLayerFlag()                                            { return m_avcBaseLayerFlag; }
    580736
     737#if H_MV5
     738  Void    setVpsVuiOffset( Int  val )                                      { m_vpsVuiOffset = val; }
     739  Int     getVpsVuiOffset(  )                                              { return m_vpsVuiOffset; }
     740#endif
     741
    581742  Void    setSplittingFlag( Bool val )                                     { m_splittingFlag = val;  }
    582743  Bool    getSplittingFlag()                                               { return m_splittingFlag; }
    583744
     745#if H_MV5
     746  Void    setScalabilityMaskFlag( UInt val );
     747  Void    setScalabilityMaskFlag( Int scalType, Bool val )                     { m_scalabilityMaskFlag[scalType] = val;  }
     748  Bool    getScalabilityMaskFlag( Int scalType )                               { return m_scalabilityMaskFlag[scalType]; }
     749#else
    584750  Void    setScalabilityMask( UInt val );
    585751
    586752  Void    setScalabilityMask( Int scalType, Bool val )              { m_scalabilityMask[scalType] = val;  }
    587753  Bool    getScalabilityMask( Int scalType )                        { return m_scalabilityMask[scalType]; }
    588 
     754#endif
    589755  Int     getNumScalabilityTypes( );
    590756
     
    603769  Int     getDimensionId( Int layerIdInVps, Int scalIdx )                  { return m_dimensionId[layerIdInVps][scalIdx]; }
    604770
     771#if H_MV5
     772  Void    setViewIdLenMinus1( Int  val )                                   { m_viewIdLenMinus1 = val; }
     773  Int     getViewIdLenMinus1(  )                                           { return m_viewIdLenMinus1; }
     774
     775  Void    setViewIdVal( Int viewOrderIndex, Int  val )                     { m_viewIdVal[viewOrderIndex] = val; }
     776  Int     getViewIdVal( Int viewOrderIndex )                               { return m_viewIdVal[viewOrderIndex]; }
     777#endif
    605778  Void    setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val;  }
    606779  Bool    getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps )           { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; }
    607780
     781#if H_MV5
     782  Void    setMaxTidRefPresentFlag( Bool flag )                             { m_maxTidRefPresentFlag = flag; }
     783  Bool    getMaxTidRefPresentFlag(  )                                      { return m_maxTidRefPresentFlag; }
     784#endif
    608785  Void    setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val )              { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val;  }
    609786  Int     getMaxTidIlRefPicPlus1( Int layerIdInVps )                       { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; }
    610  
     787#if H_MV5
     788  Void    setAllRefLayersActiveFlag( Bool flag )                           { m_allRefLayersActiveFlag = flag; }
     789  Bool    getAllRefLayersActiveFlag(  )                                    { return m_allRefLayersActiveFlag; }
     790#endif
    611791  Void    setVpsNumberLayerSetsMinus1( Int val )                           { m_vpsNumberLayerSetsMinus1 = val;  }
    612792  Int     getVpsNumberLayerSetsMinus1( )                                   { return m_vpsNumberLayerSetsMinus1; }
     
    639819  Int     getProfileLevelTierIdx( Int outLayerSetIdx )                     { return m_profileLevelTierIdx[ outLayerSetIdx ]; }
    640820
     821#if H_MV5
     822  Void    setRepFormatIdxPresentFlag( Bool flag )                          { m_repFormatIdxPresentFlag = flag; }
     823  Bool    getRepFormatIdxPresentFlag(  )                                   { return m_repFormatIdxPresentFlag; }
     824
     825  Void    setVpsNumRepFormatsMinus1( Int  val )                            { m_vpsNumRepFormatsMinus1 = val; }
     826  Int     getVpsNumRepFormatsMinus1(  )                                    { return m_vpsNumRepFormatsMinus1; }
     827
     828  Void    setVpsRepFormatIdx( Int i, Int  val )                            { m_vpsRepFormatIdx[i] = val; }
     829  Int     getVpsRepFormatIdx( Int i )                                      { return m_vpsRepFormatIdx[i]; }
     830
     831  Void    setRepFormat( Int i, TComRepFormat* val )                        { m_repFormat[i] = val;  }
     832  TComRepFormat* getRepFormat( Int i )                                     { return m_repFormat[i]; }
     833#endif
    641834  Void    setMaxOneActiveRefLayerFlag( Bool flag)                          { m_maxOneActiveRefLayerFlag = flag; }
    642835  Bool    getMaxOneActiveRefLayerFlag( )                                   { return m_maxOneActiveRefLayerFlag; }
    643 
     836#if H_MV5
     837  Void    setCrossLayerIrapAlignedFlag( Bool flag )                        { m_crossLayerIrapAlignedFlag = flag; }
     838  Bool    getCrossLayerIrapAlignedFlag(  )                                 { return m_crossLayerIrapAlignedFlag; }
     839#endif
    644840  Void    setDirectDepTypeLenMinus2( Int val)                              { m_directDepTypeLenMinus2 = val; }
    645841  Int     getDirectDepTypeLenMinus2( )                                     { return m_directDepTypeLenMinus2; }
     
    647843  Void    setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; }
    648844  Int     getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps)   { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; }
    649 
    650 
     845#if H_MV5 
     846  Void    setVpsVuiPresentFlag( Bool flag )                                { m_vpsVuiPresentFlag = flag; }
     847  Bool    getVpsVuiPresentFlag(  )                                         { return m_vpsVuiPresentFlag; }
     848
     849  TComVPSVUI* getVPSVUI(  )                                                { return m_vpsVUI;  }
     850#endif
    651851  // VPS EXTENSION SEMANTICS VARIABLES
    652852  Void    setLayerIdInVps( Int layerIdInNuh, Int val )                     { m_layerIdInVps[layerIdInNuh] = val;  }
     
    654854
    655855  Int     getScalabilityId ( Int layerIdInVps, ScalabilityType scalType );
     856#if H_MV5
     857  Int     getViewId        ( Int layerIdInNuh )                            { return m_viewIdVal[ getViewIndex( getLayerIdInVps( layerIdInNuh) )]; }
     858#else
    656859  Int     getViewId  ( Int layerIdInVps )                                  { return getScalabilityId( layerIdInVps, VIEW_ID  ); }
    657860
     861#endif
    658862  Void    setRefLayers();
    659863
     864#if H_MV5
     865  Int     getViewIndex    ( Int layerIdInNuh )                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), VIEW_ORDER_INDEX  ); }   
     866  Int     getNumViews();
     867
     868  Int     getNumDirectRefLayers( Int layerIdInNuh )                        { return m_numDirectRefLayers[ layerIdInNuh ];  };                               
     869  Int     getRefLayerId        ( Int layerIdInNuh, Int idx );;
     870#else
    660871  Int     getNumDirectRefLayers( Int layerIdInVps )          { return m_numDirectRefLayers[ layerIdInVps ];  };                               
    661872  Int     getRefLayerId        ( Int layerIdInVps, Int idx );;
     
    668879  Bool    getMotionPredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_motionPredEnabledFlag [layerIdInVps][idx]; }
    669880  Int     getMotionPredRefLayerId  ( Int layerIdInVps, Int idx ) { return m_motionPredRefLayerId  [layerIdInVps][idx]; }
    670 
     881#endif 
    671882  Bool    checkVPSExtensionSyntax();
    672883  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
    673884
     885  #if H_MV5
     886Int     getProfileLevelTierIdxLen()                                      { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
     887#else
    674888  Int     getProfileLevelTierIdxLen() { return xCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };       
     889#endif
     890
    675891  Int     getNumLayersInIdList              ( Int lsIdx );;
    676892
     
    679895  Int     inferLastDimsionIdLenMinus1();
    680896
     897#if H_MV5
     898  // helpers
     899  Bool    getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 );
     900#endif
     901  /// VPS EXTENSION 2 SYNTAX ELEMENTS
    681902#if H_3D 
     903#if H_MV5
     904  Int     getDepthId      ( Int layerIdInNuh)                             { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPTH_ID ); }
     905#else
    682906  Void    initViewIndex();
    683907  Int     getViewIndex    ( Int layerIdInVps )                             { return m_viewIndex[ layerIdInVps ]; }   
    684908  Int     getDepthId      ( Int layerIdInVps )                             { return getScalabilityId( layerIdInVps, DEPTH_ID ); }
     909#endif
    685910  Int     getLayerIdInNuh( Int viewIndex, Bool depthFlag );   
    686911
     
    716941#endif
    717942
    718 #if H_3D_TMVP
    719943  Bool    getIvMvScalingFlag   (  )                       { return m_ivMvScalingFlag; }
    720944  Void    setIvMvScalingFlag   ( Bool b )                 { m_ivMvScalingFlag = b;    } 
    721 #endif
    722945#if LGE_INTER_SDC_E0156
    723946  Bool    getInterSDCFlag      ( Int layerIdInVps )           { return m_bInterSDCFlag[layerIdInVps]; }
     
    737960  Int           m_winTopOffset;
    738961  Int           m_winBottomOffset;
     962#if H_MV5
     963#if H_MV
     964  Bool          m_scaledFlag;
     965#endif
     966#endif
    739967public:
    740968  Window()
     
    744972  , m_winTopOffset      (0)
    745973  , m_winBottomOffset   (0)
     974#if H_MV5
     975#if H_MV
     976  , m_scaledFlag(true)
     977#endif
     978#endif
    746979  { }
    747980
     
    757990  Void          setWindowBottomOffset(Int val)    { m_winBottomOffset = val; m_enabledFlag = true; }
    758991
     992#if H_MV5
     993#if H_MV
     994  Void          setScaledFlag(Bool flag)          { m_scaledFlag = flag;  }
     995  Bool          getScaledFlag() const             { return m_scaledFlag;  }
     996  Void          scaleOffsets( Int scal )         
     997  {
     998    if (! m_scaledFlag )
     999    {
     1000      m_scaledFlag         = true;
     1001      m_winLeftOffset     *= scal;
     1002      m_winRightOffset    *= scal;
     1003      m_winTopOffset      *= scal;
     1004      m_winBottomOffset   *= scal;
     1005    }
     1006  }
     1007#endif
     1008#endif
    7591009  Void          setWindow(Int offsetLeft, Int offsetLRight, Int offsetLTop, Int offsetLBottom)
    7601010  {
     
    8041054  TComHRD m_hrdParameters;
    8051055  TimingInfo m_timingInfo;
     1056#if !H_MV5
    8061057#if H_MV
    8071058  Bool m_tileBoundariesAlignedFlag;
     1059#endif
    8081060#endif
    8091061
     
    8391091    ,m_log2MaxMvLengthHorizontal(15)
    8401092    ,m_log2MaxMvLengthVertical(15)
     1093#if !H_MV5
    8411094#if H_MV
    8421095    ,m_tileBoundariesAlignedFlag(true)
     1096#endif
    8431097#endif
    8441098  {}
     
    9371191  TComHRD* getHrdParameters                 ()             { return &m_hrdParameters; }
    9381192  TimingInfo* getTimingInfo() { return &m_timingInfo; }
     1193#if !H_MV5
    9391194#if H_MV
    9401195Bool getTileBoundariesAlignedFlag(  ) { return m_tileBoundariesAlignedFlag; }
    9411196  Void setTileBoundariesAlignedFlag( Bool flag ) { m_tileBoundariesAlignedFlag = flag; }
    9421197#endif
     1198#endif
     1199
    9431200};
    9441201
     
    10241281  TComPTL     m_pcPTL;
    10251282#if H_MV
     1283#if H_MV5
     1284  TComVPS*    m_pcVPS;
     1285  // SPS
     1286  Bool        m_spsInferScalingListFlag;
     1287  Int         m_spsScalingListRefLayerId;
     1288  Bool        m_updateRepFormatFlag;
     1289#endif
     1290  // SPS Extension
    10261291  Bool        m_interViewMvVertConstraintFlag;
     1292#if !H_MV5
    10271293  Int         m_numIlpRestrictedRefLayers        ;
    10281294  Int         m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS];
    10291295  Bool        m_ctuBasedOffsetEnabledFlag   [MAX_NUM_LAYERS];
    10301296  Int         m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS];
     1297#endif
    10311298#endif
    10321299#if H_3D
     
    11651432  TComPTL* getPTL()     { return &m_pcPTL; }
    11661433#if H_MV
     1434#if H_MV5
     1435  Void      setVPS          ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; }
     1436  TComVPS*  getVPS          () { return m_pcVPS; }
     1437
     1438  Void setSpsInferScalingListFlag( Bool flag ) { m_spsInferScalingListFlag = flag; }
     1439  Bool getSpsInferScalingListFlag(  )          { return m_spsInferScalingListFlag; }
     1440
     1441  Void setSpsScalingListRefLayerId( Int  val ) { m_spsScalingListRefLayerId = val; }
     1442  Int  getSpsScalingListRefLayerId(  )         { return m_spsScalingListRefLayerId; }
     1443
     1444  Void setUpdateRepFormatFlag( Bool flag )     { m_updateRepFormatFlag = flag; }
     1445  Bool getUpdateRepFormatFlag(  )              { return m_updateRepFormatFlag; }
     1446#endif
     1447  // SPS Extension
    11671448  Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; }
    11681449  Bool getInterViewMvVertConstraintFlag()         { return m_interViewMvVertConstraintFlag;}
    1169 
    1170   ////  sps_extension_vui_parameters( )
     1450#if H_MV5
     1451  // Inference
     1452  Void inferRepFormat( TComVPS* vps, Int layerIdCurr );
     1453
     1454  Void inferScalingList( TComSPS* spsSrc );
     1455#else
    11711456  Void setNumIlpRestrictedRefLayers   ( Int val )        { m_numIlpRestrictedRefLayers         = val;}
    11721457  Int  getNumIlpRestrictedRefLayers   ( )                { return m_numIlpRestrictedRefLayers        ;}
     
    11801465  Void setMinHorizontalCtuOffsetPlus1 ( Int i, Int val )   { m_minHorizontalCtuOffsetPlus1 [ i ] = val;}
    11811466  Int  getMinHorizontalCtuOffsetPlus1 ( Int i )            { return m_minHorizontalCtuOffsetPlus1 [ i ];}
     1467
     1468#endif
    11821469#endif
    11831470#if H_3D_QTLPC
     
    12951582  Int m_numExtraSliceHeaderBits;
    12961583
     1584#if H_MV5
     1585#if H_MV
     1586  Int  m_layerId;
     1587  Bool m_ppsInferScalingListFlag;
     1588  Int  m_ppsScalingListRefLayerId;
     1589#endif
     1590#endif
    12971591public:
    12981592  TComPPS();
     
    14161710  Bool getSliceHeaderExtensionPresentFlag   ()                    { return m_sliceHeaderExtensionPresentFlag; }
    14171711  Void setSliceHeaderExtensionPresentFlag   (Bool val)            { m_sliceHeaderExtensionPresentFlag = val; }
     1712#if H_MV5
     1713#if H_MV
     1714  Void setLayerId( Int  val ) { m_layerId = val; }
     1715  Int  getLayerId(  ) { return m_layerId; }
     1716
     1717  Void setPpsInferScalingListFlag( Bool flag ) { m_ppsInferScalingListFlag = flag; }
     1718  Bool getPpsInferScalingListFlag(  ) { return m_ppsInferScalingListFlag; }
     1719
     1720  Void setPpsScalingListRefLayerId( Int  val ) { m_ppsScalingListRefLayerId = val; }
     1721  Int  getPpsScalingListRefLayerId(  ) { return m_ppsScalingListRefLayerId; }
     1722#endif
     1723#endif
    14181724};
    14191725
     
    14481754  Bool        m_PicOutputFlag;        ///< pic_output_flag
    14491755  Int         m_iPOC;
     1756#if H_MV5
     1757#if H_MV
     1758  Int         m_iPOCBeforeReset;
     1759#endif
     1760#endif
    14501761  Int         m_iLastIDR;
    14511762  static Int  m_prevPOC;
     
    15421853  Bool       m_enableTMVPFlag;
    15431854#if H_MV
     1855#if H_MV5
     1856  std::vector<TComPic*>* m_refPicSetInterLayer0;
     1857  std::vector<TComPic*>* m_refPicSetInterLayer1;
     1858  Int        m_layerId;
     1859  Int        m_viewId;
     1860  Int        m_viewIndex;
     1861#if H_3D
     1862  Bool       m_isDepth;
     1863#endif
     1864#else
    15441865  std::vector<TComPic*>* m_refPicSetInterLayer;
    15451866  Int        m_layerId;
     
    15491870  Bool       m_isDepth;
    15501871#endif
     1872#endif
    15511873
    15521874// Additional slice header syntax elements
     1875#if H_MV5
     1876  Bool       m_pocResetFlag;
     1877#endif
    15531878  Bool       m_discardableFlag;
    15541879  Bool       m_interLayerPredEnabledFlag;
    15551880  Int        m_numInterLayerRefPicsMinus1;
    15561881  Int        m_interLayerPredLayerIdc       [MAX_NUM_LAYERS];
     1882#if !H_MV5
    15571883  Bool       m_interLayerSamplePredOnlyFlag;
    15581884  Bool       m_altCollocatedIndicationFlag;
     
    15621888  Int        m_activeMotionPredRefLayerId   [ MAX_NUM_LAYER_IDS ];
    15631889
     1890#endif
    15641891  Int        m_aaiCodedScale [2][MAX_NUM_LAYERS];
    15651892  Int        m_aaiCodedOffset[2][MAX_NUM_LAYERS];
     
    16401967  TComPic*  getIvPic            ( Bool depthFlag, Int viewIndex){ return  m_ivPicsCurrPoc[ depthFlag ? 1 : 0 ][ viewIndex ]; }
    16411968#endif
    1642 #if H_3D_IV_MERGE
     1969#if H_3D
    16431970  TComPic*  getTexturePic       ()                              { return  m_ivPicsCurrPoc[0][ m_viewIndex ]; }
    16441971#endif
     
    16952022 
    16962023#if H_MV
     2024#if H_MV5
     2025  Void      setPocBeforeReset   ( Int i )                       { m_iPOCBeforeReset = i; }
     2026  Int       getPocBeforeReset   ( )                             { return m_iPOCBeforeReset; }
     2027#endif
    16972028  Int       getRefLayerId        ( RefPicList e, Int iRefIdx)    { return  m_aiRefLayerIdList[e][iRefIdx]; }
    16982029  Void      setRefLayerId        ( Int i, RefPicList e, Int iRefIdx ) { m_aiRefLayerIdList[e][iRefIdx] = i; }
    1699 #endif
    1700 #if H_MV
     2030#if H_MV5
     2031  Void      getTempRefPicLists   ( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& refPicSetInterLayer0, std::vector<TComPic*>& refPicSetInterLayer1,                                     
     2032                                   std::vector<TComPic*> rpsCurrList[2], std::vector<Bool> usedAsLongTerm[2], Int& numPocTotalCurr, Bool checkNumPocTotalCurr = false );
     2033
     2034  Void      setRefPicList        ( std::vector<TComPic*> rpsCurrList[2], std::vector<Bool> usedAsLongTerm[2], Int numPocTotalCurr, Bool checkNumPocTotalCurr = false );
     2035#else
    17012036  Void      setRefPicList       ( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& interLayerRefPicSet , Bool checkNumPocTotalCurr = false );
     2037#endif
    17022038#else
    17032039#if FIX1071
     
    17482084  Void applyReferencePictureSet( TComList<TComPic*>& rcListPic, TComReferencePictureSet *RPSList);
    17492085#if H_MV
     2086#if !H_MV5
    17502087  Void createAndApplyIvReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer );
    17512088  static Void markIvRefPicsAsShortTerm    ( std::vector<TComPic*> refPicSetInterLayer );
     2089#else
     2090  Void createInterLayerReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer0, std::vector<TComPic*>& refPicSetInterLayer1 );
     2091  static Void markIvRefPicsAsShortTerm    ( std::vector<TComPic*> refPicSetInterLayer0, std::vector<TComPic*> refPicSetInterLayer1 );
     2092#endif
    17522093  static Void markCurrPic                 ( TComPic* currPic );;
    17532094  static Void markIvRefPicsAsUnused       ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc  );
     2095#if H_MV5
     2096  Void        printRefPicList();
     2097#else
    17542098  Void        xPrintRefPicList();
     2099#endif
    17552100#endif
    17562101  Bool isTemporalLayerSwitchingPoint( TComList<TComPic*>& rcListPic );
     
    18392184  Void      setViewId             ( Int viewId )     { m_viewId = viewId;   }
    18402185  Int       getViewId             ()                 { return m_viewId;     }
     2186#if H_MV5
     2187  Void      setViewIndex          ( Int viewIndex )  { m_viewIndex = viewIndex;   }
     2188  Int       getViewIndex          ()                 { return m_viewIndex;     }
     2189#endif
    18412190#if H_3D
    18422191#if H_3D_TMVP
     
    18452194  Int       getAlterRefIdx          ( RefPicList e )        { return  m_aiAlterRefIdx[e];     }
    18462195#endif
     2196#if !H_MV5
    18472197  Void      setViewIndex          ( Int viewIndex )  { m_viewIndex = viewIndex;   }
    18482198  Int       getViewIndex          ()                 { return m_viewIndex;     }
     2199#endif
    18492200  Void      setIsDepth            ( Bool isDepth )   { m_isDepth = isDepth; }
    18502201  Bool      getIsDepth            ()                 { return m_isDepth; }
     
    18672218#if H_MV
    18682219// Additional slice header syntax elements
     2220
     2221#if H_MV5
     2222  Void setPocResetFlag( Bool flag ) { m_pocResetFlag = flag; }
     2223  Bool getPocResetFlag(  ) { return m_pocResetFlag; }
     2224#endif
     2225
    18692226Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; }
    18702227Bool getDiscardableFlag(  ) { return m_discardableFlag; }
     
    18792236Int  getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; }
    18802237
     2238#if H_MV5
     2239  // Additional variables derived in slice header semantics
     2240  Int  getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
     2241  Int  getInterLayerPredLayerIdcLen    ( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
     2242
     2243  Int  getNumActiveRefLayerPics( );
     2244
     2245  Int  getNumActiveRefLayerPics0( )        { return (Int) m_refPicSetInterLayer0->size();  };
     2246  Int  getNumActiveRefLayerPics1( )        { return (Int) m_refPicSetInterLayer1->size();  };
     2247
     2248  Int  getRefPicLayerId               ( Int i );
     2249
     2250  Void     setRefPicSetInterLayer       ( std::vector<TComPic*>* refPicSetInterLayer0, std::vector<TComPic*>* refPicSetInterLayer1);
     2251  TComPic* getPicFromRefPicSetInterLayer( Int setIdc, Int layerId );
     2252#else
    18812253Void setInterLayerSamplePredOnlyFlag( Bool flag ) { m_interLayerSamplePredOnlyFlag = flag; }
    18822254Bool getInterLayerSamplePredOnlyFlag(  ) { return m_interLayerSamplePredOnlyFlag; }
     
    19052277TComPic* getPicFromRefPicSetInterLayer( Int layerId );
    19062278
     2279#endif
    19072280#endif
    19082281protected:
     
    19112284TComPic*  xGetLongTermRefPic(TComList<TComPic*>& rcListPic, Int poc, Bool pocHasMsb);
    19122285#if H_MV
     2286#if !H_MV5
    19132287  Int       xCeilLog2( Int val );
     2288#endif
    19142289  TComPic*  xGetInterLayerRefPic( std::vector<TComPic*>& rcListIlPic, Int layerId ); 
    19152290#endif
     
    19932368  //! activate a SPS from a active parameter sets SEI message
    19942369  //! \returns true, if activation is successful
     2370#if !H_MV5
    19952371  Bool activateSPSWithSEI(Int SPSId);
    19962372
     
    20122388  Int m_activeSPSId;
    20132389  Int m_activePPSId;
     2390#else
     2391#if H_MV
     2392  Bool activateSPSWithSEI(Int SPSId, Int layerId );
     2393#else
     2394  Bool activateSPSWithSEI(Int SPSId);
     2395#endif
     2396
     2397  //! activate a PPS and depending on isIDR parameter also SPS and VPS
     2398  //! \returns true, if activation is successful
     2399#if H_MV
     2400  Bool activatePPS(Int ppsId, Bool isIRAP, Int layerId );
     2401#else
     2402  Bool activatePPS(Int ppsId, Bool isIRAP);
     2403#endif
     2404
     2405  TComVPS* getActiveVPS(){ return m_vpsMap.getPS(m_activeVPSId); };
     2406#if H_MV
     2407  TComSPS* getActiveSPS( Int layerId ){ return m_spsMap.getPS( m_activeSPSId[ layerId ] ); };
     2408  TComPPS* getActivePPS( Int layerId ){ return m_ppsMap.getPS( m_activePPSId[ layerId ] ); };
     2409#else
     2410  TComSPS* getActiveSPS(){ return m_spsMap.getPS(m_activeSPSId); };
     2411  TComPPS* getActivePPS(){ return m_ppsMap.getPS(m_activePPSId); };
     2412#endif
     2413protected:
     2414 
     2415  ParameterSetMap<TComVPS> m_vpsMap;
     2416  ParameterSetMap<TComSPS> m_spsMap;
     2417  ParameterSetMap<TComPPS> m_ppsMap;
     2418
     2419  Int m_activeVPSId;
     2420#if H_MV
     2421  Int m_activeSPSId[ MAX_NUM_LAYERS ];
     2422  Int m_activePPSId[ MAX_NUM_LAYERS ];
     2423#else
     2424  Int m_activeSPSId;
     2425  Int m_activePPSId;
     2426#endif
     2427
     2428#endif
    20142429};
    20152430
Note: See TracChangeset for help on using the changeset viewer.