//--------------------------------------------------------------------- // // Copyright (c) 1999-2001 Microsoft Corporation // // BDATIF.idl // //--------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.") 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; }; };