/**
* 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__*/