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 
9 #ifndef __MPEG2PSIPARSER_H__
10 #define __MPEG2PSIPARSER_H__
11 
12 #ifndef __IPAT_FWD_DEFINED__
13 #define __IPAT_FWD_DEFINED__
14 typedef struct IPAT IPAT;
15 #endif
16 
17 #ifndef __IPSITables_FWD_DEFINED__
18 #define __IPSITables_FWD_DEFINED__
19 typedef struct IPSITables  IPSITables ;
20 #endif
21 
22 #ifndef __IPMT_FWD_DEFINED__
23 #define __IPMT_FWD_DEFINED__
24 typedef struct IPMT IPMT;
25 #endif
26 
27 #ifndef __IGenericDescriptor_FWD_DEFINED__
28 #define __IGenericDescriptor_FWD_DEFINED__
29 typedef struct IGenericDescriptor IGenericDescriptor;
30 #endif
31 
32 #ifndef __ITSDT_FWD_DEFINED__
33 #define __ITSDT_FWD_DEFINED__
34 typedef struct ITSDT ITSDT;
35 #endif
36 
37 #ifndef __ICAT_FWD_DEFINED__
38 #define __ICAT_FWD_DEFINED__
39 typedef struct ICAT ICAT;
40 #endif
41 
42 #undef  INTERFACE
43 #define INTERFACE IPAT
44 #ifdef __GNUC__
45 #warning COM interfaces layout in this header has not been verified.
46 #warning COM interfaces with incorrect layout may not work at all.
47 __MINGW_BROKEN_INTERFACE(INTERFACE)
48 #endif
DECLARE_INTERFACE_(IPAT,IUnknown)49 DECLARE_INTERFACE_(IPAT,IUnknown)
50 {
51     BEGIN_INTERFACE
52 
53     /* IUnknown methods */
54     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
55     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
56     STDMETHOD_(ULONG, Release)(THIS) PURE;
57 
58     /* IPAT methods */
59     STDMETHOD_(HRESULT,ConvertNextToCurrent)(THIS) PURE;
60     STDMETHOD_(HRESULT,FindRecordProgramMapPid)(THIS_ WORD wProgramNumber,WORD *pwVal) PURE;
61     STDMETHOD_(HRESULT,GetCountOfRecords)(THIS_ DWORD *pdwVal) PURE;
62     STDMETHOD_(HRESULT,GetNextTable)(THIS_ IPAT **ppPAT) PURE;
63     STDMETHOD_(HRESULT,GetRecordProgramMapPid)(THIS_ DWORD dwIndex,WORD *pwVal) PURE;
64     STDMETHOD_(HRESULT,GetRecordProgramNumber)(THIS_ DWORD dwIndex,WORD *pwVal) PURE;
65     STDMETHOD_(HRESULT,GetTransportStreamId)(THIS_ WORD *pwVal) PURE;
66     STDMETHOD_(HRESULT,GetVersionNumber)(THIS_ BYTE *pbVal) PURE;
67     STDMETHOD_(HRESULT,Initialize)(THIS_ ISectionList *pSectionList,IMpeg2Data *pMPEGData) PURE;
68     STDMETHOD_(HRESULT,RegisterForNextTable)(THIS_ HANDLE hNextTableAvailable) PURE;
69     STDMETHOD_(HRESULT,RegisterForWhenCurrent)(THIS_ HANDLE hNextTableIsCurrent) PURE;
70 
71     END_INTERFACE
72 };
73 #ifdef COBJMACROS
74 #define IPAT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
75 #define IPAT_AddRef(This) (This)->lpVtbl->AddRef(This)
76 #define IPAT_Release(This) (This)->lpVtbl->Release(This)
77 #define IPAT_ConvertNextToCurrent() (This)->lpVtbl->ConvertNextToCurrent(This)
78 #define IPAT_FindRecordProgramMapPid(This,wProgramNumber,pwVal) (This)->lpVtbl->FindRecordProgramMapPid(This,wProgramNumber,pwVal)
79 #define IPAT_GetCountOfRecords(This,pdwVal) (This)->lpVtbl->GetCountOfRecords(This,pdwVal)
80 #define IPAT_GetNextTable(This,ppPAT) (This)->lpVtbl->GetNextTable(This,ppPAT)
81 #define IPAT_GetRecordProgramMapPid(This,dwIndex,pwVal) (This)->lpVtbl->GetRecordProgramMapPid(This,dwIndex,pwVal)
82 #define IPAT_GetRecordProgramNumber(This,dwIndex,pwVal) (This)->lpVtbl->GetRecordProgramNumber(This,dwIndex,pwVal)
83 #define IPAT_GetTransportStreamId(This,pwVal) (This)->lpVtbl->GetTransportStreamId(This,pwVal)
84 #define IPAT_GetVersionNumber(This,pbVal) (This)->lpVtbl->GetVersionNumber(This,pbVal)
85 #define IPAT_Initialize(This,pSectionList,pMPEGData) (This)->lpVtbl->Initialize(This,pSectionList,pMPEGData)
86 #define IPAT_RegisterForNextTable(This,hNextTableAvailable) (This)->lpVtbl->RegisterForNextTable(This,hNextTableAvailable)
87 #define IPAT_RegisterForWhenCurrent(This,hNextTableIsCurrent) (This)->lpVtbl->RegisterForWhenCurrent(This,hNextTableIsCurrent)
88 #endif /*COBJMACROS*/
89 
90 #undef  INTERFACE
91 #define INTERFACE IPSITables
DECLARE_INTERFACE_(IPSITables,IUnknown)92 DECLARE_INTERFACE_(IPSITables,IUnknown)
93 {
94     BEGIN_INTERFACE
95 
96     /* IUnknown methods */
97     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
98     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
99     STDMETHOD_(ULONG, Release)(THIS) PURE;
100 
101     /* IPSITables methods */
102     STDMETHOD_(HRESULT,GetTable)(THIS_ DWORD dwTSID,DWORD dwTID_PID,DWORD dwHashedVer,DWORD dwPara4,IUnknown **ppIUnknown) PURE;
103 
104     END_INTERFACE
105 };
106 #ifdef COBJMACROS
107 #define IPSITables_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
108 #define IPSITables_AddRef(This) (This)->lpVtbl->AddRef(This)
109 #define IPSITables_Release(This) (This)->lpVtbl->Release(This)
110 #define IPSITables_GetTable(This,dwTSID,dwTID_PID,dwHashedVer,dwPara4,ppIUnknown) (This)->lpVtbl->GetTable(This,dwTSID,dwTID_PID,dwHashedVer,dwPara4,ppIUnknown)
111 #endif /*COBJMACROS*/
112 
113 #undef  INTERFACE
114 #define INTERFACE IPMT
115 #ifdef __GNUC__
116 #warning COM interfaces layout in this header has not been verified.
117 #warning COM interfaces with incorrect layout may not work at all.
118 __MINGW_BROKEN_INTERFACE(INTERFACE)
119 #endif
DECLARE_INTERFACE_(IPMT,IUnknown)120 DECLARE_INTERFACE_(IPMT,IUnknown)
121 {
122     BEGIN_INTERFACE
123 
124     /* IUnknown methods */
125     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
126     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
127     STDMETHOD_(ULONG, Release)(THIS) PURE;
128 
129     /* IPMT methods */
130     STDMETHOD_(HRESULT,ConvertNextToCurrent)(THIS) PURE;
131     STDMETHOD_(HRESULT,GetCountOfRecords)(THIS_ WORD *pwVal) PURE;
132     STDMETHOD_(HRESULT,GetCountOfTableDescriptors)(THIS_ DWORD *pdwVal) PURE;
133     STDMETHOD_(HRESULT,GetNextTable)(THIS_ IPMT **ppPMT) PURE;
134     STDMETHOD_(HRESULT,GetPcrPid)(THIS_ PID *pPidVal) PURE;
135     STDMETHOD_(HRESULT,GetProgramNumber)(THIS_ WORD *pwVal) PURE;
136     STDMETHOD_(HRESULT,GetRecordCountOfDescriptors)(THIS_ DWORD dwRecordIndex,DWORD *pdwVal) PURE;
137     STDMETHOD_(HRESULT,GetRecordDescriptorByIndex)(THIS_ DWORD dwRecordIndex,DWORD dwDescIndex,IGenericDescriptor **ppDescriptor) PURE;
138     STDMETHOD_(HRESULT,GetRecordDescriptorByTag)(THIS_ DWORD dwRecordIndex,BYTE bTag,DWORD *pdwCookie,IGenericDescriptor **ppDescriptor) PURE;
139     STDMETHOD_(HRESULT,GetRecordElementaryPid)(THIS_ DWORD dwRecordIndex,PID *pPidVal) PURE;
140     STDMETHOD_(HRESULT,GetRecordStreamType)(THIS_ DWORD dwRecordIndex,BYTE *pbVal) PURE;
141     STDMETHOD_(HRESULT,GetTableDescriptorByIndex)(THIS_ DWORD dwIndex,IGenericDescriptor **ppDescriptor) PURE;
142     STDMETHOD_(HRESULT,GetTableDescriptorByTag)(THIS_ BYTE bTag,DWORD *pdwCookie,IGenericDescriptor **ppDescriptor) PURE;
143     STDMETHOD_(HRESULT,GetVersionNumber)(THIS_ BYTE *pbVal) PURE;
144     STDMETHOD_(HRESULT,Initialize)(THIS_ ISectionList *pSectionList,IMpeg2Data *pMPEGData) PURE;
145     STDMETHOD_(HRESULT,QueryMPEInfo)(THIS_ MPE_ELEMENT **ppMPEList,UINT *puiCount) PURE;
146     STDMETHOD_(HRESULT,QueryServiceGatewayInfo)(THIS_ DSMCC_ELEMENT **ppDSMCCList,UINT *puiCount) PURE;
147     STDMETHOD_(HRESULT,RegisterForNextTable)(THIS_ HANDLE hNextTableAvailable) PURE;
148     STDMETHOD_(HRESULT,RegisterForWhenCurrent)(THIS_ HANDLE hNextTableIsCurrent) PURE;
149 
150     END_INTERFACE
151 };
152 #ifdef COBJMACROS
153 #define IPMT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
154 #define IPMT_AddRef(This) (This)->lpVtbl->AddRef(This)
155 #define IPMT_Release(This) (This)->lpVtbl->Release(This)
156 #define IPMT_ConvertNextToCurrent() (This)->lpVtbl->ConvertNextToCurrent(This)
157 #define IPMT_GetCountOfRecords(This,pwVal) (This)->lpVtbl->GetCountOfRecords(This,pwVal)
158 #define IPMT_GetCountOfTableDescriptors(This,pdwVal) (This)->lpVtbl->GetCountOfTableDescriptors(This,pdwVal)
159 #define IPMT_GetNextTable(This,ppPMT) (This)->lpVtbl->GetNextTable(This,ppPMT)
160 #define IPMT_GetPcrPid(This,pPidVal) (This)->lpVtbl->GetPcrPid(This,pPidVal)
161 #define IPMT_GetProgramNumber(This,pwVal) (This)->lpVtbl->GetProgramNumber(This,pwVal)
162 #define IPMT_GetRecordCountOfDescriptors(This,dwRecordIndex,pdwVal) (This)->lpVtbl->GetRecordCountOfDescriptors(This,dwRecordIndex,pdwVal)
163 #define IPMT_GetRecordDescriptorByIndex(This,dwRecordIndex,dwDescIndex,ppDescriptor) (This)->lpVtbl->GetRecordDescriptorByIndex(This,dwRecordIndex,dwDescIndex,ppDescriptor)
164 #define IPMT_GetRecordDescriptorByTag(This,dwRecordIndex,bTag,pdwCookie,ppDescriptor) (This)->lpVtbl->GetRecordDescriptorByTag(This,dwRecordIndex,bTag,pdwCookie,ppDescriptor)
165 #define IPMT_GetRecordElementaryPid(This,dwRecordIndex,pPidVal) (This)->lpVtbl->GetRecordElementaryPid(This,dwRecordIndex,pPidVal)
166 #define IPMT_GetRecordStreamType(This,dwRecordIndex,pbVal) (This)->lpVtbl->GetRecordStreamType(This,dwRecordIndex,pbVal)
167 #define IPMT_GetTableDescriptorByIndex(This,dwIndex,ppDescriptor) (This)->lpVtbl->GetTableDescriptorByIndex(This,dwIndex,ppDescriptor)
168 #define IPMT_GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor) (This)->lpVtbl->GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor)
169 #define IPMT_GetVersionNumber(This,pbVal) (This)->lpVtbl->GetVersionNumber(This,pbVal)
170 #define IPMT_Initialize(This,pSectionList,pMPEGData) (This)->lpVtbl->Initialize(This,pSectionList,pMPEGData)
171 #define IPMT_QueryMPEInfo(This,ppMPEList,puiCount) (This)->lpVtbl->QueryMPEInfo(This,ppMPEList,puiCount)
172 #define IPMT_QueryServiceGatewayInfo(This,ppDSMCCList,puiCount) (This)->lpVtbl->QueryServiceGatewayInfo(This,ppDSMCCList,puiCount)
173 #define IPMT_RegisterForNextTable(This,hNextTableAvailable) (This)->lpVtbl->RegisterForNextTable(This,hNextTableAvailable)
174 #define IPMT_RegisterForWhenCurrent(This,hNextTableIsCurrent) (This)->lpVtbl->RegisterForWhenCurrent(This,hNextTableIsCurrent)
175 #endif /*COBJMACROS*/
176 
177 #undef  INTERFACE
178 #define INTERFACE IGenericDescriptor
179 #ifdef __GNUC__
180 #warning COM interfaces layout in this header has not been verified.
181 #warning COM interfaces with incorrect layout may not work at all.
182 __MINGW_BROKEN_INTERFACE(INTERFACE)
183 #endif
DECLARE_INTERFACE_(IGenericDescriptor,IUnknown)184 DECLARE_INTERFACE_(IGenericDescriptor,IUnknown)
185 {
186     BEGIN_INTERFACE
187 
188     /* IUnknown methods */
189     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
190     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
191     STDMETHOD_(ULONG, Release)(THIS) PURE;
192 
193     /* IGenericDescriptor methods */
194     STDMETHOD_(HRESULT,GetBody)(THIS_ BYTE **ppbVal) PURE;
195     STDMETHOD_(HRESULT,GetLength)(THIS_ BYTE *pbVal) PURE;
196     STDMETHOD_(HRESULT,GetTag)(THIS_ BYTE *pbVal) PURE;
197     STDMETHOD_(HRESULT,Initialize)(THIS_ BYTE *pbDesc,BYTE bCount) PURE;
198 
199     END_INTERFACE
200 };
201 #ifdef COBJMACROS
202 #define IGenericDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
203 #define IGenericDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
204 #define IGenericDescriptor_Release(This) (This)->lpVtbl->Release(This)
205 #define IGenericDescriptor_GetBody(This,ppbVal) (This)->lpVtbl->GetBody(This,ppbVal)
206 #define IGenericDescriptor_GetLength(This,pbVal) (This)->lpVtbl->GetLength(This,pbVal)
207 #define IGenericDescriptor_GetTag(This,pbVal) (This)->lpVtbl->GetTag(This,pbVal)
208 #define IGenericDescriptor_Initialize(This,pbDesc,bCount) (This)->lpVtbl->Initialize(This,pbDesc,bCount)
209 #endif /*COBJMACROS*/
210 
211 #undef  INTERFACE
212 #define INTERFACE ITSDT
213 #ifdef __GNUC__
214 #warning COM interfaces layout in this header has not been verified.
215 #warning COM interfaces with incorrect layout may not work at all.
216 __MINGW_BROKEN_INTERFACE(INTERFACE)
217 #endif
DECLARE_INTERFACE_(ITSDT,IUnknown)218 DECLARE_INTERFACE_(ITSDT,IUnknown)
219 {
220     BEGIN_INTERFACE
221 
222     /* IUnknown methods */
223     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
224     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
225     STDMETHOD_(ULONG, Release)(THIS) PURE;
226 
227     /* ITSDT methods */
228     STDMETHOD_(HRESULT,ConvertNextToCurrent)(THIS) PURE;
229     STDMETHOD_(HRESULT,GetCountOfTableDescriptors)(THIS_ DWORD *pdwVal) PURE;
230     STDMETHOD_(HRESULT,GetNextTable)(THIS_ ITSDT **ppTSDT) PURE;
231     STDMETHOD_(HRESULT,GetTableDescriptorByIndex)(THIS_ DWORD dwIndex,IGenericDescriptor **ppDescriptor) PURE;
232     STDMETHOD_(HRESULT,GetTableDescriptorByTag)(THIS_ BYTE bTag,DWORD *pdwCookie,IGenericDescriptor **ppDescriptor) PURE;
233     STDMETHOD_(HRESULT,GetVersionNumber)(THIS_ BYTE *pbVal) PURE;
234     STDMETHOD_(HRESULT,Initialize)(THIS_ ISectionList *pSectionList,IMpeg2Data *pMPEGData) PURE;
235     STDMETHOD_(HRESULT,RegisterForNextTable)(THIS_ HANDLE hNextTableAvailable) PURE;
236     STDMETHOD_(HRESULT,RegisterForWhenCurrent)(THIS_ HANDLE hNextTableIsCurrent) PURE;
237 
238     END_INTERFACE
239 };
240 #ifdef COBJMACROS
241 #define ITSDT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
242 #define ITSDT_AddRef(This) (This)->lpVtbl->AddRef(This)
243 #define ITSDT_Release(This) (This)->lpVtbl->Release(This)
244 #define ITSDT_ConvertNextToCurrent() (This)->lpVtbl->ConvertNextToCurrent(This)
245 #define ITSDT_GetCountOfTableDescriptors(This,pdwVal) (This)->lpVtbl->GetCountOfTableDescriptors(This,pdwVal)
246 #define ITSDT_GetNextTable(This,ppTSDT) (This)->lpVtbl->GetNextTable(This,ppTSDT)
247 #define ITSDT_GetTableDescriptorByIndex(This,dwIndex,ppDescriptor) (This)->lpVtbl->GetTableDescriptorByIndex(This,dwIndex,ppDescriptor)
248 #define ITSDT_GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor) (This)->lpVtbl->GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor)
249 #define ITSDT_GetVersionNumber(This,pbVal) (This)->lpVtbl->GetVersionNumber(This,pbVal)
250 #define ITSDT_Initialize(This,pSectionList,pMPEGData) (This)->lpVtbl->Initialize(This,pSectionList,pMPEGData)
251 #define ITSDT_RegisterForNextTable(This,hNextTableAvailable) (This)->lpVtbl->RegisterForNextTable(This,hNextTableAvailable)
252 #define ITSDT_RegisterForWhenCurrent(This,hNextTableIsCurrent) (This)->lpVtbl->RegisterForWhenCurrent(This,hNextTableIsCurrent)
253 #endif /*COBJMACROS*/
254 
255 #undef  INTERFACE
256 #define INTERFACE ICAT
DECLARE_INTERFACE_(ICAT,IUnknown)257 DECLARE_INTERFACE_(ICAT,IUnknown)
258 {
259     BEGIN_INTERFACE
260 
261     /* IUnknown methods */
262     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
263     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
264     STDMETHOD_(ULONG, Release)(THIS) PURE;
265 
266     /* ICAT methods */
267     STDMETHOD_(HRESULT,ConvertNextToCurrent)(THIS) PURE;
268     STDMETHOD_(HRESULT,GetCountOfTableDescriptors)(THIS_ DWORD *pdwVal) PURE;
269     STDMETHOD_(HRESULT,GetNextTable)(THIS_ DWORD dwTimeout,ICAT **ppCAT) PURE;
270     STDMETHOD_(HRESULT,GetTableDescriptorByIndex)(THIS_ DWORD dwIndex,IGenericDescriptor **ppDescriptor) PURE;
271     STDMETHOD_(HRESULT,GetTableDescriptorByTag)(THIS_ BYTE bTag,DWORD *pdwCookie,IGenericDescriptor **ppDescriptor) PURE;
272     STDMETHOD_(HRESULT,GetVersionNumber)(THIS_ BYTE *pbVal) PURE;
273     STDMETHOD_(HRESULT,Initialize)(THIS_ ISectionList *pSectionList,IMpeg2Data *pMPEGData) PURE;
274     STDMETHOD_(HRESULT,RegisterForNextTable)(THIS_ HANDLE hNextTableAvailable) PURE;
275     STDMETHOD_(HRESULT,RegisterForWhenCurrent)(THIS_ HANDLE hNextTableIsCurrent) PURE;
276 
277     END_INTERFACE
278 };
279 #ifdef COBJMACROS
280 #define ICAT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
281 #define ICAT_AddRef(This) (This)->lpVtbl->AddRef(This)
282 #define ICAT_Release(This) (This)->lpVtbl->Release(This)
283 #define ICAT_ConvertNextToCurrent() (This)->lpVtbl->ConvertNextToCurrent(This)
284 #define ICAT_GetCountOfTableDescriptors(This,pdwVal) (This)->lpVtbl->GetCountOfTableDescriptors(This,pdwVal)
285 #define ICAT_GetNextTable(This,dwTimeout,ppCAT) (This)->lpVtbl->GetNextTable(This,dwTimeout,ppCAT)
286 #define ICAT_GetTableDescriptorByIndex(This,dwIndex,ppDescriptor) (This)->lpVtbl->GetTableDescriptorByIndex(This,dwIndex,ppDescriptor)
287 #define ICAT_GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor) (This)->lpVtbl->GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor)
288 #define ICAT_GetVersionNumber(This,pbVal) (This)->lpVtbl->GetVersionNumber(This,pbVal)
289 #define ICAT_Initialize(This,pSectionList,pMPEGData) (This)->lpVtbl->Initialize(This,pSectionList,pMPEGData)
290 #define ICAT_RegisterForNextTable(This,hNextTableAvailable) (This)->lpVtbl->RegisterForNextTable(This,hNextTableAvailable)
291 #define ICAT_RegisterForWhenCurrent(This,hNextTableIsCurrent) (This)->lpVtbl->RegisterForWhenCurrent(This,hNextTableIsCurrent)
292 #endif /*COBJMACROS*/
293 
294 #endif /*__MPEG2PSIPARSER_H__*/
295