Changeset 1412 in 3DVCSoftware for branches/HTM-16.2-dev/source/Lib/TLibCommon/TComDataCU.h
- Timestamp:
- 12 Apr 2018, 11:12:21 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-16.2-dev/source/Lib/TLibCommon/TComDataCU.h
r1405 r1412 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 6, ITU/ISO/IEC6 * Copyright (c) 2010-2017, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 60 60 static const UInt NUM_MOST_PROBABLE_MODES=3; 61 61 62 #if NH_3D _DBBP62 #if NH_3D 63 63 typedef struct _DBBPTmpData 64 64 { … … 111 111 112 112 Bool* m_skipFlag; ///< array of skip flags 113 #if NH_3D _DIS113 #if NH_3D 114 114 Bool* m_bDISFlag; 115 115 UChar* m_ucDISType; … … 142 142 TComDataCU* m_pCtuAbove; ///< pointer of above CTU. 143 143 TComDataCU* m_pCtuLeft; ///< pointer of left CTU 144 TComDataCU* m_apcCUColocated[NUM_REF_PIC_LIST_01]; ///< pointer of temporally colocated CU's for both directions145 144 TComMvField m_cMvFieldA; ///< motion vector of position A 146 145 TComMvField m_cMvFieldB; ///< motion vector of position B … … 162 161 SChar* m_apiMVPNum[NUM_REF_PIC_LIST_01]; ///< array of number of possible motion vectors predictors 163 162 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 165 167 DisInfo* m_pDvInfo; 166 #endif167 #if NH_3D_VSP168 168 SChar* m_piVSPFlag; ///< array of VSP flags to indicate whehter a block uses VSP or not ///< 0: non-VSP; 1: VSP 169 #endif170 #if NH_3D_SPIVMP171 169 Bool* m_pbSPIVMPFlag; ///< array of sub-PU IVMP flags to indicate whehter a block uses sub-PU IVMP ///< 0: non-SPIVMP; 1: SPIVMP 172 #endif173 #if NH_3D_ARP174 170 UChar* m_puhARPW; 175 #endif176 #if NH_3D_IC177 171 Bool* m_pbICFlag; ///< array of IC flags 178 #endif179 #if NH_3D_DMM180 172 Pel* m_dmmDeltaDC[NUM_DMM][2]; 181 173 UInt* m_dmm1WedgeTabIdx; 182 #endif183 #if NH_3D_SDC_INTRA184 174 Bool* m_pbSDCFlag; 185 175 Pel* m_apSegmentDCOffset[2]; 186 #endif187 #if NH_3D_DBBP188 176 Bool* m_pbDBBPFlag; ///< array of DBBP flags 189 177 DbbpTmpData m_sDBBPTmpData; 190 #endif 191 #if NH_3D_MLC 178 192 179 Bool m_bAvailableFlagA1; ///< A1 available flag 193 180 Bool m_bAvailableFlagB1; ///< B1 available flag … … 212 199 UInt m_uiTotalBins; ///< sum of partition bins 213 200 SChar m_codedQP; 214 #if NH_3D _MLC201 #if NH_3D 215 202 DisInfo m_cDefaultDisInfo; ///< Default disparity information for initializing 216 203 TComMotionCand m_mergCands[MRG_IVSHIFT+1]; ///< Motion candidates for merge mode … … 226 213 Bool xAddMVPCandWithScaling ( AMVPInfo &info, const RefPicList eRefPicList, const Int iRefIdx, const UInt uiPartUnitIdx, const MVP_DIR eDir ) const; 227 214 228 #if NH_3D _VSP215 #if NH_3D 229 216 Bool xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount); 230 #endif231 #if NH_3D_IV_MERGE232 217 Bool xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx ); 233 218 #endif … … 235 220 Void deriveRightBottomIdx ( UInt uiPartIdx, UInt& ruiPartIdxRB ) const; 236 221 237 #if NH_3D _TMVP222 #if NH_3D 238 223 Bool xGetColMVP ( const RefPicList eRefPicList, const Int ctuRsAddr, const Int partUnitIdx, TComMv& rcMv, Int& refIdx, Bool bMRG = true ) const; 239 224 #else … … 242 227 243 228 /// compute scaling factor from POC difference 244 #if !NH_3D _ARP229 #if !NH_3D 245 230 static Int xGetDistScaleFactor ( Int iCurrPOC, Int iCurrRefPOC, Int iColPOC, Int iColRefPOC ); 246 231 #endif 247 232 Void xDeriveCenterIdx ( UInt uiPartIdx, UInt& ruiPartIdxCenter ) const; 248 233 249 #if NH_3D _VSP250 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 ); 251 236 #endif 252 237 253 238 public: 254 239 255 #if NH_3D _ARP240 #if NH_3D 256 241 static Int xGetDistScaleFactor ( Int iCurrPOC, Int iCurrRefPOC, Int iColPOC, Int iColRefPOC ); 257 242 #endif … … 274 259 Void initSubCU ( TComDataCU* pcCU, UInt uiPartUnitIdx, UInt uiDepth, Int qp ); 275 260 Void setOutsideCUPart ( UInt uiAbsPartIdx, UInt uiDepth ); 276 #if NH_3D_NBDV 261 262 Void copySubCU ( TComDataCU* pcCU, UInt uiPartUnitIdx ); 263 #if NH_3D 277 264 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 ); 283 266 #else 284 267 Void copyInterPredInfoFrom ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefPicList ); … … 307 290 308 291 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 310 300 Void getPosInPic ( UInt uiAbsPartIndex, Int& riPosX, Int& riPosY ) const; 311 #endif312 313 #if NH_3D_ARP314 301 Void setSlice ( TComSlice* pcSlice) { m_pcSlice = pcSlice; } 315 302 Void setPic ( TComDataCU* pcCU ) { m_pcPic = pcCU->getPic(); } … … 325 312 Void setCUTransquantBypassSubParts( Bool flag, UInt uiAbsPartIdx, UInt uiDepth ); 326 313 327 #if NH_3D _DBBP314 #if NH_3D 328 315 Pel* getVirtualDepthBlock(UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt& uiDepthStride); 329 316 #endif 330 317 331 Bool* getSkipFlag 318 Bool* getSkipFlag () { return m_skipFlag; } 332 319 Bool getSkipFlag ( UInt idx ) const { return m_skipFlag[idx]; } 333 320 Void setSkipFlag ( UInt idx, Bool skip) { m_skipFlag[idx] = skip; } 334 321 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 352 334 Bool* getDBBPFlag () const { return m_pbDBBPFlag; } 353 335 Bool getDBBPFlag ( UInt uiIdx ) const { return m_pbDBBPFlag[uiIdx]; } … … 355 337 Void setDBBPFlagSubParts ( Bool bDBBPFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ); 356 338 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 358 347 359 348 SChar* getCrossComponentPredictionAlpha( ComponentID compID ) { return m_crossComponentPredictionAlpha[compID]; } … … 451 440 template <typename T> 452 441 Void setSubPart ( T bParameter, T* pbBaseCtu, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx ); 453 #if H_3D_VSP || NH_3D_DBBP442 #if NH_3D 454 443 template<typename T> 455 444 Void setSubPartT ( T uiParameter, T* puhBaseLCU, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx ); … … 477 466 Void setIPCMFlag (UInt uiIdx, Bool b ) { m_pbIPCMFlag[uiIdx] = b; } 478 467 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 480 477 Void setDvInfoSubParts ( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiDepth ); 481 #if H_3D_VSP || NH_3D_DBBP482 478 Void setDvInfoSubParts ( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth); 483 #endif484 479 DisInfo* getDvInfo () { return m_pDvInfo; } 485 480 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 532 493 UChar* getARPW () const { return m_puhARPW; } 533 494 UChar getARPW ( UInt uiIdx ) const { return m_puhARPW[uiIdx]; } 534 495 Void setARPW ( UInt uiIdx, UChar w ) { m_puhARPW[uiIdx] = w; } 535 496 Void setARPWSubParts ( UChar w, UInt uiAbsPartIdx, UInt uiDepth ); 536 #endif 537 #if NH_3D_IC 497 538 498 Bool* getICFlag () { return m_pbICFlag; } 539 499 Bool getICFlag ( UInt uiIdx ) { return m_pbICFlag[uiIdx]; } … … 541 501 Void setICFlagSubParts ( Bool bICFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ); 542 502 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 567 513 Bool* getSDCFlag () { return m_pbSDCFlag; } 568 514 Bool getSDCFlag ( UInt uiIdx ) { return m_pbSDCFlag[uiIdx]; } 569 515 Void setSDCFlagSubParts ( Bool bSDCFlag, UInt uiAbsPartIdx, UInt uiDepth ); 570 516 571 517 Bool getSDCAvailable ( UInt uiAbsPartIdx ); 572 518 573 519 Pel* getSDCSegmentDCOffset( UInt uiSeg ) { return m_apSegmentDCOffset[uiSeg]; } 574 520 Pel getSDCSegmentDCOffset( UInt uiSeg, UInt uiPartIdx ) { return m_apSegmentDCOffset[uiSeg][uiPartIdx]; } 575 521 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; 577 534 578 535 // ------------------------------------------------------------------------------------------------------------------- … … 586 543 Void getPartPosition ( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH ) const; 587 544 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; } 589 546 Int getMVPIdx ( RefPicList eRefPicList, UInt uiIdx) const { return m_apiMVPIdx[eRefPicList][uiIdx]; } 590 547 SChar* getMVPIdx ( RefPicList eRefPicList ) { return m_apiMVPIdx[eRefPicList]; } 591 548 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; } 593 550 Int getMVPNum ( RefPicList eRefPicList, UInt uiIdx ) const { return m_apiMVPNum[eRefPicList][uiIdx]; } 594 551 SChar* getMVPNum ( RefPicList eRefPicList ) { return m_apiMVPNum[eRefPicList]; } 595 552 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 ); 598 555 599 556 Void clipMv ( TComMv& rcMv ) const; 600 557 601 #if NH_MV602 Void checkMvVertRest (TComMv& rcMv, RefPicList eRefPicList, int iRefIdx );603 #endif604 558 Void getMvPredLeft ( TComMv& rcMvPred ) const { rcMvPred = m_cMvFieldA.getMv(); } 605 559 Void getMvPredAbove ( TComMv& rcMvPred ) const { rcMvPred = m_cMvFieldB.getMv(); } 606 560 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 607 567 #if NH_3D 608 568 Void compressMV ( Int scale ); … … 619 579 TComDataCU* getCtuAboveLeft () { return m_pCtuAboveLeft; } 620 580 TComDataCU* getCtuAboveRight () { return m_pCtuAboveRight; } 621 TComDataCU* getCUColocated ( RefPicList eRefPicList ) { return m_apcCUColocated[eRefPicList]; }622 581 Bool CUIsFromSameSlice ( const TComDataCU *pCU /* Can be NULL */) const { return ( pCU!=NULL && pCU->getSlice()->getSliceCurStartCtuTsAddr() == getSlice()->getSliceCurStartCtuTsAddr() ); } 623 582 Bool CUIsFromSameTile ( const TComDataCU *pCU /* Can be NULL */) const; … … 653 612 Void deriveLeftBottomIdx ( UInt uiPartIdx, UInt& ruiPartIdxLB ) const; 654 613 614 Bool hasEqualMotion ( UInt uiAbsPartIdx, const TComDataCU* pcCandCU, UInt uiCandAbsPartIdx ) const; 615 655 616 #if NH_3D 656 617 Bool hasEqualMotion ( Int dirA, const TComMvField* mvFieldA, Int dirB, const TComMvField* mvFieldB ); 657 #endif658 Bool hasEqualMotion ( UInt uiAbsPartIdx, const TComDataCU* pcCandCU, UInt uiCandAbsPartIdx ) const;659 660 #if NH_3D_MLC661 618 Bool getAvailableFlagA1() { return m_bAvailableFlagA1; } 662 619 Bool getAvailableFlagB1() { return m_bAvailableFlagB1; } … … 664 621 Bool getAvailableFlagA0() { return m_bAvailableFlagA0; } 665 622 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) 684 632 #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 690 640 Bool* getSPIVMPFlag () const { return m_pbSPIVMPFlag; } 691 641 Bool getSPIVMPFlag ( UInt uiIdx ) const { return m_pbSPIVMPFlag[uiIdx]; } 692 642 Void setSPIVMPFlag ( UInt uiIdx, Bool n ) { m_pbSPIVMPFlag[uiIdx] = n; } 693 643 Void setSPIVMPFlagSubParts( Bool bSPIVMPFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ); 694 #endif695 644 696 645 SChar* getVSPFlag () const { return m_piVSPFlag; } … … 729 678 UInt getCtxSkipFlag ( UInt uiAbsPartIdx ) const; 730 679 UInt getCtxInterDir ( UInt uiAbsPartIdx ) const; 731 #if NH_3D _ARP680 #if NH_3D 732 681 UInt getCTXARPWFlag ( UInt uiAbsPartIdx ); 733 682 #endif
Note: See TracChangeset for help on using the changeset viewer.