Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecSbac.h
- Timestamp:
- 13 Aug 2015, 17:38:13 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecSbac.h
r1196 r1313 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are 4 * granted under this license. 5 * 6 * Copyright (c) 2010-2015, ITU/ISO/IEC4 * granted under this license. 5 * 6 * Copyright (c) 2010-2015, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 58 58 // ==================================================================================================================== 59 59 60 class SEImessages; 61 60 62 /// SBAC decoder class 61 63 class TDecSbac : public TDecEntropyIf … … 64 66 TDecSbac(); 65 67 virtual ~TDecSbac(); 66 68 67 69 Void init ( TDecBinIf* p ) { m_pcTDecBinIf = p; } 68 70 Void uninit ( ) { m_pcTDecBinIf = 0; } 69 70 Void load ( TDecSbac* pScr);71 Void loadContexts ( TDecSbac* pScr);72 Void xCopyFrom (TDecSbac* pSrc );73 Void xCopyContextsFrom (TDecSbac* pSrc );71 72 Void load ( const TDecSbac* pSrc ); 73 Void loadContexts ( const TDecSbac* pSrc ); 74 Void xCopyFrom ( const TDecSbac* pSrc ); 75 Void xCopyContextsFrom ( const TDecSbac* pSrc ); 74 76 75 77 Void resetEntropy (TComSlice* pSlice ); … … 77 79 Void parseVPS ( TComVPS* /*pcVPS*/ ) {} 78 80 Void parseSPS ( TComSPS* /*pcSPS*/ ) {} 79 #if H_3D80 Void parsePPS ( TComPPS* /*pcPPS*/, TComVPS* /*pcVPS*/ ) {}81 #else82 81 Void parsePPS ( TComPPS* /*pcPPS*/ ) {} 83 #endif 84 85 #if H_MV 86 Void parseSliceHeader ( TComSlice*& /*rpcSlice*/, ParameterSetManagerDecoder* /*parameterSetManager*/, Int targetOlsIdx ) {} 87 #else 88 Void parseSliceHeader ( TComSlice*& /*rpcSlice*/, ParameterSetManagerDecoder* /*parameterSetManager*/ ) {} 89 #endif 82 Void parseSliceHeader ( TComSlice* /*pcSlice*/, ParameterSetManager* /*parameterSetManager*/, const Int /*prevTid0POC*/) {} 90 83 Void parseTerminatingBit ( UInt& ruiBit ); 84 Void parseRemainingBytes ( Bool noTrailingBytesExpected); 91 85 Void parseMVPIdx ( Int& riMVPIdx ); 92 86 Void parseSaoMaxUvlc ( UInt& val, UInt maxSymbol ); 93 Void parseSaoMerge ( UInt& ruiVal );87 Void parseSaoMerge ( UInt& ruiVal ); 94 88 Void parseSaoTypeIdx ( UInt& ruiVal ); 95 89 Void parseSaoUflc ( UInt uiLength, UInt& ruiVal ); 96 Void parseSAOBlkParam (SAOBlkParam& saoBlkParam, Bool* sliceEnabled, Bool leftMergeAvail, Bool aboveMergeAvail); 97 Void parseSaoSign(UInt& val); 90 Void parseSAOBlkParam (SAOBlkParam& saoBlkParam, Bool* sliceEnabled, Bool leftMergeAvail, Bool aboveMergeAvail, const BitDepths &bitDepths); 91 Void parseSaoSign (UInt& val); 92 98 93 private: 94 #if RExt__DECODER_DEBUG_BIT_STATISTICS 95 Void xReadUnarySymbol ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset, const class TComCodingStatisticsClassType &whichStat ); 96 Void xReadUnaryMaxSymbol ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset, UInt uiMaxSymbol, const class TComCodingStatisticsClassType &whichStat ); 97 Void xReadEpExGolomb ( UInt& ruiSymbol, UInt uiCount, const class TComCodingStatisticsClassType &whichStat ); 98 Void xReadCoefRemainExGolomb ( UInt &rSymbol, UInt &rParam, const Bool useLimitedPrefixLength, const Int maxLog2TrDynamicRange, const class TComCodingStatisticsClassType &whichStat ); 99 #else 99 100 Void xReadUnarySymbol ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset ); 100 101 Void xReadUnaryMaxSymbol ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset, UInt uiMaxSymbol ); 101 102 Void xReadEpExGolomb ( UInt& ruiSymbol, UInt uiCount ); 102 Void xReadCoefRemainExGolomb ( UInt &rSymbol, UInt &rParam ); 103 #if H_3D_DIM 104 Void xReadExGolombLevel ( UInt& ruiSymbol, ContextModel& rcSCModel ); 105 Void xParseDimDeltaDC ( Pel& rValDeltaDC, UInt uiNumSeg ); 106 #if H_3D_DIM_DMM 103 Void xReadCoefRemainExGolomb ( UInt &rSymbol, UInt &rParam, const Bool useLimitedPrefixLength, const Int maxLog2TrDynamicRange ); 104 #endif 105 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER 106 Void xReadExGolombLevelDdc( UInt& ruiSymbol ); 107 Void xParseDeltaDC ( Pel& rValDeltaDC, UInt uiNumSeg ); 108 #endif 109 #if NH_3D_DMM 110 Void xParseIntraDepthMode ( TComDataCU* pcCU, UInt absPartIdx, UInt depth ); 111 Void xParseDmmData ( TComDataCU* pcCU, UInt absPartIdx, UInt depth ); 107 112 Void xParseDmm1WedgeIdx ( UInt& ruiTabIdx, Int iNumBit ); 108 113 #endif 109 #if H_3D_DIM_SDC114 #if NH_3D_SDC_INTRA 110 115 Void xParseSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart ); 111 116 #endif 112 #endif 113 #if H_3D_INTER_SDC 114 Void parseDeltaDC ( TComDataCU* pcCU, UInt absPartIdx, UInt depth ); 117 #if NH_3D_SDC_INTRA || NH_3D_SDC_INTER 115 118 Void parseSDCFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 116 119 #endif 117 #if H_3D_DBBP120 #if NH_3D_DBBP 118 121 Void parseDBBPFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 119 122 #endif 123 120 124 private: 121 125 TComInputBitstream* m_pcBitstream; 122 126 TDecBinIf* m_pcTDecBinIf; 123 127 124 128 public: 125 129 126 130 Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 127 #if H_3D131 #if NH_3D_DIS 128 132 Void parseDIS ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 133 #endif 134 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER 135 Void parseDeltaDC ( TComDataCU* pcCU, UInt absPartIdx, UInt depth ); 129 136 #endif 130 137 Void parseCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); … … 132 139 Void parseMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx ); 133 140 Void parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex ); 134 #if H_3D_ARP141 #if NH_3D_ARP 135 142 Void parseARPW ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 136 143 #endif 137 #if H_3D_IC144 #if NH_3D_IC 138 145 Void parseICFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 139 146 #endif 140 147 Void parsePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 141 148 Void parsePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 142 149 143 150 Void parseIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 144 145 151 Void parseIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 146 147 #if H_3D_DIM148 Void parseIntraDepth ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );149 Void parseIntraDepthMode ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );150 #endif151 152 152 Void parseInterDir ( TComDataCU* pcCU, UInt& ruiInterDir, UInt uiAbsPartIdx ); 153 153 Void parseRefFrmIdx ( TComDataCU* pcCU, Int& riRefFrmIdx, RefPicList eRefList ); 154 154 Void parseMvd ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth, RefPicList eRefList ); 155 155 156 Void parseCrossComponentPrediction ( class TComTU &rTu, ComponentID compID ); 157 156 158 Void parseTransformSubdivFlag( UInt& ruiSubdivFlag, UInt uiLog2TransformBlockSize ); 157 Void parseQtCbf ( TCom DataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth, UInt uiDepth);159 Void parseQtCbf ( TComTU &rTu, const ComponentID compID, const Bool lowestLevel ); 158 160 Void parseQtRootCbf ( UInt uiAbsPartIdx, UInt& uiQtRootCbf ); 159 161 160 162 Void parseDeltaQP ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 161 163 Void parseChromaQpAdjustment( TComDataCU* cu, UInt absPartIdx, UInt depth ); 164 162 165 Void parseIPCMInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth); 163 166 164 Void parseLastSignificantXY( UInt& uiPosLastX, UInt& uiPosLastY, Int width, Int height, TextType eTType, UInt uiScanIdx ); 165 Void parseCoeffNxN ( TComDataCU* pcCU, TCoeff* pcCoef, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt uiDepth, TextType eTType ); 166 Void parseTransformSkipFlags ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt width, UInt height, UInt uiDepth, TextType eTType); 167 168 Void updateContextTables( SliceType eSliceType, Int iQp ); 167 Void parseLastSignificantXY( UInt& uiPosLastX, UInt& uiPosLastY, Int width, Int height, ComponentID component, UInt uiScanIdx ); 168 Void parseCoeffNxN ( class TComTU &rTu, ComponentID compID ); 169 Void parseTransformSkipFlags ( class TComTU &rTu, ComponentID component ); 169 170 170 171 Void parseScalingList ( TComScalingList* /*scalingList*/ ) {} 171 172 173 Void parseExplicitRdpcmMode( TComTU &rTu, ComponentID compID ); 174 172 175 private: 173 UInt m_uiLastDQpNonZero;174 UInt m_uiLastQp;175 176 176 ContextModel m_contextModels[MAX_NUM_CTX_MOD]; 177 177 Int m_numContextModels; 178 178 ContextModel3DBuffer m_cCUSplitFlagSCModel; 179 179 ContextModel3DBuffer m_cCUSkipFlagSCModel; 180 #if H_3D180 #if NH_3D_DIS 181 181 ContextModel3DBuffer m_cCUDISFlagSCModel; 182 182 ContextModel3DBuffer m_cCUDISTypeSCModel; … … 184 184 ContextModel3DBuffer m_cCUMergeFlagExtSCModel; 185 185 ContextModel3DBuffer m_cCUMergeIdxExtSCModel; 186 #if H_3D_ARP186 #if NH_3D_ARP 187 187 ContextModel3DBuffer m_cCUPUARPWSCModel; 188 188 #endif 189 #if H_3D_IC189 #if NH_3D_IC 190 190 ContextModel3DBuffer m_cCUICFlagSCModel; 191 191 #endif … … 201 201 ContextModel3DBuffer m_cCUTransSubdivFlagSCModel; 202 202 ContextModel3DBuffer m_cCUQtRootCbfSCModel; 203 203 204 204 ContextModel3DBuffer m_cCUSigCoeffGroupSCModel; 205 205 ContextModel3DBuffer m_cCUSigSCModel; … … 208 208 ContextModel3DBuffer m_cCUOneSCModel; 209 209 ContextModel3DBuffer m_cCUAbsSCModel; 210 210 211 211 ContextModel3DBuffer m_cMVPIdxSCModel; 212 212 213 213 ContextModel3DBuffer m_cSaoMergeSCModel; 214 214 ContextModel3DBuffer m_cSaoTypeIdxSCModel; 215 215 ContextModel3DBuffer m_cTransformSkipSCModel; 216 216 ContextModel3DBuffer m_CUTransquantBypassFlagSCModel; 217 218 #if H_3D_DIM 219 ContextModel3DBuffer m_cDepthIntraModeSCModel; 220 ContextModel3DBuffer m_cDdcFlagSCModel; 217 ContextModel3DBuffer m_explicitRdpcmFlagSCModel; 218 ContextModel3DBuffer m_explicitRdpcmDirSCModel; 219 ContextModel3DBuffer m_cCrossComponentPredictionSCModel; 220 221 ContextModel3DBuffer m_ChromaQpAdjFlagSCModel; 222 ContextModel3DBuffer m_ChromaQpAdjIdcSCModel; 223 #if NH_3D_DMM 224 ContextModel3DBuffer m_cNotDmmFlagSCModel; 225 ContextModel3DBuffer m_cDmmModeSCModel; 226 #endif 227 #if NH_3D_DMM || NH_3D_SDC_INTRA || NH_3D_SDC_INTER 221 228 ContextModel3DBuffer m_cDdcDataSCModel; 222 ContextModel3DBuffer m_cAngleFlagSCModel; 223 #if H_3D_DIM_SDC 229 ContextModel3DBuffer m_cSDCFlagSCModel; 230 #endif 231 #if NH_3D_SDC_INTRA 224 232 ContextModel3DBuffer m_cSDCResidualFlagSCModel; 225 233 ContextModel3DBuffer m_cSDCResidualSCModel; 226 #endif 227 #endif 228 #if H_3D_DIM_SDC 229 ContextModel3DBuffer m_cSDCFlagSCModel; 230 #endif 231 #if H_3D_DBBP 234 ContextModel3DBuffer m_cDdcFlagSCModel; 235 #endif 236 #if NH_3D_DBBP 232 237 ContextModel3DBuffer m_cDBBPFlagSCModel; 233 238 #endif 239 240 241 UInt m_golombRiceAdaptationStatistics[RExt__GOLOMB_RICE_ADAPTATION_STATISTICS_SETS]; 234 242 }; 235 243
Note: See TracChangeset for help on using the changeset viewer.