Ignore:
Timestamp:
12 Apr 2018, 11:12:21 (7 years ago)
Author:
tech
Message:
  • Update HM-16.18
  • Cleanups
  • Encoder Extension

-- Representation formats
-- Parameter set sharing
-- GOP configuration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-16.2-dev/source/Lib/TLibCommon/TComSlice.h

    r1405 r1412  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2016, ITU/ISO/IEC
     6 * Copyright (c) 2010-2017, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    13151315
    13161316  Bool    getViewCompLayerPresentFlag (Int i, Bool d ) const                    { return  m_viewCompLayerPresentFlag[ getVoiInVps(i) ][d]; }
    1317   Bool    getViewCompLayerId          (Int i, Bool d ) const                    { return  m_viewCompLayerId         [ getVoiInVps(i) ][d]; }
     1317  Int     getViewCompLayerId          (Int i, Bool d ) const                    { return  m_viewCompLayerId         [ getVoiInVps(i) ][d]; }
    13181318#endif
    13191319  Bool    getDependencyFlag( Int i, Int j ) const                               { return m_dependencyFlag[i][j]; }
     
    13521352
    13531353  Bool    isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh )  const;   
     1354  Bool    isIndependendNonBaseLayer    ( Int layerIdInNuh )      const    {       return (layerIdInNuh > 0) && getNumRefLayers( layerIdInNuh ) == 0 ; };
     1355#if NH_3D
     1356  Bool    isFirstDepthLayer            ( Int layerIdInNuh )      const;
     1357#endif
     1358
    13541359  Void    deriveLayerSetLayerIdList();
    13551360
    13561361  Int     olsIdxToLsIdx( Int i )                                       const    { return ( i < getNumLayerSets() ) ? i  : getLayerSetIdxForOlsMinus1( i ) + 1 ; };
     1362
    13571363  Void    initTargetLayerIdLists  ( );
    13581364  Void    deriveTargetLayerIdList ( Int i );
     1365 
    13591366  std::vector<Int> getTargetDecLayerIdList( Int targetDecLayerSetIdx ) const     { return m_targetDecLayerIdLists[targetDecLayerSetIdx]; };
    13601367  std::vector<Int> getTargetOptLayerIdList( Int targetOptLayerSetIdx ) const     { return m_targetOptLayerIdLists[targetOptLayerSetIdx]; };
     
    13771384  // helpers
    13781385  Void    printPTL()                                                   const;
     1386  Void    printRepFormat()                                             const;
    13791387  Void    printLayerDependencies()                                     const;
    13801388  Void    printScalabilityId()                                         const;
    13811389  Void    printLayerSets()                                             const;
    13821390
     1391  IntAry1d  getLayersOfVpsPtl( Int idxOfVpsPtl )                       const;
    13831392
    13841393  /// VPS EXTENSION 2 SYNTAX ELEMENTS
     
    14271436#endif
    14281437
    1429   template <typename T, typename S, typename U> Void xPrintArray( const TChar* name, Int numElemDim1, U idx, S numElemDim2, T vec, Bool printNumber, Bool printIdx = true ) const
     1438  template <typename T, typename S, typename U> Void xPrintArray( const TChar* name, Int numElemDim1, U idx, S numElemDim2, T vec, Bool printNumber, Bool printIdx = true, Int elemDist = 3 ) const
    14301439  {
    14311440    std::cout << std::endl;
    14321441    for (Int j = 0; j < numElemDim1; j++ )
    14331442    {
    1434       std::cout << std::right << std::setw(27) << name;
     1443      std::cout << std::right << std::setw(40) << name;
    14351444      if (printIdx)
    14361445      {
     
    14541463      for (Int i = 0; i < numElemDim2[j]; i++)
    14551464      {
    1456         std::cout << std::right << std::setw(3) << vec[j][i];
     1465        std::cout << std::right << std::setw(elemDist) << vec[j][i];
    14571466      }   
    14581467      std::cout << std::endl;
     
    14601469  }
    14611470
    1462   template <typename T> Void xPrintArray( const char* name, Int numElem, T vec, Bool printNumber  )  const
     1471  template <typename T> Void xPrintArray( const char* name, Int numElem, T vec, Bool printNumber, Int elemDist = 3  )  const
    14631472  {
    14641473    std::vector<Int> numElemDim2(1, numElem);   
    14651474    std::vector<T>   vec2       (1,  vec    );
    14661475    std::vector<Int> idx2       (0);
    1467     xPrintArray( name, 1, idx2, numElemDim2, vec2, printNumber, false );
     1476    xPrintArray( name, 1, idx2, numElemDim2, vec2, printNumber, false, elemDist );
    14681477  }
    14691478
    14701479#endif
     1480
    14711481};
    14721482
    1473 #if NH_3D_DLT
     1483#if NH_3D
    14741484class TComDLT
    14751485{
     
    14911501
    14921502public:
    1493   TComDLT();
     1503  TComDLT( );
    14941504  ~TComDLT();
    14951505 
     
    18111821    for (Int d = 0; d < 2; d++)
    18121822    {
    1813       m_ivDiMcEnabledFlag          [d] = false;
    1814       m_ivMvScalEnabledFlag       [d] = false;
    1815       m_log2IvmcSubPbSizeMinus3   [d] = 3;
    1816       m_ivResPredEnabledFlag         [d] = false;
    1817       m_depthRefEnabledFlag   [d] = false;
    1818       m_vspMcEnabledFlag [d] = false;
    1819       m_dbbpEnabledFlag [d] = false;
    1820       m_texMcEnabledFlag               [d] = false;
    1821       m_log2TexmcSubPbSizeMinus3[d] = 3;
    1822       m_intraContourEnabledFlag      [d] = false;
     1823      m_ivDiMcEnabledFlag               [d] = false;
     1824      m_ivMvScalEnabledFlag             [d] = false;
     1825      m_log2IvmcSubPbSizeMinus3         [d] = 3;
     1826      m_ivResPredEnabledFlag            [d] = false;
     1827      m_depthRefEnabledFlag             [d] = false;
     1828      m_vspMcEnabledFlag                [d] = false;
     1829      m_dbbpEnabledFlag                 [d] = false;
     1830      m_texMcEnabledFlag                [d] = false;
     1831      m_log2TexmcSubPbSizeMinus3        [d] = 3;
     1832      m_intraContourEnabledFlag         [d] = false;
    18231833      m_intraDcOnlyWedgeEnabledFlag     [d] = false;
    1824       m_cqtCuPartPredEnabledFlag            [d] = false;
     1834      m_cqtCuPartPredEnabledFlag        [d] = false;
    18251835      m_interDcOnlyEnabledFlag          [d] = false;
    1826       m_skipIntraEnabledFlag    [d] = false;   
     1836      m_skipIntraEnabledFlag            [d] = false;   
    18271837    }
    18281838  }
     
    19171927#endif
    19181928  Bool             m_bLongTermRefsPresent;
    1919   Bool             m_TMVPFlagsPresent;
     1929  Bool             m_SPSTemporalMVPEnabledFlag;
    19201930  Int              m_numReorderPics[MAX_TLAYER];
    19211931
     
    19741984  UInt             m_forceDecodeBitDepth; // 0 = do not force the decoder's bit depth, other = force the decoder's bit depth to this value (best effort decoding)
    19751985#endif
    1976 #if NH_MV
     1986#if NH_MV 
    19771987  TComVPS*         m_pcVPS;
    19781988  // SPS           
     
    20012011#if NH_MV           
    20022012  Int              m_layerId;
     2013  TComRepFormat*   m_inferredRepFormat;
    20032014#endif
    20042015
     
    20252036  UInt                   getPicWidthInLumaSamples() const                                                { return  m_picWidthInLumaSamples;                                     }
    20262037  Void                   setPicHeightInLumaSamples( UInt u )                                             { m_picHeightInLumaSamples = u;                                        }
     2038 
    20272039  UInt                   getPicHeightInLumaSamples() const                                               { return  m_picHeightInLumaSamples;                                    }
    20282040
     
    20922104  Void                   setLongTermRefsPresent(Bool b)                                                  { m_bLongTermRefsPresent=b;                                            }
    20932105#endif
    2094   Bool                   getTMVPFlagsPresent() const                                                     { return m_TMVPFlagsPresent;                                           }
    2095   Void                   setTMVPFlagsPresent(Bool b)                                                     { m_TMVPFlagsPresent=b;                                                }
    2096 #if NH_MV
    2097   Bool                   getSpsTemporalMvpEnabledFlag() const                                            { return m_TMVPFlagsPresent;                                           }
     2106  Bool                   getSPSTemporalMVPEnabledFlag() const                                            { return m_SPSTemporalMVPEnabledFlag;                                  }
     2107  Void                   setSPSTemporalMVPEnabledFlag(Bool b)                                            { m_SPSTemporalMVPEnabledFlag=b;                                       }
     2108#if NH_MV
     2109  Bool                   getSpsTemporalMvpEnabledFlag() const                                            { return m_SPSTemporalMVPEnabledFlag;                                           }
    20982110#endif
    20992111  // physical transform
     
    21032115  // Bit-depth
    21042116  Int                    getBitDepth(ChannelType type) const                                             { return m_bitDepths.recon[type];                                      }
     2117
    21052118  Void                   setBitDepth(ChannelType type, Int u )                                           { m_bitDepths.recon[type] = u;                                         }
    21062119#if O0043_BEST_EFFORT_DECODING
     
    22192232  // Inference         
    22202233                       
    2221   Void                   inferRepFormat( TComVPS* vps, Int layerIdCurr, Bool encoder );
     2234  Void                   inferRepFormat  ( TComVPS* vps, Int layerIdCurr, Bool alreadySet );
    22222235  Void                   inferScalingList( const TComSPS* spsSrc );
    22232236                       
     
    23582371  Bool             m_useWeightedBiPred;                 //!< Use of Weighting Bi-Prediction (B_SLICE)
    23592372  Bool             m_OutputFlagPresentFlag;             //!< Indicates the presence of output_flag in slice header
    2360   Bool             m_TransquantBypassEnableFlag;        //!< Indicates presence of cu_transquant_bypass_flag in CUs.
     2373  Bool             m_TransquantBypassEnabledFlag;       //!< Indicates presence of cu_transquant_bypass_flag in CUs.
    23612374  Bool             m_useTransformSkip;
    23622375  Bool             m_dependentSliceSegmentsEnabledFlag; //!< Indicates the presence of dependent slices
     
    23712384  std::vector<Int> m_tileRowHeight;
    23722385
    2373   Bool             m_signHideFlag;
     2386  Bool             m_signDataHidingEnabledFlag;
    23742387
    23752388  Bool             m_cabacInitPresentFlag;
     
    23792392  Bool             m_deblockingFilterControlPresentFlag;
    23802393  Bool             m_deblockingFilterOverrideEnabledFlag;
    2381   Bool             m_picDisableDeblockingFilterFlag;
     2394  Bool             m_ppsDeblockingFilterDisabledFlag;
    23822395  Int              m_deblockingFilterBetaOffsetDiv2;    //< beta offset for deblocking filter
    23832396  Int              m_deblockingFilterTcOffsetDiv2;      //< tc offset for deblocking filter
     
    24032416#endif
    24042417
    2405 #if NH_3D_DLT
     2418#if NH_3D
    24062419  TComDLT                m_cDLT;
    24072420#endif
     
    24282441  UInt                   getMaxCuDQPDepth() const                                         { return m_uiMaxCuDQPDepth;                     }
    24292442
    2430 #if NH_3D_DLT
     2443#if NH_3D
    24312444  Void                   setDLT( TComDLT cDLT )                                           { m_cDLT = cDLT;                                }
    24322445  const TComDLT*         getDLT() const                                                   { return &m_cDLT;                               }
     
    24672480  Void                   setOutputFlagPresentFlag( Bool b )                               { m_OutputFlagPresentFlag = b;                  }
    24682481  Bool                   getOutputFlagPresentFlag() const                                 { return m_OutputFlagPresentFlag;               }
    2469   Void                   setTransquantBypassEnableFlag( Bool b )                          { m_TransquantBypassEnableFlag = b;             }
    2470   Bool                   getTransquantBypassEnableFlag() const                            { return m_TransquantBypassEnableFlag;          }
     2482  Void                   setTransquantBypassEnabledFlag( Bool b )                         { m_TransquantBypassEnabledFlag = b;            }
     2483  Bool                   getTransquantBypassEnabledFlag() const                           { return m_TransquantBypassEnabledFlag;         }
    24712484
    24722485  Bool                   getUseTransformSkip() const                                      { return m_useTransformSkip;                    }
     
    24932506  UInt                   getTileRowHeight(UInt rowIdx) const                              { return m_tileRowHeight[rowIdx];               }
    24942507
    2495   Void                   setSignHideFlag( Bool signHideFlag )                             { m_signHideFlag = signHideFlag;                }
    2496   Bool                   getSignHideFlag() const                                          { return m_signHideFlag;                        }
     2508  Void                   setSignDataHidingEnabledFlag( Bool b )                           { m_signDataHidingEnabledFlag = b;              }
     2509  Bool                   getSignDataHidingEnabledFlag() const                             { return m_signDataHidingEnabledFlag;           }
    24972510
    24982511  Void                   setCabacInitPresentFlag( Bool flag )                             { m_cabacInitPresentFlag = flag;                }
     
    25022515  Void                   setDeblockingFilterOverrideEnabledFlag( Bool val )               { m_deblockingFilterOverrideEnabledFlag = val;  }
    25032516  Bool                   getDeblockingFilterOverrideEnabledFlag() const                   { return m_deblockingFilterOverrideEnabledFlag; }
    2504   Void                   setPicDisableDeblockingFilterFlag(Bool val)                      { m_picDisableDeblockingFilterFlag = val;       } //!< set offset for deblocking filter disabled
    2505   Bool                   getPicDisableDeblockingFilterFlag() const                        { return m_picDisableDeblockingFilterFlag;      } //!< get offset for deblocking filter disabled
     2517  Void                   setPPSDeblockingFilterDisabledFlag(Bool val)                     { m_ppsDeblockingFilterDisabledFlag = val;      } //!< set offset for deblocking filter disabled
     2518  Bool                   getPPSDeblockingFilterDisabledFlag() const                       { return m_ppsDeblockingFilterDisabledFlag;     } //!< get offset for deblocking filter disabled
    25062519  Void                   setDeblockingFilterBetaOffsetDiv2(Int val)                       { m_deblockingFilterBetaOffsetDiv2 = val;       } //!< set beta offset for deblocking filter
    25072520  Int                    getDeblockingFilterBetaOffsetDiv2() const                        { return m_deblockingFilterBetaOffsetDiv2;      } //!< get beta offset for deblocking filter
     
    27262739  Int        m_pocMsbCycleVal;
    27272740  Bool       m_pocMsbValRequiredFlag;
     2741#endif
    27282742
    27292743#if NH_3D
    27302744  IntAry2d   m_aaiCodedScale ;
    27312745  IntAry2d   m_aaiCodedOffset;
    2732 #endif
    2733 #if NH_3D_TMVP
     2746
    27342747  Int        m_aiAlterRefIdx   [2];
    2735 #endif
    2736 #if NH_3D_ARP
    27372748  Bool       m_arpRefPicAvailable[2][MAX_NUM_LAYERS];
    27382749  TComList<TComPic*> * m_pBaseViewRefPicList[MAX_NUM_LAYERS];
    27392750  UInt        m_nARPStepNum;
    27402751  Int         m_aiFirstTRefIdx    [2];   
    2741 #endif
    2742 #if NH_3D
    27432752  std::vector<Int> m_pocsInCurrRPSs;
    2744 #endif
    2745 #if NH_3D_IC
    27462753  Bool       m_bApplyIC;
    27472754  Bool       m_icSkipParseFlag;
    2748 #endif
    2749 #if NH_3D
    27502755  std::vector<Int> m_inCmpRefViewIdcs;
    27512756  Bool       m_inCmpPredAvailFlag;
     
    27532758  Bool       m_cpAvailableFlag;
    27542759  Int        m_numViews;
    2755 #endif
    2756 #if NH_3D_QTL
    27572760  TComPic*   m_ivPicsCurrPoc [2][MAX_NUM_LAYERS]; 
    2758 #endif
    2759 #if NH_3D
    27602761  Int**      m_depthToDisparityB;
    27612762  Int**      m_depthToDisparityF;
    27622763  Bool       m_bApplyDIS;
    2763 #endif
    2764 #endif
    2765 #if NH_3D_IC
    27662764  Int*       m_aICEnableCandidate;
    27672765  Int*       m_aICEnableNum;
    2768 #endif       
    2769 #if NH_3D   
     2766
    27702767  Int        m_iDefaultRefViewIdx;
    27712768  Bool       m_bDefaultRefViewIdxAvailableFlag;
     
    28442841  Int                         getNumRefIdx( RefPicList e ) const                     { return m_aiNumRefIdx[e];                                      }
    28452842  TComPic*                    getPic()                                               { return m_pcPic;                                               }
     2843  const TComPic*              getPic() const                                         { return m_pcPic;                                               }
    28462844  TComPic*                    getRefPic( RefPicList e, Int iRefIdx)                  { return m_apcRefPicList[e][iRefIdx];                           }
    28472845  const TComPic*              getRefPic( RefPicList e, Int iRefIdx) const            { return m_apcRefPicList[e][iRefIdx];                           }
     
    28552853  Int                         getNumCurCmpLIds( )                      const         { return (Int) m_inCmpRefViewIdcs.size();                       }
    28562854  TComPic*                    getIvPic( Bool depthFlag, Int viewIndex) const         { return  m_ivPicsCurrPoc[ depthFlag ? 1 : 0 ][ viewIndex ];    }
    2857 #endif
    2858 #if NH_3D_QTL
    28592855  TComPic*                    getTexturePic       ()                                 { return  m_ivPicsCurrPoc[0][ m_viewIndex ];                    }
    28602856
    2861 #endif                           
    2862 #if NH_3D_IC                                                                                                                                         
    28632857  Void                        setApplyIC( Bool b )                                   { m_bApplyIC = b;                                               }
    28642858  Bool                        getApplyIC()                                           { return m_bApplyIC;                                            }
     
    28672861  Void                        setIcSkipParseFlag( Bool b )                           { m_icSkipParseFlag = b;                                        }
    28682862  Bool                        getIcSkipParseFlag()                                   { return m_icSkipParseFlag;                                     }
    2869 #endif                                                                                                                                               
    2870 #if NH_3D_ARP                                                                                                                                         
     2863
    28712864  Void                        setBaseViewRefPicList( TComList<TComPic*> *pListPic, Int iViewIdx )      { m_pBaseViewRefPicList[iViewIdx] = pListPic; }                 
    28722865  Void                        setARPStepNum( TComPicLists*ivPicLists );                                                                             
     
    31553148
    31563149#if NH_3D
    3157 #if NH_3D_TMVP
    31583150  Void                        generateAlterRefforTMVP ();   
    31593151  Void                        setAlterRefIdx          ( RefPicList e, Int i )        { m_aiAlterRefIdx[e]    = i;                                    }
    31603152  Int                         getAlterRefIdx          ( RefPicList e )               { return  m_aiAlterRefIdx[e];                                   }
    3161 #endif                                                                                                                                               
    3162 #if NH_3D_ARP                                                                                                                                         
    31633153  Int                         getFirstTRefIdx        ( RefPicList e )                { return  m_aiFirstTRefIdx[e];                                  }
    31643154  Void                        setFirstTRefIdx        ( RefPicList e, Int i )         { m_aiFirstTRefIdx[e]    = i;                                   }
     
    31663156  Bool                        getArpRefPicAvailable  ( RefPicList e, Int viewIdx)    { return m_arpRefPicAvailable[e][getVPS()->getLayerIdInNuh(viewIdx, false, 0 )]; }
    31673157  IntAry1d                    getPocsInCurrRPSs()                                    { return m_pocsInCurrRPSs;                                      }
    3168 #endif                       
    31693158#endif
    31703159#if NH_3D_VSO || NH_3D
     
    31923181  Int                         getCpInvOff( Int j )                                   { return m_aaiCodedOffset[1][j];                                }
    31933182                                                                                                                                                       
    3194 #endif
    3195 #if NH_3D_QTL
    31963183  Void                        setIvPicLists( TComPicLists* m_ivPicLists );                                                                             
    3197 #endif
    3198 #if NH_3D
     3184
    31993185  Void                        setDepthToDisparityLUTs();                                                                                               
    32003186                                                                                                                                                       
    32013187  Int*                        getDepthToDisparityB( Int refViewIdx )                 { return m_depthToDisparityB[ getVPS()->getVoiInVps( refViewIdx) ];}
    32023188  Int*                        getDepthToDisparityF( Int refViewIdx )                 { return m_depthToDisparityF[ getVPS()->getVoiInVps( refViewIdx) ];}
    3203 #if NH_3D_IC                                                                                                                                             
     3189
    32043190  Void                        setICEnableCandidate( Int* icEnableCandidate)          { m_aICEnableCandidate = icEnableCandidate;                     }
    32053191  Void                        setICEnableNum( Int* icEnableNum)                      { m_aICEnableNum = icEnableNum;                                 }
     
    32093195  Int                         getICEnableCandidate( Int layer)                       { return  m_aICEnableCandidate[ layer ];                        }
    32103196  Int                         getICEnableNum( Int layer)                             { return m_aICEnableNum[ layer ];                               }
    3211 #endif
    32123197#endif
    32133198// Additional slice header syntax elements
     
    33353320  Int                         getMpiSubPbSize           ( )                          { return m_mpiSubPbSize           ;                             };
    33363321  Int                         getSubPbSize              ( )                          { return m_subPbSize              ;                             };
    3337 #if NH_3D_NBDV
     3322
    33383323  Int                         getDefaultRefViewIdx()                                 { return m_iDefaultRefViewIdx;                                  }
    33393324  Void                        setDefaultRefViewIdx(Int iViewIdx)                     { m_iDefaultRefViewIdx = iViewIdx;                              }
     
    33433328  Void                        setDefaultRefView( );
    33443329#endif
    3345 #endif
    33463330#if NH_MV
    33473331 TComPic*                     getRefPicSetInterLayer( Int setIdc, Int i ) const;
     
    33643348
    33653349
    3366 Void calculateParameterSetChangedFlag(Bool &bChanged, const std::vector<UChar> *pOldData, const std::vector<UChar> &newData);
     3350Void calculateParameterSetChangedFlag(Bool &bChanged, const std::vector<UChar> *pOldData, const std::vector<UChar> *pNewData);
    33673351
    33683352template <class T> class ParameterSetMap
     
    33903374  }
    33913375
    3392   Void storePS(Int psId, T *ps, const std::vector<UChar> &naluData)
     3376  T *allocatePS(const Int psId)
     3377  {
     3378    assert ( psId < m_maxId );
     3379    if ( m_paramsetMap.find(psId) == m_paramsetMap.end() )
     3380    {
     3381      m_paramsetMap[psId].bChanged = true;
     3382      m_paramsetMap[psId].pNaluData=0;
     3383      m_paramsetMap[psId].parameterSet = new T;
     3384      setID(m_paramsetMap[psId].parameterSet, psId);
     3385    }
     3386    return m_paramsetMap[psId].parameterSet;
     3387  }
     3388
     3389  Void storePS(Int psId, T *ps, const std::vector<UChar> *pNaluData)
    33933390  {
    33943391    assert ( psId < m_maxId );
     
    33983395
    33993396      // work out changed flag
    3400       calculateParameterSetChangedFlag(mapData.bChanged, mapData.pNaluData, naluData);
     3397      calculateParameterSetChangedFlag(mapData.bChanged, mapData.pNaluData, pNaluData);
    34013398      delete m_paramsetMap[psId].pNaluData;
    34023399      delete m_paramsetMap[psId].parameterSet;
     
    34093406      m_paramsetMap[psId].bChanged = false;
    34103407    }
     3408    if (pNaluData != 0)
     3409    {
    34113410      m_paramsetMap[psId].pNaluData=new std::vector<UChar>;
    3412     *(m_paramsetMap[psId].pNaluData) = naluData;
     3411      *(m_paramsetMap[psId].pNaluData) = *pNaluData;
     3412    }
     3413    else
     3414    {
     3415      m_paramsetMap[psId].pNaluData=0;
     3416    }
     3417  }
     3418
     3419  Void setChangedFlag(Int psId, Bool bChanged=true)
     3420  {
     3421    if ( m_paramsetMap.find(psId) != m_paramsetMap.end() )
     3422    {
     3423      m_paramsetMap[psId].bChanged=bChanged;
     3424    }
    34133425  }
    34143426
     
    34513463  std::map<Int,MapData<T> > m_paramsetMap;
    34523464  Int                       m_maxId;
     3465
     3466  static Void setID(T* parameterSet, const Int psId);
    34533467};
    34543468
     
    34603474
    34613475  //! store sequence parameter set and take ownership of it
    3462   Void           storeVPS(TComVPS *vps, const std::vector<UChar> &naluData) { m_vpsMap.storePS( vps->getVPSId(), vps, naluData); };
     3476  Void           storeVPS(TComVPS *vps, const std::vector<UChar> &naluData) { m_vpsMap.storePS( vps->getVPSId(), vps, &naluData); };
    34633477  //! get pointer to existing video parameter set
    34643478  TComVPS*       getVPS(Int vpsId)                                           { return m_vpsMap.getPS(vpsId); };
     
    34683482
    34693483  //! store sequence parameter set and take ownership of it
    3470   Void           storeSPS(TComSPS *sps, const std::vector<UChar> &naluData) { m_spsMap.storePS( sps->getSPSId(), sps, naluData); };
     3484  Void           storeSPS(TComSPS *sps, const std::vector<UChar> &naluData) { m_spsMap.storePS( sps->getSPSId(), sps, &naluData); };
    34713485  //! get pointer to existing sequence parameter set
    34723486  TComSPS*       getSPS(Int spsId)                                           { return m_spsMap.getPS(spsId); };
     
    34763490
    34773491  //! store picture parameter set and take ownership of it
    3478   Void           storePPS(TComPPS *pps, const std::vector<UChar> &naluData) { m_ppsMap.storePS( pps->getPPSId(), pps, naluData); };
     3492  Void           storePPS(TComPPS *pps, const std::vector<UChar> &naluData) { m_ppsMap.storePS( pps->getPPSId(), pps, &naluData); };
    34793493  //! get pointer to existing picture parameter set
    34803494  TComPPS*       getPPS(Int ppsId)                                           { return m_ppsMap.getPS(ppsId); };
     
    35023516
    35033517#if NH_MV 
    3504   const TComSPS* getActiveSPS( Int layer )const { return m_spsMap.getPS(m_activeSPSId[layer]); };
     3518  const TComSPS* getActiveSPS( Int layer )const { return m_spsActiveForLayer.getPS(layer); };
    35053519#else 
    35063520  const TComSPS* getActiveSPS()const { return m_spsMap.getPS(m_activeSPSId); };
    35073521#endif
    35083522
     3523#if NH_MV
     3524  Void          setSpsActiveForLayer( Int layer, TComSPS*& ps  )
     3525  {
     3526    TComSPS* psCopy = m_spsActiveForLayer.allocatePS( layer );
     3527    (*psCopy) = (*ps);
     3528    ps = psCopy;
     3529  }
     3530#endif
    35093531protected:
    35103532  ParameterSetMap<TComVPS> m_vpsMap;
    35113533  ParameterSetMap<TComSPS> m_spsMap;
    35123534  ParameterSetMap<TComPPS> m_ppsMap;
     3535
     3536#if NH_MV
     3537  // As several SPS syntax elements be might inferred depending for the current layer, copies are stored for each layer 
     3538  ParameterSetMap<TComSPS> m_spsActiveForLayer; 
     3539#endif
    35133540
    35143541  Int m_activeVPSId; // -1 for nothing active
Note: See TracChangeset for help on using the changeset viewer.