Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecSbac.h


Ignore:
Timestamp:
13 Aug 2015, 17:38:13 (9 years ago)
Author:
tech
Message:

Merged 14.1-update-dev1@1312.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibDecoder/TDecSbac.h

    r1196 r1313  
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
    4  * granted under this license. 
    5  *
    6 * Copyright (c) 2010-2015, ITU/ISO/IEC
     4 * granted under this license.
     5 *
     6 * Copyright (c) 2010-2015, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    5858// ====================================================================================================================
    5959
     60class SEImessages;
     61
    6062/// SBAC decoder class
    6163class TDecSbac : public TDecEntropyIf
     
    6466  TDecSbac();
    6567  virtual ~TDecSbac();
    66  
     68
    6769  Void  init                      ( TDecBinIf* p )    { m_pcTDecBinIf = p; }
    6870  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 );
    7476
    7577  Void  resetEntropy (TComSlice* pSlice );
     
    7779  Void  parseVPS                  ( TComVPS* /*pcVPS*/ ) {}
    7880  Void  parseSPS                  ( TComSPS* /*pcSPS*/ ) {}
    79 #if H_3D
    80   Void  parsePPS                  ( TComPPS* /*pcPPS*/, TComVPS* /*pcVPS*/ ) {}
    81 #else
    8281  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*/) {}
    9083  Void  parseTerminatingBit       ( UInt& ruiBit );
     84  Void  parseRemainingBytes       ( Bool noTrailingBytesExpected);
    9185  Void  parseMVPIdx               ( Int& riMVPIdx          );
    9286  Void  parseSaoMaxUvlc           ( UInt& val, UInt maxSymbol );
    93   Void  parseSaoMerge         ( UInt&  ruiVal   );
     87  Void  parseSaoMerge             ( UInt&  ruiVal   );
    9488  Void  parseSaoTypeIdx           ( UInt&  ruiVal  );
    9589  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
    9893private:
     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
    99100  Void  xReadUnarySymbol    ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset );
    100101  Void  xReadUnaryMaxSymbol ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset, UInt uiMaxSymbol );
    101102  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 );
    107112  Void  xParseDmm1WedgeIdx   ( UInt& ruiTabIdx, Int iNumBit );
    108113#endif
    109 #if H_3D_DIM_SDC
     114#if NH_3D_SDC_INTRA
    110115  Void  xParseSDCResidualData     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPart );
    111116#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
    115118  Void  parseSDCFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    116119#endif
    117 #if H_3D_DBBP
     120#if NH_3D_DBBP
    118121  Void parseDBBPFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    119122#endif
     123
    120124private:
    121125  TComInputBitstream* m_pcBitstream;
    122126  TDecBinIf*        m_pcTDecBinIf;
    123  
     127
    124128public:
    125  
     129
    126130  Void parseSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    127 #if H_3D
     131#if NH_3D_DIS
    128132  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 );
    129136#endif
    130137  Void parseCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
     
    132139  Void parseMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx );
    133140  Void parseMergeIndex    ( TComDataCU* pcCU, UInt& ruiMergeIndex );
    134 #if H_3D_ARP
     141#if NH_3D_ARP
    135142  Void parseARPW          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    136143#endif
    137 #if H_3D_IC
     144#if NH_3D_IC
    138145  Void parseICFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    139146#endif
    140147  Void parsePartSize      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    141148  Void parsePredMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    142  
     149
    143150  Void parseIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    144  
    145151  Void parseIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    146  
    147 #if H_3D_DIM
    148   Void parseIntraDepth     ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    149   Void parseIntraDepthMode ( TComDataCU* pcCU, UInt absPartIdx, UInt depth );
    150 #endif
    151 
    152152  Void parseInterDir      ( TComDataCU* pcCU, UInt& ruiInterDir, UInt uiAbsPartIdx );
    153153  Void parseRefFrmIdx     ( TComDataCU* pcCU, Int& riRefFrmIdx, RefPicList eRefList );
    154154  Void parseMvd           ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth, RefPicList eRefList );
    155  
     155
     156  Void parseCrossComponentPrediction ( class TComTU &rTu, ComponentID compID );
     157
    156158  Void parseTransformSubdivFlag( UInt& ruiSubdivFlag, UInt uiLog2TransformBlockSize );
    157   Void parseQtCbf         ( TComDataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth, UInt uiDepth );
     159  Void parseQtCbf         ( TComTU &rTu, const ComponentID compID, const Bool lowestLevel );
    158160  Void parseQtRootCbf     ( UInt uiAbsPartIdx, UInt& uiQtRootCbf );
    159  
     161
    160162  Void parseDeltaQP       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    161  
     163  Void parseChromaQpAdjustment( TComDataCU* cu, UInt absPartIdx, UInt depth );
     164
    162165  Void parseIPCMInfo      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth);
    163166
    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 );
    169170
    170171  Void  parseScalingList ( TComScalingList* /*scalingList*/ ) {}
    171172
     173  Void  parseExplicitRdpcmMode( TComTU &rTu, ComponentID compID );
     174
    172175private:
    173   UInt m_uiLastDQpNonZero;
    174   UInt m_uiLastQp;
    175  
    176176  ContextModel         m_contextModels[MAX_NUM_CTX_MOD];
    177177  Int                  m_numContextModels;
    178178  ContextModel3DBuffer m_cCUSplitFlagSCModel;
    179179  ContextModel3DBuffer m_cCUSkipFlagSCModel;
    180 #if H_3D
     180#if NH_3D_DIS
    181181  ContextModel3DBuffer m_cCUDISFlagSCModel;
    182182  ContextModel3DBuffer m_cCUDISTypeSCModel;
     
    184184  ContextModel3DBuffer m_cCUMergeFlagExtSCModel;
    185185  ContextModel3DBuffer m_cCUMergeIdxExtSCModel;
    186 #if H_3D_ARP
     186#if NH_3D_ARP
    187187  ContextModel3DBuffer m_cCUPUARPWSCModel;
    188188#endif
    189 #if H_3D_IC
     189#if NH_3D_IC
    190190  ContextModel3DBuffer m_cCUICFlagSCModel;
    191191#endif
     
    201201  ContextModel3DBuffer m_cCUTransSubdivFlagSCModel;
    202202  ContextModel3DBuffer m_cCUQtRootCbfSCModel;
    203  
     203
    204204  ContextModel3DBuffer m_cCUSigCoeffGroupSCModel;
    205205  ContextModel3DBuffer m_cCUSigSCModel;
     
    208208  ContextModel3DBuffer m_cCUOneSCModel;
    209209  ContextModel3DBuffer m_cCUAbsSCModel;
    210  
     210
    211211  ContextModel3DBuffer m_cMVPIdxSCModel;
    212  
     212
    213213  ContextModel3DBuffer m_cSaoMergeSCModel;
    214214  ContextModel3DBuffer m_cSaoTypeIdxSCModel;
    215215  ContextModel3DBuffer m_cTransformSkipSCModel;
    216216  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
    221228  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 
    224232  ContextModel3DBuffer m_cSDCResidualFlagSCModel;
    225233  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
    232237  ContextModel3DBuffer m_cDBBPFlagSCModel;
    233238#endif
     239
     240
     241  UInt m_golombRiceAdaptationStatistics[RExt__GOLOMB_RICE_ADAPTATION_STATISTICS_SETS];
    234242};
    235243
Note: See TracChangeset for help on using the changeset viewer.