Changeset 1179 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecCu.cpp
- Timestamp:
- 7 Apr 2015, 17:05:30 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r1133 r1179 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 4, ITU/ISO/IEC6 * Copyright (c) 2010-2015, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 290 290 #if H_MV_ENC_DEC_TRAC 291 291 DTRACE_CU_S("=========== coding_unit ===========\n") 292 #if H_MV_ENC_DEC_TRAC 293 #if ENC_DEC_TRACE 294 stopAtPos ( pcCU->getSlice()->getPOC(), 295 pcCU->getSlice()->getLayerId(), 296 uiLPelX, 297 uiTPelY, 298 uiRPelX-uiLPelX+1, 299 uiBPelY-uiTPelY+1); 300 #endif 301 #endif 302 292 303 #endif 293 304 … … 299 310 #if H_3D_NBDV 300 311 DisInfo DvInfo; 312 #if !SEC_ARP_REM_ENC_RESTRICT_K0035 301 313 DvInfo.bDV = false; 314 #endif 302 315 DvInfo.m_acNBDV.setZero(); 303 316 DvInfo.m_aVIdxCan = 0; … … 334 347 if( pcCU->getSlice()->getIsDepth()) 335 348 { 349 #if SEC_ARP_REM_ENC_RESTRICT_K0035 350 m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo); 351 #else 336 352 DvInfo.bDV = m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo); 353 #endif 337 354 } 338 355 else … … 342 359 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() ) //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done. 343 360 { 361 #if SEC_ARP_REM_ENC_RESTRICT_K0035 362 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true); 363 #else 344 364 DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true); 365 #endif 345 366 } 346 367 else 347 368 #endif 348 369 { 370 #if SEC_ARP_REM_ENC_RESTRICT_K0035 371 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 372 #else 349 373 DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 374 #endif 350 375 } 351 376 #if H_3D_IV_MERGE … … 520 545 return; 521 546 } 547 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 548 m_pcEntropyDecoder->decodeDIS( pcCU, uiAbsPartIdx, uiDepth ); 549 if(!pcCU->getDISFlag(uiAbsPartIdx)) 550 { 551 #else 522 552 #if H_3D_SINGLE_DEPTH 523 553 m_pcEntropyDecoder->decodeSingleDepthMode( pcCU, uiAbsPartIdx, uiDepth ); … … 525 555 { 526 556 #endif 557 #endif 527 558 m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth ); 528 559 m_pcEntropyDecoder->decodePartSize( pcCU, uiAbsPartIdx, uiDepth ); 529 560 561 #if !HHI_MOVE_SYN_K0052 530 562 #if H_3D_DIM_SDC 531 563 m_pcEntropyDecoder->decodeSDCFlag( pcCU, uiAbsPartIdx, uiDepth ); 532 564 #endif 565 #endif 533 566 if (pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 534 567 { … … 537 570 if(pcCU->getIPCMFlag(uiAbsPartIdx)) 538 571 { 572 #if HHI_MOVE_SYN_K0052 573 #if H_3D_DIM_SDC 574 m_pcEntropyDecoder->decodeSDCFlag( pcCU, uiAbsPartIdx, uiDepth ); 575 #endif 576 #endif 539 577 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast ); 540 578 #if H_3D_IV_MERGE … … 550 588 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx ) 551 589 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]); 590 552 591 // Coefficient decoding 553 592 Bool bCodeDQP = getdQPFlag(); 554 593 m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, uiCurrWidth, uiCurrHeight, bCodeDQP ); 555 594 setdQPFlag( bCodeDQP ); 595 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 596 } 597 #else 556 598 #if H_3D_SINGLE_DEPTH 557 599 } 600 #endif 558 601 #endif 559 602 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast ); … … 616 659 617 660 m_ppcCU[uiDepth]->copySubCU( pcCU, uiAbsPartIdx, uiDepth ); 618 619 #if H_MV_ENC_DEC_TRAC620 #if ENC_DEC_TRACE621 stopAtPos ( m_ppcCU[uiDepth]->getSlice()->getPOC(),622 m_ppcCU[uiDepth]->getSlice()->getLayerId(),623 m_ppcCU[uiDepth]->getCUPelX(),624 m_ppcCU[uiDepth]->getCUPelY(),625 m_ppcCU[uiDepth]->getWidth(0),626 m_ppcCU[uiDepth]->getHeight(0) );627 #endif628 #endif629 661 630 662 switch( m_ppcCU[uiDepth]->getPredictionMode(0) ) … … 656 688 break; 657 689 case MODE_INTRA: 690 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 691 if( m_ppcCU[uiDepth]->getDISFlag(0) ) 692 { 693 xReconDIS( m_ppcCU[uiDepth], 0, uiDepth ); 694 } 695 #if H_3D_DIM_SDC 696 else if( m_ppcCU[uiDepth]->getSDCFlag(0) ) 697 { 698 xReconIntraSDC( m_ppcCU[uiDepth], 0, uiDepth ); 699 } 700 #endif 701 else 702 #else 658 703 #if H_3D_SINGLE_DEPTH 659 704 if( m_ppcCU[uiDepth]->getSingleDepthFlag(0) ) … … 671 716 #endif 672 717 #endif 718 #endif 673 719 xReconIntraQT( m_ppcCU[uiDepth], uiDepth ); 674 720 break; … … 704 750 } 705 751 } 752 753 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 754 Void TDecCu::xReconDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 755 { 756 UInt uiWidth = pcCU->getWidth ( 0 ); 757 UInt uiHeight = pcCU->getHeight ( 0 ); 758 759 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 760 761 UInt uiStride = pcRecoYuv->getStride (); 762 Pel* piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 763 764 765 AOF( uiWidth == uiHeight ); 766 AOF( uiAbsPartIdx == 0 ); 767 768 Bool bAboveAvail = false; 769 Bool bLeftAvail = false; 770 pcCU->getPattern()->initPattern ( pcCU, 0, uiAbsPartIdx ); 771 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, 772 m_pcPrediction->getPredicBuf (), 773 m_pcPrediction->getPredicBufWidth (), 774 m_pcPrediction->getPredicBufHeight (), 775 bAboveAvail, bLeftAvail 776 ); 777 778 if ( pcCU->getDISType(uiAbsPartIdx) == 0 ) 779 { 780 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), VER_IDX, piReco, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 781 } 782 else if ( pcCU->getDISType(uiAbsPartIdx) == 1 ) 783 { 784 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), HOR_IDX, piReco, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 785 } 786 else if ( pcCU->getDISType(uiAbsPartIdx) == 2 ) 787 { 788 Pel pSingleDepth = 1 << ( g_bitDepthY - 1 ); 789 pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 0 ); 790 for( UInt uiY = 0; uiY < uiHeight; uiY++ ) 791 { 792 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 793 { 794 piReco[ uiX ] = pSingleDepth; 795 } 796 piReco+= uiStride; 797 } 798 } 799 else if ( pcCU->getDISType(uiAbsPartIdx) == 3 ) 800 { 801 Pel pSingleDepth = 1 << ( g_bitDepthY - 1 ); 802 pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 1 ); 803 for( UInt uiY = 0; uiY < uiHeight; uiY++ ) 804 { 805 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 806 { 807 piReco[ uiX ] = pSingleDepth; 808 } 809 piReco+= uiStride; 810 } 811 } 812 813 // clear UV 814 UInt uiStrideC = pcRecoYuv->getCStride(); 815 Pel *pRecCb = pcRecoYuv->getCbAddr(); 816 Pel *pRecCr = pcRecoYuv->getCrAddr(); 817 818 for (Int y=0; y<uiHeight/2; y++) 819 { 820 for (Int x=0; x<uiWidth/2; x++) 821 { 822 pRecCb[x] = 1<<(g_bitDepthC-1); 823 pRecCr[x] = 1<<(g_bitDepthC-1); 824 } 825 826 pRecCb += uiStrideC; 827 pRecCr += uiStrideC; 828 } 829 } 830 #else 706 831 #if H_3D_SINGLE_DEPTH 707 832 Void TDecCu::xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) … … 772 897 } 773 898 #endif 899 #endif 900 774 901 #if H_3D_INTER_SDC 775 902 Void TDecCu::xReconInterSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) … … 835 962 // compute mask by segmenting depth block 836 963 Bool pMask[MAX_CU_SIZE*MAX_CU_SIZE]; 964 #if HS_DBBP_CLEAN_K0048 965 Bool bValidMask = m_pcPrediction->getSegmentMaskFromDepth(pDepthPels, uiDepthStride, pcCU->getWidth(0), pcCU->getHeight(0), pMask, pcCU); 966 #else 837 967 Bool bValidMask = m_pcPrediction->getSegmentMaskFromDepth(pDepthPels, uiDepthStride, pcCU->getWidth(0), pcCU->getHeight(0), pMask); 968 #endif 838 969 AOF(bValidMask); 839 970
Note: See TracChangeset for help on using the changeset viewer.