windows-nt/Source/XPSP1/NT/public/sdk/inc/bdatif.idl
2020-09-26 16:20:57 +08:00

634 lines
20 KiB
Plaintext

//---------------------------------------------------------------------
//
// Copyright (c) 1999 Microsoft Corporation
//
// BDATIF.idl
//
//---------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#pragma warning(disable:4201) /* Nameless struct/union */")
cpp_quote("#endif")
cpp_quote("#if ( _MSC_VER >= 1020 )")
cpp_quote("#pragma once")
cpp_quote("#endif")
//---------------------------------------------------------------------
// IUnknown import idl
//---------------------------------------------------------------------
#ifndef DO_NO_IMPORTS
import "unknwn.idl";
import "strmif.idl";
import "tuner.idl";
#endif
interface IMPEG2_TIF_CONTROL;
interface IATSCChannelInfo;
//******************************************************************************
//
// IMPEG2_TIF_CONTROL interface
//
// Implemented by the Microsoft ATSC/DVB BDA Network Provider
//
// Used by a transport information filter (TIF) to request table
// sections carried on specific PIDs within the transport stream.
// The Network Provider Filter will, in turn, do the necessary
// control on the Demux Filter. All sections are delivered as comlete
// mpeg2 table sections via the TIF's connection to the Demux Filter.
//
[
object,
uuid(F9BAC2F9-4149-4916-B2EF-FAA202326862),
helpstring("BDA Network Provider Inteface for DVB/ATSC Transport Information Filters"),
pointer_default(unique)
]
interface IMPEG2_TIF_CONTROL : IUnknown
{
[helpstring("Used to register a transport analyzer with the Network Provider")]
HRESULT
RegisterTIF (
[in] IUnknown * pUnkTIF,
[in, out] ULONG * ppvRegistrationContext
);
[helpstring("Used to unregister TIF with the Network Provider")]
HRESULT
UnregisterTIF (
[in] ULONG pvRegistrationContext
);
[helpstring("Used to add PSI/SI MPEG2 packet IDs to the TIF's data stream")]
HRESULT
AddPIDs (
[in] ULONG ulcPIDs,
[in] ULONG * pulPIDs
);
[helpstring("Used to remove PSI/SI MPEG2 packet IDs from the TIF's data stream")]
HRESULT
DeletePIDs (
[in] ULONG ulcPIDs,
[in] ULONG * pulPIDs
);
[helpstring("Returns the number of MPEG2 Packet IDs being filtered into the TIF's input data.")]
HRESULT
GetPIDCount (
[out] ULONG * pulcPIDs
);
[helpstring("Returns the the list of MPEG2 Packet IDs being filtered into the TIF's input data.")]
HRESULT
GetPIDs (
[out] ULONG * pulcPIDs,
[out] ULONG * pulPIDs
);
}
//******************************************************************************
//
// ITuneRequestInfo interface
//
// Implemented by a BDA transport information filter (TIF)
//
// Used by the BDA Network Provider to obtain network specific
// information about locating transport streams and aquiring
// services.
//
//
// GetLocatorData -
//
// GetComponentData -
//
// CreateComponentList -
//
// GetNextService -
//
// GetPreviouService -
//
// GetNextLocator -
//
// GetPreviousLocator -
//
[
object,
uuid(A3B152DF-7A90-4218-AC54-9830BEE8C0B6),
helpstring("Interface provided by the Mpeg2 Transport Information Filter to supply tuning details."),
pointer_default(unique)
]
interface ITuneRequestInfo : IUnknown
{
[helpstring("TIF fills in channel/program locator information for the given tune request.")]
HRESULT
GetLocatorData (
[in] ITuneRequest *Request
);
[helpstring("TIF fills in all network specific component data for the existing component list on the given tune request.")]
HRESULT
GetComponentData (
[in] ITuneRequest *CurrentRequest
);
[helpstring("TIF creates a complete component list and fills in all network specific component data on the given tune request")]
HRESULT
CreateComponentList (
[in] ITuneRequest *CurrentRequest
);
[helpstring("TIF creates a new TuneRequest with channel/program locator information for the next service.")]
HRESULT
GetNextProgram (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
[helpstring("TIF creates a new TuneRequest with channel/program locator information for the previous service.")]
HRESULT
GetPreviousProgram (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
[helpstring("TIF creates a new TuneRequest with locator information for the next transport stream.")]
HRESULT
GetNextLocator (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
[helpstring("TIF creates a new TuneRequest with locator information for the previous transport stream.")]
HRESULT
GetPreviousLocator (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
}
//******************************************************************************
//
// IGuideDataEvent
//
// This is the guide data event notification callback interface. The
// callback interface is registered on a transport analyzer's
// IConnectionPoint by the event consumer.
//
// The event consumer MUST NOT BLOCK THE CALLING THREAD.
//
// If the consumer requires additional information about the event, it
// should queue the event to a separate thread.
//
// {EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}
//
[
object,
uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
helpstring("Consumers of a guide data events must implement this callback interface."),
pointer_default(unique)
]
interface IGuideDataEvent : IUnknown
{
// Indicates that a complete set of guide data has been acquire from
// the current transport stream.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT GuideDataAcquired(
);
// Indicates that information about one or more programs changed.
//
// If varProgramDescriptionID is NULL then the consumer
// must get properties for all programs to determine which ones
// changed.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT ProgramChanged(
[in] VARIANT varProgramDescriptionID
);
// Indicates that information about one or more services changed.
//
// If varServiceDescriptionID is NULL then the consumer
// must get properties for all services to determine which ones
// changed.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT ServiceChanged(
[in] VARIANT varServiceDescriptionID
);
// Indicates that information about one or more schedule entries
// changed.
//
// If varScheduleEntryDescriptionID is NULL then the consumer
// must get properties for all schedule entries to determine which ones
// changed.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT ScheduleEntryChanged(
[in] VARIANT varScheduleEntryDescriptionID
);
// Indicates that the program with the given Description.ID
// has been deleted.
//
//
// Optional - Transport analyzer may supply this event. Consumer
// may return E_NOTIMPL.
//
HRESULT ProgramDeleted(
[in] VARIANT varProgramDescriptionID
);
// Indicates that the service with the given Description.ID
// has been deleted.
//
//
// Optional - Transport analyzer may supply this event. Consumer
// may return E_NOTIMPL.
//
HRESULT ServiceDeleted(
[in] VARIANT varServiceDescriptionID
);
// Indicates that the schedule entry with the given Description.ID
// has been deleted.
//
//
// Optional - Transport analyzer may supply this event. Consumer
// may return E_NOTIMPL.
//
HRESULT ScheduleDeleted(
[in] VARIANT varScheduleEntryDescriptionID
);
}
//******************************************************************************
//
// IGuideDataPropery
//
// {88EC5E58-BB73-41d6-99CE-66C524B8B591}
//
[
object,
uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
helpstring("Interface provided by a transport analyzer to represent a guide data property."),
pointer_default(unique)
]
interface IGuideDataProperty : IUnknown
{
[propget] HRESULT Name([out] BSTR *pbstrName);
[propget] HRESULT Language([out] long *idLang);
[propget] HRESULT Value([out] VARIANT *pvar);
}
//******************************************************************************
//
// IEnumGuideDataProperties
//
// {AE44423B-4571-475c-AD2C-F40A771D80EF}
//
[
object,
uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
helpstring("Interface provided by a transport analyzer to enumerate guide data properties."),
pointer_default(unique)
]
interface IEnumGuideDataProperties : IUnknown
{
HRESULT Next([in] unsigned long celt, [out] IGuideDataProperty **ppprop, [out] unsigned long *pcelt);
HRESULT Skip([in] unsigned long celt);
HRESULT Reset();
HRESULT Clone([out] IEnumGuideDataProperties **ppenum);
}
//******************************************************************************
//
// IEnumTuneRequests
//
// {1993299C-CED6-4788-87A3-420067DCE0C7}
//
[
object,
uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
helpstring("Interface provided by a transport analyzer to enumerate service tune requests ."),
pointer_default(unique)
]
interface IEnumTuneRequests : IUnknown
{
HRESULT Next([in] unsigned long celt, [out] ITuneRequest **ppprop, [out] unsigned long *pcelt);
HRESULT Skip([in] unsigned long celt);
HRESULT Reset();
HRESULT Clone([out] IEnumTuneRequests **ppenum);
}
//******************************************************************************
//
// IGuideData
//
// {61571138-5B01-43cd-AEAF-60B784A0BF93}
//
[
object,
uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
helpstring("Interface provided by a transport analyzer to supply guide data information."),
pointer_default(unique)
]
interface IGuideData : IUnknown
{
//-------------------------------------------------------------------------
//
// GetServices
// Returns an enumeration of tune requests for all services whose
// information is found in the current transport stream.
//
// Parameters
//
// IEnumTuneRequests **
// Location in which a reference to the resulting
// IEnumTuneRequests is placed. The caller must release
// this reference when finished with it.
//
// Comments
// This call is used to enumerate all services whose information
// can be found in the service descriptor table. Each tune request
// in the IEnumTuneRequest * contains the tune request including the
// locator data for the service.
//
[helpstring("Returns an enumeration of services whose information is found in the given transport stream")]
HRESULT
GetServices (
[out, retval] IEnumTuneRequests ** ppEnumTuneRequests
);
//-------------------------------------------------------------------------
//
// GetServiceProperties
// Returns an enumeration of all guide data properties for
// the service with the given Description.ID.
//
// Parameters
// ITuneRequest *
// Pointer to a tune request that contains information needed
// to indentify the requested transport stream.
// A NULL ITuneRequest * indicates that information about the
// current transport stream is requested.
//
// IEnumGuideDataProperties **
// Location in which a reference to the resulting
// IEnumGuideDataProperties is placed. The caller must release
// this reference when finished with it.
//
// Required Properties
// The following properties MUST be included in the returned
// property enumeration.
//
// Description.ID
// Uniquely identifies a service.
//
// Description.Name
// The default name to use for this service in the channel lineup.
//
// Description.Version
// Identifies the current version of the properties associated
// with this service.
//
// Provider.Name
// Name of the service provider (e.g. "KCTS")
//
// Provider.NetworkName
// Name of the network on which the service is provided.
// (e.g. "PBS")
//
// Service.TuneRequest
// Contains a tune request in the variant
//
//
[helpstring("Returns an enumeration of all guide data properties for the service specified by a tune request.")]
HRESULT
GetServiceProperties (
[in] ITuneRequest * pTuneRequest,
[out, retval] IEnumGuideDataProperties ** ppEnumProperties
);
//-------------------------------------------------------------------------
//
// GetProgramIDs
// Returns an enumeration of the unique identifiers (Description.ID)
// of programs with description contained in all transport
// streams
//
// Parameters
//
// IEnumVARIANT **
// Location in which a reference to the resulting
// IEnumVARIANT is placed. The caller must release
// this reference when finished with it.
//
// Comments
// This call is used to get a list of programs that have
// guide data properties in all transport streams.
// Each variant returned in the IEnumVARIANT * contains the
// unique Description.ID property for a program.
// Note that more than on transport stream may contain properties
// for the same program. In this case the properties should be
// merged.
//
[helpstring("Returns an enumeration of the Description.ID property for all programs on the given transport stream.")]
HRESULT
GetGuideProgramIDs (
[out, retval] IEnumVARIANT ** pEnumPrograms
);
//-------------------------------------------------------------------------
//
// GetProgramProperties
// Returns an enumeration of all guide data properties for
// the program with the given Description.ID.
//
// Parameters
// varProgramDescriptionID
// Variant containing the unique identifier for the program
// for which properties are requested.
//
// IEnumGuideDataProperties **
// Location in which a reference to the resulting
// IEnumGuideDataProperties is placed. The caller must release
// this reference when finished with it.
//
// Required Properties
// The following properties MUST be included in the returned
// property enumeration.
//
// Description.ID
// Uniquely identifies a program.
//
// Description.Version
// Identifies the current version of the properties associated
// with this program.
//
// Description.Title
// Human readable title of the program (e.g. "")
//
// Description.Long
// A description of the program.
//
[helpstring("Returns an enumeration of all guide data properties for the program with the given Description.ID.")]
HRESULT
GetProgramProperties (
[in] VARIANT varProgramDescriptionID,
[out, retval] IEnumGuideDataProperties ** ppEnumProperties
);
//-------------------------------------------------------------------------
//
// GetScheduleIDs
// Returns an enumeration of the unique identifiers (Description.ID)
// transport of schedule entries with description contained in the
// given transport stream.
//
// Parameters
//
// IEnumVARIANT **
// Location in which a reference to the resulting
// IEnumVARIANT is placed. The caller must release
// this reference when finished with it.
//
// Comments
// This call is used to get a list of schedule entries that have
// guide data properties in all transport streams.
// Each variant returned in the IEnumVARIANT * contains the
// unique Description.ID property for a schedule entry.
// Note that more than on transport stream may contain properties
// for the same schedule entry. In this case the properties
// should be merged.
//
[helpstring("Returns an enumeration of the Description.ID property for all schedule entries in the transport stream specified by a tune request.")]
HRESULT
GetScheduleEntryIDs (
[out, retval] IEnumVARIANT ** pEnumScheduleEntries
);
//-------------------------------------------------------------------------
//
// GetScheduleEntryProperties
// Returns an enumeration of all guide data properties for
// the schedule entry with the given Description.ID.
//
// Parameters
// varScheduleEntryDescriptionID
// Variant containing the unique identifier for the schedule
// entry for which properties are requested.
//
// IEnumGuideDataProperties **
// Location in which a reference to the resulting
// IEnumGuideDataProperties is placed. The caller must release
// this reference when finished with it.
//
// Required Properties
// The following properties MUST be included in the returned
// property enumeration.
//
// Description.ID
// Uniquely identifies a schedule entry.
//
// Description.Version
// Identifies the current version of the properties associated
// with this program.
//
// Time.Start
// The starting time and date of this schedule entry.
//
// Time.End
// The ending time and date of this schedule entry.
//
// Schedule.Program
// The Description.ID of the program that will play at the
// time specified by this schedule entry.
//
// Schedule.Service
// The Description.ID of the Service that carries the
// program that will play at the time specified by this
// schedule entry.
//
[helpstring("Returns an enumeration of all guide data properties for the schedule entry with the given Description.ID.")]
HRESULT
GetScheduleEntryProperties (
[in] VARIANT varScheduleEntryDescriptionID,
[out, retval] IEnumGuideDataProperties ** ppEnumProperties
);
}
//******************************************************************************
//
// IGuideDataLoader
//
// All Guide Data Loaders MUST implement this interface. It is how they are
// provided with the IGuideData interface that they will use.
//
// {4764ff7c-fa95-4525-af4d-d32236db9e38}
[
object,
uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
helpstring("IGuideDataLoader Interface"),
pointer_default(unique)
]
interface IGuideDataLoader : IUnknown
{
HRESULT Init([in] IGuideData *pGuideStore);
HRESULT Terminate();
};
[
uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
version(1.0),
helpstring("psisload 1.0 Type Library")
]
library PSISLOADLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
helpstring("TIFLoad Class")
]
coclass TIFLoad
{
interface IGuideDataLoader;
interface IGuideDataEvent;
};
};