1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7#include <mpeg2data.h>
8#include <mpeg2bits.h>
9
10#ifndef __INC_MPEG2STRUCTS__
11#define __INC_MPEG2STRUCTS__
12
13typedef enum _MPEG_CONTEXT_TYPE {
14  MPEG_CONTEXT_BCS_DEMUX = 0,
15  MPEG_CONTEXT_WINSOCK
16} MPEG_CONTEXT_TYPE;
17
18typedef enum _MPEG_CURRENT_NEXT_BIT {
19  MPEG_SECTION_IS_NEXT      = 0,
20  MPEG_SECTION_IS_CURRENT   = 1
21} MPEG_CURRENT_NEXT_BIT;
22
23typedef enum _MPEG_REQUEST_TYPE {
24  MPEG_RQST_UNKNOWN               = 0,
25  MPEG_RQST_GET_SECTION,
26  MPEG_RQST_GET_SECTION_ASYNC,
27  MPEG_RQST_GET_TABLE,
28  MPEG_RQST_GET_TABLE_ASYNC,
29  MPEG_RQST_GET_SECTIONS_STREAM,
30  MPEG_RQST_GET_PES_STREAM,
31  MPEG_RQST_GET_TS_STREAM,
32  MPEG_RQST_START_MPE_STREAM
33} MPEG_REQUEST_TYPE;
34
35typedef struct _DSMCC_ELEMENT {
36  PID                   pid;
37  BYTE                  bComponentTag;
38  DWORD                 dwCarouselId;
39  DWORD                 dwTransactionId;
40  struct _DSMCC_ELEMENT *pNext;
41} DSMCC_ELEMENT, *PDSMCC_ELEMENT;
42
43typedef struct {
44  WINBOOL  fSpecifyProtocol;
45  BYTE  Protocol;
46  WINBOOL  fSpecifyType;
47  BYTE  Type;
48  WINBOOL  fSpecifyMessageId;
49  WORD  MessageId;
50  WINBOOL  fSpecifyTransactionId;
51  WINBOOL  fUseTrxIdMessageIdMask;
52  DWORD TransactionId;
53  WINBOOL  fSpecifyModuleVersion;
54  BYTE  ModuleVersion;
55  WINBOOL  fSpecifyBlockNumber;
56  WORD  BlockNumber;
57  WINBOOL  fGetModuleCall;
58  WORD  NumberOfBlocksInModule;
59} DSMCC_FILTER_OPTIONS;
60
61typedef struct _MPEG_HEADER_BITS_MIDL {
62  WORD Bits;
63} MPEG_HEADER_BITS_MIDL;
64
65typedef struct _MPEG_HEADER_VERSION_BITS_MIDL {
66    BYTE Bits;
67} MPEG_HEADER_VERSION_BITS_MIDL;
68
69typedef struct _DSMCC_SECTION {
70  TID   TableId;
71  __C89_NAMELESS union {
72    MPEG_HEADER_BITS_MIDL S;
73    WORD                  W;
74  } Header;
75  WORD  TableIdExtension;
76  __C89_NAMELESS union {
77    MPEG_HEADER_VERSION_BITS_MIDL S;
78    BYTE                          B;
79  } Version;
80  BYTE  SectionNumber;
81  BYTE  LastSectionNumber;
82  BYTE  ProtocolDiscriminator;
83  BYTE  DsmccType;
84  WORD  MessageId;
85  DWORD TransactionId;
86  BYTE  Reserved;
87  BYTE  AdaptationLength;
88  WORD  MessageLength;
89  BYTE  RemainingData[1];
90} DSMCC_SECTION, *PDSMCC_SECTION;
91
92typedef struct _DVB_EIT_FILTER_OPTIONS {
93  WINBOOL fSpecifySegment;
94  BYTE bSegment;
95} DVB_EIT_FILTER_OPTIONS, *PDVB_EIT_FILTER_OPTIONS;
96
97typedef struct {
98  TID   TableId;
99  __C89_NAMELESS union {
100    MPEG_HEADER_BITS_MIDL S;
101    WORD                  W;
102  } Header;
103  WORD  TableIdExtension;
104  __C89_NAMELESS union {
105    MPEG_HEADER_VERSION_BITS_MIDL S;
106    BYTE                          B;
107  } Version;
108  BYTE  SectionNumber;
109  BYTE  LastSectionNumber;
110  BYTE  RemainingData[1];
111} LONG_SECTION, *PLONG_SECTION;
112
113typedef struct _MPE_ELEMENT {
114  PID                 pid;
115  BYTE                bComponentTag;
116  struct _MPE_ELEMENT *pNext;
117} MPE_ELEMENT, *PMPE_ELEMENT;
118
119typedef struct _MPEG2_FILTER {
120  BYTE                 bVersionNumber;
121  WORD                 wFilterSize;
122  WINBOOL              fUseRawFilteringBits;
123  BYTE                 Filter[16];
124  BYTE                 Mask[16];
125  WINBOOL              fSpecifyTableIdExtension;
126  WORD                 TableIdExtension;
127  WINBOOL              fSpecifyVersion;
128  BYTE                 Version;
129  WINBOOL              fSpecifySectionNumber;
130  BYTE                 SectionNumber;
131  WINBOOL              fSpecifyCurrentNext;
132  WINBOOL              fNext;
133  WINBOOL              fSpecifyDsmccOptions;
134  DSMCC_FILTER_OPTIONS Dsmcc;
135  WINBOOL              fSpecifyAtscOptions;
136  ATSC_FILTER_OPTIONS  Atsc;
137} MPEG2_FILTER, *PMPEG2_FILTER;
138
139typedef struct {
140  BYTE                   bVersionNumber;
141  WORD                   wFilterSize;
142  WINBOOL                fUseRawFilteringBits;
143  BYTE                   Filter[16];
144  BYTE                   Mask[16];
145  WINBOOL                fSpecifyTableIdExtension;
146  WORD                   TableIdExtension;
147  WINBOOL                fSpecifyVersion;
148  BYTE                   Version;
149  WINBOOL                fSpecifySectionNumber;
150  BYTE                   SectionNumber;
151  WINBOOL                fSpecifyCurrentNext;
152  WINBOOL                fNext;
153  WINBOOL                fSpecifyDsmccOptions;
154  DSMCC_FILTER_OPTIONS   Dsmcc;
155  WINBOOL                fSpecifyAtscOptions;
156  ATSC_FILTER_OPTIONS    Atsc;
157  WINBOOL                 fSpecifyDvbEitOptions;
158  DVB_EIT_FILTER_OPTIONS Dvb_Eit;
159} MPEG2_FILTER2, *PMPEG2_FILTER2;
160
161typedef struct _MPEG_BCS_DEMUX {
162  DWORD AVMGraphId;
163} MPEG_BCS_DEMUX;
164
165typedef struct _MPEG_WINSOCK {
166  DWORD AVMGraphId;
167} MPEG_WINSOCK;
168
169typedef struct _MPEG_CONTEXT {
170  MPEG_CONTEXT_TYPE Type;
171  __C89_NAMELESS union {
172    MPEG_BCS_DEMUX Demux;
173    MPEG_WINSOCK   Winsock;
174  } U;
175} MPEG_CONTEXT, *PMPEG_CONTEXT;
176
177typedef struct _MPEG_DATE {
178  BYTE Date;
179  BYTE Month;
180  WORD Year;
181} MPEG_DATE;
182
183typedef struct _MPEG_TIME {
184  BYTE Hours;
185  BYTE Minutes;
186  BYTE Seconds;
187} MPEG_TIME;
188
189typedef struct _MPEG_DATE_AND_TIME {
190  MPEG_DATE D;
191  MPEG_TIME T;
192} MPEG_DATE_AND_TIME;
193
194typedef MPEG_TIME MPEG_DURATION;
195
196typedef struct {
197  TID   TableId;
198  __C89_NAMELESS union {
199    MPEG_HEADER_BITS_MIDL S;
200    WORD                  W;
201  } Header;
202  BYTE  SectionData[1];
203} SECTION, *PSECTION;
204
205typedef struct _MPEG_RQST_PACKET {
206  DWORD    dwLength;
207  PSECTION pSection;
208} MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
209
210typedef struct _MPEG_PACKET_LIST {
211  WORD              wPacketCount;
212  PMPEG_RQST_PACKET PacketList[1];
213} MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
214
215typedef struct _MPEG_STREAM_BUFFER {
216  HRESULT hr;
217  DWORD   dwDataBufferSize;
218  DWORD   dwSizeOfDataRead;
219  BYTE    *pDataBuffer;
220} MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
221
222#endif /*__INC_MPEG2STRUCTS__*/
223