| /* | |
| * Copyright (C) 2025 Biswapriyo Nath | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| import "oaidl.idl"; | |
| import "ocidl.idl"; | |
| import "bdaiface.idl"; | |
| import "mpeg2structs.idl"; | |
| interface ISectionList; | |
| interface IMpeg2Stream; | |
| cpp_quote("#define MPEG_PAT_PID 0x0000") | |
| cpp_quote("#define MPEG_PAT_TID 0x00") | |
| cpp_quote("#define MPEG_CAT_PID 0x0001") | |
| cpp_quote("#define MPEG_CAT_TID 0x01") | |
| cpp_quote("#define MPEG_PMT_TID 0x02") | |
| cpp_quote("#define MPEG_TSDT_PID 0x0002") | |
| cpp_quote("#define MPEG_TSDT_TID 0x03") | |
| cpp_quote("#define ATSC_MGT_PID 0x1ffb") | |
| cpp_quote("#define ATSC_MGT_TID 0xc7") | |
| cpp_quote("#define ATSC_VCT_PID 0x1ffb") | |
| cpp_quote("#define ATSC_VCT_TERR_TID 0xc8") | |
| cpp_quote("#define ATSC_VCT_CABL_TID 0xc9") | |
| cpp_quote("#define ATSC_EIT_TID 0xcb") | |
| cpp_quote("#define ATSC_ETT_TID 0xcc") | |
| cpp_quote("#define ATSC_RRT_TID 0xca") | |
| cpp_quote("#define ATSC_RRT_PID 0x1ffb") | |
| cpp_quote("#define ATSC_STT_PID 0x1ffb") | |
| cpp_quote("#define ATSC_STT_TID 0xcd") | |
| cpp_quote("#define ATSC_PIT_TID 0xd0") | |
| cpp_quote("#define DVB_NIT_PID 0x0010") | |
| cpp_quote("#define DVB_NIT_ACTUAL_TID 0x40") | |
| cpp_quote("#define DVB_NIT_OTHER_TID 0x41") | |
| cpp_quote("#define DVB_SDT_PID 0x0011") | |
| cpp_quote("#define DVB_SDT_ACTUAL_TID 0x42") | |
| cpp_quote("#define DVB_SDT_OTHER_TID 0x46") | |
| cpp_quote("#define DVB_BAT_PID 0x0011") | |
| cpp_quote("#define DVB_BAT_TID 0x4a") | |
| cpp_quote("#define DVB_EIT_PID 0x0012") | |
| cpp_quote("#define DVB_EIT_ACTUAL_TID 0x4e") | |
| cpp_quote("#define DVB_EIT_OTHER_TID 0x4f") | |
| cpp_quote("#define DVB_RST_PID 0x0013") | |
| cpp_quote("#define DVB_RST_TID 0x71") | |
| cpp_quote("#define DVB_TDT_PID 0x0014") | |
| cpp_quote("#define DVB_TDT_TID 0x70") | |
| cpp_quote("#define DVB_ST_PID_16 0x0010") | |
| cpp_quote("#define DVB_ST_PID_17 0x0011") | |
| cpp_quote("#define DVB_ST_PID_18 0x0012") | |
| cpp_quote("#define DVB_ST_PID_19 0x0013") | |
| cpp_quote("#define DVB_ST_PID_20 0x0014") | |
| cpp_quote("#define DVB_ST_TID 0x72") | |
| cpp_quote("#define ISDB_ST_TID 0x72") | |
| cpp_quote("#define DVB_TOT_PID 0x0014") | |
| cpp_quote("#define DVB_TOT_TID 0x73") | |
| cpp_quote("#define DVB_DIT_PID 0x001e") | |
| cpp_quote("#define DVB_DIT_TID 0x7e") | |
| cpp_quote("#define DVB_SIT_PID 0x001f") | |
| cpp_quote("#define DVB_SIT_TID 0x7f") | |
| cpp_quote("#define ISDB_EMM_TID 0x85") | |
| cpp_quote("#define ISDB_BIT_PID 0x0024") | |
| cpp_quote("#define ISDB_BIT_TID 0xc4") | |
| cpp_quote("#define ISDB_NBIT_PID 0x0025") | |
| cpp_quote("#define ISDB_NBIT_MSG_TID 0xc5") | |
| cpp_quote("#define ISDB_NBIT_REF_TID 0xc6") | |
| cpp_quote("#define ISDB_LDT_PID 0x0025") | |
| cpp_quote("#define ISDB_LDT_TID 0xc7") | |
| cpp_quote("#define ISDB_SDTT_PID 0x0023") | |
| cpp_quote("#define ISDB_SDTT_ALT_PID 0x0028") | |
| cpp_quote("#define ISDB_SDTT_TID 0xc3") | |
| cpp_quote("#define ISDB_CDT_PID 0x0029") | |
| cpp_quote("#define ISDB_CDT_TID 0xc8") | |
| cpp_quote("#define SCTE_EAS_TID 0xd8") | |
| cpp_quote("#define SCTE_EAS_IB_PID 0x1ffb") | |
| cpp_quote("#define SCTE_EAS_OOB_PID 0x1ffc") | |
| [ | |
| object, | |
| uuid(bdcdd913-9ecd-4fb2-81ae-adf747ea75a5), | |
| pointer_default(unique) | |
| ] | |
| interface IMpeg2TableFilter : IUnknown | |
| { | |
| HRESULT AddPID(PID p); | |
| HRESULT AddTable(PID p, TID t); | |
| HRESULT AddExtension(PID p, TID t, TEID e); | |
| HRESULT RemovePID(PID p); | |
| HRESULT RemoveTable(PID p, TID t); | |
| HRESULT RemoveExtension(PID p, TID t, TEID e); | |
| } | |
| [ | |
| uuid(752845f1-758f-4c83-a043-4270c593308e) | |
| ] | |
| coclass Mpeg2TableFilter | |
| { | |
| [default] interface IMpeg2TableFilter; | |
| } | |
| typedef struct Mpeg2TableSampleHdr | |
| { | |
| BYTE SectionCount; | |
| BYTE Reserved[3]; | |
| long SectionOffsets[]; | |
| } Mpeg2TableSampleHdr; | |
| [ | |
| uuid(dbaf6c1b-b6a4-4898-ae65-204f0d9509a1), | |
| version(1.0) | |
| ] | |
| library Mpeg2DataLib | |
| { | |
| importlib("stdole32.tlb"); | |
| importlib("stdole2.tlb"); | |
| [ | |
| object, | |
| uuid(9b396d40-f380-4e3c-a514-1a82bf6ebfe6), | |
| pointer_default(unique) | |
| ] | |
| interface IMpeg2Data : IUnknown | |
| { | |
| HRESULT GetSection( | |
| [in] PID pid, | |
| [in] TID tid, | |
| [in] PMPEG2_FILTER filter, | |
| [in] DWORD timeout, | |
| [out] ISectionList **section_list); | |
| HRESULT GetTable( | |
| [in] PID pid, | |
| [in] TID tid, | |
| [in] PMPEG2_FILTER filter, | |
| [in] DWORD timeout, | |
| [out] ISectionList **section_list); | |
| HRESULT GetStreamOfSections( | |
| [in] PID pid, | |
| [in] TID tid, | |
| [in] PMPEG2_FILTER filter, | |
| [in] HANDLE data_ready_event, | |
| [out] IMpeg2Stream **mpeg_stream); | |
| } | |
| [ | |
| object, | |
| uuid(afec1eb5-2a64-46c6-bf4b-ae3ccb6afdb0), | |
| pointer_default(unique) | |
| ] | |
| interface ISectionList : IUnknown | |
| { | |
| HRESULT Initialize( | |
| [in] MPEG_REQUEST_TYPE request_type, | |
| [in] IMpeg2Data *mpeg2_data, | |
| [in] PMPEG_CONTEXT context, | |
| [in] PID pid, | |
| [in] TID tid, | |
| [in] PMPEG2_FILTER filter, | |
| [in] DWORD timeout, | |
| [in] HANDLE done_event); | |
| HRESULT InitializeWithRawSections( | |
| [in] PMPEG_PACKET_LIST mpl_sections); | |
| HRESULT CancelPendingRequest(void); | |
| HRESULT GetNumberOfSections( | |
| [out] WORD *count); | |
| HRESULT GetSectionData( | |
| [in] WORD section_number, | |
| [out] DWORD *raw_packet_length, | |
| [out] PSECTION *section); | |
| HRESULT GetProgramIdentifier(PID *pid); | |
| HRESULT GetTableIdentifier(TID *tid); | |
| } | |
| [ | |
| object, | |
| uuid(400cc286-32a0-4ce4-9041-39571125a635), | |
| pointer_default(unique) | |
| ] | |
| interface IMpeg2Stream : IUnknown | |
| { | |
| HRESULT Initialize( | |
| [in] MPEG_REQUEST_TYPE request_type, | |
| [in] IMpeg2Data *mpeg2_data, | |
| [in] PMPEG_CONTEXT context, | |
| [in] PID pid, | |
| [in] TID tid, | |
| [in] PMPEG2_FILTER filter, | |
| [in] HANDLE data_ready_event); | |
| HRESULT SupplyDataBuffer( | |
| [in] PMPEG_STREAM_BUFFER stream_buffer); | |
| } | |
| [ | |
| uuid(73da5d04-4347-45d3-a9dc-fae9ddbe558d) | |
| ] | |
| coclass SectionList | |
| { | |
| [default] interface ISectionList; | |
| } | |
| [ | |
| uuid(f91d96c7-8509-4d0b-ab26-a0dd10904bb7) | |
| ] | |
| coclass Mpeg2Stream | |
| { | |
| [default] interface IMpeg2Stream; | |
| } | |
| [ | |
| uuid(c666e115-bb62-4027-a113-82d643fe2d99) | |
| ] | |
| coclass Mpeg2Data | |
| { | |
| [default] interface IMpeg2Data; | |
| } | |
| } /* Mpeg2DataLib */ |