📄 gopencoder.h
字号:
ErrVal xClipIntraMacroblocks ( Frame* pcFrame,
ControlData& rcCtrlData,
Bool bClipAll,
PicType ePicType );
ErrVal xAddBaseLayerResidual ( ControlData& rcControlData,
Frame* pcFrame,
Bool bSubtract,
PicType ePicType );
ErrVal xUpdateLowPassRec ();
Frame* xGetRefFrame ( Frame** papcRefFrameList,
UInt uiRefIndex,
RefListUsage eRefListUsage );
ErrVal xClearELPics ();
ErrVal xUpdateELPics ();
//===== slice header =====
ErrVal xSetRplr ( RefPicListReOrdering& rcRplrBuffer, UIntList cPicNumList, UInt uiCurrPicNr, PicType ePicType );
ErrVal xSetRplrAndMmco ( SliceHeader& rcSH );
ErrVal xSetRplrAndMmcoFld ( SliceHeader& rcSH );
ErrVal xSetMmcoFld ( SliceHeader& rcSH ); //TMM
ErrVal xWriteSEI ( ExtBinDataAccessorList& rcOutExtBinDataAccessorList, SliceHeader& rcSH, UInt& ruiBit );
ErrVal xWritePrefixUnit ( ExtBinDataAccessorList& rcOutExtBinDataAccessorList, SliceHeader& rcSH, UInt& ruiBit );//prefix unit
ErrVal xSetMmcoBase ( SliceHeader& rcSH, UInt iNum ); //JVT-S036 lsj
//NonRequired JVT-Q066 (06-04-08){{
ErrVal xWriteNonRequiredSEI( ExtBinDataAccessorList& rcOutExtBinDataAccessorList, SEI::NonRequiredSei* pcNonRequiredSei, UInt& ruiBit );
ErrVal xSetNonRequiredSEI ( SliceHeader* pcSliceHeader, SEI::NonRequiredSei* pcNonRequiredSei);
//ErrVal xWriteNonRequiredSEI( ExtBinDataAccessorList& rcOutExtBinDataAccessorList, UInt& ruiBit );
//NonRequired JVT-Q066 (06-04-08)}}
// JVT-V068 HRD {
ErrVal xWriteSEI(ExtBinDataAccessorList &rcOutExtBinDataAccessorList, SEI::MessageList& rcSEIMessageList, UInt &ruiBits);
ErrVal xWriteNestingSEIforHrd(ExtBinDataAccessorList &rcOutExtBinDataAccessorList, SEI::SEIMessage *pcSEIMessage, UInt uiuiDependencyId, UInt uiQualityLevel, UInt uiTemporalLevel, UInt &ruiBits);
ErrVal xWriteSEIforAVCCompatibleHrd(ExtBinDataAccessorList &rcOutExtBinDataAccessorList, SEI::SEIMessage* pcSEIMessage, UInt &ruiBits);
ErrVal xCalculateTiming( PicOutputDataList& rcPicOutputDataList, UInt uiFrame );
// JVT-V068 HRD }
ErrVal xWriteRedundantKeyPicSEI ( ExtBinDataAccessorList& rcOutExtBinDataAccessorList, UInt &ruiBits ); //JVT-W049
//JVT-W052 wxwan
ErrVal xWriteIntegrityCheckSEI(ExtBinDataAccessorList &rcOutExtBinDataAccessorList, SEI::SEIMessage *pcSEIMessage, UInt &ruiBits);
//JVT-W052 wxwan
ErrVal xGetFrameNumList ( SliceHeader& rcSH, UIntList& rcFrameNumList, ListIdx eLstIdx, UInt uiCurrBasePos );
ErrVal xGetFieldNumList ( SliceHeader& rcSH, UIntList& rcFrameNumList, ListIdx eLstIdx, UInt uiCurrBasePos );
MbDataCtrl* xGetMbDataCtrlL1 ( SliceHeader& rcSH, UInt uiCurrBasePos, RefFrameList* pcRefFrameList1 );
Void xAssignSimplePriorityId ( SliceHeader *pcSliceHeader );
UInt getPreAndSuffixUnitEnable() {return m_uiPreAndSuffixUnitEnable;} //JVT-S036 lsj
UInt getMMCOBaseEnable () const { return m_uiMMCOBaseEnable; } //JVT-S036 lsj
//S051{
Bool xSIPCheck (UInt POC);
int xGetMbDataCtrlL1Pos( const SliceHeader& rcSH, RefFrameList& rcRefFrameList1 );
//S051}
Void setMCResizeParameters (ResizeParameters* resizeParameters);
protected:
//----- instances -----
ExtBinDataAccessor m_cExtBinDataAccessor;
BinData m_cBinData;
DownConvert m_cDownConvert;
//----- references -----
const SequenceParameterSet* m_pcSPS;
const PictureParameterSet* m_pcPPSLP;
const PictureParameterSet* m_pcPPSHP;
YuvBufferCtrl* m_pcYuvFullPelBufferCtrl;
YuvBufferCtrl* m_pcYuvHalfPelBufferCtrl;
PocCalculator* m_pcPocCalculator;
H264AVCEncoder* m_pcH264AVCEncoder;
SliceEncoder* m_pcSliceEncoder;
NalUnitEncoder* m_pcNalUnitEncoder;
LoopFilter* m_pcLoopFilter;
QuarterPelFilter* m_pcQuarterPelFilter;
MotionEstimation* m_pcMotionEstimation;
LayerParameters* m_pcLayerParameters;
//----- fixed control parameters ----
Bool m_bTraceEnable; // trace file
Bool m_bFrameMbsOnlyFlag; // frame macroblocks only block
UInt m_uiDependencyId; // layer id for current layer
UInt m_uiScalableLayerId; // scalable layer id for current layer
UInt m_uiBaseLayerId; // layer id of base layer
UInt m_uiBaseQualityLevel; // quality level of the base layer
UInt m_uiQualityLevelForPrediction; // quality level for prediction
UInt m_uiFrameWidthInMb; // frame width in macroblocks
UInt m_uiFrameHeightInMb; // frame height in macroblocks
UInt m_uiMbNumber; // number of macroblocks in a frame
UInt m_uiMaxGOPSize; // maximum possible GOP size (specified by the level)
UInt m_uiDecompositionStages; // number of decomposition stages
UInt m_uiTemporalResolution; // temporal subsampling in comparison to highest layer
UInt m_uiNotCodedStages ; // number of stages that are only used for temporal downsampling
UInt m_uiFrameDelay; // maximum possible delay in frames
UInt m_uiMaxNumRefFrames; // maximum number of active reference pictures in a list
UInt m_uiLowPassIntraPeriod; // intra period for lowest temporal resolution
UInt m_uiNumMaxIter; // maximum number of iteration for bi-directional search
UInt m_uiIterSearchRange; // search range for iterative search
UInt m_iMaxDeltaQp; // maximum QP changing
Bool m_bH264AVCCompatible; // H.264/AVC compatibility
Bool m_bInterLayerPrediction; // inter-layer prediction
Bool m_bAdaptivePrediction; // adaptive inter-layer prediction
Bool m_bHaarFiltering; // haar-based decomposition
Bool m_bBiPredOnly; // only bi-direktional prediction
Bool m_bForceReOrderingCommands; // always write re-ordering commands (error robustness)
Bool m_bWriteSubSequenceSei; // Subsequence SEI message (H.264/AVC base layer)
Double m_adBaseQpLambdaMotion[MAX_DSTAGES]; // base QP's for mode decision and motion estimation
Double m_dBaseQpLambdaMotionLP;
Double m_dBaseQPResidual; // base residual QP
UInt m_uiFilterIdc; // de-blocking filter idc
Int m_iAlphaOffset; // alpha offset for de-blocking filter
Int m_iBetaOffset; // beta offset for de-blocking filter
UInt m_uiInterLayerFilterIdc; // de-blocking filter idc
Int m_iInterLayerAlphaOffset; // alpha offset for de-blocking filter
Int m_iInterLayerBetaOffset; // beta offset for de-blocking filter
Bool m_bLoadMotionInfo; // load motion data from file
Bool m_bSaveMotionInfo; // save motion data to file
FILE* m_pMotionInfoFile; // motion data file
//----- variable control parameters -----
Bool m_bInitDone; // initilisation
Bool m_bFirstGOPCoded; // true if first GOP of a sequence has been coded
UInt m_uiGOPSize; // current GOP size
UInt m_uiFrameCounter; // current frame counter
UInt m_uiFrameNum; // current value of syntax element frame_num
UInt m_uiGOPNumber; // number of coded GOP's
Bool m_abIsRef[MAX_DSTAGES]; // state of temporal layer (H.264/AVC base layer)
UIntList m_cLPFrameNumList; // list of frame_num for low-pass frames
UInt m_uiIdrPicId; //EIDR 0619
//----- frame memories -----
Frame* m_apcFrameTemp[NUM_TMP_FRAMES]; // auxiliary frame memories
Frame** m_papcFrame; // frame stores
Frame** m_papcOrgFrame; // original (highpass) frames
Frame** m_papcCLRecFrame; // closed-loop rec. (needed when m_uiQualityLevelForPrediction < NumFGS)
Frame** m_papcELFrame; // higher layer reference frames
Frame** m_papcResidual; // frame stores for residual data
Frame** m_papcSubband; // reconstructed subband pictures
Frame* m_pcLowPassBaseReconstruction; // base reconstruction of last low-pass picture
//TMM_WP
Bool m_bBaseLayerWp;
//TMM_WP
Frame* m_pcAnchorFrameOriginal; // original anchor frame
Frame* m_pcAnchorFrameReconstructed; // reconstructed anchor frame
Frame* m_pcBaseLayerFrame; // base layer frame
Frame* m_pcBaseLayerResidual; // base layer residual
//----- control data arrays -----
ControlData* m_pacControlData; // control data arrays
MbDataCtrl* m_pcBaseLayerCtrl; // macroblock data of the base layer pictures
MbDataCtrl* m_pcBaseLayerCtrlField;
ControlData* m_pacControlDataEL; // control data arrays
MbDataCtrl* m_pcBaseLayerCtrlEL; // macroblock data of the base layer pictures
MbDataCtrl* m_pcRedundantCtrl;//RPIC bug fix
MbDataCtrl* m_pcRedundant1Ctrl;//RPIC bug fix
//----- auxiliary buffers -----
UInt m_uiWriteBufferSize; // size of temporary write buffer
UChar* m_pucWriteBuffer; // write buffer
//----- PSNR & rate -----
Double m_fOutputFrameRate;
UInt m_uiParameterSetBits;
UInt m_auiNumFramesCoded [MAX_DSTAGES+1];
UInt m_uiNewlyCodedBits;
Double m_adPSNRSumY [MAX_DSTAGES+1];
Double m_adPSNRSumU [MAX_DSTAGES+1];
Double m_adPSNRSumV [MAX_DSTAGES+1];
//----- ESS -----
ResizeParameters* m_pcResizeParameters;
FILE* m_pESSFile;
Bool* m_pbFieldPicFlag;
// JVT-Q065 EIDR{
Int m_iIDRPeriod;
Int m_iIDRAccessPeriod; //EIDR bug-fix
Bool m_bBLSkipEnable;
// JVT-Q065 EIDR}
//JVT-R057 LA-RDO{
Bool m_bLARDOEnable;
//JVT-R057 LA-RD}
UInt m_uiEssRPChkEnable;
UInt m_uiMVThres;
UInt m_uiNonRequiredWrite; //NonRequired JVT-Q066 (06-04-08)
UInt m_uiPreAndSuffixUnitEnable; //JVT-S036 lsj
UInt m_uiMMCOBaseEnable; //JVT-S036 lsj
//S051{
UInt m_uiTotalFrame;
UInt* m_auiFrameBits;
UIntList m_cPocList;
UInt m_uiAnaSIP;
Bool m_bEncSIP;
std::string m_cInSIPFileName;
std::string m_cOutSIPFileName;
//S051}
// JVT-S054 (ADD) ->
Bool m_bIroiSliceDivisionFlag;
UInt m_uiNumSliceMinus1;
UInt* m_puiFirstMbInSlice;
UInt* m_puiLastMbInSlice;
// JVT-S054 (ADD) <-
//JVT-T054{
UInt m_uiLayerCGSSNR;
UInt m_uiQualityLevelCGSSNR;
UInt m_uiBaseLayerCGSSNR;
UInt m_uiBaseQualityLevelCGSSNR;
//JVT-T054}
//DS_FIX_FT_09_2007
Bool m_bDiscardable;
UInt m_uiQLDiscardable;
//~DS_FIX_FT_09_2007
// JVT-U085 LMI
Bool m_bTlevelNestingFlag;
// JVT-U116 W062 LMI
Bool m_bTl0DepRepIdxEnable;
//JVT-U106 Behaviour at slice boundaries{
Bool m_bCIUFlag;
ReconstructionBypass* m_pcReconstructionBypass;
//JVT-U106 Behaviour at slice boundaries}
Bool* m_apabBaseModeFlagAllowedArrays[2];
UInt m_uiMinScalableLayer;
UInt m_uiFramesInCompleteGOPsProcessed;
Bool m_bGOPInitialized;
MbDataCtrl* m_pcBaseMbDataCtrl;
UInt m_uiEncodeKeyPictures;
Bool m_bSameResBL;
Bool m_bSameResEL;
Bool m_bMGS;
UInt m_uiMGSKeyPictureControl;
Bool m_bHighestMGSLayer;
Bool m_abCoded[(1<<MAX_DSTAGES)+1];
Bool m_bExplicitQPCascading;
Double m_adDeltaQPTLevel[MAX_TEMP_LEVELS];
// JVT-V068 HRD {
StatBuf<Scheduler*, MAX_SCALABLE_LAYERS>* m_apcScheduler;
ParameterSetMng* m_pcParameterSetMng;
Bool m_bEnableHrd;
// JVT-V068 HRD }
// JVT-W049 {
UInt m_uiNumberLayersCnt;
// JVT-W049 }
//JVT-W051 {
public:
Double m_dFrameBits;
Double m_dAvgBitrate;
UInt m_uiProfileIdc;
UInt m_uiLevelIdc;
Bool m_bConstraint0Flag;
Bool m_bConstraint1Flag;
Bool m_bConstraint2Flag;
Bool m_bConstraint3Flag;
//JVT-W051 }
public:
Bool m_bOutputFlag;//JVT-W047
//JVT-X046 {
UInt m_uiSliceMode;
UInt m_uiSliceArgument;
//JVT-X046 }
UInt m_uiLastCodedFrameIdInGOP;
UInt m_uiLastCodedTemporalId;
Bool m_bInterlaced;
};
#if defined( WIN32 )
# pragma warning( default: 4251 )
#endif
H264AVC_NAMESPACE_END
#endif // !defined(AFX_GOPENCODER_H__75F41F36_C28D_41F9_AB5E_4C90D66D160C__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -