Changeset 433 in 3DVCSoftware for branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
- Timestamp:
- 22 May 2013, 21:05:43 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
r427 r433 50 50 #endif 51 51 52 #if HHI_DELTADC_DLT_D0035 53 #define GetDepthValue2Idx(val) (pcCU->getSlice()->getSPS()->depthValue2idx(val)) 54 #define GetIdx2DepthValue(val) (pcCU->getSlice()->getSPS()->idx2DepthValue(val)) 55 #endif 56 52 57 #if MERL_General_Fix 53 58 #if MERL_VSP_C0152 … … 555 560 // Do prediction 556 561 { 562 #if QC_DC_PREDICTOR_D0183 563 Int iMean0, iMean1; 564 getPredDCs( pbRegion, iWidth, pSrc+srcStride+1, srcStride, iMean0, iMean1 ); 565 #else 557 566 //UInt uiSum0 = 0, uiSum1 = 0; 558 567 Int iSum0 = 0, iSum1 = 0; … … 593 602 iMean0 = iSum0 / iCount0; // TODO : integer op. 594 603 iMean1 = iSum1 / iCount1; 604 #endif 595 605 #if LGE_EDGE_INTRA_DELTA_DC 596 606 if( bDelta ) … … 3163 3173 } 3164 3174 3175 #if QC_DC_PREDICTOR_D0183 3176 Void TComPrediction::getPredDCs( Bool* pbPattern, Int iStride, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2 ) 3177 { 3178 Int iDC1, iDC2; 3179 const Int iTR = ( iStride - 1 ) - iMaskStride; 3180 const Int iTM = ( ( iStride - 1 ) >> 1 ) - iMaskStride; 3181 const Int iLB = ( iStride - 1 ) * iMaskStride - 1; 3182 const Int iLM = ( ( iStride - 1 ) >> 1 ) * iMaskStride - 1; 3183 const UInt uiBitDepth = g_uiBitDepth + g_uiBitIncrement; 3184 3185 Bool bL = ( pbPattern[0] != pbPattern[(iStride-1)*iStride] ); 3186 Bool bT = ( pbPattern[0] != pbPattern[(iStride-1)] ); 3187 3188 if( bL == bT ) 3189 { 3190 iDC1 = bL ? ( piMask[iTR] + piMask[iLB] )>>1 : 1<<( uiBitDepth - 1 ); 3191 iDC2 = ( piMask[ -1] + piMask[-iMaskStride] )>>1; 3192 } 3193 else 3194 { 3195 iDC1 = bL ? piMask[iLB] : piMask[iTR]; 3196 iDC2 = bL ? piMask[iTM] : piMask[iLM]; 3197 } 3198 3199 riPredDC1 = pbPattern[0] ? iDC1 : iDC2; 3200 riPredDC2 = pbPattern[0] ? iDC2 : iDC1; 3201 } 3202 #else 3165 3203 Void TComPrediction::getWedgePredDCs( TComWedgelet* pcWedgelet, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2, Bool bAbove, Bool bLeft ) 3166 3204 { … … 3240 3278 } 3241 3279 } 3280 #endif 3242 3281 3243 3282 Void TComPrediction::calcWedgeDCs( TComWedgelet* pcWedgelet, Pel* piOrig, UInt uiStride, Int& riDC1, Int& riDC2 ) … … 3607 3646 Int iMaskStride = ( iWidth<<1 ) + 1; 3608 3647 piMask += iMaskStride+1; 3648 #if QC_DC_PREDICTOR_D0183 3649 getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 ); 3650 #else 3609 3651 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 3652 #endif 3610 3653 3611 3654 // assign wedge pred DCs to prediction 3612 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 3613 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); } 3655 if( bDelta ) 3656 { 3657 #if HHI_DELTADC_DLT_D0035 3658 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, GetIdx2DepthValue( GetDepthValue2Idx(iPredDC1) + iDeltaDC1 ), GetIdx2DepthValue( GetDepthValue2Idx(iPredDC2) + iDeltaDC2 ) ); 3659 #else 3660 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); 3661 #endif 3662 } 3663 else 3664 { 3665 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); 3666 } 3614 3667 } 3615 3668 … … 3626 3679 Int iMaskStride = ( iWidth<<1 ) + 1; 3627 3680 piMask += iMaskStride+1; 3681 #if QC_DC_PREDICTOR_D0183 3682 getPredDCs( pcContourWedge->getPattern(), pcContourWedge->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 ); 3683 #else 3628 3684 getWedgePredDCs( pcContourWedge, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 3685 #endif 3629 3686 3630 3687 // assign wedge pred DCs to prediction 3631 if( bDelta ) { assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 3632 else { assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, iPredDC1, iPredDC2 ); } 3688 if( bDelta ) 3689 { 3690 #if HHI_DELTADC_DLT_D0035 3691 assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, GetIdx2DepthValue( GetDepthValue2Idx(iPredDC1) + iDeltaDC1 ), GetIdx2DepthValue( GetDepthValue2Idx(iPredDC2) + iDeltaDC2 ) ); 3692 #else 3693 assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); 3694 #endif 3695 } 3696 else 3697 { 3698 assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, iPredDC1, iPredDC2 ); 3699 } 3633 3700 3634 3701 pcContourWedge->destroy(); … … 3801 3868 Int iMaskStride = ( iWidth<<1 ) + 1; 3802 3869 piMask += iMaskStride+1; 3870 #if QC_DC_PREDICTOR_D0183 3871 getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 ); 3872 #else 3803 3873 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 3874 #endif 3804 3875 3805 3876 // assign wedge pred DCs to prediction 3806 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 3807 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); } 3877 if( bDelta ) 3878 { 3879 #if HHI_DELTADC_DLT_D0035 3880 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, GetIdx2DepthValue( GetDepthValue2Idx(iPredDC1) + iDeltaDC1 ), GetIdx2DepthValue( GetDepthValue2Idx(iPredDC2) + iDeltaDC2 ) ); 3881 #else 3882 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); 3883 #endif 3884 } 3885 else 3886 { 3887 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); 3888 } 3808 3889 } 3809 3890 … … 3836 3917 Int iMaskStride = ( iWidth<<1 ) + 1; 3837 3918 piMask += iMaskStride+1; 3919 #if QC_DC_PREDICTOR_D0183 3920 getPredDCs( pcWedgelet->getPattern(), pcWedgelet->getStride(), piMask, iMaskStride, iPredDC1, iPredDC2 ); 3921 #else 3838 3922 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 3923 #endif 3839 3924 3840 3925 // assign wedge pred DCs to prediction 3841 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 3842 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); } 3926 if( bDelta ) 3927 { 3928 #if HHI_DELTADC_DLT_D0035 3929 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, GetIdx2DepthValue( GetDepthValue2Idx(iPredDC1) + iDeltaDC1 ), GetIdx2DepthValue( GetDepthValue2Idx(iPredDC2) + iDeltaDC2 ) ); 3930 #else 3931 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); 3932 #endif 3933 } 3934 else 3935 { 3936 assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); 3937 } 3843 3938 } 3844 3939
Note: See TracChangeset for help on using the changeset viewer.