Changeset 1163 in 3DVCSoftware for branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecCu.cpp
- Timestamp:
- 16 Mar 2015, 12:40:05 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecCu.cpp
r1133 r1163 299 299 #if H_3D_NBDV 300 300 DisInfo DvInfo; 301 #if !SEC_ARP_REM_ENC_RESTRICT_K0035 301 302 DvInfo.bDV = false; 303 #endif 302 304 DvInfo.m_acNBDV.setZero(); 303 305 DvInfo.m_aVIdxCan = 0; … … 334 336 if( pcCU->getSlice()->getIsDepth()) 335 337 { 338 #if SEC_ARP_REM_ENC_RESTRICT_K0035 339 m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo); 340 #else 336 341 DvInfo.bDV = m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo); 342 #endif 337 343 } 338 344 else … … 342 348 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() ) //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done. 343 349 { 350 #if SEC_ARP_REM_ENC_RESTRICT_K0035 351 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true); 352 #else 344 353 DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true); 354 #endif 345 355 } 346 356 else 347 357 #endif 348 358 { 359 #if SEC_ARP_REM_ENC_RESTRICT_K0035 360 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 361 #else 349 362 DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 363 #endif 350 364 } 351 365 #if H_3D_IV_MERGE … … 520 534 return; 521 535 } 536 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 537 m_pcEntropyDecoder->decodeDIS( pcCU, uiAbsPartIdx, uiDepth ); 538 if(!pcCU->getDISFlag(uiAbsPartIdx)) 539 { 540 #else 522 541 #if H_3D_SINGLE_DEPTH 523 542 m_pcEntropyDecoder->decodeSingleDepthMode( pcCU, uiAbsPartIdx, uiDepth ); 524 543 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) 525 544 { 545 #endif 526 546 #endif 527 547 m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth ); … … 554 574 m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, uiCurrWidth, uiCurrHeight, bCodeDQP ); 555 575 setdQPFlag( bCodeDQP ); 576 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 577 } 578 #else 556 579 #if H_3D_SINGLE_DEPTH 557 580 } 581 #endif 558 582 #endif 559 583 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast ); … … 656 680 break; 657 681 case MODE_INTRA: 682 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 683 if( m_ppcCU[uiDepth]->getDISFlag(0) ) 684 { 685 xReconDIS( m_ppcCU[uiDepth], 0, uiDepth ); 686 } 687 #if H_3D_DIM_SDC 688 else if( m_ppcCU[uiDepth]->getSDCFlag(0) ) 689 { 690 xReconIntraSDC( m_ppcCU[uiDepth], 0, uiDepth ); 691 } 692 #endif 693 else 694 #else 658 695 #if H_3D_SINGLE_DEPTH 659 696 if( m_ppcCU[uiDepth]->getSingleDepthFlag(0) ) … … 671 708 #endif 672 709 #endif 710 #endif 673 711 xReconIntraQT( m_ppcCU[uiDepth], uiDepth ); 674 712 break; … … 704 742 } 705 743 } 744 745 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 746 Void TDecCu::xReconDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 747 { 748 UInt uiWidth = pcCU->getWidth ( 0 ); 749 UInt uiHeight = pcCU->getHeight ( 0 ); 750 751 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 752 753 UInt uiStride = pcRecoYuv->getStride (); 754 Pel* piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 755 756 757 AOF( uiWidth == uiHeight ); 758 AOF( uiAbsPartIdx == 0 ); 759 760 Bool bAboveAvail = false; 761 Bool bLeftAvail = false; 762 pcCU->getPattern()->initPattern ( pcCU, 0, uiAbsPartIdx ); 763 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, 764 m_pcPrediction->getPredicBuf (), 765 m_pcPrediction->getPredicBufWidth (), 766 m_pcPrediction->getPredicBufHeight (), 767 bAboveAvail, bLeftAvail 768 ); 769 770 if ( pcCU->getDISType(uiAbsPartIdx) == 0 ) 771 { 772 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), VER_IDX, piReco, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 773 } 774 else if ( pcCU->getDISType(uiAbsPartIdx) == 1 ) 775 { 776 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), HOR_IDX, piReco, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 777 } 778 else if ( pcCU->getDISType(uiAbsPartIdx) == 2 ) 779 { 780 Pel pSingleDepth = 1 << ( g_bitDepthY - 1 ); 781 pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 0 ); 782 for( UInt uiY = 0; uiY < uiHeight; uiY++ ) 783 { 784 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 785 { 786 piReco[ uiX ] = pSingleDepth; 787 } 788 piReco+= uiStride; 789 } 790 } 791 else if ( pcCU->getDISType(uiAbsPartIdx) == 3 ) 792 { 793 Pel pSingleDepth = 1 << ( g_bitDepthY - 1 ); 794 pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 1 ); 795 for( UInt uiY = 0; uiY < uiHeight; uiY++ ) 796 { 797 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 798 { 799 piReco[ uiX ] = pSingleDepth; 800 } 801 piReco+= uiStride; 802 } 803 } 804 805 // clear UV 806 UInt uiStrideC = pcRecoYuv->getCStride(); 807 Pel *pRecCb = pcRecoYuv->getCbAddr(); 808 Pel *pRecCr = pcRecoYuv->getCrAddr(); 809 810 for (Int y=0; y<uiHeight/2; y++) 811 { 812 for (Int x=0; x<uiWidth/2; x++) 813 { 814 pRecCb[x] = 1<<(g_bitDepthC-1); 815 pRecCr[x] = 1<<(g_bitDepthC-1); 816 } 817 818 pRecCb += uiStrideC; 819 pRecCr += uiStrideC; 820 } 821 } 822 #else 706 823 #if H_3D_SINGLE_DEPTH 707 824 Void TDecCu::xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) … … 772 889 } 773 890 #endif 891 #endif 892 774 893 #if H_3D_INTER_SDC 775 894 Void TDecCu::xReconInterSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
Note: See TracChangeset for help on using the changeset viewer.