Changeset 601 in 3DVCSoftware for branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon
- Timestamp:
- 29 Aug 2013, 15:10:30 (12 years ago)
- Location:
- branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/ContextTables.h
r598 r601 112 112 #if H_3D_DIM_DMM 113 113 #define NUM_DMM1_DATA_CTX 1 ///< number of context models for DMM1 data 114 #if !SEC_DMM2_E0146 114 115 #define NUM_DMM2_DATA_CTX 1 ///< number of context models for DMM2 data 116 #endif 115 117 #define NUM_DMM3_DATA_CTX 1 ///< number of context models for DMM3 data 116 118 #endif … … 388 390 #endif 389 391 #if H_3D_DIM 392 #if ZJU_DEPTH_INTRA_MODE_E0204 393 static const UChar 394 INIT_DEPTH_INTRA_MODE[3][NUM_DEPTH_INTRA_MODE_CTX] = 395 { 396 {0, 0, 64, 168, 168, 124, CNU, 0}, 397 {0, 64, 0, 183, CNU, 108, 0, 0}, 398 {64, 0, CNU, CNU, 168, 109, 0, 0} 399 }; 400 #else 390 401 static const UChar 391 402 INIT_DEPTH_INTRA_MODE[3][NUM_DEPTH_INTRA_MODE_CTX] = … … 395 406 {64, 0, CNU, 0, CNU, 0, 0, 0} 396 407 }; 408 #endif 397 409 static const UChar 398 410 INIT_DDC_FLAG[3][NUM_DDC_FLAG_CTX] = … … 417 429 { CNU }, 418 430 }; 431 #if !SEC_DMM2_E0146 419 432 static const UChar 420 433 INIT_DMM2_DATA[3][NUM_DMM2_DATA_CTX] = … … 424 437 { CNU }, 425 438 }; 439 #endif 426 440 static const UChar 427 441 INIT_DMM3_DATA[3][NUM_DMM3_DATA_CTX] = -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComDataCU.cpp
r600 r601 120 120 m_dmmWedgeTabIdx[i] = NULL; 121 121 } 122 #if !SEC_DMM2_E0146 122 123 m_dmm2DeltaEnd = NULL; 124 #endif 123 125 m_dmm3IntraTabIdx = NULL; 124 126 #endif … … 278 280 m_dmmWedgeTabIdx[i] = (UInt*)xMalloc(UInt, uiNumPartition); 279 281 } 282 #if !SEC_DMM2_E0146 280 283 m_dmm2DeltaEnd = (Int* )xMalloc(Int, uiNumPartition); 284 #endif 281 285 m_dmm3IntraTabIdx = (UInt*)xMalloc(UInt, uiNumPartition); 282 286 #endif … … 415 419 if ( m_dmmWedgeTabIdx[i] ) { xFree( m_dmmWedgeTabIdx[i] ); m_dmmWedgeTabIdx[i] = NULL; } 416 420 } 421 #if !SEC_DMM2_E0146 417 422 if ( m_dmm2DeltaEnd ) { xFree( m_dmm2DeltaEnd ); m_dmm2DeltaEnd = NULL; } 423 #endif 418 424 if ( m_dmm3IntraTabIdx ) { xFree( m_dmm3IntraTabIdx ); m_dmm3IntraTabIdx = NULL; } 419 425 #endif … … 640 646 memset( m_dmmWedgeTabIdx[i] + firstElement, 0, numElements * sizeof( *m_dmmWedgeTabIdx[i] ) ); 641 647 } 648 #if !SEC_DMM2_E0146 642 649 memset( m_dmm2DeltaEnd + firstElement, 0, numElements * sizeof( *m_dmm2DeltaEnd ) ); 650 #endif 643 651 memset( m_dmm3IntraTabIdx + firstElement, 0, numElements * sizeof( *m_dmm3IntraTabIdx ) ); 644 652 #endif … … 821 829 m_dmmWedgeTabIdx[i] [ui] = 0; 822 830 } 831 #if !SEC_DMM2_E0146 823 832 m_dmm2DeltaEnd [ui] = 0; 833 #endif 824 834 m_dmm3IntraTabIdx [ui] = 0; 825 835 #endif … … 936 946 memset( m_dmmWedgeTabIdx[i], 0, sizeof(UInt) * m_uiNumPartition ); 937 947 } 948 #if !SEC_DMM2_E0146 938 949 memset( m_dmm2DeltaEnd , 0, sizeof(Int ) * m_uiNumPartition ); 950 #endif 939 951 memset( m_dmm3IntraTabIdx, 0, sizeof(UInt) * m_uiNumPartition ); 940 952 #endif … … 1024 1036 m_dmmWedgeTabIdx[i] [ui] = pcCU->m_dmmWedgeTabIdx[i] [uiPartOffset+ui]; 1025 1037 } 1038 #if !SEC_DMM2_E0146 1026 1039 m_dmm2DeltaEnd [ui] = pcCU->m_dmm2DeltaEnd [uiPartOffset+ui]; 1040 #endif 1027 1041 m_dmm3IntraTabIdx [ui] = pcCU->m_dmm3IntraTabIdx[uiPartOffset+ui]; 1028 1042 #endif … … 1182 1196 m_dmmWedgeTabIdx[i] = pcCU->getDmmWedgeTabIdx( i ) + uiPart; 1183 1197 } 1198 #if !SEC_DMM2_E0146 1184 1199 m_dmm2DeltaEnd = pcCU->getDmm2DeltaEnd() + uiPart; 1200 #endif 1185 1201 m_dmm3IntraTabIdx = pcCU->getDmm3IntraTabIdx() + uiPart; 1186 1202 #endif … … 1388 1404 memcpy( m_dmmWedgeTabIdx[i] + uiOffset, pcCU->getDmmWedgeTabIdx( i ), sizeof(UInt) * uiNumPartition ); 1389 1405 } 1406 #if !SEC_DMM2_E0146 1390 1407 memcpy( m_dmm2DeltaEnd + uiOffset, pcCU->getDmm2DeltaEnd() , sizeof(Int ) * uiNumPartition ); 1408 #endif 1391 1409 memcpy( m_dmm3IntraTabIdx + uiOffset, pcCU->getDmm3IntraTabIdx(), sizeof(UInt) * uiNumPartition ); 1392 1410 #endif … … 1521 1539 memcpy( rpcCU->getDmmWedgeTabIdx( i ) + m_uiAbsIdxInLCU, m_dmmWedgeTabIdx[i], sizeof(UInt) * m_uiNumPartition ); 1522 1540 } 1541 #if !SEC_DMM2_E0146 1523 1542 memcpy( rpcCU->getDmm2DeltaEnd() + m_uiAbsIdxInLCU, m_dmm2DeltaEnd , sizeof(Int ) * m_uiNumPartition ); 1543 #endif 1524 1544 memcpy( rpcCU->getDmm3IntraTabIdx() + m_uiAbsIdxInLCU, m_dmm3IntraTabIdx, sizeof(UInt) * m_uiNumPartition ); 1525 1545 #endif … … 1638 1658 memcpy( rpcCU->getDmmWedgeTabIdx( i ) + uiPartOffset, m_dmmWedgeTabIdx[i], sizeof(UInt) * uiQNumPart ); 1639 1659 } 1660 #if !SEC_DMM2_E0146 1640 1661 memcpy( rpcCU->getDmm2DeltaEnd() + uiPartOffset, m_dmm2DeltaEnd , sizeof(Int ) * uiQNumPart ); 1662 #endif 1641 1663 memcpy( rpcCU->getDmm3IntraTabIdx() + uiPartOffset, m_dmm3IntraTabIdx, sizeof(UInt) * uiQNumPart ); 1642 1664 #endif … … 2713 2735 // check prediction mode 2714 2736 UInt uiLumaPredMode = getLumaIntraDir( uiAbsPartIdx ); 2737 #if LGE_SDC_REMOVE_DC_E0158 2738 if( uiLumaPredMode == PLANAR_IDX || ( getDimType( uiLumaPredMode ) == DMM1_IDX && !isDimDeltaDC( uiLumaPredMode ) ) ) 2739 #else 2715 2740 if( uiLumaPredMode == DC_IDX || uiLumaPredMode == PLANAR_IDX || ( getDimType( uiLumaPredMode ) == DMM1_IDX && !isDimDeltaDC( uiLumaPredMode ) ) ) 2741 #endif 2716 2742 return true; 2717 2743 … … 6380 6406 for( UInt ui = 0; ui < uiCurrPartNumb; ui++ ) { m_dmmWedgeTabIdx[dmmType][uiAbsPartIdx+ui] = tabIdx; } 6381 6407 } 6408 #if !SEC_DMM2_E0146 6382 6409 Void TComDataCU::setDmm2DeltaEndSubParts( Int iDelta, UInt uiAbsPartIdx, UInt uiDepth ) 6383 6410 { … … 6385 6412 for( UInt ui = 0; ui < uiCurrPartNumb; ui++ ) { m_dmm2DeltaEnd[uiAbsPartIdx+ui] = iDelta; } 6386 6413 } 6414 #endif 6387 6415 Void TComDataCU::setDmm3IntraTabIdxSubParts( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth ) 6388 6416 { -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComDataCU.h
r598 r601 211 211 #if H_3D_DIM_DMM 212 212 UInt* m_dmmWedgeTabIdx[DMM_NUM_TYPE]; 213 #if !SEC_DMM2_E0146 213 214 Int* m_dmm2DeltaEnd; 215 #endif 214 216 UInt* m_dmm3IntraTabIdx; 215 217 #endif … … 553 555 Void setDmmWedgeTabIdxSubParts ( UInt tabIdx, UInt dmmType, UInt uiAbsPartIdx, UInt uiDepth ); 554 556 557 #if !SEC_DMM2_E0146 555 558 Int* getDmm2DeltaEnd () { return m_dmm2DeltaEnd; } 556 559 Int getDmm2DeltaEnd ( UInt uiIdx ) { return m_dmm2DeltaEnd[uiIdx]; } 557 560 Void setDmm2DeltaEnd ( UInt uiIdx, Int iD ) { m_dmm2DeltaEnd[uiIdx] = iD; } 558 561 Void setDmm2DeltaEndSubParts ( Int iDelta, UInt uiAbsPartIdx, UInt uiDepth ); 562 #endif 559 563 560 564 UInt* getDmm3IntraTabIdx () { return m_dmm3IntraTabIdx; } -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComPrediction.cpp
r598 r601 456 456 dmmSegmentation = &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]); 457 457 } break; 458 #if !SEC_DMM2_E0146 458 459 case( DMM2_IDX ): 459 460 { … … 467 468 dmmSegmentation = &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ uiTabIdx ]); 468 469 } break; 470 #endif 469 471 case( DMM3_IDX ): 470 472 { … … 2782 2784 { 2783 2785 UInt dimType = getDimType( pcTempCU->getLumaIntraDir( uiTempPartIdx ) ); 2786 #if SEC_DMM2_E0146 2787 if( DMM1_IDX == dimType || DMM3_IDX == dimType ) 2788 #else 2784 2789 if( DMM1_IDX == dimType || DMM2_IDX == dimType || DMM3_IDX == dimType ) 2790 #endif 2785 2791 { 2786 2792 // get offset between current and reference block … … 2807 2813 { 2808 2814 UInt dimType = getDimType( pcTempCU->getLumaIntraDir( uiTempPartIdx ) ); 2815 #if SEC_DMM2_E0146 2816 if( DMM1_IDX == dimType || DMM3_IDX == dimType ) 2817 #else 2809 2818 if( DMM1_IDX == dimType || DMM2_IDX == dimType || DMM3_IDX == dimType ) 2819 #endif 2810 2820 { 2811 2821 // get offset between current and reference block … … 2870 2880 iDC += piRefBlkY[k]; 2871 2881 } 2882 2883 #if SCU_HS_DMM4_REMOVE_DIV_E0242 2884 Int cuMaxLog2Size = g_aucConvertToBit[g_uiMaxCUWidth]+2; 2885 iDC = iDC >> (cuMaxLog2Size - pcCU->getDepth(0))*2; 2886 #else 2872 2887 iDC /= (uiWidth*uiHeight); 2888 #endif 2873 2889 piRefBlkY = cTempYuv.getLumaAddr(); 2874 2890 … … 3314 3330 #endif 3315 3331 #if H_3D_DIM_SDC 3316 Void TComPrediction::analyzeSegmentsSDC( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride ) 3332 Void TComPrediction::analyzeSegmentsSDC( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride 3333 #if KWU_SDC_SIMPLE_DC_E0117 3334 ,UInt uiIntraMode 3335 ,Bool orgDC 3336 #endif 3337 ) 3317 3338 { 3318 3339 Int iSumDepth[2]; … … 3321 3342 memset(iSumPix, 0, sizeof(Int)*2); 3322 3343 3344 #if KWU_SDC_SIMPLE_DC_E0117 3345 if (orgDC == false) 3346 { 3347 if ( getDimType(uiIntraMode) == DMM1_IDX ) 3348 { 3349 UChar ucSegmentLT = pMask[0]; 3350 UChar ucSegmentRT = pMask[uiSize-1]; 3351 UChar ucSegmentLB = pMask[uiMaskStride * (uiSize-1)]; 3352 UChar ucSegmentRB = pMask[uiMaskStride * (uiSize-1) + (uiSize-1)]; 3353 3354 rpSegMeans[ucSegmentLT] = pOrig[0]; 3355 rpSegMeans[ucSegmentRT] = pOrig[uiSize-1]; 3356 rpSegMeans[ucSegmentLB] = pOrig[uiStride * (uiSize-1) ]; 3357 rpSegMeans[ucSegmentRB] = pOrig[uiStride * (uiSize-1) + (uiSize-1) ]; 3358 } 3359 else if (uiIntraMode == PLANAR_IDX) 3360 { 3361 Pel* pLeftTop = pOrig; 3362 Pel* pRightTop = pOrig + (uiSize-1); 3363 Pel* pLeftBottom = (pOrig+ (uiStride*(uiSize-1))); 3364 Pel* pRightBottom = (pOrig+ (uiStride*(uiSize-1)) + (uiSize-1)); 3365 3366 rpSegMeans[0] = (*pLeftTop + *pRightTop + *pLeftBottom + *pRightBottom + 2)>>2; 3367 } 3368 return; 3369 } 3370 #endif 3371 3323 3372 Int subSamplePix; 3324 3373 if ( uiSize == 64 || uiSize == 32 ) -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComPrediction.h
r598 r601 191 191 Void predIntraLumaDepth ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiIntraMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bFastEnc = false ); 192 192 #if H_3D_DIM_SDC 193 Void analyzeSegmentsSDC ( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride ); 193 Void analyzeSegmentsSDC ( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride 194 #if KWU_SDC_SIMPLE_DC_E0117 195 ,UInt uiIntraMode 196 ,Bool orgDC=false 197 #endif 198 ); 194 199 #endif 195 200 #endif -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComRdCost.cpp
r598 r601 483 483 484 484 } 485 486 #if SCU_HS_FAST_DEPTH_INTRA_E0238 487 488 UInt TComRdCost::calcVAR (Pel* pi0, Int stride, Int width, Int height, Int cuDepth) 489 { 490 Int temp = 0; 491 492 for (Int y = 0; y < height; y++) 493 { 494 for (Int x = 0; x < width; x++) 495 { 496 temp += pi0[ y * stride + x ]; 497 } 498 } 499 500 Int cuMaxLog2Size = g_aucConvertToBit[g_uiMaxCUWidth]+2; 501 502 if ( width == 4 ) 503 { 504 cuDepth = cuMaxLog2Size - 2; 505 } 506 507 temp = temp >> (cuMaxLog2Size-cuDepth) * 2; 508 509 UInt sum = 0; 510 for (Int y = 0; y < height; y++) 511 { 512 for (Int x = 0; x < width; x++) 513 { 514 sum += (pi0[ y * stride + x ] - temp ) * (pi0[ y * stride + x ] - temp ); 515 } 516 } 517 return (sum >> (cuMaxLog2Size-cuDepth)*2); 518 519 } 520 #endif 521 485 522 486 523 #if WEIGHTED_CHROMA_DISTORTION -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComRdCost.h
r598 r601 235 235 UInt calcHAD(Int bitDepth, Pel* pi0, Int iStride0, Pel* pi1, Int iStride1, Int iWidth, Int iHeight ); 236 236 237 #if SCU_HS_FAST_DEPTH_INTRA_E0238 238 UInt calcVAR(Pel* pi0, Int stride, Int width, Int height, Int cuDepth); 239 #endif 237 240 // for motion cost 238 241 #if !FIX203 -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComRom.cpp
r531 r601 347 347 { //2x2 4x4 8x8 16x16 32x32 64x64 348 348 0, 7, 10, 11, 11, 13 }; 349 #if LGE_PKU_DMM3_OVERLAP_E0159 350 const UChar g_dmm3IntraTabIdxBits[6] = 351 { //2x2 4x4 8x8 16x16 32x32 64x64 352 0, 4, 7, 8, 8, 0 }; 353 #else 349 354 const UChar g_dmm3IntraTabIdxBits[6] = 350 355 { //2x2 4x4 8x8 16x16 32x32 64x64 351 356 0, 6, 9, 9, 9, 0 }; 357 #endif 352 358 353 359 extern std::vector< std::vector<TComWedgelet> > g_dmmWedgeLists; -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TComWedgelet.h
r531 r601 50 50 enum DIM_IDX 51 51 { 52 #if SEC_DMM2_E0146 53 DMM1_IDX = 0, 54 DMM3_IDX = 1, 55 DMM4_IDX = 2, 56 RBC_IDX = 3 57 #else 52 58 DMM1_IDX = 0, 53 59 DMM2_IDX = 3, … … 55 61 DMM4_IDX = 2, 56 62 RBC_IDX = 4 63 #endif 57 64 }; 65 #if SEC_DMM2_E0146 66 #define DMM_NUM_TYPE 3 67 #else 58 68 #define DMM_NUM_TYPE 4 69 #endif 59 70 #define RBC_NUM_TYPE 1 60 71 #define DIM_NUM_TYPE (DMM_NUM_TYPE+RBC_NUM_TYPE) … … 75 86 #define DMM_NO_WEDGEINDEX MAX_UINT 76 87 #define DMM_NUM_WEDGE_REFINES 8 88 #if !SEC_DMM2_E0146 77 89 #define DMM2_DELTAEND_MAX 4 90 #endif 78 91 #define DMM3_SIMPLIFY_TR 1 79 92 -
branches/HTM-DEV-2.0-dev0/source/Lib/TLibCommon/TypeDef.h
r600 r601 214 214 #if H_3D_DIM 215 215 #define H_3D_DIM_DMM 1 // Depth Modeling Modes 216 #if H_3D_DIM 217 #define SEC_DMM2_E0146 1 // Removal of DMM2 from DMMs 218 #define ZJU_DEPTH_INTRA_MODE_E0204 1 // Simplified Binarization for depth_intra_mode 219 #endif 216 220 #define H_3D_DIM_RBC 1 // Region Boundary Chain mode 217 221 #define H_3D_DIM_SDC 1 // Simplified Depth Coding method … … 220 224 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 221 225 // LG_ZEROINTRADEPTHRESI_A0087 226 #define KWU_SDC_SIMPLE_DC_E0117 1 // Simplified DC calculation for SDC 227 #define SCU_HS_DMM4_REMOVE_DIV_E0242 1 // DMM4 Division Removal 228 #define SCU_HS_FAST_DEPTH_INTRA_E0238 1 // Fast DMM and RBC Mode Selection 229 #if H_3D_DIM_SDC 230 #define LGE_SDC_REMOVE_DC_E0158 1 // Removal of DC mode from SDC 231 #endif 232 #if H_3D_DIM_DMM 233 #define LGE_PKU_DMM3_OVERLAP_E0159 1 // Removal of overlap between DMM3 and DMM1 234 #endif 222 235 #endif 223 236
Note: See TracChangeset for help on using the changeset viewer.