📄 gopencoder.h
字号:
const PictureParameterSet* m_pcPPSLP;
const PictureParameterSet* m_pcPPSHP;
const SequenceParameterSet* m_pcSPS_FGS;
const PictureParameterSet* m_pcPPSLP_FGS;
const PictureParameterSet* m_pcPPSHP_FGS;
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;
RQFGSEncoder* m_pcRQFGSEncoder;
//----- fixed control parameters ----
Bool m_bTraceEnable; // trace file
Bool m_bFrameMbsOnlyFlag; // frame macroblocks only block
UInt m_uiLayerId; // layer id for current layer
UInt m_uiScalableLayerId; // scalable layer id for current layer
UInt m_uiBaseLayerId; // layer if 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_uiNotCodedMCTFStages; // number of MCTF 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
UInt m_uiClosedLoopMode; // closed-loop coding mode (0:open-loop)
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
Double m_dNumFGSLayers; // number of FGS layers
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
Bool m_bLoadMotionInfo; // load motion data from file
Bool m_bSaveMotionInfo; // save motion data to file
FILE* m_pMotionInfoFile; // motion data file
UInt m_uiFGSMotionMode; // 0: no FGS motion refinement, 1: only non-key framees, 2: for all frames
//----- 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
//----- frame memories -----
IntFrame* m_apcFrameTemp[NUM_TMP_FRAMES]; // auxiliary frame memories
IntFrame** m_papcFrame; // frame stores
IntFrame** m_papcOrgFrame; // original (highpass) frames
IntFrame** m_papcBQFrame; // base quality frames
IntFrame** m_papcCLRecFrame; // closed-loop rec. (needed when m_uiQualityLevelForPrediction < NumFGS)
IntFrame** m_papcELFrame; // higher layer reference frames
IntFrame** m_papcResidual; // frame stores for residual data
IntFrame** m_papcSubband; // reconstructed subband pictures
IntFrame* m_pcLowPassBaseReconstruction; // base reconstruction of last low-pass picture
//TMM_WP
Bool m_bBaseLayerWp;
//TMM_WP
IntFrame* m_pcAnchorFrameOriginal; // original anchor frame
IntFrame* m_pcAnchorFrameReconstructed; // reconstructed anchor frame
IntFrame* m_pcBaseLayerFrame; // base layer frame
IntFrame* m_pcBaseLayerResidual; // base layer residual
IntFrame** m_papcSmoothedFrame; // JVT-R091; smoothed reference frame
//----- 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
//----- 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];
UInt m_auiCurrGOPBits [ MAX_SCALABLE_LAYERS ];
Double m_adSeqBits [ MAX_SCALABLE_LAYERS ];
//----- FGS -----
UInt m_uiFGSMode;
FILE* m_pFGSFile;
Double m_dFGSCutFactor;
Double m_dFGSBitRateFactor;
Double m_dFGSRoundingOffset;
Int m_iLastFGSError;
UInt m_uiNotYetConsideredBaseLayerBits;
Bool m_bExtendedPriorityId;
//----- ESS -----
ResizeParameters* m_pcResizeParameters;
UInt m_uiBaseWeightZeroBaseBlock;
UInt m_uiBaseWeightZeroBaseCoeff;
UInt m_uiFgsEncStructureFlag;
UInt m_uiNumLayers[2];
IntFrame* m_aapcFGSRecon[2][MAX_FGS_LAYERS+1]; // previous low-pass base layer reconstruction
IntFrame* m_aapcFGSPredFrame;
Double m_dLowPassEnhRef;
UInt m_uiLowPassFgsMcFilter;
//JVT-P031
Bool m_bUseDiscardableUnit;
Double m_dPredFGSCutFactor;
Double m_dPredFGSBitRateFactor;
Int m_iPredLastFGSError;
Double m_dPredFGSRoundingOffset;
UInt m_uiPaff;
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_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}
// JVT-U085 LMI
Bool m_bTlevelNestingFlag;
// JVT-U116 LMI
Bool m_bTl0PicIdxPresentFlag;
//JVT-U106 Behaviour at slice boundaries{
Bool m_bCIUFlag;
ReconstructionBypass* m_pcReconstructionBypass;
Bool* m_pbIntraBLFlag;
//JVT-U106 Behaviour at slice boundaries}
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];
UInt m_uiMGSKeyPictureMotRef;
Bool m_bExplicitQPCascading;
Double m_adDeltaQPTLevel[MAX_TEMP_LEVELS];
Bool m_bUseSmoothedRef;//JVT-V058
};
#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 + -