Changeset 950 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComDataCU.cpp


Ignore:
Timestamp:
25 Apr 2014, 12:38:00 (10 years ago)
Author:
tech
Message:

Merged 10.2-dev0@949.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r884 r950  
    610610    memset( m_apSegmentDCOffset[1]  + firstElement,     0,                numElements * sizeof( *m_apSegmentDCOffset[1] ) );
    611611#endif
     612#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     613    m_apDmmPredictor[0] = 0;
     614    m_apDmmPredictor[1] = 0;
     615#endif
    612616#endif
    613617#if H_3D_DBBP
     
    784788      m_apSegmentDCOffset[1][ui] = 0;
    785789#endif
     790#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     791      m_apDmmPredictor[0] = 0;
     792      m_apDmmPredictor[1] = 0;
     793#endif
    786794#endif
    787795#if H_3D_DBBP
     
    898906  memset( m_apSegmentDCOffset[0], 0, sizeof(Pel) * m_uiNumPartition   );
    899907  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;
    900912#endif
    901913#endif
     
    23522364   
    23532365    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
    23542372   
    23552373    Int depthPosX = Clip3(0,   iPictureWidth - iWidth,  iBlkX + ((cDv.getHor()+2)>>2));
     
    23832401UInt TComDataCU::getCtxAngleFlag( UInt uiAbsPartIdx )
    23842402{
     2403#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
     2404  return 0;
     2405#else
    23852406  TComDataCU* pcTempCU;
    23862407  UInt        uiTempPartIdx;
     
    23962417
    23972418  return uiCtx;
     2419#endif
    23982420}
    23992421#endif
     
    32583280 *   false: otherwise
    32593281 */
     3282#if ETRIKHU_CLEANUP_H0083
     3283inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount)
     3284#else
    32603285inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount,
    32613286  Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* vspFlag, Int& iCount3DV, InheritedVSPDisInfo*  inheritedVSPDisInfo  )
     3287#endif
    32623288{
    32633289  if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getVPS()->getViewSynthesisPredFlag( m_pcSlice->getLayerIdInVps() ) || m_pcSlice->getIsDepth() || pDInfo->m_aVIdxCan == -1)
     
    32753301  }
    32763302
     3303#if ETRIKHU_CLEANUP_H0083
     3304  TComMvField mvVSP[2];
     3305  UChar dirVSP;
     3306#else
    32773307  rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV);
     3308#endif
    32783309
    32793310  Bool  refViewAvailFlag = false;
     
    32903321        refViewAvailFlag      = true;
    32913322        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
    32923329        pcMvFieldNeighbours[(iCount<<1)+iRefListIdX].setMvField( pDInfo->m_acNBDV, i );
    32933330#if H_3D_NBDV
    32943331        pcMvFieldNeighbours[(iCount<<1)+iRefListIdX].getMv().setIDVFlag (false);
    32953332#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
    33003342  // Set values to be returned
    33013343  abCandIsInter        [iCount] = true;
    33023344  puhInterDirNeighbours[iCount] = (predFlag[0] | (predFlag[1] << 1));
    33033345  vspFlag              [iCount] = 1;
     3346#endif
    33043347
    33053348  if ( mrgCandIdx == iCount )
     
    33163359
    33173360#if H_3D_IV_MERGE
     3361#if ETRIKHU_CLEANUP_H0083
     3362inline Bool TComDataCU::xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx )
     3363#else
    33183364inline Bool TComDataCU::xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* ivCandDir, TComMv* ivCandMv,
    33193365  Int* ivCandRefIdx, Int iPosIvDC, Int* vspFlag, Int &iCount3DV, InheritedVSPDisInfo*  inheritedVSPDisInfo  )
     3366#endif
    33203367{
    33213368  for(Int iLoop = 0; iLoop < 2; iLoop ++ )
     
    33253372    {
    33263373      Int iFirDispCand = -1;
     3374#if ETRIKHU_CLEANUP_H0083
     3375      TComMvField mvIvDcShift[2];
     3376      UChar dirIvDcShift;
     3377
     3378      if (xGetPosFirstAvailDmvCand(MRG_IVSHIFT, iFirDispCand))
     3379#else
    33273380      if (xGetPosFirstAvailDmvCand(iCount, pcMvFieldNeighbours, ivCandDir, iPosIvDC, vspFlag, iFirDispCand))
     3381#endif
    33283382      {
    33293383        TComMv cMv;
     3384#if ETRIKHU_CLEANUP_H0083
     3385        cMv = m_mergCands[iFirDispCand].m_cMvField[0].getMv();
     3386#else
    33303387        cMv = pcMvFieldNeighbours[(iFirDispCand<<1)].getMv();
     3388#endif
    33313389        cMv.setHor(cMv.getHor()+4);
    33323390        if(m_pcSlice->getVPS()->getViewSynthesisPredFlag(m_pcSlice->getLayerIdInVps()))
     
    33343392          cMv.setVer(0);
    33353393        }
     3394#if !(NTT_BUG_FIX_TK54)
    33363395        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
    33383404        rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV);
    33393405
     
    33423408        pcMvFieldNeighbours  [ iCount << 1      ].setMvField(cMv, pcMvFieldNeighbours[( iFirDispCand << 1)].getRefIdx() );
    33433409        pcMvFieldNeighbours  [(iCount << 1) + 1 ].setMvField(pcMvFieldNeighbours[(iFirDispCand << 1) + 1].getMv(), pcMvFieldNeighbours[( iFirDispCand << 1) + 1].getRefIdx() );
     3410#endif
    33443411       
    33453412        if( mrgCandIdx == iCount )
     
    33723439      if( !iLoop && ivCandDir[0] > 0)
    33733440      {
     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
    33743444        if(tmpDir == puhInterDirNeighbours[0] && pcMvFieldNeighbours[0]==tmpMV[0] && pcMvFieldNeighbours[1]==tmpMV[1])
     3445#endif
    33753446        {
    33763447            bRemove                         = true;
     
    33793450      if(!bRemove)
    33803451      {
     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
    33813462        rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV);
    33823463
     
    33983479        }
    33993480#endif
     3481#endif
    34003482        if( mrgCandIdx == iCount )
    34013483        {
     
    34103492}
    34113493
     3494#if ETRIKHU_CLEANUP_H0083
     3495inline 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
    34123512inline Bool TComDataCU::xGetPosFirstAvailDmvCand( Int iCount, TComMvField* pcMvFieldNeighbours, Int* ivCandDir, Int posIvDC, Int* vspFlag, Int& posFirstAvailDmvCand )
    34133513{
     
    34273527 return false; 
    34283528}
     3529#endif
    34293530                                     
    34303531#endif
    34313532
    34323533#if H_3D
     3534#if ETRIKHU_CLEANUP_H0083
     3535
     3536Void 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
    34333609Void TComDataCU::rightShiftMergeCandList( TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* iVSPIndexTrue, InheritedVSPDisInfo*  inheritedVSPDisInfo, UInt start, UInt num, Int &iCount3DV)
    34343610{
     
    34513627  return;
    34523628}
     3629#endif
    34533630
    34543631/** Constructs a list of merging candidates
     
    38244001#endif
    38254002#if H_3D_VSP
     4003#if !ETRIKHU_CLEANUP_H0083
    38264004      , Int* vspFlag
     4005#endif
    38274006      , InheritedVSPDisInfo*  inheritedVSPDisInfo
    38284007#endif
    38294008#if H_3D_SPIVMP
     4009#if ETRIKHU_CLEANUP_H0083
     4010      , TComMvField* pcMvFieldSP, UChar* puhInterDirSP
     4011#else
    38304012      , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP
     4013#endif
    38314014#endif
    38324015      , Int& numValidMergeCand, Int mrgCandIdx
     
    38394022  ////////////////////////////
    38404023  TComMv cZeroMv;
     4024#if !ETRIKHU_CLEANUP_H0083
    38414025  Bool abCandIsInter[ MRG_MAX_NUM_CANDS_MEM ];
     4026#endif
    38424027#else
    38434028  Bool abCandIsInter[ MRG_MAX_NUM_CANDS ];
     
    39054090#if H_3D_DBBP
    39064091  Bool bDBBPFlag = getDBBPFlag(uiAbsPartIdx);
     4092#if MTK_DIS_SPBIP8X4_H0205
     4093  assert(bDBBPFlag == getDBBPFlag(0)); 
     4094#endif
    39074095#endif
    39084096
    39094097#if H_3D
     4098#if !ETRIKHU_CLEANUP_H0083
    39104099  Int  iPosLeftAbove[2] = {-1, -1};
    39114100
     
    39144103  Int numA1B1B0 = 0;
    39154104  Int numA0B2 = 0;
    3916 
     4105#endif
    39174106#if H_3D_NBDV
    39184107  for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++) 
     
    39234112#endif
    39244113
     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
    39254269  //left
    39264270  UInt uiLeftPartIdx = 0;
     
    39384282      && !bARPFlag
    39394283#endif
     4284#if RWTH_DBBP_NO_SPU_H0057
     4285      && !bDBBPFlag
     4286#endif
    39404287      )
    39414288    {
     
    39614308      && !bARPFlag
    39624309#endif
     4310#if RWTH_DBBP_NO_SPU_H0057
     4311      && !bDBBPFlag
     4312#endif
    39634313      )
    39644314    {
     
    39844334      && !bARPFlag
    39854335#endif
     4336#if RWTH_DBBP_NO_SPU_H0057
     4337      && !bDBBPFlag
     4338#endif
    39864339      )
    39874340    {
     
    40044357#if H_3D_ARP
    40054358      && !bARPFlag
     4359#endif
     4360#if RWTH_DBBP_NO_SPU_H0057
     4361      && !bDBBPFlag
    40064362#endif
    40074363      )
     
    40284384      && !bARPFlag
    40294385#endif
     4386#if RWTH_DBBP_NO_SPU_H0057
     4387      && !bDBBPFlag
     4388#endif
    40304389      )
    40314390    {
     
    40384397
    40394398  iCountHEVC = numValidMergeCand;
     4399#endif
    40404400#endif
    40414401
     
    40474407  /////////////////////////////////////////////
    40484408
     4409#if SHARP_SIMPLE_MERGE_H0062
     4410  bMPIFlag &= (nPSW + nPSH > 12);
     4411#endif
    40494412  if( bMPIFlag)
    40504413  {
     
    40524415    tmpMV[1].setMvField( cZeroMv, NOT_VALID );
    40534416    tmpDir        =  0;
     4417
     4418#if ETRIKHU_CLEANUP_H0083
     4419    Bool bSPIVMPFlag = false;
     4420#endif
    40544421
    40554422    TComPic * pcTexPic = m_pcSlice->getTexturePic();
     
    40904457      Int         iTexPosX, iTexPosY;
    40914458      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
    40924522      for (Int i=iCurrPosY; i < iCurrPosY + iHeight; i += iPUHeight)
    40934523      {
     
    41104540              {
    41114541                TComMv cMv = cTexMvField.getMv() + cMvRounding;
    4112                 cMv >>=2;
     4542                cMv >>=2;         
     4543#if !(NTT_BUG_FIX_TK54)
    41134544                this->clipMv( cMv );
     4545#endif
    41144546                pcMvFieldSP[2*iPartition + uiCurrRefListId].setMvField(cMv, iValidDepRef);
    41154547              }
     
    41264558            }
    41274559          }
     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
    41284571          else
    41294572          {
    41304573            if (iInterDirSaved ==0)
    41314574            {
     4575#if ETRIKHU_CLEANUP_H0083
     4576                  bSPIVMPFlag = true;
     4577#else
    41324578              pbSPIVMPFlag[iCount] = true;
     4579#endif
    41334580              tmpDir = puhInterDirSP[iPartition];
    41344581              tmpMV[0] = pcMvFieldSP[2*iPartition];
     
    41494596            cMvFieldSaved[1] = pcMvFieldSP[2*iPartition + 1];
    41504597          }
     4598#endif
    41514599          iPartition ++;
    41524600        }
    41534601      }
     4602#if MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133
     4603      }
     4604#endif
    41544605#if H_3D_FCO
    41554606    }
     
    41584609    {
    41594610      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
    41604627      Bool bRemoveSpa = false; //pruning
    41614628
     
    42174684
    42184685      puhInterDirNeighbours[iCount] = tmpDir;
    4219 
     4686#endif
    42204687      if ( mrgCandIdx == iCount )
    42214688      {
     
    42614728            cMVField.getMv() += cAdd;
    42624729            cMVField.getMv() >>= 2;
     4730#if !(NTT_BUG_FIX_TK54)
    42634731            clipMv( cMVField.getMv() );
     4732#endif
    42644733            tmpMV[ 0 ].setMvField( cMVField.getMv(), iValidDepRef );
    42654734            tmpDir = 1;
     
    42844753            cMVField.getMv() += cAdd;
    42854754            cMVField.getMv() >>= 2;
     4755#if !(NTT_BUG_FIX_TK54)
    42864756            clipMv( cMVField.getMv() );
     4757#endif
    42874758            tmpMV[ 1 ].setMvField( cMVField.getMv(), iValidDepRef );
    42884759            tmpDir = 2;
     
    42924763      if( tmpDir != 0 )
    42934764      {
     4765#if !ETRIKHU_CLEANUP_H0083
    42944766        rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, 5-iCount, iCount3DV);
     4767#endif
    42954768        m_ucDDTmpDepth = m_pcSlice->getDepthFromDV( iDV,  iViewIdx );
    42964769        m_iUseDDDCandIdx = iCount;
    42974770
     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
    42984779        if( tmpDir == 1 )
    42994780        {
     
    43244805          iPosLeftAbove[ 1 ] = iCount + iLeftAboveAvail;
    43254806        }
     4807#endif
    43264808      }
    43274809    }
     
    43324814  /////////////////////////////////////////////////////////////////
    43334815
     4816#if !ETRIKHU_CLEANUP_H0083
    43344817  Int  posIvDC          = -1;
     4818#endif
    43354819
    43364820  // { IvMCL0, IvMCL1, IvDCL0, IvDCL1, IvMCL0Shift, IvMCL1Shift, IvDCL0Shift, IvDCL1Shift }; 
     
    43444828  Bool ivMvPredFlag   = getSlice()->getVPS()->getIvMvPredFlag( getSlice()->getLayerIdInVps() );
    43454829
     4830#if SHARP_SIMPLE_MERGE_H0062
     4831  ivMvPredFlag &= (nPSW + nPSH > 12);
     4832#endif
    43464833  if ( ivMvPredFlag && cDisInfo.m_aVIdxCan!=-1)
    43474834  {
     4835#if SEC_ADAPT_DISABLE_IVMP
     4836    getInterViewMergeCands(uiPUIdx, ivCandRefIdx, ivCandMv, &cDisInfo, ivCandDir , bIsDepth, pcMvFieldSP, puhInterDirSP, bICFlag );
     4837#else
    43484838    getInterViewMergeCands(uiPUIdx, ivCandRefIdx, ivCandMv, &cDisInfo, ivCandDir , bIsDepth, pcMvFieldSP, puhInterDirSP );
     4839#endif
    43494840  } 
    43504841
     
    43724863
    43734864    Bool bRemoveSpa = false; //pruning
     4865#if !ETRIKHU_CLEANUP_H0083
    43744866    Bool bIvMC = false;
    43754867    Int iCnloop=0;
     4868#endif
    43764869
    43774870    if (!bIsDepth)
     
    43794872      for(Int i = 0; i < 2; i ++)
    43804873      {
     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
    43814885        iCnloop = iPosLeftAbove[i];
    43824886        if ( iCnloop == -1 )
     
    43894893          break;
    43904894        }     
     4895#endif
    43914896      }
    43924897    }
    43934898    if (bIsDepth)
    43944899    {
     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
    43954906      iCnloop = iCount-1;
    43964907      for(; iCnloop >= 0; iCnloop --)
     
    44084919        }
    44094920      }
     4921#endif
    44104922    }
    44114923
    44124924    if (!bRemoveSpa)
    44134925    {
     4926#if !ETRIKHU_CLEANUP_H0083
    44144927      bIvMC = true;
    44154928      rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV);
     
    44644977    if (bIvMC)
    44654978    {
     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
    44664994      if(!m_pcSlice->getIsDepth() && getPartitionSize(0) == SIZE_2Nx2N )
    44674995      {
     
    44714999      pbSPIVMPFlag[iCount] &= !bDBBPFlag;
    44725000#endif
     5001#endif
     5002#if ETRIKHU_CLEANUP_H0083
     5003      m_mergCands[MRG_IVMC].setCand( tmpMV, ivCandDir[0], false, SPIVMPFlag);
     5004#else
    44735005      if( ( ivCandDir[0] & 1 ) == 1 )
    44745006      {
     
    44815013
    44825014      puhInterDirNeighbours[ iCount ] = ivCandDir[0];
     5015#endif
    44835016
    44845017      if ( mrgCandIdx == iCount )
     
    44985031
    44995032#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
    45005036  iCount += numA1B1B0;
     5037#endif
    45015038#else
    45025039  //left
     
    46275164    for(Int i = 0; i < 2; i ++)
    46285165    {
     5166#if ETRIKHU_CLEANUP_H0083
     5167      if ( !m_mergCands[MRG_A1+i].m_bAvailable )
     5168#else
    46295169      Int iCnloop = iPosLeftAbove[i];
    46305170      if ( iCnloop == -1 )
     5171#endif
    46315172      {
    46325173        continue;
    46335174      }
     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
    46345186      if(puhInterDirNeighbours[iCount] == puhInterDirNeighbours[iCnloop] && pcMvFieldNeighbours[iCnloop<<1]==pcMvFieldNeighbours[(iCount<<1)] && pcMvFieldNeighbours[(iCnloop<<1)+1]==pcMvFieldNeighbours[(iCount<<1)+1])
     5187#endif
    46355188      {
    46365189        bRemoveSpa                      = true;
     
    46405193    if(!bRemoveSpa)
    46415194    {
     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
    46425202      rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV);
    46435203      puhInterDirNeighbours[ iCount ] = ivCandDir[1];
     
    46555215#endif
    46565216      posIvDC  = iCount;
     5217#endif
    46575218      if ( mrgCandIdx == iCount )
    46585219        return;
     
    46825243      !bARPFlag &&
    46835244#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
    46845254      xAddVspCand( mrgCandIdx, &cDisInfo, iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, iCount3DV, inheritedVSPDisInfo ) )
     5255#endif
    46855256  {
    46865257    return;
     
    46985269
    46995270#if H_3D
     5271#if ETRIKHU_CLEANUP_H0083
     5272  iCount += m_mergCands[MRG_A0].m_bAvailable + m_mergCands[MRG_B2].m_bAvailable;
     5273#else
    47005274  iCount += numA0B2;
     5275#endif
    47015276#else
    47025277  //left bottom
     
    47725347  if(  ivMvPredFlag && iCount < getSlice()->getMaxNumMergeCand() && !getSlice()->getIsDepth() )
    47735348  {
     5349#if ETRIKHU_CLEANUP_H0083
     5350    if(xAddIvMRGCand( mrgCandIdx,  iCount, ivCandDir, ivCandMv, ivCandRefIdx ) )
     5351#else
    47745352    if(xAddIvMRGCand( mrgCandIdx,  iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, ivCandDir, ivCandMv, ivCandRefIdx, posIvDC, vspFlag, iCount3DV, inheritedVSPDisInfo ) )
     5353#endif
    47755354    {
    47765355      return;
     
    47855364
    47865365#if H_3D
     5366#if !ETRIKHU_CLEANUP_H0083
    47875367  if (iCountHEVC + iCount3DV > getSlice()->getMaxNumMergeCand())
    47885368  {
     
    47945374  }
    47955375  numValidMergeCand = iCount;
     5376#endif
    47965377#else
    47975378  if ( getSlice()->getEnableTMVPFlag())
     
    62276808      if( bCheck )
    62286809      {
     6810#if !(NTT_BUG_FIX_TK54)
    62296811        clipMv(cColMv);
     6812#endif
    62306813        pDInfo->m_acNBDV = cColMv;
    62316814        pDInfo->m_aVIdxCan  = iTargetViewIdx;
     
    62966879        {
    62976880          TComMv cDispVec = cIDVInfo.m_acMvCand[iList][ curPos ];
     6881#if !(NTT_BUG_FIX_TK54)
    62986882          clipMv( cDispVec );
     6883#endif
    62996884          pDInfo->m_acNBDV = cDispVec;
    63006885          pDInfo->m_aVIdxCan = cIDVInfo.m_aVIdxCan[iList][ curPos ];
     
    64267011    Pel iDisp = getMcpFromDM( pcBaseViewDepthPicYuv, cMvPred, iBlkX, iBlkY, iWidth, iHeight, aiShiftLUT );
    64277012    cMvPred->setHor( iDisp );
     7013#if !(NTT_BUG_FIX_TK54)
    64287014    clipMv(*cMvPred);
     7015#endif
    64297016  }
    64307017}
     
    64527039        if (refViewIdx != m_pcSlice->getViewIndex())
    64537040        {
     7041#if !(NTT_BUG_FIX_TK54)
    64547042          clipMv(cMvPred);
     7043#endif
    64557044          pNbDvInfo->m_acNBDV = cMvPred;
    64567045          pNbDvInfo->m_aVIdxCan = refViewIdx;
     
    66357224
    66367225  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
    66377232
    66387233  Int         iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (cDv.getHor() + 2 ) >> 2 ) );
     
    67437338, TComMvField* pcMvFieldSP, UChar* puhInterDirSP
    67447339#endif
     7340#if SEC_ADAPT_DISABLE_IVMP
     7341, Bool bICFlag
     7342#endif
    67457343)
    67467344{
     
    67717369
    67727370  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
    67737377
    67747378  Bool abPdmAvailable[8] =  {false, false, false, false, false, false, false, false};
     
    67787382    pacPdmMv[i].setIDVFlag   (false);
    67797383  }
     7384#endif
     7385
     7386#if SEC_ADAPT_DISABLE_IVMP
     7387  if(!bICFlag)
     7388  {
    67807389#endif
    67817390
     
    67867395  if(!m_pcSlice->getIsDepth())
    67877396  {
     7397#if MTK_DIS_SPBIP8X4_H0205
     7398    if (!getDBBPFlag(0))
     7399#else
    67887400    if( getPartitionSize(0) == SIZE_2Nx2N )
     7401#endif
    67897402    {
    67907403      Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight;
     
    68597472#endif
    68607473#endif
     7474#if !(NTT_BUG_FIX_TK54)
    68617475                    clipMv( cMv );
     7476#endif
    68627477                    paiPdmRefIdx  [ uiCurrRefListId ] = iPdmRefIdx;
    68637478                    pacPdmMv      [ uiCurrRefListId ] = cMv;
     
    69177532                            cMv.setIDVVId    (iViewIndex);
    69187533                          }
    6919 
     7534                         
     7535#if !(NTT_BUG_FIX_TK54)
    69207536                          clipMv( cMv );
     7537#endif
    69217538                          bLoop_stop = true;
    69227539
     
    69397556
    69407557            }
     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
    69417568            iPartition ++;
    69427569          }
     
    69607587    iCurrPosY  += ( iHeight >> 1 );
    69617588  }
     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
    69627592  for(Int iLoopCan = ( (m_pcSlice->getIsDepth() || getPartitionSize(uiPartAddr) != SIZE_2Nx2N) ? 0 : 1 ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++)
     7593#endif
    69637594#else
    69647595  for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
     
    70187649#endif
    70197650#endif
     7651#if !(NTT_BUG_FIX_TK54)
    70207652                  clipMv( cMv );
     7653#endif
    70217654                  paiPdmRefIdx  [ (uiCurrRefListId + (iLoopCan<<2)) ] = iPdmRefIdx;
    70227655                  pacPdmMv      [ (uiCurrRefListId + (iLoopCan<<2)) ] = cMv;
     
    70327665  }
    70337666#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
    70347670  for(Int iLoopCan = ( 1 - m_pcSlice->getIsDepth() ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++)
     7671#endif
    70357672#else
    70367673  for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
     
    70407677  }
    70417678
     7679#if SEC_ADAPT_DISABLE_IVMP
     7680  }
     7681#endif
    70427682
    70437683  ////////////////////////////////
     
    70717711#endif
    70727712            cMv.setVer( 0 );
     7713#if !(NTT_BUG_FIX_TK54)
    70737714            clipMv( cMv );
     7715#endif
    70747716            pacPdmMv      [iRefListId + 2 + (iLoopCan<<2)] = cMv;
    70757717          }
Note: See TracChangeset for help on using the changeset viewer.