⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h264avcdecoder.h

📁 jsvm开发代码包括抽样,编码,抽取,解码等一系列功能,可以做工具或研究用
💻 H
📖 第 1 页 / 共 2 页
字号:
  ErrVal  getBaseLayerDataAvailability  ( IntFrame*&      pcFrame,
                                          IntFrame*&      pcResidual,
                                          MbDataCtrl*&    pcMbDataCtrl,
                                          Bool&           bBaseDataAvailable,
                                          Bool&           rbSpatialScalability,
                                          UInt            uiLayerId,
                                          UInt            uiBaseLayerId,
                                          Int             iPoc,
                                          UInt            uiBaseQualityLevel );

  ErrVal  getBaseLayerPWTable          ( SliceHeader::PredWeightTable*& rpcPredWeightTable,
                                         UInt                           uiBaseLayerId,
                                         ListIdx                        eListIdx,
                                         Int                            iPoc );

  ErrVal  replaceSNRCGSBaseFrame      ( IntFrame* pcELFrame,
                                        const PicType ePicType,         //TMM_INTERLACE 
                                        const Bool    bFrameMbsOnlyFlag //TMM_INTERLACE 
                                       );      // MGS fix by Heiko Schwarz
  Void    setBaseAVCCompatible        ( Bool                        bAVCCompatible )    { m_bBaseLayerIsAVCCompatible = bAVCCompatible; }
  Void    setReconstructionLayerId    ( UInt                        uiLayerId )         { m_uiRecLayerId = uiLayerId; }
  Void    setVeryFirstSPS             ( const SequenceParameterSet* pcSPS )             { m_pcVeryFirstSPS = pcSPS; }

  ErrVal  calculatePoc                ( NalUnitType       eNalUnitType,
                                        SliceHeader&      rcSliceHeader,
                                        Int&              slicePoc  );
  ErrVal  checkSliceLayerDependency   ( BinDataAccessor*  pcBinDataAccessor,
                                        Bool&             bFinishChecking);
//	TMM_EC {{
	Bool		checkSEIForErrorConceal();
  ErrVal  checkSliceGap   ( BinDataAccessor*  pcBinDataAccessor,
                            MyList<BinData*>&	cVirtualSliceList );
	ErrVal	setec( UInt uiErrorConceal) 
  { 
    m_eErrorConceal = (ERROR_CONCEAL)(EC_NONE + uiErrorConceal); 
    if ( m_eErrorConceal == EC_NONE) m_bNotSupport = true; 
   return	Err::m_nOK;
  }
  ErrVal getBaseLayerUnit(UInt            uiBaseLayerId, 
                          Int             iPoc,
                          DPBUnit         *&pcBaseDPBUnit);
	UInt	m_uiNextFrameNum;
	UInt	m_uiNextLayerId;
	UInt	m_uiNextPoc;
	UInt	m_uiNextTempLevel;
	UInt	*m_pauiPocInGOP[MAX_LAYERS];
	UInt	*m_pauiFrameNumInGOP[MAX_LAYERS];
	UInt	*m_pauiTempLevelInGOP[MAX_LAYERS];
	UInt	m_uiDecompositionStages[MAX_LAYERS];
	UInt	m_uiNumLayers;
	UInt	m_uiFrameIdx[MAX_LAYERS];
	ERROR_CONCEAL	m_eErrorConceal;
	UInt	m_uiDefNumLayers;
	UInt	m_uiDefDecompositionStages[MAX_LAYERS];
	UInt	m_uiMaxDecompositionStages;
	UInt	m_uiMaxGopSize;
	UInt	m_uiGopSize[MAX_LAYERS];
	Bool	m_bNotSupport;
	UInt	m_uiMaxLayerId;
	UInt  m_baseMode;
