Changeset 876 in 3DVCSoftware


Ignore:
Timestamp:
27 Mar 2014, 18:52:26 (11 years ago)
Author:
tech
Message:

Cleanups part 1.

Location:
branches/HTM-10.1-dev0/source
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-10.1-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r872 r876  
    521521#if H_3D_SPIVMP
    522522  ("SubPULog2Size", m_iSubPULog2Size, (Int)3, "Sub-PU size index: 2^n")
    523 #endif
    524 #if QC_SPIVMP_MPI_G0119
    525523  ("SubPUMPILog2Size", m_iSubPUMPILog2Size, (Int)3, "Sub-PU MPI size index: 2^n")
    526524#endif
     
    15521550#endif
    15531551#if H_3D_SPIVMP
    1554 #if SEC_SPIVMP_MCP_SIZE_G0077
    15551552  xConfirmPara( m_iSubPULog2Size < 3,                                        "SubPULog2Size must be 3 or greater.");
    1556 #else
    1557   xConfirmPara( m_iSubPULog2Size < 2,                                        "SubPULog2Size must be 2 or greater.");
    1558 #endif
    15591553  xConfirmPara( m_iSubPULog2Size > 6,                                        "SubPULog2Size must be 6 or smaller.");
    15601554  xConfirmPara( (1<<m_iSubPULog2Size) > m_uiMaxCUWidth,                      "SubPULog2Size must be log2(maxCUSize) or smaller.");
    1561 #endif
    1562 #if QC_SPIVMP_MPI_G0119
     1555 
    15631556  xConfirmPara( m_iSubPUMPILog2Size < 3,                                        "SubPUMPILog2Size must be 3 or greater.");
    15641557  xConfirmPara( m_iSubPUMPILog2Size > 6,                                        "SubPUMPILog2Size must be 6 or smaller.");
     
    24992492#if H_3D_SPIVMP
    25002493  printf(" SubPULog2Size:%d  " , m_iSubPULog2Size  );
    2501 #endif
    2502 #endif
    2503 #if QC_SPIVMP_MPI_G0119
    25042494  printf(" SubPUMPILog2Size:%d  " , m_iSubPUMPILog2Size  );
     2495#endif
    25052496#endif
    25062497#if H_3D_ARP
  • branches/HTM-10.1-dev0/source/App/TAppEncoder/TAppEncCfg.h

    r872 r876  
    141141#if H_3D_SPIVMP
    142142  Int                    m_iSubPULog2Size;                   
    143 #endif
    144 #endif
    145 #if QC_SPIVMP_MPI_G0119
    146143  Int                    m_iSubPUMPILog2Size;                   
     144#endif
    147145#endif
    148146#if H_3D_ARP                                                  /// < flag and number of weighting factors in ARP
  • branches/HTM-10.1-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r872 r876  
    187187#if H_3D_SPIVMP
    188188    m_cTEncTop.setSubPULog2Size                 (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size   );
    189 #endif
    190 #if QC_SPIVMP_MPI_G0119
    191189    m_cTEncTop.setSubPUMPILog2Size              ( !isDepth ? 0 : m_iSubPUMPILog2Size   );
    192190#endif
     
    19701968#endif
    19711969  } 
    1972 #if QC_SPIVMP_MPI_G0119
     1970#if H_3D_SPIVMP
    19731971  vps.setSubPUMPILog2Size( m_iSubPUMPILog2Size );
    19741972#endif
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/ContextTables.h

    r872 r876  
    9494
    9595#if H_3D_ARP
    96 #if MTK_ARP_FLAG_CABAC_SIMP_G0061
    9796#define NUM_ARPW_CTX                  3       ///< number of context models for weighting factor index used by advanced residual prediction
    98 #else
    99 #define NUM_ARPW_CTX                  4       ///< number of context models for weighting factor index used by advanced residual prediction
    100 #endif
    10197#endif
    10298
    10399#if H_3D_IC
    104 #if MTK_IC_FLAG_CABAC_SIMP_G0061
    105100#define NUM_IC_FLAG_CTX               1       ///< number of context models for illumination compensation flag
    106 #else
    107 #define NUM_IC_FLAG_CTX               3       ///< number of context models for illumination compensation flag
    108 #endif
    109101#endif
    110102
     
    366358
    367359#if H_3D_ARP
    368 #if MTK_ARP_FLAG_CABAC_SIMP_G0061
    369360static const UChar
    370361INIT_ARPW[3][NUM_ARPW_CTX] =
     
    374365    { 162, 153, 162 },
    375366};
    376 #else
    377 static const UChar
    378 INIT_ARPW[3][NUM_ARPW_CTX] =
    379 {
    380     { 162, 153, 154, 162 },
    381     { 162, 153, 154, 162 },
    382     { 162, 153, 154, 162 },
    383 };
    384 #endif
     367
    385368#endif
    386369#if H_3D_IC
    387 #if MTK_IC_FLAG_CABAC_SIMP_G0061
    388370static const UChar
    389371INIT_IC_FLAG[3][NUM_IC_FLAG_CTX] = 
     
    393375    { 154 },
    394376};
    395 #else
    396 static const UChar
    397 INIT_IC_FLAG[3][NUM_IC_FLAG_CTX] = 
    398 {
    399     { 154,  154,  154, },
    400     { 154,  154,  154, },
    401     { 154,  154,  154, },
    402 };
    403 #endif
     377
    404378#endif
    405379#if H_3D_DIM
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/TComDataCU.cpp

    r872 r876  
    24632463  pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
    24642464  uiCtx    = ( pcTempCU ) ? ((pcTempCU->getARPW( uiTempPartIdx )==0)?0:1) : 0;
    2465  
    2466 #if !MTK_ARP_FLAG_CABAC_SIMP_G0061       
    2467   pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
    2468   uiCtx   += ( pcTempCU ) ? ((pcTempCU->getARPW( uiTempPartIdx )==0)?0:1): 0;
    2469 #endif
    2470   return uiCtx;
    2471 }
    2472 #endif
    2473 #if !MTK_IC_FLAG_CABAC_SIMP_G0061
    2474 #if H_3D_IC
    2475 UInt TComDataCU::getCtxICFlag( UInt uiAbsPartIdx )
    2476 {
    2477   UInt        uiCtx = 0;
    2478 
    2479   TComDataCU* pcTempCU = NULL;
    2480   UInt        uiTempPartIdx = 0;
    2481 
    2482   pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
    2483   uiCtx    = ( pcTempCU ) ? pcTempCU->isIC( uiTempPartIdx ) : 0;
    2484 
    2485   pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
    2486   uiCtx    += ( pcTempCU ) ? pcTempCU->isIC( uiTempPartIdx ) : 0;
    2487 
    2488   return uiCtx;
    2489 }
    2490 #endif
     2465    return uiCtx;
     2466}
    24912467#endif
    24922468#if H_3D_DBBP
     
    35823558inline Bool TComDataCU::xAddVspCand( Int mrgCandIdx, DisInfo* pDInfo, Int& iCount,
    35833559  Bool* abCandIsInter, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* vspFlag, Int& iCount3DV, InheritedVSPDisInfo*  inheritedVSPDisInfo  )
    3584   {
    3585 #if MTK_NBDV_IVREF_FIX_G0067
     3560{
    35863561  if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getVPS()->getViewSynthesisPredFlag( m_pcSlice->getLayerIdInVps() ) || m_pcSlice->getIsDepth() || pDInfo->m_aVIdxCan == -1)
    3587 #else
    3588   if ( m_pcSlice->getViewIndex() == 0 || !m_pcSlice->getVPS()->getViewSynthesisPredFlag( m_pcSlice->getLayerIdInVps() ) || m_pcSlice->getIsDepth() )
    3589 #endif
    35903562  {
    35913563    return false;
     
    35943566  Int refViewIdx = pDInfo->m_aVIdxCan;
    35953567  TComPic* picDepth = getSlice()->getIvPic( true, refViewIdx );
    3596  
     3568
    35973569  if( picDepth == NULL ) // No depth reference avail
    35983570  {
     
    36023574
    36033575  rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (5-iCount), iCount3DV);
    3604  
     3576
    36053577  Bool  refViewAvailFlag = false;
    36063578  UChar predFlag[2]      = {0, 0};
     
    36093581  Int   viewIdInRefListX = -1;
    36103582#endif
    3611  
     3583
    36123584  for( Int iRefListIdX = 0; iRefListIdX < 2 && !refViewAvailFlag; iRefListIdX++ )
    36133585  {
     
    36453617        predFlag[refListIdY] = 1;
    36463618        TComMv  cMv = pDInfo->m_acNBDV;
    3647        
     3619
    36483620        Int viewIdInRefListY = m_pcSlice->getRefPic( eRefPicListY, i)->getViewId();
    36493621        Int currViewId       = m_pcSlice->getViewId();
    3650        
     3622
    36513623        //// Following might be added here when MV-HEVC 5 HLS is included (and derivations above removed):
    36523624        // Int viewIdInRefListX = m_pcSlice->getVPS()->getViewIdVal( refViewIdx  );
    3653        
     3625
    36543626        Int iScale      = xGetDistScaleFactor( currViewId, viewIdInRefListY, currViewId, viewIdInRefListX );
    3655        
     3627
    36563628        // Can iScale == 4096 happen?, I guess not since viewIdInRefListY is always unequal to viewIdInRefListX.
    36573629        if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag() )
     
    44494421  if( bMPIFlag)
    44504422  {
    4451 #if QC_SPIVMP_MPI_G0119
    44524423    tmpMV[0].setMvField( cZeroMv, NOT_VALID );
    44534424    tmpMV[1].setMvField( cZeroMv, NOT_VALID );
     
    45564527    }
    45574528#endif
    4558 #else
    4559     UInt uiPartIdxCenter;
    4560     xDeriveCenterIdx( uiPUIdx, uiPartIdxCenter );   
    4561     tmpMV[0].setMvField( cZeroMv, NOT_VALID );
    4562     tmpMV[1].setMvField( cZeroMv, NOT_VALID );
    4563     Int tRef[2]={-1, -1};
    4564 
    4565 #if H_3D_FCO
    4566     TComPic * pcTexturePic = m_pcSlice->getTexturePic();
    4567     TComDataCU *pcTextureCU = 0;
    4568     if ( pcTexturePic )
    4569       pcTextureCU = pcTexturePic->getCU( getAddr() );
    4570 #else
    4571     TComDataCU *pcTextureCU = m_pcSlice->getTexturePic()->getCU( getAddr() );
    4572 #endif
    4573 
    4574 #if H_3D_FCO
    4575     if ( pcTextureCU && pcTexturePic->getReconMark() && !pcTextureCU->isIntra( uiPartIdxCenter ) )
    4576 #else
    4577     if ( pcTextureCU && !pcTextureCU->isIntra( uiPartIdxCenter ) )
    4578 #endif
    4579     {
    4580       pcTextureCU->getMvField( pcTextureCU, uiPartIdxCenter, REF_PIC_LIST_0, tmpMV[0] );
    4581       tRef[0] = getPic()->isTextRefValid( REF_PIC_LIST_0, tmpMV[0].getRefIdx() );
    4582       if( (tmpMV[0].getRefIdx()>=0) && ( tRef[0] >= 0 ) )
    4583       {
    4584         TComMv cMvPred = tmpMV[0].getMv();
    4585         const TComMv cAdd( 1 << ( 2 - 1 ), 1 << ( 2 - 1 ) );
    4586         cMvPred+=cAdd;
    4587         cMvPred>>=2;
    4588         clipMv(cMvPred);
    4589         tmpMV[0].setMvField(cMvPred,tRef[0]);
    4590       }
    4591       if ( getSlice()->isInterB() )
    4592       {
    4593         pcTextureCU->getMvField( pcTextureCU, uiPartIdxCenter, REF_PIC_LIST_1, tmpMV[1] );
    4594         tRef[1] = getPic()->isTextRefValid( REF_PIC_LIST_1, tmpMV[1].getRefIdx() );
    4595         if( (tmpMV[1].getRefIdx()>=0) && ( tRef[1] >= 0) )
     4529    if( tmpDir != 0 )
     4530    {
     4531      Int iCnloop = 0;
     4532      Bool bRemoveSpa = false; //pruning
     4533
     4534      for(Int i = 0; i < 2; i ++)
     4535      {
     4536        iCnloop = iPosLeftAbove[i];
     4537        if ( iCnloop == -1 )
    45964538        {
    4597           TComMv cMvPred = tmpMV[1].getMv();
    4598           const TComMv cAdd( 1 << ( 2 - 1 ), 1 << ( 2 - 1 ) );
    4599           cMvPred+=cAdd;
    4600           cMvPred>>=2;
    4601           clipMv(cMvPred);
    4602           tmpMV[1].setMvField(cMvPred,tRef[1]);
     4539          continue;
    46034540        }
    4604       }
    4605 
    4606       tmpDir = 0;
    4607       if( (tmpMV[0].getRefIdx()>=0) && ( tRef[0] >= 0 ) )
    4608       {
    4609         tmpDir += ((tmpMV[0].getRefIdx()>=0)?1:0);
    4610       }
    4611       if( (tmpMV[1].getRefIdx()>=0) && ( tRef[1] >= 0) )
    4612       {
    4613         tmpDir += ((tmpMV[1].getRefIdx()>=0)?2:0);
    4614       }
    4615 #endif
    4616       if( tmpDir != 0 )
    4617       {
    4618         Int iCnloop = 0;
    4619         Bool bRemoveSpa = false; //pruning
    4620 
    4621         for(Int i = 0; i < 2; i ++)
     4541        if(tmpDir == puhInterDirNeighbours[iCnloop] && tmpMV[0]==pcMvFieldNeighbours[(iCnloop<<1)] && tmpMV[1]==pcMvFieldNeighbours[(iCnloop<<1)+1])
    46224542        {
    4623           iCnloop = iPosLeftAbove[i];
    4624           if ( iCnloop == -1 )
     4543          bRemoveSpa                      = true;
     4544          break;
     4545        }     
     4546      }
     4547
     4548      if (!bRemoveSpa)
     4549      {
     4550        rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, 5-iCount, iCount3DV);
     4551      }
     4552      else
     4553      {
     4554        rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (iCnloop-iCount), iCount3DV);
     4555        if (iCnloop<numA1B1B0)
     4556        {
     4557          numA1B1B0--;
     4558        }
     4559        iCountHEVC--;
     4560
     4561        if (iPosLeftAbove[0] != -1)
     4562        {
     4563          if (iCnloop == iPosLeftAbove[0])
    46254564          {
    4626             continue;
     4565            iPosLeftAbove[0] = -1;
    46274566          }
    4628           if(tmpDir == puhInterDirNeighbours[iCnloop] && tmpMV[0]==pcMvFieldNeighbours[(iCnloop<<1)] && tmpMV[1]==pcMvFieldNeighbours[(iCnloop<<1)+1])
     4567          else
    46294568          {
    4630             bRemoveSpa                      = true;
    4631             break;
    4632           }     
     4569            iPosLeftAbove[0]++;
     4570          }
    46334571        }
    4634 
    4635         if (!bRemoveSpa)
     4572        if (iPosLeftAbove[1] != -1)
    46364573        {
    4637           rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, 5-iCount, iCount3DV);
    4638         }
    4639         else
    4640         {
    4641           rightShiftMergeCandList( pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, iCount, (iCnloop-iCount), iCount3DV);
    4642           if (iCnloop<numA1B1B0)
     4574          if (iCnloop == iPosLeftAbove[1])
    46434575          {
    4644             numA1B1B0--;
     4576            iPosLeftAbove[1] = -1;
    46454577          }
    4646           iCountHEVC--;
    4647 
    4648           if (iPosLeftAbove[0] != -1)
     4578          else
    46494579          {
    4650             if (iCnloop == iPosLeftAbove[0])
     4580            if (iCnloop > iPosLeftAbove[1])
    46514581            {
    4652               iPosLeftAbove[0] = -1;
    4653             }
    4654             else
    4655             {
    4656               iPosLeftAbove[0]++;
    4657             }
    4658           }
    4659           if (iPosLeftAbove[1] != -1)
    4660           {
    4661             if (iCnloop == iPosLeftAbove[1])
    4662             {
    4663               iPosLeftAbove[1] = -1;
    4664             }
    4665             else
    4666             {
    4667               if (iCnloop > iPosLeftAbove[1])
    4668               {
    4669                 iPosLeftAbove[1]++;
    4670               }
     4582              iPosLeftAbove[1]++;
    46714583            }
    46724584          }
    46734585        }
    4674 #if QC_SPIVMP_MPI_G0119
    4675         pcMvFieldNeighbours[iCount<<1].setMvField(tmpMV[0].getMv(), tmpMV[0].getRefIdx());
    4676         pcMvFieldNeighbours[(iCount<<1)+1].setMvField(tmpMV[1].getMv(), tmpMV[1].getRefIdx());
    4677 #else
    4678         if( (tmpMV[0].getRefIdx()>=0) && ( tRef[0] >= 0 ) )
    4679         {
    4680           pcMvFieldNeighbours[iCount<<1].setMvField(tmpMV[0].getMv(), tRef[0]);
    4681         }
    4682         if ( getSlice()->isInterB())
    4683         {
    4684           if( (tmpMV[1].getRefIdx()>=0) && ( tRef[1] >= 0) )
    4685           {
    4686             pcMvFieldNeighbours[(iCount<<1)+1].setMvField(tmpMV[1].getMv(), tRef[1]);
    4687           }
    4688         }
    4689 #endif
    4690         puhInterDirNeighbours[iCount] = tmpDir;
    4691 
    4692         if ( mrgCandIdx == iCount )
    4693         {
    4694           return;
    4695         }
    4696         iCount ++;
    4697       }
    4698 #if !QC_SPIVMP_MPI_G0119
    4699     }
    4700 #endif
     4586      }
     4587      pcMvFieldNeighbours[iCount<<1].setMvField(tmpMV[0].getMv(), tmpMV[0].getRefIdx());
     4588      pcMvFieldNeighbours[(iCount<<1)+1].setMvField(tmpMV[1].getMv(), tmpMV[1].getRefIdx());
     4589
     4590      puhInterDirNeighbours[iCount] = tmpDir;
     4591
     4592      if ( mrgCandIdx == iCount )
     4593      {
     4594        return;
     4595      }
     4596      iCount ++;
     4597    }
    47014598  }
    47024599#if MTK_DDD_G0063
     
    48364733  Bool ivMvPredFlag   = getSlice()->getVPS()->getIvMvPredFlag( getSlice()->getLayerIdInVps() );
    48374734
    4838 #if MTK_NBDV_IVREF_FIX_G0067
    48394735  if ( ivMvPredFlag && cDisInfo.m_aVIdxCan!=-1)
    4840 #else
    4841   if ( ivMvPredFlag )
    4842 #endif
    48434736  {
    48444737    getInterViewMergeCands(uiPUIdx, ivCandRefIdx, ivCandMv, &cDisInfo, ivCandDir , bIsDepth, pcMvFieldSP, puhInterDirSP );
     
    48484741  //////// INTER VIEW MOTION COMP(IvMC) /////////
    48494742  ///////////////////////////////////////////////
    4850 #if QC_DEPTH_MERGE_SIMP_G0127
    48514743  if( getSlice()->getIsDepth() )
    48524744  {
    48534745    ivCandDir[1] = ivCandDir[2] = ivCandDir[3] = 0;
    48544746  }
    4855 #endif
     4747
    48564748  if( ivCandDir[0] )
    48574749  {
     
    49614853    if (bIvMC)
    49624854    {
    4963 #if QC_SPIVMP_MPI_G0119
    4964       if(!m_pcSlice->getIsDepth())
    4965 #endif
    4966 #if SEC_SPIVMP_MCP_SIZE_G0077
    4967         if(getPartitionSize(0) == SIZE_2Nx2N)
     4855      if(!m_pcSlice->getIsDepth() && getPartitionSize(0) == SIZE_2Nx2N )
     4856      {
    49684857          pbSPIVMPFlag[iCount] = true;
    4969 #else
    4970       pbSPIVMPFlag[iCount] = true;
    4971 #endif
     4858      }
    49724859#if H_3D_DBBP
    49734860      pbSPIVMPFlag[iCount] &= !bDBBPFlag;
     
    51114998  //////// INTER VIEW DISP COMP (IvDC) ////////
    51124999  /////////////////////////////////////////////
    5113 #if QC_DEPTH_MERGE_SIMP_G0127
    51145000  if( ivCandDir[1] && iCount < getSlice()->getMaxNumMergeCand() && !getSlice()->getIsDepth() )
    5115 #else
    5116   if( ivCandDir[1] && iCount < getSlice()->getMaxNumMergeCand())
    5117 #endif
    51185001  {
    51195002    assert(iCount < getSlice()->getMaxNumMergeCand());
     
    52765159  //////// SHIFTED IV (IvMCShift + IvDCShift) ////////
    52775160  ////////////////////////////////////////////////////
    5278 #if QC_DEPTH_MERGE_SIMP_G0127
    52795161  if(  ivMvPredFlag && iCount < getSlice()->getMaxNumMergeCand() && !getSlice()->getIsDepth() )
    5280 #else
    5281   if(  ivMvPredFlag && iCount < getSlice()->getMaxNumMergeCand() )
    5282 #endif
    52835162  {
    52845163    if(xAddIvMRGCand( mrgCandIdx,  iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, ivCandDir, ivCandMv, ivCandRefIdx, posIvDC, vspFlag, iCount3DV, inheritedVSPDisInfo ) )
     
    66456524#endif
    66466525#if H_3D_IV_MERGE
    6647 #if SEC_DEPTH_DV_DERIVAITON_G0074
    66486526Bool TComDataCU::getDispforDepth (UInt uiPartIdx, UInt uiPartAddr, DisInfo* pDisp)
    6649 #else
    6650 Bool TComDataCU::getDispNeighBlocks (UInt uiPartIdx, UInt uiPartAddr, DisInfo* pDisp)
    6651 #endif
    6652 {
    6653 #if SEC_DEPTH_DV_DERIVAITON_G0074
     6527{
     6528
    66546529  assert(getPartitionSize( uiPartAddr ) == SIZE_2Nx2N);
    66556530
     
    66626537
    66636538  return true;
    6664 #else
    6665   Pel pDepPos[3] = {0, 0, 0};
    6666   assert(getPartitionSize( uiPartAddr ) == SIZE_2Nx2N);
    6667   Bool bDepAvail = false;
    6668   Pel *pDepth  = this->getPic()->getPicYuvRec()->getLumaAddr();
    6669   Int iDepStride =  this->getPic()->getPicYuvRec()->getStride();
    6670   TComMv cMv;
    6671 
    6672   Int xP, yP, nPSW, nPSH;
    6673   this->getPartPosition(uiPartIdx, xP, yP, nPSW, nPSH);
    6674 
    6675   if(xP != 0 && yP != 0)
    6676   {
    6677     pDepPos[0] = pDepth[ (yP-1) * iDepStride + (xP-1) ];
    6678     bDepAvail = true;
    6679   }
    6680 
    6681   if(xP != 0)
    6682   {
    6683     pDepPos[1] = pDepth[ (yP+nPSH-1) * iDepStride + (xP-1) ];
    6684     bDepAvail = true;
    6685   }
    6686 
    6687   if(yP != 0)
    6688   {
    6689     pDepPos[2] = pDepth[ (yP-1) * iDepStride + (xP+nPSW-1) ];
    6690     bDepAvail = true;
    6691   }
    6692 
    6693   if (bDepAvail)
    6694   {
    6695     Pel pAvgDepth = (xP != 0 && yP != 0) ? ((5*pDepPos[0] + 5*pDepPos[1] + 6*pDepPos[2] + 8)>>4) : (xP == 0) ? pDepPos[2] : pDepPos[1];
    6696     Int iDisp     = getSlice()->getDepthToDisparityB( 0 )[ pAvgDepth ];
    6697     cMv.setHor(iDisp);
    6698     cMv.setVer(0);
    6699     pDisp->m_acNBDV = cMv;
    6700     pDisp->m_aVIdxCan = 0;
    6701     return true;
    6702   }
    6703   else
    6704   { 
    6705     cMv.setZero();
    6706     pDisp->m_acNBDV = cMv;
    6707     pDisp->m_aVIdxCan = 0;
    6708     return false;
    6709   }
    6710 #endif
    67116539}
    67126540#endif
     
    67256553  // Init disparity struct for results
    67266554  pDInfo->bDV = false;   
    6727 #if MTK_NBDV_IVREF_FIX_G0067
    67286555  pDInfo->m_aVIdxCan = -1;
    6729 #endif
     6556
    67306557  // Init struct for disparities from MCP neighboring blocks
    67316558  IDVInfo cIDVInfo;
     
    72487075{
    72497076  Int iSubPUSize = 1<<getSlice()->getVPS()->getSubPULog2Size(getSlice()->getLayerId());
    7250 #if QC_SPIVMP_MPI_G0119
    72517077  if( getSlice()->getIsDepth() )
    72527078  {
    72537079    iSubPUSize = 1 << getSlice()->getVPS()->getSubPUMPILog2Size();
    72547080  }
    7255 #endif
     7081
    72567082  iNumSPInOneLine = iPUWidth/iSubPUSize;
    72577083  iNumSPInOneLine = iNumSPInOneLine < 1 ? 1: iNumSPInOneLine;
     
    73107136  TComSlice*    pcSlice = getSlice (); 
    73117137  Int iViewIndex        = pDInfo->m_aVIdxCan;
    7312  
     7138
    73137139  //--- get base CU/PU and check prediction mode ---
    73147140  TComPic*    pcBasePic   = pcSlice->getIvPic( bIsDepth, iViewIndex );
     
    73347160
    73357161  TComMv      cDv = depthRefineFlag ? pDInfo->m_acDoNBDV : pDInfo->m_acNBDV;
    7336  
     7162
    73377163  Bool abPdmAvailable[8] =  {false, false, false, false, false, false, false, false};
    73387164#if H_3D_NBDV
     
    73477173  //////////sub-PU IvMC///////////
    73487174  ////////////////////////////////
    7349 #if QC_SPIVMP_MPI_G0119
    73507175  if(!m_pcSlice->getIsDepth())
    73517176  {
    7352 #endif 
    7353 #if SEC_SPIVMP_MCP_SIZE_G0077
    7354   if( getPartitionSize(0) == SIZE_2Nx2N )
    7355   {
    7356 #endif
    7357   Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight;
    7358   getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight);
    7359 
    7360   for (Int i=0; i<iNumSP; i++)
    7361   {
    7362     puhInterDirSP[i] = 0;
    7363     pcMvFieldSP[2*i].getMv().set(0, 0);
    7364     pcMvFieldSP[2*i+1].getMv().set(0,0);
    7365     pcMvFieldSP[2*i].setRefIdx(-1);
    7366     pcMvFieldSP[2*i+1].setRefIdx(-1);
    7367   }
    7368 
    7369   Int         iBaseCUAddr;
    7370   Int         iBaseAbsPartIdx;
    7371   TComDataCU* pcBaseCU;
    7372   Int iPartition = 0;
     7177    if( getPartitionSize(0) == SIZE_2Nx2N )
     7178    {
     7179      Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight;
     7180      getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight);
     7181
     7182      for (Int i=0; i<iNumSP; i++)
     7183      {
     7184        puhInterDirSP[i] = 0;
     7185        pcMvFieldSP[2*i].getMv().set(0, 0);
     7186        pcMvFieldSP[2*i+1].getMv().set(0,0);
     7187        pcMvFieldSP[2*i].setRefIdx(-1);
     7188        pcMvFieldSP[2*i+1].setRefIdx(-1);
     7189      }
     7190
     7191      Int         iBaseCUAddr;
     7192      Int         iBaseAbsPartIdx;
     7193      TComDataCU* pcBaseCU;
     7194      Int iPartition = 0;
    73737195#if !KHU_SIMP_SPIVMP_G0147
    7374   Int iInterDirLast = 0;
    7375   TComMvField cMvFieldLast[2];
    7376 #endif
    7377 
    7378   Int iDelX = iSPWidth/2;
    7379   Int iDelY = iSPHeight/2;
     7196      Int iInterDirLast = 0;
     7197      TComMvField cMvFieldLast[2];
     7198#endif
     7199
     7200      Int iDelX = iSPWidth/2;
     7201      Int iDelY = iSPHeight/2;
    73807202
    73817203#if KHU_SIMP_SPIVMP_G0147
    7382   Int         iCenterPosX = iCurrPosX + ( ( iWidth /  iSPWidth ) >> 1 )  * iSPWidth + ( iSPWidth >> 1 );
    7383   Int         iCenterPosY = iCurrPosY + ( ( iHeight /  iSPHeight ) >> 1 )  * iSPHeight + (iSPHeight >> 1);
    7384   Int         iRefCenterCUAddr, iRefCenterAbsPartIdx;
    7385 
    7386   if(iWidth == iSPWidth && iHeight == iSPHeight)
    7387   {
    7388     iCenterPosX = iCurrPosX + (iWidth >> 1);
    7389     iCenterPosY = iCurrPosY + (iHeight >> 1);
    7390   }
    7391 
    7392   Int iRefCenterPosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCenterPosX + ( (cDv.getHor() + 2 ) >> 2 ) );
    7393   Int iRefCenterPosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCenterPosY + ( (cDv.getVer() + 2 ) >> 2 ) );
    7394 
    7395   pcBaseRec->getCUAddrAndPartIdx( iRefCenterPosX , iRefCenterPosY , iRefCenterCUAddr, iRefCenterAbsPartIdx );
    7396   TComDataCU* pcDefaultCU    = pcBasePic->getCU( iRefCenterCUAddr );
    7397   if(!( pcDefaultCU->getPredictionMode( iRefCenterAbsPartIdx ) == MODE_INTRA ))
    7398   {
    7399     for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ )       
    7400     {
    7401       RefPicList  eCurrRefPicList = RefPicList( uiCurrRefListId );
    7402       Bool stopLoop = false;
    7403       for(Int iLoop = 0; iLoop < 2 && !stopLoop; ++iLoop)
    7404       {
    7405         RefPicList eDefaultRefPicList = (iLoop ==1)? RefPicList( 1 -  uiCurrRefListId ) : RefPicList( uiCurrRefListId );
    7406         TComMvField cDefaultMvField;
    7407         pcDefaultCU->getMvField( pcDefaultCU, iRefCenterAbsPartIdx, eDefaultRefPicList, cDefaultMvField );
    7408         Int         iDefaultRefIdx     = cDefaultMvField.getRefIdx();
    7409         if (iDefaultRefIdx >= 0)
    7410         {
    7411           Int iDefaultRefPOC = pcDefaultCU->getSlice()->getRefPOC(eDefaultRefPicList, iDefaultRefIdx);
    7412           if (iDefaultRefPOC != pcSlice->getPOC())   
    7413           {
    7414             for (Int iPdmRefIdx = 0; iPdmRefIdx < pcSlice->getNumRefIdx( eCurrRefPicList ); iPdmRefIdx++)
    7415             {
    7416               if (iDefaultRefPOC == pcSlice->getRefPOC(eCurrRefPicList, iPdmRefIdx))
    7417               {
    7418                 abPdmAvailable[ uiCurrRefListId ] = true;
    7419                 TComMv cMv(cDefaultMvField.getHor(), cDefaultMvField.getVer());
    7420 #if H_3D_NBDV
    7421 #if H_3D_IV_MERGE
    7422                 if( !bIsDepth )
    7423                 {
    7424 #endif
    7425                   cMv.setIDVFlag   (true);
    7426                   cMv.setIDVHor    (cDv.getHor());                 
    7427                   cMv.setIDVVer    (cDv.getVer()); 
    7428                   cMv.setIDVVId    (iViewIndex);
    7429 #if H_3D_IV_MERGE
    7430                 }
    7431 #endif
    7432 #endif
    7433                 clipMv( cMv );
    7434                 paiPdmRefIdx  [ uiCurrRefListId ] = iPdmRefIdx;
    7435                 pacPdmMv      [ uiCurrRefListId ] = cMv;
    7436                 stopLoop = true;
    7437                 break;
    7438               }
    7439             }
    7440           }
    7441         }
    7442       }
    7443     }
    7444   }
    7445   availableMcDc[0] = ( abPdmAvailable[0]? 1 : 0) + (abPdmAvailable[1]? 2 : 0);
    7446 
    7447   if(availableMcDc[0])
    7448   {
    7449 #endif
    7450   Int         iBasePosX, iBasePosY;
    7451   for (Int i=iCurrPosY; i < iCurrPosY + iHeight; i += iSPHeight)
    7452   {
    7453     for (Int j = iCurrPosX; j < iCurrPosX + iWidth; j += iSPWidth)
    7454     {
    7455       iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, j + iDelX + ( (cDv.getHor() + 2 ) >> 2 ));
    7456       iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, i + iDelY + ( (cDv.getVer() + 2 ) >> 2 ));
    7457 
    7458       pcBaseRec->getCUAddrAndPartIdx( iBasePosX , iBasePosY, iBaseCUAddr, iBaseAbsPartIdx );
    7459       pcBaseCU    = pcBasePic->getCU( iBaseCUAddr );
    7460       if(!( pcBaseCU->getPredictionMode( iBaseAbsPartIdx ) == MODE_INTRA ))
    7461       {
    7462         for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ )
     7204      Int         iCenterPosX = iCurrPosX + ( ( iWidth /  iSPWidth ) >> 1 )  * iSPWidth + ( iSPWidth >> 1 );
     7205      Int         iCenterPosY = iCurrPosY + ( ( iHeight /  iSPHeight ) >> 1 )  * iSPHeight + (iSPHeight >> 1);
     7206      Int         iRefCenterCUAddr, iRefCenterAbsPartIdx;
     7207
     7208      if(iWidth == iSPWidth && iHeight == iSPHeight)
     7209      {
     7210        iCenterPosX = iCurrPosX + (iWidth >> 1);
     7211        iCenterPosY = iCurrPosY + (iHeight >> 1);
     7212      }
     7213
     7214      Int iRefCenterPosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCenterPosX + ( (cDv.getHor() + 2 ) >> 2 ) );
     7215      Int iRefCenterPosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCenterPosY + ( (cDv.getVer() + 2 ) >> 2 ) );
     7216
     7217      pcBaseRec->getCUAddrAndPartIdx( iRefCenterPosX , iRefCenterPosY , iRefCenterCUAddr, iRefCenterAbsPartIdx );
     7218      TComDataCU* pcDefaultCU    = pcBasePic->getCU( iRefCenterCUAddr );
     7219      if(!( pcDefaultCU->getPredictionMode( iRefCenterAbsPartIdx ) == MODE_INTRA ))
     7220      {
     7221        for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ )       
    74637222        {
    74647223          RefPicList  eCurrRefPicList = RefPicList( uiCurrRefListId );
    7465           Bool bLoop_stop = false;
    7466           for(Int iLoop = 0; iLoop < 2 && !bLoop_stop; ++iLoop)
     7224          Bool stopLoop = false;
     7225          for(Int iLoop = 0; iLoop < 2 && !stopLoop; ++iLoop)
    74677226          {
    7468             RefPicList eBaseRefPicList = (iLoop ==1)? RefPicList( 1 -  uiCurrRefListId ) : RefPicList( uiCurrRefListId );
    7469             TComMvField cBaseMvField;
    7470             pcBaseCU->getMvField( pcBaseCU, iBaseAbsPartIdx, eBaseRefPicList, cBaseMvField );
    7471             Int         iBaseRefIdx     = cBaseMvField.getRefIdx();
    7472             if (iBaseRefIdx >= 0)
     7227            RefPicList eDefaultRefPicList = (iLoop ==1)? RefPicList( 1 -  uiCurrRefListId ) : RefPicList( uiCurrRefListId );
     7228            TComMvField cDefaultMvField;
     7229            pcDefaultCU->getMvField( pcDefaultCU, iRefCenterAbsPartIdx, eDefaultRefPicList, cDefaultMvField );
     7230            Int         iDefaultRefIdx     = cDefaultMvField.getRefIdx();
     7231            if (iDefaultRefIdx >= 0)
    74737232            {
    7474               Int iBaseRefPOC = pcBaseCU->getSlice()->getRefPOC(eBaseRefPicList, iBaseRefIdx);
    7475               if (iBaseRefPOC != pcSlice->getPOC())   
     7233              Int iDefaultRefPOC = pcDefaultCU->getSlice()->getRefPOC(eDefaultRefPicList, iDefaultRefIdx);
     7234              if (iDefaultRefPOC != pcSlice->getPOC())   
    74767235              {
    74777236                for (Int iPdmRefIdx = 0; iPdmRefIdx < pcSlice->getNumRefIdx( eCurrRefPicList ); iPdmRefIdx++)
    74787237                {
    7479                   if (iBaseRefPOC == pcSlice->getRefPOC(eCurrRefPicList, iPdmRefIdx))
     7238                  if (iDefaultRefPOC == pcSlice->getRefPOC(eCurrRefPicList, iPdmRefIdx))
    74807239                  {
    74817240                    abPdmAvailable[ uiCurrRefListId ] = true;
    7482                     TComMv cMv(cBaseMvField.getHor(), cBaseMvField.getVer());
    7483 
     7241                    TComMv cMv(cDefaultMvField.getHor(), cDefaultMvField.getVer());
     7242#if H_3D_NBDV
     7243#if H_3D_IV_MERGE
    74847244                    if( !bIsDepth )
    74857245                    {
     7246#endif
    74867247                      cMv.setIDVFlag   (true);
    74877248                      cMv.setIDVHor    (cDv.getHor());                 
    74887249                      cMv.setIDVVer    (cDv.getVer()); 
    74897250                      cMv.setIDVVId    (iViewIndex);
     7251#if H_3D_IV_MERGE
    74907252                    }
    7491 
     7253#endif
     7254#endif
    74927255                    clipMv( cMv );
    7493                     bLoop_stop = true;
    7494 
    7495                     pcMvFieldSP[2*iPartition + uiCurrRefListId].setMvField(cMv, iPdmRefIdx);
     7256                    paiPdmRefIdx  [ uiCurrRefListId ] = iPdmRefIdx;
     7257                    pacPdmMv      [ uiCurrRefListId ] = cMv;
     7258                    stopLoop = true;
    74967259                    break;
    74977260                  }
     
    75027265        }
    75037266      }
    7504 
    7505       puhInterDirSP[iPartition] = (pcMvFieldSP[2*iPartition].getRefIdx()!=-1 ? 1: 0) + (pcMvFieldSP[2*iPartition+1].getRefIdx()!=-1 ? 2: 0);
    7506       if (puhInterDirSP[iPartition] == 0)
    7507       {
     7267      availableMcDc[0] = ( abPdmAvailable[0]? 1 : 0) + (abPdmAvailable[1]? 2 : 0);
     7268
     7269      if(availableMcDc[0])
     7270      {
     7271#endif
     7272        Int         iBasePosX, iBasePosY;
     7273        for (Int i=iCurrPosY; i < iCurrPosY + iHeight; i += iSPHeight)
     7274        {
     7275          for (Int j = iCurrPosX; j < iCurrPosX + iWidth; j += iSPWidth)
     7276          {
     7277            iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, j + iDelX + ( (cDv.getHor() + 2 ) >> 2 ));
     7278            iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, i + iDelY + ( (cDv.getVer() + 2 ) >> 2 ));
     7279
     7280            pcBaseRec->getCUAddrAndPartIdx( iBasePosX , iBasePosY, iBaseCUAddr, iBaseAbsPartIdx );
     7281            pcBaseCU    = pcBasePic->getCU( iBaseCUAddr );
     7282            if(!( pcBaseCU->getPredictionMode( iBaseAbsPartIdx ) == MODE_INTRA ))
     7283            {
     7284              for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ )
     7285              {
     7286                RefPicList  eCurrRefPicList = RefPicList( uiCurrRefListId );
     7287                Bool bLoop_stop = false;
     7288                for(Int iLoop = 0; iLoop < 2 && !bLoop_stop; ++iLoop)
     7289                {
     7290                  RefPicList eBaseRefPicList = (iLoop ==1)? RefPicList( 1 -  uiCurrRefListId ) : RefPicList( uiCurrRefListId );
     7291                  TComMvField cBaseMvField;
     7292                  pcBaseCU->getMvField( pcBaseCU, iBaseAbsPartIdx, eBaseRefPicList, cBaseMvField );
     7293                  Int         iBaseRefIdx     = cBaseMvField.getRefIdx();
     7294                  if (iBaseRefIdx >= 0)
     7295                  {
     7296                    Int iBaseRefPOC = pcBaseCU->getSlice()->getRefPOC(eBaseRefPicList, iBaseRefIdx);
     7297                    if (iBaseRefPOC != pcSlice->getPOC())   
     7298                    {
     7299                      for (Int iPdmRefIdx = 0; iPdmRefIdx < pcSlice->getNumRefIdx( eCurrRefPicList ); iPdmRefIdx++)
     7300                      {
     7301                        if (iBaseRefPOC == pcSlice->getRefPOC(eCurrRefPicList, iPdmRefIdx))
     7302                        {
     7303                          abPdmAvailable[ uiCurrRefListId ] = true;
     7304                          TComMv cMv(cBaseMvField.getHor(), cBaseMvField.getVer());
     7305
     7306                          if( !bIsDepth )
     7307                          {
     7308                            cMv.setIDVFlag   (true);
     7309                            cMv.setIDVHor    (cDv.getHor());                 
     7310                            cMv.setIDVVer    (cDv.getVer()); 
     7311                            cMv.setIDVVId    (iViewIndex);
     7312                          }
     7313
     7314                          clipMv( cMv );
     7315                          bLoop_stop = true;
     7316
     7317                          pcMvFieldSP[2*iPartition + uiCurrRefListId].setMvField(cMv, iPdmRefIdx);
     7318                          break;
     7319                        }
     7320                      }
     7321                    }
     7322                  }
     7323                }
     7324              }
     7325            }
     7326
     7327            puhInterDirSP[iPartition] = (pcMvFieldSP[2*iPartition].getRefIdx()!=-1 ? 1: 0) + (pcMvFieldSP[2*iPartition+1].getRefIdx()!=-1 ? 2: 0);
     7328            if (puhInterDirSP[iPartition] == 0)
     7329            {
    75087330#if KHU_SIMP_SPIVMP_G0147
    7509         puhInterDirSP[iPartition] = availableMcDc[0];
    7510         pcMvFieldSP[2*iPartition].setMvField(pacPdmMv[0], paiPdmRefIdx[0]);
    7511         pcMvFieldSP[2*iPartition + 1].setMvField(pacPdmMv[1], paiPdmRefIdx[1]);
     7331              puhInterDirSP[iPartition] = availableMcDc[0];
     7332              pcMvFieldSP[2*iPartition].setMvField(pacPdmMv[0], paiPdmRefIdx[0]);
     7333              pcMvFieldSP[2*iPartition + 1].setMvField(pacPdmMv[1], paiPdmRefIdx[1]);
    75127334#else
    7513         if (iInterDirLast != 0)
    7514         {
    7515           puhInterDirSP[iPartition] = iInterDirLast;
    7516           pcMvFieldSP[2*iPartition] = cMvFieldLast[0];
    7517           pcMvFieldSP[2*iPartition + 1] = cMvFieldLast[1];
    7518         }
    7519 #endif
    7520       }
     7335              if (iInterDirLast != 0)
     7336              {
     7337                puhInterDirSP[iPartition] = iInterDirLast;
     7338                pcMvFieldSP[2*iPartition] = cMvFieldLast[0];
     7339                pcMvFieldSP[2*iPartition + 1] = cMvFieldLast[1];
     7340              }
     7341#endif
     7342            }
    75217343#if !KHU_SIMP_SPIVMP_G0147
    7522       else
    7523       {
    7524         if (iInterDirLast ==0)
    7525         {
    7526           availableMcDc[0] = puhInterDirSP[iPartition];
    7527           paiPdmRefIdx  [ 0 ] = pcMvFieldSP[2*iPartition].getRefIdx();
    7528           pacPdmMv      [ 0 ] = pcMvFieldSP[2*iPartition].getMv();
    7529           paiPdmRefIdx  [ 1 ] = pcMvFieldSP[2*iPartition+1].getRefIdx();
    7530           pacPdmMv      [ 1 ] = pcMvFieldSP[2*iPartition+1].getMv();
    7531 
    7532           if (iPartition != 0)
    7533           {
    7534             for (Int iPart = iPartition-1; iPart >= 0; iPart--)
     7344            else
    75357345            {
    7536               puhInterDirSP[iPart] = puhInterDirSP[iPartition];
    7537               pcMvFieldSP[2*iPart] = pcMvFieldSP[2*iPartition];
    7538               pcMvFieldSP[2*iPart + 1] = pcMvFieldSP[2*iPartition + 1];
     7346              if (iInterDirLast ==0)
     7347              {
     7348                availableMcDc[0] = puhInterDirSP[iPartition];
     7349                paiPdmRefIdx  [ 0 ] = pcMvFieldSP[2*iPartition].getRefIdx();
     7350                pacPdmMv      [ 0 ] = pcMvFieldSP[2*iPartition].getMv();
     7351                paiPdmRefIdx  [ 1 ] = pcMvFieldSP[2*iPartition+1].getRefIdx();
     7352                pacPdmMv      [ 1 ] = pcMvFieldSP[2*iPartition+1].getMv();
     7353
     7354                if (iPartition != 0)
     7355                {
     7356                  for (Int iPart = iPartition-1; iPart >= 0; iPart--)
     7357                  {
     7358                    puhInterDirSP[iPart] = puhInterDirSP[iPartition];
     7359                    pcMvFieldSP[2*iPart] = pcMvFieldSP[2*iPartition];
     7360                    pcMvFieldSP[2*iPart + 1] = pcMvFieldSP[2*iPartition + 1];
     7361                  }
     7362                }
     7363              }
     7364              iInterDirLast = puhInterDirSP[iPartition];
     7365              cMvFieldLast[0] = pcMvFieldSP[2*iPartition];
     7366              cMvFieldLast[1] = pcMvFieldSP[2*iPartition + 1];
    75397367            }
     7368#endif
     7369            iPartition ++;
     7370
    75407371          }
    75417372        }
    7542         iInterDirLast = puhInterDirSP[iPartition];
    7543         cMvFieldLast[0] = pcMvFieldSP[2*iPartition];
    7544         cMvFieldLast[1] = pcMvFieldSP[2*iPartition + 1];
    7545       }
    7546 #endif
    7547       iPartition ++;
    7548 
    7549     }
    7550   }
    75517373#if KHU_SIMP_SPIVMP_G0147
    7552   }
    7553 #endif
    7554 #if SEC_SPIVMP_MCP_SIZE_G0077
    7555   }
    7556 #endif
    7557 
    7558   iCurrPosX  += ( iWidth  >> 1 );
    7559   iCurrPosY  += ( iHeight >> 1 );
    7560 #if QC_SPIVMP_MPI_G0119
    7561  }
    7562 #endif
     7374      }
     7375#endif
     7376    }
     7377
     7378    iCurrPosX  += ( iWidth  >> 1 );
     7379    iCurrPosY  += ( iHeight >> 1 );
     7380  }
    75637381#endif
    75647382
     
    75687386
    75697387#if H_3D_SPIVMP
    7570 #if QC_SPIVMP_MPI_G0119
    7571  if(m_pcSlice->getIsDepth())
    7572  {
    7573    iCurrPosX  += ( iWidth  >> 1 );
    7574    iCurrPosY  += ( iHeight >> 1 );
    7575  }
    7576 #if QC_DEPTH_MERGE_SIMP_G0127
    7577 #if SEC_SPIVMP_MCP_SIZE_G0077
     7388  if(m_pcSlice->getIsDepth())
     7389  {
     7390    iCurrPosX  += ( iWidth  >> 1 );
     7391    iCurrPosY  += ( iHeight >> 1 );
     7392  }
    75787393  for(Int iLoopCan = ( (m_pcSlice->getIsDepth() || getPartitionSize(uiPartAddr) != SIZE_2Nx2N) ? 0 : 1 ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++)
    75797394#else
    7580  for(Int iLoopCan = ( 1 - m_pcSlice->getIsDepth() ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++)
    7581 #endif
    7582 #else
    7583 #if SEC_SPIVMP_MCP_SIZE_G0077
    7584  for(Int iLoopCan = ( (m_pcSlice->getIsDepth() || getPartitionSize(uiPartAddr) != SIZE_2Nx2N) ? 0 : 1 ); iLoopCan < 2; iLoopCan ++)
    7585 #else
    7586  for(Int iLoopCan = ( 1 - m_pcSlice->getIsDepth() ); iLoopCan < 2; iLoopCan ++)
    7587 #endif
    7588 #endif
    7589 #else
    7590 #if SEC_SPIVMP_MCP_SIZE_G0077
    7591  for(Int iLoopCan = (getPartitionSize(uiPartAddr) == SIZE_2Nx2N ? 1 : 0); iLoopCan < 2; iLoopCan ++)
    7592 #else
    7593   for(Int iLoopCan = 1; iLoopCan < 2; iLoopCan ++)
    7594 #endif
    7595 #endif
    7596 #else
    75977395  for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
    75987396#endif
     
    76017399    // iLoopCan == 1 --> IvMCShift
    76027400
    7603 #if !H_3D_SPIVMP || QC_SPIVMP_MPI_G0119
    76047401    Int         iBaseCUAddr;
    76057402    Int         iBaseAbsPartIdx;
    7606 #endif
    76077403
    76087404    Int offsetW = (iLoopCan == 0) ? 0 : ( ((iWidth /2)*4) + 4 );
    76097405    Int offsetH = (iLoopCan == 0) ? 0 : ( ((iHeight/2)*4) + 4 );
    76107406
    7611 #if H_3D_SPIVMP && !QC_SPIVMP_MPI_G0119
    7612     iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (cDv.getHor() + offsetW + 2 ) >> 2 ) );
    7613     iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCurrPosY + ( (cDv.getVer() + offsetH + 2 ) >> 2 ) );
    7614 #else
    76157407    Int         iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (cDv.getHor() + offsetW + 2 ) >> 2 ) );
    76167408    Int         iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCurrPosY + ( (cDv.getVer() + offsetH + 2 ) >> 2 ) );
    7617 #endif
    76187409    pcBaseRec->getCUAddrAndPartIdx( iBasePosX , iBasePosY , iBaseCUAddr, iBaseAbsPartIdx );
    76197410
    7620 #if H_3D_SPIVMP && !QC_SPIVMP_MPI_G0119
    7621     pcBaseCU    = pcBasePic->getCU( iBaseCUAddr );
    7622 #else
    76237411    TComDataCU* pcBaseCU    = pcBasePic->getCU( iBaseCUAddr );
    7624 #endif
    76257412    if(!( pcBaseCU->getPredictionMode( iBaseAbsPartIdx ) == MODE_INTRA ))
    76267413    {
     
    76767463  }
    76777464#if H_3D_SPIVMP
    7678 #if QC_SPIVMP_MPI_G0119
    7679 #if QC_DEPTH_MERGE_SIMP_G0127
    76807465  for(Int iLoopCan = ( 1 - m_pcSlice->getIsDepth() ); iLoopCan < ( 2 - m_pcSlice->getIsDepth() ); iLoopCan ++)
    76817466#else
    7682   for(Int iLoopCan = ( 1 - m_pcSlice->getIsDepth() ); iLoopCan < 2; iLoopCan ++)
    7683 #endif
    7684 #else
    7685   for(Int iLoopCan = 1; iLoopCan < 2; iLoopCan ++)
    7686 #endif
    7687 #else
    76887467  for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
    76897468#endif
     
    76917470    availableMcDc[(iLoopCan << 1)] = ( abPdmAvailable[(iLoopCan<<2)] ? 1 : 0 ) + ( abPdmAvailable[1 + (iLoopCan<<2)] ? 2 : 0);
    76927471  }
    7693  
    7694  
     7472
     7473
    76957474  ////////////////////////////////
    76967475  /////// IvDC + IvDCShift ///////
    76977476  ////////////////////////////////
    7698 #if QC_DEPTH_MERGE_SIMP_G0127
     7477
    76997478  if( !getSlice()->getIsDepth() )
    77007479  {
    7701 #endif
    7702   for( Int iRefListId = 0; iRefListId < 2 ; iRefListId++ )
    7703   {
    7704     RefPicList  eRefPicListDMV       = RefPicList( iRefListId );
    7705     Int         iNumRefPics       = pcSlice->getNumRefIdx( eRefPicListDMV );
    7706     for( Int iPdmRefIdx = 0; iPdmRefIdx < iNumRefPics; iPdmRefIdx++ )
    7707     {
    7708       if(( pcSlice->getRefPOC( eRefPicListDMV, iPdmRefIdx ) == pcSlice->getPOC()) && (pcSlice->getRefPic( eRefPicListDMV, iPdmRefIdx )->getViewIndex() == pDInfo->m_aVIdxCan))
    7709       {
    7710         for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
     7480    for( Int iRefListId = 0; iRefListId < 2 ; iRefListId++ )
     7481    {
     7482      RefPicList  eRefPicListDMV       = RefPicList( iRefListId );
     7483      Int         iNumRefPics       = pcSlice->getNumRefIdx( eRefPicListDMV );
     7484      for( Int iPdmRefIdx = 0; iPdmRefIdx < iNumRefPics; iPdmRefIdx++ )
     7485      {
     7486        if(( pcSlice->getRefPOC( eRefPicListDMV, iPdmRefIdx ) == pcSlice->getPOC()) && (pcSlice->getRefPic( eRefPicListDMV, iPdmRefIdx )->getViewIndex() == pDInfo->m_aVIdxCan))
    77117487        {
    7712           Int ioffsetDV = (iLoopCan == 0) ? 0 : 4;
    7713           abPdmAvailable[ iRefListId + 2 + (iLoopCan<<2) ] = true;
    7714           paiPdmRefIdx  [ iRefListId + 2 + (iLoopCan<<2) ] = iPdmRefIdx;
     7488          for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
     7489          {
     7490            Int ioffsetDV = (iLoopCan == 0) ? 0 : 4;
     7491            abPdmAvailable[ iRefListId + 2 + (iLoopCan<<2) ] = true;
     7492            paiPdmRefIdx  [ iRefListId + 2 + (iLoopCan<<2) ] = iPdmRefIdx;
    77157493#if H_3D_NBDV_REF
    7716           TComMv cMv = depthRefineFlag ? pDInfo->m_acDoNBDV : pDInfo->m_acNBDV;
    7717 #endif
    7718           cMv.setHor( cMv.getHor() + ioffsetDV );
     7494            TComMv cMv = depthRefineFlag ? pDInfo->m_acDoNBDV : pDInfo->m_acNBDV;
     7495#endif
     7496            cMv.setHor( cMv.getHor() + ioffsetDV );
    77197497#if H_3D_IV_MERGE
    7720           if( bIsDepth )
    7721             cMv.setHor((cMv.getHor()+2)>>2);
    7722 #endif
    7723           cMv.setVer( 0 );
    7724           clipMv( cMv );
    7725           pacPdmMv      [iRefListId + 2 + (iLoopCan<<2)] = cMv;
     7498            if( bIsDepth )
     7499            {
     7500              cMv.setHor((cMv.getHor()+2)>>2);
     7501            }
     7502#endif
     7503            cMv.setVer( 0 );
     7504            clipMv( cMv );
     7505            pacPdmMv      [iRefListId + 2 + (iLoopCan<<2)] = cMv;
     7506          }
     7507          break;
    77267508        }
    7727         break;
    7728       }
    7729     }
    7730   }
    7731   for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
    7732   {
    7733     availableMcDc[1 + (iLoopCan << 1)] = ( abPdmAvailable[2 + (iLoopCan<<2)] ? 1 : 0 ) + ( abPdmAvailable[3 + (iLoopCan<<2)] ? 2 : 0 );
    7734   }
    7735 #if QC_DEPTH_MERGE_SIMP_G0127
    7736   }
    7737 #endif
     7509      }
     7510    }
     7511    for(Int iLoopCan = 0; iLoopCan < 2; iLoopCan ++)
     7512    {
     7513      availableMcDc[1 + (iLoopCan << 1)] = ( abPdmAvailable[2 + (iLoopCan<<2)] ? 1 : 0 ) + ( abPdmAvailable[3 + (iLoopCan<<2)] ? 2 : 0 );
     7514    }
     7515  }
    77387516  return false;
    77397517}
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/TComDataCU.h

    r872 r876  
    499499#if H_3D
    500500  Void          rightShiftMergeCandList( TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours, Int* iVSPIndexTrue, InheritedVSPDisInfo*  inheritedVSPDisInfo, UInt start, UInt num, Int &iCount3DV);
    501 #if SEC_DEPTH_DV_DERIVAITON_G0074
    502501  Bool          getDispforDepth  ( UInt uiPartIdx, UInt uiPartAddr, DisInfo* cDisp);
    503 #else
    504   Bool          getDispNeighBlocks  ( UInt uiPartIdx, UInt uiPartAddr, DisInfo* cDisp);
    505 #endif
    506502  Bool          getDispMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDis, Int* iPdm );
    507503#endif
     
    743739  UInt          getCTXARPWFlag                  ( UInt   uiAbsPartIdx                                 );
    744740#endif 
    745 #if !MTK_IC_FLAG_CABAC_SIMP_G0061
    746 #if H_3D_IC
    747   UInt          getCtxICFlag                    ( UInt   uiAbsPartIdx                                 );
    748 #endif
    749 #endif
    750741  UInt          getSliceStartCU         ( UInt pos )                  { return m_sliceStartCU[pos-m_uiAbsIdxInLCU];                                                                                          }
    751742  UInt          getSliceSegmentStartCU  ( UInt pos )                  { return m_sliceSegmentStartCU[pos-m_uiAbsIdxInLCU];                                                                                   }
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/TComRdCost.cpp

    r872 r876  
    599599  cDtParam.uiComp       = 255;    // just for assert: to be sure it was set before use, since only values 0,1 or 2 are allowed.
    600600
    601 #if SCU_HS_VSD_BUGFIX_IMPROV_G0163
    602601  cDtParam.bitDepth   = g_bitDepthY;
    603 #endif
     602
    604603  Dist dist = cDtParam.DistFunc( &cDtParam );
    605604
     
    29852984  dD = ( (Double) ( dDM >> DISTORTION_PRECISION_ADJUSTMENT( g_bitDepthY - 8 ) ) ) * m_dDisparityCoeff;
    29862985
    2987 #if SCU_HS_VSD_BUGFIX_IMPROV_G0163
    29882986  Double dDepthWeight = ( pOrg[x] >=  ( (1<<(g_bitDepthY - 3)) + (1<<(g_bitDepthY - 2)) ) ? 4 : pOrg[x] > ((1<<g_bitDepthY) >> 4) ? (Float)(pOrg[x] - ((1<<g_bitDepthY) >> 4))/(Float)((1<<g_bitDepthY) >> 3) + 1 : 1.0 );
    29892987  Double dTemp = ( 0.5 * fabs(dD) * dDepthWeight * ( abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x-1+y*iVirStride ] ) + abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x+1+y*iVirStride ] ) ) );
    2990 #else
    2991   Double dTemp = ( 0.5 * fabs(dD) * ( abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x-1+y*iVirStride ] ) + abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x+1+y*iVirStride ] ) ) );
    2992 #endif 
    29932988  iTemp = (Int) (((dTemp) < 0)? (Int)((dTemp) - 0.5) : (Int)((dTemp) + 0.5));
    29942989
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r872 r876  
    32073207    for ( Int refListIdx = 0; refListIdx < ((m_eSliceType==B_SLICE) ? 2 : 1); refListIdx++ )
    32083208    {
    3209 #if MTK_ARP_REF_SELECTION_G0053
    32103209      Int diffPOC=MAX_INT;
    32113210      Int idx=-1;
    3212 #endif
    32133211      for(Int i = 0; i < getNumRefIdx(RefPicList(refListIdx)); i++ )
    32143212      {
    32153213        if ( getRefPic(RefPicList(refListIdx), i)->getPOC() != getPOC() )
    32163214        {
    3217 #if MTK_ARP_REF_SELECTION_G0053
    32183215          if( abs(getRefPic(RefPicList(refListIdx), i)->getPOC() - getPOC()) < diffPOC)
    32193216          {
     
    32213218            idx=i;
    32223219          }
    3223 #else
    3224           setFirstTRefIdx (RefPicList(refListIdx), i);
    3225           break;
    3226 #endif
    32273220        }
    3228 #if MTK_ARP_REF_SELECTION_G0053
    32293221        if(idx>=0)
    32303222        {
    32313223          setFirstTRefIdx (RefPicList(refListIdx), idx);
    32323224        }
    3233 #endif
    32343225      }
    32353226    }
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/TComSlice.h

    r872 r876  
    869869#if H_3D_SPIVMP
    870870  Int         m_iSubPULog2Size           [MAX_NUM_LAYERS   ];
    871 #endif
    872 #endif
    873 #if QC_SPIVMP_MPI_G0119
    874871  Int         m_iSubPUMPILog2Size;
     872#endif
    875873#endif
    876874#if H_3D_VSP
     
    12481246  Int     getSubPULog2Size(Int layerIdInVps)           { return m_iSubPULog2Size[layerIdInVps]; }
    12491247  Void    setSubPULog2Size(Int layerIdInVps, Int u)    { m_iSubPULog2Size[layerIdInVps] = u;}
    1250 #endif
    1251 #endif
    1252 #if QC_SPIVMP_MPI_G0119
    12531248  Int     getSubPUMPILog2Size( )           { return m_iSubPUMPILog2Size; }
    12541249  Void    setSubPUMPILog2Size( Int u )     { m_iSubPUMPILog2Size = u;    }
     1250#endif
    12551251#endif
    12561252#if H_3D_VSP
  • branches/HTM-10.1-dev0/source/Lib/TLibCommon/TypeDef.h

    r872 r876  
    8383                                              // SAIT_VSO_EST_A0033, JCT3V-A0033 modification 3
    8484                                              // LGE_WVSO_A0119
     85                                              // SCU_HS_VSD_BUGFIX_IMPROV_G0163
    8586#define H_3D_NBDV                         1   // Neighboring block disparity derivation
    8687                                              // QC_JCT3V-A0097
     
    102103                                              // SHARP_ARP_REF_CHECK_F0105        ARP reference picture selection and DPB check
    103104                                              // LGE_ARP_CTX_F0161                JCT3V-F0161
     105                                              // MTK_ARP_FLAG_CABAC_SIMP_G0061 Use 2 context for ARP flag referring to only left neighbor block in JCT3V-G0061
     106                                              // MTK_ARP_REF_SELECTION_G0053 ARP Reference picture selection in JCT3V-G0053
     107
    104108#define H_3D_IC                           1   // Illumination Compensation, JCT3V-B0045, JCT3V-C0046, JCT3V-D0060
    105109                                              // Unifying rounding offset, for IC part, JCT3V-D0135
     
    109113                                              // LGE_IC_CTX_F0160 //JCT3V-F0160
    110114                                              // SEC_ONLY_TEXTURE_IC_F0151
     115                                              // MTK_IC_FLAG_CABAC_SIMP_G0061
     116                                              // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
    111117
    112118#if H_3D_NBDV
     
    145151                                              // ETRIKHU_MERGE_REUSE_F0093 QC_DEPTH_IV_MRG_F0125, JCT3V-F0125: Depth oriented Inter-view MV candidate
    146152                                              // EC_MPI_ENABLING_MERGE_F0150, MPI flag in VPS and enabling in Merge mode
     153                                              // MTK_NBDV_IVREF_FIX_G0067      , Disable IvMC, VSP when IVREF is not available, JCT3V-G0067
     154                                              // SEC_DEPTH_DV_DERIVAITON_G0074, Simplification of DV derivation for depth, JCT3V-G0074
     155                                              // QC_DEPTH_MERGE_SIMP_G0127 Remove DV candidate and shifting candidate for depth coding
     156
    147157#define H_3D_TMVP                         1   // QC_TMVP_C0047
    148158                                              // Sony_M23639
     
    177187                                              // LGE_INTER_SDC_E0156  Enable inter SDC for depth coding
    178188#define H_3D_SPIVMP                       1   // H_3D_SPIVMP    // JCT3V-F0110: Sub-PU level inter-view motion prediction
     189                                              // SEC_SPIVMP_MCP_SIZE_G0077, Apply SPIVMP only to 2Nx2N partition, JCT3V-G0077
     190                                              // QC_SPIVMP_MPI_G0119 Sub-PU level MPI merge candidate
    179191#define H_3D_FCO                          0   // Flexible coding order for 3D
    180192
     
    279291
    280292#define MTK_DDD_G0063                     1   // Disparity derived depth coding
    281 #define HTM10RC1_FIX                           1   // Fix of DDD
     293#define HTM10RC1_FIX                      1   // Fix of DDD
    282294
    283295
     
    311323#define KHU_SIMP_SPIVMP_G0147             1  // Simplification on Sub-PU level temporal interview motion prediction
    312324
    313 #if H_3D_SPIVMP
    314 #define QC_SPIVMP_MPI_G0119               1 // Sub-PU level MPI merge candidate
    315 #endif
    316 
    317 #define QC_DEPTH_MERGE_SIMP_G0127         1 // Remove DV candidate and shifting candidate for depth coding
    318 #define SEC_IC_ARP_SIG_G0072              1   // Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
    319 #define SCU_HS_VSD_BUGFIX_IMPROV_G0163    1
    320 #define SEC_SPIVMP_MCP_SIZE_G0077         1  // Apply SPIVMP only to 2Nx2N partition, JCT3V-G0077
    321 #define SEC_DEPTH_DV_DERIVAITON_G0074     1  // Simplification of DV derivation for depth, JCT3V-G0074
    322 #define MTK_ARP_REF_SELECTION_G0053       1   // ARP Reference picture selection in JCT3V-G0053
    323 #define MTK_ARP_FLAG_CABAC_SIMP_G0061     1   // Use 2 context for ARP flag referring to only left neighbor block in JCT3V-G0061
    324 #define MTK_IC_FLAG_CABAC_SIMP_G0061      1   // Use only 1 context for IC flag in JCT3V-G0061
    325 #define MTK_NBDV_IVREF_FIX_G0067          1   // Disable IvMC, VSP when IVREF is not available, JCT3V-G0067
    326325#endif
    327326
  • branches/HTM-10.1-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r872 r876  
    19331933        READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
    19341934#if H_3D_SPIVMP
    1935 #if SEC_SPIVMP_MCP_SIZE_G0077
    19361935        READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]");     pcVPS->setSubPULog2Size(i, uiCode+3);
    1937 #else
    1938         READ_UVLC (uiCode, "log2_sub_PU_size_minus2");     pcVPS->setSubPULog2Size(i, uiCode+2);
    1939 #endif
    19401936#endif
    19411937#endif
     
    19651961        if (i!=1)
    19661962        {
    1967 #if SEC_SPIVMP_MCP_SIZE_G0077
    19681963          READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]");     pcVPS->setSubPULog2Size(i, uiCode+3);
    1969 #else
    1970           READ_UVLC (uiCode, "log2_sub_PU_size_minus2[i]");     pcVPS->setSubPULog2Size(i, uiCode+2);
    1971 #endif
    19721964        }
    19731965#endif
     
    20132005    }
    20142006  }
    2015 #if QC_SPIVMP_MPI_G0119
    20162007  READ_UVLC (uiCode, "log2_sub_PU_MPI_size_minus3");              pcVPS->setSubPUMPILog2Size( uiCode + 3 );
    2017 #endif
    20182008  READ_FLAG( uiCode, "iv_mv_scaling_flag");                       pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false );
    20192009}
  • branches/HTM-10.1-dev0/source/Lib/TLibDecoder/TDecCu.cpp

    r872 r876  
    339339      if( pcCU->getSlice()->getIsDepth())
    340340      {
    341 #if SEC_DEPTH_DV_DERIVAITON_G0074
    342341        DvInfo.bDV = m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo);
    343 #else
    344         DvInfo.bDV = m_ppcCU[uiDepth]->getDispNeighBlocks(0, 0, &DvInfo);
    345 #endif
    346342      }
    347343      else
     
    414410    m_pcEntropyDecoder->decodeMergeIndex( pcCU, 0, uiAbsPartIdx, uiDepth );
    415411    UInt uiMergeIndex = pcCU->getMergeIndex(uiAbsPartIdx);
    416 
    417 #if !SEC_IC_ARP_SIG_G0072
     412#if H_3D_ARP
     413    m_pcEntropyDecoder->decodeARPW( pcCU , uiAbsPartIdx , uiDepth );
     414#endif
    418415#if H_3D_IC
    419416    m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    420 #endif
    421 #endif
    422 #if H_3D_ARP
    423     m_pcEntropyDecoder->decodeARPW( pcCU , uiAbsPartIdx , uiDepth );
    424 #endif
    425 #if SEC_IC_ARP_SIG_G0072
    426 #if H_3D_IC
    427     m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    428 #endif
    429417#endif
    430418
  • branches/HTM-10.1-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp

    r872 r876  
    111111  pcCU->setICFlagSubParts( false , uiAbsPartIdx, 0, uiDepth );
    112112
    113 #if SEC_IC_ARP_SIG_G0072
    114113  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() || pcCU->getARPW( uiAbsPartIdx ) > 0 )
    115 #else
    116   if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() )
    117 #endif
    118114  {
    119115    return;
     
    272268      decodeMergeIndex( pcCU, uiPartIdx, uiSubPartIdx, uiDepth );
    273269      UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx);
    274 #if !SEC_IC_ARP_SIG_G0072
     270#if H_3D_ARP
     271      decodeARPW  ( pcCU, uiAbsPartIdx, uiDepth );
     272#endif
    275273#if H_3D_IC
    276274      decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    277 #endif
    278 #endif
    279 #if H_3D_ARP
    280       decodeARPW  ( pcCU, uiAbsPartIdx, uiDepth );
    281 #endif
    282 #if SEC_IC_ARP_SIG_G0072
    283 #if H_3D_IC
    284       decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    285 #endif
    286275#endif
    287276#if H_3D_DBBP
     
    440429        }
    441430      }
    442 #if !SEC_IC_ARP_SIG_G0072
     431#if H_3D_ARP
     432      decodeARPW  ( pcCU, uiAbsPartIdx, uiDepth );
     433#endif
    443434#if H_3D_IC
    444435      decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    445 #endif
    446 #endif
    447 #if H_3D_ARP
    448       decodeARPW  ( pcCU, uiAbsPartIdx, uiDepth );
    449 #endif
    450 #if SEC_IC_ARP_SIG_G0072
    451 #if H_3D_IC
    452       decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    453 #endif
    454436#endif
    455437    }
  • branches/HTM-10.1-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r872 r876  
    21892189  if( 1 == uiW )   
    21902190  {
    2191 #if MTK_ARP_FLAG_CABAC_SIMP_G0061
    21922191    m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 2 ) );
    2193 #else
    2194     m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 3 ) );
    2195 #endif
    21962192    uiW += ( 1 == uiCode ? 1 : 0 );
    21972193  }
     
    22132209{
    22142210  UInt uiSymbol = 0;
    2215 #if MTK_IC_FLAG_CABAC_SIMP_G0061
    22162211  m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, 0 ) );
    2217 #else
    2218   UInt uiCtxIC = pcCU->getCtxICFlag( uiAbsPartIdx );
    2219   m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, uiCtxIC ) );
    2220 #endif
    22212212#if !H_MV_ENC_DEC_TRAC
    22222213  DTRACE_CABAC_VL( g_nSymbolCounter++ );
  • branches/HTM-10.1-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r872 r876  
    17051705        WRITE_FLAG( pcVPS->getIvMvPredFlag         ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");
    17061706#if H_3D_SPIVMP
    1707 #if SEC_SPIVMP_MCP_SIZE_G0077
    17081707        WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]");
    1709 #else
    1710         WRITE_UVLC( pcVPS->getSubPULog2Size(i)-2, "log2_sub_PU_size_minus2[i]");
    1711 #endif
    17121708#endif
    17131709#endif
     
    17341730        if (i!=1)
    17351731        {
    1736 #if SEC_SPIVMP_MCP_SIZE_G0077
    17371732          WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]");
    1738 #else
    1739           WRITE_UVLC( pcVPS->getSubPULog2Size(i)-2, "log2_sub_PU_size_minus2[i]");
    1740 #endif
    17411733        }
    17421734#endif
     
    17711763    }
    17721764  }
    1773 #if QC_SPIVMP_MPI_G0119
    17741765  WRITE_UVLC( pcVPS->getSubPUMPILog2Size( ) - 3, "log2_sub_PU_MPI_size_minus3");
    1775 #endif
    17761766#if H_3D_TMVP
    17771767  WRITE_FLAG( pcVPS->getIvMvScalingFlag( ) ? 1 : 0 ,          "iv_mv_scaling_flag" );
  • branches/HTM-10.1-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r872 r876  
    397397#if H_3D_SPIVMP
    398398  Int      m_iSubPULog2Size;
    399 #endif
    400 #if QC_SPIVMP_MPI_G0119
    401399  Int      m_iSubPUMPILog2Size;
    402400#endif
     
    507505  Int        getSubPULog2Size                   ()                   { return m_iSubPULog2Size;}
    508506  Void       setSubPULog2Size                   (Int u)              { m_iSubPULog2Size = u; }     
    509 #endif
    510 #if QC_SPIVMP_MPI_G0119
    511507  Int        getSubPUMPILog2Size            ()               { return m_iSubPUMPILog2Size;}
    512508  Void       setSubPUMPILog2Size            (Int u)          { m_iSubPUMPILog2Size = u;   }     
  • branches/HTM-10.1-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r872 r876  
    582582          if (rpcTempCU->getSlice()->getIsDepth() )
    583583          {
    584 #if SEC_DEPTH_DV_DERIVAITON_G0074
    585584            DvInfo.bDV = rpcTempCU->getDispforDepth(0, 0, &DvInfo);
    586 #else
    587             DvInfo.bDV = rpcTempCU->getDispNeighBlocks(0, 0, &DvInfo);
    588 #endif
    589585          }
    590586          else
     
    15331529#endif
    15341530    m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx );
    1535 #if !SEC_IC_ARP_SIG_G0072
     1531#if H_3D_ARP
     1532    m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
     1533#endif
    15361534#if H_3D_IC
    15371535    m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
    1538 #endif
    1539 #endif
    1540 #if H_3D_ARP
    1541     m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
    1542 #endif
    1543 #if SEC_IC_ARP_SIG_G0072
    1544 #if H_3D_IC
    1545     m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
    1546 #endif
    15471536#endif
    15481537    finishCU(pcCU,uiAbsPartIdx,uiDepth);
     
    15701559  // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
    15711560  m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx );
    1572 #if !SEC_IC_ARP_SIG_G0072
     1561
     1562#if H_3D_ARP
     1563  m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
     1564#endif
    15731565#if H_3D_IC
    15741566  m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
    1575 #endif
    1576 #endif
    1577 #if H_3D_ARP
    1578   m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
    1579 #endif
    1580 #if SEC_IC_ARP_SIG_G0072
    1581 #if H_3D_IC
    1582   m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
    1583 #endif
    15841567#endif
    15851568#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
     
    18091792#if H_3D_ARP
    18101793  Int nARPWMax = rpcTempCU->getSlice()->getARPStepNum() - 1;
    1811 #if SEC_IC_ARP_SIG_G0072
    18121794  if( nARPWMax < 0 || !rpcTempCU->getDvInfo(0).bDV || bICFlag )
    1813 #else
    1814   if( nARPWMax < 0 || !rpcTempCU->getDvInfo(0).bDV )
    1815 #endif
    18161795  {
    18171796    nARPWMax = 0;
     
    21572136  Int nARPWMax    = rpcTempCU->getSlice()->getARPStepNum() - 1;
    21582137
    2159 #if SEC_IC_ARP_SIG_G0072
    21602138  if( nARPWMax < 0 || ePartSize != SIZE_2Nx2N || !rpcTempCU->getDvInfo(0).bDV || rpcTempCU->getICFlag(0) )
    2161 #else
    2162   if( nARPWMax < 0 || ePartSize != SIZE_2Nx2N || !rpcTempCU->getDvInfo(0).bDV  )
    2163 #endif
    21642139  {
    21652140    nARPWMax = 0;
  • branches/HTM-10.1-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r872 r876  
    151151Void TEncEntropy::encodeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    152152{
    153 #if SEC_IC_ARP_SIG_G0072
    154153  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() || pcCU->getARPW( uiAbsPartIdx ) > 0 )
    155 #else
    156   if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() )
    157 #endif
    158154  {
    159155    return;
  • branches/HTM-10.1-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r872 r876  
    10501050  if( nBinNum > 1 )
    10511051  {
    1052 #if MTK_ARP_FLAG_CABAC_SIMP_G0061
    10531052     m_pcBinIf->encodeBin( ( iW == iMaxW ) ? 1 : 0, m_cCUPUARPWSCModel.get( 0, 0, 2 ) );
    1054 #else
    1055      m_pcBinIf->encodeBin( ( iW == iMaxW ) ? 1 : 0, m_cCUPUARPWSCModel.get( 0, 0, 3 ) );
    1056 #endif
    10571053  }
    10581054#if H_MV_ENC_DEC_TRAC
     
    10721068  // get context function is here
    10731069  UInt uiSymbol = pcCU->getICFlag( uiAbsPartIdx ) ? 1 : 0;
    1074 #if MTK_IC_FLAG_CABAC_SIMP_G0061
    10751070  m_pcBinIf->encodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, 0 ) );
    1076 #else
    1077   UInt uiCtxIC  = pcCU->getCtxICFlag( uiAbsPartIdx ) ;
    1078   m_pcBinIf->encodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, uiCtxIC ) );
    1079 #endif
    10801071#if !H_MV_ENC_DEC_TRAC
    10811072  DTRACE_CABAC_VL( g_nSymbolCounter++ );
    10821073  DTRACE_CABAC_T( "\tICFlag" );
    1083   DTRACE_CABAC_T( "\tuiCtxIC: ");
    1084   DTRACE_CABAC_V( uiCtxIC );
    10851074  DTRACE_CABAC_T( "\tuiSymbol: ");
    10861075  DTRACE_CABAC_V( uiSymbol );
  • branches/HTM-10.1-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r872 r876  
    56165616    m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
    56175617    m_pcEntropyCoder->encodeMergeIndex( pcCU, 0, true );
    5618 #if !SEC_IC_ARP_SIG_G0072
     5618#if H_3D_ARP
     5619    m_pcEntropyCoder->encodeARPW( pcCU, 0 );
     5620#endif
    56195621#if H_3D_IC
    56205622    m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    5621 #endif
    5622 #endif
    5623 #if H_3D_ARP
    5624     m_pcEntropyCoder->encodeARPW( pcCU, 0 );
    5625 #endif
    5626 #if SEC_IC_ARP_SIG_G0072
    5627 #if H_3D_IC
    5628     m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    5629 #endif
    56305623#endif
    56315624    uiBits = m_pcEntropyCoder->getNumberOfWrittenBits();
     
    71767169    m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
    71777170    m_pcEntropyCoder->encodeMergeIndex(pcCU, 0, true);
    7178 #if !SEC_IC_ARP_SIG_G0072
     7171#if H_3D_ARP
     7172    m_pcEntropyCoder->encodeARPW( pcCU, 0 );
     7173#endif
    71797174#if H_3D_IC
    71807175    m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    7181 #endif
    7182 #endif
    7183 #if H_3D_ARP
    7184     m_pcEntropyCoder->encodeARPW( pcCU, 0 );
    7185 #endif
    7186 #if SEC_IC_ARP_SIG_G0072
    7187 #if H_3D_IC
    7188     m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    7189 #endif
    71907176#endif
    71917177    ruiBits += m_pcEntropyCoder->getNumberOfWrittenBits();
     
    72057191#endif
    72067192    m_pcEntropyCoder->encodePredInfo( pcCU, 0, true );
    7207 #if !SEC_IC_ARP_SIG_G0072
     7193#if H_3D_ARP
     7194    m_pcEntropyCoder->encodeARPW( pcCU , 0 );
     7195#endif
    72087196#if H_3D_IC
    72097197    m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    7210 #endif
    7211 #endif
    7212 #if H_3D_ARP
    7213     m_pcEntropyCoder->encodeARPW( pcCU , 0 );
    7214 #endif
    7215 #if SEC_IC_ARP_SIG_G0072
    7216 #if H_3D_IC
    7217     m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    7218 #endif
    72197198#endif
    72207199#if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130
Note: See TracChangeset for help on using the changeset viewer.