Changeset 56 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecTop.h


Ignore:
Timestamp:
11 May 2012, 21:20:17 (12 years ago)
Author:
hschwarz
Message:

updated trunk (move to HM6.1)

File:
1 edited

Legend:

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

    r42 r56  
    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-2011, ISO/IEC
     4 * granted under this license. 
     5 *
     6 * Copyright (c) 2010-2012, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    1515 *    this list of conditions and the following disclaimer in the documentation
    1616 *    and/or other materials provided with the distribution.
    17  *  * Neither the name of the ISO/IEC nor the names of its contributors may
     17 *  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
    1818 *    be used to endorse or promote products derived from this software without
    1919 *    specific prior written permission.
     
    3232 */
    3333
    34 
    35 
    3634/** \file     TDecTop.h
    3735    \brief    decoder class (header)
     
    4139#define __TDECTOP__
    4240
    43 #include "../TLibCommon/CommonDef.h"
    44 #include "../TLibCommon/TComList.h"
    45 #include "../TLibCommon/TComPicYuv.h"
    46 #include "../TLibCommon/TComPic.h"
    47 #include "../TLibCommon/TComTrQuant.h"
    48 #include "../TLibCommon/TComDepthMapGenerator.h"
    49 #include "../TLibCommon/TComResidualGenerator.h"
    50 #include "../TLibCommon/SEI.h"
     41#include "TLibCommon/CommonDef.h"
     42#include "TLibCommon/TComList.h"
     43#include "TLibCommon/TComPicYuv.h"
     44#include "TLibCommon/TComPic.h"
     45#include "TLibCommon/TComTrQuant.h"
     46#include "TLibCommon/TComDepthMapGenerator.h"
     47#include "TLibCommon/SEI.h"
    5148
    5249#include "TDecGop.h"
     
    5552#include "TDecCAVLC.h"
    5653
     54struct InputNALUnit;
     55
     56//! \ingroup TLibDecoder
     57//! \{
     58
     59#define APS_RESERVED_BUFFER_SIZE 2 //!< must be equal to or larger than 2 to handle bitstream parsing
     60
    5761// ====================================================================================================================
    5862// Class definition
    5963// ====================================================================================================================
    6064
    61 class TAppDecTop ;
    62 
     65class TAppDecTop;
    6366
    6467class CamParsCollector
     
    9194};
    9295
    93 
    9496/// decoder class
    9597class TDecTop
     
    99101  Bool                    m_bGopSizeSet;
    100102  int                     m_iMaxRefPicNum;
    101 
    102 #if DCM_DECODING_REFRESH
     103 
    103104  Bool                    m_bRefreshPending;    ///< refresh pending flag
    104   UInt                    m_uiPOCCDR;           ///< temporal reference of the CDR picture
    105 #if DCM_SKIP_DECODING_FRAMES
    106   UInt                    m_uiPOCRA;            ///< temporal reference of the random access point
    107 #endif
    108 #endif
     105  Int                     m_pocCRA;            ///< POC number of the latest CRA picture
     106  Int                     m_pocRandomAccess;   ///< POC number of the random access point (the first IDR or CRA picture)
    109107
    110108  UInt                    m_uiValidPS;
    111109  TComList<TComPic*>      m_cListPic;         //  Dynamic buffer
    112   TComSPS                 m_cSPS;
    113 #if FLEX_CODING_ORDER
    114   TComSPS                 m_cNewSPS;
    115 #endif
    116   TComPPS                 m_cPPS;
     110  ParameterSetManagerDecoder m_parameterSetManagerDecoder;  // storage for parameter sets
     111  TComRPSList             m_RPSList;
    117112  TComSlice*              m_apcSlicePilot;
    118 
     113 
    119114  SEImessages *m_SEIs; ///< "all" SEI messages.  If not NULL, we own the object.
     115
     116#if SONY_COLPIC_AVAILABILITY
     117  Int                     m_iViewOrderIdx;
     118#endif
    120119
    121120  // functional classes
     
    131130  TComLoopFilter          m_cLoopFilter;
    132131  TComAdaptiveLoopFilter  m_cAdaptiveLoopFilter;
    133 #if MTK_SAO
    134132  TComSampleAdaptiveOffset m_cSAO;
    135 #endif
     133
    136134#if DEPTH_MAP_GENERATION
    137135  TComDepthMapGenerator   m_cDepthMapGenerator;
     
    141139#endif
    142140
    143   Bool                    m_bIsDepth;
    144   Int                     m_iViewIdx;
    145 #if SONY_COLPIC_AVAILABILITY
    146   Int                     m_iViewOrderIdx;
    147 #endif
    148   TAppDecTop*             m_pcTAppDecTop;
    149   CamParsCollector*       m_pcCamParsCollector;
    150 
    151 #if DCM_SKIP_DECODING_FRAMES
    152141  Bool isRandomAccessSkipPicture(Int& iSkipFrame,  Int& iPOCLastDisplay);
    153 #endif
    154142  TComPic*                m_pcPic;
    155143  UInt                    m_uiSliceIdx;
    156144  UInt                    m_uiLastSliceIdx;
    157   UInt                    m_uiPrevPOC;
     145  Int                     m_prevPOC;
    158146  Bool                    m_bFirstSliceInPicture;
    159147  Bool                    m_bFirstSliceInSequence;
     148
     149  Int                     m_viewId;
     150  Bool                    m_isDepth;
     151  TAppDecTop*             m_tAppDecTop;
     152  NalUnitType             m_nalUnitTypeBaseView; 
    160153
    161154public:
    162155  TDecTop();
    163156  virtual ~TDecTop();
    164 
     157 
    165158  Void  create  ();
    166159  Void  destroy ();
    167160
    168161  void setPictureDigestEnabled(bool enabled) { m_cGopDecoder.setPictureDigestEnabled(enabled); }
    169 
    170   Void  init( TAppDecTop* pcTAppDecTop, Bool bFirstInstance = true );
    171 #if DCM_SKIP_DECODING_FRAMES
    172 #if FLEX_CODING_ORDER
    173   Bool  decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay, Bool& bNewPictureType);
    174 #else
    175   Bool  decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay);
    176 
    177 #endif
    178 #else
    179   Void  decode ( Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS );
    180 #endif
    181 
    182   TComSPS *getSPS() { return (m_uiValidPS & 1) ? &m_cSPS : NULL; }
    183 
     162 
     163  Void  init( TAppDecTop* pcTAppDecTop, Bool bFirstInstance );
     164  Bool  decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay);
     165 
    184166  Void  deletePicBuffer();
    185167
    186   Void  deleteExtraPicBuffers( Int iPoc );
    187 #if AMVP_BUFFERCOMPRESS
     168#if HHI_INTER_VIEW_RESIDUAL_PRED
     169  Void      deleteExtraPicBuffers   ( Int iPoc );
     170#endif
    188171  Void  compressMotion       ( Int iPoc );
    189 #endif
    190 
    191   Void setViewIdx(Int i)                                        { m_iViewIdx = i ;}
    192   Int  getViewIdx()                                                             { return m_iViewIdx ; }
     172
     173  Void executeDeblockAndAlf(UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, Int& iSkipFrame,  Int& iPOCLastDisplay);
     174
     175  Void setViewId(Int viewId)                                    { m_viewId = viewId;}
     176  Int  getViewId()                                                                     { return m_viewId  ;}
     177  Void setIsDepth( Bool isDepth ) { m_isDepth = isDepth; }
     178
    193179#if SONY_COLPIC_AVAILABILITY
    194180  Void setViewOrderIdx(Int i)                                   { m_iViewOrderIdx = i ;}
     
    196182#endif
    197183
    198   Void setToDepth(Bool b)         { m_bIsDepth = b ;}
    199   Bool getIsDepth()               { return m_bIsDepth ;}
    200 
    201   Void setCamParsCollector( CamParsCollector* pcCamParsCollector ) { m_pcCamParsCollector = pcCamParsCollector; }
    202 
    203   TComList<TComPic*>*     getListPic            () { return  &m_cListPic;             }
    204   TAppDecTop*             getDecTop           ( ){ return  m_pcTAppDecTop ;}
    205184#if DEPTH_MAP_GENERATION
    206185  TComDepthMapGenerator*  getDepthMapGenerator  () { return &m_cDepthMapGenerator; }
    207186#endif
    208187
    209   Void                    setSPS                (TComSPS cSPS );
    210 
    211   UInt                    getCodedPictureBufferSize() { return m_cSPS.getCodedPictureBufferSize() ; }
    212 
    213   Void executeDeblockAndAlf(Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, Int& iSkipFrame,  Int& iPOCLastDisplay);
     188  TComList<TComPic*>* getListPic()                              { return &m_cListPic; }
     189  Void                setTAppDecTop( TAppDecTop* pcTAppDecTop ) { m_tAppDecTop = pcTAppDecTop; }
     190  TAppDecTop*         getTAppDecTop()                           { return  m_tAppDecTop; }
     191  NalUnitType         getNalUnitTypeBaseView()                  { return m_nalUnitTypeBaseView; }
    214192
    215193protected:
    216194  Void  xGetNewPicBuffer  (TComSlice* pcSlice, TComPic*& rpcPic);
    217 
     195  Void  xUpdateGopSize    (TComSlice* pcSlice);
     196  Void  xCreateLostPicture (Int iLostPOC);
     197
     198  Void      decodeAPS( TComAPS* cAPS) { m_cEntropyDecoder.decodeAPS(cAPS); };
     199  Void      xActivateParameterSets();
     200#if SKIPFRAME_BUGFIX
     201  Bool      xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay);
     202#else
     203  Bool      xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay);
     204#endif
     205  Void      xDecodeSPS();
     206  Void      xDecodePPS();
     207  Void      xDecodeAPS();
     208  Void      xDecodeSEI();
     209
     210  Void      allocAPS (TComAPS* pAPS); //!< memory allocation for APS
    218211};// END CLASS DEFINITION TDecTop
    219212
    220213
     214//! \}
     215
    221216#endif // __TDECTOP__
    222217
Note: See TracChangeset for help on using the changeset viewer.