diff options
Diffstat (limited to 'dxsdk/Include/DShowIDL/Mpeg2Data.idl')
-rw-r--r-- | dxsdk/Include/DShowIDL/Mpeg2Data.idl | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/dxsdk/Include/DShowIDL/Mpeg2Data.idl b/dxsdk/Include/DShowIDL/Mpeg2Data.idl new file mode 100644 index 00000000..6762c49c --- /dev/null +++ b/dxsdk/Include/DShowIDL/Mpeg2Data.idl @@ -0,0 +1,303 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Module Name: +// +// Mpeg2Data.idl +// +// Abstract: +// +// Main Mpeg2Data Library Definition, and interface definitions for +// the MPEG-2 Section and Table acquisition functionality +// +///////////////////////////////////////////////////////////////////////////// + + // Import Files +import "oaidl.idl"; +import "ocidl.idl"; +import "bdaiface.idl"; + + // Specify single byte packing alignment +#pragma pack(push) +#pragma pack(1) + + // Forward interface declarations +interface ISectionList; +interface IMpeg2Stream; + + // Declare well known PID/TID values for MPEG-2 tables +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") + + // Declare well known PID/TID values for ATSC tables +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_RRT_PID 0x1FFB") +cpp_quote("#define ATSC_RRT_TID 0xCA") + +cpp_quote("#define ATSC_EIT_TID 0xCB") + +cpp_quote("#define ATSC_ETT_TID 0xCC") + +cpp_quote("#define ATSC_STT_PID 0x1FFB") +cpp_quote("#define ATSC_STT_TID 0xCD") + +cpp_quote("#define ATSC_PIT_TID 0xD0") + + // Declare well known PID/TID values for DVB tables +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 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") + + // Declare well known PID/TID values for ISDB tables +cpp_quote("#define ISDB_DCT_PID 0x0017") +cpp_quote("#define ISDB_DCT_TID 0xC0") + +cpp_quote("#define ISDB_LIT_PID 0x0020") +cpp_quote("#define ISDB_LIT_TID 0xD0") + +cpp_quote("#define ISDB_ERT_PID 0x0021") +cpp_quote("#define ISDB_ERT_TID 0xD1") + +cpp_quote("#define ISDB_ITT_TID 0xD2") + +cpp_quote("#define ISDB_DLT_TID 0xC1") + +cpp_quote("#define ISDB_PCAT_PID 0x0022") +cpp_quote("#define ISDB_PCAT_TID 0xC2") + +cpp_quote("#define ISDB_SDTT_PID 0x0023") +cpp_quote("#define ISDB_SDTT_TID 0xC3") + + + +//////////////////////////////////// +// +// Mpeg2DataLib Library +// +//////////////////////////////////// + +cpp_quote("class DECLSPEC_UUID(\"DBAF6C1B-B6A4-4898-AE65-204F0D9509A1\") Mpeg2DataLib;") + +[ + uuid(DBAF6C1B-B6A4-4898-AE65-204F0D9509A1), + version(1.0) +] +library Mpeg2DataLib +{ + importlib("stdole32.tlb"); + importlib("stdole2.tlb"); + + // Include related interface definition files so that everything ends up + // in the same library. Note that the order in which these files are + // included is important, so do not rearrange them arbitrarily +#include "Mpeg2Structs.idl" +#ifdef MPEG2_FUTURE_CODE // Not available in DX9 +#include "Mpeg2PsiParser.idl" +#include "AtscPsipParser.idl" +#include "DvbSiParser.idl" +#endif + + + + //////////////////////////////////// + // + // IMpeg2Data Interface + // + //////////////////////////////////// + + [ + object, + uuid(9B396D40-F380-4e3c-A514-1A82BF6EBFE6), + pointer_default(unique) + ] + interface IMpeg2Data : IUnknown + { + HRESULT GetSection([in] PID pid, + [in] TID tid, + [in] PMPEG2_FILTER pFilter, // OPTIONAL + [in] DWORD dwTimeout, + [out] ISectionList ** ppSectionList); + + HRESULT GetTable([in] PID pid, + [in] TID tid, + [in] PMPEG2_FILTER pFilter, // OPTIONAL + [in] DWORD dwTimeout, + [out] ISectionList ** ppSectionList); + + HRESULT GetStreamOfSections([in] PID pid, + [in] TID tid, + [in] PMPEG2_FILTER pFilter, // OPTIONAL + [in] HANDLE hDataReadyEvent, + [out] IMpeg2Stream ** ppMpegStream); + }; + + + + //////////////////////////////////// + // + // ISectionList Interface + // + //////////////////////////////////// + + [ + object, + uuid(AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0), + pointer_default(unique) + ] + interface ISectionList : IUnknown + { + HRESULT Initialize([in] MPEG_REQUEST_TYPE requestType, + [in] IMpeg2Data * pMpeg2Data, + [in] PMPEG_CONTEXT pContext, + [in] PID pid, + [in] TID tid, + [in] PMPEG2_FILTER pFilter, // OPTIONAL + [in] DWORD timeout, + [in] HANDLE hDoneEvent); // OPTIONAL + + HRESULT InitializeWithRawSections([in] PMPEG_PACKET_LIST pmplSections); + + HRESULT CancelPendingRequest(void); + + HRESULT GetNumberOfSections([out] WORD * pCount); + + HRESULT GetSectionData([in] WORD sectionNumber, + [out] DWORD * pdwRawPacketLength, + [out] PSECTION * ppSection); + + HRESULT GetProgramIdentifier(PID * pPid); + + HRESULT GetTableIdentifier(TID * pTableId); + }; + + + + //////////////////////////////////// + // + // IMpeg2Stream Interface + // + //////////////////////////////////// + + [ + object, + uuid(400CC286-32A0-4ce4-9041-39571125A635), + pointer_default(unique) + ] + interface IMpeg2Stream : IUnknown + { + HRESULT Initialize([in] MPEG_REQUEST_TYPE requestType, + [in] IMpeg2Data * pMpeg2Data, + [in] PMPEG_CONTEXT pContext, + [in] PID pid, + [in] TID tid, + [in] PMPEG2_FILTER pFilter, // OPTIONAL + [in] HANDLE hDataReadyEvent); + + HRESULT SupplyDataBuffer([in] PMPEG_STREAM_BUFFER pStreamBuffer); + }; + + + + //////////////////////////////////// + // + // SectionList CoClass + // + //////////////////////////////////// + + [ + uuid(73DA5D04-4347-45d3-A9DC-FAE9DDBE558D) + ] + coclass SectionList + { + [default] interface ISectionList; + }; + + + + //////////////////////////////////// + // + // Mpeg2Stream CoClass + // + //////////////////////////////////// + + [ + uuid(F91D96C7-8509-4d0b-AB26-A0DD10904BB7) + ] + coclass Mpeg2Stream + { + [default] interface IMpeg2Stream; + }; + + + + //////////////////////////////////// + // + // Mpeg2Data CoClass + // + //////////////////////////////////// + + [ + uuid(C666E115-BB62-4027-A113-82D643FE2D99) + ] + coclass Mpeg2Data + { + [default] interface IMpeg2Data; +#ifdef MPEG2_FUTURE_CODE // Not available in DX9 + interface IAtscPsipParser; + interface IDvbSiParser; +#endif + }; +}; + + + + // Return to default packing +#pragma pack(pop) |