📄 m2t.h
字号:
#ifndef _M2T_H#define _M2T_H#include "basic.h"#define MAX_PROGRAMS 0xfffftypedef struct tagPATVal{ WORD program_number; WORD program_map_PID;} PATVal;typedef void (*M2TCallback)(BYTE *pData, DWORD Length, WORD PID, BYTE Flags, QWORD TransportOffset, void *Context);typedef BOOL (*M2TPMTCallback)(WORD wPID, WORD wType, void *Context);typedef WORD (*M2TPATCallback)(WORD wPID, WORD wProgramNumber, void *Context);typedef void (*M2TPMSCallback)(WORD wPMSPID, WORD wPID, WORD wType, void *Context);#ifdef CARIBBEANclass M2TDemux: public RMdemuxBase#elseclass M2TDemux#endif // CARIBBEAN{ int m_State; int m_SubState; int m_ProgramAssociationTableState; int m_ConditionalAccessTableState; int m_ProgramMapTableState; int m_NetworkInformationTableState; int m_TransportPacketCounter; int m_BytesLeftInTransportPacket; int m_SkipCount; int m_AdaptationFieldLength; BYTE m_TransportErrorIndicator; BYTE m_PayloadUnitStartIndicator; BYTE m_TransportPriority; WORD m_PID; BYTE m_TransportScramblingControl; BYTE m_AdaptionFieldControl; BYTE m_ContinuityCounter; WORD m_PMTPID; // program map table pid WORD m_NITPID; // network information table pid BYTE m_PAS_Pointer; BYTE m_PAS_TableId; BYTE m_PAS_SectionSyntaxIndicator; WORD m_PAS_SectionLength; WORD m_PAS_TransportStreamId; BYTE m_PAS_VersionNumber; BYTE m_PAS_CurrentNextIndicator; BYTE m_PAS_SectionNumber; BYTE m_PAS_LastSectionNumber; BYTE m_PAS_N; // N in the Program association section PATVal m_PAT[MAX_PROGRAMS]; WORD m_PAS_ProgramNumber; WORD m_PAS_PID; WORD m_networkPID; int m_PATPadding; BYTE m_PMS_Pointer; BYTE m_PMS_TableId; WORD m_PMS_SectionLength; WORD m_PMS_ProgramNumber; BYTE m_PMS_VersionNumber; BYTE m_PMS_CurrentNextIndicator; BYTE m_PMS_SectionNumber; BYTE m_PMS_LastSectionNumber; WORD m_PMS_PCRPID; WORD m_PMS_ProgramInfoLength; WORD m_BytesInNextBlock; BYTE m_PMS_StreamType; WORD m_PMS_ElementaryPID; WORD m_PMS_ESInfoLength; int m_PMTPadding; QWORD m_BytesProcessed; QWORD m_TransportOffset;#ifdef PARSE_ALL_PROGRAM_MAP_TABLES WORD m_ValidProgramMapPIDs[0xffff]; // same as the max. # of programs int m_nValidProgramMapPIDs;#endifpublic: M2TDemux (); ~M2TDemux (); WORD m_VideoPID; WORD m_AudioPID; M2TCallback m_Callback; M2TPMTCallback m_PMTCallback; M2TPATCallback m_PATCallback;#ifdef PARSE_ALL_PROGRAM_MAP_TABLES M2TPMSCallback m_PMSCallback;#endif void *m_Context; WORD m_ProgramNumber; BYTE m_UserDefinedVideoStreamType; BYTE m_UserDefinedAudioStreamType; void Reset (void); void ResetState (void); DWORD Demux (BYTE *pBuffer, DWORD dwBufferLength); int TransportHeader (BYTE *pBuffer, DWORD dwBufferLength); int AdaptationField (BYTE *pBuffer, DWORD dwBufferLength); int TransportData (BYTE *pBuffer, DWORD dwBufferLength); int Resync (BYTE *pBuffer, DWORD dwBufferLength); int ProgramAssociationTable (BYTE *pBuffer, DWORD dwBufferLength); int ConditionalAccessTable (BYTE *pBuffer, DWORD dwBufferLength); int ProgramMapTable (BYTE *pBuffer, DWORD dwBufferLength); int NetworkInformationTable (BYTE *pBuffer, DWORD dwBufferLength); #ifdef PARSE_ALL_PROGRAM_MAP_TABLES int IsProgramMapTablePID (WORD wPID);#endif};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -