Changeset 950 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComDataCU.cpp
- Timestamp:
- 25 Apr 2014, 12:38:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r884 r950 610 610 memset( m_apSegmentDCOffset[1] + firstElement, 0, numElements * sizeof( *m_apSegmentDCOffset[1] ) ); 611 611 #endif 612 #if HS_DMM_SDC_PREDICTOR_UNIFY_H0108 613 m_apDmmPredictor[0] = 0; 614 m_apDmmPredictor[1] = 0; 615 #endif 612 616 #endif 613 617 #if H_3D_DBBP … … 784 788 m_apSegmentDCOffset[1][ui] = 0; 785 789 #endif 790 #if HS_DMM_SDC_PREDICTOR_UNIFY_H0108 791 m_apDmmPredictor[0] = 0; 792 m_apDmmPredictor[1] = 0; 793 #endif 786 794 #endif 787 795 #if H_3D_DBBP … … 898 906 memset( m_apSegmentDCOffset[0], 0, sizeof(Pel) * m_uiNumPartition ); 899 907 memset( m_apSegmentDCOffset[1], 0, sizeof(Pel) * m_uiNumPartition ); 908 #endif 909 #if HS_DMM_SDC_PREDICTOR_UNIFY_H0108 910 m_apDmmPredictor[0] = 0; 911 m_apDmmPredictor[1] = 0; 900 912 #endif 901 913 #endif … … 2352 2364 2353 2365 TComMv cDv = depthRefineFlag ? DvInfo.m_acDoNBDV : DvInfo.m_acNBDV; 2366 #if SEC_VER_DONBDV_H0103 2367 if( depthRefineFlag ) 2368 { 2369 cDv.setVer(0); 2370 } 2371 #endif 2354 2372 2355 2373 Int depthPosX = Clip3(0, iPictureWidth - iWidth, iBlkX + ((cDv.getHor()+2)>>2)); … … 2383 2401 UInt TComDataCU::getCtxAngleFlag( UInt uiAbsPartIdx ) 2384 2402 { 2403 #if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135 2404 return 0; 2405 #else 2385 2406 TComDataCU* pcTempCU; 2386 2407 UInt uiTempPartIdx; … … 2396 2417 2397 2418 return uiCtx; 2419 #endif 2398 2420 } 2399 2421 #endif … … 3258 3280 * false: otherwise 3259 3281 */ 3282 #if ETRIKHU_CLEANUP_H0083 3283 inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount) 3284 #else 3260 3285 inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount, 3261 3286 Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* vspFlag, Int& iCount3DV, InheritedVSPDisInfo* inheritedVSPDisInfo ) 3287 #endif 3262 3288 { 3263 3289 if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getVPS()->getViewSynthesisPredFlag( m_pcSlice->getLayerIdInVps() ) || m_pcSlice->getIsDepth() || pDInfo->m_aVIdxCan == -1) … … 3275 3301 } 3276 3302 3303 #if ETRIKHU_CLEANUP_H0083 3304 TComMvField mvVSP[2]; 3305 UChar dirVSP; 3306 #else 3277 3307 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 3308 #endif 3278 3309 3279 3310 Bool refViewAvailFlag = false; … … 3290 3321 refViewAvailFlag = true; 3291 3322 predFlag[iRefListIdX] = 1; 3323 #if ETRIKHU_CLEANUP_H0083 3324 mvVSP[0+iRefListIdX].setMvField( pDInfo->m_acNBDV, i ); 3325 #if H_3D_NBDV 3326 mvVSP[0+iRefListIdX].getMv().setIDVFlag (false); 3327 #endif 3328 #else 3292 3329 pcMvFieldNeighbours[(iCount<<1)+iRefListIdX].setMvField( pDInfo->m_acNBDV, i ); 3293 3330 #if H_3D_NBDV 3294 3331 pcMvFieldNeighbours[(iCount<<1)+iRefListIdX].getMv().setIDVFlag (false); 3295 3332 #endif 3296 } 3297 } 3298 } 3299 3333 #endif 3334 } 3335 } 3336 } 3337 3338 #if ETRIKHU_CLEANUP_H0083 3339 dirVSP = (predFlag[0] | (predFlag[1] << 1)); 3340 m_mergCands[MRG_VSP].setCand( mvVSP, dirVSP, true, false); 3341 #else 3300 3342 // Set values to be returned 3301 3343 abCandIsInter [iCount] = true; 3302 3344 puhInterDirNeighbours[iCount] = (predFlag[0] | (predFlag[1] << 1)); 3303 3345 vspFlag [iCount] = 1; 3346 #endif 3304 3347 3305 3348 if ( mrgCandIdx == iCount ) … … 3316 3359 3317 3360 #if H_3D_IV_MERGE 3361 #if ETRIKHU_CLEANUP_H0083 3362 inline Bool TComDataCU::xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx ) 3363 #else 3318 3364 inline Bool TComDataCU::xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* ivCandDir, TComMv* ivCandMv, 3319 3365 Int* ivCandRefIdx, Int iPosIvDC, Int* vspFlag, Int &iCount3DV, InheritedVSPDisInfo* inheritedVSPDisInfo ) 3366 #endif 3320 3367 { 3321 3368 for(Int iLoop = 0; iLoop < 2; iLoop ++ ) … … 3325 3372 { 3326 3373 Int iFirDispCand = -1; 3374 #if ETRIKHU_CLEANUP_H0083 3375 TComMvField mvIvDcShift[2]; 3376 UChar dirIvDcShift; 3377 3378 if (xGetPosFirstAvailDmvCand(MRG_IVSHIFT, iFirDispCand)) 3379 #else 3327 3380 if (xGetPosFirstAvailDmvCand(iCount, pcMvFieldNeighbours, ivCandDir, iPosIvDC, vspFlag, iFirDispCand)) 3381 #endif 3328 3382 { 3329 3383 TComMv cMv; 3384 #if ETRIKHU_CLEANUP_H0083 3385 cMv = m_mergCands[iFirDispCand].m_cMvField[0].getMv(); 3386 #else 3330 3387 cMv = pcMvFieldNeighbours[(iFirDispCand<<1)].getMv(); 3388 #endif 3331 3389 cMv.setHor(cMv.getHor()+4); 3332 3390 if(m_pcSlice->getVPS()->getViewSynthesisPredFlag(m_pcSlice->getLayerIdInVps())) … … 3334 3392 cMv.setVer(0); 3335 3393 } 3394 #if !(NTT_BUG_FIX_TK54) 3336 3395 clipMv( cMv ); 3337 3396 #endif 3397 3398 #if ETRIKHU_CLEANUP_H0083 3399 dirIvDcShift = m_mergCands[iFirDispCand].m_uDir; 3400 mvIvDcShift[0].setMvField(cMv, m_mergCands[iFirDispCand].m_cMvField[0].getRefIdx() ); 3401 mvIvDcShift[1].setMvField(m_mergCands[iFirDispCand].m_cMvField[1].getMv(), m_mergCands[iFirDispCand].m_cMvField[1].getRefIdx() ); 3402 m_mergCands[MRG_IVSHIFT].setCand(mvIvDcShift, dirIvDcShift, false, false); 3403 #else 3338 3404 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 3339 3405 … … 3342 3408 pcMvFieldNeighbours [ iCount << 1 ].setMvField(cMv, pcMvFieldNeighbours[( iFirDispCand << 1)].getRefIdx() ); 3343 3409 pcMvFieldNeighbours [(iCount << 1) + 1 ].setMvField(pcMvFieldNeighbours[(iFirDispCand << 1) + 1].getMv(), pcMvFieldNeighbours[( iFirDispCand << 1) + 1].getRefIdx() ); 3410 #endif 3344 3411 3345 3412 if( mrgCandIdx == iCount ) … … 3372 3439 if( !iLoop && ivCandDir[0] > 0) 3373 3440 { 3441 #if ETRIKHU_CLEANUP_H0083 3442 if(tmpDir == m_mergCands[MRG_IVMC].m_uDir && m_mergCands[MRG_IVMC].m_cMvField[0]==tmpMV[0] && m_mergCands[MRG_IVMC].m_cMvField[1]==tmpMV[1]) 3443 #else 3374 3444 if(tmpDir == puhInterDirNeighbours[0] && pcMvFieldNeighbours[0]==tmpMV[0] && pcMvFieldNeighbours[1]==tmpMV[1]) 3445 #endif 3375 3446 { 3376 3447 bRemove = true; … … 3379 3450 if(!bRemove) 3380 3451 { 3452 #if ETRIKHU_CLEANUP_H0083 3453 #if H_3D_NBDV 3454 if(iLoop) // For IvMcShift candidate 3455 { 3456 tmpMV[0].getMv().setIDVFlag (false); 3457 tmpMV[1].getMv().setIDVFlag (false); 3458 } 3459 #endif 3460 m_mergCands[MRG_IVSHIFT].setCand(tmpMV, tmpDir, false, false); 3461 #else 3381 3462 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 3382 3463 … … 3398 3479 } 3399 3480 #endif 3481 #endif 3400 3482 if( mrgCandIdx == iCount ) 3401 3483 { … … 3410 3492 } 3411 3493 3494 #if ETRIKHU_CLEANUP_H0083 3495 inline Bool TComDataCU::xGetPosFirstAvailDmvCand(Int iCount, Int& posFirstAvailDmvCand ) 3496 { 3497 for ( Int currListPos = 0; currListPos < iCount; currListPos++ ) 3498 { 3499 if ( !m_mergCands[currListPos].m_bAvailable || ( currListPos == MRG_IVMC ) || ( currListPos == MRG_IVDC ) || ( m_mergCands[currListPos].m_iVspFlag != 0 )) 3500 { 3501 continue; 3502 } 3503 else if((m_mergCands[currListPos].m_bAvailable) && (m_mergCands[currListPos].m_cMvField[0].getRefIdx() != -1 ) && (getSlice()->getViewIndex() != getSlice()->getRefPic(RefPicList(0), m_mergCands[currListPos].m_cMvField[0].getRefIdx())->getViewIndex())) 3504 { 3505 posFirstAvailDmvCand = currListPos; 3506 return true; 3507 } 3508 } 3509 return false; 3510 } 3511 #else 3412 3512 inline Bool TComDataCU::xGetPosFirstAvailDmvCand( Int iCount, TComMvField* pcMvFieldNeighbours, Int* ivCandDir, Int posIvDC, Int* vspFlag, Int& posFirstAvailDmvCand ) 3413 3513 { … … 3427 3527 return false; 3428 3528 } 3529 #endif 3429 3530 3430 3531 #endif 3431 3532 3432 3533 #if H_3D 3534 #if ETRIKHU_CLEANUP_H0083 3535 3536 Void TComDataCU::buildMCL(TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours 3537 #if H_3D_VSP 3538 , Int* vspFlag 3539 #endif 3540 #if H_3D_SPIVMP 3541 , Bool* pbSPIVMPFlag 3542 #endif 3543 , Int& numValidMergeCand 3544 ) 3545 { 3546 if (!( getSlice()->getIsDepth() || getSlice()->getViewIndex()>0)) // for only dependent texture 3547 { 3548 return; 3549 } 3550 3551 Int iCount = 0; 3552 TComMv cZeroMv; 3553 3554 // init temporal list 3555 TComMvField extMergeCandList[MRG_MAX_NUM_CANDS_MEM << 1]; 3556 UChar uhInterDirNeighboursExt[MRG_MAX_NUM_CANDS_MEM]; 3557 for( UInt ui = 0; ui < getSlice()->getMaxNumMergeCand(); ++ui ) 3558 { 3559 uhInterDirNeighboursExt[ui] = puhInterDirNeighbours[ui]; 3560 extMergeCandList[ui<<1].setMvField(cZeroMv, NOT_VALID); 3561 extMergeCandList[(ui<<1)+1].setMvField(cZeroMv, NOT_VALID); 3562 vspFlag[ui] = 0; 3563 } 3564 3565 // add candidates to temporal list 3566 // insert MPI ... IvShift candidate 3567 for (Int i=0; i<=MRG_IVSHIFT; i++) 3568 { 3569 if (m_mergCands[i].m_bAvailable) 3570 { 3571 m_mergCands[i].getCand(iCount, extMergeCandList, uhInterDirNeighboursExt, vspFlag, pbSPIVMPFlag); 3572 iCount++; 3573 if (iCount >= getSlice()->getMaxNumMergeCand()) 3574 break; 3575 } 3576 } 3577 3578 // insert remaining base candidates 3579 while (iCount < getSlice()->getMaxNumMergeCand() && m_baseListidc < getSlice()->getMaxNumMergeCand()) 3580 { 3581 uhInterDirNeighboursExt[iCount] = puhInterDirNeighbours[m_baseListidc]; 3582 extMergeCandList[iCount<<1].setMvField(pcMvFieldNeighbours[m_baseListidc<<1].getMv(), pcMvFieldNeighbours[m_baseListidc<<1].getRefIdx()); 3583 if ( getSlice()->isInterB() ) 3584 { 3585 extMergeCandList[(iCount<<1)+1].setMvField(pcMvFieldNeighbours[(m_baseListidc<<1)+1].getMv(), pcMvFieldNeighbours[(m_baseListidc<<1)+1].getRefIdx()); 3586 } 3587 m_baseListidc++; 3588 iCount++; 3589 } 3590 3591 for( UInt ui = 0; ui < getSlice()->getMaxNumMergeCand(); ui++ ) 3592 { 3593 puhInterDirNeighbours[ui] = 0; 3594 pcMvFieldNeighbours[ui<<1].setMvField(cZeroMv, NOT_VALID); 3595 pcMvFieldNeighbours[(ui<<1)+1].setMvField(cZeroMv, NOT_VALID); 3596 } 3597 // copy extMergeCandList to output 3598 for( UInt ui = 0; ui < getSlice()->getMaxNumMergeCand(); ui++ ) 3599 { 3600 puhInterDirNeighbours[ui] = uhInterDirNeighboursExt[ui]; 3601 pcMvFieldNeighbours[ui<<1].setMvField(extMergeCandList[ui<<1].getMv(), extMergeCandList[ui<<1].getRefIdx()); 3602 if ( getSlice()->isInterB() ) 3603 pcMvFieldNeighbours[(ui<<1)+1].setMvField(extMergeCandList[(ui<<1)+1].getMv(), extMergeCandList[(ui<<1)+1].getRefIdx()); 3604 } 3605 numValidMergeCand = iCount; 3606 assert(iCount == getSlice()->getMaxNumMergeCand()); 3607 } 3608 #else 3433 3609 Void TComDataCU::rightShiftMergeCandList( TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* iVSPIndexTrue, InheritedVSPDisInfo* inheritedVSPDisInfo, UInt start, UInt num, Int &iCount3DV) 3434 3610 { … … 3451 3627 return; 3452 3628 } 3629 #endif 3453 3630 3454 3631 /** Constructs a list of merging candidates … … 3824 4001 #endif 3825 4002 #if H_3D_VSP 4003 #if !ETRIKHU_CLEANUP_H0083 3826 4004 , Int* vspFlag 4005 #endif 3827 4006 , InheritedVSPDisInfo* inheritedVSPDisInfo 3828 4007 #endif 3829 4008 #if H_3D_SPIVMP 4009 #if ETRIKHU_CLEANUP_H0083 4010 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP 4011 #else 3830 4012 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 4013 #endif 3831 4014 #endif 3832 4015 , Int& numValidMergeCand, Int mrgCandIdx … … 3839 4022 //////////////////////////// 3840 4023 TComMv cZeroMv; 4024 #if !ETRIKHU_CLEANUP_H0083 3841 4025 Bool abCandIsInter[ MRG_MAX_NUM_CANDS_MEM ]; 4026 #endif 3842 4027 #else 3843 4028 Bool abCandIsInter[ MRG_MAX_NUM_CANDS ]; … … 3905 4090 #if H_3D_DBBP 3906 4091 Bool bDBBPFlag = getDBBPFlag(uiAbsPartIdx); 4092 #if MTK_DIS_SPBIP8X4_H0205 4093 assert(bDBBPFlag == getDBBPFlag(0)); 4094 #endif 3907 4095 #endif 3908 4096 3909 4097 #if H_3D 4098 #if !ETRIKHU_CLEANUP_H0083 3910 4099 Int iPosLeftAbove[2] = {-1, -1}; 3911 4100 … … 3914 4103 Int numA1B1B0 = 0; 3915 4104 Int numA0B2 = 0; 3916 4105 #endif 3917 4106 #if H_3D_NBDV 3918 4107 for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++) … … 3923 4112 #endif 3924 4113 4114 4115 #if ETRIKHU_CLEANUP_H0083 4116 4117 4118 // Clean version for MCL construction align with WD 4119 // init mergCands list 4120 for (Int i = 0; i<MRG_IVSHIFT+1; i++) 4121 { 4122 m_mergCands[i].init(); 4123 } 4124 4125 m_baseListidc = 0; 4126 4127 //left 4128 UInt uiLeftPartIdx = 0; 4129 TComDataCU* pcCULeft = 0; 4130 pcCULeft = getPULeft( uiLeftPartIdx, uiPartIdxLB ); 4131 4132 if (getAvailableFlagA1()) 4133 { 4134 m_mergCands[MRG_A1].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4135 #if H_3D_VSP 4136 , 4137 (pcCULeft->getVSPFlag(uiLeftPartIdx) != 0 4138 #if H_3D_IC 4139 && !bICFlag 4140 #endif 4141 #if H_3D_ARP 4142 && !bARPFlag 4143 #endif 4144 #if RWTH_DBBP_NO_SPU_H0057 4145 && !bDBBPFlag 4146 #endif 4147 ) 4148 #endif 4149 , false 4150 ); 4151 m_baseListidc++; 4152 } 4153 4154 // above 4155 UInt uiAbovePartIdx = 0; 4156 TComDataCU* pcCUAbove = 0; 4157 pcCUAbove = getPUAbove( uiAbovePartIdx, uiPartIdxRT ); 4158 4159 if (getAvailableFlagB1()) 4160 { 4161 m_mergCands[MRG_B1].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4162 #if H_3D_VSP 4163 , 4164 ( ( ( getAddr() - pcCUAbove->getAddr() ) == 0) && (pcCUAbove->getVSPFlag(uiAbovePartIdx) != 0) 4165 #if H_3D_IC 4166 && !bICFlag 4167 #endif 4168 #if H_3D_ARP 4169 && !bARPFlag 4170 #endif 4171 #if RWTH_DBBP_NO_SPU_H0057 4172 && !bDBBPFlag 4173 #endif 4174 ) 4175 #endif 4176 , false 4177 ); 4178 m_baseListidc++; 4179 } 4180 4181 // above right 4182 UInt uiAboveRightPartIdx = 0; 4183 TComDataCU* pcCUAboveRight = 0; 4184 pcCUAboveRight = getPUAboveRight( uiAboveRightPartIdx, uiPartIdxRT ); 4185 4186 if (getAvailableFlagB0()) 4187 { 4188 m_mergCands[MRG_B0].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4189 #if H_3D_VSP 4190 , 4191 ( ( ( getAddr() - pcCUAboveRight->getAddr() ) == 0) && (pcCUAboveRight->getVSPFlag(uiAboveRightPartIdx) != 0) 4192 #if H_3D_IC 4193 && !bICFlag 4194 #endif 4195 #if H_3D_ARP 4196 && !bARPFlag 4197 #endif 4198 #if RWTH_DBBP_NO_SPU_H0057 4199 && !bDBBPFlag 4200 #endif 4201 ) 4202 #endif 4203 , false 4204 ); 4205 m_baseListidc++; 4206 } 4207 4208 // left bottom 4209 UInt uiLeftBottomPartIdx = 0; 4210 TComDataCU* pcCULeftBottom = getPUBelowLeft( uiLeftBottomPartIdx, uiPartIdxLB ); 4211 4212 if (getAvailableFlagA0()) 4213 { 4214 m_mergCands[MRG_A0].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4215 #if H_3D_VSP 4216 , 4217 (pcCULeftBottom->getVSPFlag(uiLeftBottomPartIdx) != 0 4218 #if H_3D_IC 4219 && !bICFlag 4220 #endif 4221 #if H_3D_ARP 4222 && !bARPFlag 4223 #endif 4224 #if RWTH_DBBP_NO_SPU_H0057 4225 && !bDBBPFlag 4226 #endif 4227 ) 4228 #endif 4229 , false 4230 ); 4231 m_baseListidc++; 4232 } 4233 4234 // above left 4235 UInt uiAboveLeftPartIdx = 0; 4236 TComDataCU* pcCUAboveLeft = 0; 4237 pcCUAboveLeft = getPUAboveLeft( uiAboveLeftPartIdx, uiAbsPartAddr ); 4238 4239 if (getAvailableFlagB2()) 4240 { 4241 m_mergCands[MRG_B2].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4242 #if H_3D_VSP 4243 , 4244 ( ( ( getAddr() - pcCUAboveLeft->getAddr() ) == 0) && (pcCUAboveLeft->getVSPFlag(uiAboveLeftPartIdx) != 0) 4245 #if H_3D_IC 4246 && !bICFlag 4247 #endif 4248 #if H_3D_ARP 4249 && !bARPFlag 4250 #endif 4251 #if RWTH_DBBP_NO_SPU_H0057 4252 && !bDBBPFlag 4253 #endif 4254 ) 4255 #endif 4256 , false 4257 ); 4258 m_baseListidc++; 4259 } 4260 4261 4262 #if !ETRIKHU_BUGFIX_H0083 4263 Bool A1_was_available = m_mergCands[MRG_A1].m_bAvailable; 4264 Bool B1_was_available = m_mergCands[MRG_B1].m_bAvailable; 4265 #endif 4266 4267 4268 #else 3925 4269 //left 3926 4270 UInt uiLeftPartIdx = 0; … … 3938 4282 && !bARPFlag 3939 4283 #endif 4284 #if RWTH_DBBP_NO_SPU_H0057 4285 && !bDBBPFlag 4286 #endif 3940 4287 ) 3941 4288 { … … 3961 4308 && !bARPFlag 3962 4309 #endif 4310 #if RWTH_DBBP_NO_SPU_H0057 4311 && !bDBBPFlag 4312 #endif 3963 4313 ) 3964 4314 { … … 3984 4334 && !bARPFlag 3985 4335 #endif 4336 #if RWTH_DBBP_NO_SPU_H0057 4337 && !bDBBPFlag 4338 #endif 3986 4339 ) 3987 4340 { … … 4004 4357 #if H_3D_ARP 4005 4358 && !bARPFlag 4359 #endif 4360 #if RWTH_DBBP_NO_SPU_H0057 4361 && !bDBBPFlag 4006 4362 #endif 4007 4363 ) … … 4028 4384 && !bARPFlag 4029 4385 #endif 4386 #if RWTH_DBBP_NO_SPU_H0057 4387 && !bDBBPFlag 4388 #endif 4030 4389 ) 4031 4390 { … … 4038 4397 4039 4398 iCountHEVC = numValidMergeCand; 4399 #endif 4040 4400 #endif 4041 4401 … … 4047 4407 ///////////////////////////////////////////// 4048 4408 4409 #if SHARP_SIMPLE_MERGE_H0062 4410 bMPIFlag &= (nPSW + nPSH > 12); 4411 #endif 4049 4412 if( bMPIFlag) 4050 4413 { … … 4052 4415 tmpMV[1].setMvField( cZeroMv, NOT_VALID ); 4053 4416 tmpDir = 0; 4417 4418 #if ETRIKHU_CLEANUP_H0083 4419 Bool bSPIVMPFlag = false; 4420 #endif 4054 4421 4055 4422 TComPic * pcTexPic = m_pcSlice->getTexturePic(); … … 4090 4457 Int iTexPosX, iTexPosY; 4091 4458 const TComMv cMvRounding( 1 << ( 2 - 1 ), 1 << ( 2 - 1 ) ); 4459 #if MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133 4460 4461 Int iCenterPosX = iCurrPosX + ( ( iWidth / iPUWidth ) >> 1 ) * iPUWidth + ( iPUWidth >> 1 ); 4462 Int iCenterPosY = iCurrPosY + ( ( iHeight / iPUHeight ) >> 1 ) * iPUHeight + (iPUHeight >> 1); 4463 Int iTexCenterCUAddr, iTexCenterAbsPartIdx; 4464 4465 if(iWidth == iPUWidth && iHeight == iPUHeight) 4466 { 4467 iCenterPosX = iCurrPosX + (iWidth >> 1); 4468 iCenterPosY = iCurrPosY + (iHeight >> 1); 4469 } 4470 4471 // derivation of center motion parameters from the collocated texture CU 4472 4473 pcTexRec->getCUAddrAndPartIdx( iCenterPosX , iCenterPosY , iTexCenterCUAddr, iTexCenterAbsPartIdx ); 4474 TComDataCU* pcDefaultCU = pcTexPic->getCU( iTexCenterCUAddr ); 4475 4476 if( pcDefaultCU->getPredictionMode( iTexCenterAbsPartIdx ) != MODE_INTRA ) 4477 { 4478 for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ ) 4479 { 4480 RefPicList eCurrRefPicList = RefPicList( uiCurrRefListId ); 4481 4482 TComMvField cDefaultMvField; 4483 pcDefaultCU->getMvField( pcDefaultCU, iTexCenterAbsPartIdx, eCurrRefPicList, cDefaultMvField ); 4484 Int iDefaultRefIdx = cDefaultMvField.getRefIdx(); 4485 if (iDefaultRefIdx >= 0) 4486 { 4487 Int iDefaultRefPOC = pcDefaultCU->getSlice()->getRefPOC(eCurrRefPicList, iDefaultRefIdx); 4488 for (Int iRefPicList = 0; iRefPicList < m_pcSlice->getNumRefIdx( eCurrRefPicList ); iRefPicList++) 4489 { 4490 if (iDefaultRefPOC == m_pcSlice->getRefPOC(eCurrRefPicList, iRefPicList)) 4491 { 4492 #if ETRIKHU_CLEANUP_H0083 4493 bSPIVMPFlag = true; 4494 #else 4495 pbSPIVMPFlag[iCount] = true; 4496 #endif 4497 TComMv cMv = cDefaultMvField.getMv() + cMvRounding; 4498 cMv >>= 2; 4499 clipMv( cMv ); 4500 cMvFieldSaved[eCurrRefPicList].setMvField(cMv, iRefPicList) ; 4501 break; 4502 } 4503 } 4504 } 4505 } 4506 } 4507 #if ETRIKHU_CLEANUP_H0083 4508 if ( bSPIVMPFlag == true ) 4509 #else 4510 if ( pbSPIVMPFlag[iCount] == true ) 4511 #endif 4512 { 4513 iInterDirSaved = (cMvFieldSaved[0].getRefIdx()!=-1 ? 1: 0) + (cMvFieldSaved[1].getRefIdx()!=-1 ? 2: 0); 4514 tmpDir = iInterDirSaved; 4515 tmpMV[0] = cMvFieldSaved[0]; 4516 tmpMV[1] = cMvFieldSaved[1]; 4517 } 4518 4519 if ( iInterDirSaved != 0 ) 4520 { 4521 #endif 4092 4522 for (Int i=iCurrPosY; i < iCurrPosY + iHeight; i += iPUHeight) 4093 4523 { … … 4110 4540 { 4111 4541 TComMv cMv = cTexMvField.getMv() + cMvRounding; 4112 cMv >>=2; 4542 cMv >>=2; 4543 #if !(NTT_BUG_FIX_TK54) 4113 4544 this->clipMv( cMv ); 4545 #endif 4114 4546 pcMvFieldSP[2*iPartition + uiCurrRefListId].setMvField(cMv, iValidDepRef); 4115 4547 } … … 4126 4558 } 4127 4559 } 4560 #if MTK_DIS_SPBIP8X4_H0205 4561 if (iPUHeight + iPUWidth == 12) 4562 { 4563 if (puhInterDirSP[iPartition] == 3) 4564 { 4565 puhInterDirSP[iPartition] = 1; 4566 pcMvFieldSP[2*iPartition + 1].setMvField(TComMv(0,0), -1); 4567 } 4568 } 4569 #endif 4570 #if !MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133 4128 4571 else 4129 4572 { 4130 4573 if (iInterDirSaved ==0) 4131 4574 { 4575 #if ETRIKHU_CLEANUP_H0083 4576 bSPIVMPFlag = true; 4577 #else 4132 4578 pbSPIVMPFlag[iCount] = true; 4579 #endif 4133 4580 tmpDir = puhInterDirSP[iPartition]; 4134 4581 tmpMV[0] = pcMvFieldSP[2*iPartition]; … … 4149 4596 cMvFieldSaved[1] = pcMvFieldSP[2*iPartition + 1]; 4150 4597 } 4598 #endif 4151 4599 iPartition ++; 4152 4600 } 4153 4601 } 4602 #if MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133 4603 } 4604 #endif 4154 4605 #if H_3D_FCO 4155 4606 } … … 4158 4609 { 4159 4610 Int iCnloop = 0; 4611 #if ETRIKHU_CLEANUP_H0083 4612 for(iCnloop = 0; iCnloop < 2; iCnloop ++) 4613 { 4614 if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable ) // prunning to A1, B1 4615 { 4616 continue; 4617 } 4618 if (tmpDir == m_mergCands[MRG_A1+iCnloop].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+iCnloop].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+iCnloop].m_cMvField[1]) 4619 { 4620 m_mergCands[MRG_A1+iCnloop].m_bAvailable = false; 4621 break; 4622 } 4623 } 4624 m_mergCands[MRG_T].setCand( tmpMV, tmpDir, false, bSPIVMPFlag); 4625 4626 #else 4160 4627 Bool bRemoveSpa = false; //pruning 4161 4628 … … 4217 4684 4218 4685 puhInterDirNeighbours[iCount] = tmpDir; 4219 4686 #endif 4220 4687 if ( mrgCandIdx == iCount ) 4221 4688 { … … 4261 4728 cMVField.getMv() += cAdd; 4262 4729 cMVField.getMv() >>= 2; 4730 #if !(NTT_BUG_FIX_TK54) 4263 4731 clipMv( cMVField.getMv() ); 4732 #endif 4264 4733 tmpMV[ 0 ].setMvField( cMVField.getMv(), iValidDepRef ); 4265 4734 tmpDir = 1; … … 4284 4753 cMVField.getMv() += cAdd; 4285 4754 cMVField.getMv() >>= 2; 4755 #if !(NTT_BUG_FIX_TK54) 4286 4756 clipMv( cMVField.getMv() ); 4757 #endif 4287 4758 tmpMV[ 1 ].setMvField( cMVField.getMv(), iValidDepRef ); 4288 4759 tmpDir = 2; … … 4292 4763 if( tmpDir != 0 ) 4293 4764 { 4765 #if !ETRIKHU_CLEANUP_H0083 4294 4766 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, 5-iCount, iCount3DV); 4767 #endif 4295 4768 m_ucDDTmpDepth = m_pcSlice->getDepthFromDV( iDV, iViewIdx ); 4296 4769 m_iUseDDDCandIdx = iCount; 4297 4770 4771 #if ETRIKHU_CLEANUP_H0083 4772 m_mergCands[MRG_D].setCand( tmpMV, tmpDir, false, false); 4773 if ( mrgCandIdx == iCount ) 4774 { 4775 return; 4776 } 4777 iCount ++; 4778 #else 4298 4779 if( tmpDir == 1 ) 4299 4780 { … … 4324 4805 iPosLeftAbove[ 1 ] = iCount + iLeftAboveAvail; 4325 4806 } 4807 #endif 4326 4808 } 4327 4809 } … … 4332 4814 ///////////////////////////////////////////////////////////////// 4333 4815 4816 #if !ETRIKHU_CLEANUP_H0083 4334 4817 Int posIvDC = -1; 4818 #endif 4335 4819 4336 4820 // { IvMCL0, IvMCL1, IvDCL0, IvDCL1, IvMCL0Shift, IvMCL1Shift, IvDCL0Shift, IvDCL1Shift }; … … 4344 4828 Bool ivMvPredFlag = getSlice()->getVPS()->getIvMvPredFlag( getSlice()->getLayerIdInVps() ); 4345 4829 4830 #if SHARP_SIMPLE_MERGE_H0062 4831 ivMvPredFlag &= (nPSW + nPSH > 12); 4832 #endif 4346 4833 if ( ivMvPredFlag && cDisInfo.m_aVIdxCan!=-1) 4347 4834 { 4835 #if SEC_ADAPT_DISABLE_IVMP 4836 getInterViewMergeCands(uiPUIdx, ivCandRefIdx, ivCandMv, &cDisInfo, ivCandDir , bIsDepth, pcMvFieldSP, puhInterDirSP, bICFlag ); 4837 #else 4348 4838 getInterViewMergeCands(uiPUIdx, ivCandRefIdx, ivCandMv, &cDisInfo, ivCandDir , bIsDepth, pcMvFieldSP, puhInterDirSP ); 4839 #endif 4349 4840 } 4350 4841 … … 4372 4863 4373 4864 Bool bRemoveSpa = false; //pruning 4865 #if !ETRIKHU_CLEANUP_H0083 4374 4866 Bool bIvMC = false; 4375 4867 Int iCnloop=0; 4868 #endif 4376 4869 4377 4870 if (!bIsDepth) … … 4379 4872 for(Int i = 0; i < 2; i ++) 4380 4873 { 4874 #if ETRIKHU_CLEANUP_H0083 4875 if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // prunning to A1, B1 4876 { 4877 continue; 4878 } 4879 if (ivCandDir[0] == m_mergCands[MRG_A1+i].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]) 4880 { 4881 m_mergCands[MRG_A1+i].m_bAvailable = false; 4882 break; 4883 } 4884 #else 4381 4885 iCnloop = iPosLeftAbove[i]; 4382 4886 if ( iCnloop == -1 ) … … 4389 4893 break; 4390 4894 } 4895 #endif 4391 4896 } 4392 4897 } 4393 4898 if (bIsDepth) 4394 4899 { 4900 #if ETRIKHU_CLEANUP_H0083 4901 if (m_mergCands[MRG_T].m_bAvailable && ivCandDir[0] == m_mergCands[MRG_T].m_uDir && tmpMV[0]==m_mergCands[MRG_T].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_T].m_cMvField[1]) 4902 { 4903 bRemoveSpa = true; 4904 } 4905 #else 4395 4906 iCnloop = iCount-1; 4396 4907 for(; iCnloop >= 0; iCnloop --) … … 4408 4919 } 4409 4920 } 4921 #endif 4410 4922 } 4411 4923 4412 4924 if (!bRemoveSpa) 4413 4925 { 4926 #if !ETRIKHU_CLEANUP_H0083 4414 4927 bIvMC = true; 4415 4928 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); … … 4464 4977 if (bIvMC) 4465 4978 { 4979 #endif 4980 #if ETRIKHU_CLEANUP_H0083 4981 Bool SPIVMPFlag = false; 4982 #if MTK_DIS_SPBIP8X4_H0205 4983 if(!m_pcSlice->getIsDepth()) 4984 #else 4985 if(!m_pcSlice->getIsDepth() && getPartitionSize(0) == SIZE_2Nx2N ) 4986 #endif 4987 { 4988 SPIVMPFlag = true; 4989 } 4990 #if H_3D_DBBP 4991 SPIVMPFlag &= !bDBBPFlag; 4992 #endif 4993 #else 4466 4994 if(!m_pcSlice->getIsDepth() && getPartitionSize(0) == SIZE_2Nx2N ) 4467 4995 { … … 4471 4999 pbSPIVMPFlag[iCount] &= !bDBBPFlag; 4472 5000 #endif 5001 #endif 5002 #if ETRIKHU_CLEANUP_H0083 5003 m_mergCands[MRG_IVMC].setCand( tmpMV, ivCandDir[0], false, SPIVMPFlag); 5004 #else 4473 5005 if( ( ivCandDir[0] & 1 ) == 1 ) 4474 5006 { … … 4481 5013 4482 5014 puhInterDirNeighbours[ iCount ] = ivCandDir[0]; 5015 #endif 4483 5016 4484 5017 if ( mrgCandIdx == iCount ) … … 4498 5031 4499 5032 #if H_3D 5033 #if ETRIKHU_CLEANUP_H0083 5034 iCount += m_mergCands[MRG_A1].m_bAvailable + m_mergCands[MRG_B1].m_bAvailable + m_mergCands[MRG_B0].m_bAvailable; 5035 #else 4500 5036 iCount += numA1B1B0; 5037 #endif 4501 5038 #else 4502 5039 //left … … 4627 5164 for(Int i = 0; i < 2; i ++) 4628 5165 { 5166 #if ETRIKHU_CLEANUP_H0083 5167 if ( !m_mergCands[MRG_A1+i].m_bAvailable ) 5168 #else 4629 5169 Int iCnloop = iPosLeftAbove[i]; 4630 5170 if ( iCnloop == -1 ) 5171 #endif 4631 5172 { 4632 5173 continue; 4633 5174 } 5175 #if ETRIKHU_CLEANUP_H0083 5176 #if ETRIKHU_BUGFIX_H0083 5177 if (ivCandDir[1] == m_mergCands[MRG_A1+i].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]) 5178 #else 5179 Int offset = 0; 5180 offset += A1_was_available; 5181 offset += B1_was_available; 5182 offset += m_mergCands[MRG_B0].m_bAvailable; 5183 if (puhInterDirNeighbours[offset] == m_mergCands[MRG_A1+i].m_uDir && pcMvFieldNeighbours[(offset<<1)]==m_mergCands[MRG_A1+i].m_cMvField[0] && pcMvFieldNeighbours[(offset<<1)+1]==m_mergCands[MRG_A1+i].m_cMvField[1]) 5184 #endif 5185 #else 4634 5186 if(puhInterDirNeighbours[iCount] == puhInterDirNeighbours[iCnloop] && pcMvFieldNeighbours[iCnloop<<1]==pcMvFieldNeighbours[(iCount<<1)] && pcMvFieldNeighbours[(iCnloop<<1)+1]==pcMvFieldNeighbours[(iCount<<1)+1]) 5187 #endif 4635 5188 { 4636 5189 bRemoveSpa = true; … … 4640 5193 if(!bRemoveSpa) 4641 5194 { 5195 #if ETRIKHU_CLEANUP_H0083 5196 #if H_3D_NBDV 5197 tmpMV[0].getMv().setIDVFlag (false); 5198 tmpMV[1].getMv().setIDVFlag (false); 5199 #endif 5200 m_mergCands[MRG_IVDC].setCand( tmpMV, ivCandDir[1], false, false); 5201 #else 4642 5202 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 4643 5203 puhInterDirNeighbours[ iCount ] = ivCandDir[1]; … … 4655 5215 #endif 4656 5216 posIvDC = iCount; 5217 #endif 4657 5218 if ( mrgCandIdx == iCount ) 4658 5219 return; … … 4682 5243 !bARPFlag && 4683 5244 #endif 5245 #if SHARP_SIMPLE_MERGE_H0062 5246 (nPSW + nPSH > 12) && 5247 #endif 5248 #if RWTH_DBBP_NO_SPU_H0057 5249 !bDBBPFlag && 5250 #endif 5251 #if ETRIKHU_CLEANUP_H0083 5252 xAddVspCand( mrgCandIdx, &cDisInfo, iCount ) ) 5253 #else 4684 5254 xAddVspCand( mrgCandIdx, &cDisInfo, iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, iCount3DV, inheritedVSPDisInfo ) ) 5255 #endif 4685 5256 { 4686 5257 return; … … 4698 5269 4699 5270 #if H_3D 5271 #if ETRIKHU_CLEANUP_H0083 5272 iCount += m_mergCands[MRG_A0].m_bAvailable + m_mergCands[MRG_B2].m_bAvailable; 5273 #else 4700 5274 iCount += numA0B2; 5275 #endif 4701 5276 #else 4702 5277 //left bottom … … 4772 5347 if( ivMvPredFlag && iCount < getSlice()->getMaxNumMergeCand() && !getSlice()->getIsDepth() ) 4773 5348 { 5349 #if ETRIKHU_CLEANUP_H0083 5350 if(xAddIvMRGCand( mrgCandIdx, iCount, ivCandDir, ivCandMv, ivCandRefIdx ) ) 5351 #else 4774 5352 if(xAddIvMRGCand( mrgCandIdx, iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, ivCandDir, ivCandMv, ivCandRefIdx, posIvDC, vspFlag, iCount3DV, inheritedVSPDisInfo ) ) 5353 #endif 4775 5354 { 4776 5355 return; … … 4785 5364 4786 5365 #if H_3D 5366 #if !ETRIKHU_CLEANUP_H0083 4787 5367 if (iCountHEVC + iCount3DV > getSlice()->getMaxNumMergeCand()) 4788 5368 { … … 4794 5374 } 4795 5375 numValidMergeCand = iCount; 5376 #endif 4796 5377 #else 4797 5378 if ( getSlice()->getEnableTMVPFlag()) … … 6227 6808 if( bCheck ) 6228 6809 { 6810 #if !(NTT_BUG_FIX_TK54) 6229 6811 clipMv(cColMv); 6812 #endif 6230 6813 pDInfo->m_acNBDV = cColMv; 6231 6814 pDInfo->m_aVIdxCan = iTargetViewIdx; … … 6296 6879 { 6297 6880 TComMv cDispVec = cIDVInfo.m_acMvCand[iList][ curPos ]; 6881 #if !(NTT_BUG_FIX_TK54) 6298 6882 clipMv( cDispVec ); 6883 #endif 6299 6884 pDInfo->m_acNBDV = cDispVec; 6300 6885 pDInfo->m_aVIdxCan = cIDVInfo.m_aVIdxCan[iList][ curPos ]; … … 6426 7011 Pel iDisp = getMcpFromDM( pcBaseViewDepthPicYuv, cMvPred, iBlkX, iBlkY, iWidth, iHeight, aiShiftLUT ); 6427 7012 cMvPred->setHor( iDisp ); 7013 #if !(NTT_BUG_FIX_TK54) 6428 7014 clipMv(*cMvPred); 7015 #endif 6429 7016 } 6430 7017 } … … 6452 7039 if (refViewIdx != m_pcSlice->getViewIndex()) 6453 7040 { 7041 #if !(NTT_BUG_FIX_TK54) 6454 7042 clipMv(cMvPred); 7043 #endif 6455 7044 pNbDvInfo->m_acNBDV = cMvPred; 6456 7045 pNbDvInfo->m_aVIdxCan = refViewIdx; … … 6635 7224 6636 7225 TComMv cDv = depthRefineFlag ? pDInfo->m_acDoNBDV : pDInfo->m_acNBDV; 7226 #if SEC_VER_DONBDV_H0103 7227 if( depthRefineFlag ) 7228 { 7229 cDv.setVer(0); 7230 } 7231 #endif 6637 7232 6638 7233 Int iBasePosX = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (cDv.getHor() + 2 ) >> 2 ) ); … … 6743 7338 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP 6744 7339 #endif 7340 #if SEC_ADAPT_DISABLE_IVMP 7341 , Bool bICFlag 7342 #endif 6745 7343 ) 6746 7344 { … … 6771 7369 6772 7370 TComMv cDv = depthRefineFlag ? pDInfo->m_acDoNBDV : pDInfo->m_acNBDV; 7371 #if SEC_VER_DONBDV_H0103 7372 if( depthRefineFlag ) 7373 { 7374 cDv.setVer(0); 7375 } 7376 #endif 6773 7377 6774 7378 Bool abPdmAvailable[8] = {false, false, false, false, false, false, false, false}; … … 6778 7382 pacPdmMv[i].setIDVFlag (false); 6779 7383 } 7384 #endif 7385 7386 #if SEC_ADAPT_DISABLE_IVMP 7387 if(!bICFlag) 7388 { 6780 7389 #endif 6781 7390 … … 6786 7395 if(!m_pcSlice->getIsDepth()) 6787 7396 { 7397 #if MTK_DIS_SPBIP8X4_H0205 7398 if (!getDBBPFlag(0)) 7399 #else 6788 7400 if( getPartitionSize(0) == SIZE_2Nx2N ) 7401 #endif 6789 7402 { 6790 7403 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; … … 6859 7472 #endif 6860 7473 #endif 7474 #if !(NTT_BUG_FIX_TK54) 6861 7475 clipMv( cMv ); 7476 #endif 6862 7477 paiPdmRefIdx [ uiCurrRefListId ] = iPdmRefIdx; 6863 7478 pacPdmMv [ uiCurrRefListId ] = cMv; … … 6917 7532 cMv.setIDVVId (iViewIndex); 6918 7533 } 6919 7534 7535 #if !(NTT_BUG_FIX_TK54) 6920 7536 clipMv( cMv ); 7537 #endif 6921 7538 bLoop_stop = true; 6922 7539 … … 6939 7556 6940 7557 } 7558 #if MTK_DIS_SPBIP8X4_H0205 7559 if (iSPHeight + iSPWidth == 12) 7560 { 7561 if (puhInterDirSP[iPartition] == 3) 7562 { 7563 puhInterDirSP[iPartition] = 1; 7564 pcMvFieldSP[2*iPartition + 1].setMvField(TComMv(0,0), -1); 7565 } 7566 } 7567 #endif 6941 7568 iPartition ++; 6942 7569 } … … 6960 7587 iCurrPosY += ( iHeight >> 1 ); 6961 7588 } 7589 #if MTK_DIS_SPBIP8X4_H0205 7590 for(Int iLoopCan = ( (m_pcSlice->getIsDepth() || getDBBPFlag(0)) ? 0 : 1 ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++) 7591 #else 6962 7592 for(Int iLoopCan = ( (m_pcSlice->getIsDepth() || getPartitionSize(uiPartAddr) != SIZE_2Nx2N) ? 0 : 1 ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++) 7593 #endif 6963 7594 #else 6964 7595 for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++) … … 7018 7649 #endif 7019 7650 #endif 7651 #if !(NTT_BUG_FIX_TK54) 7020 7652 clipMv( cMv ); 7653 #endif 7021 7654 paiPdmRefIdx [ (uiCurrRefListId + (iLoopCan<<2)) ] = iPdmRefIdx; 7022 7655 pacPdmMv [ (uiCurrRefListId + (iLoopCan<<2)) ] = cMv; … … 7032 7665 } 7033 7666 #if H_3D_SPIVMP 7667 #if H_3D_FIX_DBBP_IVMP 7668 for(Int iLoopCan = ( (m_pcSlice->getIsDepth() || getDBBPFlag(0)) ? 0 : 1 ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++) 7669 #else 7034 7670 for(Int iLoopCan = ( 1 - m_pcSlice->getIsDepth() ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++) 7671 #endif 7035 7672 #else 7036 7673 for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++) … … 7040 7677 } 7041 7678 7679 #if SEC_ADAPT_DISABLE_IVMP 7680 } 7681 #endif 7042 7682 7043 7683 //////////////////////////////// … … 7071 7711 #endif 7072 7712 cMv.setVer( 0 ); 7713 #if !(NTT_BUG_FIX_TK54) 7073 7714 clipMv( cMv ); 7715 #endif 7074 7716 pacPdmMv [iRefListId + 2 + (iLoopCan<<2)] = cMv; 7075 7717 }
Note: See TracChangeset for help on using the changeset viewer.