Changeset 724 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncSearch.cpp


Ignore:
Timestamp:
30 Nov 2013, 12:29:49 (11 years ago)
Author:
tech
Message:

Merged HTM-8.2-dev0@723.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncSearch.cpp

    r655 r724  
    11261126      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11271127      {
     1128#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     1129          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     1130          {
     1131              pResi[ uiX ] = pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pOrg[ uiX ] ) - pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] );
     1132          }
     1133          else
     1134          {
     1135              pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
     1136          }
     1137#else
    11281138        pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
     1139#endif
    11291140      }
    11301141      pOrg  += uiStride;
     
    11901201      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11911202      {
     1203#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     1204          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     1205          {
     1206              pReco    [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
     1207          }
     1208          else
     1209          {
     1210              pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     1211          }
     1212#else
    11921213        pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     1214#endif
    11931215        pRecQt   [ uiX ] = pReco[ uiX ];
    11941216        pRecIPred[ uiX ] = pReco[ uiX ];
     
    28762898              biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]);
    28772899            } break;
     2900#if !SEC_DMM3_RBC_F0147
    28782901          case( DMM3_IDX ):
    28792902            {
     
    28932916              }
    28942917            } break;
     2918#endif
    28952919          case( DMM4_IDX ):
    28962920            {
     
    29282952        {
    29292953          Pel deltaDC1 = 0; Pel deltaDC2 = 0;
     2954#if QC_DIM_DELTADC_UNIFY_F0132
     2955          xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 );
     2956#else
    29302957          xSearchRbcDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 );
     2958#endif
    29312959          pcCU->setDimDeltaDC( RBC_IDX, 0, uiPartOffset, deltaDC1 );
    29322960          pcCU->setDimDeltaDC( RBC_IDX, 1, uiPartOffset, deltaDC2 );
     
    29753003      Bool bTestZeroResi = false;
    29763004#if H_3D_DIM_ENC
     3005#if LGE_BUGFIX_F0158
     3006      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && !pcCU->getSlice()->isIRAP();
     3007#else
    29773008      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->isIRAP();
     3009#endif
    29783010#endif
    29793011#if H_3D_DIM_SDC
     
    35843616                                 , InheritedVSPDisInfo*  inheritedVSPDisInfo
    35853617#endif
     3618#if MTK_SPIVMP_F0110
     3619                                 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP
     3620#endif
    35863621                                 , Int& numValidMergeCand
    35873622                                 )
     
    35993634    if ( iPUIdx == 0 )
    36003635    {
     3636#if ETRIKHU_MERGE_REUSE_F0093
     3637      pcCU->initAvailableFlags();
     3638      pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand);
     3639      pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
     3640#if H_3D_VSP
     3641                                        , vspFlag
     3642                                        , inheritedVSPDisInfo
     3643#endif
     3644#if MTK_SPIVMP_F0110
     3645                                        , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     3646#endif
     3647                                        , numValidMergeCand
     3648        );
     3649#else
    36013650      pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
    36023651#if H_3D_VSP
     
    36063655                                   , numValidMergeCand
    36073656                                   );
     3657#endif
    36083658    }
    36093659    pcCU->setPartSizeSubParts( partSize, 0, uiDepth );
     
    36113661  else
    36123662  {
     3663#if ETRIKHU_MERGE_REUSE_F0093
     3664    pcCU->initAvailableFlags();
     3665    pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand);
     3666    pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours
     3667#if H_3D_VSP
     3668                                      , vspFlag
     3669                                      , inheritedVSPDisInfo
     3670#endif
     3671#if MTK_SPIVMP_F0110
     3672                                      , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     3673#endif
     3674                                      , numValidMergeCand
     3675      );
     3676#else
    36133677    pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours
    36143678#if H_3D_VSP
     
    36183682                                 , numValidMergeCand
    36193683                                 );
     3684#endif
    36203685  }
    36213686#if H_3D_VSP
     
    36353700      PartSize ePartSize = pcCU->getPartitionSize( 0 );
    36363701
    3637       pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
    3638       pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
     3702#if MTK_SPIVMP_F0110
     3703      pcCU->setSPIVMPFlagSubParts( pbSPIVMPFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ));
     3704      if (pbSPIVMPFlag[uiMergeCand])
     3705      {
     3706        UInt uiSPAddr;
     3707
     3708        Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight;
     3709
     3710        pcCU->getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight);
     3711
     3712        for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++)
     3713        {
     3714          pcCU->getSPAbsPartIdx(uiAbsPartIdx, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr);
     3715          pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight);
     3716          pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight);
     3717        }
     3718      }
     3719      else
     3720      {
     3721#endif
     3722        pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
     3723        pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
     3724#if MTK_SPIVMP_F0110
     3725      }
     3726#endif
    36393727
    36403728#if H_3D_VSP
     
    43134401      DisInfo OriginalDvInfo = pcCU->getDvInfo(uiAbsPartIdx);
    43144402#endif
    4315 
     4403#if MTK_SPIVMP_F0110
     4404      Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM];
     4405      memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM);
     4406      TComMvField*  pcMvFieldSP;
     4407      UChar* puhInterDirSP;
     4408      pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartition()*2];
     4409      puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartition()];
     4410#endif
    43164411      xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours
    43174412#if H_3D_VSP
     
    43194414                      , inheritedVSPDisInfo
    43204415#endif
     4416#if MTK_SPIVMP_F0110
     4417                      , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     4418#endif
    43214419                      , numValidMergeCand
    43224420                      );
     
    43304428        pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    43314429#endif
    4332         pcCU->setInterDirSubParts  ( uiMRGInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    4333         {
    4334           pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMRGMvField[0], ePartSize, uiPartAddr, 0, iPartIdx );
    4335           pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx );
    4336         }
     4430#if MTK_SPIVMP_F0110
     4431        pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 
     4432        if (bSPIVMPFlag[uiMRGIndex]!=0)
     4433        {
     4434          UInt uiSPAddr;
     4435
     4436          Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight;
     4437
     4438          pcCU->getSPPara(iRoiWidth, iRoiHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight);
     4439
     4440          for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++)
     4441          {
     4442            pcCU->getSPAbsPartIdx(uiPartAddr, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr);
     4443            pcCU->setInterDirSP(puhInterDirSP[iPartitionIdx], uiSPAddr, iSPWidth, iSPHeight);
     4444            pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight);
     4445            pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight);
     4446          }
     4447
     4448          if ( pcCU->getInterDir(uiPartAddr) == 3 && pcCU->isBipredRestriction(iPartIdx) )
     4449          {
     4450            pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMv( TComMv(0,0), ePartSize, uiPartAddr, 0, iPartIdx);
     4451            pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllRefIdx( -1, ePartSize, uiPartAddr, 0, iPartIdx);
     4452            pcCU->setInterDirSubParts( 1, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ));
     4453          }
     4454
     4455        }
     4456        else
     4457        {
     4458#endif
     4459          pcCU->setInterDirSubParts  ( uiMRGInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     4460          {
     4461            pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMRGMvField[0], ePartSize, uiPartAddr, 0, iPartIdx );
     4462            pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx );
     4463          }
     4464#if MTK_SPIVMP_F0110
     4465        }
     4466#endif
    43374467
    43384468        pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvd    ( cMvZero,            ePartSize, uiPartAddr, 0, iPartIdx );
     
    43464476      else
    43474477      {
     4478#if MTK_SPIVMP_F0110       
     4479        pcCU->setSPIVMPFlagSubParts(0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     4480#endif
    43484481        // set ME result
    43494482        pcCU->setMergeFlagSubParts( false,        uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     
    43584491        }
    43594492      }
     4493#if MTK_SPIVMP_F0110
     4494      delete pcMvFieldSP;
     4495      delete puhInterDirSP;
     4496#endif
    43604497    }
    43614498
     
    52705407      dZeroCost = dCost + 1;
    52715408    }
     5409#if MTK_SPIVMP_F0110
     5410    if ( dZeroCost < dCost || pcCU->getQtRootCbf(0)==0)
     5411#else
    52725412    if ( dZeroCost < dCost )
     5413#endif
    52735414    {
    52745415      dCost        = dZeroCost;
     
    73007441}
    73017442
     7443#if !SEC_DMM3_RBC_F0147
    73027444Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir )
    73037445{
     
    73367478  cPredYuv.destroy();
    73377479}
    7338 
     7480#endif
    73397481#endif
    73407482#if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.