Changeset 837 in 3DVCSoftware for branches/HTM-10.0rc1-dev0/source/Lib/TLibCommon/TComYuv.cpp
- Timestamp:
- 8 Feb 2014, 00:23:11 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.0rc1-dev0/source/Lib/TLibCommon/TComYuv.cpp
r622 r837 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 110 110 { 111 111 ::memcpy( pDst, pSrc, sizeof(Pel)*iWidth); 112 113 112 #if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC 114 113 if ( g_traceCopyBack && g_nSymbolCounter >= g_stopAtCounter ) … … 121 120 } 122 121 #endif 123 124 122 pDst += iDstStride; 125 123 pSrc += iSrcStride; … … 616 614 { 617 615 #if DISABLING_CLIP_FOR_BIPREDME 618 pDst[x ] = (pDst[x ]<<1) - pSrc[x ];616 pDst[x ] = 2 * pDst[x] - pSrc[x]; 619 617 #else 620 pDst[x ] = Clip ( (pDst[x ]<<1) - pSrc[x ]);618 pDst[x ] = ClipY(2 * pDst[x] - pSrc[x]); 621 619 #endif 622 620 } … … 636 634 { 637 635 #if DISABLING_CLIP_FOR_BIPREDME 638 pDstU[x ] = (pDstU[x ]<<1) - pSrcU[x ];639 pDstV[x ] = (pDstV[x ]<<1) - pSrcV[x ];636 pDstU[x ] = 2 * pDstU[x] - pSrcU[x]; 637 pDstV[x ] = 2 * pDstV[x] - pSrcV[x]; 640 638 #else 641 pDstU[x ] = Clip ( (pDstU[x ]<<1) - pSrcU[x ]);642 pDstV[x ] = Clip ( (pDstV[x ]<<1) - pSrcV[x ]);639 pDstU[x ] = ClipC(2 * pDstU[x] - pSrcU[x]); 640 pDstV[x ] = ClipC(2 * pDstV[x] - pSrcV[x]); 643 641 #endif 644 642 } … … 649 647 } 650 648 } 651 652 #if H_3D653 Void TComYuv::addClipPartLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize )654 {655 Int x, y;656 657 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiTrUnitIdx);658 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiTrUnitIdx);659 Pel* pDst = getLumaAddr( uiTrUnitIdx);660 661 UInt iSrc0Stride = pcYuvSrc0->getStride();662 UInt iSrc1Stride = pcYuvSrc1->getStride();663 UInt iDstStride = getStride();664 for ( y = uiPartSize-1; y >= 0; y-- )665 {666 for ( x = uiPartSize-1; x >= 0; x-- )667 {668 pDst[x] = ClipY( pSrc0[x] + pSrc1[x] );669 }670 pSrc0 += iSrc0Stride;671 pSrc1 += iSrc1Stride;672 pDst += iDstStride;673 }674 }675 676 #if H_3D_ARP677 Void TComYuv::addARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )678 {679 addARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight , bClip );680 addARPChroma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1, uiHeight>>1 , bClip );681 }682 683 Void TComYuv::addARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )684 {685 Int x, y;686 687 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx );688 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx );689 Pel* pDst = getLumaAddr( uiAbsPartIdx );690 691 UInt iSrc0Stride = pcYuvSrc0->getStride();692 UInt iSrc1Stride = pcYuvSrc1->getStride();693 UInt iDstStride = getStride();694 for ( y = uiHeight-1; y >= 0; y-- )695 {696 for ( x = uiWidth-1; x >= 0; x-- )697 {698 pDst[x] = pSrc0[x] + pSrc1[x];699 if( bClip )700 {701 pDst[x] = ClipY( pDst[x] );702 }703 }704 pSrc0 += iSrc0Stride;705 pSrc1 += iSrc1Stride;706 pDst += iDstStride;707 }708 }709 710 Void TComYuv::addARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )711 {712 Int x, y;713 714 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx );715 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx );716 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx );717 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx );718 Pel* pDstU = getCbAddr( uiAbsPartIdx );719 Pel* pDstV = getCrAddr( uiAbsPartIdx );720 721 UInt iSrc0Stride = pcYuvSrc0->getCStride();722 UInt iSrc1Stride = pcYuvSrc1->getCStride();723 UInt iDstStride = getCStride();724 for ( y = uiHeight-1; y >= 0; y-- )725 {726 for ( x = uiWidth-1; x >= 0; x-- )727 {728 pDstU[x] = pSrcU0[x] + pSrcU1[x];729 pDstV[x] = pSrcV0[x] + pSrcV1[x];730 if( bClip )731 {732 pDstU[x] = ClipC( pDstU[x] );733 pDstV[x] = ClipC( pDstV[x] );734 }735 }736 737 pSrcU0 += iSrc0Stride;738 pSrcU1 += iSrc1Stride;739 pSrcV0 += iSrc0Stride;740 pSrcV1 += iSrc1Stride;741 pDstU += iDstStride;742 pDstV += iDstStride;743 }744 }745 746 Void TComYuv::subtractARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )747 {748 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight );749 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 );750 }751 752 Void TComYuv::subtractARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )753 {754 Int x, y;755 756 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx );757 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx );758 Pel* pDst = getLumaAddr( uiAbsPartIdx );759 760 Int iSrc0Stride = pcYuvSrc0->getStride();761 Int iSrc1Stride = pcYuvSrc1->getStride();762 Int iDstStride = getStride();763 for ( y = uiHeight-1; y >= 0; y-- )764 {765 for ( x = uiWidth-1; x >= 0; x-- )766 {767 pDst[x] = pSrc0[x] - pSrc1[x];768 }769 pSrc0 += iSrc0Stride;770 pSrc1 += iSrc1Stride;771 pDst += iDstStride;772 }773 }774 775 Void TComYuv::subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )776 {777 Int x, y;778 779 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx );780 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx );781 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx );782 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx );783 Pel* pDstU = getCbAddr( uiAbsPartIdx );784 Pel* pDstV = getCrAddr( uiAbsPartIdx );785 786 Int iSrc0Stride = pcYuvSrc0->getCStride();787 Int iSrc1Stride = pcYuvSrc1->getCStride();788 Int iDstStride = getCStride();789 for ( y = uiHeight-1; y >= 0; y-- )790 {791 for ( x = uiWidth-1; x >= 0; x-- )792 {793 pDstU[x] = pSrcU0[x] - pSrcU1[x];794 pDstV[x] = pSrcV0[x] - pSrcV1[x];795 }796 pSrcU0 += iSrc0Stride;797 pSrcU1 += iSrc1Stride;798 pSrcV0 += iSrc0Stride;799 pSrcV1 += iSrc1Stride;800 pDstU += iDstStride;801 pDstV += iDstStride;802 }803 }804 805 Void TComYuv::multiplyARP( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW )806 {807 multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW );808 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW );809 }810 811 Void TComYuv::xxMultiplyLine( Pel* pSrcDst , UInt uiWidth , UChar dW )812 {813 assert( dW == 2 );814 for( UInt x = 0 ; x < uiWidth ; x++ )815 pSrcDst[x] = pSrcDst[x] >> 1;816 }817 818 Void TComYuv::multiplyARPLuma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW )819 {820 Pel* pDst = getLumaAddr( uiAbsPartIdx );821 Int iDstStride = getStride();822 for ( Int y = uiHeight-1; y >= 0; y-- )823 {824 xxMultiplyLine( pDst , uiWidth , dW );825 pDst += iDstStride;826 }827 }828 829 Void TComYuv::multiplyARPChroma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW )830 {831 Pel* pDstU = getCbAddr( uiAbsPartIdx );832 Pel* pDstV = getCrAddr( uiAbsPartIdx );833 834 Int iDstStride = getCStride();835 for ( Int y = uiHeight-1; y >= 0; y-- )836 {837 xxMultiplyLine( pDstU , uiWidth , dW );838 xxMultiplyLine( pDstV , uiWidth , dW );839 pDstU += iDstStride;840 pDstV += iDstStride;841 }842 }843 #endif844 #endif845 649 //! \}
Note: See TracChangeset for help on using the changeset viewer.