mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 00:55:09 +00:00
222 lines
5.6 KiB
C
222 lines
5.6 KiB
C
/**
|
|
* 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__*/
|