Changeset 613 in 3DVCSoftware
- Timestamp:
- 3 Sep 2013, 19:44:30 (11 years ago)
- 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 2852 2852 Int uiColTexIntraDir = pcColTexCU->isIntra( uiTexPartIdx ) ? pcColTexCU->getLumaIntraDir( uiTexPartIdx ) : 255; 2853 2853 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 2854 2858 if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 ) { return g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]][uiColTexIntraDir-2].at(intraTabIdx); } 2855 2859 else { return g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])].at(intraTabIdx).getPatternIdx(); } 2860 #endif 2856 2861 } 2857 2862 -
branches/HTM-8.0-dev0/source/Lib/TLibCommon/TComRom.cpp
r608 r613 347 347 { //2x2 4x4 8x8 16x16 32x32 64x64 348 348 0, 7, 10, 11, 11, 13 }; 349 #if LGE_PKU_DMM3_OVERLAP_E0159 349 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 350 350 const UChar g_dmm3IntraTabIdxBits[6] = 351 351 { //2x2 4x4 8x8 16x16 32x32 64x64 … … 611 611 std::vector< std::vector< std::vector<UInt> > > g_aauiWdgLstM3; 612 612 613 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 614 Void initWedgeLists( Bool initNodeList ) 615 #else 613 616 Void initWedgeLists( Bool initRefinements ) 617 #endif 614 618 { 615 619 if( !g_dmmWedgeLists.empty() ) return; … … 624 628 g_dmmWedgeRefLists.push_back( acWedgeRefList ); 625 629 630 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 631 if( initNodeList ) 632 { 633 #endif 626 634 // create WedgeNodeList 627 635 std::vector<TComWedgeNode> acWedgeNodeList; … … 633 641 cWedgeNode.setPatternIdx( uiPos ); 634 642 643 #if !LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 635 644 if( initRefinements ) 636 645 { 646 #endif 637 647 UInt uiRefPos = 0; 638 648 for( Int iOffS = -1; iOffS <= 1; iOffS++ ) … … 681 691 } 682 692 } 693 #if !LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 683 694 } 695 #endif 684 696 acWedgeNodeList.push_back( cWedgeNode ); 685 697 } 686 698 } 687 699 g_dmmWedgeNodeLists.push_back( acWedgeNodeList ); 700 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 701 } 702 #endif 688 703 } 689 704 return; -
branches/HTM-8.0-dev0/source/Lib/TLibCommon/TComRom.h
r608 r613 174 174 extern std::vector< std::vector< std::vector<UInt> > > g_aauiWdgLstM3; 175 175 176 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 177 Void initWedgeLists( Bool initNodeList = false ); 178 #else 176 179 Void initWedgeLists( Bool initRefinements = false ); 180 #endif 177 181 Void createWedgeList( UInt uiWidth, UInt uiHeight, std::vector<TComWedgelet> &racWedgeList, std::vector<TComWedgeRef> &racWedgeRefList, WedgeResolution eWedgeRes ); 178 182 Void addWedgeletToList( TComWedgelet cWedgelet, std::vector<TComWedgelet> &racWedgeList, std::vector<TComWedgeRef> &racWedgeRefList ); -
branches/HTM-8.0-dev0/source/Lib/TLibCommon/TypeDef.h
r612 r613 265 265 #endif 266 266 #if H_3D_DIM_DMM 267 #define LGE_PKU_DMM3_OVERLAP_E0159 267 #define LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 1 // Removal of overlap between DMM3 and DMM1 268 268 #endif 269 269 #endif -
branches/HTM-8.0-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
r612 r613 2893 2893 case( DMM3_IDX ): 2894 2894 { 2895 #if LGE_PKU_DMM3_OVERLAP_E0159 2895 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 2896 2896 TComPic* pcPicTex = pcCU->getSlice()->getTexturePic(); 2897 2897 TComDataCU* pcColTexCU = pcPicTex->getCU( pcCU->getAddr() ); … … 2903 2903 #endif 2904 2904 UInt uiIntraTabIdx = 0; 2905 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 2906 xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx, uiColTexIntraDir ); 2907 #else 2905 2908 xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx ); 2909 #endif 2906 2910 pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dmmType, uiPartOffset, uiDepth + uiInitTrDepth ); 2907 2911 pcCU->setDmm3IntraTabIdxSubParts( uiIntraTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 2908 2912 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 2909 #if LGE_PKU_DMM3_OVERLAP_E0159 2913 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 2910 2914 } 2911 2915 #endif … … 7429 7433 #endif 7430 7434 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 7436 Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir ) 7432 7437 { 7433 7438 ruiTabIdx = 0; … … 7446 7451 Pel refDC1 = 0; Pel refDC2 = 0; 7447 7452 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 7473 Void 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 7448 7490 TComPic* pcPicTex = pcCU->getSlice()->getTexturePic(); 7449 7491 assert( pcPicTex != NULL ); … … 7496 7538 cPredYuv.destroy(); 7497 7539 } 7540 #endif 7498 7541 #endif 7499 7542 #if H_3D_DIM_RBC -
branches/HTM-8.0-dev0/source/Lib/TLibEncoder/TEncSearch.h
r612 r613 355 355 Void xSearchDmm2Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd ); 356 356 #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 357 360 Void xSearchDmm3Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx ); 361 #endif 358 362 #endif 359 363 #if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.