/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #include <mpeg2data.h> #include <mpeg2bits.h> #ifndef __INC_MPEG2STRUCTS__ #define __INC_MPEG2STRUCTS__ typedef enum _MPEG_CONTEXT_TYPE { MPEG_CONTEXT_BCS_DEMUX = 0, MPEG_CONTEXT_WINSOCK } MPEG_CONTEXT_TYPE; typedef enum _MPEG_CURRENT_NEXT_BIT { MPEG_SECTION_IS_NEXT = 0, MPEG_SECTION_IS_CURRENT = 1 } MPEG_CURRENT_NEXT_BIT; typedef enum _MPEG_REQUEST_TYPE { MPEG_RQST_UNKNOWN = 0, MPEG_RQST_GET_SECTION, MPEG_RQST_GET_SECTION_ASYNC, MPEG_RQST_GET_TABLE, MPEG_RQST_GET_TABLE_ASYNC, MPEG_RQST_GET_SECTIONS_STREAM, MPEG_RQST_GET_PES_STREAM, MPEG_RQST_GET_TS_STREAM, MPEG_RQST_START_MPE_STREAM } MPEG_REQUEST_TYPE; typedef struct _DSMCC_ELEMENT { PID pid; BYTE bComponentTag; DWORD dwCarouselId; DWORD dwTransactionId; struct _DSMCC_ELEMENT *pNext; } DSMCC_ELEMENT, *PDSMCC_ELEMENT; typedef struct { WINBOOL fSpecifyProtocol; BYTE Protocol; WINBOOL fSpecifyType; BYTE Type; WINBOOL fSpecifyMessageId; WORD MessageId; WINBOOL fSpecifyTransactionId; WINBOOL fUseTrxIdMessageIdMask; DWORD TransactionId; WINBOOL fSpecifyModuleVersion; BYTE ModuleVersion; WINBOOL fSpecifyBlockNumber; WORD BlockNumber; WINBOOL fGetModuleCall; WORD NumberOfBlocksInModule; } DSMCC_FILTER_OPTIONS; typedef struct _MPEG_HEADER_BITS_MIDL { WORD Bits; } MPEG_HEADER_BITS_MIDL; typedef struct _MPEG_HEADER_VERSION_BITS_MIDL { BYTE Bits; } MPEG_HEADER_VERSION_BITS_MIDL; typedef struct _DSMCC_SECTION { TID TableId; __C89_NAMELESS union { MPEG_HEADER_BITS_MIDL S; WORD W; } Header; WORD TableIdExtension; __C89_NAMELESS union { MPEG_HEADER_VERSION_BITS_MIDL S; BYTE B; } Version; BYTE SectionNumber; BYTE LastSectionNumber; BYTE ProtocolDiscriminator; BYTE DsmccType; WORD MessageId; DWORD TransactionId; BYTE Reserved; BYTE AdaptationLength; WORD MessageLength; BYTE RemainingData[1]; } DSMCC_SECTION, *PDSMCC_SECTION; typedef struct _DVB_EIT_FILTER_OPTIONS { WINBOOL fSpecifySegment; BYTE bSegment; } DVB_EIT_FILTER_OPTIONS, *PDVB_EIT_FILTER_OPTIONS; typedef struct { TID TableId; __C89_NAMELESS union { MPEG_HEADER_BITS_MIDL S; WORD W; } Header; WORD TableIdExtension; __C89_NAMELESS union { MPEG_HEADER_VERSION_BITS_MIDL S; BYTE B; } Version; BYTE SectionNumber; BYTE LastSectionNumber; BYTE RemainingData[1]; } LONG_SECTION, *PLONG_SECTION; typedef struct _MPE_ELEMENT { PID pid; BYTE bComponentTag; struct _MPE_ELEMENT *pNext; } MPE_ELEMENT, *PMPE_ELEMENT; typedef struct _MPEG2_FILTER { BYTE bVersionNumber; WORD wFilterSize; WINBOOL fUseRawFilteringBits; BYTE Filter[16]; BYTE Mask[16]; WINBOOL fSpecifyTableIdExtension; WORD TableIdExtension; WINBOOL fSpecifyVersion; BYTE Version; WINBOOL fSpecifySectionNumber; BYTE SectionNumber; WINBOOL fSpecifyCurrentNext; WINBOOL fNext; WINBOOL fSpecifyDsmccOptions; DSMCC_FILTER_OPTIONS Dsmcc; WINBOOL fSpecifyAtscOptions; ATSC_FILTER_OPTIONS Atsc; } MPEG2_FILTER, *PMPEG2_FILTER; typedef struct { BYTE bVersionNumber; WORD wFilterSize; WINBOOL fUseRawFilteringBits; BYTE Filter[16]; BYTE Mask[16]; WINBOOL fSpecifyTableIdExtension; WORD TableIdExtension; WINBOOL fSpecifyVersion; BYTE Version; WINBOOL fSpecifySectionNumber; BYTE SectionNumber; WINBOOL fSpecifyCurrentNext; WINBOOL fNext; WINBOOL fSpecifyDsmccOptions; DSMCC_FILTER_OPTIONS Dsmcc; WINBOOL fSpecifyAtscOptions; ATSC_FILTER_OPTIONS Atsc; WINBOOL fSpecifyDvbEitOptions; DVB_EIT_FILTER_OPTIONS Dvb_Eit; } MPEG2_FILTER2, *PMPEG2_FILTER2; typedef struct _MPEG_BCS_DEMUX { DWORD AVMGraphId; } MPEG_BCS_DEMUX; typedef struct _MPEG_WINSOCK { DWORD AVMGraphId; } MPEG_WINSOCK; typedef struct _MPEG_CONTEXT { MPEG_CONTEXT_TYPE Type; __C89_NAMELESS union { MPEG_BCS_DEMUX Demux; MPEG_WINSOCK Winsock; } U; } MPEG_CONTEXT, *PMPEG_CONTEXT; typedef struct _MPEG_DATE { BYTE Date; BYTE Month; WORD Year; } MPEG_DATE; typedef struct _MPEG_TIME { BYTE Hours; BYTE Minutes; BYTE Seconds; } MPEG_TIME; typedef struct _MPEG_DATE_AND_TIME { MPEG_DATE D; MPEG_TIME T; } MPEG_DATE_AND_TIME; typedef MPEG_TIME MPEG_DURATION; typedef struct { TID TableId; __C89_NAMELESS union { MPEG_HEADER_BITS_MIDL S; WORD W; } Header; BYTE SectionData[1]; } SECTION, *PSECTION; typedef struct _MPEG_RQST_PACKET { DWORD dwLength; PSECTION pSection; } MPEG_RQST_PACKET, *PMPEG_RQST_PACKET; typedef struct _MPEG_PACKET_LIST { WORD wPacketCount; PMPEG_RQST_PACKET PacketList[1]; } MPEG_PACKET_LIST, *PMPEG_PACKET_LIST; typedef struct _MPEG_STREAM_BUFFER { HRESULT hr; DWORD dwDataBufferSize; DWORD dwSizeOfDataRead; BYTE *pDataBuffer; } MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER; #endif /*__INC_MPEG2STRUCTS__*/