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 + -
显示快捷键?