Changeset 827 in 3DVCSoftware for branches/HTM-9.3-dev0/source/Lib/TLibCommon
- Timestamp:
- 5 Feb 2014, 20:06:56 (11 years ago)
- Location:
- branches/HTM-9.3-dev0/source/Lib/TLibCommon
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev0/source/Lib/TLibCommon/ContextTables.h
r826 r827 115 115 116 116 #if H_3D_DIM 117 #if QC_GENERIC_SDC_G0122 118 #define NUM_DEPTH_INTRA_MODE_CTX 1 ///< number of context models for depth intra modes 119 #else 117 120 #define NUM_DEPTH_INTRA_MODE_CTX 8 ///< number of context models for depth intra modes 121 #endif 118 122 #define NUM_DDC_FLAG_CTX 2 ///< number of context models for deltaDC flag (DMM or RBC) 119 123 #define NUM_DDC_DATA_CTX 1 ///< number of context models for deltaDC data (DMM or RBC) … … 121 125 #define NUM_DMM1_DATA_CTX 1 ///< number of context models for DMM1 data 122 126 #endif 127 #if QC_GENERIC_SDC_G0122 128 #define NUM_ANGLE_FLAG_CTX 3 129 #if !QC_SDC_UNIFY_G0130 130 #define NUM_INTRASDC_FLAG_CTX 3 131 #endif 132 #endif 123 133 #endif 124 134 … … 128 138 #endif 129 139 130 #if H_3D_INTER_SDC 140 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 131 141 #define NUM_INTER_SDC_FLAG_CTX 1 ///< number of context models for inter SDC flag 132 142 #define NUM_INTER_SDC_SIGN_FLAG_CTX 1 ///< number of context models for sign of inter SDC residual … … 134 144 #endif 135 145 146 #if QC_SDC_UNIFY_G0130 147 #define NUM_SDC_FLAG_CTX 1 ///< number of context 148 #endif 136 149 #if H_3D_DBBP 137 150 #define DBBP_NUM_FLAG_CTX 1 … … 414 427 #endif 415 428 #if H_3D_DIM 429 #if QC_GENERIC_SDC_G0122 430 static const UChar 431 INIT_DEPTH_INTRA_MODE[3][NUM_DEPTH_INTRA_MODE_CTX] = 432 { 433 { 154, }, 434 { 154, }, 435 { 154, } 436 }; 437 #else 416 438 static const UChar 417 439 INIT_DEPTH_INTRA_MODE[3][NUM_DEPTH_INTRA_MODE_CTX] = … … 421 443 {64, 0, CNU, CNU, 168, 109, 0, 0} 422 444 }; 445 #endif 446 447 #if QC_GENERIC_SDC_G0122 448 static const UChar 449 INIT_ANGLE_FLAG[3][NUM_ANGLE_FLAG_CTX] = 450 { 451 { 154, 155, 156 }, 452 { 141, 185, 214 }, 453 { 155, 170, 157 }, 454 }; 455 #if !QC_SDC_UNIFY_G0130 456 static const UChar 457 INIT_INTRASDC_FLAG[3][NUM_INTRASDC_FLAG_CTX] = 458 { 459 { 214, 229, 230 }, 460 { 215, 202, 174 }, 461 { 213, 201, 246 }, 462 }; 463 #endif 464 #endif 423 465 424 466 static const UChar … … 463 505 #endif 464 506 465 #if H_3D_INTER_SDC 507 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 466 508 static const UChar 467 509 INIT_INTER_SDC_FLAG[3][NUM_INTER_SDC_FLAG_CTX] = … … 489 531 #endif 490 532 //! \} 533 #if QC_SDC_UNIFY_G0130 534 static const UChar 535 INIT_SDC_FLAG[3][NUM_SDC_FLAG_CTX] = 536 { 537 { 154 }, 538 { 154 }, 539 { 154 }, 540 }; 541 #endif 491 542 492 543 #if H_3D_DBBP -
branches/HTM-9.3-dev0/source/Lib/TLibCommon/TComDataCU.cpp
r826 r827 123 123 #if H_3D_DIM_SDC 124 124 m_pbSDCFlag = NULL; 125 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 126 for( Int i = 0; i < 4; i++ ) 127 { 128 m_apSegmentDCOffset[i] = NULL; 129 } 130 #else 125 131 m_apSegmentDCOffset[0] = NULL; 126 132 m_apSegmentDCOffset[1] = NULL; 133 #endif 127 134 #endif 128 135 #endif … … 146 153 #endif 147 154 #if H_3D_INTER_SDC 155 #if !QC_SDC_UNIFY_G0130 148 156 m_pbInterSDCFlag = NULL; 149 157 for( Int i = 0; i < 4; i++ ) … … 151 159 m_apSegmentInterDCOffset[i] = NULL; 152 160 } 161 #endif 162 #if !SEC_INTER_SDC_G0101 153 163 m_pucInterSDCMask = NULL; 164 #endif 154 165 #endif 155 166 #if H_3D_DBBP … … 280 291 #if H_3D_DIM_SDC 281 292 m_pbSDCFlag = (Bool*)xMalloc(Bool, uiNumPartition); 293 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 294 for( Int i = 0; i < 4; i++ ) 295 { 296 m_apSegmentDCOffset[i] = (Pel*)xMalloc(Pel, uiNumPartition); 297 } 298 #else 282 299 m_apSegmentDCOffset[0] = (Pel*)xMalloc(Pel, uiNumPartition); 283 300 m_apSegmentDCOffset[1] = (Pel*)xMalloc(Pel, uiNumPartition); 284 301 #endif 285 302 #endif 286 #if H_3D_INTER_SDC 303 #endif 304 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 287 305 m_pbInterSDCFlag = (Bool* )xMalloc(Bool, uiNumPartition); 288 306 for( Int i = 0; i < 4; i++ ) … … 300 318 m_acCUMvField[1].setNumPartition(uiNumPartition ); 301 319 } 320 #if !SEC_INTER_SDC_G0101 302 321 #if H_3D_INTER_SDC 303 322 m_pucInterSDCMask = (UChar* )xMalloc(UChar, g_uiMaxCUHeight*g_uiMaxCUWidth); 323 #endif 304 324 #endif 305 325 m_sliceStartCU = (UInt* )xMalloc(UInt, uiNumPartition); … … 421 441 #if H_3D_DIM_SDC 422 442 if ( m_pbSDCFlag ) { xFree(m_pbSDCFlag); m_pbSDCFlag = NULL; } 443 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 444 for( Int i = 0; i < 4; i++ ) 445 { 446 if ( m_apSegmentDCOffset[i] ) { xFree(m_apSegmentDCOffset[i]); m_apSegmentDCOffset[i] = NULL; } 447 } 448 #else 423 449 if ( m_apSegmentDCOffset[0] ) { xFree(m_apSegmentDCOffset[0]); m_apSegmentDCOffset[0] = NULL; } 424 450 if ( m_apSegmentDCOffset[1] ) { xFree(m_apSegmentDCOffset[1]); m_apSegmentDCOffset[1] = NULL; } 425 451 #endif 426 452 #endif 427 #if H_3D_INTER_SDC 453 #endif 454 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 428 455 if ( m_pbInterSDCFlag ) { xFree(m_pbInterSDCFlag); m_pbInterSDCFlag = NULL; } 429 456 for(Int i = 0; i < 4; i++ ) … … 436 463 #endif 437 464 } 465 #if !SEC_INTER_SDC_G0101 438 466 #if H_3D_INTER_SDC 439 467 if ( m_pucInterSDCMask ) { xFree(m_pucInterSDCMask); m_pucInterSDCMask = NULL; } 468 #endif 440 469 #endif 441 470 m_pcCUAboveLeft = NULL; … … 584 613 m_pbSDCFlag[ui] = pcFrom->m_pbSDCFlag[ui]; 585 614 #endif 586 #if H_3D_INTER_SDC 615 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 587 616 m_pbInterSDCFlag[ui] = pcFrom->m_pbInterSDCFlag[ui]; 588 617 #endif … … 655 684 #if H_3D_DIM_SDC 656 685 memset( m_pbSDCFlag + firstElement, 0, numElements * sizeof( *m_pbSDCFlag ) ); 686 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 687 for( Int i = 0; i < 4; i++ ) 688 { 689 memset( m_apSegmentDCOffset[i] + firstElement, 0, numElements * sizeof( *m_apSegmentDCOffset[i] ) ); 690 } 691 #else 657 692 memset( m_apSegmentDCOffset[0] + firstElement, 0, numElements * sizeof( *m_apSegmentDCOffset[0] ) ); 658 693 memset( m_apSegmentDCOffset[1] + firstElement, 0, numElements * sizeof( *m_apSegmentDCOffset[1] ) ); 659 694 #endif 660 695 #endif 661 #if H_3D_INTER_SDC 696 #endif 697 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 662 698 memset( m_pbInterSDCFlag + firstElement, 0, numElements * sizeof( *m_pbInterSDCFlag ) ); 663 699 for( Int i = 0; i < 4; i++ ) … … 836 872 #if H_3D_DIM_SDC 837 873 m_pbSDCFlag [ui] = false; 874 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 875 for( Int i = 0; i < 4; i++ ) 876 { 877 m_apSegmentDCOffset[i][ui] = 0; 878 } 879 #else 838 880 m_apSegmentDCOffset[0][ui] = 0; 839 881 m_apSegmentDCOffset[1][ui] = 0; 840 882 #endif 841 883 #endif 842 #if H_3D_INTER_SDC 884 #endif 885 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 843 886 m_pbInterSDCFlag[ui] = false; 844 887 for( Int i = 0; i < 4; i++ ) … … 958 1001 #if H_3D_DIM_SDC 959 1002 memset( m_pbSDCFlag, 0, sizeof(Bool) * m_uiNumPartition ); 1003 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 1004 for( Int i = 0; i < 4; i++ ) 1005 { 1006 memset( m_apSegmentDCOffset[i], 0, sizeof(Pel) * m_uiNumPartition ); 1007 } 1008 #else 960 1009 memset( m_apSegmentDCOffset[0], 0, sizeof(Pel) * m_uiNumPartition ); 961 1010 memset( m_apSegmentDCOffset[1], 0, sizeof(Pel) * m_uiNumPartition ); 962 1011 #endif 963 1012 #endif 964 #if H_3D_INTER_SDC 1013 #endif 1014 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 965 1015 memset( m_pbInterSDCFlag, 0, sizeof( Bool ) * m_uiNumPartition ); 966 1016 for( Int i = 0; i < 4; i++ ) … … 1044 1094 #if H_3D_DIM_SDC 1045 1095 m_pbSDCFlag [ui] = pcCU->m_pbSDCFlag [ uiPartOffset + ui ]; 1096 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 1097 for( Int i = 0; i < 4; i++ ) 1098 { 1099 m_apSegmentDCOffset[i][ui] = pcCU->m_apSegmentDCOffset[i] [ uiPartOffset + ui ]; 1100 } 1101 #else 1046 1102 m_apSegmentDCOffset[0][ui] = pcCU->m_apSegmentDCOffset[0] [ uiPartOffset + ui ]; 1047 1103 m_apSegmentDCOffset[1][ui] = pcCU->m_apSegmentDCOffset[1] [ uiPartOffset + ui ]; 1048 1104 #endif 1049 1105 #endif 1050 #if H_3D_INTER_SDC 1106 #endif 1107 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 1051 1108 m_pbInterSDCFlag [ui] = pcCU->m_pbInterSDCFlag [ uiPartOffset + ui ]; 1052 1109 for( Int i = 0; i < 4; i++ ) … … 1208 1265 #if H_3D_DIM_SDC 1209 1266 m_pbSDCFlag = pcCU->getSDCFlag() + uiPart; 1267 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 1268 for( Int i = 0; i < 4; i++ ) 1269 { 1270 m_apSegmentDCOffset[i] = pcCU->getSDCSegmentDCOffset(i) + uiPart; 1271 } 1272 #else 1210 1273 m_apSegmentDCOffset[0] = pcCU->getSDCSegmentDCOffset(0) + uiPart; 1211 1274 m_apSegmentDCOffset[1] = pcCU->getSDCSegmentDCOffset(1) + uiPart; 1212 1275 #endif 1213 1276 #endif 1214 #if H_3D_INTER_SDC 1277 #endif 1278 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 1215 1279 m_pbInterSDCFlag = pcCU->getInterSDCFlag() + uiPart; 1216 1280 for( Int i = 0; i < 4; i++ ) … … 1420 1484 #if H_3D_DIM_SDC 1421 1485 memcpy( m_pbSDCFlag + uiOffset, pcCU->getSDCFlag(), iSizeInBool ); 1486 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 1487 for( Int i = 0; i < 4; i++ ) 1488 { 1489 memcpy( m_apSegmentDCOffset[i] + uiOffset, pcCU->getSDCSegmentDCOffset(i), sizeof( Pel ) * uiNumPartition); 1490 } 1491 #else 1422 1492 memcpy( m_apSegmentDCOffset[0] + uiOffset, pcCU->getSDCSegmentDCOffset(0), sizeof( Pel ) * uiNumPartition); 1423 1493 memcpy( m_apSegmentDCOffset[1] + uiOffset, pcCU->getSDCSegmentDCOffset(1), sizeof( Pel ) * uiNumPartition); 1424 1494 #endif 1425 1495 #endif 1426 #if H_3D_INTER_SDC 1496 #endif 1497 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 1427 1498 memcpy( m_pbInterSDCFlag + uiOffset, pcCU->getInterSDCFlag(), iSizeInBool ); 1428 1499 for( Int i = 0; i < 4; i++ ) … … 1550 1621 #if H_3D_DIM_SDC 1551 1622 memcpy( rpcCU->getSDCFlag() + m_uiAbsIdxInLCU, m_pbSDCFlag, iSizeInBool ); 1623 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 1624 for( Int i = 0; i < 4; i++ ) 1625 { 1626 memcpy( rpcCU->getSDCSegmentDCOffset(i) + m_uiAbsIdxInLCU, m_apSegmentDCOffset[i], sizeof( Pel ) * m_uiNumPartition); 1627 } 1628 #else 1552 1629 memcpy( rpcCU->getSDCSegmentDCOffset(0) + m_uiAbsIdxInLCU, m_apSegmentDCOffset[0], sizeof( Pel ) * m_uiNumPartition); 1553 1630 memcpy( rpcCU->getSDCSegmentDCOffset(1) + m_uiAbsIdxInLCU, m_apSegmentDCOffset[1], sizeof( Pel ) * m_uiNumPartition); 1554 1631 #endif 1555 1632 #endif 1556 #if H_3D_INTER_SDC 1633 #endif 1634 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 1557 1635 memcpy( rpcCU->getInterSDCFlag() + m_uiAbsIdxInLCU, m_pbInterSDCFlag, iSizeInBool ); 1558 1636 for( Int i = 0;i < 4; i++ ) … … 1667 1745 #if H_3D_DIM_SDC 1668 1746 memcpy( rpcCU->getSDCFlag() + uiPartOffset, m_pbSDCFlag, iSizeInBool ); 1747 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 1748 for( Int i = 0; i < 4; i++ ) 1749 { 1750 memcpy( rpcCU->getSDCSegmentDCOffset(i) + uiPartOffset, m_apSegmentDCOffset[i], sizeof( Pel ) * uiQNumPart); 1751 } 1752 #else 1669 1753 memcpy( rpcCU->getSDCSegmentDCOffset(0) + uiPartOffset, m_apSegmentDCOffset[0], sizeof( Pel ) * uiQNumPart); 1670 1754 memcpy( rpcCU->getSDCSegmentDCOffset(1) + uiPartOffset, m_apSegmentDCOffset[1], sizeof( Pel ) * uiQNumPart); 1671 1755 #endif 1672 1756 #endif 1673 #if H_3D_INTER_SDC 1757 #endif 1758 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 1674 1759 memcpy( rpcCU->getInterSDCFlag() + uiPartOffset, m_pbInterSDCFlag, iSizeInBool ); 1675 1760 for( Int i = 0; i < 4; i++ ) … … 2504 2589 2505 2590 #if H_3D_INTER_SDC 2591 #if !QC_SDC_UNIFY_G0130 2506 2592 Void TComDataCU::setInterSDCFlagSubParts ( Bool bInterSDCFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ) 2507 2593 { … … 2513 2599 return 0; 2514 2600 } 2515 2601 #endif 2602 2603 #if !SEC_INTER_SDC_G0101 2516 2604 Void TComDataCU::xSetInterSDCCUMask( TComDataCU *pcCU, UChar *pMask ) 2517 2605 { … … 2611 2699 } 2612 2700 #endif 2701 #endif 2702 2703 #if QC_GENERIC_SDC_G0122 2704 UInt TComDataCU::getCtxSDCFlag( UInt uiAbsPartIdx ) 2705 { 2706 #if QC_SDC_UNIFY_G0130 2707 return 0; 2708 #else 2709 TComDataCU* pcTempCU; 2710 UInt uiTempPartIdx; 2711 UInt uiCtx = 0; 2712 2713 // Get BCBP of left PU 2714 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 2715 uiCtx = ( pcTempCU && pcTempCU->isIntra( uiTempPartIdx ) ) ? pcTempCU->getSDCFlag( uiTempPartIdx ) : 0; 2716 2717 // Get BCBP of above PU 2718 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 2719 uiCtx += ( pcTempCU && pcTempCU->isIntra( uiTempPartIdx ) ) ? pcTempCU->getSDCFlag( uiTempPartIdx ) : 0; 2720 2721 return uiCtx; 2722 #endif 2723 } 2724 2725 UInt TComDataCU::getCtxAngleFlag( UInt uiAbsPartIdx ) 2726 { 2727 TComDataCU* pcTempCU; 2728 UInt uiTempPartIdx; 2729 UInt uiCtx = 0; 2730 2731 // Get BCBP of left PU 2732 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 2733 uiCtx = ( pcTempCU && pcTempCU->isIntra( uiTempPartIdx ) ) ? ( pcTempCU->getLumaIntraDir( uiTempPartIdx ) < NUM_INTRA_MODE ? 1 : 0 ) : 0; 2734 2735 // Get BCBP of above PU 2736 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 2737 uiCtx += ( pcTempCU && pcTempCU->isIntra( uiTempPartIdx ) ) ? ( pcTempCU->getLumaIntraDir( uiTempPartIdx ) < NUM_INTRA_MODE ? 1 : 0 ) : 0; 2738 2739 return uiCtx; 2740 } 2741 #endif 2613 2742 2614 2743 UInt TComDataCU::getCtxInterDir( UInt uiAbsPartIdx ) … … 2838 2967 if( !getSlice()->getIsDepth() || !isIntra(uiAbsPartIdx) || getPartitionSize(uiAbsPartIdx) != SIZE_2Nx2N ) 2839 2968 return false; 2840 2969 #if QC_GENERIC_SDC_G0122 2970 if( isDimMode( getLumaIntraDir( uiAbsPartIdx ) ) && !isDimDeltaDC( getLumaIntraDir( uiAbsPartIdx ) ) ) 2971 { 2972 return true; 2973 } 2974 2975 if( getLumaIntraDir( uiAbsPartIdx ) < NUM_INTRA_MODE ) 2976 { 2977 return true; 2978 } 2979 2980 return false; 2981 #endif 2841 2982 // check prediction mode 2842 2983 UInt uiLumaPredMode = getLumaIntraDir( uiAbsPartIdx ); -
branches/HTM-9.3-dev0/source/Lib/TLibCommon/TComDataCU.h
r826 r827 232 232 #if H_3D_DIM_SDC 233 233 Bool* m_pbSDCFlag; 234 #if QC_SDC_UNIFY_G0130 && !SEC_INTER_SDC_G0101 235 Pel* m_apSegmentDCOffset[4]; 236 #else 234 237 Pel* m_apSegmentDCOffset[2]; 235 238 #endif 236 239 #endif 240 #endif 237 241 #if H_3D_INTER_SDC 242 #if !QC_SDC_UNIFY_G0130 238 243 Bool* m_pbInterSDCFlag; 239 244 Int* m_apSegmentInterDCOffset[4]; 245 #endif 246 #if !SEC_INTER_SDC_G0101 240 247 UChar* m_pucInterSDCMask; 248 #endif 241 249 #endif 242 250 #if H_3D_DBBP … … 619 627 Pel getSDCSegmentDCOffset( UInt uiSeg, UInt uiPartIdx ) { return m_apSegmentDCOffset[uiSeg][uiPartIdx]; } 620 628 Void setSDCSegmentDCOffset( Pel pOffset, UInt uiSeg, UInt uiPartIdx) { m_apSegmentDCOffset[uiSeg][uiPartIdx] = pOffset; } 629 #if QC_GENERIC_SDC_G0122 630 UInt getCtxSDCFlag ( UInt uiAbsPartIdx ); 631 UInt getCtxAngleFlag ( UInt uiAbsPartIdx ); 632 #endif 621 633 #endif 622 634 #endif 623 635 #if H_3D_INTER_SDC 636 #if !QC_SDC_UNIFY_G0130 624 637 Bool* getInterSDCFlag () { return m_pbInterSDCFlag; } 625 638 Bool getInterSDCFlag ( UInt uiIdx ) { return m_pbInterSDCFlag[uiIdx]; } … … 630 643 Void setInterSDCSegmentDCOffset( Int pOffset, UInt uiSeg, UInt uiPartIdx) { m_apSegmentInterDCOffset[uiSeg][uiPartIdx] = pOffset; } 631 644 645 #endif 646 #if !SEC_INTER_SDC_G0101 632 647 Void xSetInterSDCCUMask( TComDataCU *pcCU, UChar *pMask ); 633 648 634 649 UChar* getInterSDCMask () { return m_pucInterSDCMask; } 650 #endif 635 651 #endif 636 652 -
branches/HTM-9.3-dev0/source/Lib/TLibCommon/TComPrediction.cpp
r821 r827 416 416 417 417 #if H_3D_DIM 418 Void TComPrediction::predIntraLumaDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiIntraMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bFastEnc ) 418 Void TComPrediction::predIntraLumaDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiIntraMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bFastEnc 419 #if QC_GENERIC_SDC_G0122 420 , TComWedgelet* dmm4Segmentation 421 #endif 422 ) 419 423 { 420 424 assert( iWidth == iHeight ); … … 442 446 case( DMM4_IDX ): 443 447 { 448 #if QC_GENERIC_SDC_G0122 449 if( dmm4Segmentation == NULL ) 450 { 451 dmmSegmentation = new TComWedgelet( iWidth, iHeight ); 452 xPredContourFromTex( pcCU, uiAbsPartIdx, iWidth, iHeight, dmmSegmentation ); 453 } 454 else 455 { 456 xPredContourFromTex( pcCU, uiAbsPartIdx, iWidth, iHeight, dmm4Segmentation ); 457 dmmSegmentation = dmm4Segmentation; 458 } 459 #else 444 460 dmmSegmentation = new TComWedgelet( iWidth, iHeight ); 445 461 xPredContourFromTex( pcCU, uiAbsPartIdx, iWidth, iHeight, dmmSegmentation ); 462 #endif 446 463 } break; 447 464 default: assert(0); … … 494 511 495 512 #if H_3D_DIM_DMM 513 #if QC_GENERIC_SDC_G0122 514 if( dimType == DMM4_IDX && dmm4Segmentation == NULL ) { dmmSegmentation->destroy(); delete dmmSegmentation; } 515 #else 496 516 if( dimType == DMM4_IDX ) { dmmSegmentation->destroy(); delete dmmSegmentation; } 517 #endif 497 518 #endif 498 519 } … … 2464 2485 if( bL == bT ) 2465 2486 { 2487 #if SCU_HS_DEPTH_DC_PRED_G0143 2488 const Int iTRR = ( patternStride * 2 - 1 ) - srcStride; 2489 const Int iLBB = ( patternStride * 2 - 1 ) * srcStride - 1; 2490 refDC1 = bL ? ( ptrSrc[iTR] + ptrSrc[iLB] )>>1 : (abs(ptrSrc[iTRR] - ptrSrc[-(Int)srcStride]) > abs(ptrSrc[iLBB] - ptrSrc[ -1]) ? ptrSrc[iTRR] : ptrSrc[iLBB]); 2491 #else 2466 2492 refDC1 = bL ? ( ptrSrc[iTR] + ptrSrc[iLB] )>>1 : 1<<( g_bitDepthY - 1 ); 2493 #endif 2467 2494 refDC2 = ( ptrSrc[ -1] + ptrSrc[-(Int)srcStride] )>>1; 2468 2495 } … … 2566 2593 Int iSumPix[2]; 2567 2594 memset(iSumPix, 0, sizeof(Int)*2); 2568 2595 #if QC_GENERIC_SDC_G0122 2596 for( Int i = 0; i < uiNumSegments; i++ ) 2597 { 2598 rpSegMeans[i] = 0; 2599 } 2600 #endif 2569 2601 if (orgDC == false) 2570 2602 { … … 2581 2613 rpSegMeans[ucSegmentRB] = pOrig[uiStride * (uiSize-1) + (uiSize-1) ]; 2582 2614 } 2615 #if QC_GENERIC_SDC_G0122 2616 else if( getDimType( uiIntraMode ) == DMM4_IDX ) 2617 { 2618 Pel *ptmpOrig = pOrig; 2619 Bool *ptmpMask = pMask, bBreak = false; 2620 UChar ucSegment = ptmpMask? (UChar) ptmpMask[0] : 0; 2621 UChar bFirstSeg = ucSegment; 2622 2623 rpSegMeans[ucSegment] = ptmpOrig[0]; 2624 for ( Int y = 0; y < uiSize; y++ ) 2625 { 2626 for ( Int x = 0; x < uiSize; x++ ) 2627 { 2628 ucSegment = ptmpMask[x]; 2629 assert( ucSegment < uiNumSegments ); 2630 2631 if( bFirstSeg != ucSegment ) 2632 { 2633 rpSegMeans[ucSegment] = ptmpOrig[x]; 2634 bBreak = true; 2635 break; 2636 } 2637 } 2638 2639 if( bBreak ) 2640 { 2641 break; 2642 } 2643 2644 ptmpOrig += uiStride; 2645 ptmpMask += uiMaskStride; 2646 } 2647 } 2648 else 2649 #else 2583 2650 else if (uiIntraMode == PLANAR_IDX) 2651 #endif 2584 2652 { 2585 2653 Pel* pLeftTop = pOrig; -
branches/HTM-9.3-dev0/source/Lib/TLibCommon/TComPrediction.h
r816 r827 171 171 #if H_3D_DIM 172 172 // Depth intra 173 Void predIntraLumaDepth ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiIntraMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bFastEnc = false ); 173 Void predIntraLumaDepth ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiIntraMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bFastEnc = false 174 #if QC_GENERIC_SDC_G0122 175 , TComWedgelet* dmm4Segmentation = NULL 176 #endif 177 ); 174 178 #if H_3D_DIM_SDC 175 179 Void analyzeSegmentsSDC ( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride -
branches/HTM-9.3-dev0/source/Lib/TLibCommon/TComRdCost.cpp
r823 r827 637 637 cDtParam.uiComp = 255; // just for assert: to be sure it was set before use, since only values 0,1 or 2 are allowed. 638 638 639 #if SCU_HS_VSD_BUGFIX_IMPROV_G0163 640 cDtParam.bitDepth = g_bitDepthY; 641 #endif 639 642 Dist dist = cDtParam.DistFunc( &cDtParam ); 640 643 … … 3021 3024 dD = ( (Double) ( dDM >> DISTORTION_PRECISION_ADJUSTMENT( g_bitDepthY - 8 ) ) ) * m_dDisparityCoeff; 3022 3025 3026 #if SCU_HS_VSD_BUGFIX_IMPROV_G0163 3027 Double dDepthWeight = ( pOrg[x] >= ( (1<<(g_bitDepthY - 3)) + (1<<(g_bitDepthY - 2)) ) ? 4 : pOrg[x] > ((1<<g_bitDepthY) >> 4) ? (Float)(pOrg[x] - ((1<<g_bitDepthY) >> 4))/(Float)((1<<g_bitDepthY) >> 3) + 1 : 1.0 ); 3028 Double dTemp = ( 0.5 * fabs(dD) * dDepthWeight * ( abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x-1+y*iVirStride ] ) + abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x+1+y*iVirStride ] ) ) ); 3029 #else 3023 3030 Double dTemp = ( 0.5 * fabs(dD) * ( abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x-1+y*iVirStride ] ) + abs( (Int) pVirRec[ x+y*iVirStride ] - (Int) pVirRec[ x+1+y*iVirStride ] ) ) ); 3031 #endif 3024 3032 iTemp = (Int) (((dTemp) < 0)? (Int)((dTemp) - 0.5) : (Int)((dTemp) + 0.5)); 3025 3033 -
branches/HTM-9.3-dev0/source/Lib/TLibCommon/TypeDef.h
r826 r827 227 227 #endif 228 228 229 #define SCU_HS_VSD_BUGFIX_IMPROV_G0163 1 229 230 //// ****** NEIGHBOURING BLOCK-BASED DISPARITY VECTOR ********* 230 231 #if H_3D_NBDV … … 253 254 #define H_3D_DIM_DLT 1 // Depth Lookup Table 254 255 256 #define SCU_HS_DEPTH_DC_PRED_G0143 1 255 257 #if H_3D_DIM_DLT 256 258 #define H_3D_DELTA_DLT 1 257 259 #endif 258 260 #define QC_GENERIC_SDC_G0122 1 // Generalize SDC to all depth intra modes 261 #if H_3D_DIM_SDC && H_3D_INTER_SDC 262 #define QC_SDC_UNIFY_G0130 1 // Unify intra SDC and inter SDC 263 #define QC_SDC_UNIFY_G0130_FIX 1 // Fix bug of G0130 264 #endif 265 #define SEC_INTER_SDC_G0101 1 // Improved inter SDC with multiple DC candidates 259 266 #define H_3D_DIM_ENC 1 // Depth Intra encoder optimizations, includes: 260 267 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 261 268 // LG_ZEROINTRADEPTHRESI_A0087 269 #endif 270 #define QC_PKU_SDC_SPLIT_G0123 1 // Intra SDC Split 271 #if QC_PKU_SDC_SPLIT_G0123 272 #define HS_TSINGHUA_SDC_SPLIT_G0111 1 262 273 #endif 263 274 ///// ***** VIEW SYNTHESIS PREDICTION *********
Note: See TracChangeset for help on using the changeset viewer.