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 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 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 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 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 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 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