mirror of https://github.com/UMSKT/xpmgr.git
299 lines
8.9 KiB
Plaintext
299 lines
8.9 KiB
Plaintext
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Module Name:
|
|
//
|
|
// Mpeg2PsiParser.idl
|
|
//
|
|
// Abstract:
|
|
//
|
|
// Interface definitions for the MPEG-2 PSI parsing functionality
|
|
//
|
|
// Notes:
|
|
//
|
|
// This IDL file is not built independently, but is included and built
|
|
// in the master IDL file DTVParse.idl
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
import "wtypes.idl";
|
|
import "mpeg2structs.idl";
|
|
import "mpeg2data.idl";
|
|
|
|
// Forward interface declarations
|
|
interface ISectionList;
|
|
interface IMpeg2Data;
|
|
|
|
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// IGenericDescriptor Interface
|
|
//
|
|
////////////////////////////////////
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(6A5918F8-A77A-4f61-AED0-5702BDCDA3E6),
|
|
pointer_default(unique)
|
|
]
|
|
interface IGenericDescriptor : IUnknown
|
|
{
|
|
HRESULT Initialize([in] BYTE * pbDesc,
|
|
[in] INT bCount);
|
|
|
|
HRESULT GetTag([out] BYTE * pbVal);
|
|
|
|
HRESULT GetLength([out] BYTE * pbVal);
|
|
|
|
HRESULT GetBody([out] BYTE ** ppbVal);
|
|
};
|
|
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// IGenericDescriptor2 Interface mainly for PBDA with 16-bit descriptor length
|
|
//
|
|
////////////////////////////////////
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(BF02FB7E-9792-4e10-A68D-033A2CC246A5),
|
|
pointer_default(unique)
|
|
]
|
|
interface IGenericDescriptor2 : IGenericDescriptor
|
|
{
|
|
HRESULT Initialize([in] BYTE * pbDesc,
|
|
[in] WORD wCount);
|
|
|
|
HRESULT GetLength([out] WORD * pwVal);
|
|
|
|
};
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// IPAT Interface
|
|
//
|
|
////////////////////////////////////
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(6623B511-4B5F-43c3-9A01-E8FF84188060),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPAT : IUnknown
|
|
{
|
|
typedef struct
|
|
{
|
|
WORD wProgramNumber;
|
|
WORD wProgramMapPID;
|
|
} ProgramElement;
|
|
|
|
HRESULT Initialize([in] ISectionList * pSectionList,
|
|
[in] IMpeg2Data * pMPEGData);
|
|
|
|
HRESULT GetTransportStreamId([out] WORD * pwVal);
|
|
|
|
HRESULT GetVersionNumber([out] BYTE * pbVal);
|
|
|
|
HRESULT GetCountOfRecords([out] DWORD * pdwVal);
|
|
|
|
HRESULT GetRecordProgramNumber([in] DWORD dwIndex,
|
|
[out] WORD * pwVal);
|
|
|
|
HRESULT GetRecordProgramMapPid([in] DWORD dwIndex,
|
|
[out] WORD * pwVal);
|
|
|
|
HRESULT FindRecordProgramMapPid([in] WORD wProgramNumber,
|
|
[out] WORD * pwVal);
|
|
|
|
HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable);
|
|
|
|
HRESULT GetNextTable([out] IPAT ** ppPAT);
|
|
|
|
HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent);
|
|
|
|
HRESULT ConvertNextToCurrent(void);
|
|
};
|
|
|
|
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// ICAT Interface
|
|
//
|
|
////////////////////////////////////
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(7C6995FB-2A31-4bd7-953E-B1AD7FB7D31C),
|
|
pointer_default(unique)
|
|
]
|
|
interface ICAT : IUnknown
|
|
{
|
|
HRESULT Initialize([in] ISectionList * pSectionList,
|
|
[in] IMpeg2Data * pMPEGData);
|
|
|
|
HRESULT GetVersionNumber([out] BYTE * pbVal);
|
|
|
|
HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal);
|
|
|
|
HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex,
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT GetTableDescriptorByTag([in] BYTE bTag,
|
|
[in, out] DWORD * pdwCookie, // OPTIONAL
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable);
|
|
|
|
HRESULT GetNextTable([in] DWORD dwTimeout,
|
|
[out] ICAT ** ppCAT);
|
|
|
|
HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent);
|
|
|
|
HRESULT ConvertNextToCurrent(void);
|
|
};
|
|
|
|
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// IPMT Interface
|
|
//
|
|
////////////////////////////////////
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(01F3B398-9527-4736-94DB-5195878E97A8),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPMT : IUnknown
|
|
{
|
|
HRESULT Initialize([in] ISectionList * pSectionList,
|
|
[in] IMpeg2Data * pMPEGData);
|
|
|
|
HRESULT GetProgramNumber([out] WORD * pwVal);
|
|
|
|
HRESULT GetVersionNumber([out] BYTE * pbVal);
|
|
|
|
HRESULT GetPcrPid([out] PID * pPidVal);
|
|
|
|
HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal);
|
|
|
|
HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex,
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT GetTableDescriptorByTag([in] BYTE bTag,
|
|
[in, out] DWORD * pdwCookie, // OPTIONAL
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT GetCountOfRecords([out] WORD * pwVal);
|
|
|
|
HRESULT GetRecordStreamType([in] DWORD dwRecordIndex,
|
|
[out] BYTE * pbVal);
|
|
|
|
HRESULT GetRecordElementaryPid([in] DWORD dwRecordIndex,
|
|
[out] PID * pPidVal);
|
|
|
|
HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex,
|
|
[out] DWORD * pdwVal);
|
|
|
|
HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex,
|
|
[in] DWORD dwDescIndex,
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex,
|
|
[in] BYTE bTag,
|
|
[in, out] DWORD * pdwCookie, // OPTIONAL
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT QueryServiceGatewayInfo([out] DSMCC_ELEMENT ** ppDSMCCList,
|
|
[out] UINT * puiCount);
|
|
|
|
HRESULT QueryMPEInfo([out] MPE_ELEMENT ** ppMPEList,
|
|
[out] UINT * puiCount);
|
|
|
|
HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable);
|
|
|
|
HRESULT GetNextTable([out] IPMT ** ppPMT);
|
|
|
|
HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent);
|
|
|
|
HRESULT ConvertNextToCurrent(void);
|
|
};
|
|
|
|
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// ITSDT Interface
|
|
//
|
|
////////////////////////////////////
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(D19BDB43-405B-4a7c-A791-C89110C33165),
|
|
pointer_default(unique)
|
|
]
|
|
interface ITSDT : IUnknown
|
|
{
|
|
HRESULT Initialize([in] ISectionList * pSectionList,
|
|
[in] IMpeg2Data * pMPEGData);
|
|
|
|
HRESULT GetVersionNumber([out] BYTE * pbVal);
|
|
|
|
HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal);
|
|
|
|
HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex,
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT GetTableDescriptorByTag([in] BYTE bTag,
|
|
[in, out] DWORD * pdwCookie, // OPTIONAL
|
|
[out] IGenericDescriptor ** ppDescriptor);
|
|
|
|
HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable);
|
|
|
|
HRESULT GetNextTable([out] ITSDT ** ppTSDT);
|
|
|
|
HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent);
|
|
|
|
HRESULT ConvertNextToCurrent(void);
|
|
};
|
|
|
|
////////////////////////////////////
|
|
//
|
|
// IPSITables Interface
|
|
//
|
|
////////////////////////////////////
|
|
[
|
|
object,
|
|
uuid(919F24C5-7B14-42ac-A4B0-2AE08DAF00AC),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPSITables : IUnknown
|
|
{
|
|
// The parameters are basically the ones from the event EVENTID_PSITable
|
|
// defined in bdamedia.h
|
|
// dwPara1 - TSID, ONID|TSID for DVB EIT
|
|
// dwPara2 - TID|PID
|
|
// dwPara3 - dwHashedVersion
|
|
// dwPara4 - program number for PMT, Segment#|SID for DVB EIT, but not used for others
|
|
HRESULT GetTable([in] DWORD dwTSID,
|
|
[in] DWORD dwTID_PID,
|
|
[in] DWORD dwHashedVer,
|
|
[in] DWORD dwPara4,
|
|
[out] IUnknown **ppIUnknown);
|
|
|
|
};
|
|
|