Changeset 647 in 3DVCSoftware for branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder
- Timestamp:
- 19 Oct 2013, 17:30:33 (11 years ago)
- Location:
- branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder/TEncCu.cpp
r646 r647 517 517 if(!bSliceEnd && !bSliceStart && bInsidePicture ) 518 518 { 519 #if MTK_FAST_TEXTURE_ENCODING_E0173519 #if H_3D_FAST_TEXTURE_ENCODIN 520 520 Bool bIVFMerge = false; 521 521 Int iIVFMaxD = 0; … … 588 588 } 589 589 } 590 #if MTK_FAST_TEXTURE_ENCODING_E0173590 #if H_3D_FAST_TEXTURE_ENCODIN 591 591 if(rpcTempCU->getSlice()->getViewIndex() && !rpcTempCU->getSlice()->getIsDepth()) 592 592 { … … 612 612 rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth); 613 613 #endif 614 #if MTK_FAST_TEXTURE_ENCODING_E0173614 #if H_3D_FAST_TEXTURE_ENCODIN 615 615 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFMD ); rpcTempCU->initEstData( uiDepth, iQP );//by Competition for inter_2Nx2N 616 616 #else … … 626 626 #endif 627 627 xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU, &earlyDetectionSkipMode );//by Merge for inter_2Nx2N 628 #if MTK_FAST_TEXTURE_ENCODING_E0173628 #if H_3D_FAST_TEXTURE_ENCODIN 629 629 bFMD = bIVFMerge && rpcBestCU->isSkipped(0); 630 630 #endif … … 652 652 rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth); 653 653 #endif 654 #if MTK_FAST_TEXTURE_ENCODING_E0173654 #if H_3D_FAST_TEXTURE_ENCODIN 655 655 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFMD ); rpcTempCU->initEstData( uiDepth, iQP ); 656 656 #else … … 760 760 ) 761 761 { 762 #if MTK_FAST_TEXTURE_ENCODING_E0173762 #if H_3D_FAST_TEXTURE_ENCODIN 763 763 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFMD ); 764 764 #else … … 780 780 ) 781 781 { 782 #if MTK_FAST_TEXTURE_ENCODING_E0173782 #if H_3D_FAST_TEXTURE_ENCODIN 783 783 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFMD ); 784 784 #else … … 800 800 ) 801 801 { 802 #if MTK_FAST_TEXTURE_ENCODING_E0173802 #if H_3D_FAST_TEXTURE_ENCODIN 803 803 xCheckRDCostInter ( rpcBestCU, rpcTempCU, SIZE_2NxN, bFMD ); 804 804 #else … … 839 839 ) 840 840 { 841 #if MTK_FAST_TEXTURE_ENCODING_E0173841 #if H_3D_FAST_TEXTURE_ENCODIN 842 842 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFMD ); 843 843 #else … … 859 859 ) 860 860 { 861 #if MTK_FAST_TEXTURE_ENCODING_E0173861 #if H_3D_FAST_TEXTURE_ENCODIN 862 862 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFMD ); 863 863 #else … … 883 883 ) 884 884 { 885 #if MTK_FAST_TEXTURE_ENCODING_E0173885 #if H_3D_FAST_TEXTURE_ENCODIN 886 886 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFMD, true ); 887 887 #else … … 903 903 ) 904 904 { 905 #if MTK_FAST_TEXTURE_ENCODING_E0173905 #if H_3D_FAST_TEXTURE_ENCODIN 906 906 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFMD, true ); 907 907 #else … … 929 929 ) 930 930 { 931 #if MTK_FAST_TEXTURE_ENCODING_E0173931 #if H_3D_FAST_TEXTURE_ENCODIN 932 932 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFMD ); 933 933 #else … … 949 949 ) 950 950 { 951 #if MTK_FAST_TEXTURE_ENCODING_E0173951 #if H_3D_FAST_TEXTURE_ENCODIN 952 952 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFMD ); 953 953 #else … … 969 969 ) 970 970 { 971 #if MTK_FAST_TEXTURE_ENCODING_E0173971 #if H_3D_FAST_TEXTURE_ENCODIN 972 972 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFMD, true ); 973 973 #else … … 989 989 ) 990 990 { 991 #if MTK_FAST_TEXTURE_ENCODING_E0173991 #if H_3D_FAST_TEXTURE_ENCODIN 992 992 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFMD, true ); 993 993 #else … … 1040 1040 #endif 1041 1041 } 1042 #if MTK_FAST_TEXTURE_ENCODING_E01731042 #if H_3D_FAST_TEXTURE_ENCODIN 1043 1043 if(!bFMD) 1044 1044 { … … 1122 1122 } 1123 1123 } 1124 #if MTK_FAST_TEXTURE_ENCODING_E01731124 #if H_3D_FAST_TEXTURE_ENCODIN 1125 1125 } 1126 1126 #endif … … 1167 1167 bSubBranch = true; 1168 1168 } 1169 #if MTK_FAST_TEXTURE_ENCODING_E01731169 #if H_3D_FAST_TEXTURE_ENCODIN 1170 1170 if(rpcBestCU->getSlice()->getViewIndex() && !rpcBestCU->getSlice()->getIsDepth() && (uiDepth >=iIVFMaxD) && rpcBestCU->isSkipped(0)) 1171 1171 { … … 2044 2044 2045 2045 #if AMP_MRG 2046 #if MTK_FAST_TEXTURE_ENCODING_E01732046 #if H_3D_FAST_TEXTURE_ENCODIN 2047 2047 Void TEncCu::xCheckRDCostInter( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bFMD, Bool bUseMRG) 2048 2048 #else … … 2053 2053 #endif 2054 2054 { 2055 #if MTK_FAST_TEXTURE_ENCODING_E01732055 #if H_3D_FAST_TEXTURE_ENCODIN 2056 2056 if(!(bFMD && (ePartSize == SIZE_2Nx2N))) //have motion estimation or merge check 2057 2057 { … … 2130 2130 #if AMP_MRG 2131 2131 rpcTempCU->setMergeAMP (true); 2132 #if MTK_FAST_TEXTURE_ENCODING_E01732132 #if H_3D_FAST_TEXTURE_ENCODIN 2133 2133 m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth], bFMD, false, bUseMRG ); 2134 2134 #else … … 2245 2245 } 2246 2246 #endif 2247 #if MTK_FAST_TEXTURE_ENCODING_E01732247 #if H_3D_FAST_TEXTURE_ENCODIN 2248 2248 } 2249 2249 #endif -
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder/TEncCu.h
r639 r647 160 160 161 161 #if AMP_MRG 162 #if MTK_FAST_TEXTURE_ENCODING_E0173162 #if H_3D_FAST_TEXTURE_ENCODIN 163 163 Void xCheckRDCostInter ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bFMD, Bool bUseMRG = false ) ; 164 164 #else -
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder/TEncGOP.cpp
r646 r647 917 917 918 918 // SAIT_VSO_EST_A0033 919 #if H_3D_FCO _E0163919 #if H_3D_FCO 920 920 Bool flagRec; 921 921 flagRec = ((m_pcEncTop->getIvPicLists()->getPicYuv( pcSlice->getViewIndex(), false, pcSlice->getPOC(), true) == NULL) ? false: true); … … 1187 1187 pcPic->setNumDdvCandPics(pcPic->getDisCandRefPictures(iColPoc)); 1188 1188 } 1189 #endif 1189 1190 #if H_3D 1190 1191 pcSlice->setDepthToDisparityLUTs(); 1191 1192 1192 1193 #endif 1193 #endif 1194 #if MTK_NBDV_TN_FIX_E01721194 1195 #if H_3D_NBDV 1195 1196 if(pcSlice->getViewIndex() && !pcSlice->getIsDepth() && !pcSlice->isIntra()) //Notes from QC: this condition shall be changed once the configuration is completed, e.g. in pcSlice->getSPS()->getMultiviewMvPredMode() || ARP in prev. HTM. Remove this comment once it is done. 1196 1197 { 1197 1198 pcPic->checkTemporalIVRef(); 1198 1199 } 1199 #endif 1200 #if MTK_TEXTURE_MRGCAND_BUGFIX_E0182 1200 1201 1201 if(pcSlice->getIsDepth()) 1202 1202 { … … 1930 1930 digestStr = digestToString(sei_recon_picture_digest.digest, 4); 1931 1931 } 1932 #if H_MV _FIX_LID_PIC_HASH_SEI_T401932 #if H_MV 1933 1933 OutputNALUnit nalu(NAL_UNIT_SUFFIX_SEI, pcSlice->getTLayer(), getLayerId() ); 1934 1934 #else -
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder/TEncSbac.cpp
r646 r647 1274 1274 case DMM4_IDX: codeIdx = 4; break; 1275 1275 case DMM3_IDX: codeIdx = 5; break; 1276 #if LGE_SDC_REMOVE_DC_E01581277 1276 case RBC_IDX: codeIdx = 6; break; 1278 #else1279 case RBC_IDX: codeIdx = 7; break;1280 #endif1281 1277 default: break; 1282 1278 } … … 1289 1285 { 1290 1286 case PLANAR_IDX: codeIdx = 0; break; 1291 #if !LGE_SDC_REMOVE_DC_E01581292 case DC_IDX: codeIdx = 6; break;1293 #endif1294 1287 default: codeIdx = 2; break; 1295 1288 } -
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder/TEncSearch.cpp
r646 r647 2843 2843 { 2844 2844 2845 #if SCU_HS_FAST_DEPTH_INTRA_E0238_HHIFIX2845 #if H_3D_FAST_DEPTH_INTRA 2846 2846 Int threshold = max(((pcCU->getQP(0))>>3)-1,3); 2847 2847 Int varThreshold = (Int)( threshold * threshold - 8 ); … … 2851 2851 #if H_3D_DIM_DMM 2852 2852 if( m_pcEncCfg->getUseDMM() 2853 #if SCU_HS_FAST_DEPTH_INTRA_E0238_HHIFIX2853 #if H_3D_FAST_DEPTH_INTRA 2854 2854 && (uiRdModeList[0] != PLANAR_IDX || varCU >= varThreshold) 2855 2855 #endif … … 2858 2858 for( UInt dmmType = 0; dmmType < DMM_NUM_TYPE; dmmType++ ) 2859 2859 { 2860 #if H_3D_FCO _E01632860 #if H_3D_FCO 2861 2861 TComPic* picTexture = pcCU->getSlice()->getIvPic(false, pcCU->getSlice()->getViewIndex() ); 2862 2862 if ( !picTexture->getReconMark() && (DMM3_IDX == dmmType || DMM4_IDX == dmmType ) ) … … 2878 2878 case( DMM3_IDX ): 2879 2879 { 2880 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 2880 2881 2881 TComPic* pcPicTex = pcCU->getSlice()->getTexturePic(); 2882 2882 TComDataCU* pcColTexCU = pcPicTex->getCU( pcCU->getAddr() ); … … 2886 2886 if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 ) 2887 2887 { 2888 #endif 2889 UInt uiIntraTabIdx = 0; 2890 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX 2888 UInt uiIntraTabIdx = 0; 2891 2889 xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx, uiColTexIntraDir ); 2892 #else2893 xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx );2894 #endif2895 2890 pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dmmType, uiPartOffset, uiDepth + uiInitTrDepth ); 2896 2891 pcCU->setDmm3IntraTabIdxSubParts( uiIntraTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 2897 2892 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 2898 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX2899 2893 } 2900 #endif2901 2894 } break; 2902 2895 case( DMM4_IDX ): … … 2927 2920 #if H_3D_DIM_RBC 2928 2921 if( m_pcEncCfg->getUseRBC() 2929 #if SCU_HS_FAST_DEPTH_INTRA_E0238_HHIFIX2922 #if H_3D_FAST_DEPTH_INTRA 2930 2923 && (uiRdModeList[0] != PLANAR_IDX || varCU >= varThreshold) 2931 2924 #endif … … 3710 3703 */ 3711 3704 #if AMP_MRG 3712 #if MTK_FAST_TEXTURE_ENCODING_E01733705 #if H_3D_FAST_TEXTURE_ENCODIN 3713 3706 Void TEncSearch::predInterSearch( TComDataCU* pcCU, TComYuv* pcOrgYuv, TComYuv*& rpcPredYuv, TComYuv*& rpcResiYuv, TComYuv*& rpcRecoYuv, Bool bFMD, Bool bUseRes, Bool bUseMRG ) 3714 3707 #else … … 3822 3815 #if AMP_MRG 3823 3816 Bool bTestNormalMC = true; 3824 #if MTK_FAST_TEXTURE_ENCODING_E01733817 #if H_3D_FAST_TEXTURE_ENCODIN 3825 3818 if (bFMD||( bUseMRG && pcCU->getWidth( 0 ) > 8 && iNumPart == 2 )) 3826 3819 #else … … 7307 7300 } 7308 7301 7309 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX7310 7302 Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir ) 7311 7303 { … … 7344 7336 cPredYuv.destroy(); 7345 7337 } 7346 #else 7347 Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx ) 7348 { 7349 ruiTabIdx = 0; 7350 ruiIntraTabIdx = 0; 7351 7352 // local pred buffer 7353 TComYuv cPredYuv; 7354 cPredYuv.create( uiWidth, uiHeight ); 7355 cPredYuv.clear(); 7356 Pel* piPred = cPredYuv.getLumaAddr(); 7357 UInt uiPredStride = cPredYuv.getStride(); 7358 7359 // wedge search 7360 UInt uiBestDist = MAX_UINT; 7361 WedgeList* pacWedgeList = &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 7362 Pel refDC1 = 0; Pel refDC2 = 0; 7363 7364 TComPic* pcPicTex = pcCU->getSlice()->getTexturePic(); 7365 assert( pcPicTex != NULL ); 7366 TComDataCU* pcColTexCU = pcPicTex->getCU(pcCU->getAddr()); 7367 UInt uiTexPartIdx = pcCU->getZorderIdxInCU() + uiAbsPtIdx; 7368 Int uiColTexIntraDir = pcColTexCU->isIntra( uiTexPartIdx ) ? pcColTexCU->getLumaIntraDir( uiTexPartIdx ) : 255; 7369 7370 std::vector< std::vector<UInt> > pauiWdgLstSz = g_aauiWdgLstM3[g_aucConvertToBit[uiWidth]]; 7371 if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 ) 7372 { 7373 std::vector<UInt>* pauiWdgLst = &pauiWdgLstSz[uiColTexIntraDir-2]; 7374 for( UInt uiIdxW = 0; uiIdxW < pauiWdgLst->size(); uiIdxW++ ) 7375 { 7376 UInt uiIdx = pauiWdgLst->at(uiIdxW); 7377 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiIdx)); 7378 xCalcBiSegDCs ( piRef, uiRefStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 ); 7379 xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 ); 7380 7381 UInt uiActDist = m_pcRdCost->getDistPart( g_bitDepthY, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, TEXT_LUMA, DF_SAD ); 7382 if( uiActDist < uiBestDist || uiBestDist == MAX_UINT ) 7383 { 7384 uiBestDist = uiActDist; 7385 ruiTabIdx = uiIdx; 7386 ruiIntraTabIdx = uiIdxW; 7387 } 7388 } 7389 } 7390 else 7391 { 7392 WedgeNodeList* pacWedgeNodeList = &g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])]; 7393 UInt uiBestNodeDist = MAX_UINT; 7394 UInt uiBestNodeId = 0; 7395 for( UInt uiNodeId = 0; uiNodeId < pacWedgeNodeList->size(); uiNodeId++ ) 7396 { 7397 TComWedgelet* pcWedgelet = &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())); 7398 xCalcBiSegDCs ( piRef, uiRefStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 ); 7399 xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 ); 7400 7401 UInt uiActDist = m_pcRdCost->getDistPart( g_bitDepthY, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, TEXT_LUMA, DF_SAD ); 7402 if( uiActDist < uiBestNodeDist || uiBestNodeDist == MAX_UINT ) 7403 { 7404 uiBestNodeDist = uiActDist; 7405 uiBestNodeId = uiNodeId; 7406 ruiIntraTabIdx = uiNodeId; 7407 } 7408 } 7409 ruiTabIdx = pacWedgeNodeList->at(uiBestNodeId).getPatternIdx(); 7410 } 7411 7412 cPredYuv.destroy(); 7413 } 7414 #endif 7338 7415 7339 #endif 7416 7340 #if H_3D_DIM_RBC -
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibEncoder/TEncSearch.h
r646 r647 196 196 TComYuv*& rpcResiYuv, 197 197 TComYuv*& rpcRecoYuv, 198 #if MTK_FAST_TEXTURE_ENCODING_E0173198 #if H_3D_FAST_TEXTURE_ENCODIN 199 199 Bool bFMD, 200 200 #endif … … 352 352 Void xSearchDmmDeltaDCs ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piOrig, Pel* piPredic, UInt uiStride, Bool* biSegPattern, Int patternStride, UInt uiWidth, UInt uiHeight, Pel& rDeltaDC1, Pel& rDeltaDC2 ); 353 353 Void xSearchDmm1Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx ); 354 #if LGE_PKU_DMM3_OVERLAP_E0159_HHIFIX355 354 Void xSearchDmm3Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir ); 356 #else357 Void xSearchDmm3Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx );358 #endif359 355 #endif 360 356 #if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.