⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gopencoder.h

📁 JVT-Z203_jsvm.rar
💻 H
📖 第 1 页 / 共 3 页
字号:

  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 + -