Changeset 1179 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecEntropy.cpp
- Timestamp:
- 7 Apr 2015, 17:05:30 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecEntropy.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 * … … 52 52 m_pcEntropyDecoderIf->parseSkipFlag( pcCU, uiAbsPartIdx, uiDepth ); 53 53 } 54 55 #if SEC_DEPTH_INTRA_SKIP_MODE_K0033 56 Void TDecEntropy::decodeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 57 { 58 if( !pcCU->getSlice()->getDepthIntraSkipFlag() ) 59 { 60 return; 61 } 62 63 m_pcEntropyDecoderIf->parseDIS( pcCU, uiAbsPartIdx, uiDepth ); 64 } 65 #else 54 66 #if H_3D_SINGLE_DEPTH 55 67 Void TDecEntropy::decodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) … … 63 75 } 64 76 #endif 77 #endif 78 65 79 Void TDecEntropy::decodeCUTransquantBypassFlag(TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 66 80 { … … 147 161 { 148 162 m_pcEntropyDecoderIf->parsePartSize( pcCU, uiAbsPartIdx, uiDepth ); 149 163 #if !HHI_MOVE_SYN_K0052 150 164 #if H_3D_DBBP 151 165 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() ) … … 154 168 } 155 169 #endif 170 #endif 156 171 } 157 172 … … 161 176 { 162 177 decodeIntraDirModeLuma ( pcCU, uiAbsPartIdx, uiDepth ); 178 #if HHI_MOVE_SYN_K0052 179 decodeSDCFlag ( pcCU, uiAbsPartIdx, uiDepth ); 180 #endif 163 181 #if H_3D_DIM_SDC 182 #if H_3D_DISABLE_CHROMA 183 #if !HHI_MOVE_SYN_K0052 184 if(!pcCU->getSDCFlag(uiAbsPartIdx) && !pcCU->getSlice()->getIsDepth() ) 185 #else 186 if(!pcCU->getSDCFlag(uiAbsPartIdx) && pcCU->getSlice()->getSPS()->getChromaFormatIdc() != 0 ) 187 #endif 188 #else 164 189 if(!pcCU->getSDCFlag(uiAbsPartIdx)) 190 #endif 165 191 #endif 166 192 decodeIntraDirModeChroma( pcCU, uiAbsPartIdx, uiDepth ); … … 239 265 pcSubCU->copyDVInfoFrom( pcCU, uiAbsPartIdx); 240 266 #endif 267 #if HHI_MOVE_SYN_K0052 241 268 for ( UInt uiPartIdx = 0, uiSubPartIdx = uiAbsPartIdx; uiPartIdx < uiNumPU; uiPartIdx++, uiSubPartIdx += uiPUOffset ) 242 269 { … … 247 274 //DTRACE_PU("x1", uiTPelY) 248 275 #endif 276 277 ////// Parse PUs syntax 249 278 decodeMergeFlag( pcCU, uiSubPartIdx, uiDepth, uiPartIdx ); 250 279 if ( pcCU->getMergeFlag( uiSubPartIdx ) ) 251 280 { 252 decodeMergeIndex( pcCU, uiPartIdx, uiSubPartIdx, uiDepth ); 281 decodeMergeIndex( pcCU, uiPartIdx, uiSubPartIdx, uiDepth ); 282 } 283 else 284 { 285 decodeInterDirPU( pcCU, uiSubPartIdx, uiDepth, uiPartIdx ); 286 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) 287 { 288 if ( pcCU->getSlice()->getNumRefIdx( RefPicList( uiRefListIdx ) ) > 0 ) 289 { 290 decodeRefFrmIdxPU( pcCU, uiSubPartIdx, uiDepth, uiPartIdx, RefPicList( uiRefListIdx ) ); 291 decodeMvdPU ( pcCU, uiSubPartIdx, uiDepth, uiPartIdx, RefPicList( uiRefListIdx ) ); 292 decodeMVPIdxPU ( pcSubCU, uiSubPartIdx-uiAbsPartIdx, uiDepth, uiPartIdx, RefPicList( uiRefListIdx ) ); 293 } 294 } 295 } 296 } 297 298 ////// Parse CUs extension syntax 299 decodeDBBPFlag( pcCU, uiAbsPartIdx, uiDepth ); 300 decodeSDCFlag ( pcCU, uiAbsPartIdx, uiDepth ); 301 302 #if H_3D_ARP 303 decodeARPW ( pcCU, uiAbsPartIdx, uiDepth ); 304 #endif 305 #if H_3D_IC 306 decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 307 #endif 308 309 ////// Decode motion vectors 310 for ( UInt uiPartIdx = 0, uiSubPartIdx = uiAbsPartIdx; uiPartIdx < uiNumPU; uiPartIdx++, uiSubPartIdx += uiPUOffset ) 311 { 312 if ( pcCU->getMergeFlag( uiSubPartIdx ) ) 313 { 253 314 UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 254 #if H_3D_ARP255 decodeARPW ( pcCU, uiAbsPartIdx, uiDepth );256 #endif257 #if H_3D_IC258 decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );259 #endif260 315 #if H_3D_DBBP 261 316 if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 && pcCU->getDBBPFlag(uiAbsPartIdx) == false ) … … 390 445 else 391 446 { 447 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) 448 { 449 if ( pcCU->getSlice()->getNumRefIdx( RefPicList( uiRefListIdx ) ) > 0 ) 450 { 451 decodeMvsAMVP ( pcSubCU, uiSubPartIdx-uiAbsPartIdx, uiDepth, uiPartIdx, RefPicList( uiRefListIdx ) ); 452 } 453 } 454 } 455 456 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) ) 457 { 458 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMv( TComMv(0,0), ePartSize, uiSubPartIdx, uiDepth, uiPartIdx); 459 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllRefIdx( -1, ePartSize, uiSubPartIdx, uiDepth, uiPartIdx); 460 pcCU->setInterDirSubParts( 1, uiSubPartIdx, uiPartIdx, uiDepth); 461 } 462 } 463 #else 464 for ( UInt uiPartIdx = 0, uiSubPartIdx = uiAbsPartIdx; uiPartIdx < uiNumPU; uiPartIdx++, uiSubPartIdx += uiPUOffset ) 465 { 466 #if H_MV_ENC_DEC_TRAC 467 DTRACE_PU_S("=========== prediction_unit ===========\n") 468 // ToDo: 469 //DTRACE_PU("x0", uiLPelX) 470 //DTRACE_PU("x1", uiTPelY) 471 #endif 472 decodeMergeFlag( pcCU, uiSubPartIdx, uiDepth, uiPartIdx ); 473 if ( pcCU->getMergeFlag( uiSubPartIdx ) ) 474 { 475 decodeMergeIndex( pcCU, uiPartIdx, uiSubPartIdx, uiDepth ); 476 UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 477 #if H_3D_ARP 478 decodeARPW ( pcCU, uiAbsPartIdx, uiDepth ); 479 #endif 480 #if H_3D_IC 481 decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 482 #endif 483 #if H_3D_DBBP 484 if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 && pcCU->getDBBPFlag(uiAbsPartIdx) == false ) 485 #else 486 if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 ) 487 #endif 488 { 489 pcSubCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth ); 490 if ( !isMerged ) 491 { 492 #if H_3D_VSP 493 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 494 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 495 #if H_3D_SPIVMP 496 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 497 #endif 498 pcSubCU->initAvailableFlags(); 499 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 500 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 501 #if H_3D_SPIVMP 502 , pcMvFieldSP, puhInterDirSP 503 #endif 504 , numValidMergeCand ); 505 pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 506 #if H_3D_SPIVMP 507 , bSPIVMPFlag 508 #endif 509 , numValidMergeCand ); 510 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 511 512 #else 513 #if H_3D 514 pcSubCU->initAvailableFlags(); 515 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 516 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 517 518 #else 519 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 520 #endif 521 #endif 522 isMerged = true; 523 } 524 pcSubCU->setPartSizeSubParts( ePartSize, 0, uiDepth ); 525 } 526 else 527 { 528 uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 529 #if H_3D_VSP 530 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 531 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 532 #if H_3D_SPIVMP 533 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 534 #endif 535 pcSubCU->initAvailableFlags(); 536 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 537 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours 538 #if H_3D_SPIVMP 539 , pcMvFieldSP, puhInterDirSP 540 #endif 541 ,numValidMergeCand, uiMergeIndex ); 542 pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 543 #if H_3D_SPIVMP 544 , bSPIVMPFlag 545 #endif 546 ,numValidMergeCand ); 547 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 548 #else 549 #if H_3D 550 pcSubCU->initAvailableFlags(); 551 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 552 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 553 #else 554 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 555 #endif 556 #endif 557 } 558 pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 559 560 TComMv cTmpMv( 0, 0 ); 561 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) 562 { 563 if ( pcCU->getSlice()->getNumRefIdx( RefPicList( uiRefListIdx ) ) > 0 ) 564 { 565 pcCU->setMVPIdxSubParts( 0, RefPicList( uiRefListIdx ), uiSubPartIdx, uiPartIdx, uiDepth); 566 pcCU->setMVPNumSubParts( 0, RefPicList( uiRefListIdx ), uiSubPartIdx, uiPartIdx, uiDepth); 567 pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvd( cTmpMv, ePartSize, uiSubPartIdx, uiDepth, uiPartIdx ); 568 pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvField( cMvFieldNeighbours[ 2*uiMergeIndex + uiRefListIdx ], ePartSize, uiSubPartIdx, uiDepth, uiPartIdx ); 569 #if H_3D_VSP 570 #if H_3D_DBBP 571 if( pcCU->getVSPFlag( uiSubPartIdx ) != 0 && !pcCU->getDBBPFlag( uiAbsPartIdx ) ) 572 #else 573 if( pcCU->getVSPFlag( uiSubPartIdx ) != 0 ) 574 #endif 575 { 576 if ( uhInterDirNeighbours[ uiMergeIndex ] & (1<<uiRefListIdx) ) 577 { 578 UInt dummy; 579 Int vspSize; 580 Int width, height; 581 pcCU->getPartIndexAndSize( uiPartIdx, dummy, width, height, uiSubPartIdx, pcCU->getTotalNumPart()==256 ); 582 pcCU->setMvFieldPUForVSP( pcCU, uiSubPartIdx, width, height, RefPicList( uiRefListIdx ), cMvFieldNeighbours[ 2*uiMergeIndex + uiRefListIdx ].getRefIdx(), vspSize ); 583 pcCU->setVSPFlag( uiSubPartIdx, vspSize ); 584 } 585 } 586 #endif 587 } 588 } 589 #if H_3D_SPIVMP 590 pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 591 if (bSPIVMPFlag[uiMergeIndex] != 0) 592 { 593 Int iWidth, iHeight; 594 UInt uiIdx; 595 pcCU->getPartIndexAndSize( uiPartIdx, uiIdx, iWidth, iHeight, uiSubPartIdx, true ); 596 597 UInt uiSPAddr; 598 599 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; 600 601 pcCU->getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight); 602 603 for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++) 604 { 605 pcCU->getSPAbsPartIdx(uiSubPartIdx, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr); 606 pcCU->setInterDirSP(puhInterDirSP[iPartitionIdx], uiSPAddr, iSPWidth, iSPHeight); 607 pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight); 608 pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight); 609 } 610 } 611 #endif 612 } 613 else 614 { 392 615 decodeInterDirPU( pcCU, uiSubPartIdx, uiDepth, uiPartIdx ); 393 616 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) … … 414 637 } 415 638 } 639 #endif 416 640 #if H_3D_SPIVMP 417 641 delete[] pcMvFieldSP; … … 482 706 } 483 707 708 #if HHI_MOVE_SYN_K0052 484 709 Void TDecEntropy::decodeMVPIdxPU( TComDataCU* pcSubCU, UInt uiPartAddr, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList ) 485 710 { 486 711 Int iMVPIdx = -1; 487 488 TComMv cZeroMv( 0, 0 );489 TComMv cMv = cZeroMv;490 Int iRefIdx = -1;491 492 TComCUMvField* pcSubCUMvField = pcSubCU->getCUMvField( eRefList );493 AMVPInfo* pAMVPInfo = pcSubCUMvField->getAMVPInfo();494 495 iRefIdx = pcSubCUMvField->getRefIdx(uiPartAddr);496 cMv = cZeroMv;497 712 498 713 if ( (pcSubCU->getInterDir(uiPartAddr) & ( 1 << eRefList )) ) … … 512 727 #endif 513 728 } 729 pcSubCU->setMVPIdxSubParts( iMVPIdx, eRefList, uiPartAddr, uiPartIdx, uiDepth ); 730 } 731 732 Void TDecEntropy::decodeMvsAMVP( TComDataCU* pcSubCU, UInt uiPartAddr, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList ) 733 { 734 TComMv cZeroMv( 0, 0 ); 735 TComMv cMv = cZeroMv; 736 Int iRefIdx = -1; 737 738 TComCUMvField* pcSubCUMvField = pcSubCU->getCUMvField( eRefList ); 739 AMVPInfo* pAMVPInfo = pcSubCUMvField->getAMVPInfo(); 740 741 iRefIdx = pcSubCUMvField->getRefIdx(uiPartAddr); 742 cMv = cZeroMv; 743 744 pcSubCU->fillMvpCand(uiPartIdx, uiPartAddr, eRefList, iRefIdx, pAMVPInfo); 745 pcSubCU->setMVPNumSubParts(pAMVPInfo->iN, eRefList, uiPartAddr, uiPartIdx, uiDepth); 746 if ( iRefIdx >= 0 ) 747 { 748 m_pcPrediction->getMvPredAMVP( pcSubCU, uiPartIdx, uiPartAddr, eRefList, cMv); 749 cMv += pcSubCUMvField->getMvd( uiPartAddr ); 750 } 751 752 PartSize ePartSize = pcSubCU->getPartitionSize( uiPartAddr ); 753 pcSubCU->getCUMvField( eRefList )->setAllMv(cMv, ePartSize, uiPartAddr, 0, uiPartIdx); 754 } 755 756 #else 757 Void TDecEntropy::decodeMVPIdxPU( TComDataCU* pcSubCU, UInt uiPartAddr, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList ) 758 { 759 Int iMVPIdx = -1; 760 761 TComMv cZeroMv( 0, 0 ); 762 TComMv cMv = cZeroMv; 763 Int iRefIdx = -1; 764 765 TComCUMvField* pcSubCUMvField = pcSubCU->getCUMvField( eRefList ); 766 AMVPInfo* pAMVPInfo = pcSubCUMvField->getAMVPInfo(); 767 768 iRefIdx = pcSubCUMvField->getRefIdx(uiPartAddr); 769 cMv = cZeroMv; 770 771 if ( (pcSubCU->getInterDir(uiPartAddr) & ( 1 << eRefList )) ) 772 { 773 m_pcEntropyDecoderIf->parseMVPIdx( iMVPIdx ); 774 #if H_MV_ENC_DEC_TRAC 775 #if ENC_DEC_TRACE 776 if ( eRefList == REF_PIC_LIST_0 ) 777 { 778 DTRACE_PU("mvp_l0_flag", iMVPIdx) 779 } 780 else 781 { 782 DTRACE_PU("mvp_l1_flag", iMVPIdx) 783 } 784 #endif 785 #endif 786 } 514 787 pcSubCU->fillMvpCand(uiPartIdx, uiPartAddr, eRefList, iRefIdx, pAMVPInfo); 515 788 pcSubCU->setMVPNumSubParts(pAMVPInfo->iN, eRefList, uiPartAddr, uiPartIdx, uiDepth); … … 524 797 pcSubCU->getCUMvField( eRefList )->setAllMv(cMv, ePartSize, uiPartAddr, 0, uiPartIdx); 525 798 } 526 799 #endif 527 800 Void TDecEntropy::xDecodeTransform( TComDataCU* pcCU, UInt offsetLuma, UInt offsetChroma, UInt uiAbsPartIdx, UInt uiDepth, UInt width, UInt height, UInt uiTrIdx, Bool& bCodeDQP, Int quadtreeTULog2MinSizeInCU) 528 801 { 802 803 #if H_MV_ENC_DEC_TRAC 804 #if ENC_DEC_TRACE 805 UInt uiLPelX = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ]; 806 UInt uiTPelY = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsPartIdx] ]; 807 808 DTRACE_TU_S("=========== transform_tree ===========\n") 809 DTRACE_TU("x0", uiLPelX) 810 DTRACE_TU("x1", uiTPelY) 811 DTRACE_TU("log2TrafoSize", g_uiMaxCUWidth>>uiDepth) 812 DTRACE_TU("trafoDepth" , uiDepth) 813 #endif 814 #endif 815 529 816 UInt uiSubdiv; 530 817 const UInt uiLog2TrafoSize = g_aucConvertToBit[pcCU->getSlice()->getSPS()->getMaxCUWidth()]+2 - uiDepth; … … 579 866 if( bFirstCbfOfCU || uiLog2TrafoSize > 2 ) 580 867 { 868 #if H_3D_DISABLE_CHROMA 869 if (pcCU->getSlice()->getSPS()->getChromaFormatIdc() != 0 ) 870 { 581 871 if( bFirstCbfOfCU || pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, uiTrDepth - 1 ) ) 582 872 { … … 587 877 m_pcEntropyDecoderIf->parseQtCbf( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrDepth, uiDepth ); 588 878 } 879 } 880 else 881 { 882 if( bFirstCbfOfCU || pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, uiTrDepth - 1 ) ) 883 { 884 pcCU->setCbfSubParts( 0, TEXT_CHROMA_U, uiAbsPartIdx, uiTrDepth - 1 ); 885 } 886 if( bFirstCbfOfCU || pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_V, uiTrDepth - 1 ) ) 887 { 888 pcCU->setCbfSubParts( 0, TEXT_CHROMA_V, uiAbsPartIdx, uiTrDepth - 1 ); 889 } 890 } 891 #else 892 if( bFirstCbfOfCU || pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, uiTrDepth - 1 ) ) 893 { 894 m_pcEntropyDecoderIf->parseQtCbf( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrDepth, uiDepth ); 895 } 896 if( bFirstCbfOfCU || pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_V, uiTrDepth - 1 ) ) 897 { 898 m_pcEntropyDecoderIf->parseQtCbf( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrDepth, uiDepth ); 899 } 900 #endif 589 901 } 590 902 else … … 748 1060 assert( pcCU->getTransformIdx(uiAbsPartIdx) == 0 ); 749 1061 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_LUMA) == 1 ); 1062 #if H_3D_DISABLE_CHROMA 1063 if (pcCU->getSlice()->getSPS()->getChromaFormatIdc() != 0 ) 1064 { 1065 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 ); 1066 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 ); 1067 } 1068 #else 750 1069 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 ); 751 1070 assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 ); 1071 #endif 752 1072 } 753 1073 … … 811 1131 { 812 1132 pcCU->setSDCFlagSubParts( false, uiAbsPartIdx, uiDepth ); 1133 #if HHI_MOVE_SYN_K0052 1134 if ( pcCU->isSkipped( uiAbsPartIdx ) ) 1135 { 1136 return; 1137 } 1138 #endif 1139 813 1140 814 1141 if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getInterSdcFlag() ) || … … 830 1157 Void TDecEntropy::decodeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 831 1158 { 832 m_pcEntropyDecoderIf->parseDBBPFlag( pcCU, uiAbsPartIdx, uiDepth ); 1159 #if HHI_MOVE_SYN_K0052 1160 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 && pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() ) 1161 { 1162 #endif 1163 m_pcEntropyDecoderIf->parseDBBPFlag( pcCU, uiAbsPartIdx, uiDepth ); 1164 #if HHI_MOVE_SYN_K0052 1165 } 1166 #endif 833 1167 } 834 1168 #endif
Note: See TracChangeset for help on using the changeset viewer.