Changeset 613 in 3DVCSoftware for branches/HTM-8.0-dev0/source/Lib/TLibEncoder


Ignore:
Timestamp:
3 Sep 2013, 19:44:30 (12 years ago)
Author:
hhi
Message:

LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX: Fix for LGE_PKU_DMM3_OVERLAP_E0159, now including all DMM3 overlap related code.

Location:
branches/HTM-8.0-dev0/source/Lib/TLibEncoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.0-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r612 r613  
    28932893          case( DMM3_IDX ):
    28942894            {
    2895 #if LGE_PKU_DMM3_OVERLAP_E0159
     2895#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
    28962896              TComPic*      pcPicTex = pcCU->getSlice()->getTexturePic();
    28972897              TComDataCU* pcColTexCU = pcPicTex->getCU( pcCU->getAddr() );
     
    29032903#endif
    29042904              UInt uiIntraTabIdx = 0;
     2905#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     2906              xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx, uiColTexIntraDir );
     2907#else
    29052908              xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx );
     2909#endif
    29062910              pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dmmType, uiPartOffset, uiDepth + uiInitTrDepth );
    29072911              pcCU->setDmm3IntraTabIdxSubParts( uiIntraTabIdx, uiPartOffset, uiDepth + uiInitTrDepth );
    29082912              biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]);
    2909 #if LGE_PKU_DMM3_OVERLAP_E0159
     2913#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
    29102914              }
    29112915#endif
     
    74297433#endif
    74307434
    7431 Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx )
     7435#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     7436Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir )
    74327437{
    74337438  ruiTabIdx       = 0;
     
    74467451  Pel refDC1 = 0; Pel refDC2 = 0;
    74477452
     7453  std::vector< std::vector<UInt> > pauiWdgLstSz = g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]];
     7454  std::vector<UInt>* pauiWdgLst = &pauiWdgLstSz[colTexIntraDir-2];
     7455  for( UInt uiIdxW = 0; uiIdxW < pauiWdgLst->size(); uiIdxW++ )
     7456  {
     7457    UInt uiIdx     =   pauiWdgLst->at(uiIdxW);
     7458    TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiIdx));
     7459    xCalcBiSegDCs  ( piRef,  uiRefStride,  pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );
     7460    xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );
     7461
     7462    UInt uiActDist = m_pcRdCost->getDistPart( g_bitDepthY, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, TEXT_LUMA, DF_SAD );
     7463    if( uiActDist < uiBestDist || uiBestDist == MAX_UINT )
     7464    {
     7465      uiBestDist     = uiActDist;
     7466      ruiTabIdx      = uiIdx;
     7467      ruiIntraTabIdx = uiIdxW;
     7468    }
     7469  }
     7470  cPredYuv.destroy();
     7471}
     7472#else
     7473Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx )
     7474{
     7475  ruiTabIdx       = 0;
     7476  ruiIntraTabIdx  = 0;
     7477
     7478  // local pred buffer
     7479  TComYuv cPredYuv;
     7480  cPredYuv.create( uiWidth, uiHeight );
     7481  cPredYuv.clear();
     7482  Pel* piPred = cPredYuv.getLumaAddr();
     7483  UInt uiPredStride = cPredYuv.getStride();
     7484
     7485  // wedge search
     7486  UInt uiBestDist = MAX_UINT;
     7487  WedgeList* pacWedgeList = &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])];
     7488  Pel refDC1 = 0; Pel refDC2 = 0;
     7489
    74487490  TComPic*      pcPicTex = pcCU->getSlice()->getTexturePic();
    74497491  assert( pcPicTex != NULL );
     
    74967538  cPredYuv.destroy();
    74977539}
     7540#endif
    74987541#endif
    74997542#if H_3D_DIM_RBC
  • branches/HTM-8.0-dev0/source/Lib/TLibEncoder/TEncSearch.h

    r612 r613  
    355355  Void xSearchDmm2Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd );
    356356#endif
     357#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     358  Void xSearchDmm3Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir );
     359#else
    357360  Void xSearchDmm3Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx );
     361#endif
    358362#endif
    359363#if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.