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/TComDataCU.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 *
     
    6060static const UInt NUM_MOST_PROBABLE_MODES=3;
    6161
    62 #if NH_3D_DBBP
     62#if NH_3D
    6363typedef struct _DBBPTmpData
    6464{
     
    111111
    112112  Bool*          m_skipFlag;           ///< array of skip flags
    113 #if NH_3D_DIS
     113#if NH_3D
    114114  Bool*          m_bDISFlag;         
    115115  UChar*         m_ucDISType;
     
    142142  TComDataCU*   m_pCtuAbove;          ///< pointer of above CTU.
    143143  TComDataCU*   m_pCtuLeft;           ///< pointer of left CTU
    144   TComDataCU*   m_apcCUColocated[NUM_REF_PIC_LIST_01];  ///< pointer of temporally colocated CU's for both directions
    145144  TComMvField   m_cMvFieldA;          ///< motion vector of position A
    146145  TComMvField   m_cMvFieldB;          ///< motion vector of position B
     
    162161  SChar*        m_apiMVPNum[NUM_REF_PIC_LIST_01];       ///< array of number of possible motion vectors predictors
    163162  Bool*         m_pbIPCMFlag;         ///< array of intra_pcm flags
    164 #if NH_3D_NBDV
     163#if MCTS_ENC_CHECK
     164  Bool          m_tMctsMvpIsValid;
     165#endif
     166#if NH_3D
    165167  DisInfo*      m_pDvInfo;
    166 #endif
    167 #if NH_3D_VSP
    168168  SChar*        m_piVSPFlag;          ///< array of VSP flags to indicate whehter a block uses VSP or not  ///< 0: non-VSP; 1: VSP
    169 #endif
    170 #if NH_3D_SPIVMP
    171169  Bool*         m_pbSPIVMPFlag;       ///< array of sub-PU IVMP flags to indicate whehter a block uses sub-PU IVMP ///< 0: non-SPIVMP; 1: SPIVMP
    172 #endif
    173 #if NH_3D_ARP
    174170  UChar*        m_puhARPW;
    175 #endif
    176 #if NH_3D_IC
    177171  Bool*         m_pbICFlag;           ///< array of IC flags
    178 #endif
    179 #if NH_3D_DMM
    180172  Pel*          m_dmmDeltaDC[NUM_DMM][2];
    181173  UInt*         m_dmm1WedgeTabIdx;
    182 #endif
    183 #if NH_3D_SDC_INTRA
    184174  Bool*         m_pbSDCFlag;
    185175  Pel*          m_apSegmentDCOffset[2];
    186 #endif
    187 #if NH_3D_DBBP
    188176  Bool*         m_pbDBBPFlag;        ///< array of DBBP flags
    189177  DbbpTmpData   m_sDBBPTmpData;
    190 #endif
    191 #if NH_3D_MLC
     178
    192179  Bool          m_bAvailableFlagA1;    ///< A1 available flag
    193180  Bool          m_bAvailableFlagB1;    ///< B1 available flag
     
    212199  UInt          m_uiTotalBins;        ///< sum of partition bins
    213200  SChar         m_codedQP;
    214 #if NH_3D_MLC
     201#if NH_3D
    215202  DisInfo         m_cDefaultDisInfo;    ///< Default disparity information for initializing
    216203  TComMotionCand  m_mergCands[MRG_IVSHIFT+1];   ///< Motion candidates for merge mode
     
    226213  Bool          xAddMVPCandWithScaling        ( AMVPInfo &info, const RefPicList eRefPicList, const Int iRefIdx, const UInt uiPartUnitIdx, const MVP_DIR eDir ) const;
    227214
    228 #if NH_3D_VSP
     215#if NH_3D
    229216  Bool          xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount);
    230 #endif
    231 #if NH_3D_IV_MERGE
    232217  Bool          xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int*   ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx );
    233218#endif
     
    235220  Void          deriveRightBottomIdx          ( UInt uiPartIdx, UInt& ruiPartIdxRB ) const;
    236221
    237 #if NH_3D_TMVP
     222#if NH_3D
    238223  Bool          xGetColMVP                    ( const RefPicList eRefPicList, const Int ctuRsAddr, const Int partUnitIdx, TComMv& rcMv, Int& refIdx, Bool bMRG = true  ) const;
    239224#else
     
    242227
    243228  /// compute scaling factor from POC difference
    244 #if !NH_3D_ARP
     229#if !NH_3D
    245230  static Int    xGetDistScaleFactor           ( Int iCurrPOC, Int iCurrRefPOC, Int iColPOC, Int iColRefPOC );
    246231#endif
    247232  Void          xDeriveCenterIdx              ( UInt uiPartIdx, UInt& ruiPartIdxCenter ) const;
    248233
    249 #if NH_3D_VSP
    250   Void xSetMvFieldForVSP  ( TComDataCU *cu, TComPicYuv *picRefDepth, TComMv *dv, UInt partAddr, Int width, Int height, Int *shiftLUT, RefPicList refPicList, Int refIdx, Bool isDepth, Int &vspSize );
     234#if NH_3D
     235  Void          xSetMvFieldForVSP  ( TComDataCU *cu, TComPicYuv *picRefDepth, TComMv *dv, UInt partAddr, Int width, Int height, Int *shiftLUT, RefPicList refPicList, Int refIdx, Bool isDepth, Int &vspSize );
    251236#endif
    252237
    253238public:
    254239
    255 #if NH_3D_ARP
     240#if NH_3D
    256241  static Int    xGetDistScaleFactor           ( Int iCurrPOC, Int iCurrRefPOC, Int iColPOC, Int iColRefPOC );
    257242#endif
     
    274259  Void          initSubCU             ( TComDataCU* pcCU, UInt uiPartUnitIdx, UInt uiDepth, Int qp );
    275260  Void          setOutsideCUPart      ( UInt uiAbsPartIdx, UInt uiDepth );
    276 #if NH_3D_NBDV
     261
     262  Void          copySubCU             ( TComDataCU* pcCU, UInt uiPartUnitIdx );
     263#if NH_3D
    277264  Void          copyDVInfoFrom        (TComDataCU* pcCU, UInt uiAbsPartIdx);
    278 #endif
    279 
    280   Void          copySubCU             ( TComDataCU* pcCU, UInt uiPartUnitIdx );
    281 #if NH_3D_NBDV
    282     Void          copyInterPredInfoFrom ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefPicList, Bool bNBDV = false );
     265  Void          copyInterPredInfoFrom ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefPicList, Bool bNBDV = false );
    283266#else
    284267  Void          copyInterPredInfoFrom ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefPicList );
     
    307290
    308291  Void          setDepthSubParts      ( UInt uiDepth, UInt uiAbsPartIdx );
    309 #if NH_3D_VSO
     292
     293#if MCTS_ENC_CHECK
     294  Void          setTMctsMvpIsValid(Bool b)    { m_tMctsMvpIsValid = b; }
     295  Bool          getTMctsMvpIsValid()          { return m_tMctsMvpIsValid; }
     296  Bool          isLastColumnCTUInTile() const;
     297#endif
     298
     299#if NH_3D
    310300  Void          getPosInPic           ( UInt uiAbsPartIndex, Int& riPosX, Int& riPosY ) const;
    311 #endif
    312 
    313 #if NH_3D_ARP
    314301  Void          setSlice              ( TComSlice* pcSlice)     { m_pcSlice = pcSlice;       }
    315302  Void          setPic                ( TComDataCU* pcCU  )     { m_pcPic              = pcCU->getPic(); }
     
    325312  Void          setCUTransquantBypassSubParts( Bool flag, UInt uiAbsPartIdx, UInt uiDepth );
    326313
    327 #if NH_3D_DBBP
     314#if NH_3D
    328315  Pel*          getVirtualDepthBlock(UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt& uiDepthStride);
    329316#endif
    330317 
    331   Bool*         getSkipFlag            ()                        { return m_skipFlag;          }
     318  Bool*         getSkipFlag           ()                        { return m_skipFlag;          }
    332319  Bool          getSkipFlag                   ( UInt idx ) const                                           { return m_skipFlag[idx];                    }
    333320  Void          setSkipFlag           ( UInt idx, Bool skip)     { m_skipFlag[idx] = skip;   }
    334321  Void          setSkipFlagSubParts   ( Bool skip, UInt absPartIdx, UInt depth );
    335 #if NH_3D_DIS
    336   Bool*        getDISFlag            ()                         { return m_bDISFlag;          }
    337   Bool         getDISFlag            ( UInt idx)                { return m_bDISFlag[idx];     }
    338   Void         setDISFlag            ( UInt idx, Bool bDIS)     { m_bDISFlag[idx] = bDIS;   }
    339   Void         setDISFlagSubParts    ( Bool bDIS, UInt uiAbsPartIdx, UInt uiDepth );
    340 
    341   UChar*       getDISType            ()                         { return m_ucDISType; }
    342   UChar        getDISType            ( UInt idx)                { return m_ucDISType[idx];     }
    343   Void         getDISType            ( UInt idx, UChar ucDISType)     { m_ucDISType[idx] = ucDISType;   }
    344   Void         setDISTypeSubParts    ( UChar ucDISType, UInt uiAbsPartIdx, UInt uiDepth );
    345 #endif
    346   SChar*        getPredictionMode             ( )                                                          { return m_pePredMode;                       }
    347   PredMode      getPredictionMode             ( UInt uiIdx ) const                                         { return static_cast<PredMode>( m_pePredMode[uiIdx] ); }
    348   Void          setPredictionMode     ( UInt uiIdx, PredMode uh){ m_pePredMode[uiIdx] = uh;   }
    349   Void          setPredModeSubParts   ( PredMode eMode, UInt uiAbsPartIdx, UInt uiDepth );
    350 
    351 #if NH_3D_DBBP
     322
     323#if NH_3D
     324  Bool*         getDISFlag            ()                         { return m_bDISFlag;          }
     325  Bool          getDISFlag            ( UInt idx)                { return m_bDISFlag[idx];     }
     326  Void          setDISFlag            ( UInt idx, Bool bDIS)     { m_bDISFlag[idx] = bDIS;   }
     327  Void          setDISFlagSubParts    ( Bool bDIS, UInt uiAbsPartIdx, UInt uiDepth );
     328
     329  UChar*        getDISType            ()                         { return m_ucDISType; }
     330  UChar         getDISType            ( UInt idx)                { return m_ucDISType[idx];     }
     331  Void          getDISType            ( UInt idx, UChar ucDISType)     { m_ucDISType[idx] = ucDISType;   }
     332  Void          setDISTypeSubParts    ( UChar ucDISType, UInt uiAbsPartIdx, UInt uiDepth );
     333
    352334  Bool*         getDBBPFlag           ()                        const { return m_pbDBBPFlag;               }
    353335  Bool          getDBBPFlag           ( UInt uiIdx )            const { return m_pbDBBPFlag[uiIdx];        }
     
    355337  Void          setDBBPFlagSubParts   ( Bool bDBBPFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
    356338  DbbpTmpData*  getDBBPTmpData        () { return &m_sDBBPTmpData; }
    357 #endif
     339
     340
     341#endif
     342  SChar*        getPredictionMode             ( )                                                          { return m_pePredMode;                       }
     343  PredMode      getPredictionMode             ( UInt uiIdx ) const                                         { return static_cast<PredMode>( m_pePredMode[uiIdx] ); }
     344  Void          setPredictionMode     ( UInt uiIdx, PredMode uh){ m_pePredMode[uiIdx] = uh;   }
     345  Void          setPredModeSubParts   ( PredMode eMode, UInt uiAbsPartIdx, UInt uiDepth );
     346
    358347
    359348  SChar*        getCrossComponentPredictionAlpha( ComponentID compID )                                     { return m_crossComponentPredictionAlpha[compID];        }
     
    451440  template <typename T>
    452441  Void          setSubPart            ( T bParameter, T* pbBaseCtu, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx );
    453 #if H_3D_VSP || NH_3D_DBBP
     442#if NH_3D
    454443  template<typename T>
    455444  Void          setSubPartT           ( T uiParameter, T* puhBaseLCU, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx );
     
    477466  Void          setIPCMFlag           (UInt uiIdx, Bool b )     { m_pbIPCMFlag[uiIdx] = b;           }
    478467  Void          setIPCMFlagSubParts   (Bool bIpcmFlag, UInt uiAbsPartIdx, UInt uiDepth);
    479 #if NH_3D_NBDV
     468  // -------------------------------------------------------------------------------------------------------------------
     469  // member functions for accessing partition information
     470  // -------------------------------------------------------------------------------------------------------------------
     471
     472#if  NH_3D_FAST_TEXTURE_ENCODING
     473  Void          getIVNStatus       ( UInt uiPartIdx,  DisInfo* pDInfo, Bool& bIVFMerge,  Int& iIVFMaxD);
     474#endif
     475
     476#if NH_3D
    480477  Void          setDvInfoSubParts     ( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiDepth );
    481 #if H_3D_VSP || NH_3D_DBBP
    482478  Void          setDvInfoSubParts     ( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth);
    483 #endif
    484479  DisInfo*      getDvInfo             ()                        { return m_pDvInfo;                 }
    485480  DisInfo       getDvInfo             (UInt uiIdx)              { return m_pDvInfo[uiIdx];          }
    486 #endif
    487 #if NH_3D_NBDV
    488   Void          xDeriveRightBottomNbIdx(Int &uiLCUIdxRBNb, Int &uiPartIdxRBNb );
    489   Bool          xCheckSpatialNBDV (const TComDataCU* pcTmpCU, UInt uiIdx, DisInfo* pNbDvInfo, Bool bSearchForMvpDv, IDVInfo* paMvpDvInfo,
    490                                    UInt uiMvpDvPos
    491 #if NH_3D_NBDV_REF
    492   , Bool bDepthRefine = false
    493 #endif
    494   );
    495   Bool          xGetColDisMV      ( Int currCandPic, RefPicList eRefPicList, Int refidx, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int & iTargetViewIdx, Int & iStartViewIdx );
    496   Void          getDisMvpCandNBDV ( DisInfo* pDInfo
    497 #if NH_3D_NBDV_REF
    498    , Bool bDepthRefine = false
    499 #endif
    500    );
    501    
    502 #if NH_3D_IV_MERGE
    503   Void          getDispforDepth  ( UInt uiPartIdx, UInt uiPartAddr, DisInfo* cDisp);
    504 #endif
    505 
    506 #if NH_3D_NBDV_REF
    507   Pel           getMcpFromDM(TComPicYuv* pcBaseViewDepthPicYuv, TComMv* mv, Int iBlkX, Int iBlkY, Int iWidth, Int iHeight, Int* aiShiftLUT );
    508   Void          estimateDVFromDM(Int refViewIdx, UInt uiPartIdx, TComPic* picDepth, UInt uiPartAddr, TComMv* cMvPred );
    509 #endif //NH_3D_NBDV_REF
    510 #endif
    511 #if NH_3D_DIS
    512    Bool          getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index);
    513 #endif
    514 #if  NH_3D_FAST_TEXTURE_ENCODING
    515   Void          getIVNStatus       ( UInt uiPartIdx,  DisInfo* pDInfo, Bool& bIVFMerge,  Int& iIVFMaxD);
    516 #endif
    517 #if NH_3D_SPIVMP
    518   Void          getSPPara(Int iPUWidth, Int iPUHeight, Int& iNumSP, Int& iNumSPInOneLine, Int& iSPWidth, Int& iSPHeight);
    519   Void          getSPAbsPartIdx(UInt uiBaseAbsPartIdx, Int iWidth, Int iHeight, Int iPartIdx, Int iNumPartLine, UInt& ruiPartAddr );
    520   Void          setInterDirSP( UInt uiDir, UInt uiAbsPartIdx, Int iWidth, Int iHeight );
    521 #endif
    522 #if NH_3D_IV_MERGE
    523   Bool          getInterViewMergeCands          ( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* availableMcDc, Bool bIsDepth           
    524 
    525 #if NH_3D_SPIVMP
    526     , TComMvField* pcMFieldSP, UChar* puhInterDirSP
    527 #endif   
    528     , Bool bICFlag
    529     );   
    530 #endif
    531 #if NH_3D_ARP
     481 
     482  Void          getDisMvpCandNBDV     ( DisInfo* pDInfo, Bool bDepthRefine = false   );   
     483  Void          getDispforDepth       ( UInt uiPartIdx, UInt uiPartAddr, DisInfo* cDisp);
     484
     485  Pel           getMcpFromDM          ( TComPicYuv* pcBaseViewDepthPicYuv, TComMv* mv, Int iBlkX, Int iBlkY, Int iWidth, Int iHeight, Int* aiShiftLUT );
     486  Void          estimateDVFromDM      ( Int refViewIdx, UInt uiPartIdx, TComPic* picDepth, UInt uiPartAddr, TComMv* cMvPred );
     487  Bool          getNeighDepth         ( UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index);
     488  Void          getSPPara             ( Int iPUWidth   , Int iPUHeight, Int& iNumSP, Int& iNumSPInOneLine, Int& iSPWidth, Int& iSPHeight);
     489  Void          getSPAbsPartIdx       ( UInt uiBaseAbsPartIdx, Int iWidth, Int iHeight, Int iPartIdx, Int iNumPartLine, UInt& ruiPartAddr );
     490  Void          setInterDirSP         ( UInt uiDir    , UInt uiAbsPartIdx, Int iWidth, Int iHeight );
     491  Bool          getInterViewMergeCands( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* availableMcDc, Bool bIsDepth , TComMvField* pcMFieldSP, UChar* puhInterDirSP, Bool bICFlag );   
     492
    532493  UChar*        getARPW            ()              const          { return m_puhARPW;               }
    533494  UChar         getARPW            ( UInt uiIdx )  const          { return m_puhARPW[uiIdx];        }
    534495  Void          setARPW            ( UInt uiIdx, UChar w )   { m_puhARPW[uiIdx] = w;           }
    535496  Void          setARPWSubParts    ( UChar w, UInt uiAbsPartIdx, UInt uiDepth );
    536 #endif
    537 #if NH_3D_IC
     497
    538498  Bool*         getICFlag          ()                        { return m_pbICFlag;               }
    539499  Bool          getICFlag          ( UInt uiIdx )            { return m_pbICFlag[uiIdx];        }
     
    541501  Void          setICFlagSubParts  ( Bool bICFlag,  UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
    542502  Bool          isICFlagRequired   ( UInt uiAbsPartIdx );
    543   Void          getPartIndexAndSize( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight, UInt uiAbsPartIdx = 0, Bool bLCU = false) const;
    544 #elif NH_3D_VSP
    545   Void          getPartIndexAndSize( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight, UInt uiAbsPartIdx = 0, Bool bLCU = false) const;
    546 #else
    547   // -------------------------------------------------------------------------------------------------------------------
    548   // member functions for accessing partition information
    549   // -------------------------------------------------------------------------------------------------------------------
    550 
    551   Void          getPartIndexAndSize           ( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight ) const; // This is for use by a leaf/sub CU object only, with no additional AbsPartIdx
    552 #endif
    553   UChar         getNumPartitions              ( const UInt uiAbsPartIdx = 0 ) const;
    554   Bool          isFirstAbsZorderIdxInDepth    ( UInt uiAbsPartIdx, UInt uiDepth ) const;
    555 
    556 #if NH_3D_DMM
    557   Pel*  getDmmDeltaDC                 ( DmmID dmmType, UInt segId )                      { return m_dmmDeltaDC[dmmType][segId];        }
    558   Pel   getDmmDeltaDC                 ( DmmID dmmType, UInt segId, UInt uiIdx )          { return m_dmmDeltaDC[dmmType][segId][uiIdx]; }
    559   Void  setDmmDeltaDC                 ( DmmID dmmType, UInt segId, UInt uiIdx, Pel val ) { m_dmmDeltaDC[dmmType][segId][uiIdx] = val;  }
    560 
    561   UInt* getDmm1WedgeTabIdx            ()                                                { return m_dmm1WedgeTabIdx;          }       
    562   UInt  getDmm1WedgeTabIdx            ( UInt uiIdx )                                    { return m_dmm1WedgeTabIdx[uiIdx];   }
    563   Void  setDmm1WedgeTabIdx            ( UInt uiIdx, UInt tabIdx )                       { m_dmm1WedgeTabIdx[uiIdx] = tabIdx; }
    564   Void  setDmm1WedgeTabIdxSubParts    ( UInt tabIdx, UInt uiAbsPartIdx, UInt uiDepth );
    565 #endif
    566 #if NH_3D_SDC_INTRA
     503
     504  Pel*          getDmmDeltaDC                 ( DmmID dmmType, UInt segId )                      { return m_dmmDeltaDC[dmmType][segId];        }
     505  Pel           getDmmDeltaDC                 ( DmmID dmmType, UInt segId, UInt uiIdx )          { return m_dmmDeltaDC[dmmType][segId][uiIdx]; }
     506  Void          setDmmDeltaDC                 ( DmmID dmmType, UInt segId, UInt uiIdx, Pel val ) { m_dmmDeltaDC[dmmType][segId][uiIdx] = val;  }
     507
     508  UInt*         getDmm1WedgeTabIdx            ()                                                { return m_dmm1WedgeTabIdx;          }       
     509  UInt          getDmm1WedgeTabIdx            ( UInt uiIdx )                                    { return m_dmm1WedgeTabIdx[uiIdx];   }
     510  Void          setDmm1WedgeTabIdx            ( UInt uiIdx, UInt tabIdx )                       { m_dmm1WedgeTabIdx[uiIdx] = tabIdx; }
     511  Void          setDmm1WedgeTabIdxSubParts    ( UInt tabIdx, UInt uiAbsPartIdx, UInt uiDepth );
     512
    567513  Bool*         getSDCFlag          ()                        { return m_pbSDCFlag;               }
    568514  Bool          getSDCFlag          ( UInt uiIdx )            { return m_pbSDCFlag[uiIdx];        }
    569515  Void          setSDCFlagSubParts  ( Bool bSDCFlag, UInt uiAbsPartIdx, UInt uiDepth );
    570  
     516
    571517  Bool          getSDCAvailable             ( UInt uiAbsPartIdx );
    572  
     518
    573519  Pel*          getSDCSegmentDCOffset( UInt uiSeg ) { return m_apSegmentDCOffset[uiSeg]; }
    574520  Pel           getSDCSegmentDCOffset( UInt uiSeg, UInt uiPartIdx ) { return m_apSegmentDCOffset[uiSeg][uiPartIdx]; }
    575521  Void          setSDCSegmentDCOffset( Pel pOffset, UInt uiSeg, UInt uiPartIdx) { m_apSegmentDCOffset[uiSeg][uiPartIdx] = pOffset; }
    576 #endif
     522
     523  Void          xDeriveRightBottomNbIdx(Int &uiLCUIdxRBNb, Int &uiPartIdxRBNb );
     524  Bool          xCheckSpatialNBDV (const TComDataCU* pcTmpCU, UInt uiIdx, DisInfo* pNbDvInfo, Bool bSearchForMvpDv, IDVInfo* paMvpDvInfo, UInt uiMvpDvPos  , Bool bDepthRefine = false  );
     525  Bool          xGetColDisMV      ( Int currCandPic, RefPicList eRefPicList, Int refidx, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int & iTargetViewIdx, Int & iStartViewIdx );
     526
     527
     528  Void          getPartIndexAndSize( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight, UInt uiAbsPartIdx = 0, Bool bLCU = false) const;
     529#else
     530  Void          getPartIndexAndSize           ( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight ) const; // This is for use by a leaf/sub CU object only, with no additional AbsPartIdx
     531#endif
     532  UChar         getNumPartitions              ( const UInt uiAbsPartIdx = 0 ) const;
     533  Bool          isFirstAbsZorderIdxInDepth    ( UInt uiAbsPartIdx, UInt uiDepth ) const;
    577534 
    578535  // -------------------------------------------------------------------------------------------------------------------
     
    586543  Void          getPartPosition               ( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH ) const;
    587544
    588   Void          setMVPIdx             ( RefPicList eRefPicList, UInt uiIdx, Int iMVPIdx)  { m_apiMVPIdx[eRefPicList][uiIdx] = iMVPIdx;  }
     545  Void          setMVPIdx                     ( RefPicList eRefPicList, UInt uiIdx, Int iMVPIdx)  { m_apiMVPIdx[eRefPicList][uiIdx] = iMVPIdx;  }
    589546  Int           getMVPIdx                     ( RefPicList eRefPicList, UInt uiIdx) const                  { return m_apiMVPIdx[eRefPicList][uiIdx];    }
    590547  SChar*        getMVPIdx                     ( RefPicList eRefPicList )                                   { return m_apiMVPIdx[eRefPicList];           }
    591548
    592   Void          setMVPNum             ( RefPicList eRefPicList, UInt uiIdx, Int iMVPNum ) { m_apiMVPNum[eRefPicList][uiIdx] = iMVPNum;  }
     549  Void          setMVPNum                     ( RefPicList eRefPicList, UInt uiIdx, Int iMVPNum ) { m_apiMVPNum[eRefPicList][uiIdx] = iMVPNum;  }
    593550  Int           getMVPNum                     ( RefPicList eRefPicList, UInt uiIdx ) const                 { return m_apiMVPNum[eRefPicList][uiIdx];    }
    594551  SChar*        getMVPNum                     ( RefPicList eRefPicList )                                   { return m_apiMVPNum[eRefPicList];           }
    595552
    596   Void          setMVPIdxSubParts     ( Int iMVPIdx, RefPicList eRefPicList, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
    597   Void          setMVPNumSubParts     ( Int iMVPNum, RefPicList eRefPicList, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
     553  Void          setMVPIdxSubParts             ( Int iMVPIdx, RefPicList eRefPicList, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
     554  Void          setMVPNumSubParts             ( Int iMVPNum, RefPicList eRefPicList, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
    598555
    599556  Void          clipMv                        ( TComMv&     rcMv     ) const;
    600557
    601 #if NH_MV
    602   Void          checkMvVertRest (TComMv&  rcMv,  RefPicList eRefPicList, int iRefIdx );
    603 #endif
    604558  Void          getMvPredLeft                 ( TComMv&     rcMvPred ) const                               { rcMvPred = m_cMvFieldA.getMv();            }
    605559  Void          getMvPredAbove                ( TComMv&     rcMvPred ) const                               { rcMvPred = m_cMvFieldB.getMv();            }
    606560  Void          getMvPredAboveRight           ( TComMv&     rcMvPred ) const                               { rcMvPred = m_cMvFieldC.getMv();            }
     561
     562#if NH_MV
     563  Void          checkMvVertRest (TComMv&  rcMv,  RefPicList eRefPicList, int iRefIdx );
     564#endif
     565
     566
    607567#if NH_3D
    608568  Void          compressMV            ( Int scale );
     
    619579  TComDataCU*   getCtuAboveLeft             () { return m_pCtuAboveLeft;  }
    620580  TComDataCU*   getCtuAboveRight            () { return m_pCtuAboveRight; }
    621   TComDataCU*   getCUColocated              ( RefPicList eRefPicList ) { return m_apcCUColocated[eRefPicList]; }
    622581  Bool          CUIsFromSameSlice           ( const TComDataCU *pCU /* Can be NULL */) const { return ( pCU!=NULL && pCU->getSlice()->getSliceCurStartCtuTsAddr() == getSlice()->getSliceCurStartCtuTsAddr() ); }
    623582  Bool          CUIsFromSameTile            ( const TComDataCU *pCU /* Can be NULL */) const;
     
    653612  Void          deriveLeftBottomIdx           ( UInt uiPartIdx, UInt& ruiPartIdxLB ) const;
    654613
     614  Bool          hasEqualMotion                ( UInt uiAbsPartIdx, const TComDataCU* pcCandCU, UInt uiCandAbsPartIdx ) const;
     615
    655616#if NH_3D
    656617  Bool          hasEqualMotion              ( Int dirA, const TComMvField* mvFieldA,  Int dirB, const TComMvField* mvFieldB  );
    657 #endif
    658   Bool          hasEqualMotion                ( UInt uiAbsPartIdx, const TComDataCU* pcCandCU, UInt uiCandAbsPartIdx ) const;
    659 
    660 #if NH_3D_MLC
    661618  Bool          getAvailableFlagA1() { return m_bAvailableFlagA1;   }
    662619  Bool          getAvailableFlagB1() { return m_bAvailableFlagB1;   }
     
    664621  Bool          getAvailableFlagA0() { return m_bAvailableFlagA0;   }
    665622  Bool          getAvailableFlagB2() { return m_bAvailableFlagB2;   }
    666   Void          initAvailableFlags() { m_bAvailableFlagA1 = m_bAvailableFlagB1 = m_bAvailableFlagB0 = m_bAvailableFlagA0 = m_bAvailableFlagB2 = 0;  }
    667   Void          buildMCL(TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours
    668 #if NH_3D_VSP
    669     , Int* vspFlag
    670 #endif
    671 #if NH_3D_SPIVMP
    672     , Bool* pbSPIVMPFlag
    673 #endif
    674     , Int& numValidMergeCand
    675     );
    676   Void          xGetInterMergeCandidates      ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours
    677 #if NH_3D_SPIVMP
    678   , TComMvField* pcMvFieldSP, UChar* puhInterDirSP
    679 #endif
    680   , Int& numValidMergeCand, Int mrgCandIdx = -1 );
    681 #endif
    682 #if NH_3D
    683   Void          getInterMergeCandidates       ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours, Int& numValidMergeCand, Int mrgCandIdx = -1 );
     623 
     624  Void          initAvailableFlags() { m_bAvailableFlagA1 = m_bAvailableFlagB1 = m_bAvailableFlagB0 = m_bAvailableFlagA0 = m_bAvailableFlagB2 = 0;  } 
     625 
     626  Void          buildMCL(TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours, Int* vspFlag, Bool* pbSPIVMPFlag , Int& numValidMergeCand    ); 
     627  Void          xGetInterMergeCandidates      ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours, TComMvField* pcMvFieldSP, UChar* puhInterDirSP, Int& numValidMergeCand, Int mrgCandIdx = -1 );
     628#endif
     629
     630#if MCTS_ENC_CHECK
     631  Void          getInterMergeCandidates       ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours, Int& numValidMergeCand, UInt& numSpatialMergeCandidates , Int mrgCandIdx = -1)
    684632#else
    685   Void          getInterMergeCandidates       ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours, Int& numValidMergeCand, Int mrgCandIdx = -1 ) const;
    686 #endif
    687 
    688 #if NH_3D_VSP
    689 #if NH_3D_SPIVMP
     633  Void          getInterMergeCandidates       ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours, Int& numValidMergeCand, Int mrgCandIdx = -1 )
     634#endif
     635#if !NH_3D
     636  const
     637#endif
     638;
     639#if NH_3D
    690640  Bool*         getSPIVMPFlag        ()                        const { return m_pbSPIVMPFlag;          }
    691641  Bool          getSPIVMPFlag        ( UInt uiIdx )            const { return m_pbSPIVMPFlag[uiIdx];   }
    692642  Void          setSPIVMPFlag        ( UInt uiIdx, Bool n )     { m_pbSPIVMPFlag[uiIdx] = n;      }
    693643  Void          setSPIVMPFlagSubParts( Bool bSPIVMPFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );
    694 #endif
    695644
    696645  SChar*        getVSPFlag        ()                        const { return m_piVSPFlag;          }
     
    729678  UInt          getCtxSkipFlag                ( UInt   uiAbsPartIdx ) const;
    730679  UInt          getCtxInterDir                ( UInt   uiAbsPartIdx ) const;
    731 #if NH_3D_ARP
     680#if NH_3D
    732681  UInt          getCTXARPWFlag                  ( UInt   uiAbsPartIdx                                 );
    733682#endif 
Note: See TracChangeset for help on using the changeset viewer.