//  TMM_EC }}
  Void    setQualityLevelForPrediction( UInt ui ) { m_uiQualityLevelForPrediction = ui; }

  UInt isNonRequiredPic()						  { return m_uiNonRequiredPic;  } //NonRequired JVT-Q066
  Bool isRedundantPic()             { return m_bRedundantPic; }  // JVT-Q054 Red. Picture
  ErrVal  checkRedundantPic();  // JVT-Q054 Red. Picture
  Void    setFGSRefInAU(Bool &b); //JVT-T054
  //JVT-T054_FIX{
  ErrVal UpdateAVCList(SliceHeader *pcSliceHeader);
  ErrVal getAVCFrame( IntFrame*&      pcFrame,
                      IntFrame*&      pcResidual,
                      MbDataCtrl*&    pcMbDataCtrl,
                      Int             iPoc);
  MCTFDecoder *getMCTFDecoder(UInt uiLayer) { return m_apcMCTFDecoder[uiLayer];}
  Bool   getBaseSVCActive() { return m_bBaseSVCActive;} //JVT-T054_FIX
  //JVt-T054}

#ifdef SHARP_AVC_REWRITE_OUTPUT
  ErrVal              xStartAvcRewrite(UChar*& avcRewriteBinDataBuffer, BinData*& avcRewriteBinData, ExtBinDataAccessor* avcRewriteBinDataAcessor); 
  ErrVal              xCloseAvcRewriteEncoder();
  
  ErrVal              xInitSliceForAvcRewriteCoding(const SliceHeader& rcSH);  
  bool                xWriteAvcRewriteParameterSets(NalUnitType nal_unit_type, UInt index);
  bool                xGetAvcRewriteFlag();
#endif

protected:

  ErrVal  xInitSlice                ( SliceHeader*    pcSliceHeader );
  ErrVal  xStartSlice               ( Bool& bPreParseHeader, Bool& bFirstFragment, Bool& bLastFragment, Bool* pbFgsParallelDecoding, Bool& bDiscardable ); //FRAG_FIX //TMM_EC//JVT-S036 lsj

  // TMM_EC {{
  ErrVal  xProcessSliceVirtual      ( SliceHeader&    rcSH,
	                                    SliceHeader* pcPrevSH,
									                    PicBuffer* &    rpcPicBuffer);
  // TMM_EC }}
  ErrVal  xProcessSlice             ( SliceHeader&    rcSH,
                                      SliceHeader*    pcPrevSH,
                                      PicBuffer*&     rpcPicBuffer,
                                      Bool            bHighestLayer); //JVT-T054
  ErrVal  xReconstructLastFGS       (Bool bHighestLayer, SliceHeader* pcRCDOSliceHeader); //JVT-T054
  ErrVal  xDecodeFGSRefinement      ( SliceHeader*&   rpcSliceHeader,
                                      PicBuffer*&     rpcPicBuffer );

  ErrVal  xZeroIntraMacroblocks     ( IntFrame*       pcFrame,
                                      MbDataCtrl*     pcMbDataCtrl,
                                      SliceHeader*    pcSliceHeader );

  ErrVal  setDiffPrdRefLists        ( RefFrameList&               diffPrdRefList,
                                      YuvBufferCtrl*              pcYuvFullPelBufferCtrl);
  ErrVal  freeDiffPrdRefLists       ( RefFrameList& diffPrdRefList);

  ErrVal xInitParameters(SliceHeader* pcSliceHeader);
