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


Ignore:
Timestamp:
3 Sep 2013, 19:44:30 (11 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
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.0-dev0/source/Lib/TLibCommon/TComPrediction.cpp

    r612 r613  
    28522852  Int           uiColTexIntraDir = pcColTexCU->isIntra( uiTexPartIdx ) ? pcColTexCU->getLumaIntraDir( uiTexPartIdx ) : 255;
    28532853
     2854#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     2855  assert( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 );
     2856  return g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]][uiColTexIntraDir-2].at(intraTabIdx);
     2857#else
    28542858  if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 ) { return g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]][uiColTexIntraDir-2].at(intraTabIdx); }
    28552859  else                                                     { return g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])].at(intraTabIdx).getPatternIdx(); }
     2860#endif
    28562861}
    28572862
  • branches/HTM-8.0-dev0/source/Lib/TLibCommon/TComRom.cpp

    r608 r613  
    347347{ //2x2   4x4   8x8 16x16 32x32 64x64
    348348     0,    7,   10,   11,   11,   13 };
    349 #if LGE_PKU_DMM3_OVERLAP_E0159
     349#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
    350350const UChar g_dmm3IntraTabIdxBits[6] =
    351351{ //2x2   4x4   8x8 16x16 32x32 64x64
     
    611611std::vector< std::vector< std::vector<UInt> > > g_aauiWdgLstM3;
    612612
     613#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     614Void initWedgeLists( Bool initNodeList )
     615#else
    613616Void initWedgeLists( Bool initRefinements )
     617#endif
    614618{
    615619  if( !g_dmmWedgeLists.empty() ) return;
     
    624628    g_dmmWedgeRefLists.push_back( acWedgeRefList );
    625629
     630#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     631    if( initNodeList )
     632    {
     633#endif
    626634    // create WedgeNodeList
    627635    std::vector<TComWedgeNode> acWedgeNodeList;
     
    633641        cWedgeNode.setPatternIdx( uiPos );
    634642
     643#if !LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
    635644        if( initRefinements )
    636645        {
     646#endif
    637647          UInt uiRefPos = 0;
    638648          for( Int iOffS = -1; iOffS <= 1; iOffS++ )
     
    681691            }
    682692          }
     693#if !LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
    683694        }
     695#endif
    684696        acWedgeNodeList.push_back( cWedgeNode );
    685697      }
    686698    }
    687699    g_dmmWedgeNodeLists.push_back( acWedgeNodeList );
     700#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     701  }
     702#endif
    688703  }
    689704  return;
  • branches/HTM-8.0-dev0/source/Lib/TLibCommon/TComRom.h

    r608 r613  
    174174extern       std::vector< std::vector< std::vector<UInt> > > g_aauiWdgLstM3;
    175175
     176#if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX
     177Void initWedgeLists( Bool initNodeList = false );
     178#else
    176179Void initWedgeLists( Bool initRefinements = false );
     180#endif
    177181Void createWedgeList( UInt uiWidth, UInt uiHeight, std::vector<TComWedgelet> &racWedgeList, std::vector<TComWedgeRef> &racWedgeRefList, WedgeResolution eWedgeRes );
    178182Void addWedgeletToList( TComWedgelet cWedgelet, std::vector<TComWedgelet> &racWedgeList, std::vector<TComWedgeRef> &racWedgeRefList );
  • branches/HTM-8.0-dev0/source/Lib/TLibCommon/TypeDef.h

    r612 r613  
    265265#endif
    266266#if H_3D_DIM_DMM
    267 #define LGE_PKU_DMM3_OVERLAP_E0159        1   // Removal of overlap between DMM3 and DMM1
     267#define LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 1   // Removal of overlap between DMM3 and DMM1
    268268#endif
    269269#endif
  • 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.