📄 picencoder.h
字号:
ErrVal xInitSliceHeader ( SliceHeader*& rpcSliceHeader,
FrameSpec& rcFrameSpec,
Double& dLambda,
Bool fakeHeader=false );
UIntList m_cLPFrameNumList;
// }}
ErrVal xInitPredWeights ( SliceHeader& rcSliceHeader );
//===== create and delete memory =====
ErrVal xCreateData ();
ErrVal xDeleteData ();
//===== packet management =====
ErrVal xInitExtBinDataAccessor ( ExtBinDataAccessor& rcExtBinDataAccessor );
ErrVal xAppendNewExtBinDataAccessor ( ExtBinDataAccessorList& rcExtBinDataAccessorList,
ExtBinDataAccessor* pcExtBinDataAccessor );
//===== encoding =====
ErrVal xStartPicture ( RecPicBufUnit& rcRecPicBufUnit,
SliceHeader& rcSliceHeader,
RefFrameList& rcList0,
RefFrameList& rcList1 );
ErrVal xEncodePicture ( ExtBinDataAccessorList& rcExtBinDataAccessorList,
RecPicBufUnit& rcRecPicBufUnit,
SliceHeader& rcSliceHeader,
Double dLambda,
UInt& ruiBits );
ErrVal xFinishPicture ( RecPicBufUnit& rcRecPicBufUnit,
SliceHeader& rcSliceHeader,
RefFrameList& rcList0,
RefFrameList& rcList1,
UInt uiBits );
ErrVal xGetPSNR ( RecPicBufUnit& rcRecPicBufUnit,
Double* adPSNR );
#if JMVM_ONLY // JVT-W081
ErrVal xGlobalDisparityEstimationMotionSkip (SliceHeader& rcSliceHeader,
RecPicBufUnit& rcRecPicBufUnit,
RefFrameList& rcList0,
RefFrameList& rcList1,
GDV* gdvL0,
GDV* gdvL1 );
ErrVal xFindGlobalDisparity (SliceHeader& rcSliceHeader,
RecPicBufUnit& rcRecPicBufUnit,
GDV* gdvL0, GDV* gdvL1,
RefFrameList& rcList0,
RefFrameList& rcList1);
ErrVal xSetGlobalDisparity (SliceHeader& rcSliceHeader, GDV* gdvL0, GDV* gdvL1 );
ErrVal xExtractDisparity (SliceHeader& rcSliceHeader,
RecPicBufUnit& rcRecPicBufUnit,
RefFrameList& rcList,
GDV* gdv,
UInt uiListIdx );
#endif // JVT-W081
// ying GOP stucture support, simplify the configuration files {{
ErrVal xInitFrameSpec ();
ErrVal xGetNextFrameSpec ();
ErrVal xUpdateFrameSepNextGOP ();
ErrVal xUpdateFrameSepNextGOPFinish ();
ErrVal xInitFrameSpecSpecial ();
ErrVal xInitFrameSpecHierarchical ();
ErrVal xGetNextFrameSpecSpecial ();
// }}
ErrVal xSetRefPictures(SliceHeader& rcSliceHeader,
RefFrameList& rcList0,
RefFrameList& rcList1 );
private:
Bool m_bInit;
Bool m_bInitParameterSets;
//===== members =====
BinData m_cBinData;
ExtBinDataAccessor m_cExtBinDataAccessor;
FrameSpec m_cFrameSpecification;
// {{
FrameSpec m_acFrameSpecification[34];
UInt m_uiAnchorFrameNumber ;
UInt m_uiGOPSize;
UInt m_uiTotalFrames;
UInt m_uiMaxTL;
UInt m_uiFrameDelay;
UInt m_uiMaxNumRefFrames;
UInt m_uiMaxFrameNum;
UInt m_uiAnchorNumFwdViewRef;
UInt m_uiAnchorNumBwdViewRef;
UInt m_uiNonAncNumFwdViewRef;
UInt m_uiNonAncNumBwdViewRef;
Bool m_bInterPridPicsFirst; //JVT-V043 enc
UInt m_uiMaxFrameNumList0;
UInt m_uiMaxFrameNumList1;
UInt m_uiProcessingPocInGOP;
Bool m_bSpecialGOP;
UInt m_uiGOPSizeReal;
UInt m_uiMinTempLevelLastGOP;
SpsMvcExtension *m_pcSPSMVCExt;
// }}
SequenceStructure* m_pcSequenceStructure;
InputPicBuffer* m_pcInputPicBuffer;
SequenceParameterSet* m_pcSPS;
SequenceParameterSet* m_pcSPSBase; //
PictureParameterSet* m_pcPPSBase;
PictureParameterSet* m_pcPPS;
RecPicBuffer* m_pcRecPicBuffer;
//===== references =====
CodingParameter* m_pcCodingParameter;
ControlMngIf* m_pcControlMng;
SliceEncoder* m_pcSliceEncoder;
LoopFilter* m_pcLoopFilter;
PocCalculator* m_pcPocCalculator;
NalUnitEncoder* m_pcNalUnitEncoder;
YuvBufferCtrl* m_pcYuvBufferCtrlFullPel;
YuvBufferCtrl* m_pcYuvBufferCtrlHalfPel;
QuarterPelFilter* m_pcQuarterPelFilter;
MotionEstimation* m_pcMotionEstimation;
PicEncoder* m_picEncoder; //JVT-W056
//===== fixed coding parameters =====
UInt m_uiFrameWidthInMb;
UInt m_uiFrameHeightInMb;
UInt m_uiMbNumber;
//===== variable parameters =====
UInt m_uiFrameNum;
UInt m_uiIdrPicId;
UInt m_uiWrittenBytes;
UInt m_uiCodedFrames;
Double m_dSumYPSNR;
Double m_dSumUPSNR;
Double m_dSumVPSNR;
//JVT-W080
UInt m_uiPdsEnable;
UInt m_uiPdsBlockSize;
UInt** m_ppuiPdsInitialDelayMinus2L0;
UInt** m_ppuiPdsInitialDelayMinus2L1;
//~JVT-W080
//===== auxiliary buffers =====
UInt m_uiWriteBufferSize; // size of temporary write buffer
UChar* m_pucWriteBuffer; // write buffer
Bool m_bTraceEnable;
//SEI LSJ{
Double m_dMVCFinalBitrate [MAX_DSTAGES_MVC];
Double m_dMVCFinalFramerate[MAX_DSTAGES_MVC];
Double m_adMVCSeqBits [MAX_DSTAGES_MVC+1];
UInt m_auiMVCNumFramesCoded [MAX_DSTAGES_MVC+1];
Double m_adMVCPicBits [MAX_FRAMERATE];
Double m_adMaxBitRate;
UInt uiNumPics;
//SEI LSJ}
//===== multiview stuff
// The m_vFramePeriod controls period insertion of V-frames. A V-frame
// is a frame which may do prediction from other sequences at the same
// time index, but does not do any temporal prediciton. This class
// does not actually implement a V-frame (that is done by RecPicBuffer).
// Instead, this class just keeps track of the V-frame period and when
// V-frames should happen using the TimeForVFrameP member function.
unsigned int m_vFramePeriod;
unsigned int m_CurrentViewId;
Bool m_bAVCFlag;
Bool m_SvcMvcFlag;
public:
MultiviewReferencePictureManager m_MultiviewRefPicManager;
};
H264AVC_NAMESPACE_END
#endif // _PIC_ENCODER_INCLUDED_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -