pes.h

来自「这是一个SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,」· C头文件 代码 · 共 98 行

H
98
字号
#ifndef _PES_H#define _PES_H#include "basic.h"#define SCR_VALID_FLAG	1#define PTS_VALID_FLAG	2#define DTS_VALID_FLAG	4typedef void (*PESCallback)(BYTE *pData, DWORD Length, BYTE StreamId, BYTE SubStreamId, 	MPEG_TIMESTAMP Pts, MPEG_TIMESTAMP Dts, BYTE Flags, QWORD PESOffset, void *Context);typedef void (*PSMCallback) (BYTE streamType, BYTE streamId, void *Context);// This callback is invoked for AC3 and DTS streams muxed in DVD VOB streams.typedef void (*AC3DTSCallback) (BYTE numberOfFrameHeaders, 				WORD firstAccessUnitPointer, 				void *Context);typedef void (*LPCMCallback) (BYTE numberOfFrameHeaders,			      WORD firstAccessUnitPointer,			      DWORD frequency,			      BYTE numberOfChannels,			      BYTE quantizationWordLength,			      void *context);#ifdef CARIBBEANclass PESDemux: public RMdemuxBase#elseclass PESDemux#endif // CARIBBEAN{	public:	PESDemux ();	~PESDemux ();	PESCallback     m_Callback;            // PES payload callback.	PSMCallback     m_PSMCallback;         // PSM callback.	AC3DTSCallback  m_ac3dtsCallback;      // Audio Callback.	LPCMCallback    m_lpcmCallback;        // LPCM callback.	void *          m_Context;             // Context to be returned with the callback.	BOOL		m_IsDVDStream;         // set this to TRUE if the input is a DVD stream	void Reset (void);	DWORD Demux (BYTE *pBuffer, DWORD dwBufferLength);	void ResetState (void); private:	int StartCodeSubStateHandling (BYTE *pBuffer, DWORD dwBufferLength);	int PESPacketIdentificationSubStateHandling (BYTE *pBuffer, DWORD dwBufferLength);	int GenericPESSubStateHandling (BYTE *pBuffer, DWORD dwBufferLength);	DWORD PSMPESSubStateHandling (BYTE *pBuffer, DWORD dwBufferLength);	int SpecialPESSubStateHandling (BYTE *pBuffer, DWORD dwBufferLength);	int ProcessingDataSubStateHandling (BYTE *pBuffer, DWORD dwBufferLength);	int PackHeaderHandling (BYTE *pBuffer, DWORD dwBufferLength);	int SystemHeaderHandling (BYTE *pBuffer, DWORD dwBufferLength); private:	int	m_State;	int	m_SubState;	int	m_NextState;	int     m_NextSubState;	int	m_BytesProcessed;	BYTE    m_StreamId;	int	m_TotalBytesSkipped;	int	m_DataLength;	int	m_PESPacketLength;	BYTE	m_PesHeaderByte0;	BYTE	m_PesHeaderByte1;	BYTE	m_PesHeaderLength;	BYTE	m_BytesToSkip;	BYTE	m_Flags;	MPEG_TIMESTAMP m_Pts;	MPEG_TIMESTAMP m_Dts;	// for mpeg-2 program layer	MPEG_TIMESTAMP m_Scr;	DWORD	m_ProgramMuxRate;	BYTE	m_PackStuffingBytes;		// for DVD vob files	BYTE	m_SubStreamId;	// PSM parsed data.	BYTE m_elementaryStreamId;	BYTE m_elementaryStreamType;	WORD m_elementaryStreamMapLength;	WORD m_elementaryStreamInfoLength;	WORD m_programStreamInfoLength;	DWORD m_mapCRC;	// DVD audio data.	BYTE m_nFrameHeaders;	WORD m_firstAccessUnitPointer;		QWORD m_PESOffset;};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?