Changeset 911 in 3DVCSoftware for branches/HTM-10.2-dev1-ETRI/source
- Timestamp:
- 13 Apr 2014, 14:27:40 (11 years ago)
- Location:
- branches/HTM-10.2-dev1-ETRI/source/Lib
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibCommon/TComDataCU.cpp
r897 r911 3258 3258 * false: otherwise 3259 3259 */ 3260 #if ETRIKHU_CLEANUP_H0083 3261 inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount) 3262 #else 3260 3263 inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount, 3261 3264 Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* vspFlag, Int& iCount3DV, InheritedVSPDisInfo* inheritedVSPDisInfo ) 3265 #endif 3262 3266 { 3263 3267 if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getVPS()->getViewSynthesisPredFlag( m_pcSlice->getLayerIdInVps() ) || m_pcSlice->getIsDepth() || pDInfo->m_aVIdxCan == -1) … … 3275 3279 } 3276 3280 3281 #if ETRIKHU_CLEANUP_H0083 3282 TComMvField mvVSP[2]; 3283 UChar dirVSP; 3284 #else 3277 3285 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 3286 #endif 3278 3287 3279 3288 Bool refViewAvailFlag = false; … … 3290 3299 refViewAvailFlag = true; 3291 3300 predFlag[iRefListIdX] = 1; 3301 #if ETRIKHU_CLEANUP_H0083 3302 mvVSP[0+iRefListIdX].setMvField( pDInfo->m_acNBDV, i ); 3303 #if H_3D_NBDV 3304 mvVSP[0+iRefListIdX].getMv().setIDVFlag (false); 3305 #endif 3306 #else 3292 3307 pcMvFieldNeighbours[(iCount<<1)+iRefListIdX].setMvField( pDInfo->m_acNBDV, i ); 3293 3308 #if H_3D_NBDV 3294 3309 pcMvFieldNeighbours[(iCount<<1)+iRefListIdX].getMv().setIDVFlag (false); 3295 3310 #endif 3296 } 3297 } 3298 } 3299 3311 #endif 3312 } 3313 } 3314 } 3315 3316 #if ETRIKHU_CLEANUP_H0083 3317 dirVSP = (predFlag[0] | (predFlag[1] << 1)); 3318 m_mergCands[MRG_VSP].setCand( mvVSP, dirVSP, true, false); 3319 #else 3300 3320 // Set values to be returned 3301 3321 abCandIsInter [iCount] = true; 3302 3322 puhInterDirNeighbours[iCount] = (predFlag[0] | (predFlag[1] << 1)); 3303 3323 vspFlag [iCount] = 1; 3324 #endif 3304 3325 3305 3326 if ( mrgCandIdx == iCount ) … … 3316 3337 3317 3338 #if H_3D_IV_MERGE 3339 #if ETRIKHU_CLEANUP_H0083 3340 inline Bool TComDataCU::xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx ) 3341 #else 3318 3342 inline Bool TComDataCU::xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* ivCandDir, TComMv* ivCandMv, 3319 3343 Int* ivCandRefIdx, Int iPosIvDC, Int* vspFlag, Int &iCount3DV, InheritedVSPDisInfo* inheritedVSPDisInfo ) 3344 #endif 3320 3345 { 3321 3346 for(Int iLoop = 0; iLoop < 2; iLoop ++ ) … … 3325 3350 { 3326 3351 Int iFirDispCand = -1; 3352 #if ETRIKHU_CLEANUP_H0083 3353 TComMvField mvIvDcShift[2]; 3354 UChar dirIvDcShift; 3355 3356 if (xGetPosFirstAvailDmvCand(MRG_IVSHIFT, iFirDispCand)) 3357 #else 3327 3358 if (xGetPosFirstAvailDmvCand(iCount, pcMvFieldNeighbours, ivCandDir, iPosIvDC, vspFlag, iFirDispCand)) 3359 #endif 3328 3360 { 3329 3361 TComMv cMv; 3362 #if ETRIKHU_CLEANUP_H0083 3363 cMv = m_mergCands[iFirDispCand].m_cMvField[0].getMv(); 3364 #else 3330 3365 cMv = pcMvFieldNeighbours[(iFirDispCand<<1)].getMv(); 3366 #endif 3331 3367 cMv.setHor(cMv.getHor()+4); 3332 3368 if(m_pcSlice->getVPS()->getViewSynthesisPredFlag(m_pcSlice->getLayerIdInVps())) … … 3338 3374 #endif 3339 3375 3376 #if ETRIKHU_CLEANUP_H0083 3377 dirIvDcShift = m_mergCands[iFirDispCand].m_uDir; 3378 mvIvDcShift[0].setMvField(cMv, m_mergCands[iFirDispCand].m_cMvField[0].getRefIdx() ); 3379 mvIvDcShift[1].setMvField(m_mergCands[iFirDispCand].m_cMvField[1].getMv(), m_mergCands[iFirDispCand].m_cMvField[1].getRefIdx() ); 3380 m_mergCands[MRG_IVSHIFT].setCand(mvIvDcShift, dirIvDcShift, false, false); 3381 #else 3340 3382 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 3341 3383 … … 3344 3386 pcMvFieldNeighbours [ iCount << 1 ].setMvField(cMv, pcMvFieldNeighbours[( iFirDispCand << 1)].getRefIdx() ); 3345 3387 pcMvFieldNeighbours [(iCount << 1) + 1 ].setMvField(pcMvFieldNeighbours[(iFirDispCand << 1) + 1].getMv(), pcMvFieldNeighbours[( iFirDispCand << 1) + 1].getRefIdx() ); 3346 3388 #endif 3389 3347 3390 if( mrgCandIdx == iCount ) 3348 3391 { … … 3374 3417 if( !iLoop && ivCandDir[0] > 0) 3375 3418 { 3419 #if ETRIKHU_CLEANUP_H0083 3420 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]) 3421 #else 3376 3422 if(tmpDir == puhInterDirNeighbours[0] && pcMvFieldNeighbours[0]==tmpMV[0] && pcMvFieldNeighbours[1]==tmpMV[1]) 3423 #endif 3377 3424 { 3378 3425 bRemove = true; … … 3381 3428 if(!bRemove) 3382 3429 { 3430 #if ETRIKHU_CLEANUP_H0083 3431 #if H_3D_NBDV 3432 if(iLoop) // For IvMcShift candidate 3433 { 3434 tmpMV[0].getMv().setIDVFlag (false); 3435 tmpMV[1].getMv().setIDVFlag (false); 3436 } 3437 #endif 3438 m_mergCands[MRG_IVSHIFT].setCand(tmpMV, tmpDir, false, false); 3439 #else 3383 3440 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 3384 3441 … … 3400 3457 } 3401 3458 #endif 3459 #endif 3402 3460 if( mrgCandIdx == iCount ) 3403 3461 { … … 3412 3470 } 3413 3471 3472 #if ETRIKHU_CLEANUP_H0083 3473 inline Bool TComDataCU::xGetPosFirstAvailDmvCand(Int iCount, Int& posFirstAvailDmvCand ) 3474 { 3475 for ( Int currListPos = 0; currListPos < iCount; currListPos++ ) 3476 { 3477 if ( !m_mergCands[currListPos].m_bAvailable || ( currListPos == MRG_IVMC ) || ( currListPos == MRG_IVDC ) || ( m_mergCands[currListPos].m_iVspFlag != 0 )) 3478 { 3479 continue; 3480 } 3481 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())) 3482 { 3483 posFirstAvailDmvCand = currListPos; 3484 return true; 3485 } 3486 } 3487 return false; 3488 } 3489 #else 3414 3490 inline Bool TComDataCU::xGetPosFirstAvailDmvCand( Int iCount, TComMvField* pcMvFieldNeighbours, Int* ivCandDir, Int posIvDC, Int* vspFlag, Int& posFirstAvailDmvCand ) 3415 3491 { … … 3429 3505 return false; 3430 3506 } 3431 3507 #endif 3508 3432 3509 #endif 3433 3510 3434 3511 #if H_3D 3512 #if ETRIKHU_CLEANUP_H0083 3513 3514 Void TComDataCU::buildMCL(TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours 3515 #if H_3D_VSP 3516 , Int* vspFlag 3517 #endif 3518 #if H_3D_SPIVMP 3519 , Bool* pbSPIVMPFlag 3520 #endif 3521 , Int& numValidMergeCand 3522 ) 3523 { 3524 if (!( getSlice()->getIsDepth() || getSlice()->getViewIndex()>0)) // for only dependent texture 3525 { 3526 return; 3527 } 3528 3529 Int iCount = 0; 3530 TComMv cZeroMv; 3531 3532 // init temporal list 3533 TComMvField extMergeCandList[MRG_MAX_NUM_CANDS_MEM << 1]; 3534 UChar uhInterDirNeighboursExt[MRG_MAX_NUM_CANDS_MEM]; 3535 for( UInt ui = 0; ui < getSlice()->getMaxNumMergeCand(); ++ui ) 3536 { 3537 uhInterDirNeighboursExt[ui] = puhInterDirNeighbours[ui]; 3538 extMergeCandList[ui<<1].setMvField(cZeroMv, NOT_VALID); 3539 extMergeCandList[(ui<<1)+1].setMvField(cZeroMv, NOT_VALID); 3540 vspFlag[ui] = 0; 3541 } 3542 3543 // add candidates to temporal list 3544 // insert MPI ... IvShift candidate 3545 for (Int i=0; i<=MRG_IVSHIFT; i++) 3546 { 3547 if (m_mergCands[i].m_bAvailable) 3548 { 3549 m_mergCands[i].getCand(iCount, extMergeCandList, uhInterDirNeighboursExt, vspFlag, pbSPIVMPFlag); 3550 iCount++; 3551 if (iCount >= getSlice()->getMaxNumMergeCand()) 3552 break; 3553 } 3554 } 3555 3556 // insert remaining base candidates 3557 while (iCount < getSlice()->getMaxNumMergeCand() && m_baseListidc < getSlice()->getMaxNumMergeCand()) 3558 { 3559 uhInterDirNeighboursExt[iCount] = puhInterDirNeighbours[m_baseListidc]; 3560 extMergeCandList[iCount<<1].setMvField(pcMvFieldNeighbours[m_baseListidc<<1].getMv(), pcMvFieldNeighbours[m_baseListidc<<1].getRefIdx()); 3561 if ( getSlice()->isInterB() ) 3562 { 3563 extMergeCandList[(iCount<<1)+1].setMvField(pcMvFieldNeighbours[(m_baseListidc<<1)+1].getMv(), pcMvFieldNeighbours[(m_baseListidc<<1)+1].getRefIdx()); 3564 } 3565 m_baseListidc++; 3566 iCount++; 3567 } 3568 3569 for( UInt ui = 0; ui < getSlice()->getMaxNumMergeCand(); ui++ ) 3570 { 3571 puhInterDirNeighbours[ui] = 0; 3572 pcMvFieldNeighbours[ui<<1].setMvField(cZeroMv, NOT_VALID); 3573 pcMvFieldNeighbours[(ui<<1)+1].setMvField(cZeroMv, NOT_VALID); 3574 } 3575 // copy extMergeCandList to output 3576 for( UInt ui = 0; ui < getSlice()->getMaxNumMergeCand(); ui++ ) 3577 { 3578 puhInterDirNeighbours[ui] = uhInterDirNeighboursExt[ui]; 3579 pcMvFieldNeighbours[ui<<1].setMvField(extMergeCandList[ui<<1].getMv(), extMergeCandList[ui<<1].getRefIdx()); 3580 if ( getSlice()->isInterB() ) 3581 pcMvFieldNeighbours[(ui<<1)+1].setMvField(extMergeCandList[(ui<<1)+1].getMv(), extMergeCandList[(ui<<1)+1].getRefIdx()); 3582 } 3583 numValidMergeCand = iCount; 3584 assert(iCount == getSlice()->getMaxNumMergeCand()); 3585 } 3586 #else 3435 3587 Void TComDataCU::rightShiftMergeCandList( TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* iVSPIndexTrue, InheritedVSPDisInfo* inheritedVSPDisInfo, UInt start, UInt num, Int &iCount3DV) 3436 3588 { … … 3453 3605 return; 3454 3606 } 3607 #endif 3455 3608 3456 3609 /** Constructs a list of merging candidates … … 3826 3979 #endif 3827 3980 #if H_3D_VSP 3828 , Int* vspFlag 3981 #if !ETRIKHU_CLEANUP_H0083 3982 , Int* vspFlag 3983 #endif 3829 3984 , InheritedVSPDisInfo* inheritedVSPDisInfo 3830 3985 #endif 3831 3986 #if H_3D_SPIVMP 3987 #if ETRIKHU_CLEANUP_H0083 3988 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP 3989 #else 3832 3990 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 3991 #endif 3833 3992 #endif 3834 3993 , Int& numValidMergeCand, Int mrgCandIdx … … 3841 4000 //////////////////////////// 3842 4001 TComMv cZeroMv; 4002 #if !ETRIKHU_CLEANUP_H0083 3843 4003 Bool abCandIsInter[ MRG_MAX_NUM_CANDS_MEM ]; 4004 #endif 3844 4005 #else 3845 4006 Bool abCandIsInter[ MRG_MAX_NUM_CANDS ]; … … 3910 4071 3911 4072 #if H_3D 4073 #if !ETRIKHU_CLEANUP_H0083 3912 4074 Int iPosLeftAbove[2] = {-1, -1}; 3913 4075 … … 3916 4078 Int numA1B1B0 = 0; 3917 4079 Int numA0B2 = 0; 3918 4080 #endif 3919 4081 #if H_3D_NBDV 3920 4082 for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++) … … 3925 4087 #endif 3926 4088 4089 4090 #if ETRIKHU_CLEANUP_H0083 4091 4092 4093 // Clean version for MCL construction align with WD 4094 // init mergCands list 4095 for (Int i = 0; i<MRG_IVSHIFT+1; i++) 4096 { 4097 m_mergCands[i].init(); 4098 } 4099 4100 m_baseListidc = 0; 4101 4102 //left 4103 UInt uiLeftPartIdx = 0; 4104 TComDataCU* pcCULeft = 0; 4105 pcCULeft = getPULeft( uiLeftPartIdx, uiPartIdxLB ); 4106 4107 if (getAvailableFlagA1()) 4108 { 4109 m_mergCands[MRG_A1].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4110 #if H_3D_VSP 4111 , 4112 (pcCULeft->getVSPFlag(uiLeftPartIdx) != 0 4113 #if H_3D_IC 4114 && !bICFlag 4115 #endif 4116 #if H_3D_ARP 4117 && !bARPFlag 4118 #endif 4119 ) 4120 #endif 4121 , false 4122 ); 4123 m_baseListidc++; 4124 } 4125 4126 // above 4127 UInt uiAbovePartIdx = 0; 4128 TComDataCU* pcCUAbove = 0; 4129 pcCUAbove = getPUAbove( uiAbovePartIdx, uiPartIdxRT ); 4130 4131 if (getAvailableFlagB1()) 4132 { 4133 m_mergCands[MRG_B1].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4134 #if H_3D_VSP 4135 , 4136 ( ( ( getAddr() - pcCUAbove->getAddr() ) == 0) && (pcCUAbove->getVSPFlag(uiAbovePartIdx) != 0) 4137 #if H_3D_IC 4138 && !bICFlag 4139 #endif 4140 #if H_3D_ARP 4141 && !bARPFlag 4142 #endif 4143 ) 4144 #endif 4145 , false 4146 ); 4147 m_baseListidc++; 4148 } 4149 4150 // above right 4151 UInt uiAboveRightPartIdx = 0; 4152 TComDataCU* pcCUAboveRight = 0; 4153 pcCUAboveRight = getPUAboveRight( uiAboveRightPartIdx, uiPartIdxRT ); 4154 4155 if (getAvailableFlagB0()) 4156 { 4157 m_mergCands[MRG_B0].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4158 #if H_3D_VSP 4159 , 4160 ( ( ( getAddr() - pcCUAboveRight->getAddr() ) == 0) && (pcCUAboveRight->getVSPFlag(uiAboveRightPartIdx) != 0) 4161 #if H_3D_IC 4162 && !bICFlag 4163 #endif 4164 #if H_3D_ARP 4165 && !bARPFlag 4166 #endif 4167 ) 4168 #endif 4169 , false 4170 ); 4171 m_baseListidc++; 4172 } 4173 4174 // left bottom 4175 UInt uiLeftBottomPartIdx = 0; 4176 TComDataCU* pcCULeftBottom = getPUBelowLeft( uiLeftBottomPartIdx, uiPartIdxLB ); 4177 4178 if (getAvailableFlagA0()) 4179 { 4180 m_mergCands[MRG_A0].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4181 #if H_3D_VSP 4182 , 4183 (pcCULeftBottom->getVSPFlag(uiLeftBottomPartIdx) != 0 4184 #if H_3D_IC 4185 && !bICFlag 4186 #endif 4187 #if H_3D_ARP 4188 && !bARPFlag 4189 #endif 4190 ) 4191 #endif 4192 , false 4193 ); 4194 m_baseListidc++; 4195 } 4196 4197 // above left 4198 UInt uiAboveLeftPartIdx = 0; 4199 TComDataCU* pcCUAboveLeft = 0; 4200 pcCUAboveLeft = getPUAboveLeft( uiAboveLeftPartIdx, uiAbsPartAddr ); 4201 4202 if (getAvailableFlagB2()) 4203 { 4204 m_mergCands[MRG_B2].setCand( &pcMvFieldNeighbours[m_baseListidc<<1], puhInterDirNeighbours[m_baseListidc] 4205 #if H_3D_VSP 4206 , 4207 ( ( ( getAddr() - pcCUAboveLeft->getAddr() ) == 0) && (pcCUAboveLeft->getVSPFlag(uiAboveLeftPartIdx) != 0) 4208 #if H_3D_IC 4209 && !bICFlag 4210 #endif 4211 #if H_3D_ARP 4212 && !bARPFlag 4213 #endif 4214 ) 4215 #endif 4216 , false 4217 ); 4218 m_baseListidc++; 4219 } 4220 4221 4222 #if !ETRIKHU_BUGFIX_H0083 4223 Bool A1_was_available = m_mergCands[MRG_A1].m_bAvailable; 4224 Bool B1_was_available = m_mergCands[MRG_B1].m_bAvailable; 4225 #endif 4226 4227 4228 #else 3927 4229 //left 3928 4230 UInt uiLeftPartIdx = 0; … … 4041 4343 iCountHEVC = numValidMergeCand; 4042 4344 #endif 4345 #endif 4043 4346 4044 4347 … … 4054 4357 tmpMV[1].setMvField( cZeroMv, NOT_VALID ); 4055 4358 tmpDir = 0; 4359 4360 #if ETRIKHU_CLEANUP_H0083 4361 Bool bSPIVMPFlag = false; 4362 #endif 4056 4363 4057 4364 TComPic * pcTexPic = m_pcSlice->getTexturePic(); … … 4126 4433 if (iDefaultRefPOC == m_pcSlice->getRefPOC(eCurrRefPicList, iRefPicList)) 4127 4434 { 4435 #if ETRIKHU_CLEANUP_H0083 4436 bSPIVMPFlag = true; 4437 #else 4128 4438 pbSPIVMPFlag[iCount] = true; 4439 #endif 4129 4440 TComMv cMv = cDefaultMvField.getMv() + cMvRounding; 4130 4441 cMv >>= 2; … … 4137 4448 } 4138 4449 } 4450 #if ETRIKHU_CLEANUP_H0083 4451 if ( bSPIVMPFlag == true ) 4452 #else 4139 4453 if ( pbSPIVMPFlag[iCount] == true ) 4454 #endif 4140 4455 { 4141 4456 iInterDirSaved = (cMvFieldSaved[0].getRefIdx()!=-1 ? 1: 0) + (cMvFieldSaved[1].getRefIdx()!=-1 ? 2: 0); … … 4191 4506 if (iInterDirSaved ==0) 4192 4507 { 4508 #if ETRIKHU_CLEANUP_H0083 4509 bSPIVMPFlag = true; 4510 #else 4193 4511 pbSPIVMPFlag[iCount] = true; 4512 #endif 4194 4513 tmpDir = puhInterDirSP[iPartition]; 4195 4514 tmpMV[0] = pcMvFieldSP[2*iPartition]; … … 4223 4542 { 4224 4543 Int iCnloop = 0; 4544 #if ETRIKHU_CLEANUP_H0083 4545 for(iCnloop = 0; iCnloop < 2; iCnloop ++) 4546 { 4547 if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable ) // prunning to A1, B1 4548 { 4549 continue; 4550 } 4551 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]) 4552 { 4553 m_mergCands[MRG_A1+iCnloop].m_bAvailable = false; 4554 break; 4555 } 4556 } 4557 m_mergCands[MRG_T].setCand( tmpMV, tmpDir, false, bSPIVMPFlag); 4558 4559 #else 4225 4560 Bool bRemoveSpa = false; //pruning 4226 4561 … … 4282 4617 4283 4618 puhInterDirNeighbours[iCount] = tmpDir; 4284 4619 #endif 4285 4620 if ( mrgCandIdx == iCount ) 4286 4621 { … … 4361 4696 if( tmpDir != 0 ) 4362 4697 { 4698 #if !ETRIKHU_CLEANUP_H0083 4363 4699 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, 5-iCount, iCount3DV); 4700 #endif 4364 4701 m_ucDDTmpDepth = m_pcSlice->getDepthFromDV( iDV, iViewIdx ); 4365 4702 m_iUseDDDCandIdx = iCount; 4366 4703 4704 #if ETRIKHU_CLEANUP_H0083 4705 m_mergCands[MRG_D].setCand( tmpMV, tmpDir, false, false); 4706 if ( mrgCandIdx == iCount ) 4707 { 4708 return; 4709 } 4710 iCount ++; 4711 #else 4367 4712 if( tmpDir == 1 ) 4368 4713 { … … 4393 4738 iPosLeftAbove[ 1 ] = iCount + iLeftAboveAvail; 4394 4739 } 4740 #endif 4395 4741 } 4396 4742 } … … 4401 4747 ///////////////////////////////////////////////////////////////// 4402 4748 4749 #if !ETRIKHU_CLEANUP_H0083 4403 4750 Int posIvDC = -1; 4751 #endif 4404 4752 4405 4753 // { IvMCL0, IvMCL1, IvDCL0, IvDCL1, IvMCL0Shift, IvMCL1Shift, IvDCL0Shift, IvDCL1Shift }; … … 4441 4789 4442 4790 Bool bRemoveSpa = false; //pruning 4791 #if !ETRIKHU_CLEANUP_H0083 4443 4792 Bool bIvMC = false; 4444 4793 Int iCnloop=0; 4794 #endif 4445 4795 4446 4796 if (!bIsDepth) … … 4448 4798 for(Int i = 0; i < 2; i ++) 4449 4799 { 4800 #if ETRIKHU_CLEANUP_H0083 4801 if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // prunning to A1, B1 4802 { 4803 continue; 4804 } 4805 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]) 4806 { 4807 m_mergCands[MRG_A1+i].m_bAvailable = false; 4808 break; 4809 } 4810 #else 4450 4811 iCnloop = iPosLeftAbove[i]; 4451 4812 if ( iCnloop == -1 ) … … 4458 4819 break; 4459 4820 } 4821 #endif 4460 4822 } 4461 4823 } 4462 4824 if (bIsDepth) 4463 4825 { 4826 #if ETRIKHU_CLEANUP_H0083 4827 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]) 4828 { 4829 bRemoveSpa = true; 4830 } 4831 #else 4464 4832 iCnloop = iCount-1; 4465 4833 for(; iCnloop >= 0; iCnloop --) … … 4477 4845 } 4478 4846 } 4847 #endif 4479 4848 } 4480 4849 4481 4850 if (!bRemoveSpa) 4482 4851 { 4852 #if !ETRIKHU_CLEANUP_H0083 4483 4853 bIvMC = true; 4484 4854 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); … … 4533 4903 if (bIvMC) 4534 4904 { 4905 #endif 4906 #if ETRIKHU_CLEANUP_H0083 4907 Bool SPIVMPFlag = false; 4908 if(!m_pcSlice->getIsDepth() && getPartitionSize(0) == SIZE_2Nx2N ) 4909 { 4910 SPIVMPFlag = true; 4911 } 4912 #if H_3D_DBBP 4913 SPIVMPFlag &= !bDBBPFlag; 4914 #endif 4915 #else 4535 4916 if(!m_pcSlice->getIsDepth() && getPartitionSize(0) == SIZE_2Nx2N ) 4536 4917 { … … 4540 4921 pbSPIVMPFlag[iCount] &= !bDBBPFlag; 4541 4922 #endif 4923 #endif 4924 #if ETRIKHU_CLEANUP_H0083 4925 m_mergCands[MRG_IVMC].setCand( tmpMV, ivCandDir[0], false, SPIVMPFlag); 4926 #else 4542 4927 if( ( ivCandDir[0] & 1 ) == 1 ) 4543 4928 { … … 4550 4935 4551 4936 puhInterDirNeighbours[ iCount ] = ivCandDir[0]; 4937 #endif 4552 4938 4553 4939 if ( mrgCandIdx == iCount ) … … 4567 4953 4568 4954 #if H_3D 4955 #if ETRIKHU_CLEANUP_H0083 4956 iCount += m_mergCands[MRG_A1].m_bAvailable + m_mergCands[MRG_B1].m_bAvailable + m_mergCands[MRG_B0].m_bAvailable; 4957 #else 4569 4958 iCount += numA1B1B0; 4959 #endif 4570 4960 #else 4571 4961 //left … … 4696 5086 for(Int i = 0; i < 2; i ++) 4697 5087 { 5088 #if ETRIKHU_CLEANUP_H0083 5089 if ( !m_mergCands[MRG_A1+i].m_bAvailable ) 5090 #else 4698 5091 Int iCnloop = iPosLeftAbove[i]; 4699 5092 if ( iCnloop == -1 ) 5093 #endif 4700 5094 { 4701 5095 continue; 4702 5096 } 5097 #if ETRIKHU_CLEANUP_H0083 5098 #if ETRIKHU_BUGFIX_H0083 5099 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]) 5100 #else 5101 Int offset = 0; 5102 offset += A1_was_available; 5103 offset += B1_was_available; 5104 offset += m_mergCands[MRG_B0].m_bAvailable; 5105 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]) 5106 #endif 5107 #else 4703 5108 if(puhInterDirNeighbours[iCount] == puhInterDirNeighbours[iCnloop] && pcMvFieldNeighbours[iCnloop<<1]==pcMvFieldNeighbours[(iCount<<1)] && pcMvFieldNeighbours[(iCnloop<<1)+1]==pcMvFieldNeighbours[(iCount<<1)+1]) 5109 #endif 4704 5110 { 4705 5111 bRemoveSpa = true; … … 4709 5115 if(!bRemoveSpa) 4710 5116 { 5117 #if ETRIKHU_CLEANUP_H0083 5118 #if H_3D_NBDV 5119 tmpMV[0].getMv().setIDVFlag (false); 5120 tmpMV[1].getMv().setIDVFlag (false); 5121 #endif 5122 m_mergCands[MRG_IVDC].setCand( tmpMV, ivCandDir[1], false, false); 5123 #else 4711 5124 rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV); 4712 5125 puhInterDirNeighbours[ iCount ] = ivCandDir[1]; … … 4724 5137 #endif 4725 5138 posIvDC = iCount; 5139 #endif 4726 5140 if ( mrgCandIdx == iCount ) 4727 5141 return; … … 4751 5165 !bARPFlag && 4752 5166 #endif 5167 #if ETRIKHU_CLEANUP_H0083 5168 xAddVspCand( mrgCandIdx, &cDisInfo, iCount ) ) 5169 #else 4753 5170 xAddVspCand( mrgCandIdx, &cDisInfo, iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, iCount3DV, inheritedVSPDisInfo ) ) 5171 #endif 4754 5172 { 4755 5173 return; … … 4767 5185 4768 5186 #if H_3D 5187 #if ETRIKHU_CLEANUP_H0083 5188 iCount += m_mergCands[MRG_A0].m_bAvailable + m_mergCands[MRG_B2].m_bAvailable; 5189 #else 4769 5190 iCount += numA0B2; 5191 #endif 4770 5192 #else 4771 5193 //left bottom … … 4841 5263 if( ivMvPredFlag && iCount < getSlice()->getMaxNumMergeCand() && !getSlice()->getIsDepth() ) 4842 5264 { 5265 #if ETRIKHU_CLEANUP_H0083 5266 if(xAddIvMRGCand( mrgCandIdx, iCount, ivCandDir, ivCandMv, ivCandRefIdx ) ) 5267 #else 4843 5268 if(xAddIvMRGCand( mrgCandIdx, iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, ivCandDir, ivCandMv, ivCandRefIdx, posIvDC, vspFlag, iCount3DV, inheritedVSPDisInfo ) ) 5269 #endif 4844 5270 { 4845 5271 return; … … 4854 5280 4855 5281 #if H_3D 5282 #if !ETRIKHU_CLEANUP_H0083 4856 5283 if (iCountHEVC + iCount3DV > getSlice()->getMaxNumMergeCand()) 4857 5284 { … … 4863 5290 } 4864 5291 numValidMergeCand = iCount; 5292 #endif 4865 5293 #else 4866 5294 if ( getSlice()->getEnableTMVPFlag()) -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibCommon/TComDataCU.h
r884 r911 233 233 #endif 234 234 235 #if ETRIKHU_CLEANUP_H0083 236 TComMotionCand m_mergCands[MRG_IVSHIFT+1]; 237 Int m_baseListidc; 238 #endif 239 235 240 protected: 236 241 … … 239 244 Bool xAddMVPCandOrder ( AMVPInfo* pInfo, RefPicList eRefPicList, Int iRefIdx, UInt uiPartUnitIdx, MVP_DIR eDir ); 240 245 #if H_3D_VSP 246 #if ETRIKHU_CLEANUP_H0083 247 Bool xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount); 248 #else 241 249 Bool xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount, 242 250 Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* vspFlag, Int& iCount3DV, InheritedVSPDisInfo* inheritedVSPDisInfo); 243 251 #endif 252 #endif 244 253 #if H_3D_IV_MERGE 254 #if ETRIKHU_CLEANUP_H0083 255 Bool xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx ); 256 #else 245 257 Bool xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* ivCandDir, TComMv* ivCandMv, 246 258 Int* ivCandRefIdx, Int posIvDC, Int* vspFlag, Int &iCount3DV, InheritedVSPDisInfo* inheritedVSPDisInfo ); 259 #endif 260 #if ETRIKHU_CLEANUP_H0083 261 Bool xGetPosFirstAvailDmvCand( Int iCount, Int& iFirDispCand ); 262 #else 247 263 Bool xGetPosFirstAvailDmvCand( Int iCount, TComMvField* pcMvFieldNeighbours, Int* ivCandDir, Int posIvDC, Int* vspFlag, Int& iFirDispCand ); 264 #endif 248 265 #endif 249 266 … … 485 502 486 503 #if H_3D 504 #if !ETRIKHU_CLEANUP_H0083 487 505 Void rightShiftMergeCandList( TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* iVSPIndexTrue, InheritedVSPDisInfo* inheritedVSPDisInfo, UInt start, UInt num, Int &iCount3DV); 506 #endif 488 507 Bool getDispforDepth ( UInt uiPartIdx, UInt uiPartAddr, DisInfo* cDisp); 489 508 Bool getDispMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDis, Int* iPdm ); … … 635 654 Bool getAvailableFlagA0() { return m_bAvailableFlagA0;} 636 655 Bool getAvailableFlagB2() { return m_bAvailableFlagB2;} 656 #if ETRIKHU_CLEANUP_H0083 637 657 Void initAvailableFlags() { m_bAvailableFlagA1 = m_bAvailableFlagB1 = m_bAvailableFlagB0 = m_bAvailableFlagA0 = m_bAvailableFlagB2 = 0; } 658 Void buildMCL(TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours 659 #if H_3D_VSP 660 , Int* vspFlag 661 #endif 662 #if H_3D_SPIVMP 663 , Bool* pbSPIVMPFlag 664 #endif 665 , Int& numValidMergeCand 666 ); 667 #else 668 Void initAvailableFlags() { m_bAvailableFlagA1 = m_bAvailableFlagB1 = m_bAvailableFlagB0 = m_bAvailableFlagA0 = m_bAvailableFlagB2 = 0; } 669 #endif 638 670 Void getInterMergeCandidates( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int& numValidMergeCand, Int mrgCandIdx = -1); 639 671 Void xGetInterMergeCandidates ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours … … 642 674 #endif 643 675 #if H_3D_VSP 676 #if !ETRIKHU_CLEANUP_H0083 644 677 , Int* vspFlag 678 #endif 645 679 , InheritedVSPDisInfo* inheritedVSPDisInfo 646 680 #endif 647 681 #if H_3D_SPIVMP 682 #if ETRIKHU_CLEANUP_H0083 683 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP 684 #else 648 685 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 686 #endif 649 687 #endif 650 688 , Int& numValidMergeCand, Int mrgCandIdx = -1 -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibCommon/TComMotionInfo.h
r884 r911 198 198 //! \} 199 199 200 #if ETRIKHU_CLEANUP_H0083 201 class TComMotionCand 202 { 203 public: 204 Bool m_bAvailable; 205 TComMvField m_cMvField[2]; 206 UChar m_uDir; 207 #if H_3D_VSP 208 Int m_iVspFlag; 209 #endif 210 Bool m_bSPIVMPFlag; 211 212 public: 213 TComMotionCand() 214 { 215 m_bAvailable = false; 216 m_uDir = 0; 217 #if H_3D_VSP 218 m_iVspFlag = 0; 219 #endif 220 m_bSPIVMPFlag = false; 221 } 222 223 ~TComMotionCand() 224 { 225 226 } 227 228 Void init() 229 { 230 TComMv cZeroMv; 231 232 m_bAvailable = false; 233 m_uDir = 0; 234 #if H_3D_VSP 235 m_iVspFlag = 0; 236 #endif 237 m_bSPIVMPFlag = false; 238 m_cMvField[0].setMvField(cZeroMv, NOT_VALID); 239 m_cMvField[1].setMvField(cZeroMv, NOT_VALID); 240 } 241 242 Void setCand(TComMvField* pcMvFieldNeighbours, UChar uhInterDirNeighbours 243 #if H_3D_VSP 244 , Int vspFlag 245 #endif 246 , Bool bSPIVMPFlag 247 ) 248 { 249 m_bAvailable = true; 250 m_cMvField[0] = pcMvFieldNeighbours[0]; 251 m_cMvField[1] = pcMvFieldNeighbours[1]; 252 m_uDir = uhInterDirNeighbours; 253 #if H_3D_VSP 254 m_iVspFlag = vspFlag; 255 #endif 256 m_bSPIVMPFlag = bSPIVMPFlag; 257 } 258 259 260 Void getCand(Int iCount, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours 261 #if H_3D_VSP 262 , Int* vspFlag 263 #endif 264 , Bool* pbSPIVMPFlag 265 ) 266 { 267 pcMvFieldNeighbours[iCount<<1] = m_cMvField[0]; 268 pcMvFieldNeighbours[(iCount<<1) + 1] = m_cMvField[1]; 269 puhInterDirNeighbours[iCount] = m_uDir; 270 #if H_3D_VSP 271 vspFlag[iCount] = m_iVspFlag; 272 #endif 273 pbSPIVMPFlag[iCount] = m_bSPIVMPFlag; 274 } 275 }; 276 #endif 277 278 200 279 #endif // __TCOMMOTIONINFO__ -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibCommon/TypeDef.h
r897 r911 39 39 #define _TYPEDEF__ 40 40 41 41 42 //! \ingroup TLibCommon 42 43 //! \{ … … 223 224 // SCU_HS_FAST_DEPTH_INTRA_E0238_HHIFIX 224 225 #endif 226 227 #define ETRIKHU_BUGFIX_H0083 1 // bug-fix for DV candidate pruning 228 #define ETRIKHU_CLEANUP_H0083 1 // cleaned-up source code for constructing merging candidate list 225 229 226 230 // Rate Control … … 799 803 }; 800 804 805 /// merging candidates 806 #if ETRIKHU_CLEANUP_H0083 807 enum DefaultMergCandOrder 808 { 809 MRG_T = 0, ///< MPI 810 MRG_D, ///< DDD 811 MRG_IVMC, ///< Temporal inter-view 812 MRG_A1, ///< Left 813 MRG_B1, ///< Above 814 MRG_B0, ///< Above right 815 MRG_IVDC, ///< Disparity inter-view 816 MRG_VSP, ///< VSP 817 MRG_A0, ///< Left bottom 818 MRG_B2, ///< Above left 819 MRG_IVSHIFT, ///< Shifted IVMC of Shifted IVDC. (These are mutually exclusive) 820 MRG_COL ///< Temporal co-located 821 }; 822 #endif 823 801 824 /// coefficient scanning type used in ACS 802 825 enum COEFF_SCAN_TYPE -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibDecoder/TDecCu.cpp
r884 r911 431 431 m_ppcCU[uiDepth]->initAvailableFlags(); 432 432 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 433 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 433 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 434 #if !ETRIKHU_CLEANUP_H0083 435 ,vspFlag 436 #endif 437 , inheritedVSPDisInfo 434 438 #if H_3D_SPIVMP 435 , bSPIVMPFlag,pcMvFieldSP, puhInterDirSP439 , pcMvFieldSP, puhInterDirSP 436 440 #endif 437 441 , numValidMergeCand, uiMergeIndex ); 442 443 #if ETRIKHU_CLEANUP_H0083 444 m_ppcCU[uiDepth]->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 445 #if H_3D_SPIVMP 446 , bSPIVMPFlag 447 #endif 448 , numValidMergeCand ); 449 #endif 438 450 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 439 451 #else -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibDecoder/TDecEntropy.cpp
r884 r911 292 292 pcSubCU->initAvailableFlags(); 293 293 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 294 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 294 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 295 #if !ETRIKHU_CLEANUP_H0083 296 ,vspFlag 297 #endif 298 , inheritedVSPDisInfo 295 299 #if H_3D_SPIVMP 296 , bSPIVMPFlag,pcMvFieldSP, puhInterDirSP300 , pcMvFieldSP, puhInterDirSP 297 301 #endif 298 302 , numValidMergeCand ); 303 304 #if ETRIKHU_CLEANUP_H0083 305 pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 306 #if H_3D_SPIVMP 307 , bSPIVMPFlag 308 #endif 309 , numValidMergeCand ); 310 #endif 299 311 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 300 312 … … 329 341 pcSubCU->initAvailableFlags(); 330 342 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 331 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 343 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours 344 #if !ETRIKHU_CLEANUP_H0083 345 , vspFlag 346 #endif 347 , inheritedVSPDisInfo 332 348 #if H_3D_SPIVMP 333 , bSPIVMPFlag,pcMvFieldSP, puhInterDirSP349 , pcMvFieldSP, puhInterDirSP 334 350 #endif 335 351 ,numValidMergeCand, uiMergeIndex ); 352 353 #if ETRIKHU_CLEANUP_H0083 354 pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 355 #if H_3D_SPIVMP 356 , bSPIVMPFlag 357 #endif 358 ,numValidMergeCand ); 359 #endif 336 360 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 337 361 if(vspFlag[uiMergeIndex]) -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibEncoder/TEncCu.cpp
r884 r911 1814 1814 rpcTempCU->initAvailableFlags(); 1815 1815 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 1816 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag,inheritedVSPDisInfo 1816 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 1817 #if !ETRIKHU_CLEANUP_H0083 1818 , vspFlag 1819 #endif 1820 , inheritedVSPDisInfo 1817 1821 #if H_3D_SPIVMP 1818 , bSPIVMPFlag,pcMvFieldSP, puhInterDirSP1822 , pcMvFieldSP, puhInterDirSP 1819 1823 #endif 1820 1824 , numValidMergeCand 1821 1825 ); 1826 1827 #if ETRIKHU_CLEANUP_H0083 1828 rpcTempCU->buildMCL( cMvFieldNeighbours,uhInterDirNeighbours, vspFlag 1829 #if H_3D_SPIVMP 1830 , bSPIVMPFlag 1831 #endif 1832 , numValidMergeCand 1833 ); 1834 #endif 1835 1822 1836 #else 1823 1837 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand ); -
branches/HTM-10.2-dev1-ETRI/source/Lib/TLibEncoder/TEncSearch.cpp
r884 r911 3697 3697 pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 3698 3698 #if H_3D_VSP 3699 , vspFlag 3700 , inheritedVSPDisInfo 3699 #if !ETRIKHU_CLEANUP_H0083 3700 , vspFlag 3701 #endif 3702 , inheritedVSPDisInfo 3701 3703 #endif 3702 3704 #if H_3D_SPIVMP 3703 , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP3704 #endif 3705 3705 , pcMvFieldSP, puhInterDirSP 3706 #endif 3707 , numValidMergeCand 3706 3708 ); 3709 3710 #if ETRIKHU_CLEANUP_H0083 3711 pcCU->buildMCL( cMvFieldNeighbours,uhInterDirNeighbours 3712 #if H_3D_VSP 3713 , vspFlag 3714 #endif 3715 #if H_3D_SPIVMP 3716 , pbSPIVMPFlag 3717 #endif 3718 , numValidMergeCand 3719 ); 3720 #endif 3707 3721 #else 3708 3722 pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand ); … … 3718 3732 pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours 3719 3733 #if H_3D_VSP 3720 , vspFlag 3721 , inheritedVSPDisInfo 3734 #if !ETRIKHU_CLEANUP_H0083 3735 , vspFlag 3736 #endif 3737 , inheritedVSPDisInfo 3722 3738 #endif 3723 3739 #if H_3D_SPIVMP 3724 , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP3725 #endif 3726 3740 , pcMvFieldSP, puhInterDirSP 3741 #endif 3742 , numValidMergeCand 3727 3743 ); 3744 3745 #if ETRIKHU_CLEANUP_H0083 3746 pcCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours 3747 #if H_3D_VSP 3748 , vspFlag 3749 #endif 3750 #if H_3D_SPIVMP 3751 , pbSPIVMPFlag 3752 #endif 3753 , numValidMergeCand 3754 ); 3755 #endif 3728 3756 #else 3729 3757 pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand
Note: See TracChangeset for help on using the changeset viewer.