protected:
  SliceReader*                  m_pcSliceReader;
  SliceDecoder*                 m_pcSliceDecoder;
  FrameMng*                     m_pcFrameMng;
  NalUnitParser*                m_pcNalUnitParser;
  ControlMngIf*                 m_pcControlMng;
  LoopFilter*                   m_pcLoopFilter;
  HeaderSymbolReadIf*           m_pcHeaderSymbolReadIf;
  ParameterSetMng*              m_pcParameterSetMng;
  PocCalculator*                m_pcPocCalculator;
  SliceHeader*                  m_pcSliceHeader; 
  SliceHeader*									m_pcPrefixSliceHeader;//prefix unit
  SliceHeader*                  m_pcPrevSliceHeader;
  SliceHeader*					        m_pcTempSliceHeader;  //EIDR bug-fix 
  SliceHeader*                  m_pcSliceHeader_backup; //JVT-Q054 Red. Picture
  Bool                          m_bFirstSliceHeaderBackup;  //JVT-Q054 Red. Picture
  Bool                          m_bRedundantPic;  // JVT-Q054 Red. Picture
  Bool                          m_bInitDone;
  Bool                          m_bLastFrame;
  Bool                          m_bFrameDone;
  MotionCompensation*           m_pcMotionCompensation;

  MCTFDecoder*                  m_apcMCTFDecoder[MAX_LAYERS];
  RQFGSDecoder*                 m_pcRQFGSDecoder;
  PicBuffer*                    m_pcFGSPicBuffer;

  Bool                          m_bEnhancementLayer;
  Bool                          m_bSpatialScalability;
  Bool                          m_bActive;
  Bool                          m_bReconstruct;
  Bool                          m_bBaseLayerIsAVCCompatible;
	Bool                          m_bNewSPS;
  UInt                          m_uiRecLayerId;
  UInt                          m_uiLastLayerId;
  const SequenceParameterSet*   m_pcVeryFirstSPS;
  SliceHeader*                  m_pcVeryFirstSliceHeader;

  Bool                          m_bCheckNextSlice;
  Bool                          m_bDependencyInitialized;

  Int                           m_iLastPocChecked;
  Int                           m_iFirstSlicePoc;

  Int                           m_iFirstLayerIdx;
  Int                           m_iLastLayerIdx;
  Bool                          m_bBaseLayerAvcCompliant;

  Int                           m_auiBaseLayerId[MAX_LAYERS];
  Int                           m_auiBaseQualityLevel[MAX_LAYERS];

  // should this layer be decoded at all, and up to which FGS layer should be decoded
  UInt                          m_uiQualityLevelForPrediction;

  Bool                          m_bFGSCodingMode;
  UInt                          m_uiGroupingSize;
  UInt                          m_uiPosVect[16];

  SEI::NonRequiredSei*			m_pcNonRequiredSei;
  UInt							m_uiNonRequiredSeiReadFlag;
	UInt							m_uiNonRequiredSeiRead;
	UInt							m_uiNonRequiredPic;	//NonRequired JVT-Q066	
  UInt							m_uiPrevPicLayer;
  UInt							m_uiCurrPicLayer;
  //JVT-P031
  UInt                          m_uiFirstFragmentPPSId;
  UInt                          m_uiFirstFragmentNumMbsInSlice;
  Bool                          m_bFirstFragmentFGSCompSep;
  UInt                          m_uiLastFragOrder;
  UInt                          m_uiNumberOfFragment[MAX_LAYERS][MAX_QUALITY_LEVELS];
  UInt                          m_uiNumberOfSPS;
  UInt                          m_uiSPSId[MAX_LAYERS];
  UInt                          m_uiDecodedLayer;
  UInt                          m_uiNumOfNALInAU;
  SliceHeader*                  m_pcSliceHeaderStored;
  //~JVT-P031

  SliceHeader::PredWeightTable  m_acLastPredWeightTable[2];

  // ROI DECODE ICU/ETRI
  int	m_iCurNalSpatialLayer;
  int	m_iNextNalSpatialLayer;
			   
  int	m_iCurNalPOC;
  int	m_iNextNalPOC;
  int   m_iCurNalFirstMb;

  bool	m_bCurNalIsEndOfPic;
  bool	m_bFirstFGS;

#ifdef SHARP_AVC_REWRITE_OUTPUT
  H264AVCEncoder*               m_pcAvcRewriteEncoder;
  UChar*                        m_avcRewriteBinDataBuffer;
  BinData*						m_avcRewriteBindata;
  ExtBinDataAccessor*			m_avcRewriteBinDataAccessor;
  int                           m_avcRewriteBufsize;
  bool                          m_avcRewriteFlag;
#endif

//JVT-T054{
  Bool                          m_bLastNalInAU;
  Bool                          m_bFGSRefInAU;

  Bool                          m_bCGSSNRInAU;
//JVT-T054}
  Bool                          m_bBaseSVCActive; //JVT-T054_FIX
  Bool                          m_bLastFrameReconstructed; //JVT-T054_FIX
public:
  MbDataCtrl*         m_pcBaseLayerCtrlEL;
};

H264AVC_NAMESPACE_END

#endif // !defined(AFX_H264AVCDECODER_H__FBF0345F_A5E5_4D18_8BEC_4A68790901F7__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -