📄 scheduler.h
字号:
/**************************************************************************
// JVT-V068 HRD
**************************************************************************/
// JVT-V068 {
#if !defined(AFX_SCHEDULER_H__4242CFD4_A40A_4FCE_B740_60624D030E86__INCLUDED_)
#define AFX_SCHEDULER_H__4242CFD4_A40A_4FCE_B740_60624D030E86__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "H264AVCCommonLib/Sei.h"
#include "CodingParameter.h"
// h264 namespace begin
H264AVC_NAMESPACE_BEGIN
// #define DEBUG_SCHEDULER
#define DEBUG_SCHEDULER_FILE "scheduler.txt"
class Scheduler
{
class TimingUnit
{
public:
Int64 m_iDataLength; // in Bytes
Int64 m_iBitRate; // in Bits
Double m_dInitialArrivalEarliest;
Double m_dInitialArrival;
Double m_dFinalArrival;
Double m_dRemoval;
UInt m_uiFirstIrd;
UInt m_uiIrd;
UInt m_uiIrdOffset;
Bool m_bCbr;
TimingUnit();
ErrVal calcTiming( UInt uiSize, Double dTime, Bool bIsIdr);
ErrVal calcIrd(Double dTime);
};
protected:
Scheduler();
virtual ~Scheduler() {};
public:
static ErrVal create( Scheduler*& rpcScheduler );
ErrVal destroy();
ErrVal createBufferingSei( SEI::BufferingPeriod*& rpcBufferingPeriod, ParameterSetMng* pcParameterSetMng, UInt uiDQId );
ErrVal createTimingSei( SEI::PicTiming*& rpcPicTiming, const VUI* pcVui, UInt uiPicNumOffset, SliceHeader &rcSH, UInt uiInputFormat, UInt uiLayerIndex);
ErrVal calculateTiming( UInt uiVclSize, UInt uiAUSize, Bool bIsIdr, Bool bFieldPicFlag);
// ErrVal calculateIrd();
ErrVal init( CodingParameter *pcCodingParameter, UInt uiLayer );
ErrVal initBuffer( const VUI* pcVui, UInt uiLayerIndex);
ErrVal uninit();
Void setInitialOutputDelay( UInt uiInitialOutputDelay ) { m_uiInitialOutputDelay = uiInitialOutputDelay;}
Void setLayerBits( UInt uiBits ) { m_uiLayerBits = uiBits; }
UInt getLayerBits() { return m_uiLayerBits; }
protected:
ErrVal xInitHrd (const HRD& rcHrd, const HRD::HrdParamType eHrdParamType);
ErrVal xCreateBufferingSeiHrd( HRD::HrdParamType eHrdParamType, const HRD &rcHrd, SEI::BufferingPeriod* pcBPSei);
ErrVal xCalculateTiming( HRD::HrdParamType eHrdParamType, UInt uiSize, Bool bIsIdr );
Double m_dFieldTimeDelta;
Double m_dOutputFrequency;
UInt m_uiOutputTicks;
Double m_dClockFrequency;
Double m_dActualOutTime;
Double m_dActualInTime;
Double m_dLastBPTime;
UInt m_uiInitialOutputDelay;
StatBuf< DynBuf< TimingUnit >,2 > m_aacTiming;
const HRD* m_apcHrd[2];
CodingParameter *m_pcCodingParameter;
FILE *m_pfFileDebug;
Bool m_bInitDone;
UInt m_uiLayerBits;
};
// h264 namespace end
H264AVC_NAMESPACE_END
#endif // !defined(AFX_Scheduler_H__4242CFD4_A40A_4FCE_B740_60624D030E86__INCLUDED_)
// JVT-V068 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -