Changeset 321 in SHVCSoftware
- Timestamp:
- 2 Aug 2013, 22:52:20 (11 years ago)
- Location:
- branches/SHM-3.0-dev/source
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-3.0-dev/source/App/TAppEncoder/TAppEncCfg.cpp
r317 r321 2187 2187 printf("ENCODER_FAST_MODE: %d ", ENCODER_FAST_MODE); 2188 2188 printf("REF_IDX_MFM: %d ", REF_IDX_MFM); 2189 #elif INTRA_BL2190 printf("INTRA_BL:%d ", INTRA_BL);2191 2189 #endif 2192 2190 #else -
branches/SHM-3.0-dev/source/Lib/TLibCommon/ContextTables.h
r313 r321 92 92 #define NUM_SAO_MERGE_FLAG_CTX 1 ///< number of context models for SAO merge flags 93 93 #define NUM_SAO_TYPE_IDX_CTX 1 ///< number of context models for SAO type index 94 #if INTRA_BL95 #define NUM_INTRA_BL_PRED_CTX 396 #endif97 94 98 95 #define NUM_TRANSFORMSKIP_FLAG_CTX 1 ///< number of context models for transform skipping … … 330 327 }; 331 328 332 #if INTRA_BL333 static const UChar334 INIT_INTRA_BL_PRED_FLAG[3][NUM_INTRA_BL_PRED_CTX] =335 {336 { 185, 185, 201, },337 { 197, 197, 185, },338 { 197, 197, 185, },339 };340 #endif341 329 static const UChar 342 330 INIT_TRANSFORMSKIP_FLAG[3][2*NUM_TRANSFORMSKIP_FLAG_CTX] = -
branches/SHM-3.0-dev/source/Lib/TLibCommon/TComDataCU.cpp
r319 r321 1643 1643 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 1644 1644 1645 #if INTRA_BL1646 iLeftIntraDir = pcTempCU ? ( pcTempCU->isIntra( uiTempPartIdx ) && ( !pcTempCU->isIntraBL( uiTempPartIdx ) ) ? pcTempCU->getLumaIntraDir( uiTempPartIdx ) : DC_IDX ) : DC_IDX;1647 #else1648 1645 iLeftIntraDir = pcTempCU ? ( pcTempCU->isIntra( uiTempPartIdx ) ? pcTempCU->getLumaIntraDir( uiTempPartIdx ) : DC_IDX ) : DC_IDX; 1649 #endif1650 1646 1651 1647 // Get intra direction of above PU 1652 1648 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx, true, true ); 1653 1649 1654 #if INTRA_BL1655 iAboveIntraDir = pcTempCU ? ( pcTempCU->isIntra( uiTempPartIdx ) && ( !pcTempCU->isIntraBL( uiTempPartIdx ) ) ? pcTempCU->getLumaIntraDir( uiTempPartIdx ) : DC_IDX ) : DC_IDX;1656 #else1657 1650 iAboveIntraDir = pcTempCU ? ( pcTempCU->isIntra( uiTempPartIdx ) ? pcTempCU->getLumaIntraDir( uiTempPartIdx ) : DC_IDX ) : DC_IDX; 1658 #endif1659 1651 1660 1652 uiPredNum = 3; … … 1798 1790 UInt log2CbSize = g_aucConvertToBit[getWidth( absPartIdx )] + 2; 1799 1791 PartSize partSize = getPartitionSize( absPartIdx ); 1800 #if INTRA_BL1801 UInt quadtreeTUMaxDepth = isIntra( absPartIdx ) ? m_pcSlice->getSPS()->getQuadtreeTUMaxDepthIntra() : m_pcSlice->getSPS()->getQuadtreeTUMaxDepthInter();1802 #else1803 1792 UInt quadtreeTUMaxDepth = getPredictionMode( absPartIdx ) == MODE_INTRA ? m_pcSlice->getSPS()->getQuadtreeTUMaxDepthIntra() : m_pcSlice->getSPS()->getQuadtreeTUMaxDepthInter(); 1804 #endif1805 1793 Int intraSplitFlag = ( getPredictionMode( absPartIdx ) == MODE_INTRA && partSize == SIZE_NxN ) ? 1 : 0; 1806 1794 Int interSplitFlag = ((quadtreeTUMaxDepth == 1) && (getPredictionMode( absPartIdx ) == MODE_INTER) && (partSize != SIZE_2Nx2N) ); … … 1824 1812 return log2MinTUSizeInCU; 1825 1813 } 1826 1827 #if INTRA_BL1828 UInt TComDataCU::getCtxIntraBLFlag( UInt uiAbsPartIdx )1829 {1830 TComDataCU* pcTempCU;1831 UInt uiTempPartIdx;1832 UInt uiCtx = 0;1833 1834 // Get BCBP of left PU1835 #if DEPENDENT_SLICES1836 Bool bDepSliceRestriction = ( !m_pcSlice->getPPS()->getDependentSliceEnabledFlag());1837 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx, true, bDepSliceRestriction );1838 #else1839 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );1840 #endif1841 uiCtx = ( pcTempCU ) ? pcTempCU->isIntraBL( uiTempPartIdx ) : 0;1842 1843 // Get BCBP of above PU1844 #if DEPENDENT_SLICES1845 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx, true, bDepSliceRestriction );1846 #else1847 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );1848 #endif1849 uiCtx += ( pcTempCU ) ? pcTempCU->isIntraBL( uiTempPartIdx ) : 0;1850 1851 return uiCtx;1852 }1853 #endif1854 1814 1855 1815 #if REF_IDX_ME_ZEROMV … … 2554 2514 TComDataCU* pcCULeft = 0; 2555 2515 pcCULeft = getPULeft( uiLeftPartIdx, uiPartIdxLB ); 2556 #if INTRA_BL 2557 if( pcCULeft && pcCULeft->isIntraBL( uiLeftPartIdx ) ) 2558 { 2559 pcCULeft = NULL; 2560 } 2561 #endif 2516 2562 2517 Bool isAvailableA1 = pcCULeft && 2563 2518 pcCULeft->isDiffMER(xP -1, yP+nPSH-1, xP, yP) && … … 2591 2546 TComDataCU* pcCUAbove = 0; 2592 2547 pcCUAbove = getPUAbove( uiAbovePartIdx, uiPartIdxRT ); 2593 #if INTRA_BL 2594 if( pcCUAbove && pcCUAbove->isIntraBL( uiAbovePartIdx ) ) 2595 { 2596 pcCUAbove = NULL; 2597 } 2598 #endif 2548 2599 2549 Bool isAvailableB1 = pcCUAbove && 2600 2550 pcCUAbove->isDiffMER(xP+nPSW-1, yP-1, xP, yP) && … … 2628 2578 TComDataCU* pcCUAboveRight = 0; 2629 2579 pcCUAboveRight = getPUAboveRight( uiAboveRightPartIdx, uiPartIdxRT ); 2630 #if INTRA_BL 2631 if( pcCUAboveRight && pcCUAboveRight->isIntraBL( uiAboveRightPartIdx ) ) 2632 { 2633 pcCUAboveRight = NULL; 2634 } 2635 #endif 2580 2636 2581 Bool isAvailableB0 = pcCUAboveRight && 2637 2582 pcCUAboveRight->isDiffMER(xP+nPSW, yP-1, xP, yP) && … … 2664 2609 TComDataCU* pcCULeftBottom = 0; 2665 2610 pcCULeftBottom = this->getPUBelowLeft( uiLeftBottomPartIdx, uiPartIdxLB ); 2666 #if INTRA_BL 2667 if( pcCULeftBottom && pcCULeftBottom->isIntraBL( uiLeftBottomPartIdx ) ) 2668 { 2669 pcCULeftBottom = NULL; 2670 } 2671 #endif 2611 2672 2612 Bool isAvailableA0 = pcCULeftBottom && 2673 2613 pcCULeftBottom->isDiffMER(xP-1, yP+nPSH, xP, yP) && … … 2702 2642 TComDataCU* pcCUAboveLeft = 0; 2703 2643 pcCUAboveLeft = getPUAboveLeft( uiAboveLeftPartIdx, uiAbsPartAddr ); 2704 #if INTRA_BL 2705 if( pcCUAboveLeft && pcCUAboveLeft->isIntraBL( uiAboveLeftPartIdx ) ) 2706 { 2707 pcCUAboveLeft = NULL; 2708 } 2709 #endif 2644 2710 2645 Bool isAvailableB2 = pcCUAboveLeft && 2711 2646 pcCUAboveLeft->isDiffMER(xP-1, yP-1, xP, yP) && … … 3010 2945 UInt idx; 3011 2946 tmpCU = getPUBelowLeft(idx, uiPartIdxLB); 3012 #if INTRA_BL3013 bAddedSmvp = (tmpCU != NULL) && (!tmpCU->isIntra(idx));3014 #else3015 2947 bAddedSmvp = (tmpCU != NULL) && (tmpCU->getPredictionMode(idx) != MODE_INTRA); 3016 #endif3017 2948 3018 2949 if (!bAddedSmvp) 3019 2950 { 3020 2951 tmpCU = getPULeft(idx, uiPartIdxLB); 3021 #if INTRA_BL3022 bAddedSmvp = (tmpCU != NULL) && (!tmpCU->isIntra(idx));3023 #else3024 2952 bAddedSmvp = (tmpCU != NULL) && (tmpCU->getPredictionMode(idx) != MODE_INTRA); 3025 #endif3026 2953 } 3027 2954 … … 4019 3946 } 4020 3947 4021 #if INTRA_BL4022 Void TComDataCU::getBaseLumaBlk ( UInt uiWidth, UInt uiHeight, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride )4023 {4024 TComPicYuv* pcBaseRec = getSlice()->getFullPelBaseRec();4025 UInt uiStrideBase = pcBaseRec->getStride();4026 Pel* piBase = pcBaseRec->getLumaAddr( getAddr(), getZorderIdxInCU() + uiAbsPartIdx );4027 4028 for ( UInt y = 0; y < uiHeight; y ++ )4029 {4030 memcpy( piPred + y * uiStride, piBase + y * uiStrideBase, uiWidth * sizeof( Pel ) );4031 }4032 }4033 4034 Void TComDataCU::getBaseChromaBlk ( UInt uiWidth, UInt uiHeight, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, UInt uiChromaId )4035 {4036 TComPicYuv* pcBaseRec = getSlice()->getFullPelBaseRec();4037 4038 UInt uiStrideBase = pcBaseRec->getCStride();4039 Pel* piBase;4040 4041 if( uiChromaId == 0 )4042 {4043 piBase = pcBaseRec->getCbAddr( getAddr(), getZorderIdxInCU() + uiAbsPartIdx );4044 }4045 else4046 {4047 piBase = pcBaseRec->getCrAddr( getAddr(), getZorderIdxInCU() + uiAbsPartIdx );4048 }4049 4050 for ( UInt y = 0; y < uiHeight; y ++ )4051 {4052 memcpy( piPred + y * uiStride, piBase + y * uiStrideBase, uiWidth * sizeof( Pel ) );4053 }4054 }4055 4056 #endif4057 4058 3948 #if SVC_COL_BLK 4059 3949 TComDataCU* TComDataCU::getBaseColCU( UInt refLayerIdc, UInt uiCuAbsPartIdx, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase ) -
branches/SHM-3.0-dev/source/Lib/TLibCommon/TComDataCU.h
r319 r321 489 489 // ------------------------------------------------------------------------------------------------------------------- 490 490 491 #if INTRA_BL492 Void getBaseLumaBlk ( UInt uiWidth, UInt uiHeight, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride );493 Void getBaseChromaBlk ( UInt uiWidth, UInt uiHeight, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, UInt uiChromaId );494 #endif495 #if INTRA_BL496 Bool isIntraBL ( UInt uiPartIdx ) { return m_pePredMode[ uiPartIdx ] == MODE_INTRA_BL; }497 Bool isIntra ( UInt uiPartIdx ) { return m_pePredMode[ uiPartIdx ] == MODE_INTRA || m_pePredMode[ uiPartIdx ] == MODE_INTRA_BL; }498 #else499 491 Bool isIntra ( UInt uiPartIdx ) { return m_pePredMode[ uiPartIdx ] == MODE_INTRA; } 500 #endif501 492 Bool isSkipped ( UInt uiPartIdx ); ///< SKIP (no residual) 502 493 Bool isBipredRestriction( UInt puIdx ); … … 525 516 UInt& getTotalBins () { return m_uiTotalBins; } 526 517 527 #if INTRA_BL 528 UInt getCtxIntraBLFlag ( UInt uiAbsPartIdx ); 529 #endif 530 518 #if REF_IDX_FRAMEWORK 531 519 #if FAST_INTRA_SHVC 532 520 Int reduceSetOfIntraModes ( UInt uiAbsPartIdx, Int* uiIntraDirPred, Int &fullSetOfModes ); … … 536 524 Bool xCheckZeroMVILRMerge(UChar uhInterDir, TComMvField& cMvFieldL0, TComMvField& cMvFieldL1); 537 525 Bool xCheckZeroMVILRMvdL1Zero(Int iRefList, Int iRefIdx, Int MvpIdx); 526 #endif 538 527 #endif 539 528 … … 549 538 UInt getCoefScanIdx(UInt uiAbsPartIdx, UInt uiWidth, Bool bIsLuma, Bool bIsIntra); 550 539 540 #if REF_IDX_FRAMEWORK 551 541 #if SVC_COL_BLK 552 542 TComDataCU* getBaseColCU( UInt refLayerIdc, UInt uiCuAbsPartIdx, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase ); 553 543 TComDataCU* getBaseColCU( UInt refLayerIdc, UInt uiPelX, UInt uiPelY, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase ); 554 544 Void scaleBaseMV( UInt refLayerIdc, TComMvField& rcMvFieldEnhance, TComMvField& rcMvFieldBase ); 545 #endif 555 546 #endif 556 547 }; -
branches/SHM-3.0-dev/source/Lib/TLibCommon/TComPrediction.cpp
r319 r321 408 408 } 409 409 410 #if INTRA_BL411 Void TComPrediction::getBaseBlk( TComDataCU* pcCU, TComYuv* pcYuvPred, Int iPartAddr, Int iWidth, Int iHeight )412 {413 pcCU->getBaseLumaBlk( iWidth, iHeight, iPartAddr, pcYuvPred->getLumaAddr( iPartAddr ), pcYuvPred->getStride() );414 pcCU->getBaseChromaBlk( iWidth >> 1, iHeight >> 1, iPartAddr, pcYuvPred->getCbAddr( iPartAddr ), pcYuvPred->getCStride(), 0 );415 pcCU->getBaseChromaBlk( iWidth >> 1, iHeight >> 1, iPartAddr, pcYuvPred->getCrAddr( iPartAddr ), pcYuvPred->getCStride(), 1 );416 }417 #endif418 419 410 Void TComPrediction::motionCompensation ( TComDataCU* pcCU, TComYuv* pcYuvPred, RefPicList eRefPicList, Int iPartIdx ) 420 411 { -
branches/SHM-3.0-dev/source/Lib/TLibCommon/TComPrediction.h
r313 r321 101 101 102 102 Void initTempBuff(); 103 104 #if INTRA_BL 105 Void getBaseBlk ( TComDataCU* pcCU, TComYuv* pcYuvPred, Int iPartAddr, Int iWidth, Int iHeight ); 106 #endif 103 107 104 // inter 108 105 Void motionCompensation ( TComDataCU* pcCU, TComYuv* pcYuvPred, RefPicList eRefPicList = REF_PIC_LIST_X, Int iPartIdx = -1 ); … … 121 118 Int getPredicBufHeight() { return m_iYuvExtHeight; } 122 119 120 #if REF_IDX_FRAMEWORK 123 121 #if SVC_UPSAMPLING 124 122 #if SCALED_REF_LAYER_OFFSETS … … 128 126 #endif 129 127 #endif 128 #endif 130 129 }; 131 130 -
branches/SHM-3.0-dev/source/Lib/TLibCommon/TypeDef.h
r320 r321 113 113 #define M0457_IL_SAMPLE_PRED_ONLY_FLAG 0 114 114 #endif 115 116 #else117 #define INTRA_BL 1 ///< inter-layer texture prediction118 115 #endif 119 116 … … 458 455 MODE_INTER, ///< inter-prediction mode 459 456 MODE_INTRA, ///< intra-prediction mode 460 #if INTRA_BL461 MODE_INTRA_BL, ///< inter-layer intra-prediction mode462 #endif463 457 MODE_NONE = 15 464 458 }; -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
r313 r321 2215 2215 return (cnt>0); 2216 2216 } 2217 2218 #if INTRA_BL2219 Void TDecCavlc::parseIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth )2220 {2221 assert(0);2222 }2223 #endif2224 2225 2217 //! \} 2226 2218 -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecCAVLC.h
r313 r321 118 118 Void updateContextTables ( SliceType /*eSliceType*/, Int /*iQp*/ ) { return; } 119 119 120 #if INTRA_BL121 Void parseIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );122 #endif123 124 120 Void xParsePredWeightTable ( TComSlice* pcSlice ); 125 121 Void parseScalingList ( TComScalingList* scalingList ); -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecCu.cpp
r319 r321 334 334 return; 335 335 } 336 #if INTRA_BL337 m_pcEntropyDecoder->decodeIntraBLFlag( pcCU, uiAbsPartIdx, 0, uiDepth );338 if ( pcCU->isIntraBL( uiAbsPartIdx ) )339 {340 pcCU->setSizeSubParts( g_uiMaxCUWidth>>uiDepth, g_uiMaxCUHeight>>uiDepth, uiAbsPartIdx, uiDepth );341 }342 else343 {344 #endif345 336 346 337 m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth ); … … 357 348 } 358 349 } 359 #if INTRA_BL 350 351 UInt uiCurrWidth = pcCU->getWidth ( uiAbsPartIdx ); 352 UInt uiCurrHeight = pcCU->getHeight( uiAbsPartIdx ); 353 360 354 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx ) 361 355 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]); 362 }363 #endif364 365 UInt uiCurrWidth = pcCU->getWidth ( uiAbsPartIdx );366 UInt uiCurrHeight = pcCU->getHeight( uiAbsPartIdx );367 368 #if !INTRA_BL369 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx )370 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]);371 #endif372 356 373 357 // Coefficient decoding … … 440 424 xReconIntraQT( m_ppcCU[uiDepth], uiDepth ); 441 425 break; 442 #if INTRA_BL443 case MODE_INTRA_BL:444 xReconIntraQT( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth );445 break;446 #endif447 426 default: 448 427 assert(0); … … 512 491 513 492 //===== get prediction signal ===== 514 #if INTRA_BL515 if(pcCU->isIntraBL ( uiAbsPartIdx ) )516 {517 pcCU->getBaseLumaBlk( uiWidth, uiHeight, uiAbsPartIdx, piPred, uiStride );518 }519 else520 #endif521 493 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 522 494 … … 603 575 604 576 //===== get prediction signal ===== 605 #if INTRA_BL 606 if(pcCU->isIntraBL ( uiAbsPartIdx ) ) 607 { 608 pcCU->getBaseChromaBlk( uiWidth, uiHeight, uiAbsPartIdx, piPred, uiStride, uiChromaId ); 609 } 610 else 611 #endif 612 { 613 if( uiChromaPredMode == DM_CHROMA_IDX ) 614 { 615 uiChromaPredMode = pcCU->getLumaIntraDir( 0 ); 616 } 617 m_pcPrediction->predIntraChromaAng( pPatChroma, uiChromaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 618 } 577 if( uiChromaPredMode == DM_CHROMA_IDX ) 578 { 579 uiChromaPredMode = pcCU->getLumaIntraDir( 0 ); 580 } 581 m_pcPrediction->predIntraChromaAng( pPatChroma, uiChromaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 619 582 620 583 //===== inverse transform ===== -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecCu.h
r319 r321 77 77 #endif 78 78 79 #if INTRA_BL80 TComPicYuv* m_pcPicYuvRecBase; ///< reconstructed base layer81 #endif82 83 79 public: 84 80 TDecCu(); … … 106 102 #if SVC_EXTENSION 107 103 TDecTop* getLayerDec ( UInt LayerId ) { return m_ppcTDecTop[LayerId]; } 108 #if INTRA_BL109 Void setBaseRecPic ( TComPicYuv* p ) { m_pcPicYuvRecBase = p; }110 #endif111 104 #endif 112 105 protected: -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecEntropy.cpp
r319 r321 58 58 } 59 59 60 #if INTRA_BL61 Void TDecEntropy::decodeIntraBLFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth )62 {63 m_pcEntropyDecoderIf->parseIntraBLFlag( pcCU, uiAbsPartIdx, uiPartIdx, uiDepth );64 }65 #endif66 67 60 /** decode merge flag 68 61 * \param pcSubCU … … 111 104 Void TDecEntropy::decodePredInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU ) 112 105 { 113 #if INTRA_BL114 if( pcCU->isIntraBL( uiAbsPartIdx ) ) // Do nothing for Intra BL mode.115 {116 return;117 }118 #endif119 106 if( pcCU->isIntra( uiAbsPartIdx ) ) // If it is Intra mode, encode intra prediction mode. 120 107 { … … 450 437 451 438 pcCU->setCbfSubParts ( 0, TEXT_LUMA, uiAbsPartIdx, uiDepth ); 452 #if INTRA_BL453 if( ( !pcCU->isIntra(uiAbsPartIdx) ) && uiDepth == pcCU->getDepth( uiAbsPartIdx ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, 0 ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_V, 0 ) )454 #else455 439 if( pcCU->getPredictionMode(uiAbsPartIdx) != MODE_INTRA && uiDepth == pcCU->getDepth( uiAbsPartIdx ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, 0 ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_V, 0 ) ) 456 #endif457 440 { 458 441 pcCU->setCbfSubParts( 1 << uiTrDepth, TEXT_LUMA, uiAbsPartIdx, uiDepth ); -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecEntropy.h
r313 r321 107 107 virtual Void parseTransformSkipFlags ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt width, UInt height, UInt uiDepth, TextType eTType) = 0; 108 108 109 #if INTRA_BL110 virtual Void parseIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ) = 0;111 #endif112 113 109 virtual Void updateContextTables( SliceType eSliceType, Int iQp ) = 0; 114 110 … … 170 166 Void updateContextTables ( SliceType eSliceType, Int iQp ) { m_pcEntropyDecoderIf->updateContextTables( eSliceType, iQp ); } 171 167 172 #if INTRA_BL173 Void decodeIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );174 #endif175 176 168 private: 177 169 Void xDecodeTransform ( TComDataCU* pcCU, UInt offsetLuma, UInt offsetChroma, UInt uiAbsPartIdx, UInt uiDepth, UInt width, UInt height, UInt uiTrIdx, Bool& bCodeDQP ); -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecSbac.cpp
r313 r321 77 77 , m_cTransformSkipSCModel ( 1, 2, NUM_TRANSFORMSKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 78 78 , m_CUTransquantBypassFlagSCModel( 1, 1, NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX, m_contextModels + m_numContextModels, m_numContextModels) 79 #if INTRA_BL80 , m_cIntraBLPredFlagSCModel (1, 1, NUM_INTRA_BL_PRED_CTX , m_contextModels + m_numContextModels, m_numContextModels)81 #endif82 79 { 83 80 assert( m_numContextModels <= MAX_NUM_CTX_MOD ); … … 138 135 139 136 m_cCUTransSubdivFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_TRANS_SUBDIV_FLAG ); 140 #if INTRA_BL141 m_cIntraBLPredFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_INTRA_BL_PRED_FLAG );142 #endif143 137 m_cTransformSkipSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_TRANSFORMSKIP_FLAG ); 144 138 m_CUTransquantBypassFlagSCModel.initBuffer( sliceType, qp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG ); … … 186 180 m_cSaoTypeIdxSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX ); 187 181 m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANS_SUBDIV_FLAG ); 188 #if INTRA_BL189 m_cIntraBLPredFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRA_BL_PRED_FLAG );190 #endif191 182 m_cTransformSkipSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANSFORMSKIP_FLAG ); 192 183 m_CUTransquantBypassFlagSCModel.initBuffer( eSliceType, iQp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG ); … … 438 429 } 439 430 440 #if INTRA_BL441 Void TDecSbac::parseIntraBLFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth )442 {443 if( pcCU->getLayerId() == 0 )444 {445 return;446 }447 448 UInt uiSymbol = 0;449 450 UInt uiCtxIntraBL = pcCU->getCtxIntraBLFlag( uiAbsPartIdx ) ;451 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraBLPredFlagSCModel.get( 0, 0, uiCtxIntraBL ));452 DTRACE_CABAC_VL( g_nSymbolCounter++ );453 DTRACE_CABAC_T( "\tIntrBLFlag" );454 DTRACE_CABAC_T( "\tuiSymbol: ");455 DTRACE_CABAC_V( uiSymbol );456 DTRACE_CABAC_T( "\n");457 458 if ( uiSymbol )459 {460 pcCU->setPartSizeSubParts( SIZE_2Nx2N, uiAbsPartIdx, uiDepth );461 pcCU->setPredModeSubParts( MODE_INTRA_BL, uiAbsPartIdx, uiDepth );462 pcCU->setTrIdxSubParts( 0, uiAbsPartIdx, uiDepth );463 pcCU->setLumaIntraDirSubParts ( DC_IDX, uiAbsPartIdx, uiDepth );464 }465 }466 #endif467 468 431 /** parse merge flag 469 432 * \param pcCU … … 555 518 UInt uiSymbol, uiMode = 0; 556 519 PartSize eMode; 557 558 #if INTRA_BL 559 if ( pcCU->isIntraBL( uiAbsPartIdx ) ) 560 { 561 assert( 0 ); 562 } 563 #endif 520 564 521 if ( pcCU->isIntra( uiAbsPartIdx ) ) 565 522 { -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecSbac.h
r313 r321 135 135 Void parseScalingList ( TComScalingList* /*scalingList*/ ) {} 136 136 137 #if INTRA_BL138 Void parseIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth );139 #endif140 137 private: 141 138 UInt m_uiLastDQpNonZero; … … 174 171 ContextModel3DBuffer m_cTransformSkipSCModel; 175 172 ContextModel3DBuffer m_CUTransquantBypassFlagSCModel; 176 #if INTRA_BL177 ContextModel3DBuffer m_cIntraBLPredFlagSCModel;178 #endif179 173 }; 180 174 -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecSlice.cpp
r313 r321 197 197 UInt uiTileLCUX; 198 198 Int iNumSubstreamsPerTile = 1; // if independent. 199 #if INTRA_BL 200 m_pcCuDecoder->setBaseRecPic( rpcPic->getLayerId() > 0 ? rpcPic->getFullPelBaseRec(rpcPic->getLayerId()-1) : NULL); 201 #endif 199 202 200 Bool depSliceSegmentsEnabled = rpcPic->getSlice(rpcPic->getCurrSliceIdx())->getPPS()->getDependentSliceSegmentsEnabledFlag(); 203 201 uiTileStartLCU = rpcPic->getPicSym()->getTComTile(rpcPic->getPicSym()->getTileIdxMap(iStartCUAddr))->getFirstCUAddr(); -
branches/SHM-3.0-dev/source/Lib/TLibDecoder/TDecTop.cpp
r313 r321 812 812 #if REF_IDX_FRAMEWORK 813 813 if (m_layerId == 0) 814 #elif INTRA_BL815 if( m_layerId > 0 )816 {817 pcSlice->setRefPicList( m_cListPic );818 }819 else820 814 #endif 821 815 #if FIX1071 -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
r313 r321 1726 1726 return true; 1727 1727 } 1728 1729 #if INTRA_BL1730 Void TEncCavlc::codeIntraBLFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )1731 {1732 assert(0);1733 }1734 1735 #endif1736 1728 //! \} -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncCavlc.h
r313 r321 112 112 Void codeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 113 113 Void codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 114 #if INTRA_BL115 Void codeIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx );116 #endif117 114 118 115 Void codeInterModeFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiEncMode ); -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncCu.cpp
r319 r321 763 763 } 764 764 } 765 #if INTRA_BL766 if(m_pcPicYuvRecBase)767 {768 xCheckRDCostIntraBL( rpcBestCU, rpcTempCU );769 rpcTempCU->initEstData( uiDepth, iQP );770 }771 #endif772 765 #if (ENCODER_FAST_MODE) 773 766 if(pcPic->getLayerId() > 0) … … 1215 1208 return; 1216 1209 } 1217 #if INTRA_BL1218 m_pcEntropyCoder->encodeIntraBLFlag( pcCU, uiAbsPartIdx );1219 if ( !pcCU->isIntraBL( uiAbsPartIdx ) )1220 {1221 #endif1222 1210 m_pcEntropyCoder->encodePredMode( pcCU, uiAbsPartIdx ); 1223 1211 … … 1238 1226 // prediction Info ( Intra : direction mode, Inter : Mv, reference idx ) 1239 1227 m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx ); 1240 #if INTRA_BL1241 }1242 #endif1243 1228 1244 1229 // Encode Coefficients … … 1568 1553 1569 1554 m_pcEntropyCoder->resetBits(); 1570 #if INTRA_BL 1571 m_pcEntropyCoder->encodeIntraBLFlag ( rpcTempCU, 0, true ); 1572 #endif 1555 1573 1556 if ( rpcTempCU->getSlice()->getPPS()->getTransquantBypassEnableFlag()) 1574 1557 { … … 1624 1607 1625 1608 m_pcEntropyCoder->resetBits(); 1626 #if INTRA_BL 1627 m_pcEntropyCoder->encodeIntraBLFlag ( rpcTempCU, 0, true ); 1628 #endif 1609 1629 1610 if ( rpcTempCU->getSlice()->getPPS()->getTransquantBypassEnableFlag()) 1630 1611 { … … 1879 1860 #endif 1880 1861 1881 #if INTRA_BL1882 Void TEncCu::xCheckRDCostIntraBL( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU )1883 {1884 UInt uiDepth = rpcTempCU->getDepth( 0 );1885 rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth );1886 rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth );1887 rpcTempCU->setPredModeSubParts( MODE_INTRA_BL, 0, uiDepth );1888 rpcTempCU->setCUTransquantBypassSubParts( m_pcEncCfg->getCUTransquantBypassFlagValue(), 0, uiDepth );1889 1890 m_pcPredSearch->setBaseRecPic( m_pcPicYuvRecBase );1891 m_pcPredSearch->estIntraBLPredQT( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth] );1892 1893 m_pcEntropyCoder->resetBits();1894 m_pcEntropyCoder->encodeIntraBLFlag ( rpcTempCU, 0, true );1895 m_pcEntropyCoder->encodeSkipFlag( rpcTempCU, 0, true );1896 if ( rpcTempCU->getSlice()->getPPS()->getTransquantBypassEnableFlag())1897 {1898 m_pcEntropyCoder->encodeCUTransquantBypassFlag( rpcTempCU, 0, true );1899 }1900 1901 // Encode Coefficients1902 Bool bCodeDQP = getdQPFlag();1903 m_pcEntropyCoder->encodeCoeff( rpcTempCU, 0, uiDepth, rpcTempCU->getWidth (0), rpcTempCU->getHeight(0), bCodeDQP );1904 setdQPFlag( bCodeDQP );1905 1906 if( m_bUseSBACRD ) m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]);1907 1908 rpcTempCU->getTotalBits() = m_pcEntropyCoder->getNumberOfWrittenBits();1909 if(m_pcEncCfg->getUseSBACRD())1910 {1911 rpcTempCU->getTotalBins() = ((TEncBinCABAC *)((TEncSbac*)m_pcEntropyCoder->m_pcEntropyCoderIf)->getEncBinIf())->getBinsCoded();1912 }1913 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );1914 1915 xCheckDQP( rpcTempCU );1916 xCheckBestMode(rpcBestCU, rpcTempCU, uiDepth);1917 }1918 #endif1919 1862 #if (ENCODER_FAST_MODE) 1920 1863 Void TEncCu::xCheckRDCostILRUni(TComDataCU *&rpcBestCU, TComDataCU *&rpcTempCU, UInt refLayerId) -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncCu.h
r313 r321 84 84 // Access channel 85 85 TEncCfg* m_pcEncCfg; 86 #if INTRA_BL87 TComPicYuv* m_pcPicYuvRecBase; ///< reconstructed base layer88 #endif89 86 TEncSearch* m_pcPredSearch; 90 87 TComTrQuant* m_pcTrQuant; … … 134 131 Int updateLCUDataISlice ( TComDataCU* pcCU, Int LCUIdx, Int width, Int height ); 135 132 #endif 136 #if INTRA_BL 137 Void setBaseRecPic ( TComPicYuv* p ) { m_pcPicYuvRecBase = p; } 138 #endif 133 139 134 protected: 140 135 Void finishCU ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); … … 157 152 #endif 158 153 Void xCheckRDCostIntra ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize ); 159 #if INTRA_BL160 Void xCheckRDCostIntraBL ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU );161 #endif162 154 #if ENCODER_FAST_MODE 163 155 Void xCheckRDCostILRUni ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt refLayerId); -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncEntropy.cpp
r319 r321 166 166 } 167 167 168 #if INTRA_BL169 if( pcCU->isIntraBL( uiAbsPartIdx ) )170 {171 return;172 }173 #endif174 175 168 m_pcEntropyCoderIf->codePredMode( pcCU, uiAbsPartIdx ); 176 169 } … … 251 244 } 252 245 } 253 #if INTRA_BL254 if( pcCU->isIntra(uiAbsPartIdx) && pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_NxN && uiDepth == pcCU->getDepth(uiAbsPartIdx) )255 #else256 246 257 247 if( pcCU->getPredictionMode(uiAbsPartIdx) == MODE_INTRA && pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_NxN && uiDepth == pcCU->getDepth(uiAbsPartIdx) ) 258 #endif259 248 { 260 249 assert( uiSubdiv ); … … 342 331 } 343 332 344 #if INTRA_BL345 if( ( !pcCU->isIntra( uiAbsPartIdx ) ) && uiDepth == pcCU->getDepth( uiAbsPartIdx ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, 0 ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_V, 0 ) )346 #else347 333 if( pcCU->getPredictionMode(uiAbsPartIdx) != MODE_INTRA && uiDepth == pcCU->getDepth( uiAbsPartIdx ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, 0 ) && !pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_V, 0 ) ) 348 #endif349 334 { 350 335 assert( pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, 0 ) ); … … 427 412 Void TEncEntropy::encodePredInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 428 413 { 429 #if INTRA_BL430 assert ( !pcCU->isIntraBL( uiAbsPartIdx ) );431 #endif432 414 if( bRD ) 433 415 { … … 751 733 } 752 734 753 #if INTRA_BL754 Void TEncEntropy::encodeIntraBLFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )755 {756 if( pcCU->getLayerId() == 0 )757 {758 return;759 }760 761 if( bRD )762 {763 uiAbsPartIdx = 0;764 }765 m_pcEntropyCoderIf->codeIntraBLFlag( pcCU, uiAbsPartIdx );766 }767 #endif768 735 //! \} -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncEntropy.h
r313 r321 85 85 virtual Void codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 86 86 virtual Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 87 88 #if INTRA_BL 89 virtual Void codeIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 90 #endif 87 91 88 virtual Void codePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 92 89 virtual Void codePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; … … 164 161 Void encodeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 165 162 Void encodeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 166 #if INTRA_BL167 Void encodeIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );168 #endif169 163 Void encodePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 170 164 Void encodePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD = false ); -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncSbac.cpp
r313 r321 83 83 , m_cTransformSkipSCModel ( 1, 2, NUM_TRANSFORMSKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 84 84 , m_CUTransquantBypassFlagSCModel( 1, 1, NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX, m_contextModels + m_numContextModels, m_numContextModels) 85 #if INTRA_BL86 , m_cIntraBLPredFlagSCModel (1, 1, NUM_INTRA_BL_PRED_CTX , m_contextModels + m_numContextModels, m_numContextModels)87 #endif88 85 { 89 86 assert( m_numContextModels <= MAX_NUM_CTX_MOD ); … … 134 131 m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANS_SUBDIV_FLAG ); 135 132 m_cSaoMergeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_MERGE_FLAG ); 136 #if INTRA_BL137 m_cIntraBLPredFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRA_BL_PRED_FLAG );138 #endif139 133 m_cSaoTypeIdxSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX ); 140 134 m_cTransformSkipSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANSFORMSKIP_FLAG ); … … 169 163 curCost = m_cCUSplitFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 170 164 curCost += m_cCUSkipFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG ); 171 #if INTRA_BL172 curCost += m_cIntraBLPredFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_INTRA_BL_PRED_FLAG );173 #endif174 165 curCost += m_cCUMergeFlagExtSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT); 175 166 curCost += m_cCUMergeIdxExtSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_MERGE_IDX_EXT); … … 243 234 m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANS_SUBDIV_FLAG ); 244 235 m_cSaoMergeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_MERGE_FLAG ); 245 #if INTRA_BL246 m_cIntraBLPredFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRA_BL_PRED_FLAG );247 #endif248 236 m_cSaoTypeIdxSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SAO_TYPE_IDX ); 249 237 m_cTransformSkipSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_TRANSFORMSKIP_FLAG ); … … 428 416 { 429 417 PartSize eSize = pcCU->getPartitionSize( uiAbsPartIdx ); 430 #if INTRA_BL 431 assert( !pcCU->isIntraBL( uiAbsPartIdx ) ); 432 #endif 418 433 419 if ( pcCU->isIntra( uiAbsPartIdx ) ) 434 420 { … … 1600 1586 } 1601 1587 1602 #if INTRA_BL1603 /** code intra_bl flag1604 * \param pcCU1605 * \param uiAbsPartIdx1606 * \returns Void1607 */1608 Void TEncSbac::codeIntraBLFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )1609 {1610 // get context function is here1611 UInt uiSymbol = pcCU->isIntraBL( uiAbsPartIdx ) ? 1 : 0;1612 1613 UInt uiCtxIntraBL = pcCU->getCtxIntraBLFlag( uiAbsPartIdx ) ;1614 m_pcBinIf->encodeBin(uiSymbol, m_cIntraBLPredFlagSCModel.get( 0, 0, uiCtxIntraBL ));1615 1616 DTRACE_CABAC_VL( g_nSymbolCounter++ );1617 DTRACE_CABAC_T( "\tuiSymbol: ");1618 DTRACE_CABAC_V( uiSymbol );1619 DTRACE_CABAC_T( "\n");1620 }1621 #endif1622 1588 //! \} -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncSbac.h
r313 r321 132 132 Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 133 133 Void codeMVPIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefList ); 134 135 #if INTRA_BL 136 Void codeIntraBLFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 137 #endif 134 138 135 Void codePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 139 136 Void codePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx ); … … 206 203 ContextModel3DBuffer m_cTransformSkipSCModel; 207 204 ContextModel3DBuffer m_CUTransquantBypassFlagSCModel; 208 #if INTRA_BL209 ContextModel3DBuffer m_cIntraBLPredFlagSCModel;210 #endif211 205 }; 212 206 -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncSearch.cpp
r319 r321 906 906 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 907 907 } 908 #if INTRA_BL 909 m_pcEntropyCoder->encodeIntraBLFlag ( pcCU, 0, true ); 910 if( pcCU->isIntraBL( 0 ) ) 911 { 912 return; 913 } 914 #endif 908 915 909 m_pcEntropyCoder ->encodePartSize( pcCU, 0, pcCU->getDepth(0), true ); 916 910 … … 950 944 } 951 945 } 952 #if INTRA_BL 953 if( pcCU->isIntraBL( 0 ) ) 954 { 955 return; 956 } 957 #endif 946 958 947 if( bChroma ) 959 948 { … … 1055 1044 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, uiTrDepth, m_piYuvExt, m_iYuvExtStride, m_iYuvExtHeight, bAboveAvail, bLeftAvail ); 1056 1045 //===== get prediction signal ===== 1057 #if INTRA_BL1058 if(pcCU->isIntraBL ( uiAbsPartIdx ) )1059 {1060 pcCU->getBaseLumaBlk( uiWidth, uiHeight, uiAbsPartIdx, piPred, uiStride );1061 }1062 else1063 #endif1064 1046 predIntraLumaAng( pcCU->getPattern(), uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 1065 1047 // save prediction … … 1247 1229 1248 1230 //===== get prediction signal ===== 1249 #if INTRA_BL 1250 if(pcCU->isIntraBL ( uiAbsPartIdx ) ) 1251 { 1252 pcCU->getBaseChromaBlk( uiWidth, uiHeight, uiAbsPartIdx, piPred, uiStride, uiChromaId ); 1253 } 1254 else 1255 #endif 1256 { 1257 predIntraChromaAng( pPatChroma, uiChromaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 1258 } 1231 predIntraChromaAng( pPatChroma, uiChromaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 1232 1259 1233 // save prediction 1260 1234 if( default0Save1Load2 == 1 ) … … 5576 5550 5577 5551 { 5578 #if INTRA_BL5579 assert( !pcCU->isIntra(uiAbsPartIdx) );5580 #else5581 5552 assert( pcCU->getPredictionMode(uiAbsPartIdx) != MODE_INTRA ); 5582 #endif5583 5553 if( bSubdivAndCbf ) 5584 5554 { … … 5814 5784 } 5815 5785 m_pcEntropyCoder->encodeSkipFlag ( pcCU, 0, true ); 5816 #if INTRA_BL5817 if(m_pcEncCfg->getLayerId())5818 {5819 m_pcEntropyCoder->encodeIntraBLFlag(pcCU, 0, true);5820 assert( pcCU->isIntraBL( 0 ) == false );5821 }5822 #endif5823 5786 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 5824 5787 m_pcEntropyCoder->encodePartSize( pcCU, 0, pcCU->getDepth(0), true ); … … 6242 6205 #endif 6243 6206 6244 #if INTRA_BL6245 Void6246 TEncSearch::estIntraBLPredQT( TComDataCU* pcCU,6247 TComYuv* pcOrgYuv,6248 TComYuv* pcPredYuv,6249 TComYuv* pcResiYuv,6250 TComYuv* pcRecoYuv )6251 {6252 UInt uiDepth = pcCU->getDepth(0);6253 UInt uiOverallDistY = 0;6254 UInt uiOverallDistC = 0;6255 6256 //===== set QP and clear Cbf =====6257 if ( pcCU->getSlice()->getPPS()->getUseDQP() == true)6258 {6259 pcCU->setQPSubParts( pcCU->getQP(0), 0, uiDepth );6260 }6261 else6262 {6263 pcCU->setQPSubParts( pcCU->getSlice()->getSliceQp(), 0, uiDepth );6264 }6265 6266 //===== init pattern for luma prediction =====6267 Bool bAboveAvail = false;6268 Bool bLeftAvail = false;6269 pcCU->getPattern()->initPattern ( pcCU, 0, 0 );6270 pcCU->getPattern()->initAdiPattern( pcCU, 0, 0, m_piYuvExt, m_iYuvExtStride, m_iYuvExtHeight, bAboveAvail, bLeftAvail );6271 6272 pcCU->setLumaIntraDirSubParts ( DC_IDX, 0, uiDepth );6273 6274 // set context models6275 if( m_bUseSBACRD )6276 {6277 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] );6278 }6279 6280 // determine residual for partition6281 Double dPUCost = 0.0;6282 xRecurIntraCodingQT( pcCU, 0, 0, false, pcOrgYuv, pcPredYuv, pcResiYuv, uiOverallDistY, uiOverallDistC, false, dPUCost );6283 xSetIntraResultQT( pcCU, 0, 0, false, pcRecoYuv );6284 6285 //=== update PU data ====6286 pcCU->copyToPic( uiDepth, 0, 0 );6287 6288 //===== reset context models =====6289 if(m_bUseSBACRD)6290 {6291 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST]);6292 }6293 6294 //===== set distortion (rate and r-d costs are determined later) =====6295 pcCU->getTotalDistortion() = uiOverallDistY + uiOverallDistC;6296 }6297 6298 #endif6299 6207 //! \} -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncSearch.h
r313 r321 99 99 #if SVC_EXTENSION 100 100 TEncTop** m_ppcTEncTop; 101 #if INTRA_BL102 TComPicYuv* m_pcPicYuvRecBase; ///< reconstructed base layer103 #endif104 101 #endif 105 102 … … 192 189 TComYuv* pcRecoYuv, 193 190 UInt uiPreCalcDistC ); 194 195 #if INTRA_BL196 Void setBaseRecPic ( TComPicYuv* pcPicYuvRecBase ) { m_pcPicYuvRecBase = pcPicYuvRecBase; }197 TComPicYuv* getBaseRecPic () { return m_pcPicYuvRecBase; }198 Void estIntraBLPredQT ( TComDataCU* pcCU,199 TComYuv* pcOrgYuv,200 TComYuv* pcPredYuv,201 TComYuv* pcResiYuv,202 TComYuv* pcRecoYuv );203 #endif204 191 205 192 /// encoder estimation - inter prediction (non-skip) -
branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncSlice.cpp
r314 r321 980 980 UInt uiTileLCUX = 0; 981 981 982 #if INTRA_BL983 m_pcCuEncoder->setBaseRecPic( rpcPic->getLayerId() > 0 ? rpcPic->getFullPelBaseRec(rpcPic->getLayerId()-1) : NULL);984 #endif985 986 982 Bool depSliceSegmentsEnabled = pcSlice->getPPS()->getDependentSliceSegmentsEnabledFlag(); 987 983 uiCUAddr = rpcPic->getPicSym()->getCUOrderMap( uiStartCUAddr /rpcPic->getNumPartInCU());
Note: See TracChangeset for help on using the changeset viewer.