Changeset 601 in 3DVCSoftware for branches/HTM-DEV-2.0-dev0/source/Lib/TLibEncoder
- Timestamp:
- 29 Aug 2013, 15:10:30 (12 years ago)
- Location:
- branches/HTM-DEV-2.0-dev0/source/Lib/TLibEncoder
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-2.0-dev0/source/Lib/TLibEncoder/TEncSbac.cpp
r598 r601 95 95 #if H_3D_DIM_DMM 96 96 , m_cDmm1DataSCModel ( 1, 1, NUM_DMM1_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 97 #if !SEC_DMM2_E0146 97 98 , m_cDmm2DataSCModel ( 1, 1, NUM_DMM2_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 99 #endif 98 100 , m_cDmm3DataSCModel ( 1, 1, NUM_DMM3_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 99 101 #endif … … 175 177 #if H_3D_DIM_DMM 176 178 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); 179 #if !SEC_DMM2_E0146 177 180 m_cDmm2DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM2_DATA ); 181 #endif 178 182 m_cDmm3DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA ); 179 183 #endif … … 264 268 #if H_3D_DIM_DMM 265 269 curCost += m_cDmm1DataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DMM1_DATA ); 270 #if !SEC_DMM2_E0146 266 271 curCost += m_cDmm2DataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DMM2_DATA ); 272 #endif 267 273 curCost += m_cDmm3DataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DMM3_DATA ); 268 274 #endif … … 334 340 #if H_3D_DIM_DMM 335 341 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); 342 #if !SEC_DMM2_E0146 336 343 m_cDmm2DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM2_DATA ); 344 #endif 337 345 m_cDmm3DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA ); 338 346 #endif … … 541 549 } 542 550 551 #if !SEC_DMM2_E0146 543 552 Void TEncSbac::xCodeDmm2Offset( Int iOffset ) 544 553 { … … 557 566 } 558 567 } 568 #endif 559 569 560 570 Void TEncSbac::xCodeDmm3WedgeIdx( UInt uiIntraIdx, Int iNumBit ) … … 1216 1226 xCodeDmm1WedgeIdx( pcCU->getDmmWedgeTabIdx( dimType, absPartIdx ), g_dmm1TabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] ); 1217 1227 } break; 1228 #if !SEC_DMM2_E0146 1218 1229 case( DMM2_IDX ): 1219 1230 { 1220 1231 xCodeDmm2Offset( pcCU->getDmm2DeltaEnd( absPartIdx ) ); 1221 1232 } break; 1233 #endif 1222 1234 case( DMM3_IDX ): 1223 1235 { … … 1268 1280 Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx ) 1269 1281 { 1282 #if ZJU_DEPTH_INTRA_MODE_E0204 1283 UInt codeWordTable[3][7] = {{0, 0, 0, 2, 0,6, 7},{0, 0, 2, 7, 3, 6, 2},{0, 1, 0, 0, 0, 0, 0}}; 1284 UInt codeWordLenTable[3][7] = {{0, 1, 0, 2, 0,3, 3},{1, 1, 2, 3, 2, 3, 2},{1, 1, 0, 0, 0, 0, 0}}; 1285 #else 1286 #if LGE_SDC_REMOVE_DC_E0158 1287 #if SEC_DMM2_E0146 1288 UInt codeWordTable[3][7] = {{0, 0, 0, 2, 0,6, 7},{0, 2, 3, 4, 5, 6, 7},{0, 1, 0, 0, 0, 0, 0}}; 1289 UInt codeWordLenTable[3][7] = {{0, 1, 0, 2, 0,3, 3},{2, 3, 3, 3, 3, 3, 3},{1, 1, 0, 0, 0, 0, 0}}; 1290 #else 1291 UInt codeWordTable[3][8] = { { 0, 0, 0, 2, 0, 6, 0, 7 }, { 0, 2, 3, 4, 5, 6, 15, 14 }, { 0, 1, 0, 0, 0, 0, 0, 0 } }; 1292 UInt codeWordLenTable[3][8] = { { 0, 1, 0, 2, 0, 3, 0, 3 }, { 2, 3, 3, 3, 3, 3, 4, 4 }, { 1, 1, 0, 0, 0, 0, 0, 0 } }; 1293 #endif 1294 #else 1295 #if SEC_DMM2_E0146 1296 UInt codeWordTable[3][8] = {{0, 0, 0, 2, 0,6, 0, 7},{0, 2, 3, 4, 5, 6, 14, 15},{0, 2, 0, 0, 0, 0, 3, 0}}; 1297 UInt codeWordLenTable[3][8] = {{0, 1, 0, 2, 0,3, 0, 3},{2, 3, 3, 3, 3, 3, 4, 4},{1, 2, 0, 0, 0, 0, 2, 0}}; 1298 #else 1270 1299 UInt codeWordTable[3][9] = {{0, 0, 0, 2, 0,6, 0, 0, 7},{0, 2, 3, 4, 5, 6, 14, 31, 30},{0, 2, 0, 0, 0, 0, 3, 0, 0}}; 1271 1300 UInt codeWordLenTable[3][9] = {{0, 1, 0, 2, 0,3, 0, 0, 3},{2, 3, 3, 3, 3, 3, 4, 5, 5},{1, 2, 0, 0, 0, 0, 2, 0, 0}}; 1301 #endif 1302 #endif 1303 #endif 1272 1304 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 1273 1305 UInt puIdx = (pcCU->getWidth(absPartIdx) == 64) ? 2 : ( (pcCU->getPartitionSize(absPartIdx) == SIZE_NxN && pcCU->getWidth(absPartIdx) == 8) ? 0 : 1 ); … … 1285 1317 case DMM4_IDX: codeIdx = 4; break; 1286 1318 case DMM3_IDX: codeIdx = 5; break; 1319 #if LGE_SDC_REMOVE_DC_E0158 1320 #if SEC_DMM2_E0146 1321 case RBC_IDX: codeIdx = 6; break; 1322 #else 1323 case DMM2_IDX: codeIdx = 6; break; 1324 case RBC_IDX: codeIdx = 7; break; 1325 #endif 1326 #else 1327 #if SEC_DMM2_E0146 1328 case RBC_IDX: codeIdx = 7; break; 1329 #else 1287 1330 case DMM2_IDX: codeIdx = 7; break; 1288 1331 case RBC_IDX: codeIdx = 8; break; 1332 #endif 1333 #endif 1289 1334 default: break; 1290 1335 } … … 1297 1342 { 1298 1343 case PLANAR_IDX: codeIdx = 0; break; 1344 #if !LGE_SDC_REMOVE_DC_E0158 1299 1345 case DC_IDX: codeIdx = 6; break; 1346 #endif 1300 1347 default: codeIdx = 2; break; 1301 1348 } 1349 } 1350 #endif 1351 #if ZJU_DEPTH_INTRA_MODE_E0204 1352 if( puIdx==1 ) 1353 { 1354 if( codeIdx==1 || codeIdx==2 || codeIdx==4 ) 1355 { 1356 m_pcBinIf->encodeBinEP( 0 ); 1357 } 1358 else 1359 { 1360 m_pcBinIf->encodeBinEP( 1 ); 1361 } 1302 1362 } 1303 1363 #endif -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibEncoder/TEncSbac.h
r598 r601 121 121 #if H_3D_DIM_DMM 122 122 Void xCodeDmm1WedgeIdx ( UInt uiTabIdx, Int iNumBit ); 123 #if !SEC_DMM2_E0146 123 124 Void xCodeDmm2Offset ( Int iOffset ); 125 #endif 124 126 Void xCodeDmm3WedgeIdx ( UInt uiIntraIdx, Int iNumBit ); 125 127 #endif … … 254 256 #if H_3D_DIM_DMM 255 257 ContextModel3DBuffer m_cDmm1DataSCModel; 258 #if !SEC_DMM2_E0146 256 259 ContextModel3DBuffer m_cDmm2DataSCModel; 260 #endif 257 261 ContextModel3DBuffer m_cDmm3DataSCModel; 258 262 #endif -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
r598 r601 1900 1900 // get DC prediction for each segment 1901 1901 Pel apDCPredValues[2]; 1902 #if KWU_SDC_SIMPLE_DC_E0117 1903 analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode ); 1904 #else 1902 1905 analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride ); 1906 #endif 1903 1907 1904 1908 // get original DC for each segment 1905 1909 Pel apDCOrigValues[2]; 1910 #if KWU_SDC_SIMPLE_DC_E0117 1911 analyzeSegmentsSDC(piOrg, uiStride, uiWidth, apDCOrigValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode, true ); 1912 #else 1906 1913 analyzeSegmentsSDC(piOrg, uiStride, uiWidth, apDCOrigValues, uiNumSegments, pbMask, uiMaskStride ); 1914 #endif 1907 1915 1908 1916 for( UInt uiSegment = 0; uiSegment < uiNumSegments; uiSegment++ ) … … 2842 2850 if( m_pcEncCfg->getIsDepth() && uiWidth >= DIM_MIN_SIZE && uiWidth <= DIM_MAX_SIZE && uiWidth == uiHeight ) 2843 2851 { 2852 2853 #if SCU_HS_FAST_DEPTH_INTRA_E0238 2854 Int threshold = max(((pcCU->getQP(0))>>3)-1,3); 2855 Int varThreshold = (Int)( threshold * threshold - 8 ); 2856 UInt varCU = m_pcRdCost->calcVAR(piOrg, uiStride, uiWidth,uiHeight,pcCU->getDepth(0)); 2857 #endif 2858 2859 2844 2860 #if H_3D_DIM_DMM 2845 if( m_pcEncCfg->getUseDMM() ) 2861 if( m_pcEncCfg->getUseDMM() 2862 #if SCU_HS_FAST_DEPTH_INTRA_E0238 2863 && (uiRdModeList[0] != 0 || varCU >= varThreshold) 2864 #endif 2865 ) 2846 2866 { 2847 2867 for( UInt dmmType = 0; dmmType < DMM_NUM_TYPE; dmmType++ ) … … 2858 2878 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 2859 2879 } break; 2880 #if !SEC_DMM2_E0146 2860 2881 case( DMM2_IDX ): 2861 2882 { … … 2869 2890 } 2870 2891 } break; 2892 #endif 2871 2893 case( DMM3_IDX ): 2872 2894 { 2895 #if LGE_PKU_DMM3_OVERLAP_E0159 2896 TComPic* pcPicTex = pcCU->getSlice()->getTexturePic(); 2897 TComDataCU* pcColTexCU = pcPicTex->getCU( pcCU->getAddr() ); 2898 UInt uiTexPartIdx = pcCU->getZorderIdxInCU() + uiPartOffset; 2899 Int uiColTexIntraDir = pcColTexCU->isIntra( uiTexPartIdx ) ? pcColTexCU->getLumaIntraDir( uiTexPartIdx ) : 255; 2900 2901 if( uiColTexIntraDir > DC_IDX && uiColTexIntraDir < 35 ) 2902 { 2903 #endif 2873 2904 UInt uiIntraTabIdx = 0; 2874 2905 xSearchDmm3Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx, uiIntraTabIdx ); … … 2876 2907 pcCU->setDmm3IntraTabIdxSubParts( uiIntraTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 2877 2908 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 2909 #if LGE_PKU_DMM3_OVERLAP_E0159 2910 } 2911 #endif 2878 2912 } break; 2879 2913 case( DMM4_IDX ): … … 2903 2937 #endif 2904 2938 #if H_3D_DIM_RBC 2905 if( m_pcEncCfg->getUseRBC() ) 2939 if( m_pcEncCfg->getUseRBC() 2940 #if SCU_HS_FAST_DEPTH_INTRA_E0238 2941 && (uiRdModeList[0] != 0 || varCU >= varThreshold) 2942 #endif 2943 ) 2906 2944 { 2907 2945 if( xSearchRbcEdge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight ) ) … … 7323 7361 } 7324 7362 7363 #if !SEC_DMM2_E0146 7325 7364 Void TEncSearch::xSearchDmm2Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd ) 7326 7365 { … … 7388 7427 return; 7389 7428 } 7429 #endif 7390 7430 7391 7431 Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx ) -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibEncoder/TEncSearch.h
r598 r601 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 !SEC_DMM2_E0146 354 355 Void xSearchDmm2Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd ); 356 #endif 355 357 Void xSearchDmm3Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx ); 356 358 #endif
Note: See TracChangeset for help on using the changeset viewer.