1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
/**
* 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__*/
|