Ignore:
Timestamp:
14 Jul 2015, 12:31:09 (9 years ago)
Author:
tech
Message:

Merged HTM-14.1-update-dev3@1273.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.1-update-dev2/source/Lib/TLibEncoder/TEncSearch.cpp

    r1256 r1274  
    38763876//! estimation of best merge coding
    38773877Void TEncSearch::xMergeEstimation( TComDataCU* pcCU, TComYuv* pcYuvOrg, Int iPUIdx, UInt& uiInterDir, TComMvField* pacMvField, UInt& uiMergeIndex, Distortion& ruiCost, TComMvField* cMvFieldNeighbours, UChar* uhInterDirNeighbours, Int& numValidMergeCand
    3878 #if H_3D_VSP
     3878#if NH_3D_VSP
    38793879                                 , Int* vspFlag
    38803880#endif
    3881 #if H_3D_SPIVMP
     3881#if NH_3D_SPIVMP
    38823882                                 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP
    38833883#endif
     
    38913891  UInt uiDepth = pcCU->getDepth( uiAbsPartIdx );
    38923892
    3893 #if H_3D_DBBP
     3893#if NH_3D_DBBP
    38943894  DbbpTmpData* pDBBPTmpData = pcCU->getDBBPTmpData();
    38953895  if( pcCU->getDBBPFlag(0) )
     
    38983898    AOF( iPUIdx == 0 );
    38993899    AOF( pcCU->getPartitionSize(0) == SIZE_2Nx2N );
    3900     AOF( pDBBPTmpData->eVirtualPartSize != SIZE_NONE );
     3900    AOF( pDBBPTmpData->eVirtualPartSize != NUMBER_OF_PART_SIZES );
    39013901   
    39023902    // temporary change of partition size for candidate derivation
     
    39233923
    39243924  PartSize partSize = pcCU->getPartitionSize( 0 );
    3925 #if H_3D_DBBP
     3925#if NH_3D_DBBP
    39263926  if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && partSize != SIZE_2Nx2N && pcCU->getWidth( 0 ) <= 8 && pcCU->getDBBPFlag(0) == false )
    39273927#else
     
    39323932    {
    39333933      pcCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth ); // temporarily set
    3934 #if H_3D
     3934#if NH_3D_MLC
    39353935      pcCU->initAvailableFlags();
    3936       pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand);
     3936      pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand );
    39373937      pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
    3938 #if H_3D_SPIVMP
     3938#if NH_3D_SPIVMP
    39393939        , pcMvFieldSP, puhInterDirSP
    39403940#endif
     
    39433943
    39443944      pcCU->buildMCL( cMvFieldNeighbours,uhInterDirNeighbours
    3945 #if H_3D_VSP
     3945#if NH_3D_VSP
    39463946        , vspFlag
    39473947#endif
    3948 #if H_3D_SPIVMP
     3948#if NH_3D_SPIVMP
    39493949        , pbSPIVMPFlag
    39503950#endif
    3951                                         , numValidMergeCand
     3951        , numValidMergeCand
    39523952        );
    39533953#else
     
    39593959  else
    39603960  {
    3961 #if H_3D
     3961#if NH_3D_MLC
    39623962    pcCU->initAvailableFlags();
    3963     pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand);
     3963    pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
    39643964    pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours
    3965 #if H_3D_SPIVMP
     3965#if NH_3D_SPIVMP
    39663966      , pcMvFieldSP, puhInterDirSP
    39673967#endif
     
    39703970
    39713971    pcCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours
    3972 #if H_3D_VSP
     3972#if NH_3D_VSP
    39733973      , vspFlag
    39743974#endif
    3975 #if H_3D_SPIVMP
     3975#if NH_3D_SPIVMP
    39763976      , pbSPIVMPFlag
    39773977#endif
    3978                                       , numValidMergeCand
     3978      , numValidMergeCand
    39793979      );
    39803980#else
     
    39853985  xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
    39863986
    3987 #if H_3D_DBBP
     3987#if NH_3D_DBBP
    39883988  if( pcCU->getDBBPFlag(0) )
    39893989  {
     
    40084008
    40094009    PartSize ePartSize = pcCU->getPartitionSize( 0 );
    4010 #if H_3D_VSP
     4010#if NH_3D_VSP
    40114011    pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
    40124012#endif
    40134013
    4014 #if H_3D_SPIVMP
     4014#if NH_3D_SPIVMP
    40154015    pcCU->setSPIVMPFlagSubParts( pbSPIVMPFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ));
    40164016    if (pbSPIVMPFlag[uiMergeCand])
     
    40314031    else
    40324032#endif
    4033 #if H_3D_VSP
    4034 #if H_3D_DBBP
     4033#if NH_3D_VSP
     4034#if NH_3D_DBBP
    40354035      if ( vspFlag[uiMergeCand] && !pcCU->getDBBPFlag(0) )
    40364036#else
     
    40684068    pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
    40694069    pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx );
    4070 #if H_3D_VSP
     4070#if NH_3D_VSP
    40714071      }
    40724072#endif
     
    41794179  Distortion   biPDistTemp = std::numeric_limits<Distortion>::max();
    41804180
    4181 #if H_3D_IV_MERGE
     4181#if NH_3D_IV_MERGE
    41824182  TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS_MEM << 1]; // double length for mv of both lists
    41834183  UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS_MEM];
     
    42144214
    42154215    pcCU->getPartIndexAndSize( iPartIdx, uiPartAddr, iRoiWidth, iRoiHeight );
    4216 #if H_3D_VSP
     4216#if NH_3D_VSP
    42174217    pcCU->setVSPFlagSubParts( 0, uiPartAddr, iPartIdx, pcCU->getDepth(uiPartAddr) );
    42184218#endif
     
    45574557    } // end if bTestNormalMC
    45584558#endif
    4559 #if H_3D_DBBP
     4559#if NH_3D_DBBP
    45604560    // test merge mode for DBBP (2Nx2N)
    45614561    if ( pcCU->getPartitionSize( uiPartAddr ) != SIZE_2Nx2N || pcCU->getDBBPFlag(0) )
     
    45974597      Distortion uiMRGCost = std::numeric_limits<Distortion>::max();
    45984598
    4599 #if H_3D_VSP
     4599#if NH_3D_VSP
    46004600      Int vspFlag[MRG_MAX_NUM_CANDS_MEM];
    46014601      memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM);
     
    46064606      DisInfo OriginalDvInfo = pcCU->getDvInfo(uiAbsPartIdx);
    46074607#endif
    4608 #if H_3D_SPIVMP
     4608#if NH_3D_SPIVMP
    46094609      Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM];
    46104610      memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM);
    46114611      TComMvField*  pcMvFieldSP;
    46124612      UChar* puhInterDirSP;
    4613       pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartition()*2];
    4614       puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartition()];
    4615 #endif
    4616       xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours
    4617 
    4618 #if H_3D_VSP
     4613      pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartitionsInCtu()*2];
     4614      puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartitionsInCtu()];
     4615#endif
     4616      xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand
     4617#if NH_3D_VSP
    46194618                      , vspFlag
    46204619#endif
    4621 #if H_3D_SPIVMP
     4620#if NH_3D_SPIVMP
    46224621                      , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
    46234622#endif
    4624 , numValidMergeCand);
     4623                      );
    46254624
    46264625      if ( uiMRGCost < uiMECost )
     
    46294628        pcCU->setMergeFlagSubParts ( true,          uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    46304629        pcCU->setMergeIndexSubParts( uiMRGIndex,    uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    4631 #if H_3D_VSP
     4630#if NH_3D_VSP
    46324631        pcCU->setVSPFlagSubParts( vspFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    46334632#endif
    4634 #if H_3D_SPIVMP
     4633#if NH_3D_SPIVMP
    46354634        pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 
    46364635        if (bSPIVMPFlag[uiMRGIndex]!=0)
     
    46554654        else
    46564655#endif
    4657 #if H_3D_VSP
    4658 #if H_3D_DBBP
     4656#if NH_3D_VSP
     4657#if NH_3D_DBBP
    46594658        if ( vspFlag[uiMRGIndex] && !pcCU->getDBBPFlag(uiPartAddr) )
    46604659#else
     
    46924691        pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMRGMvField[0], ePartSize, uiPartAddr, 0, iPartIdx );
    46934692        pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx );
     4693#if NH_3D_VSP
     4694          }
     4695#endif
    46944696#if H_3D
    46954697          }
     
    47054707      else
    47064708      {
    4707 #if H_3D_SPIVMP       
     4709#if NH_3D_SPIVMP       
    47084710        pcCU->setSPIVMPFlagSubParts(0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    47094711#endif
     
    47114713        pcCU->setMergeFlagSubParts( false,        uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    47124714        pcCU->setInterDirSubParts ( uiMEInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    4713 #if H_3D_VSP
     4715#if NH_3D_VSP
    47144716        pcCU->setVSPFlagSubParts ( 0,             uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    47154717        pcCU->setDvInfoSubParts(OriginalDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     
    47184720        pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMEMvField[1], ePartSize, uiPartAddr, 0, iPartIdx );
    47194721      }
    4720 #if H_3D_SPIVMP
     4722#if NH_3D_SPIVMP
    47214723      delete[] pcMvFieldSP;
    47224724      delete[] puhInterDirSP;
     
    47544756  {
    47554757
    4756 #if H_3D_DBBP
     4758#if NH_3D_DBBP
    47574759    DbbpTmpData* pDBBPTmpData = pcCU->getDBBPTmpData();
    47584760    if( pcCU->getDBBPFlag(0) )
     
    47614763      AOF( uiPartIdx == 0 );
    47624764      AOF( pcCU->getPartitionSize(0) == SIZE_2Nx2N );
    4763       AOF( pDBBPTmpData->eVirtualPartSize != SIZE_NONE );
     4765      AOF( pDBBPTmpData->eVirtualPartSize != NUMBER_OF_PART_SIZES );
    47644766      AOF( iRoiWidth == iRoiHeight );
    47654767     
     
    47864788
    47874789    pcCU->fillMvpCand( uiPartIdx, uiPartAddr, eRefPicList, iRefIdx, pcAMVPInfo );
    4788 #if H_3D_DBBP
     4790#if NH_3D_DBBP
    47894791    if( pcCU->getDBBPFlag(0) )
    47904792    {
     
    50145016  if ( pcCU->getSlice()->testWeightPred() && pcCU->getSlice()->getSliceType()==P_SLICE )
    50155017  {
    5016     xPredInterBlk( COMPONENT_Y, pcCU, pcPicYuvRef, uiPartAddr, &cMvCand, iSizeX, iSizeY, pcTemplateCand, true, pcCU->getSlice()->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA) );
     5018    xPredInterBlk( COMPONENT_Y, pcCU, pcPicYuvRef, uiPartAddr, &cMvCand, iSizeX, iSizeY, pcTemplateCand, true, pcCU->getSlice()->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA)
     5019#if NH_3D_ARP
     5020      , false //add this for IC, otherwise, it could be removed
     5021#endif
     5022      );
    50175023  }
    50185024  else
    50195025  {
    50205026    xPredInterBlk( COMPONENT_Y, pcCU, pcPicYuvRef, uiPartAddr, &cMvCand, iSizeX, iSizeY, pcTemplateCand, false, pcCU->getSlice()->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA)
    5021 #if H_3D_ARP
     5027#if NH_3D_ARP
    50225028      , false
    50235029#endif
     
    51145120
    51155121  m_pcRdCost->setPredictor  ( *pcMvPred );
    5116 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5122#if NH_3D_INTEGER_MV_DEPTH
    51175123  if( pcCU->getSlice()->getIsDepth() )
    51185124  {
     
    51235129#endif
    51245130    m_pcRdCost->setCostScale  ( 2 );   
    5125 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5131#if NH_3D_INTEGER_MV_DEPTH
    51265132  }
    51275133#endif
     
    51505156
    51515157  m_pcRdCost->getMotionCost( true, 0, pcCU->getCUTransquantBypass(uiPartAddr) );
    5152 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5158#if NH_3D_INTEGER_MV_DEPTH
    51535159  if( ! pcCU->getSlice()->getIsDepth() )
    51545160  {
     
    51635169  rcMv += (cMvHalf <<= 1);
    51645170  rcMv +=  cMvQter;
    5165 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5171#if NH_3D_INTEGER_MV_DEPTH
    51665172  }
    51675173#endif
    51685174
    51695175  UInt uiMvBits = m_pcRdCost->getBits( rcMv.getHor(), rcMv.getVer() );
    5170 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5176#if NH_3D_INTEGER_MV_DEPTH
    51715177  if( pcCU->getSlice()->getIsDepth() )
    51725178  {
     
    51825188{
    51835189  Int  iMvShift = 2;
    5184 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5190#if NH_3D_INTEGER_MV_DEPTH
    51855191  if( pcCU->getSlice()->getIsDepth() )
    51865192  {
     
    53405346  UInt uiSearchRange = m_iSearchRange;
    53415347  pcCU->clipMv( rcMv );
    5342 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5348#if NH_3D_INTEGER_MV_DEPTH
    53435349  if( ! pcCU->getSlice()->getIsDepth() )
    53445350#endif
     
    53605366      TComMv cMv = m_acMvPredictors[index];
    53615367      pcCU->clipMv( cMv );
    5362 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5368#if NH_3D_INTEGER_MV_DEPTH
    53635369      if( ! pcCU->getSlice()->getIsDepth() )
    53645370      {     
    53655371#endif
    53665372        cMv >>= 2;
    5367 #if NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC
     5373#if NH_3D_INTEGER_MV_DEPTH
    53685374      }
    53695375#endif
     
    57885794    m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
    57895795    m_pcEntropyCoder->encodeMergeIndex( pcCU, 0, true );
    5790 #if H_3D_ARP
     5796#if NH_3D_ARP
    57915797    m_pcEntropyCoder->encodeARPW( pcCU, 0 );
    57925798#endif
     
    58845890  const Double zeroCost     = (pcCU->isLosslessCoded( 0 )) ? (nonZeroCost+1) : (m_pcRdCost->calcRdCost( zeroResiBits, zeroDistortion ));
    58855891#endif
    5886 #if H_3D_SPIVMP
    5887     if ( dZeroCost < dCost || pcCU->getQtRootCbf(0)==0)
     5892#if NH_3D_SPIVMP
     5893    if ( zeroCost < nonZeroCost || pcCU->getQtRootCbf(0)==0)
    58885894#else
    58895895  if ( zeroCost < nonZeroCost || !pcCU->getQtRootCbf(0) )
     
    71047110    m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
    71057111    m_pcEntropyCoder->encodeMergeIndex(pcCU, 0, true);
    7106 #if H_3D_ARP
     7112#if NH_3D_ARP
    71077113    m_pcEntropyCoder->encodeARPW( pcCU, 0 );
    71087114#endif
     
    71317137    m_pcEntropyCoder->encodeSDCFlag( pcCU, 0, true );
    71327138#endif
    7133 #if H_3D_ARP
     7139#if NH_3D_ARP
    71347140    m_pcEntropyCoder->encodeARPW( pcCU , 0  );
    71357141#endif
     
    71377143    m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    71387144#endif
    7139 #if H_3D
     7145#if NH_3D_DBBP
    71407146    m_pcEntropyCoder->encodeDBBPFlag( pcCU, 0, true );
    71417147#endif
Note: See TracChangeset for help on using the changeset viewer.