📄 h264avcdecoder.h
字号:
}
Bool IsSliceEndOfPic() { return m_bCurNalIsEndOfPic; }
ErrVal getBaseLayerData ( IntFrame*& pcFrame,
IntFrame*& pcResidual,
MbDataCtrl*& pcMbDataCtrl,
Bool& rbConstrainedIPred,
Bool& rbSpatialScalability,
UInt uiLayerId,
UInt uiBaseLayerId,
Int iPoc );
ErrVal getBaseLayerPWTable ( SliceHeader::PredWeightTable*& rpcPredWeightTable,
UInt uiBaseLayerId,
ListIdx eListIdx,
Int iPoc );
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
,Bool& UnitAVCFlag //JVT-S036 lsj
);
// TMM_EC {{
Bool checkSEIForErrorConceal();
ErrVal checkSliceGap ( BinDataAccessor* pcBinDataAccessor,
MyList<BinData*>& cVirtualSliceList
,Bool& UnitAVCFlag //JVT-S036 lsj
);
ErrVal setec( UInt uiErrorConceal) { m_eErrorConceal = (ERROR_CONCEAL)(EC_NONE + uiErrorConceal); if ( m_eErrorConceal == 0) m_bNotSupport = true; return Err::m_nOK;}
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;
// TMM_EC }}
Void setQualityLevelForPrediction( UInt ui ) { m_uiQualityLevelForPrediction = ui; }
#if MULTIPLE_LOOP_DECODING
Void setCompletelyDecodeLayer ( Bool b ) { m_bCompletelyDecodeLayer = b; }
#endif
UInt isNonRequiredPic() { return m_uiNonRequiredPic; } //NonRequired JVT-Q066
Bool isRedundantPic() { return m_bRedundantPic; } // JVT-Q054 Red. Picture
ErrVal checkRedundantPic(); // JVT-Q054 Red. Picture
protected:
ErrVal xInitSlice ( SliceHeader* pcSliceHeader );
ErrVal xStartSlice ( Bool& bPreParseHeader, Bool& bLastFragment, Bool& bDiscardable, Bool UnitAVCFlag); //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 );
ErrVal xReconstructLastFGS ();
ErrVal xDecodeFGSRefinement ( SliceHeader*& rpcSliceHeader,
PicBuffer*& rpcPicBuffer );
ErrVal xZeroIntraMacroblocks ( IntFrame* pcFrame,
MbDataCtrl* pcMbDataCtrl,
SliceHeader* pcSliceHeader );
ErrVal setDiffPrdRefLists ( RefFrameList& diffPrdRefList,
YuvBufferCtrl* pcYuvFullPelBufferCtrl);
ErrVal freeDiffPrdRefLists ( RefFrameList& diffPrdRefList);
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_pcPrevSliceHeader;
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_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;
#if MULTIPLE_LOOP_DECODING
Bool m_bCompletelyDecodeLayer;
Bool m_abCompletlyDecodeBaseLayer[MAX_LAYERS];
#endif
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];
UInt m_uiNumberOfSPS;
UInt m_uiSPSId[MAX_LAYERS];
UInt m_uiDecodedLayer;
UInt m_uiNumOfNALInAU;
SliceHeader* m_pcSliceHeaderStored;
Int m_iPrevPoc;
//~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;
};
H264AVC_NAMESPACE_END
#endif // !defined(AFX_H264AVCDECODER_H__FBF0345F_A5E5_4D18_8BEC_4A68790901F7__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -