📄 h264avcencoder.h
字号:
Frame* getLowPassRec ( UInt uiLayerId );
Frame* getELRefPic ( UInt uiLayerId, Int iPoc );
// JVT-T073 {
ErrVal writeNestingSEIMessage( ExtBinDataAccessor* pcExtBinDataAccessor );
// JVT-T073 }
Void setScalableSEIMessage () { m_bScalableSeiMessage = true; }
// JVT-V068 HRD {
Void setBufferPeriodSEIMessage() { m_bWriteBufferingPeriodSEI = true; }
ErrVal writeAVCCompatibleHRDSEI( ExtBinDataAccessor* pcExtBinDataAccessor, SequenceParameterSet& rcSPS );
// JVT-V068 HRD }
Bool bGetScalableSeiMessage () const { return m_bScalableSeiMessage; }
Void SetVeryFirstCall () { m_bVeryFirstCall = true; }
UInt getScalableLayerId( UInt uiLayer, UInt uiTempLevel, UInt uiFGS ) const { return m_aaauiScalableLayerId[uiLayer][uiTempLevel][uiFGS]; }
Void setBitrateRep( UInt uiLayer, UInt uiTL, UInt uiQL, Double dVal ) { m_aaadLayerBitrateRep[uiLayer][uiTL][uiQL] = dVal; }
Double getBitrateRep( UInt uiLayer, UInt uiTL, UInt uiQL ) const { return m_aaadLayerBitrateRep[uiLayer][uiTL][uiQL]; }
//JVT-W052
CodingParameter* getCodingParameter() { return m_pcCodingParameter;}
SEI::IntegrityCheckSEI * getIntegrityCheckSEI() {return m_pcIntegrityCheckSEI; }
//JVT-W052
// JVT-S080 LMI {
ErrVal xWriteScalableSEILayersNotPresent( ExtBinDataAccessor* pcExtBinDataAccessor, UInt uiInputLayers, UInt* m_layer_id);
ErrVal xWriteScalableSEIDependencyChange( ExtBinDataAccessor* pcExtBinDataAccessor, UInt uiNumLayers, UInt* uiLayerId, Bool* pbLayerDependencyInfoPresentFlag,
UInt* uiNumDirectDependentLayers, UInt** puiDirectDependentLayerIdDeltaMinus1, UInt* puiLayerDependencyInfoSrcLayerIdDeltaMinus1);
// JVT-S080 LMI }
// JVT-W062 {
ErrVal writeTl0DepRepIdxSEI ( ExtBinDataAccessor* pcExtBinDataAccessor, UInt uiTl0DepRepIdx, UInt uiEfIdrPicId );
ErrVal writeNestingTl0DepRepIdxSEIMessage( ExtBinDataAccessor* pcExtBinDataAccessor, UInt uiTid, UInt uiTl0DepRepIdx, UInt uiEfIdrPicId );
// JVT-W062 }
ErrVal xCalMaxBitrate(UInt uiLayer);//JVT-W051
protected:
ErrVal xInitParameterSets ();
// JVT-V068 HRD {
ErrVal xInitLayerInfoForHrd(SequenceParameterSet* pcSPS, UInt uiLayer );
// JVT-V068 HRD }
ErrVal xWriteScalableSEI ( ExtBinDataAccessor* pcExtBinDataAccessor );
ErrVal xWriteSubPicSEI ( ExtBinDataAccessor* pcExtBinDataAccessor );
ErrVal xWriteSubPicSEI( ExtBinDataAccessor* pcExtBinDataAccessor, UInt layer_id ) ;
ErrVal xWriteMotionSEI( ExtBinDataAccessor* pcExtBinDataAccessor, UInt sg_id ) ;
// JVT-V068 HRD {
ErrVal xWriteBufferingPeriodSEI ( ExtBinDataAccessor* pcExtBinDataAccessor );
// JVT-V068 HRD }
ErrVal xProcessGOP ( PicBufferList* apcPicBufferOutputList,
PicBufferList* apcPicBufferUnusedList );
protected:
std::list<SequenceParameterSet*> m_cUnWrittenSPS;
std::list<PictureParameterSet*> m_cUnWrittenPPS;
PicBufferList m_acOrgPicBufferList[MAX_LAYERS];
PicBufferList m_acRecPicBufferList[MAX_LAYERS];
ParameterSetMng* m_pcParameterSetMng;
PocCalculator* m_pcPocCalculator;
NalUnitEncoder* m_pcNalUnitEncoder;
ControlMngIf* m_pcControlMng;
CodingParameter* m_pcCodingParameter;
Bool m_bVeryFirstCall;
Bool m_bInitDone;
Bool m_bTraceEnable;
Bool m_bScalableSeiMessage;
public:
Double m_aaadFinalFramerate[MAX_LAYERS][MAX_TEMP_LEVELS][MAX_QUALITY_LEVELS];
Double m_aaadSeqBits[MAX_LAYERS][MAX_TEMP_LEVELS][MAX_QUALITY_LEVELS];
protected:
LayerEncoder* m_apcLayerEncoder [MAX_LAYERS];
AccessUnitDataList m_cAccessUnitDataList;
// ICU / ETRI ROI
Bool m_bWrteROISEI;
// JVT-V068 HRD {
Bool m_bWriteBufferingPeriodSEI;
StatBuf<Scheduler*, MAX_SCALABLE_LAYERS>* m_apcScheduler;
// JVT-V068 HRD }
UInt m_loop_roi_sei;
//JVT-W051 {
UInt m_uiFrameNumInGOP[MAX_LAYERS];
UInt m_uiCodeFrameNum[MAX_LAYERS];
Double m_aaadFrameInGOPBits[65][MAX_LAYERS][MAX_QUALITY_LEVELS];
Double ***m_aaadFrameInTimeWindowBits;
Double m_adAvgBitrate[MAX_LAYERS];
Double m_aadMaxBitrate[MAX_LAYERS][MAX_QUALITY_LEVELS];
UInt m_uiProfileIdc[MAX_LAYERS];
UInt m_uiLevelIdc[MAX_LAYERS];
Bool m_bConstraint0Flag[MAX_LAYERS];
Bool m_bConstraint1Flag[MAX_LAYERS];
Bool m_bConstraint2Flag[MAX_LAYERS];
Bool m_bConstraint3Flag[MAX_LAYERS];
Bool m_bIsFirstGOP;
//JVT-W051 }
Double m_aaadLayerBitrateRep [MAX_LAYERS][MAX_TEMP_LEVELS][MAX_QUALITY_LEVELS];
UInt m_aaauiScalableLayerId[MAX_LAYERS][MAX_TEMP_LEVELS][MAX_QUALITY_LEVELS];
//JVT-W052
public:
UInt m_uicrcVal[MAX_LAYERS];
UInt m_uiNumofCGS[MAX_LAYERS];
SEI::IntegrityCheckSEI * m_pcIntegrityCheckSEI;
//JVT-W052
};
#ifdef SHARP_AVC_REWRITE_OUTPUT
class H264AVCENCODERLIB_API RewriteEncoder
{
protected:
RewriteEncoder();
virtual ~RewriteEncoder();
public:
static ErrVal create ( RewriteEncoder*& rpcRewriteEncoder );
ErrVal destroy ();
ErrVal init ();
ErrVal uninit ();
ErrVal startPicture ( const SequenceParameterSet& rcSPS );
ErrVal finishPicture ( BinDataList& rcBinDataList );
ErrVal rewriteMb ( MbDataAccess& rcMbDataAccessSource );
private:
ErrVal xCreate ();
ErrVal xStartSlice ( MbDataAccess& rcMbDataAccessSource );
ErrVal xFinishSlice ();
ErrVal xInitNALUnit ();
ErrVal xCloseNALUnit ();
Bool xIsRewritten ( const Void* pParameterSet );
ErrVal xRewriteSPS ( const SequenceParameterSet& rcSPS );
ErrVal xRewritePPS ( const PictureParameterSet& rcPPS );
ErrVal xInitMb ( MbDataAccess*& rpcMbDataAccessRewrite,
MbDataAccess& rcMbDataAccessSource );
ErrVal xAdjustMb ( MbDataAccess& rcMbDataAccessRewrite,
Bool bBaseLayer );
ErrVal xEncodeMb ( MbDataAccess& rcMbDataAccessRewrite,
Bool bLastMbInSlice );
private:
Bool m_bInitialized;
Bool m_bPictureInProgress;
Bool m_bSliceInProgress;
UInt m_uiBinDataSize;
BitWriteBuffer* m_pcBitWriteBuffer;
BitCounter* m_pcBitCounter;
NalUnitEncoder* m_pcNalUnitEncoder;
UvlcWriter* m_pcUvlcWriter;
UvlcWriter* m_pcUvlcTester;
CabacWriter* m_pcCabacWriter;
MotionVectorCalculation* m_pcMotionVectorCalculation;
MbCoder* m_pcMbCoder;
RateDistortion* m_pcRateDistortion;
MbDataCtrl* m_pcMbDataCtrl;
MyList<const Void*> m_cRewrittenParameterSets;
BinData* m_pcBinData;
BinDataAccessor* m_pcBinDataAccessor;
BinDataList m_cBinDataList;
SliceHeader* m_pcSliceHeader;
MbSymbolWriteIf* m_pcMbSymbolWriteIf;
Bool m_bTraceEnable;
};
#endif
#if defined( WIN32 )
# pragma warning( default: 4251 )
#endif
H264AVC_NAMESPACE_END
#endif // !defined(AFX_H264AVCENCODER_H__FBF0345F_A5E5_4D18_8BEC_4A68790901F7__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -