Changeset 792 in 3DVCSoftware for branches/HTM-9.3-dev3-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp
- Timestamp:
- 23 Jan 2014, 05:06:49 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev3-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp
r782 r792 5633 5633 5634 5634 #if H_3D_INTER_SDC 5635 #if SEC_INTER_SDC_G0101 5636 Void TEncSearch::encodeResAndCalcRdInterSDCCU( TComDataCU* pcCU, TComYuv* pcOrg, TComYuv* pcPred, TComYuv* pcResi, TComYuv* pcRec, Int uiOffest, const UInt uiDepth ) 5637 #else 5635 5638 Void TEncSearch::encodeResAndCalcRdInterSDCCU( TComDataCU* pcCU, TComYuv* pcOrg, TComYuv* pcPred, TComYuv* pcResi, TComYuv* pcRec, const UInt uiDepth ) 5639 #endif 5636 5640 { 5637 5641 if( !pcCU->getSlice()->getIsDepth() || pcCU->isIntra( 0 ) ) … … 5647 5651 UInt uiWidth = pcCU->getWidth ( 0 ); 5648 5652 UInt uiHeight = pcCU->getHeight( 0 ); 5653 #if SEC_INTER_SDC_G0101 5654 UInt uiSegSize = 0; 5655 #else 5649 5656 UChar* pMask = pcCU->getInterSDCMask(); 5650 5657 memset( pMask, 0, uiWidth*uiHeight ); … … 5653 5660 5654 5661 UInt uiSegSize[4] = { 0, 0, 0, 0 }; 5662 #endif 5655 5663 Pel *pPred, *pOrg; 5656 5664 UInt uiPredStride = pcPred->getStride(); 5657 5665 UInt uiOrgStride = pcOrg->getStride(); 5658 5666 UInt uiPelX, uiPelY; 5667 #if !SEC_INTER_SDC_G0101 5659 5668 UInt uiPartitionSize = pcCU->getPartitionSize( 0 ); 5660 5669 UInt uiSegmentNum = ( uiPartitionSize == SIZE_2Nx2N ) ? 1 : ( uiPartitionSize == SIZE_NxN ? 4 : 2 ); 5670 #endif 5661 5671 5662 5672 pPred = pcPred->getLumaAddr( 0 ); 5663 5673 pOrg = pcOrg->getLumaAddr( 0 ); 5674 #if SEC_INTER_SDC_G0101 5675 Int pResDC = 0; 5676 #else 5664 5677 Int pResDC[4] = { 0, 0, 0, 0}; 5678 #endif 5665 5679 5666 5680 //calculate dc value for prediction and original signal, and calculate residual and reconstruction … … 5669 5683 for( uiPelX = 0; uiPelX < uiWidth; uiPelX++ ) 5670 5684 { 5685 #if SEC_INTER_SDC_G0101 5686 pResDC += (Int)( pOrg [uiPelX] - pPred[uiPelX] ); 5687 uiSegSize++; 5688 #else 5671 5689 UChar uiSeg = pMask[ uiPelX + uiPelY*uiWidth ]; 5672 5690 pResDC[uiSeg] += (Int)( pOrg [uiPelX] - pPred[uiPelX] ); 5673 5691 uiSegSize[uiSeg]++; 5692 #endif 5674 5693 } 5675 5694 pOrg += uiOrgStride; … … 5677 5696 } 5678 5697 5698 #if SEC_INTER_SDC_G0101 5699 Int iResiOffset = ( pResDC > 0 ? ( uiSegSize >> 1 ) : -1*( uiSegSize >> 1 ) ); 5700 pResDC = ( pResDC + iResiOffset ) / (Int) uiSegSize; 5701 5702 pcCU->setSDCSegmentDCOffset( pResDC + uiOffest, 0, 0 ); 5703 #else 5679 5704 for( UInt uiSeg = 0; uiSeg < uiSegmentNum; uiSeg++ ) 5680 5705 { … … 5687 5712 #endif 5688 5713 } 5714 #endif 5689 5715 5690 5716 Pel *pRec; … … 5697 5723 for( uiPelX = 0; uiPelX < uiWidth; uiPelX++ ) 5698 5724 { 5725 #if SEC_INTER_SDC_G0101 5726 pRec[ uiPelX ] = Clip3( 0, ( 1 << g_bitDepthY ) - 1, pPred[uiPelX] + pcCU->getSDCSegmentDCOffset(0, 0) ); 5727 #else 5699 5728 UChar uiSeg = pMask[ uiPelX + uiPelY*uiWidth ]; 5700 5729 assert( uiSeg < uiSegmentNum ); 5701 5730 5702 5731 pRec[ uiPelX ] = Clip3( 0, ( 1 << g_bitDepthY ) - 1, pPred[uiPelX] + pResDC[uiSeg] ); 5732 #endif 5703 5733 } 5704 5734 pPred += uiPredStride; … … 5745 5775 Bool bNonSkip = true; 5746 5776 #endif 5777 #if SEC_INTER_SDC_G0101 5778 bNonSkip |= ( pcCU->getSDCSegmentDCOffset( 0, 0 ) != 0 ) ? 1 : 0; 5779 #else 5747 5780 for( UInt uiSeg = 0; uiSeg < uiSegmentNum; uiSeg++ ) 5748 5781 { … … 5753 5786 #endif 5754 5787 } 5788 #endif 5755 5789 5756 5790 if( !bNonSkip )
Note: See TracChangeset for help on using the changeset viewer.