Changeset 983 in 3DVCSoftware for branches/HTM-11.2-dev3-MediaTek/source/Lib/TLibDecoder/TDecSbac.cpp
- Timestamp:
- 11 Jul 2014, 03:49:39 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-11.2-dev3-MediaTek/source/Lib/TLibDecoder/TDecSbac.cpp
r976 r983 52 52 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels ) 53 53 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 54 #if MTK_SINGLE_DEPTH_MODE_I0095 55 , m_cCUSingleDepthFlagSCModel ( 1, 1, NUM_SINGLEDEPTH_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 56 , m_cSingleDepthValueSCModel ( 1, 1, NUM_SINGLE_DEPTH_VALUE_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 57 #endif 54 58 , m_cCUMergeFlagExtSCModel ( 1, 1, NUM_MERGE_FLAG_EXT_CTX , m_contextModels + m_numContextModels, m_numContextModels) 55 59 , m_cCUMergeIdxExtSCModel ( 1, 1, NUM_MERGE_IDX_EXT_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 132 136 m_cCUSplitFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 133 137 m_cCUSkipFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SKIP_FLAG ); 138 #if MTK_SINGLE_DEPTH_MODE_I0095 139 m_cCUSingleDepthFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 140 m_cSingleDepthValueSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); 141 #endif 134 142 m_cCUMergeFlagExtSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT ); 135 143 m_cCUMergeIdxExtSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_MERGE_IDX_EXT ); … … 199 207 m_cCUSplitFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SPLIT_FLAG ); 200 208 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 209 #if MTK_SINGLE_DEPTH_MODE_I0095 210 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 211 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); 212 #endif 201 213 m_cCUMergeFlagExtSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT ); 202 214 m_cCUMergeIdxExtSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT ); … … 636 648 #endif 637 649 } 638 650 #if MTK_SINGLE_DEPTH_MODE_I0095 651 Void TDecSbac::parseSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 652 { 653 pcCU->setSingleDepthFlagSubParts( false, uiAbsPartIdx, uiDepth ); 654 UInt uiSymbol = 0; 655 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSingleDepthFlagSCModel.get( 0, 0, 0 ) ); 656 if( uiSymbol ) 657 { 658 pcCU->setSingleDepthFlagSubParts( true, uiAbsPartIdx, uiDepth ); 659 pcCU->setSkipFlagSubParts( false, uiAbsPartIdx, uiDepth ); 660 pcCU->setSDCFlagSubParts( false, uiAbsPartIdx, uiDepth ); 661 pcCU->setPredModeSubParts( MODE_INTRA, uiAbsPartIdx, uiDepth ); 662 pcCU->setPartSizeSubParts( SIZE_2Nx2N, uiAbsPartIdx, uiDepth ); 663 pcCU->setLumaIntraDirSubParts (DC_IDX, uiAbsPartIdx, uiDepth ); 664 pcCU->setSizeSubParts( g_uiMaxCUWidth>>uiDepth, g_uiMaxCUHeight>>uiDepth, uiAbsPartIdx, uiDepth ); 665 pcCU->setMergeFlagSubParts( false , uiAbsPartIdx, 0, uiDepth ); 666 pcCU->setTrIdxSubParts(0, uiAbsPartIdx, uiDepth); 667 pcCU->setCbfSubParts(0, 1, 1, uiAbsPartIdx, uiDepth); 668 669 UInt absValDeltaDC = 0; 670 671 UInt uiUnaryIdx = 0; 672 UInt uiNumCand = MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE; 673 if ( uiNumCand > 1 ) 674 { 675 for( ; uiUnaryIdx < uiNumCand - 1; ++uiUnaryIdx ) 676 { 677 UInt uiSymbol2 = 0; 678 if ( uiUnaryIdx==0 ) 679 { 680 m_pcTDecBinIf->decodeBin( uiSymbol2, m_cSingleDepthValueSCModel.get( 0, 0, 0 ) ); 681 } 682 else 683 { 684 m_pcTDecBinIf->decodeBinEP( uiSymbol2); 685 } 686 if( uiSymbol2 == 0 ) 687 { 688 break; 689 } 690 } 691 } 692 absValDeltaDC = uiUnaryIdx; 693 pcCU->setSingleDepthValueSubParts((Pel)absValDeltaDC,uiAbsPartIdx, 0, uiDepth); 694 } 695 } 696 697 #endif 639 698 /** parse merge flag 640 699 * \param pcCU
Note: See TracChangeset for help on using the changeset viewer.