skeleton updated, windows specific stuff added

This commit is contained in:
Fire-Head
2019-06-02 06:00:38 +03:00
parent 28fce310d5
commit b1f9e28cd1
237 changed files with 258817 additions and 437 deletions
+678
View File
@@ -0,0 +1,678 @@
//---------------------------------------------------------------------
//
// Copyright (c) 1999-2002 Microsoft Corporation
//
// BDATIF.idl
//
//---------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2002.")
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";
import "bdaiface.idl";
#endif
interface IMPEG2_TIF_CONTROL;
interface IATSCChannelInfo;
interface IMPEG2PIDMap;
//******************************************************************************
//
// IBDA_TIF_REGISTRATION interface
//
// Implemented by the Microsoft ATSC/DVB BDA Network Provider
//
// Used by a transport information filter (TIF) to Register with the NP
// AND obtain an Interface to the Demux to set/ Remove PIDs.The TIF here passes
// IUNKNOWN of the pin it is connecting to and obtains the IMPEG2PIDMAP interface
// implemented by the NP to Map/ UnMap pids.
//
[
object,
uuid(DFEF4A68-EE61-415f-9CCB-CD95F2F98A3A),
helpstring("BDA Network Provider Registration Inteface for DVB/ATSC Transport Information Filters"),
pointer_default(unique)
]
interface IBDA_TIF_REGISTRATION : IUnknown
{
[helpstring("Used to register a transport analyzer with the Network Provider")]
HRESULT
RegisterTIFEx (
[in] IPin * pTIFInputPin,
[in, out] ULONG * ppvRegistrationContext,
[in, out] IUnknown ** ppMpeg2DataControl
);
[helpstring("Used to unregister TIF with the Network Provider")]
HRESULT
UnregisterTIF (
[in] ULONG pvRegistrationContext
);
}
//******************************************************************************
//
// 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;
};
};
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#pragma warning(default:4201) /* Nameless struct/union */")
cpp_quote("#endif")
+303
View File
@@ -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)
+368
View File
@@ -0,0 +1,368 @@
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Module Name:
//
// Mpeg2Structs.idl
//
// Abstract:
//
// Definitions for the common structures used in Mpeg2Data
//
// Notes:
//
// This IDL file is not built independently, but is included and built
// in the master IDL file Mpeg2Data.idl
//
/////////////////////////////////////////////////////////////////////////////
// Include Files
#include "Mpeg2Bits.h"
//
// Basic Type Aliases
//
typedef WORD PID;
typedef BYTE TID;
typedef UINT ClientKey;
//
// MPEG-2 Current/Next bit field
//
typedef enum
{
MPEG_SECTION_IS_NEXT = 0,
MPEG_SECTION_IS_CURRENT = 1
} MPEG_CURRENT_NEXT_BIT;
//
// MPEG-2 TID Extension structure
//
typedef struct
{
WORD wTidExt;
WORD wCount;
} TID_EXTENSION, *PTID_EXTENSION;
//
// MPEG-2 packet "small" header structure
//
typedef struct
{
TID TableId;
union
{
MPEG_HEADER_BITS_MIDL S;
WORD W;
} Header;
BYTE SectionData[1]; // Array size is Header.S.SectionLength
} SECTION, *PSECTION;
//
// MPEG-2 packet "long" header structure
//
typedef struct
{
TID TableId;
union
{
MPEG_HEADER_BITS_MIDL S;
WORD W;
} Header;
WORD TableIdExtension;
union
{
MPEG_HEADER_VERSION_BITS_MIDL S;
BYTE B;
} Version;
BYTE SectionNumber;
BYTE LastSectionNumber;
BYTE RemainingData[1]; // Array size is Header.S.SectionLength - 5
} LONG_SECTION, *PLONG_SECTION;
//
// DSM-CC packet header structure
//
typedef struct
{
TID TableId;
union
{
MPEG_HEADER_BITS_MIDL S;
WORD W;
} Header;
WORD TableIdExtension;
union
{
MPEG_HEADER_VERSION_BITS_MIDL S;
BYTE B;
} Version;
BYTE SectionNumber;
BYTE LastSectionNumber;
BYTE ProtocolDiscriminator;
BYTE DsmccType;
WORD MessageId;
DWORD TransactionId;
BYTE Reserved;
BYTE AdaptationLength;
WORD MessageLength;
BYTE RemainingData[1];
} DSMCC_SECTION, *PDSMCC_SECTION;
//
// MPEG-2 request/response packets structures
//
typedef struct
{
DWORD dwLength;
PSECTION pSection;
} MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
typedef struct
{
WORD wPacketCount;
PMPEG_RQST_PACKET PacketList[1]; // Array size is wPacketCount;
} MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
//
// DSM-CC request filter options
//
typedef struct
{
BOOL fSpecifyProtocol; // If true, Protocol should be set to desired value
BYTE Protocol;
BOOL fSpecifyType; // If true, Type should be set to desired value
BYTE Type;
BOOL fSpecifyMessageId; // If true, MessageId should be set to desired value
WORD MessageId;
BOOL fSpecifyTransactionId; // If true, TransactionId (or DownloadId for DDB msgs) should be set to desired value
BOOL fUseTrxIdMessageIdMask; // If false, TransactionId is filtered as is.
// If true, TransactionId is masked to look
// for any version of message with associated
// message identifier. See DVB - Data
// Broadcasting Guidlines 4.6.5. (Assignment
// and use of transactionId values).
DWORD TransactionId;
BOOL fSpecifyModuleVersion; // If true, ModuleVersion should be set to the desired value
BYTE ModuleVersion;
BOOL fSpecifyBlockNumber; // If true, BlockNumber should be set to desired value
WORD BlockNumber;
BOOL fGetModuleCall; // If true, NumberOfBlocksInModule should be set
WORD NumberOfBlocksInModule;
} DSMCC_FILTER_OPTIONS;
// 45 BYTES
//
// ATSC request filter options
//
typedef struct
{
BOOL fSpecifyEtmId; // If true, EtmId should be set to desired value
DWORD EtmId;
} ATSC_FILTER_OPTIONS;
// 8 BYTES
//
// MPEG-2 request filter structure
//
typedef struct
{
BYTE bVersionNumber; // Must be set to 1 or more to match filter definition
WORD wFilterSize; // Size of total filter structure. Version 1 filter is 73 bytes.
BOOL fUseRawFilteringBits; // If true, Filter and Mask fields should be set to desired value, all other
// fields with be ignored.
BYTE Filter[16]; // Bits with values to compare against for a match.
BYTE Mask[16]; // Bits set to 0 are bits that are compared to those in the filter, those
// bits set to 1 are ignored.
BOOL fSpecifyTableIdExtension; // If true, TableIdExtension should be set to desired value (false = don't care)
WORD TableIdExtension;
BOOL fSpecifyVersion; // If true, Version should be set to desired value (false = don't care)
BYTE Version;
BOOL fSpecifySectionNumber; // If true, SectionNumber should be set to desired value (false = don't care)
BYTE SectionNumber;
BOOL fSpecifyCurrentNext; // If true, fNext should be set to desired value (false = don't care)
BOOL fNext; // If true, next table is queried. Else, current
BOOL fSpecifyDsmccOptions; // If true, Dsmcc should be set with desired filter options
DSMCC_FILTER_OPTIONS Dsmcc;
BOOL fSpecifyAtscOptions; // If true, Atsc should be set with desired filter options
ATSC_FILTER_OPTIONS Atsc;
} MPEG2_FILTER, *PMPEG2_FILTER;
// 124 BYTES
cpp_quote("#define MPEG2_FILTER_VERSION_1_SIZE 124")
//
// Mpeg-2 Stream buffer structure
//
typedef struct
{
HRESULT hr;
DWORD dwDataBufferSize;
DWORD dwSizeOfDataRead;
BYTE * pDataBuffer;
} MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
//
// MPEG-2 Time and Date structures
//
typedef struct
{
BYTE Hours; // Legal Range: 0 to 23
BYTE Minutes; // Legal Range: 0 to 59
BYTE Seconds; // Legal Range: 0 to 59
} MPEG_TIME;
typedef MPEG_TIME MPEG_DURATION;
typedef struct
{
BYTE Date; // Legal Range: 1 to 31
BYTE Month; // Legal Range: 1 to 12
WORD Year; // Legal Range: 1900 to 2100
} MPEG_DATE;
typedef struct
{
MPEG_DATE D;
MPEG_TIME T;
} MPEG_DATE_AND_TIME;
//
// MPEG-2 API Context structures
//
typedef enum
{
MPEG_CONTEXT_BCS_DEMUX,
MPEG_CONTEXT_WINSOCK
} MPEG_CONTEXT_TYPE;
typedef struct
{
DWORD AVMGraphId;
} MPEG_BCS_DEMUX;
typedef struct
{
DWORD AVMGraphId;
} MPEG_WINSOCK;
typedef struct
{
MPEG_CONTEXT_TYPE Type;
union
{
MPEG_BCS_DEMUX Demux;
MPEG_WINSOCK Winsock;
} U;
} MPEG_CONTEXT, *PMPEG_CONTEXT;
//
// MPEG-2 Service Request and Responses
//
typedef enum
{
MPEG_RQST_UNKNOWN = 0,
MPEG_RQST_GET_SECTION,
MPEG_RQST_GET_SECTION_ASYNC,
MPEG_RQST_GET_TABLE,
MPEG_RQST_GET_TABLE_ASYNC,
MPEG_RQST_GET_SECTIONS_STREAM,
MPEG_RQST_GET_PES_STREAM,
MPEG_RQST_GET_TS_STREAM,
MPEG_RQST_START_MPE_STREAM,
} MPEG_REQUEST_TYPE;
typedef struct
{
MPEG_REQUEST_TYPE Type;
MPEG_CONTEXT Context;
PID Pid;
TID TableId;
MPEG2_FILTER Filter;
DWORD Flags;
} MPEG_SERVICE_REQUEST, *PMPEG_SERVICE_REQUEST;
typedef struct
{
DWORD IPAddress;
WORD Port;
} MPEG_SERVICE_RESPONSE, *PMPEG_SERVICE_RESPONSE;
//
// DSM-CC & MPE Query Results
//
typedef struct _DSMCC_ELEMENT
{
PID pid;
BYTE bComponentTag;
DWORD dwCarouselId;
DWORD dwTransactionId;
struct _DSMCC_ELEMENT * pNext;
} DSMCC_ELEMENT, *PDSMCC_ELEMENT;
typedef struct _MPE_ELEMENT
{
PID pid;
BYTE bComponentTag;
struct _MPE_ELEMENT * pNext;
} MPE_ELEMENT, *PMPE_ELEMENT;
//
// MPEG-2 Stream Filtering Structure
//
typedef struct _MPEG_STREAM_FILTER
{
WORD wPidValue; // PID value
DWORD dwFilterSize; // size of filter in bits
BOOL fCrcEnabled; // enable/disable CRC check
BYTE rgchFilter[16]; // filter data
BYTE rgchMask[16]; // filter mask
} MPEG_STREAM_FILTER;
+840
View File
@@ -0,0 +1,840 @@
// MSTvCA.idl : IDL source for MSTvCA.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (CA.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"
/* [
object,
dual,
uuid(49a32d3c-7d85-11d2-8895-00c04f794967),
helpstring("ITuneRequest Interface"),
pointer_default(unique)
]
interface ITuneRequest : IDispatch
{
};
*/
import "tuner.idl"; // includes the whole BDA world! Yecko!
interface ICAManager;
interface ICARequest;
interface ICAPolicy;
interface ICAPolicies;
interface ICAPoliciesInternal;
interface ICAToll;
interface ICATolls;
interface ICATollsInternal;
interface ICADenial;
interface ICADenials;
interface ICAOffer;
interface ICAOffers;
interface ICAComponent;
interface ICAComponents;
#define COLLECTID_Item 0
#define COLLECTID_Count 1
#define COLLECTID_Add 2
#define COLLECTID_Remove 3
#define COLLECTID_AddNew 4
#define COLLECTID_CountDenied 5 // ICADenials
#define COLLECTID_CountSelected 6 // ICADenials
#define COLLECTID_PaySelectedTolls 7 // ICADenials
typedef enum
{
Unselected = 0,
Selected = 1
} CATollState;
typedef enum
{
Denied = 0,
Transient = 1,
// Allowed = 2,
DescriptionShort = 10, // one of the description fields changed
DescriptionLong = 11, // via a ICADenial::put_Description()
DescriptionHTML = 12, //
DescriptionXML = 13 // (keep these current+10 with list below...)
} CADenialState;
typedef enum
{
Short = 0, // must be numeric, starting at 0. (Used as array index).
Long = 1, // in approximatly order of length in bytes
URL = 2,
HTML = 3,
XML = 4,
kDescEnd = 5 // invalid format, 1+ last real one (Used as array length).
} CADescFormat;
typedef enum
{
Request = 1,
ComponentX = 2,
Offers = 4,
PaidTolls = 8,
Policies = 16,
Standard = 15, // all put the policies
All = 31 // all
} CAUIDisplayFields;
// ---------------------------------------------------------------
// if add methods to ICAManagerInternal, be sure to add MAGICCALL in CAManagerProxy too..
// ---------------------------------------------------------------
[
object,
uuid(11166301-DF8A-463a-B620-7BEC23542010),
dual, // Helpers are Dual, IUnknown... so see from VB
hidden, restricted,
helpstring("ICAManagerInternal Interface"),
pointer_default(unique)
]
interface ICAManagerInternal : IUnknown
{
[ id(1), helpstring("method Save")] HRESULT Save();
[ id(2), helpstring("method Load")] HRESULT Load();
[propput, id(3), helpstring("property MarkDirty")] HRESULT MarkDirty([in] BOOL fDirty);
[propget, id(3), helpstring("property MarkDirty")] HRESULT MarkDirty([out, retval] BOOL *pfDirty);
[propput, id(4), helpstring("property TuneRequest")] HRESULT TuneRequest([in] ITuneRequest *ptunereq);
[ id(5), helpstring("method GetDefaultUI")] HRESULT GetDefaultUI([out] HWND *phwnd);
[ id(6), helpstring("method SetDefaultUI")] HRESULT SetDefaultUI([in] HWND hwnd);
// return the main CAManager object, not the proxy one.
[propget, id(7), helpstring("property CAManagerMain")] HRESULT CAManagerMain([out,retval] ICAManager **ppManagerMain);
[propput, id(8), helpstring("property BroadcastEventService")] HRESULT BroadcastEventService([in] IBroadcastEvent *pBroadcastEventService);
[propget, id(8), helpstring("property BroadcastEventService")] HRESULT BroadcastEventService([out, retval] IBroadcastEvent **ppBroadcastEventService);
[ id(9), helpstring("method DisplayDefaultUI")] HRESULT DisplayDefaultUI([in] VARIANT_BOOL fDisplay);
[ id(10), helpstring("method EnableDefaultUIPayTollsButton")] HRESULT EnableDefaultUIPayTollsButton([in] VARIANT_BOOL fEnabled);
[ id(11), helpstring("method UpdateDefaultUIForToll")] HRESULT UpdateDefaultUIForToll([in] ICAToll *pToll,[in] CATollState enState);
[propput, id(12), helpstring("property TuneRequestInt")] HRESULT TuneRequestInt([in] ITuneRequest *ptunereq);
[ id(13), helpstring("method AddDenialsFor")] HRESULT AddDenialsFor([in] IUnknown *pUnk); // see also ICAManager::get_DenialsFor()
[ id(14), helpstring("method RemoveDenialsFor")] HRESULT RemoveDenialsFor([in] IUnknown *pUnk);
[ id(2201),helpstring("method NotifyRequestActivated")] HRESULT NotifyRequestActivated([in] ICARequest *pReq);
[ id(2202),helpstring("method NotifyRequestDeactivated")] HRESULT NotifyRequestDeactivated([in] ICARequest *pReq);
[ id(2203),helpstring("method NotifyOfferAdded")] HRESULT NotifyOfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2204),helpstring("method NotifyOfferRemoved")] HRESULT NotifyOfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2205),helpstring("method NotifyPolicyAdded")] HRESULT NotifyPolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2206),helpstring("method NotifyPolicyRemoved")] HRESULT NotifyPolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2207),helpstring("method NotifyRequestDenialAdded")] HRESULT NotifyRequestDenialAdded([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2208),helpstring("method NotifyRequestDenialRemoved")] HRESULT NotifyRequestDenialRemoved([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2209),helpstring("method NotifyDenialTollAdded")] HRESULT NotifyDenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2210),helpstring("method NotifyDenialTollRemoved")] HRESULT NotifyDenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2211),helpstring("method NotifyTollDenialAdded")] HRESULT NotifyTollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2212),helpstring("method NotifyTollDenialRemoved")] HRESULT NotifyTollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2213),helpstring("method NotifyOfferTollAdded")] HRESULT NotifyOfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2214),helpstring("method NotifyOfferTollRemoved")] HRESULT NotifyOfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2215),helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateLast);
[ id(2216),helpstring("method NotifyDenialStateChanged")] HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
[ id(2217),helpstring("method NotifyComponentDenialAdded")] HRESULT NotifyComponentDenialAdded([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2218),helpstring("method NotifyComponentDenialRemoved")] HRESULT NotifyComponentDenialRemoved([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
};
[
object,
uuid(11166302-DF8A-463a-B620-7BEC23542010),
dual, // Helpers are Dual, IUnknown... so see from VB
hidden, restricted,
helpstring("ICAManagerXProxy Interface"),
pointer_default(unique)
]
interface ICAManagerXProxy : IUnknown
{
[propget, id(1), helpstring("property PunkCAManagerProxy")] HRESULT PunkCAManagerProxy([out,retval] IUnknown **ppUnkCAManagerProxy);
[ id(2201),helpstring("method NotifyRequestActivated_XProxy")] HRESULT NotifyRequestActivated_XProxy([in] ICARequest *pReq);
[ id(2202),helpstring("method NotifyRequestDeactivated_XProxy")] HRESULT NotifyRequestDeactivated_XProxy([in] ICARequest *pReq);
[ id(2203),helpstring("method NotifyOfferAdded_XProxy")] HRESULT NotifyOfferAdded_XProxy([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2204),helpstring("method NotifyOfferRemoved_XProxy")] HRESULT NotifyOfferRemoved_XProxy([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2205),helpstring("method NotifyPolicyAdded_XProxy")] HRESULT NotifyPolicyAdded_XProxy([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2206),helpstring("method NotifyPolicyRemoved_XProxy")] HRESULT NotifyPolicyRemoved_XProxy([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2207),helpstring("method NotifyRequestDenialAdded_XProxy")] HRESULT NotifyRequestDenialAdded_XProxy([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2208),helpstring("method NotifyRequestDenialRemoved_XProxy")] HRESULT NotifyRequestDenialRemoved_XProxy([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2209),helpstring("method NotifyDenialTollAdded_XProxy")] HRESULT NotifyDenialTollAdded_XProxy([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2210),helpstring("method NotifyDenialTollRemoved_XProxy")] HRESULT NotifyDenialTollRemoved_XProxy([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2211),helpstring("method NotifyTollDenialAdded_XProxy")] HRESULT NotifyTollDenialAdded_XProxy([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2212),helpstring("method NotifyTollDenialRemoved_XProxy")] HRESULT NotifyTollDenialRemoved_XProxy([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2213),helpstring("method NotifyOfferTollAdded_XProxy")] HRESULT NotifyOfferTollAdded_XProxy([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2214),helpstring("method NotifyOfferTollRemoved_XProxy")] HRESULT NotifyOfferTollRemoved_XProxy([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2215),helpstring("method NotifyTollStateChanged_XProxy")] HRESULT NotifyTollStateChanged_XProxy([in] ICAToll *pToll, [in] CATollState enStateLast);
[ id(2216),helpstring("method NotifyDenialStateChanged_XProxy")] HRESULT NotifyDenialStateChanged_XProxy([in] ICADenial *pDenial, [in] CADenialState enStateLast);
[ id(2217),helpstring("method NotifyComponentDenialAdded_XProxy")] HRESULT NotifyComponentDenialAdded_XProxy([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2218),helpstring("method NotifyComponentDenialRemoved_XProxy")] HRESULT NotifyComponentDenialRemoved_XProxy([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
};
// ---------------------------------------------------------------
// ---------------------------------------------------------------
[
object,
uuid(11166420-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAPolicies Interface"),
pointer_default(unique)
]
interface ICAPolicies : IDispatch
{
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAPolicy **ppPolicy);
[ id(COLLECTID_Add)] HRESULT Add([in] ICAPolicy *pPolicy);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[ object,
uuid(11166421-DF8A-463a-B620-7BEC23542010),
dual,
hidden, restricted,
helpstring("ICAPoliciesInternal Interface"),
pointer_default(unique)
]
interface ICAPoliciesInternal : IUnknown
{
[id(1),helpstring("method SetCAManager")] HRESULT SetCAManager([in] ICAManager *pManager);
[id(2),helpstring("method CheckRequest")] HRESULT CheckRequest([in] ICARequest *pReq);
};
// ---------------------------------------------------------------
[
object,
uuid(11166430-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICATolls Interface"),
pointer_default(unique)
]
interface ICATolls : IDispatch
{
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAToll **ppToll);
[ id(COLLECTID_Add)] HRESULT Add([in] ICAToll *pToll);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[
object,
uuid(11166431-DF8A-463a-B620-7BEC23542010),
dual,
hidden, restricted,
helpstring("ICATolls Internal Interface"),
pointer_default(unique)
]
interface ICATollsInternal : IUnknown // workaround for not being able to get _ICAResDenialEvents to work
{
[ id(1),helpstring("method SetCAManager")] HRESULT SetCAManager([in] ICAManager *pManager);
[ id(2),helpstring("method GetCAManager")] HRESULT GetCAManager([out] ICAManager **ppManager);
[ id(3),helpstring("method SetMustPersist")] HRESULT SetMustPersist([in] BOOL fMustPersist);
[ id(4),helpstring("method Save")] HRESULT Save([in] IStorage *pstore,[in] BSTR bstrPrefix);
[ id(5),helpstring("method Load")] HRESULT Load([in] IStorage *pstore,[in] BSTR bstrPrefix);
[ id(6),helpstring("method NotifyStateChanged")] HRESULT NotifyStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
[ id(7),helpstring("method NotifyTollSelectionChanged")] HRESULT NotifyTollSelectionChanged([in] ICAToll *pToll, [in] BOOL fSelected);
};
// ---------------------------------------------------------------
[
object,
uuid(11166440-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICADenials Interface"),
pointer_default(unique)
]
interface ICADenials : IDispatch
{
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count) ] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICADenial **ppDenial);
[propget, id(COLLECTID_AddNew), helpstring("property AddNew")] HRESULT AddNew([in] ICAPolicy *ppolicy, [in] BSTR bstrShortDesc, [in] IUnknown *pUnkDeniedObject, [in] long enDenialState, [out, retval] ICADenial **ppDenial);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
[propget, id(COLLECTID_CountDenied)] HRESULT CountDenied([out, retval] long *Count);
[propget, id(COLLECTID_CountSelected)] HRESULT CountSelected([out, retval] long *Count);
[ id(COLLECTID_PaySelectedTolls)] HRESULT PaySelectedTolls();
};
[
object,
uuid(11166441-DF8A-463a-B620-7BEC23542010),
dual,
hidden, restricted,
helpstring("ICADenialsInternal Interface"),
pointer_default(unique)
]
interface ICADenialsInternal : IUnknown
{
[ id(1),helpstring("method SetCAManager")] HRESULT SetCAManager([in] ICAManager *pManager);
[ id(2),helpstring("method NotifyDenialStateChanged")] HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
};
// ---------------------------------------------------------------
[
object,
uuid(11166450-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAOffers Interface"),
pointer_default(unique)
]
interface ICAOffers : IDispatch
{
[propget, id(DISPID_NEWENUM) , restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAOffer **ppOffer);
[propget, id(COLLECTID_AddNew), helpstring("property AddNew")] HRESULT AddNew([in] ICAPolicy *pPolicy, [in] BSTR bstrName, [in] DATE dateStart, [in] DATE dateEnd, [out, retval] ICAOffer **ppOffer);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[
object,
uuid(11166470-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAComponents Interface"),
pointer_default(unique)
]
interface ICAComponents : IDispatch
{
[propget, id(DISPID_NEWENUM) , restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAComponent **ppComponent);
// [ id(COLLECTID_Add)] HRESULT Add([in] ICAComponent *pComponent);
// [ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[
object,
uuid(11166361-DF8A-463a-B620-7BEC23542010),
dual,
hidden,
helpstring("ICAComponentInternal Interface"),
pointer_default(unique)
]
interface ICAComponentInternal : IUnknown
{
[ id(1), helpstring("method RemoveAllDenials")] HRESULT RemoveAllDenials();
[propget, id(2), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstrDescription);
};
// ---------------------------------------------------------------
[
object,
uuid(860A3FE2-DED1-40E2-896C-057681A8A1A8),
dual,
helpstring("ICADefaultDlg Interface"),
pointer_default(unique)
]
interface ICADefaultDlg : IDispatch
{
[propput, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([in]VARIANT_BOOL vbool);
[propget, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([out,retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_BACKCOLOR)]
HRESULT BackColor([in]OLE_COLOR clr);
[propget, id(DISPID_BACKCOLOR)]
HRESULT BackColor([out,retval]OLE_COLOR* pclr);
[propput, id(DISPID_BACKSTYLE)]
HRESULT BackStyle([in]long style);
[propget, id(DISPID_BACKSTYLE)]
HRESULT BackStyle([out,retval]long* pstyle);
[propput, id(DISPID_BORDERCOLOR)]
HRESULT BorderColor([in]OLE_COLOR clr);
[propget, id(DISPID_BORDERCOLOR)]
HRESULT BorderColor([out, retval]OLE_COLOR* pclr);
[propput, id(DISPID_BORDERSTYLE)]
HRESULT BorderStyle([in]long style);
[propget, id(DISPID_BORDERSTYLE)]
HRESULT BorderStyle([out, retval]long* pstyle);
[propput, id(DISPID_BORDERWIDTH)]
HRESULT BorderWidth([in]long width);
[propget, id(DISPID_BORDERWIDTH)]
HRESULT BorderWidth([out, retval]long* width);
[propput, id(DISPID_DRAWMODE)]
HRESULT DrawMode([in]long mode);
[propget, id(DISPID_DRAWMODE)]
HRESULT DrawMode([out, retval]long* pmode);
[propput, id(DISPID_DRAWSTYLE)]
HRESULT DrawStyle([in]long style);
[propget, id(DISPID_DRAWSTYLE)]
HRESULT DrawStyle([out, retval]long* pstyle);
[propput, id(DISPID_DRAWWIDTH)]
HRESULT DrawWidth([in]long width);
[propget, id(DISPID_DRAWWIDTH)]
HRESULT DrawWidth([out, retval]long* pwidth);
[propput, id(DISPID_FILLCOLOR)]
HRESULT FillColor([in]OLE_COLOR clr);
[propget, id(DISPID_FILLCOLOR)]
HRESULT FillColor([out, retval]OLE_COLOR* pclr);
[propput, id(DISPID_FILLSTYLE)]
HRESULT FillStyle([in]long style);
[propget, id(DISPID_FILLSTYLE)]
HRESULT FillStyle([out, retval]long* pstyle);
[propputref, id(DISPID_FONT)]
HRESULT Font([in]IFontDisp* pFont);
[propput, id(DISPID_FONT)]
HRESULT Font([in]IFontDisp* pFont);
[propget, id(DISPID_FONT)]
HRESULT Font([out, retval]IFontDisp** ppFont);
[propput, id(DISPID_FORECOLOR)]
HRESULT ForeColor([in]OLE_COLOR clr);
[propget, id(DISPID_FORECOLOR)]
HRESULT ForeColor([out,retval]OLE_COLOR* pclr);
[propput, id(DISPID_ENABLED)]
HRESULT Enabled([in]VARIANT_BOOL vbool);
[propget, id(DISPID_ENABLED)]
HRESULT Enabled([out,retval]VARIANT_BOOL* pbool);
[propget, id(DISPID_HWND)]
HRESULT Window([out, retval]LONG_PTR* phwnd); // was long* via the wizard, but doesn't compile Win64
[propput, id(DISPID_TABSTOP)]
HRESULT TabStop([in]VARIANT_BOOL vbool);
[propget, id(DISPID_TABSTOP)]
HRESULT TabStop([out, retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_TEXT)]
HRESULT Text([in]BSTR strText);
[propget, id(DISPID_TEXT)]
HRESULT Text([out, retval]BSTR* pstrText);
[propput, id(DISPID_CAPTION)]
HRESULT Caption([in]BSTR strCaption);
[propget, id(DISPID_CAPTION)]
HRESULT Caption([out,retval]BSTR* pstrCaption);
[propput, id(DISPID_BORDERVISIBLE)]
HRESULT BorderVisible([in]VARIANT_BOOL vbool);
[propget, id(DISPID_BORDERVISIBLE)]
HRESULT BorderVisible([out, retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_APPEARANCE)]
HRESULT Appearance([in]short appearance);
[propget, id(DISPID_APPEARANCE)]
HRESULT Appearance([out, retval]short* pappearance);
[propput, id(DISPID_MOUSEPOINTER)]
HRESULT MousePointer([in]long pointer);
[propget, id(DISPID_MOUSEPOINTER)]
HRESULT MousePointer([out, retval]long* ppointer);
[propputref, id(DISPID_MOUSEICON)]
HRESULT MouseIcon([in]IPictureDisp* pMouseIcon);
[propput, id(DISPID_MOUSEICON)]
HRESULT MouseIcon([in]IPictureDisp* pMouseIcon);
[propget, id(DISPID_MOUSEICON)]
HRESULT MouseIcon([out, retval]IPictureDisp** ppMouseIcon);
[propputref, id(DISPID_PICTURE)]
HRESULT Picture([in]IPictureDisp* pPicture);
[propput, id(DISPID_PICTURE)]
HRESULT Picture([in]IPictureDisp* pPicture);
[propget, id(DISPID_PICTURE)]
HRESULT Picture([out, retval]IPictureDisp** ppPicture);
[propput, id(DISPID_VALID)]
HRESULT Valid([in]VARIANT_BOOL vbool);
[propget, id(DISPID_VALID)]
HRESULT Valid([out, retval]VARIANT_BOOL* pbool);
};
// ---------------------------------------------------------------
[
uuid(11166000-DF8A-463a-B620-7BEC23542010),
version(1.0),
helpstring("Microsoft TV CA Type Library")
]
library MSTvCALib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
// ---------------------------------------------------
// CAUTION - if Change events below, need to perform:
// 1) compile the MIDL file to generate the typelib
// 2) In VCC class view, <xxx>->Implement Connection Point (_ICA<xxx>Events)
// to regenerate the CProxy_ICA<xxx>Events<> code.
// Need to browse to objd\i386 directory and select MSTvCA.tlb
// (The file MSTvCACP.h must be checked out.)
// Where <xxx> is Denials, Manager, Offers, Policies, Request, and Tolls
[
uuid(11166298-DF8A-463A-B620-7BEC23542010),
helpstring("_ICAResDenialTreeEvents Interface")
]
dispinterface _ICAResDenialTreeEvents
{
properties:
methods:
[id(1),helpstring("method PaidTollSelected")] HRESULT PaidTollSelected([in] ICAToll *pToll, [in] long fSelected);
};
[
uuid(11166200-DF8A-463A-B620-7BEC23542010),
helpstring("ICAManagerEvents Interface")
]
dispinterface _ICAManagerEvents
{
properties:
methods:
[id(2201),helpstring("method RequestActivated")] HRESULT RequestActivated([in] ICARequest *pReq);
[id(2202),helpstring("method RequestDeactivated")] HRESULT RequestDeactivated([in] ICARequest *pReq);
[id(2203),helpstring("method OfferAdded")] HRESULT OfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
[id(2204),helpstring("method OfferRemoved")] HRESULT OfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
[id(2205),helpstring("method PolicyAdded")] HRESULT PolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
[id(2206),helpstring("method PolicyRemoved")] HRESULT PolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
[id(2207),helpstring("method RequestDenialAdded")] HRESULT RequestDenialAdded([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[id(2208),helpstring("method RequestDenialRemoved")] HRESULT RequestDenialRemoved([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[id(2209),helpstring("method DenialTollAdded")] HRESULT DenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[id(2210),helpstring("method DenialTollRemoved")] HRESULT DenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[id(2211),helpstring("method TollDenialAdded")] HRESULT TollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[id(2212),helpstring("method TollDenialRemoved")] HRESULT TollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[id(2213),helpstring("method OfferTollAdded")] HRESULT OfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[id(2214),helpstring("method OfferTollRemoved")] HRESULT OfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[id(2215),helpstring("method TollStateChanged")] HRESULT TollStateChanged([in] ICAToll *pToll, [in] CATollState enState);
[id(2216),helpstring("method DenialStateChanged")] HRESULT DenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enState);
[id(2217),helpstring("method ComponentDenialAdded")] HRESULT ComponentDenialAdded([in] ICAComponent *pComp, [in] ICADenial *pDenial,[in] long cDenials);
[id(2218),helpstring("method ComponentDenialRemoved")] HRESULT ComponentDenialRemoved([in] ICAComponent *pComp, [in] ICADenial *pDenial,[in] long cDenials);
};
[
uuid(11166210-DF8A-463A-B620-7BEC23542010),
helpstring("ICARequestEvents Interface")
]
dispinterface _ICARequestEvents
{
properties:
methods:
[id(1), helpstring("method CheckStarted")] HRESULT CheckStarted([in] ICARequest *pRequest);
[id(2), helpstring("method CheckComplete")] HRESULT CheckComplete([in] ICARequest *pRequest,[in] long cDenials);
};
[
uuid(11166220-DF8A-463A-B620-7BEC23542010),
helpstring("_ICAPoliciesEvents Interface")
]
dispinterface _ICAPoliciesEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAPolicy *pPolicy, long cPolicies);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAPolicy *pPolicy, long cPolicies);
};
[
uuid(11166230-DF8A-463A-B620-7BEC23542010),
helpstring("ICATollsEvents Interface")
]
dispinterface _ICATollsEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAToll *pToll, [in] long cTolls);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAToll *pToll, [in] long cTolls);
[id(3), helpstring("method StateChanged")] HRESULT StateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
};
[
uuid(11166240-DF8A-463A-B620-7BEC23542010),
helpstring("ICADenialsEvents Interface")
]
dispinterface _ICADenialsEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICADenial *pDenial, [in] long cDenials);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICADenial *pDenial, [in] long cDenials);
[id(3), helpstring("method StateChanged")] HRESULT StateChanged([in] ICADenial *pDenial, [in] CADenialState enStateFrom);
};
[
uuid(11166250-DF8A-463A-B620-7BEC23542010),
helpstring("ICAOffersEvents Interface")
]
dispinterface _ICAOffersEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAOffer *pOffer, [in] long cOffers);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAOffer *pOffer, [in] long cOffers);
};
[
uuid(11166260-DF8A-463A-B620-7BEC23542010),
helpstring("_ICAComponentsEvents Interface")
]
dispinterface _ICAComponentsEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAComponent *pComponent, [in] long cComponent);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAComponent *pComponent, [in] long cComponent);
}; // --------------------------------
[
object,
dual,
uuid(11166300-DF8A-463a-B620-7BEC23542010),
helpstring("ICAManager Interface"),
pointer_default(unique)
]
interface ICAManager : IDispatch
{
[propget, id(1), helpstring("property Policies")] HRESULT Policies([out, retval] ICAPolicies **ppPolicies);
[propget, id(2), helpstring("property ActiveRequest")] HRESULT ActiveRequest([out, retval] ICARequest **ppRequest);
[propget, id(3), helpstring("property Offers")] HRESULT Offers([out, retval] ICAOffers **ppOffers);
[propget, id(4), helpstring("property PaidTolls")] HRESULT PaidTolls([out, retval] ICATolls **ppTolls);
[propput, id(5), helpstring("property UseDefaultUI")] HRESULT UseDefaultUI([in] long fUseDefaultUI);
[propget, id(5), helpstring("property UseDefaultUI")] HRESULT UseDefaultUI([out, retval] long *pfUseDefaultUI);
[propget, id(6), helpstring("property DenialsFor")] HRESULT DenialsFor([in] IUnknown *pUnk, [out, retval] ICADenials **ppDenials);
};
[
object,
uuid(11166310-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICARequest Interface"),
pointer_default(unique)
]
interface ICARequest : IDispatch
{
[propget, id(1), helpstring("property RequestedItem")] HRESULT RequestedItem([out, retval] IUnknown **ppTunereq);
[propget, id(2), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propget, id(3), helpstring("property ScheduleEntry")] HRESULT ScheduleEntry([out, retval] IUnknown **ppUnkScheduleEntry); // IScheduleEntry?
[propget, id(4), helpstring("property Denials")] HRESULT Denials([out, retval] ICADenials **ppDenials);
[propget, id(5), helpstring("property Components")] HRESULT Components([out, retval] ICAComponents **pComponents);
[propget, id(6), helpstring("property Check")] HRESULT Check([out, retval] long *pcDenials);
[propget, id(7), helpstring("property ResolveDenials")] HRESULT ResolveDenials([out, retval] long *pcDenials);
[propget, id(8), helpstring("property CountDeniedComponents")] HRESULT CountDeniedComponents([out, retval] long *pcDeniedComponents);
};
[
object,
uuid(11166320-DF8A-463a-B620-7BEC23542010),
helpstring("ICAPolicy Interface"), // client written
pointer_default(unique)
]
interface ICAPolicy : IUnknown // -- not IDispatch, let the client side implement that interface
{
[propget, id(0), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pbstr);
[ id(1), helpstring("method CheckRequest")] HRESULT CheckRequest([in] ICARequest *pReq);
// [propget, id(2), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propput, id(2), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pManager);
[propget, id(3), helpstring("property OkToPersist")] HRESULT OkToPersist([out, retval] BOOL *pfOkToPersist);
[propget, id(4), helpstring("property OkToRemove")] HRESULT OkToRemove([out, retval] BOOL *pfOkToRemove);
[propget, id(5), helpstring("property OkToRemoveDenial")] HRESULT OkToRemoveDenial(ICADenial *pDenial, [out, retval] BOOL *pfOk);
[propget, id(6), helpstring("property OkToRemoveOffer")] HRESULT OkToRemoveOffer(ICAOffer *pOffer, [out, retval] BOOL *pfOk);
}
[
object,
uuid(11166330-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAToll Interface"), // also client written
pointer_default(unique)
]
interface ICAToll : IUnknown // -- also not IDispatch - client side implements that interface
{
// [propget, id(1), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propput, id(1), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pManager);
[ id(2), helpstring("method Select")] HRESULT Select([in] BOOL fSelect);
[ id(3), helpstring("method PayToll")] HRESULT PayToll();
[propget, id(4), helpstring("property Refundable")] HRESULT Refundable([out, retval] BOOL *pfRefundable);
[ id(5), helpstring("method RefundToll")] HRESULT RefundToll();
[propget, id(6), helpstring("property TolledObject")] HRESULT TolledObject([out, retval] IUnknown **ppUnkTolled);
[propget, id(7), helpstring("property Denials")] HRESULT Denials([out, retval] ICADenials **ppDenials);
[propget, id(8), helpstring("property Policy")] HRESULT Policy([out, retval] ICAPolicy **ppPolicy);
[propget, id(9), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
[propget, id(10),helpstring("property TimePaid")] HRESULT TimePaid([out, retval] DATE *pdtPaid);
[propget, id(11),helpstring("property State")] HRESULT State([out, retval] CATollState *penState);
};
[
object,
uuid(11166340-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICADenial Interface"),
pointer_default(unique)
]
interface ICADenial : IDispatch
{
[propget, id(1), helpstring("property DeniedObject")] HRESULT DeniedObject([out, retval] IUnknown **ppUnkDenied);
[propget, id(2), helpstring("property Policy")] HRESULT Policy([out, retval] ICAPolicy **ppPolicy);
[propget, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
[propput, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [in] BSTR bstr);
[propget, id(4), helpstring("property State")] HRESULT State([out, retval] CADenialState *penState);
[propput, id(4), helpstring("property State")] HRESULT State([in] CADenialState enState);
[propget, id(5), helpstring("property Tolls")] HRESULT Tolls([out, retval] ICATolls **ppTolls);
[ id(6), helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
};
[
object,
uuid(11166350-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAOffer Interface"),
pointer_default(unique)
]
interface ICAOffer : IDispatch
{
[propget, id(1), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propput, id(1), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pManager);
[propget, id(2), helpstring("property Policy")] HRESULT Policy([out, retval] ICAPolicy **pppolicy);
[propget, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
[propput, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [in] BSTR bstr);
[propget, id(4), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pdtStart);
[propget, id(5), helpstring("property EndTime")] HRESULT EndTime([out, retval] DATE *pdtEnd);
[propget, id(6), helpstring("property Tolls")] HRESULT Tolls([out, retval] ICATolls **ppTolls);
[ id(7), helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
};
[
object,
uuid(11166360-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAComponent Interface"),
pointer_default(unique)
]
interface ICAComponent : IDispatch
{
[propget, id(1), helpstring("property Component")] HRESULT Component([out, retval] IComponent **ppComponent);
[propget, id(2), helpstring("property Denials")] HRESULT Denials([out, retval] ICADenials **ppDenials);
[propget, id(3), helpstring("property Request")] HRESULT Request([out, retval] ICARequest **ppComponent);
};
// --------------------------------
[
uuid(11166100-DF8A-463a-B620-7BEC23542010),
helpstring("CAManager Class")
]
coclass CAManager
{
[default] interface ICAManager;
interface ICAManagerInternal;
// interface ICAManagerXProxy; // this is the actual outgoing 'event' interface
[default, source] dispinterface _ICAManagerEvents;
};
[ // magic class used to avoid circular references through the CAManager.
hidden,
uuid(11166101-DF8A-463a-B620-7BEC23542010),
helpstring("CAManagerProxy Class")
]
coclass CAManagerProxy
{
[default] interface ICAManager;
interface ICAManagerInternal;
// [default, source] dispinterface _ICAManagerEvents; /// QUESTION ??? DO I want these just here, or in the true Manager, or both?
};
[
uuid(11166540-DF8A-463a-B620-7BEC23542010), // needed for user's tolls.
helpstring("CADenials Class")
]
coclass CADenials
{
[default] interface ICADenials;
interface ICADenialsInternal;
[default, source] dispinterface _ICADenialsEvents;
};
// TODO - mark this as hidden...
[
uuid(11166550-DF8A-463a-B620-7BEC23542010),
helpstring("CAOffer Class")
]
coclass CAOffer
{
[default] interface ICAOffer;
};
/* [
uuid(11166999-DF8A-463a-B620-7BEC23542010),
helpstring("CATempEvent_TempBuilder Class - used so we can build events the first time")
]
coclass CATempEvent_TempBuilder
{
[source] dispinterface _ICAResDenialTreeEvents;
[source] dispinterface _ICAManagerEvents;
[source] dispinterface _ICARequestEvents;
[source] dispinterface _ICATollsEvents;
[source] dispinterface _ICADenialsEvents;
[source] dispinterface _ICAPoliciesEvents;
[source] dispinterface _ICAOffersEvents;
[source] dispinterface _ICAComponentsEvents;
};
*/
// -----------------------------------
[
object,
uuid(11166898-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAResDenialTree Interface"),
pointer_default(unique)
]
interface ICAResDenialTree : IDispatch
{
[propget, id(1), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppCAManager);
[propput, id(1), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pCAManager);
[propget, id(2), helpstring("property DisplayFields")] HRESULT DisplayFields([out, retval] long *penFields); // fields to display in default ResDenial UI
[propput, id(2), helpstring("property DisplayFields")] HRESULT DisplayFields([in] long enFields); // fields to display in default ResDenial UI
[ id(3), helpstring("method UpdateView")] HRESULT UpdateView([in] IUnknown *pUnk); // if object is being viewed, updates it.
// ResDenial control listens to these incoming sink events sent by Manager ((_ICAManagerEvents).. ID's Must match
[ id(2201),helpstring("method NotifyRequestActivated")] HRESULT NotifyRequestActivated([in] ICARequest *preq);
[ id(2202),helpstring("method NotifyRequestDeactivated")] HRESULT NotifyRequestDeactivated([in] ICARequest *preq);
[ id(2203),helpstring("method NotifyOfferAdded")] HRESULT NotifyOfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2204),helpstring("method NotifyOfferRemoved")] HRESULT NotifyOfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2205),helpstring("method NotifyPolicyAdded")] HRESULT NotifyPolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2206),helpstring("method NotifyPolicyRemoved")] HRESULT NotifyPolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2207),helpstring("method NotifyRequestDenialAdded")] HRESULT NotifyRequestDenialAdded([in] ICARequest *preq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2208),helpstring("method NotifyRequestDenialRemoved")] HRESULT NotifyRequestDenialRemoved([in] ICARequest *preq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2209),helpstring("method NotifyDenialTollAdded")] HRESULT NotifyDenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2210),helpstring("method NotifyDenialTollRemoved")] HRESULT NotifyDenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2211),helpstring("method NotifyTollDenialAdded")] HRESULT NotifyTollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2212),helpstring("method NotifyTollDenialRemoved")] HRESULT NotifyTollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2213),helpstring("method NotifyOfferTollAdded")] HRESULT NotifyOfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2214),helpstring("method NotifyOfferTollRemoved")] HRESULT NotifyOfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2215),helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateLast);
[ id(2216),helpstring("method NotifyDenialStateChanged")] HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
[ id(2217),helpstring("method NotifyComponentDenialAdded")] HRESULT NotifyComponentDenialAdded([in] ICAComponent *preq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2218),helpstring("method NotifyComponentDenialRemoved")] HRESULT NotifyComponentDenialRemoved([in] ICAComponent *preq, [in] ICADenial *pDenial,[in] long cDenials);
};
[
uuid(11166998-DF8A-463a-B620-7BEC23542010),
helpstring("CA Default RequestDenial Control")
]
coclass CAResDenialTree
{
[default] interface ICAResDenialTree;
[default, source] dispinterface _ICAResDenialTreeEvents;
};
// -----------------------------
[
uuid(11166991-DF8A-463a-B620-7BEC23542010),
helpstring("_ICADefaultDlgEvents Interface")
]
dispinterface _ICADefaultDlgEvents
{
properties:
methods:
};
[
uuid(11166990-DF8A-463a-B620-7BEC23542010),
helpstring("CADefaultDlg Class")
]
coclass CADefaultDlg
{
[default] interface ICADefaultDlg;
[default, source] dispinterface _ICADefaultDlgEvents;
};
// -------------------------------------
// Magic way to define the SID_ ...
cpp_quote("#define SID_CAManager CLSID_CAManager")
};
+837
View File
@@ -0,0 +1,837 @@
// GuideStore.idl : IDL source for GuideStore.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (GuideStore.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
interface IObjects;
interface IMetaProperties;
interface IMetaProperty;
interface IMetaPropertyCondition;
interface IMetaPropertySet;
interface IMetaPropertySets;
interface IMetaPropertyType;
interface IMetaPropertyTypes;
interface IGuideStore;
interface IService;
interface IServices;
interface IProgram;
interface IPrograms;
interface IScheduleEntry;
interface IScheduleEntries;
interface IChannel;
interface IChannels;
interface IChannelLineup;
interface IChannelLineups;
interface IGuideDataProvider;
interface IGuideDataProviders;
#define didAdd 10
#define didAddAt 15
#define didAddNew 20
#define didAddNewAt 25
#define didAnd 30
#define didBeginTrans 35
#define didChannelLineups 40
#define didChannels 50
#define didCommitTrans 55
#define didCond 60
#define didCopyrightDate 70
#define didCount 80
#define didDataEndTime 90
#define didDefaultValue 100
#define didDescription 110
#define didEndTime 120
#define didGuideDataProvider 135
#define didGuideDataProviders 136
#define didID 150
#define didIdOf 155
#define didIID 170
#define didIsAnyDataAvailable 180
#define didInit 190
#if 0
#define didItem DISPID_VALUE
#else
#define didItem 191
#endif
#define didItemAdded 195
#define didItemChanged 196
#define didItemRemoved 197
#define didItemsByKey 198
#define didItemsChanged 199
#define didItemsInTimeRange 200
#define didItemsWithCond 210
#define didItemWithKey 215
#define didItemsWithMetaProp 220
#define didItemsWithMetaPropType 230
#define didItemsWithService 240
#define didItemsWithType 400
#define didItemWithID 250
#define didItemWithIID 260
#define didItemWithName 270
#define didItemWithMetaPropTypeLang 280
#define didItemWithTypeProviderLang 285
#define didItemWithProviderName 290
#define didItemWithServiceAtTime 300
#define didLanguage 310
#define didLength 320
#define didLookup 325
#define didMax 330
#define didMin 340
#define didName 350
#define didNew 360
#define didNewCollection 370
#define didNot 380
#define didObjects 390
#define didObjectTypes 410
#define didOpen 420
#define didOr 430
#define didProgram 440
#define didPrograms 450
#define didRollbackTrans 455
#define didMetaProperties 460
#define didMetaPropertiesOf 465
#define didMetaPropertySet 470
#define didMetaPropertySets 480
#define didMetaPropertyType 490
#define didMetaPropertyTypes 500
#define didProviderDescription 510
#define didProviderName 520
#define didProviderNetworkName 530
#define didResync 535
#define didItemInvRelBy 540
#define didItemsInvRelBy 545
#define didItemsInvRelToBy 546
#define didItemRelBy 550
#define didItemsRelBy 555
#define didItemsRelToBy 556
#define didRemove 560
#define didRemoveAll 565
#define didSchedEntries 570
#define didService 580
#define didServices 590
#define didStartTime 600
#define didTitle 620
#define didType 630
#define didTuneRequest 640
#define didUnreferencedItems 650
#if 0
#define didValue DISPID_VALUE
#else
#define didValue 660
#endif
[
uuid(8D9EEDCE-21E9-4845-82A8-99CEC53E6DB2),
version(1.0),
helpstring("Microsoft TV GuideStore 1.0 Type Library")
]
library MSTVGS
{
importlib("stdole2.tlb");
[
object,
uuid(F71020D2-A467-4EB7-839A-63C8F40C7AB4),
dual,
helpstring("IMetaPropertySet Interface"),
pointer_default(unique)
]
interface IMetaPropertySet : IDispatch
{
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propget, id(didMetaPropertyTypes), helpstring("property MetaPropertyTypes")] HRESULT MetaPropertyTypes([out, retval] IMetaPropertyTypes* *pVal);
};
[
object,
uuid(E8FD768C-EC4E-4DAB-A09C-011E8ECAE4D2),
dual,
helpstring("IMetaPropertySets Interface"),
pointer_default(unique),
nonextensible
]
interface IMetaPropertySets : IDispatch
{
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT index, [out, retval] IMetaPropertySet* *ppropset);
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IMetaPropertySet* *ppropset);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(BSTR bstrName, [out, retval] IMetaPropertySet **pppropset);
[propget, id(didLookup), helpstring("property Lookup")] HRESULT Lookup([in] BSTR bstr, [out, retval] IMetaPropertyType * *ppproptype);
};
[
object,
uuid(86502400-213B-4ADF-A1E2-76365E7172BD),
dual,
helpstring("IMetaPropertyType Interface"),
pointer_default(unique)
]
interface IMetaPropertyType : IDispatch
{
[propget, id(didMetaPropertySet), helpstring("property MetaPropertySet")] HRESULT MetaPropertySet([out, retval] IMetaPropertySet* *ppropset);
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propget, id(didNew), helpstring("property New")] HRESULT New(long lang, VARIANT val, [out, retval] IMetaProperty* *pprop);
[propget, id(didCond), helpstring("property Cond")] HRESULT Cond(BSTR bstrCond, long lang, VARIANT varValue, [out, retval] IMetaPropertyCondition* *ppropcond);
};
[
object,
uuid(9BF4984A-4CFE-4588-9FCF-828C74EF7104),
dual,
helpstring("IMetaPropertyTypes Interface"),
pointer_default(unique)
]
interface IMetaPropertyTypes : IDispatch
{
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT index, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(long id, BSTR bstrName, [out, retval] IMetaPropertyType * *pVal);
[propget, id(didMetaPropertySet), helpstring("property MetaPropertySet")] HRESULT MetaPropertySet([out, retval] IMetaPropertySet * *pVal);
};
[
object,
uuid(A4BBD2C0-D7E4-4FC2-8FB0-176DDBCB3D72),
dual,
helpstring("IMetaProperty Interface"),
pointer_default(unique)
]
interface IMetaProperty : IDispatch
{
[propget, id(didMetaPropertyType), helpstring("property MetaPropertyType")] HRESULT MetaPropertyType([out, retval] IMetaPropertyType* *pproptype);
[propget, id(didLanguage), helpstring("property Language")] HRESULT Language([out, retval] long *pVal);
[propget, id(didGuideDataProvider), helpstring("property GuideDataProvider")] HRESULT GuideDataProvider([out, retval] IGuideDataProvider **ppprovider);
[propget, id(didValue), helpstring("property Value")] HRESULT Value([out, retval] VARIANT *pvarValue);
[propput, id(didValue), helpstring("property Value")] HRESULT Value([in] VARIANT varValue);
[propputref, id(didValue), helpstring("property Value")] HRESULT Value([in] IUnknown *punk);
[propget, id(didCond), helpstring("property Cond")] HRESULT Cond(BSTR bstrCond, [out, retval] IMetaPropertyCondition* *ppropcond);
};
[
object,
uuid(E7F78F69-8326-48A0-8E54-BBDCEE43BA70),
dual,
helpstring("IMetaProperties Interface"),
pointer_default(unique)
]
interface IMetaProperties : IDispatch
{
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT index, [out, retval] IMetaProperty* *pprop);
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItemWithMetaPropTypeLang), helpstring("property ItemWith")] HRESULT ItemWith(IMetaPropertyType *ptype, long lang, [out, retval] IMetaProperty* *pprop);
[propget, id(didItemWithTypeProviderLang), helpstring("property ItemWithTypeProviderLang")] HRESULT ItemWithTypeProviderLang(IMetaPropertyType *ptype, IGuideDataProvider *pprovider, long lang, [out, retval] IMetaProperty* *pprop);
[propget, id(didItemsWithMetaPropType), helpstring("property ItemsWithMetaPropertyType")] HRESULT ItemsWithMetaPropertyType(IMetaPropertyType *ptype, [out, retval] IMetaProperties* *pprops);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(IMetaPropertyType *pproptype, long lang, VARIANT varValue, [out, retval] IMetaProperty * *pVal);
[id(didAdd), helpstring("method Add")] HRESULT Add(IMetaProperty *pprop);
};
[
object,
uuid(98FAAEF5-397A-4372-93A3-FB3DA49B3EF1),
dual,
helpstring("IMetaPropertyCondition Interface"),
pointer_default(unique)
]
interface IMetaPropertyCondition : IDispatch
{
[propget, id(didAnd), helpstring("property And")] HRESULT And(IMetaPropertyCondition *pcond2, [out, retval] IMetaPropertyCondition* *ppropcond);
[propget, id(didOr), helpstring("property Or")] HRESULT Or(IMetaPropertyCondition *pcond2, [out, retval] IMetaPropertyCondition* *ppropcond);
};
[
object,
uuid(E4A9F7DA-F38F-43D3-AB3B-7E9F9FB7A7C7),
dual,
helpstring("IGuideStore Interface"),
pointer_default(unique)
]
interface IGuideStore : IDispatch
{
[propget, id(didIID), helpstring("property UUID")] HRESULT UUID([out, retval] BSTR *bstrUUID);
[propget, id(didServices), helpstring("property Services")] HRESULT Services([out, retval] IServices * *pVal);
[propget, id(didPrograms), helpstring("property Programs")] HRESULT Programs([out, retval] IPrograms * *pVal);
[propget, id(didSchedEntries), helpstring("property ScheduleEntries")] HRESULT ScheduleEntries([out, retval] IScheduleEntries * *pVal);
[propget, id(didGuideDataProviders), helpstring("property GuideDataProviders")] HRESULT GuideDataProviders([out, retval] IGuideDataProviders * *ppdataproviders);
[propget, id(didMetaPropertySets), helpstring("property MetaPropertySets")] HRESULT MetaPropertySets([out, retval] IMetaPropertySets **pppropsets);
[id(didOpen), helpstring("method Open")] HRESULT Open(BSTR bstrName);
[propget, id(didObjects), helpstring("property Objects")] HRESULT Objects([out, retval] IObjects * *ppobjs);
[propget, id(didChannels), helpstring("property Channels")] HRESULT Channels([out, retval] IChannels * *pVal);
[propget, id(didChannelLineups), helpstring("property ChannelLineups")] HRESULT ChannelLineups([out, retval] IChannelLineups * *pVal);
[propget, id(didGuideDataProvider), helpstring("property ActiveGuideDataProvider")] HRESULT ActiveGuideDataProvider([out, retval] IGuideDataProvider * *pVal);
[propputref, id(didGuideDataProvider), helpstring("property ActiveGuideDataProvider")] HRESULT ActiveGuideDataProvider([in] IGuideDataProvider * newVal);
[propget, id(didIdOf), helpstring("property IdOf")] HRESULT IdOf([in] IUnknown *punk, [out, retval] long *pVal);
[propget, id(didMetaPropertiesOf), helpstring("property MetaPropertiesOf")] HRESULT MetaPropertiesOf([in] IUnknown *punk, [out, retval] IMetaProperties **ppprops);
[id(didBeginTrans), helpstring("method BeginTrans")] HRESULT BeginTrans();
[id(didCommitTrans), helpstring("method CommitTrans")] HRESULT CommitTrans();
[id(didRollbackTrans), helpstring("method RollbackTrans")] HRESULT RollbackTrans();
};
[
uuid(E7267FA2-7EC0-4577-BE37-0BBF11028A56),
helpstring("MetaPropertySet Class")
]
coclass MetaPropertySet
{
[default] interface IMetaPropertySet;
};
[
uuid(027D8BB9-B860-4B96-B498-7EA609F33250),
helpstring("MetaPropertySets Class")
]
coclass MetaPropertySets
{
[default] interface IMetaPropertySets;
};
[
uuid(A09139F3-47ED-4492-A45E-F7F11B121F4F),
helpstring("MetaPropertyType Class")
]
coclass MetaPropertyType
{
[default] interface IMetaPropertyType;
};
[
uuid(5F24A17F-1DDE-4F37-8B29-489229175C73),
helpstring("MetaPropertyTypes Class")
]
coclass MetaPropertyTypes
{
[default] interface IMetaPropertyTypes;
};
[
uuid(A42A1FF3-BC43-4714-8B94-06103474372B),
helpstring("MetaProperty Class")
]
coclass MetaProperty
{
[default] interface IMetaProperty;
};
[
uuid(78B8FA05-01B2-4B0A-B6E0-59FC6C0E7A5E),
helpstring("MetaProperties Class")
]
coclass MetaProperties
{
[default] interface IMetaProperties;
};
[
uuid(3B575572-EC9F-447D-9554-17C6E92E8328),
helpstring("MetaPropertyCondition Class")
]
coclass MetaPropertyCondition
{
[default] interface IMetaPropertyCondition;
};
[
object,
uuid(59745450-F0F4-4B3F-B49E-55664E425CF6),
dual,
helpstring("IService Interface"),
pointer_default(unique)
]
interface IService : IDispatch
{
[propget, id(didTuneRequest), helpstring("property TuneRequest")] HRESULT TuneRequest([out, retval] IUnknown * *ppunk);
[propputref, id(didTuneRequest), helpstring("property TuneRequest")] HRESULT TuneRequest([in] IUnknown *punk);
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pdt);
[propput, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([in] DATE dt);
[propget, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([out, retval] DATE *pdt);
[propput, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([in] DATE dt);
[propget, id(didProviderName), helpstring("property ProviderName")] HRESULT ProviderName([out, retval] BSTR *pbstrName);
[propput, id(didProviderName), helpstring("property ProviderName")] HRESULT ProviderName([in] BSTR bstrName);
[propget, id(didProviderNetworkName), helpstring("property ProviderNetworkName")] HRESULT ProviderNetworkName([out, retval] BSTR *pbstrName);
[propput, id(didProviderNetworkName), helpstring("property ProviderNetworkName")] HRESULT ProviderNetworkName([in] BSTR bstrName);
[propget, id(didProviderDescription), helpstring("property ProviderDescription")] HRESULT ProviderDescription([out, retval] BSTR *pbstrDesc);
[propput, id(didProviderDescription), helpstring("property ProviderDescription")] HRESULT ProviderDescription([in] BSTR bstrDescr);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didSchedEntries), helpstring("property ScheduleEntries")] HRESULT ScheduleEntries([out, retval] IScheduleEntries * *pVal);
};
[
object,
uuid(D3517044-B747-42C0-AFD5-31265ABA4977),
dual,
helpstring("IServices Interface"),
pointer_default(unique)
]
interface IServices : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IService * *pVal);
[propget, id(didChannelLineups), helpstring("property ChannelLineups")] HRESULT ChannelLineups([out, retval] IChannelLineups * *pVal);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IService * *pVal);
[propget, id(didItemWithProviderName), helpstring("property ItemWithProviderName")] HRESULT ItemWithProviderName(BSTR bstrProviderName, [out, retval] IService * *pVal);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IServices * *ppservices);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IServices * *ppservices);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(IUnknown *punkTuneRequest, BSTR bstrProviderName, BSTR bstrProviderDescription, BSTR bstrProviderNetworkName, DATE dtStart, DATE dtEnd, [out, retval] IService * *pVal);
[propget, id(didItemsInTimeRange), helpstring("property ItemsInTimeRange")] HRESULT ItemsInTimeRange(DATE dtStart, DATE dtEnd, [out, retval] IServices * *pVal);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IServices **ppservices);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IServices * *ppservices);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IService * *ppservice);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(C4001F96-2DEE-4C33-B807-F829889A8CCD),
helpstring("GuideStore Class")
]
coclass GuideStore
{
[default] interface IGuideStore;
};
[
uuid(957D8D57-32B1-4BE3-8E37-EC8849F16815),
helpstring("Service Class")
]
coclass Service
{
[default] interface IService;
};
[
uuid(CCFB9EC5-E28E-4DE1-BD07-1C79303DE0A0),
helpstring("IServicesEvents Interface")
]
dispinterface IServicesEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IService *pservice);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IService *pservice);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(FC91783E-5703-4319-A5B1-19555059559C),
dual,
helpstring("IProgram Interface"),
pointer_default(unique)
]
interface IProgram : IDispatch
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didSchedEntries), helpstring("property ScheduleEntries")] HRESULT ScheduleEntries([out, retval] IScheduleEntries * *pVal);
[propget, id(didTitle), helpstring("property Title")] HRESULT Title([out, retval] BSTR *pVal);
[propput, id(didTitle), helpstring("property Title")] HRESULT Title([in] BSTR newVal);
[propget, id(didDescription), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
[propput, id(didDescription), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
[propget, id(didCopyrightDate), helpstring("property CopyrightDate")] HRESULT CopyrightDate([out, retval] DATE *pVal);
[propput, id(didCopyrightDate), helpstring("property CopyrightDate")] HRESULT CopyrightDate([in] DATE newVal);
};
[
object,
uuid(8786250A-8EF8-4A51-B80A-643CCF835DB6),
dual,
helpstring("IPrograms Interface"),
pointer_default(unique)
]
interface IPrograms : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IProgram * *pVal);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IProgram * *pVal);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IPrograms * *pVal);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IPrograms * *pVal);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew([out, retval] IProgram * *ppprog);
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IPrograms **ppprogs);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IPrograms * *ppprogs);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IProgram * *ppprog);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(43F457D2-C955-48E2-91AD-B91C9154C613),
helpstring("Services Class")
]
coclass Services
{
[default] interface IServices;
[default, source] dispinterface IServicesEvents;
};
[
uuid(C51F670A-7D1A-494E-931D-886BFDB2B438),
helpstring("Program Class")
]
coclass Program
{
[default] interface IProgram;
};
[
uuid(9AB9E463-1EC4-4D6B-AC80-5238561918EE),
helpstring("IProgramsEvents Interface")
]
dispinterface IProgramsEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IProgram *pprog);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IProgram *pprog);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(6C46F789-2156-4AF0-97D7-38D99E2C9160),
dual,
helpstring("IScheduleEntry Interface"),
pointer_default(unique)
]
interface IScheduleEntry : IDispatch
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didService), helpstring("property Service")] HRESULT Service([out, retval] IService * *ppservice);
[propputref, id(didService), helpstring("property Service")] HRESULT Service([in] IService * pservice);
[propget, id(didProgram), helpstring("property Program")] HRESULT Program([out, retval] IProgram * *ppprog);
[propputref, id(didProgram), helpstring("property Program")] HRESULT Program([in] IProgram * pprog);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pdt);
[propput, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([in] DATE dt);
[propget, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([out, retval] DATE *pdt);
[propput, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([in] DATE dt);
[propget, id(didLength), helpstring("property Length")] HRESULT Length([out, retval] long *pVal);
};
[
object,
uuid(E5FDD9C4-8E60-4BEB-BBC8-93BE39C75BAA),
dual,
helpstring("IScheduleEntries Interface"),
pointer_default(unique)
]
interface IScheduleEntries : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IScheduleEntry * *pVal);
[propget, id(didItemWithServiceAtTime), helpstring("property ItemWithServiceAtTime")] HRESULT ItemWithServiceAtTime(IService *pservice, DATE dt, [out, retval] IScheduleEntry * *pVal);
[propget, id(didItemsWithService), helpstring("property ItemsWithService")] HRESULT ItemsWithService(IService *pservice, [out, retval] IScheduleEntries **ppschedentries);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IScheduleEntries * *pVal);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IScheduleEntries * *pVal);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(DATE dtStart, DATE dtEnd, IService *pservice, IProgram *pprog, [out, retval] IScheduleEntry * *pVal);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[propget, id(didItemsInTimeRange), helpstring("property ItemsInTimeRange")] HRESULT ItemsInTimeRange(DATE dtStart, DATE dtEnd, [out, retval] IScheduleEntries * *pVal);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IScheduleEntries * *ppschedentries);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IScheduleEntry * *ppschedentry);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(16C9C579-B3F4-4C94-88EC-A65EA0B839E7),
helpstring("Programs Class")
]
coclass Programs
{
[default] interface IPrograms;
[default, source] dispinterface IProgramsEvents;
};
[
uuid(AFEBCA90-0FF9-48BD-BC98-95477A631BBB),
helpstring("ScheduleEntry Class")
]
coclass ScheduleEntry
{
[default] interface IScheduleEntry;
};
[
uuid(32692A48-F4B5-4826-BE88-E7F8ED9E65DC),
helpstring("IScheduleEntriesEvents Interface")
]
dispinterface IScheduleEntriesEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IScheduleEntry *pschedentry);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IScheduleEntry *pschedentry);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(ED7DF8CD-4861-4389-8149-8EDE63A51F38),
dual,
helpstring("IChannel Interface"),
pointer_default(unique)
]
interface IChannel : IDispatch
{
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propput, id(didName), helpstring("property Name")] HRESULT Name([in] BSTR newVal);
[propget, id(didService), helpstring("property Service")] HRESULT Service([out, retval] IService * *ppservice);
[propputref, id(didService), helpstring("property Service")] HRESULT Service([in] IService *pservice);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didChannelLineups), helpstring("property ChannelLineups")] HRESULT ChannelLineups([out, retval] IChannelLineups * *pVal);
};
[
uuid(226D6AD0-7026-494F-BCAD-FAB087E67290),
helpstring("ScheduleEntries Class")
]
coclass ScheduleEntries
{
[default] interface IScheduleEntries;
[default, source] dispinterface IScheduleEntriesEvents;
};
[
object,
uuid(3BAE53BD-70F0-4C7B-8C9E-E0317FFF8D79),
dual,
helpstring("IChannels Interface"),
pointer_default(unique)
]
interface IChannels : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IChannel * *pVal);
[id(didAddAt), helpstring("method AddAt")] HRESULT AddAt(IChannel *pchan, long index);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT index);
[propget, id(didAddNewAt), helpstring("property AddNewAt")] HRESULT AddNewAt(IService *pservice, BSTR bstrName, long index, [out, retval] IChannel * *pVal);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IChannel **ppchan);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IChannels * *ppchannels);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IChannels **ppchans);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IChannels * *ppchans);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IChannel * *ppchan);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(83568B75-1FCC-4853-957A-9CF617B350A3),
helpstring("Channel Class")
]
coclass Channel
{
[default] interface IChannel;
};
[
uuid(6E945C62-0AB7-4D89-BB9E-212502FC7C88),
helpstring("IChannelsEvents Interface")
]
dispinterface IChannelsEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IChannel *pchan);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IChannel *pchan);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(AB3FF8DB-C718-4ABD-98DE-E14DC74F4872),
dual,
helpstring("IChannelLineup Interface"),
pointer_default(unique)
]
interface IChannelLineup : IDispatch
{
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propput, id(didName), helpstring("property Name")] HRESULT Name([in] BSTR newVal);
[propget, id(didChannels), helpstring("property Channels")] HRESULT Channels([out, retval] IChannels * *pVal);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
};
[
uuid(73AF9077-4F6D-4FCB-A9E2-FDFBB9AE5310),
helpstring("Channels Class")
]
coclass Channels
{
[default] interface IChannels;
[default, source] dispinterface IChannelsEvents;
};
[
object,
uuid(2F78C3E1-98FE-4526-A0A7-A621025AEFF6),
dual,
helpstring("IChannelLineups Interface"),
pointer_default(unique)
]
interface IChannelLineups : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IChannelLineup **ppchanlineup);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(BSTR bstrName, [out, retval] IChannelLineup * *pVal);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IChannelLineups **ppchanlineups);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IChannelLineups * *ppchanlineups);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IChannelLineup * *ppchanlineup);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(8F86A876-E12A-4159-9647-EAFE0288014F),
helpstring("ChannelLineup Class")
]
coclass ChannelLineup
{
[default] interface IChannelLineup;
};
[
uuid(1E3971E3-CCDC-445D-AE97-A15D5D4A40C9),
helpstring("IChannelLineupsEvents Interface")
]
dispinterface IChannelLineupsEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IChannelLineup *pchanlineup);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IChannelLineup *pchanlineup);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(A476A330-1123-4065-B3B7-D1EA899151BD),
helpstring("IObject Interface"),
pointer_default(unique)
]
interface IObject : IUnknown
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didItemRelBy), helpstring("property ItemRelatedBy")] HRESULT ItemRelatedBy([in] IMetaPropertyType *pproptype, [out, retval] IUnknown **ppobj);
[propputref, id(didItemRelBy), helpstring("property ItemRelatedBy")] HRESULT ItemRelatedBy([in] IMetaPropertyType *pproptype, [in] IUnknown *pobj);
[propget, id(didMetaPropertyType), helpstring("property MetaPropertyType")] HRESULT MetaPropertyType([in] BSTR bstr, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didItemsWithType), helpstring("property ObjectsWithType")] HRESULT ObjectsWithType([in] BSTR bstrCLSID, [out, retval] IObjects **ppobjs);
};
[
object,
uuid(E8F1FBD5-4E44-4C26-B3D2-2C1C6999D611),
helpstring("IObjects Interface"),
pointer_default(unique)
]
interface IObjects : IUnknown
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IUnknown * *ppunk);
[propget, id(didItemsWithType), helpstring("property ItemsWithType")] HRESULT ItemsWithType(BSTR bstrCLSID, [out, retval] IObjects * *pVal);
[propget, id(didItemWithIID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IUnknown * *ppunk);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IObjects * *pVal);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *ppropcond, [out, retval] IObjects * *pVal);
[id(didAddAt), helpstring("method AddAt")] HRESULT AddAt(IUnknown *punk, long index);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew([out, retval] IUnknown * *ppunk);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[propget, id(didAddNewAt), helpstring("property AddNewAt")] HRESULT AddNewAt([in] long index, [out, retval] IUnknown * *ppunk);
[propget, id(didItemsInTimeRange), helpstring("property ItemsInTimeRange")] HRESULT ItemsInTimeRange(DATE dtStart, DATE dtEnd, [out, retval] IObjects * *pVal);
[propget, id(didItemsRelToBy), helpstring("property ItemsRelatedToBy")] HRESULT ItemsRelatedToBy([in] IUnknown *pobj, [in] IMetaPropertyType *pproptype, [out, retval] IObjects * *ppobjs);
[propget, id(didItemsInvRelToBy), helpstring("property ItemsInverseRelatedToBy")] HRESULT ItemsInverseRelatedToBy([in] IUnknown *pobj, [in] IMetaPropertyType *pproptype, [out, retval] IObjects * *ppobjs);
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IObjects **ppobjs);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IObjects * *pVal);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IUnknown * *ppunk);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(8520EF80-1C19-4CB0-83FA-67DB59CC9AE4),
helpstring("ChannelLineups Class")
]
coclass ChannelLineups
{
[default] interface IChannelLineups;
[default, source] dispinterface IChannelLineupsEvents;
};
[
uuid(83375A19-A098-42CF-9206-EE36FE48C637),
helpstring("IObjectsNotifications Interface")
]
interface IObjectsNotifications : IUnknown
{
[id(didItemAdded), helpstring("method Notify_ItemAdded")] HRESULT Notify_ItemAdded(IUnknown *punk);
[id(didItemRemoved), helpstring("method Notify_ItemRemoved")] HRESULT Notify_ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method Notify_ItemChanged")] HRESULT Notify_ItemChanged(IUnknown *punk);
[id(didItemsChanged), helpstring("method Notify_ItemsChanged")] HRESULT Notify_ItemsChanged();
};
[
uuid(B485447D-B180-420F-B2A5-E7BBCEA07EAD),
aggregatable,
helpstring("Objects Class")
]
coclass Objects
{
[default] interface IObjects;
};
[
object,
uuid(4B16049B-E548-4868-B303-D501340E2CB1),
dual,
helpstring("IGuideDataProvider Interface"),
pointer_default(unique)
]
interface IGuideDataProvider : IDispatch
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pbstrName);
[propget, id(didDescription), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pbstrDesc);
[propput, id(didDescription), helpstring("property Description")] HRESULT Description([in] BSTR bstrDesc);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
};
[
object,
uuid(CA9DE996-637C-47BF-BC10-CF956BE298EC),
dual,
helpstring("IGuideDataProviders Interface"),
pointer_default(unique)
]
interface IGuideDataProviders : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *plCount);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IGuideDataProvider * *ppdataprovider);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IGuideDataProvider * *ppdataprovider);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IGuideDataProvider **ppdataprovider);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IGuideDataProviders * *ppdataproviders);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IGuideDataProviders * *ppdataproviders);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew([in] BSTR bstrName, [out, retval] IGuideDataProvider * *ppdataprovider);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IGuideDataProviders * *ppproviders);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IGuideDataProvider * *ppprovider);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(3CFC7A68-76E9-4F1D-8ECE-08C44F4FFC3E),
helpstring("GuideDataProvider Class")
]
coclass GuideDataProvider
{
[default] interface IGuideDataProvider;
};
[
uuid(850A646E-140B-43B0-A243-20CC6B9FA8BC),
helpstring("IGuideDataProvidersEvents Interface")
]
dispinterface IGuideDataProvidersEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IChannelLineup *pchanlineup);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IChannelLineup *pchanlineup);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
uuid(6E30077E-2E0B-4D4A-92B0-CDB5E5116E3B),
helpstring("GuideDataProviders Class")
]
coclass GuideDataProviders
{
[default] interface IGuideDataProviders;
[default, source] dispinterface IGuideDataProvidersEvents;
};
};
+715
View File
@@ -0,0 +1,715 @@
// MSVidCtl.idl : IDL source for MSVidCtl.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (MSVidCtl.tlb) and marshalling code.
// Copyright (c) Microsoft Corporation 1998-2000
//
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#pragma once")
#include <olectl.h>
#ifndef DO_NO_IMPORTS
#ifndef TUNING_MODEL_ONLY
import "mshtml.idl";
import "segment.idl";
#endif
#endif
#ifndef TUNING_MODEL_ONLY
typedef enum {
dispidInputs,
dispidOutputs,
dispid_Inputs,
dispid_Outputs,
dispidVideoRenderers,
dispidAudioRenderers,
dispidFeatures,
dispidInput,
dispidOutput,
dispidVideoRenderer,
dispidAudioRenderer,
dispidSelectedFeatures,
dispidView, // total graph control
dispidBuild,
dispidPause,
dispidRun,
dispidStop,
dispidDecompose,
dispidDisplaySize,
dispidMaintainAspectRatio,
dispidColorKey,
dispidStateChange,
dispidgetState,
dispidunbind,
dispidbind,
dispidDisableVideo,
dispidDisableAudio,
dispidViewNext,
dispidServiceP
} MSViddispidList;
typedef enum {
dslDefaultSize,
dslSourceSize = 0, // synonym
dslHalfSourceSize,
dslDoubleSourceSize,
dslFullScreen,
dslHalfScreen,
dslQuarterScreen,
dslSixteenthScreen
} DisplaySizeList;
typedef enum {
STATE_UNBUILT =-1,
STATE_STOP,
STATE_PAUSE,
STATE_PLAY,
} MSVidCtlStateList;
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////
//
// the full Viewer control
//
///////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
[
object,
uuid(B0EDF162-910A-11D2-B632-00C04F79498E),
dual,
hidden,
nonextensible,
helpstring("MS Video Control Interface"),
pointer_default(unique)
]
interface IMSVidCtl : IDispatch
{
// stock props
[propget, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([out,retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([in]VARIANT_BOOL vbool);
[propget, id(DISPID_BACKCOLOR)]
HRESULT BackColor([out,retval]OLE_COLOR* backcolor);
[propput, id(DISPID_BACKCOLOR)]
HRESULT BackColor([in]OLE_COLOR backcolor);
[propget, id(DISPID_ENABLED)]
HRESULT Enabled([out,retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_ENABLED)]
HRESULT Enabled([in]VARIANT_BOOL vbool);
[propget, id(DISPID_TABSTOP)]
HRESULT TabStop([out, retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_TABSTOP)]
HRESULT TabStop([in]VARIANT_BOOL vbool);
[propget, id(DISPID_HWND)]
HRESULT Window([out, retval]HWND* phwnd);
[id(DISPID_REFRESH)]
HRESULT Refresh();
// pseudo video renderer properties/methods that require access to ole container
[propget, id(dispidDisplaySize)]
HRESULT DisplaySize([out,retval]DisplaySizeList *CurrentValue);
[propput, id(dispidDisplaySize)]
HRESULT DisplaySize([in]DisplaySizeList NewValue);
[propget, id(dispidMaintainAspectRatio)]
HRESULT MaintainAspectRatio([out,retval]VARIANT_BOOL *CurrentValue);
[propput, id(dispidMaintainAspectRatio)]
HRESULT MaintainAspectRatio([in]VARIANT_BOOL NewValue);
// non-stock visual propertiies that require coordination/implementation with
// core ctl drawing/painting function
[propget, id(dispidColorKey)]
HRESULT ColorKey([out,retval]OLE_COLOR *CurrentValue);
[propput, id(dispidColorKey)]
HRESULT ColorKey([in]OLE_COLOR NewValue);
// availablee collection
[propget, id(dispidInputs), helpstring("Available Input Devices")] HRESULT InputsAvailable([in] BSTR CategoryGuid, [out, retval] IMSVidInputDevices * *pVal);
[propget, id(dispidOutputs), helpstring("Available Output Devices")] HRESULT OutputsAvailable([in] BSTR CategoryGuid, [out, retval] IMSVidOutputDevices * *pVal);
[propget, id(dispid_Inputs), hidden, restricted, helpstring("Available Input Devices")] HRESULT _InputsAvailable([in] LPCGUID CategoryGuid, [out, retval] IMSVidInputDevices * *pVal);
[propget, id(dispid_Outputs), hidden, restricted, helpstring("Available Output Devices")] HRESULT _OutputsAvailable([in] LPCGUID CategoryGuid, [out, retval] IMSVidOutputDevices * *pVal);
[propget, id(dispidVideoRenderers), helpstring("Available Video Renderers")] HRESULT VideoRenderersAvailable([out, retval] IMSVidVideoRendererDevices * *pVal);
[propget, id(dispidAudioRenderers), helpstring("Available Audio Renderers")] HRESULT AudioRenderersAvailable([out, retval] IMSVidAudioRendererDevices * *pVal);
[propget, id(dispidFeatures), helpstring("Available Features")] HRESULT FeaturesAvailable([out, retval] IMSVidFeatures * *pVal);
// current selections
[propget, id(dispidInput), helpstring("Currently Selected Input Device")] HRESULT InputActive([out, retval] IMSVidInputDevice **pVal);
[propput, id(dispidInput), helpstring("Currently Selected Input Device")] HRESULT InputActive([in] IMSVidInputDevice *pVal);
[propget, id(dispidOutput), helpstring("Currently Selected Output Devices")] HRESULT OutputsActive([out, retval] IMSVidOutputDevices **pVal);
[propput, id(dispidOutput), helpstring("Currently Selected Output Devices")] HRESULT OutputsActive([in] IMSVidOutputDevices *pVal);
[propget, id(dispidVideoRenderer), helpstring("Currently Selected Video Renderer")] HRESULT VideoRendererActive([out, retval] IMSVidVideoRenderer **pVal);
[propput, id(dispidVideoRenderer), helpstring("Currently Selected Video Renderer")] HRESULT VideoRendererActive([in] IMSVidVideoRenderer *pVal);
[propget, id(dispidAudioRenderer), helpstring("Currently Selected Audio Renderer")] HRESULT AudioRendererActive([out, retval] IMSVidAudioRenderer **pVal);
[propput, id(dispidAudioRenderer), helpstring("Currently Selected Audio Renderer")] HRESULT AudioRendererActive([in] IMSVidAudioRenderer *pVal);
[propget, id(dispidSelectedFeatures), helpstring("Currently Selected Features")] HRESULT FeaturesActive([out, retval] IMSVidFeatures **pVal);
[propput, id(dispidSelectedFeatures), helpstring("Currently Selected Features")] HRESULT FeaturesActive([in] IMSVidFeatures *pVal);
[propget, id(dispidgetState), helpstring("Check the current MSVidCtl state.")] HRESULT State([out, retval]MSVidCtlStateList* lState);
// methods
[id(dispidView), helpstring("Find an input device for viewing the specified item. This may be a string(VT_BSTR) or an object(VT_UNKNOWN).")] HRESULT View([in] VARIANT* v);
[id(dispidBuild), helpstring("Compose the graph")] HRESULT Build();
[id(dispidPause), helpstring("Stop the graph")] HRESULT Pause();
[id(dispidRun), helpstring("Compose the graph if necessary and start it running")] HRESULT Run();
[id(dispidStop), helpstring("Stop the graph")] HRESULT Stop();
[id(dispidDecompose), helpstring("Disassemble the graph(Inverse of Build)")] HRESULT Decompose();
[id(dispidDisableVideo), helpstring("set active video renderer to nothing")] HRESULT DisableVideo();
[id(dispidDisableAudio), helpstring("set active Audio renderer to nothing")] HRESULT DisableAudio();
[id(dispidViewNext), helpstring("Find another input device for viewing the specified item. Works like View except skips current input")] HRESULT ViewNext([in] VARIANT* v);
[propput, id(dispidServiceP), helpstring("Set Service Provider")] HRESULT ServiceProvider([in] IUnknown* pServiceP);
};
///Added for the mseventbinder
[
object,
dual,
oleautomation,
hidden,
nonextensible,
pointer_default(unique),
uuid(C3A9F406-2222-436D-86D5-BA3229279EFB),
helpstring("IMSEventBinder Interface"),
]
interface IMSEventBinder : IDispatch {
[id(dispidbind), helpstring("method Bind")] HRESULT Bind([in]LPDISPATCH pEventObject, [in]BSTR EventName, [in]BSTR EventHandler, [out, retval] LONG * CancelID);
[id(dispidunbind), helpstring("method Unbind")] HRESULT Unbind([in]DWORD CancelCookie);
};
#endif // TUNING_MODEL_ONLY
//*****************************************************************************
//*****************************************************************************
//////////////////////////////////////////////////////////////////////////////////////
// Type Library for MS Video Control
//////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
//*****************************************************************************
[
uuid(B0EDF154-910A-11D2-B632-00C04F79498E),
version(1.0),
helpstring("MS Video Control 1.0 Type Library")
]
library MSVidCtlLib
{
importlib("stdole2.tlb");
#ifndef TUNING_MODEL_ONLY
///////////////////////////////////////////////////////////////////////////////////////
// event interfaces
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(B0EDF164-910A-11D2-B632-00C04F79498E),
helpstring("MS Video Control Events Interface")
]
dispinterface _IMSVidCtlEvents
{
properties:
// Event interface has no properties
methods:
[id(DISPID_CLICK)] void Click();
[id(DISPID_DBLCLICK)] void DblClick();
[id(DISPID_KEYDOWN)] void KeyDown(short* KeyCode, short Shift);
[id(DISPID_KEYPRESS)] void KeyPress(short* KeyAscii);
[id(DISPID_KEYUP)] void KeyUp(short* KeyCode, short Shift);
[id(DISPID_MOUSEDOWN)] void MouseDown(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
[id(DISPID_MOUSEMOVE)] void MouseMove(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
[id(DISPID_MOUSEUP)] void MouseUp(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
[id(DISPID_ERROREVENT)] void Error(short Number, BSTR* Description, long Scode, BSTR Source, BSTR HelpFile, long HelpContext, boolean* CancelDisplay);
[id(dispidStateChange)] void StateChange(MSVidCtlStateList PrevState, MSVidCtlStateList CurrState);
};
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
// device classes
///////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
// inputs
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(1C15D484-911D-11d2-B632-00C04F79498E),
helpstring("MS Video Control Analog TV Tuner Device Class")
]
coclass MSVidAnalogTunerDevice
{
[default] interface IMSVidAnalogTuner;
[default, source] interface IMSVidAnalogTunerEvent;
interface IMSVidGraphSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(A2E3074E-6C3D-11d3-B653-00C04F79498E),
helpstring("MS Video Control BDA Tuner Device Class")
]
coclass MSVidBDATunerDevice
{
[default] interface IMSVidTuner;
[default, source] interface IMSVidTunerEvent;
interface IMSVidGraphSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(37B0353C-A4C8-11d2-B634-00C04F79498E),
helpstring("MS Video Control File Playback Device Class")
]
coclass MSVidFilePlaybackDevice
{
[default] interface IMSVidFilePlayback;
[default, source] interface IMSVidFilePlaybackEvent;
interface IMSVidGraphSegment;
};
[
uuid(011B3619-FE63-4814-8A84-15A194CE9CE3),
helpstring("MSVidWebDVD Class")
]
coclass MSVidWebDVD
{
[default] interface IMSVidWebDVD;
[default, source] interface IMSVidWebDVDEvent;
interface IMSVidGraphSegment;
};
[
uuid(FA7C375B-66A7-4280-879D-FD459C84BB02),
helpstring("MSVidWebDVDAdm Class")
]
coclass MSVidWebDVDAdm
{
[default] interface IMSVidWebDVDAdm;
};
// rendererers
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(37B03543-A4C8-11d2-B634-00C04F79498E),
helpstring("MS Video Control Video Renderer Class")
]
coclass MSVidVideoRenderer
{
[default] interface IMSVidVideoRenderer2;
interface IMSVidVideoRenderer;
[default, source] interface IMSVidVideoRendererEvent;
//[default, source] interface IMSVidVideoRendererEvent2;
interface IMSVidGraphSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(37B03544-A4C8-11d2-B634-00C04F79498E),
helpstring("MS Video Control Audio Renderer Class")
]
coclass MSVidAudioRenderer
{
[default] interface IMSVidAudioRenderer;
[default, source] interface IMSVidAudioRendererEvent;
interface IMSVidGraphSegment;
};
// Stream Buffer Sink and Source and Playback
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(9E77AAC4-35E5-42a1-BDC2-8F3FF399847C),
helpstring("MS Video Control Stream Buffer Engine Sink Class")
]
coclass MSVidStreamBufferSink
{
[default] interface IMSVidStreamBufferSink;
[default, source] interface IMSVidStreamBufferSinkEvent;
interface IMSVidGraphSegment;
};
//////////////////////////////////////////////////////////////////////////////////////
[
uuid(AD8E510D-217F-409b-8076-29C5E73B98E8),
helpstring("MS Video Control Stream Buffer Engine Playback Device Class")
]
coclass MSVidStreamBufferSource
{
[default] interface IMSVidStreamBufferSource;
[default, source] interface IMSVidStreamBufferSourceEvent;
interface IMSVidGraphSegment;
};
// features
[
uuid(334125C0-77E5-11d3-B653-00C04F79498E),
helpstring("MS Video Control Standard Data Services for Broadcast IP through NDIS stack")
]
coclass MSVidDataServices
{
interface IMSVidDataServices;
};
[
uuid(BB530C63-D9DF-4b49-9439-63453962E598),
helpstring("MS Video Control Encoder")
]
coclass MSVidEncoder
{
interface IMSVidEncoder;
};
[
uuid(0149EEDF-D08F-4142-8D73-D23903D21E90),
helpstring("MS Video Control Encoder")
]
coclass MSVidXDS
{
interface IMSVidXDS;
};
[
uuid(7F9CB14D-48E4-43b6-9346-1AEBC39C64D3),
helpstring("MS Video Control Standard Closed Captioning")
]
coclass MSVidClosedCaptioning
{
[default] interface IMSVidClosedCaptioning2;
interface IMSVidClosedCaptioning;
};
///////////////////////////////////////////////////////////////////////////////////////
// control classes
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(B0EDF163-910A-11D2-B632-00C04F79498E),
control,
helpstring("MS Video Control Class")
]
coclass MSVidCtl
{
[default] interface IMSVidCtl;
[default, source] dispinterface _IMSVidCtlEvents;
interface IMSVidGraphSegmentContainer;
};
///////////////////////////////////////////////////////////////////////////////////////
// device collections
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(C5702CCC-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Input Device Collection Class")
]
coclass MSVidInputDevices
{
[default] interface IMSVidInputDevices;
};
[
uuid(C5702CCD-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Output Device Collection Class")
]
coclass MSVidOutputDevices
{
[default] interface IMSVidOutputDevices;
};
[
uuid(C5702CCE-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Video Renderer Device Collection Class")
]
coclass MSVidVideoRendererDevices
{
[default] interface IMSVidVideoRendererDevices;
};
[
uuid(C5702CCF-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Audio Renderer Device Collection Class")
]
coclass MSVidAudioRendererDevices
{
[default] interface IMSVidAudioRendererDevices;
};
[
uuid(C5702CD0-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Feature Collection Class")
]
coclass MSVidFeatures
{
[default] interface IMSVidFeatures;
};
///////////////////////////////////////////////////////////////////////////////////////
// composites
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(2764BCE5-CC39-11D2-B639-00C04F79498E),
helpstring("MS Video Control Generic Composition Class")
]
coclass MSVidGenericComposite
{
interface IMSVidCompositionSegment;
};
[
uuid(E18AF75A-08AF-11d3-B64A-00C04F79498E),
helpstring("MS Video Control Custom Composition for Analog Capture to Overlay Mixer")
]
coclass MSVidAnalogCaptureToOverlayMixer
{
interface IMSVidCompositionSegment;
};
[
uuid(C5702CD6-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Custom Composition for Analog Capture to Data Services")
]
coclass MSVidAnalogCaptureToDataServices
{
interface IMSVidCompositionSegment;
};
[
uuid(267db0b3-55e3-4902-949b-df8f5cec0191),
helpstring("MS Video Control Custom Composition for WebDVD to Overlay Mixer")
]
coclass MSVidWebDVDToVideoRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(8D04238E-9FD1-41c6-8DE3-9E1EE309E935),
helpstring("MS Video Control Custom Composition for WebDVD to Audio Renderer")
]
coclass MSVidWebDVDToAudioRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(6AD28EE1-5002-4e71-AAF7-BD077907B1A4),
helpstring("MS Video Control Custom Composition for Mpeg2 Decoder to Closed Captioning")
]
coclass MSVidMPEG2DecoderToClosedCaptioning
{
interface IMSVidCompositionSegment;
};
[
uuid(9F50E8B1-9530-4ddc-825E-1AF81D47AED6),
helpstring("MS Video Control Custom Composition for Analog Capture to Stream Buffer Sink")
]
coclass MSVidAnalogCaptureToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(ABE40035-27C3-4a2f-8153-6624471608AF),
helpstring("MS Video Control Custom Composition for Digital Capture to Stream Buffer Sink")
]
coclass MSVidDigitalCaptureToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(38F03426-E83B-4e68-B65B-DCAE73304838),
helpstring("MS Video Control Custom Composition for Data Services to Stream Buffer Sink")
]
coclass MSVidDataServicesToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(0429EC6E-1144-4bed-B88B-2FB9899A4A3D),
helpstring("MS Video Control Custom Composition for DataServices To XDS")
]
coclass MSVidDataServicesToXDS
{
interface IMSVidCompositionSegment;
};
[
uuid(A0B9B497-AFBC-45ad-A8A6-9B077C40D4F2),
helpstring("MS Video Control Custom Composition for Encoder to Stream Buffer Sink")
]
coclass MSVidEncoderToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(B401C5EB-8457-427f-84EA-A4D2363364B0),
helpstring("MS Video Control Custom Composition for File Playback to Video Renderer")
]
coclass MSVidFilePlaybackToVideoRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(CC23F537-18D4-4ece-93BD-207A84726979),
helpstring("MS Video Control Custom Composition for File Playback to Audio Renderer")
]
coclass MSVidFilePlaybackToAudioRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(28953661-0231-41db-8986-21FF4388EE9B),
helpstring("MS Video Control Custom Composition for TV Tuner to Encoder")
]
coclass MSVidAnalogTVToEncoder
{
interface IMSVidCompositionSegment;
};
[
uuid(3C4708DC-B181-46a8-8DA8-4AB0371758CD),
helpstring("MS Video Control Custom Composition for SBE Source to Video renderer")
]
coclass MSVidStreamBufferSourceToVideoRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(3540D440-5B1D-49cb-821A-E84B8CF065A7),
helpstring("MS Video Control Custom Composition for TV Tuner to XDS")
]
coclass MSVidAnalogCaptureToXDS
{
interface IMSVidCompositionSegment;
};
[
uuid(9193A8F9-0CBA-400e-AA97-EB4709164576),
helpstring("MS Video Control Custom Composition for Stream Buffer Source to CC")
]
coclass MSVidSBESourceToCC
{
interface IMSVidCompositionSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
// Miscellaneous
///////////////////////////////////////////////////////////////////////////////////////
// Events
[
uuid(577FAA18-4518-445E-8F70-1473F8CF4BA4),
helpstring("MSEventBinder Class")
]
coclass MSEventBinder
{
[default] interface IMSEventBinder;
};
[
uuid(CAAFDD83-CEFC-4e3d-BA03-175F17A24F91),
helpstring("MSVidStreamBufferRecordingControl")
]
coclass MSVidStreamBufferRecordingControl
{
[default] interface IMSVidStreamBufferRecordingControl;
};
// vidrect class
[
hidden, restricted,
uuid(CB4276E6-7D5F-4cf1-9727-629C5E6DB6AE),
helpstring("Automation compliant scalable rectangle Class")
]
coclass MSVidRect
{
[default] interface IMSVidRect;
};
// NOTE: there is no object factory for the following classes.
// the implementation for the underlying code is a c++ abstract base class.
// this coclass is only provided here to force vb to expose the base interface
// to enable polymorphic access to derived objects
[
hidden, restricted,
uuid(6E40476F-9C49-4c3e-8BB9-8587958EFF74),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidDevice
{
[default] interface IMSVidDevice;
};
[
hidden, restricted,
uuid(AC1972F2-138A-4ca3-90DA-AE51112EDA28),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidInputDevice
{
[default] interface IMSVidInputDevice;
};
[
hidden, restricted,
uuid(95F4820B-BB3A-4e2d-BC64-5B817BC2C30E),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidVideoInputDevice
{
[default] interface IMSVidVideoInputDevice;
};
[
hidden, restricted,
uuid(1990D634-1A5E-4071-A34A-53AAFFCE9F36),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidVideoPlaybackDevice
{
[default] interface IMSVidPlayback;
};
[
hidden, restricted,
uuid(7748530B-C08A-47ea-B24C-BE8695FF405F),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidFeature
{
[default] interface IMSVidFeature;
};
[
hidden, restricted,
uuid(87EB890D-03AD-4e9d-9866-376E5EC572ED),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidOutput
{
[default] interface IMSVidOutputDevice;
};
#endif //TUNING_MODEL_ONLY
};
// end of file msvidctl.idl
File diff suppressed because it is too large Load Diff
+172
View File
@@ -0,0 +1,172 @@
//------------------------------------------------------------------------------
// File: VideoAcc.idl
//
// Desc: An interface exposed by the overlay mixer to help decode samples
// using hardware video acceleration.
//
// Copyright (c) 1992-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the motncomp.idl file build. The actual definitions are contained in ddraw.h and amva.h")
cpp_quote("//")
cpp_quote("#if 0")
typedef void* LPVOID;
typedef void* LPGUID;
typedef void* LPDIRECTDRAWSURFACE;
typedef void* LPDDPIXELFORMAT;
typedef void* LPAMVAInternalMemInfo;
typedef void AMVAUncompDataInfo;
typedef void* LPAMVACompBufferInfo;
typedef void AMVABUFFERINFO;
typedef void AMVAEndFrameInfo;
typedef void* LPAMVAUncompBufferInfo;
typedef void AMVABeginFrameInfo;
typedef IUnknown* IMediaSample;
cpp_quote("#endif")
cpp_quote("#include <ddraw.h>")
cpp_quote("#include <amva.h>")
[
local,
object,
uuid(256A6A21-FBAD-11d1-82BF-00A0C9696C8F),
helpstring("IAMVideoAcceleratorNotify Interface"),
pointer_default(unique)
]
// IAMVideoAcceleratorNotify
interface IAMVideoAcceleratorNotify : IUnknown
{
// get information necessary to allocate uncompressed data buffers
// which is not part of the mediatype format (like how many buffers to allocate etc)
HRESULT GetUncompSurfacesInfo([in] const GUID *pGuid, [in] [out] LPAMVAUncompBufferInfo pUncompBufferInfo);
// set information regarding allocated uncompressed data buffers
HRESULT SetUncompSurfacesInfo([in] DWORD dwActualUncompSurfacesAllocated);
// get information necessary to create video accelerator object. It is the caller's responsibility
// to call CoTaskMemFree() on *ppMiscData
HRESULT GetCreateVideoAcceleratorData([in] const GUID *pGuid, [out] LPDWORD pdwSizeMiscData, [out] LPVOID *ppMiscData);
};
[
local,
object,
uuid(256A6A22-FBAD-11d1-82BF-00A0C9696C8F),
helpstring("IAMVideoAccelerator Interface"),
pointer_default(unique)
]
// IAMVideoAccelerator
interface IAMVideoAccelerator : IUnknown
{
// pdwNumGuidsSupported is an IN OUT paramter
// pGuidsSupported is an IN OUT paramter
// if pGuidsSupported is NULL, pdwNumGuidsSupported should return back with the
// number of uncompressed pixel formats supported
// Otherwise pGuidsSupported is an array of *pdwNumGuidsSupported structures
HRESULT GetVideoAcceleratorGUIDs([in] [out] LPDWORD pdwNumGuidsSupported, [in] [out] LPGUID pGuidsSupported);
// pGuid is an IN parameter
// pdwNumFormatsSupported is an IN OUT paramter
// pFormatsSupported is an IN OUT paramter (caller should make sure to set the size of EACH struct)
// if pFormatsSupported is NULL, pdwNumFormatsSupported should return back with
// the number of uncompressed pixel formats supported
// Otherwise pFormatsSupported is an array of *pdwNumFormatsSupported structures
HRESULT GetUncompFormatsSupported( [in] const GUID *pGuid, [in] [out] LPDWORD pdwNumFormatsSupported,
[in] [out] LPDDPIXELFORMAT pFormatsSupported);
// pGuid is an IN parameter
// pamvaUncompDataInfo is an IN parameter
// pamvaInternalMemInfo is an IN OUT parameter (caller should make sure to set the size of struct)
// currently only gets info about how much scratch memory will the hal allocate for its private use
HRESULT GetInternalMemInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
[in] [out] LPAMVAInternalMemInfo pamvaInternalMemInfo);
// pGuid is an IN parameter
// pamvaUncompDataInfo is an IN parameter
// pdwNumTypesCompBuffers is an IN OUT paramter
// pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
// if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
// compressed buffers
// Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
HRESULT GetCompBufferInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
[in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
// pdwNumTypesCompBuffers is an IN OUT paramter
// pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
// if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
// compressed buffers
// Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
// only valid to call this after the pins are connected
HRESULT GetInternalCompBufferInfo([in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
// begin a frame, the pMiscData is passed directly to the hal
// only valid to call this after the pins are connected
// Tells the ovmixer which frame is the destination
// frame. Use indices (valid vales are [0 .. pdwNumSurfacesAllocated-1]) to specify frames
HRESULT BeginFrame([in] const AMVABeginFrameInfo *amvaBeginFrameInfo);
// end a frame, the pMiscData is passed directly to the hal
// only valid to call this after the pins are connected
HRESULT EndFrame([in] const AMVAEndFrameInfo *pEndFrameInfo);
// lock and obtain access to a single buffer
// only valid to call this after the pins are connected
// Buffers are identified by type and index within that type
// Specifiying read-only will allow access to busy reference
// frames
// Output (uncompressed) frames use a type index of 0xFFFFFFFF
HRESULT GetBuffer(
[in] DWORD dwTypeIndex,
[in] DWORD dwBufferIndex,
[in] BOOL bReadOnly,
[out] LPVOID *ppBuffer,
[out] LONG *lpStride);
// unlock a single buffer
// Buffers are identified by type and index within that type
// only valid to call this after the pins are connected
HRESULT ReleaseBuffer([in] DWORD dwTypeIndex, [in] DWORD dwBufferIndex);
// Perform a decompression operation
// Private data can be passed to and from a driver
// identifiers for the corresponding members of pamvaMacroBlockInfo
// pamvaMacroBlockInfo is an IN parameter which is array (of length dwNumBlocks) of structures
// only valid to call this after the pins are connected
HRESULT Execute(
[in] DWORD dwFunction,
[in] LPVOID lpPrivateInputData,
[in] DWORD cbPrivateInputData,
[in] LPVOID lpPrivateOutputDat,
[in] DWORD cbPrivateOutputData,
[in] DWORD dwNumBuffers,
[in] const AMVABUFFERINFO *pamvaBufferInfo);
// query the decode status of a particular decompression operation
// dwTypeIndex and dwBufferIndex define the buffer whose status is
// being queried
HRESULT QueryRenderStatus([in] DWORD dwTypeIndex,
[in] DWORD dwBufferIndex,
[in] DWORD dwFlags);
// display a frame. The mediasample contains the timestamps etc for the frame to be displayed
// this call is a non-blocking call
// only valid to call this after the pins are connected
HRESULT DisplayFrame([in] DWORD dwFlipToIndex, [in] IMediaSample *pMediaSample);
};
File diff suppressed because it is too large Load Diff
+334
View File
@@ -0,0 +1,334 @@
//------------------------------------------------------------------------------
// File: AMStream.idl
//
// Desc:
//
// Copyright (c) 1998 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "mmstream.idl";
import "strmif.idl";
cpp_quote("#include <ddraw.h>")
cpp_quote("#include <mmsystem.h>")
cpp_quote("#include <mmstream.h>")
cpp_quote("#include <ddstream.h>")
cpp_quote("#include <austream.h>")
interface IAMMultiMediaStream;
interface IAMMediaStream;
interface IMediaStreamFilter;
interface IDirectDraw;
interface IDirectDrawSurface;
interface IAMMediaTypeStream;
interface IAMMediaTypeSample;
// Flags definitions for IAMMultiMediaStream::Initialize
enum {
AMMSF_NOGRAPHTHREAD = 0x00000001
};
// Flags definitions for AddMediaStream and IAMMediaStream::Initialize
enum {
// Don't add a stream - create a default renderer instead
// for the supplied purpose id
AMMSF_ADDDEFAULTRENDERER = 0x00000001,
AMMSF_CREATEPEER = 0x00000002,
// If no samples are created when we run or the last sample
// is deleted then terminate this stream
AMMSF_STOPIFNOSAMPLES = 0x00000004,
// If Update is not called keep going
AMMSF_NOSTALL = 0x00000008
};
// Flag definitions for OpenFile and OpenMoniker
enum {
AMMSF_RENDERTYPEMASK = 0x00000003,
AMMSF_RENDERTOEXISTING = 0x00000000,
AMMSF_RENDERALLSTREAMS = 0x00000001,
AMMSF_NORENDER = 0x00000002,
AMMSF_NOCLOCK = 0x00000004,
AMMSF_RUN = 0x00000008
};
typedef [v1_enum] enum {
Disabled = 0,
ReadData = 1,
RenderData = 2
} OUTPUT_STATE;
[
object,
uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D),
dual,
helpstring("IDirectShowStream Interface"),
pointer_default(unique)
]
interface IDirectShowStream : IDispatch
{
[propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal);
[propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal);
[propput, id(2), helpstring("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal);
[propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal);
[propput, id(3), helpstring("propetry Audio")] HRESULT Audio([in] OUTPUT_STATE newVal);
};
// IAMMultiMediaStream interface
[
object,
uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IAMMultiMediaStream : IMultiMediaStream
{
HRESULT Initialize(
[in] STREAM_TYPE StreamType,
[in] DWORD dwFlags,
[in] IGraphBuilder *pFilterGraph);
HRESULT GetFilterGraph(
[out] IGraphBuilder **ppGraphBuilder);
HRESULT GetFilter(
[out] IMediaStreamFilter **ppFilter);
HRESULT AddMediaStream(
[in] IUnknown *pStreamObject,
[in] const MSPID *PurposeId,
[in] DWORD dwFlags,
[out] IMediaStream **ppNewStream);
HRESULT OpenFile(
[in] LPCWSTR pszFileName,
[in] DWORD dwFlags);
HRESULT OpenMoniker(
[in] IBindCtx *pCtx,
[in] IMoniker *pMoniker,
[in] DWORD dwFlags);
HRESULT Render(
[in] DWORD dwFlags);
}
// IAMMediaStream interface
[
object,
uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IAMMediaStream : IMediaStream
{
HRESULT Initialize(
[in] IUnknown *pSourceObject,
[in] DWORD dwFlags,
[in] REFMSPID PurposeId,
[in] const STREAM_TYPE StreamType);
HRESULT SetState(
[in] FILTER_STATE State);
HRESULT JoinAMMultiMediaStream(
[in] IAMMultiMediaStream *pAMMultiMediaStream);
HRESULT JoinFilter(
[in] IMediaStreamFilter *pMediaStreamFilter);
HRESULT JoinFilterGraph(
[in] IFilterGraph *pFilterGraph);
};
// IMediaStreamFilter interface
[
object,
local,
uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IMediaStreamFilter : IBaseFilter
{
HRESULT AddMediaStream(
[in] IAMMediaStream *pAMMediaStream);
HRESULT GetMediaStream(
[in] REFMSPID idPurpose,
[out] IMediaStream **ppMediaStream);
HRESULT EnumMediaStreams(
[in] long Index,
[out] IMediaStream **ppMediaStream);
HRESULT SupportSeeking(
[in] BOOL bRenderer);
HRESULT ReferenceTimeToStreamTime(
[in] [out] REFERENCE_TIME *pTime);
HRESULT GetCurrentStreamTime(
[out] REFERENCE_TIME *pCurrentStreamTime);
HRESULT WaitUntil(
[in] REFERENCE_TIME WaitStreamTime);
HRESULT Flush(
[in] BOOL bCancelEOS);
HRESULT EndOfStream();
};
[
object,
local,
uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawMediaSampleAllocator : IUnknown
{
HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw);
};
[
object,
local,
uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawMediaSample : IUnknown
{
HRESULT GetSurfaceAndReleaseLock(
[out] IDirectDrawSurface **ppDirectDrawSurface,
[out] RECT * pRect);
HRESULT LockMediaSamplePointer(void);
};
[
object,
local,
uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IAMMediaTypeStream : IMediaStream
{
HRESULT GetFormat(
[out] AM_MEDIA_TYPE * pMediaType,
[in] DWORD dwFlags);
HRESULT SetFormat(
[in] AM_MEDIA_TYPE * pMediaType,
[in] DWORD dwFlags);
HRESULT CreateSample(
[in] long lSampleSize,
[in] BYTE * pbBuffer,
[in] DWORD dwFlags,
[in] IUnknown *pUnkOuter,
[out] IAMMediaTypeSample ** ppAMMediaTypeSample);
HRESULT GetStreamAllocatorRequirements(
[out] ALLOCATOR_PROPERTIES *pProps);
HRESULT SetStreamAllocatorRequirements(
[in] ALLOCATOR_PROPERTIES *pProps);
};
[
object,
local,
uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IAMMediaTypeSample : IStreamSample
{
//
// Unique methods for IAMMediaTypeSample
//
HRESULT SetPointer([in] BYTE *pBuffer, [in] long lSize);
//
// Mirror of IMediaSample
//
HRESULT GetPointer([out] BYTE ** ppBuffer);
long GetSize(void);
HRESULT GetTime([out] REFERENCE_TIME * pTimeStart, [out] REFERENCE_TIME * pTimeEnd);
HRESULT SetTime([in] REFERENCE_TIME * pTimeStart, [in] REFERENCE_TIME * pTimeEnd);
HRESULT IsSyncPoint(void);
HRESULT SetSyncPoint(BOOL bIsSyncPoint);
HRESULT IsPreroll(void);
HRESULT SetPreroll(BOOL bIsPreroll);
long GetActualDataLength(void);
HRESULT SetActualDataLength(long);
HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType);
HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType);
HRESULT IsDiscontinuity(void);
HRESULT SetDiscontinuity(BOOL bDiscontinuity);
HRESULT GetMediaTime([out] LONGLONG * pTimeStart, [out] LONGLONG * pTimeEnd);
HRESULT SetMediaTime([in] LONGLONG * pTimeStart, [in] LONGLONG * pTimeEnd);
};
[
uuid(4E6CDE29-C0C4-11d0-8FF1-00C04FD9189D),
version(1.0),
helpstring("DirectShowStream 1.0 Type Library")
]
library DirectShowStreamLib
{
importlib("stdole2.tlb");
[
uuid(49c47ce5-9ba4-11d0-8212-00c04fc32c45),
helpstring("DirectShow Multi Media Stream")
]
coclass AMMultiMediaStream
{
[default] dispinterface IDirectShowStream;
};
};
//
// The MIDL compiler wants to produce a CLSID for everything defined in
// our type library, but it also wants to generate huge proxy code,
// so we use DEFINE_GUID for all other classes. It has another interesting
// bug in that it defines CLSID_AMMultiMediaStream within a #ifdef __cplusplus
// block, so we need to define it outside of that scope.
//
cpp_quote("#ifndef __cplusplus")
cpp_quote("EXTERN_C const CLSID CLSID_AMMultiMediaStream;")
cpp_quote("#endif")
cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, /* 49c47ce4-9ba4-11d0-8212-00c04fc32c45 */")
cpp_quote("0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
cpp_quote("DEFINE_GUID(CLSID_AMAudioStream, /* 8496e040-af4c-11d0-8212-00c04fc32c45 */")
cpp_quote("0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
cpp_quote("DEFINE_GUID(CLSID_AMAudioData, /* f2468580-af8a-11d0-8212-00c04fc32c45 */")
cpp_quote("0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream, /* CF0F2F7C-F7BF-11d0-900D-00C04FD9189D */")
cpp_quote("0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0xd, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
+106
View File
@@ -0,0 +1,106 @@
//------------------------------------------------------------------------------
// File: AuStream.idl
//
// Desc: Used by MIDL tool to generate austream.h
//
// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "mmstream.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the ddstream.idl file build. The actual definitions are contained in DDRAW.H")
cpp_quote("//")
cpp_quote("#if 0")
typedef struct tWAVEFORMATEX WAVEFORMATEX;
cpp_quote ("#endif")
interface IAudioMediaStream;
interface IAudioStreamSample;
interface IMemoryData;
interface IAudioData;
// IAudioMediaStream
[
object,
local,
uuid(f7537560-a3be-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IAudioMediaStream : IMediaStream
{
HRESULT GetFormat(
[out] WAVEFORMATEX *pWaveFormatCurrent
);
HRESULT SetFormat(
[in] const WAVEFORMATEX *lpWaveFormat);
HRESULT CreateSample(
[in] IAudioData *pAudioData,
[in] DWORD dwFlags,
[out] IAudioStreamSample **ppSample
);
}
[
object,
local,
uuid(345fee00-aba5-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IAudioStreamSample : IStreamSample
{
HRESULT GetAudioData(
[out] IAudioData **ppAudio
);
}
[
object,
local,
uuid(327fc560-af60-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IMemoryData : IUnknown
{
HRESULT SetBuffer(
[in] DWORD cbSize,
[in] BYTE *pbData,
[in] DWORD dwFlags
);
HRESULT GetInfo(
[out] DWORD *pdwLength,
[out] BYTE **ppbData,
[out] DWORD *pcbActualData
);
HRESULT SetActual(
[in] DWORD cbDataValid
);
}
[
object,
local,
uuid(54c719c0-af60-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IAudioData : IMemoryData
{
HRESULT GetFormat(
[out] WAVEFORMATEX *pWaveFormatCurrent
);
HRESULT SetFormat(
[in] const WAVEFORMATEX *lpWaveFormat
);
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+912
View File
@@ -0,0 +1,912 @@
//==========================================================================;
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright (c) 1992 - 2002 Microsoft Corporation. All Rights Reserved.
//
//--------------------------------------------------------------------------;
// Neutral/English language type library for basic Quartz control interfaces
// the quartz type library defines the basic control interfaces
[
uuid(56a868b0-0ad4-11ce-b03a-0020af0ba770),
helpstring("ActiveMovie control type library"),
lcid(0x0000),
version(1.0)
]
library QuartzTypeLib
{
importlib("STDOLE2.TLB");
// types are restricted to be automation-compatible
typedef double REFTIME; // ReferenceTime
typedef LONG_PTR OAEVENT; // should be a HANDLE
typedef LONG_PTR OAHWND; // should be an hwnd
// from strmif.idl
typedef long OAFilterState;
// collection interface - represents a collection of IUnknowns
// this is used below to collect filter-info objects, registry-filters
// pin-info objects and wrapped media type objects
[
uuid(56a868b9-0ad4-11ce-b03a-0020af0ba770),
helpstring("Collection"),
odl,
oleautomation,
dual
]
interface IAMCollection : IDispatch
{
// number of items in collection
[propget]
HRESULT Count(
[out, retval] LONG* plCount);
// return IUnknown for contained item by index
HRESULT Item(
[in] long lItem,
[out] IUnknown** ppUnk);
// return IUnknown for an object that implements IEnumVARIANT on
// this collection
[propget]
HRESULT _NewEnum(
[out, retval] IUnknown** ppUnk);
}
// core control providing state control
[
uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaControl interface"),
odl,
oleautomation,
dual
]
interface IMediaControl : IDispatch
{
// methods
HRESULT Run();
HRESULT Pause();
HRESULT Stop();
//returns the state. same semantics as IMediaFilter::GetState
HRESULT GetState(
[in] LONG msTimeout,
[out] OAFilterState* pfs);
// adds and connects filters needed to play the specified file
// (same as IFilterGraph::RenderFile)
HRESULT RenderFile(
[in] BSTR strFilename);
// adds to the graph the source filter that can read this file,
// and returns an IFilterInfo object for it (actually returns
// an IDispatch for the IFilterInfo object).
HRESULT AddSourceFilter(
[in] BSTR strFilename,
[out] IDispatch**ppUnk);
// get a collection of IFilterInfo objects representing the
// filters in the graph (returns IDispatch for an object
// that supports IAMCollection
[propget]
HRESULT FilterCollection(
[out, retval] IDispatch** ppUnk);
// get a collection of IRegFilter objects representing the
// filters available in the registry
[propget]
HRESULT RegFilterCollection(
[out, retval] IDispatch** ppUnk);
HRESULT StopWhenReady();
}
// provides an event notification scheme passing events
// asynchronously to applications. See also IMediaEventSink in
// strmif.idl and sdk\h\evcodes.h.
//
// this interface behaves as if events are held on a queue. A call to
// IMediaEventSink::Notify will place an event on this queue. Calling
// GetEvent removes the first item off the queue and returns it. Items are
// returned in the order they were queued (there is no priority scheme).
// The event handle is in a signalled state iff the queue is non-empty.
//
// Apps that issue multiple Run calls without always picking up the
// completion events are advised to call GetEvent or WaitForCompletion
// (with a 0 timeout) repeatedly to remove all events from the queue
// when in stopped or paused state before each Run method.
//
// Parameters to events are actually LONG, IUnknown* or BSTR. You need to
// look at evcode.h for details of parameters to a specific event code.
// In order to correctly free resources, always call FreeEventParams
// after receiving an event.
//
[
uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaEvent interface"),
odl,
oleautomation,
dual
]
interface IMediaEvent : IDispatch
{
// get back the event handle. This is manual-reset
// (don't - it's reset by the event mechanism) and remains set
// when events are queued, and reset when the queue is empty.
HRESULT GetEventHandle(
[out] OAEVENT * hEvent);
// remove the next event notification from the head of the queue and
// return it. Waits up to msTimeout millisecs if there are no events.
// if a timeout occurs without any events, this method will return
// E_ABORT, and the value of the event code and other parameters
// is undefined.
//
// If this call returns successfully the caller MUST call
// FreeEventParams(lEventCode, lParam1, lParam2) to release
// resources held inside the event arguments
//
HRESULT GetEvent(
[out] long * lEventCode,
[out] LONG_PTR * lParam1,
[out] LONG_PTR * lParam2,
[in] long msTimeout
);
// Calls GetEvent repeatedly discarding events until it finds a
// completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
// The completion event is removed from the queue and returned
// in pEvCode. Note that the object is still in running mode until
// a Pause or Stop call is made.
// If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
// returned.
HRESULT WaitForCompletion(
[in] long msTimeout,
[out] long * pEvCode);
// cancels any system handling of the specified event code
// and ensures that the events are passed straight to the application
// (via GetEvent) and not handled. A good example of this is
// EC_REPAINT: default handling for this ensures the painting of the
// window and does not get posted to the app.
HRESULT CancelDefaultHandling(
[in] long lEvCode);
// restore the normal system default handling that may have been
// cancelled by CancelDefaultHandling().
HRESULT RestoreDefaultHandling( [in] long lEvCode);
// Free any resources associated with the parameters to an event.
// Event parameters may be LONGs, IUnknown* or BSTR. No action
// is taken with LONGs. IUnknown are passed addrefed and need a
// Release call. BSTR are allocated by the task allocator and will be
// freed by calling the task allocator.
HRESULT FreeEventParams(
[in] long lEvCode,
[in] LONG_PTR lParam1,
[in] LONG_PTR lParam2
);
}
[
uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaEventEx interface"),
odl
]
interface IMediaEventEx : IMediaEvent
{
// Register a window to send messages to when events occur
// Parameters:
//
// hwnd - handle of window to notify -
// pass NULL to stop notification
// lMsg - Message id to pass messages with
// lInstanceData - will come back in lParam
//
// The event information must still be retrived by a call
// to GetEvent when the window message is received.
//
// Multiple events may be notified with one window message.
//
HRESULT SetNotifyWindow(
[in] OAHWND hwnd,
[in] long lMsg,
[in] LONG_PTR lInstanceData
);
// Turn events notification on or off
// lNoNotify = 0x00 event notification is ON
// lNoNotify = 0x01 event notification is OFF. The
// handle returned by GetEventHandle will be signalled at
// end of stream
HRESULT SetNotifyFlags(
[in] long lNoNotifyFlags
);
HRESULT GetNotifyFlags(
[out] long *lplNoNotifyFlags
);
}
// seek/cueing for positional media
[
uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaPosition interface"),
odl,
oleautomation,
dual
]
interface IMediaPosition : IDispatch
{
// properties
[propget]
HRESULT Duration(
[out, retval] REFTIME* plength);
[propput]
HRESULT CurrentPosition(
[in] REFTIME llTime);
[propget]
HRESULT CurrentPosition(
[out, retval] REFTIME* pllTime);
[propget]
HRESULT StopTime(
[out, retval] REFTIME* pllTime);
[propput]
HRESULT StopTime(
[in] REFTIME llTime);
[propget]
HRESULT PrerollTime(
[out, retval] REFTIME* pllTime);
[propput]
HRESULT PrerollTime(
[in] REFTIME llTime);
[propput]
HRESULT Rate(
[in] double dRate);
[propget]
HRESULT Rate(
[out, retval] double * pdRate);
HRESULT CanSeekForward([out, retval] LONG *pCanSeekForward);
HRESULT CanSeekBackward([out, retval] LONG *pCanSeekBackward);
}
// basic audio-related functionality
[
uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
helpstring("IBasicAudio interface"),
odl,
oleautomation,
dual
]
interface IBasicAudio : IDispatch
{
// properties
[propput]
HRESULT Volume(
[in] long lVolume);
[propget]
HRESULT Volume(
[out, retval] long * plVolume);
[propput]
HRESULT Balance(
[in] long lBalance);
[propget]
HRESULT Balance(
[out, retval] long * plBalance);
}
// basic window-related functionality
[
uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
helpstring("IVideoWindow interface"),
odl,
oleautomation,
dual
]
interface IVideoWindow : IDispatch
{
// properties
// set and get the window title caption
[propput]
HRESULT Caption([in] BSTR strCaption);
[propget]
HRESULT Caption([out, retval] BSTR *strCaption);
// change the window styles (as per Win32)
[propput]
HRESULT WindowStyle([in] long WindowStyle);
[propget]
HRESULT WindowStyle([out, retval] long *WindowStyle);
// change the extended window styles (as per Win32)
[propput]
HRESULT WindowStyleEx([in] long WindowStyleEx);
[propget]
HRESULT WindowStyleEx([out, retval] long *WindowStyleEx);
[propput]
HRESULT AutoShow([in] long AutoShow);
[propget]
HRESULT AutoShow([out, retval] long *AutoShow);
// change the window state (as per Win32)
[propput]
HRESULT WindowState([in] long WindowState);
[propget]
HRESULT WindowState([out, retval] long *WindowState);
// realise the palette in the background
[propput]
HRESULT BackgroundPalette([in] long BackgroundPalette);
[propget]
HRESULT BackgroundPalette([out, retval] long *pBackgroundPalette);
// affect the visibility of the window
[propput]
HRESULT Visible([in] long Visible);
[propget]
HRESULT Visible([out, retval] long *pVisible);
// change the desktop position of the video window
[propput]
HRESULT Left([in] long Left);
[propget]
HRESULT Left([out, retval] long *pLeft);
[propput]
HRESULT Width([in] long Width);
[propget]
HRESULT Width([out, retval] long *pWidth);
[propput]
HRESULT Top([in] long Top);
[propget]
HRESULT Top([out, retval] long *pTop);
[propput]
HRESULT Height([in] long Height);
[propget]
HRESULT Height([out, retval] long *pHeight);
// change the owning window of the video
[propput]
HRESULT Owner([in] OAHWND Owner);
[propget]
HRESULT Owner([out, retval] OAHWND *Owner);
// change the window to receive posted messages
[propput]
HRESULT MessageDrain([in] OAHWND Drain);
[propget]
HRESULT MessageDrain([out, retval] OAHWND *Drain);
[propget]
HRESULT BorderColor([out, retval] long *Color);
[propput]
HRESULT BorderColor([in] long Color);
[propget]
HRESULT FullScreenMode([out, retval] long *FullScreenMode);
[propput]
HRESULT FullScreenMode([in] long FullScreenMode);
// methods
// ask the renderer to grab it's window the foreground
// and optionally also give the window the input focus
HRESULT SetWindowForeground([in] long Focus);
// owners should pass WM_PALETTECHANGED and WM_SYSCOLORCHANGE
// messages on the filter graph so they can be distributed
// otherwise child renderers never see these messages go by
HRESULT NotifyOwnerMessage([in] OAHWND hwnd,
[in] long uMsg,
[in] LONG_PTR wParam,
[in] LONG_PTR lParam
);
// get and set the window position on the desktop
HRESULT SetWindowPosition([in] long Left,
[in] long Top,
[in] long Width,
[in] long Height);
HRESULT GetWindowPosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
// get the ideal sizes for the video image playback (client) area
HRESULT GetMinIdealImageSize([out] long *pWidth,[out] long *pHeight);
HRESULT GetMaxIdealImageSize([out] long *pWidth,[out] long *pHeight);
// get the restored window size when we're maximised or iconic
HRESULT GetRestorePosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
// show and hide cursors useful when fullscreen
HRESULT HideCursor([in] long HideCursor);
HRESULT IsCursorHidden([out] long *CursorHidden);
}
// basic video-related functionality
[
uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
helpstring("IBasicVideo interface"),
odl,
oleautomation,
dual
]
interface IBasicVideo : IDispatch
{
// properties
// Video specific (approximate) bit and frame rates
[propget]
HRESULT AvgTimePerFrame([out, retval] REFTIME *pAvgTimePerFrame);
[propget]
HRESULT BitRate([out, retval] long *pBitRate);
[propget]
HRESULT BitErrorRate([out, retval] long *pBitErrorRate);
// read the native video size
[propget]
HRESULT VideoWidth([out, retval] long *pVideoWidth);
[propget]
HRESULT VideoHeight([out, retval] long *pVideoHeight);
// change the source rectangle for the video
[propput]
HRESULT SourceLeft([in] long SourceLeft);
[propget]
HRESULT SourceLeft([out, retval] long *pSourceLeft);
[propput]
HRESULT SourceWidth([in] long SourceWidth);
[propget]
HRESULT SourceWidth([out, retval] long *pSourceWidth);
[propput]
HRESULT SourceTop([in] long SourceTop);
[propget]
HRESULT SourceTop([out, retval] long *pSourceTop);
[propput]
HRESULT SourceHeight([in] long SourceHeight);
[propget]
HRESULT SourceHeight([out, retval] long *pSourceHeight);
// change the destination rectangle for the video
[propput]
HRESULT DestinationLeft([in] long DestinationLeft);
[propget]
HRESULT DestinationLeft([out, retval] long *pDestinationLeft);
[propput]
HRESULT DestinationWidth([in] long DestinationWidth);
[propget]
HRESULT DestinationWidth([out, retval] long *pDestinationWidth);
[propput]
HRESULT DestinationTop([in] long DestinationTop);
[propget]
HRESULT DestinationTop([out, retval] long *pDestinationTop);
[propput]
HRESULT DestinationHeight([in] long DestinationHeight);
[propget]
HRESULT DestinationHeight([out, retval] long *pDestinationHeight);
// methods
// get and set the source rectangle position
HRESULT SetSourcePosition([in] long Left,
[in] long Top,
[in] long Width,
[in] long Height);
HRESULT GetSourcePosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
HRESULT SetDefaultSourcePosition();
// get and set the destination rectangle position
HRESULT SetDestinationPosition([in] long Left,
[in] long Top,
[in] long Width,
[in] long Height);
HRESULT GetDestinationPosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
HRESULT SetDefaultDestinationPosition();
// get the native video dimensions
HRESULT GetVideoSize([out] long *pWidth,[out] long *pHeight);
// get all or some of the current video palette
HRESULT GetVideoPaletteEntries([in] long StartIndex,
[in] long Entries,
[out] long *pRetrieved,
[out] long *pPalette);
HRESULT GetCurrentImage([in,out] long *pBufferSize,
[out] long *pDIBImage);
// are we using a default source or destination
HRESULT IsUsingDefaultSource();
HRESULT IsUsingDefaultDestination();
}
// interface extension to IBasicVideo to return preferred aspect ratio
[
uuid(329bb360-f6ea-11d1-9038-00a0c9697298),
helpstring("IBasicVideo2"),
odl
]
interface IBasicVideo2 : IBasicVideo
{
// This may not match the native video dimensions because of
// non-square pixels or whatever.
// The video may not always be displayed in the preferred
// aspect ratio for performance reasons
HRESULT GetPreferredAspectRatio([out] long *plAspectX,
[out] long *plAspectY);
}
// interface returned to a command that has been queued via IQueueCommand
[
uuid(56a868b8-0ad4-11ce-b03a-0020af0ba770),
helpstring("IDeferredCommand"),
odl
]
interface IDeferredCommand : IUnknown
{
HRESULT Cancel();
HRESULT Confidence(
[out] LONG* pConfidence);
HRESULT Postpone(
[in] REFTIME newtime);
// return value is S_OK if completed. phrResult is set to the
// result of the deferred command.
HRESULT GetHResult(
[out] HRESULT* phrResult);
};
// queue an IDispatch-based command for execution at a specified time
[
uuid(56a868b7-0ad4-11ce-b03a-0020af0ba770),
helpstring("IQueueCommand"),
odl
]
interface IQueueCommand : IUnknown
{
HRESULT InvokeAtStreamTime(
[out] IDeferredCommand** pCmd,
[in] REFTIME time, // at this streamtime
[in] GUID* iid, // call this interface
[in] long dispidMethod, // ..and this method
[in] short wFlags, // method/property
[in] long cArgs, // count of args
[in] VARIANT* pDispParams, // actual args
[in, out] VARIANT* pvarResult, // return value
[out] short* puArgErr // which arg in error
);
HRESULT InvokeAtPresentationTime(
[out] IDeferredCommand** pCmd,
[in] REFTIME time, // at this presentation time
[in] GUID* iid, // call this interface
[in] long dispidMethod, // ..and this method
[in] short wFlags, // method/property
[in] long cArgs, // count of args
[in] VARIANT* pDispParams, // actual args
[in, out] VARIANT* pvarResult, // return value
[out] short* puArgErr // which arg in error
);
};
// the filgraph object (CLSID_Filgraph)
[
uuid(e436ebb3-524f-11ce-9f53-0020af0ba770),
helpstring("Filtergraph type info")
]
coclass FilgraphManager
{
[default] interface IMediaControl;
interface IMediaEvent;
interface IMediaPosition;
interface IBasicAudio;
interface IBasicVideo;
interface IVideoWindow;
};
// represents a filter (you can't QI for IBaseFilter from this object)
[
uuid(56a868ba-0ad4-11ce-b03a-0020af0ba770),
helpstring("FilterInfo"),
odl,
oleautomation,
dual
]
interface IFilterInfo : IDispatch
{
// find a pin given an id - returns an object supporting
// IPinInfo
HRESULT FindPin(
[in] BSTR strPinID,
[out] IDispatch** ppUnk);
// filter name
[propget]
HRESULT Name(
[out, retval] BSTR* strName);
// Vendor info string
[propget]
HRESULT VendorInfo(
[out, retval] BSTR* strVendorInfo);
// returns the actual filter object (supports IBaseFilter)
[propget]
HRESULT Filter(
[out, retval] IUnknown **ppUnk);
// returns an IAMCollection object containing the PinInfo objects
// for this filter
[propget]
HRESULT Pins(
[out, retval] IDispatch ** ppUnk);
// returns -1 if true or 0 if false (OATRUE/FALSE)
[propget]
HRESULT IsFileSource(
[out, retval] LONG * pbIsSource);
[propget]
HRESULT Filename(
[out, retval] BSTR* pstrFilename);
[propput]
HRESULT Filename(
[in] BSTR strFilename);
}
[
uuid(56a868bb-0ad4-11ce-b03a-0020af0ba770),
helpstring("Registry Filter Info"),
odl,
oleautomation,
dual
]
interface IRegFilterInfo : IDispatch
{
// get the name of this filter
[propget]
HRESULT Name(
[out, retval] BSTR* strName);
// make an instance of this filter, add it to the graph and
// return an IFilterInfo for it.
HRESULT Filter(
[out] IDispatch** ppUnk);
}
// wrapper for a media type
[
uuid(56a868bc-0ad4-11ce-b03a-0020af0ba770),
helpstring("Media Type"),
odl,
oleautomation,
dual
]
interface IMediaTypeInfo : IDispatch
{
// get the major type GUID as a string
[propget]
HRESULT Type(
[out, retval] BSTR* strType);
// get the subtype GUID as a string
[propget]
HRESULT Subtype(
[out, retval] BSTR* strType);
}
[
uuid(56a868bd-0ad4-11ce-b03a-0020af0ba770),
helpstring("Pin Info"),
odl,
oleautomation,
dual
]
interface IPinInfo : IDispatch
{
// get the pin object (IUnknown for an object that
// supports IPin
[propget]
HRESULT Pin(
[out, retval] IUnknown** ppUnk);
// get the PinInfo object for the pin we are connected to
[propget]
HRESULT ConnectedTo(
[out, retval] IDispatch** ppUnk);
// get the media type on this connection - returns an
// object supporting IMediaTypeInfo
[propget]
HRESULT ConnectionMediaType(
[out, retval] IDispatch** ppUnk);
// return the FilterInfo object for the filter this pin
// is part of
[propget]
HRESULT FilterInfo(
[out, retval] IDispatch** ppUnk);
// get the name of this pin
[propget]
HRESULT Name(
[out, retval] BSTR* ppUnk);
// pin direction
[propget]
HRESULT Direction(
[out, retval] LONG *ppDirection);
// PinID - can pass to IFilterInfo::FindPin
[propget]
HRESULT PinID(
[out, retval] BSTR* strPinID);
// collection of preferred media types (IAMCollection)
[propget]
HRESULT MediaTypes(
[out, retval] IDispatch** ppUnk);
// Connect to the following pin, using other transform
// filters as necessary. pPin can support either IPin or IPinInfo
HRESULT Connect(
[in] IUnknown* pPin);
// Connect directly to the following pin, not using any intermediate
// filters
HRESULT ConnectDirect(
[in] IUnknown* pPin);
// Connect directly to the following pin, using the specified
// media type only. pPin is an object that must support either
// IPin or IPinInfo, and pMediaType must support IMediaTypeInfo.
HRESULT ConnectWithType(
[in] IUnknown * pPin,
[in] IDispatch * pMediaType);
// disconnect this pin and the corresponding connected pin from
// each other. (Calls IPin::Disconnect on both pins).
HRESULT Disconnect(void);
// render this pin using any necessary transform and rendering filters
HRESULT Render(void);
}
//--------------------------------------------------------------------
//
// IAMStats - statistics
//
// Note that the calls using an index are likely to be much faster
//--------------------------------------------------------------------
[
uuid(bc9bcf80-dcd2-11d2-abf6-00a0c905f375),
helpstring("Statistics"),
odl,
oleautomation,
dual
]
interface IAMStats : IDispatch {
// Reset all stats
HRESULT Reset();
// Get number of stats collected
[propget]
HRESULT Count(
[out, retval] LONG* plCount);
// Pull out a specific value by position
HRESULT GetValueByIndex([in] long lIndex,
[out] BSTR *szName,
[out] long *lCount,
[out] double *dLast,
[out] double *dAverage,
[out] double *dStdDev,
[out] double *dMin,
[out] double *dMax);
// Pull out a specific value by name
HRESULT GetValueByName([in] BSTR szName,
[out] long *lIndex,
[out] long *lCount,
[out] double *dLast,
[out] double *dAverage,
[out] double *dStdDev,
[out] double *dMin,
[out] double *dMax);
// The calls below are for generators of statistics
// Return the index for a string - optinally create
HRESULT GetIndex([in] BSTR szName,
[in] long lCreate,
[out] long *plIndex);
// Add a new value
HRESULT AddValue([in] long lIndex,
[in] double dValue);
}
};
+86
View File
@@ -0,0 +1,86 @@
//------------------------------------------------------------------------------
// File: DDStream.idl
//
// Desc: Used by MIDL tool to generate ddstream.h
//
// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "mmstream.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the ddstream.idl file build. The actual definitions are contained in DDRAW.H")
cpp_quote("//")
cpp_quote("#if 0")
typedef void * LPDDSURFACEDESC;
typedef struct tDDSURFACEDESC DDSURFACEDESC;
cpp_quote("#endif")
cpp_quote("#include <ddraw.h>")
enum {
DDSFF_PROGRESSIVERENDER = 0x00000001
};
interface IDirectDraw;
interface IDirectDrawSurface;
interface IDirectDrawPalette;
interface IDirectDrawMediaStream;
interface IDirectDrawStreamSample;
// IDirectDrawMediaStream
[
object,
local,
uuid(F4104FCE-9A70-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawMediaStream : IMediaStream
{
HRESULT GetFormat(
[out] DDSURFACEDESC *pDDSDCurrent,
[out] IDirectDrawPalette **ppDirectDrawPalette,
[out] DDSURFACEDESC *pDDSDDesired,
[out] DWORD *pdwFlags);
HRESULT SetFormat(
[in] const DDSURFACEDESC *pDDSurfaceDesc,
[in] IDirectDrawPalette *pDirectDrawPalette);
HRESULT GetDirectDraw(
[out] IDirectDraw **ppDirectDraw);
HRESULT SetDirectDraw(
[in] IDirectDraw *pDirectDraw);
HRESULT CreateSample(
[in] IDirectDrawSurface *pSurface,
[in] const RECT *pRect,
[in] DWORD dwFlags,
[out]IDirectDrawStreamSample **ppSample);
HRESULT GetTimePerFrame(
[out] STREAM_TIME *pFrameTime);
};
// IDirectDrawStreamSample
[
object,
local,
uuid(F4104FCF-9A70-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawStreamSample : IStreamSample
{
HRESULT GetSurface(
[out] IDirectDrawSurface ** ppDirectDrawSurface,
[out] RECT * pRect);
HRESULT SetRect(
[in] const RECT * pRect);
};
+38
View File
@@ -0,0 +1,38 @@
//------------------------------------------------------------------------------
// File: DevEnum.idl
//
// Desc: IDL source for devenum.dll. This file will be processed by the
// MIDL tool to produce the type library (devenum.tlb) and marshalling
// code.
//
// Copyright (c) 1998 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
cpp_quote("#define CDEF_CLASS_DEFAULT 0x0001")
cpp_quote("#define CDEF_BYPASS_CLASS_MANAGER 0x0002")
//cpp_quote("#define CDEF_CLASS_LEGACY 0x0004")
cpp_quote("#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008")
// if any of these flags are set, then only the types specified by the
// flags are enumerated
cpp_quote("#define CDEF_DEVMON_CMGR_DEVICE 0x0010")
cpp_quote("#define CDEF_DEVMON_DMO 0x0020")
cpp_quote("#define CDEF_DEVMON_PNP_DEVICE 0x0040")
cpp_quote("#define CDEF_DEVMON_FILTER 0x0080")
cpp_quote("#define CDEF_DEVMON_SELECTIVE_MASK 0x00f0")
[
object,
uuid(29840822-5B84-11D0-BD3B-00A0C911CE86),
pointer_default(unique)
]
interface ICreateDevEnum : IUnknown
{
import "oaidl.idl";
HRESULT CreateClassEnumerator(
[in] REFCLSID clsidDeviceClass,
[out] IEnumMoniker ** ppEnumMoniker,
[in] DWORD dwFlags);
}
+33
View File
@@ -0,0 +1,33 @@
//------------------------------------------------------------------------------
// File: DMODShow.idl
//
// Desc: This file will be processed by the MIDL tool to
// produce dmodshow.h and proxy-stub code.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "objidl.idl";
import "mediaobj.idl";
// 94297043-bd82-4dfd-b0de-8177739c6d20
cpp_quote("DEFINE_GUID(CLSID_DMOWrapperFilter, 0x94297043,0xbd82,0x4dfd,0xb0,0xde,0x81,0x77,0x73,0x9c,0x6d,0x20);")
// bcd5796c-bd52-4d30-ab76-70f975b89199
cpp_quote("DEFINE_GUID(CLSID_DMOFilterCategory,0xbcd5796c,0xbd52,0x4d30,0xab,0x76,0x70,0xf9,0x75,0xb8,0x91,0x99);")
[
object,
uuid(52d6f586-9f0f-4824-8fc8-e32ca04930c2),
]
interface IDMOWrapperFilter : IUnknown
{
// Init is passed in the clsid (so it can call CoCreateInstance)
// and the catgory under which the DMO lives.
// Note that catDMO can be CLSID_NULL, in which case no special
// category-specific processing will be invoked in the wrapper filter.
HRESULT Init(REFCLSID clsidDMO, REFCLSID catDMO);
}
+59
View File
@@ -0,0 +1,59 @@
//------------------------------------------------------------------------------
// File: DShowASF.idl
//
// Desc:
//
// Copyright (c) 1992-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "objidl.idl";
import "strmif.idl"; // for media type and time definitions
import "wmsdkidl.idl";
cpp_quote( "EXTERN_GUID( IID_IConfigAsfWriter,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B );" )
interface IConfigAsfWriter;
interface IWMProfile;
// Interface to control the ASF writer
[
object,
uuid(45086030-F7E4-486a-B504-826BB5792A3B),
pointer_default(unique)
]
interface IConfigAsfWriter : IUnknown
{
//
// The user is expected to enumerate profiles using the wmsdk IWMProfileManager
// method and then pass the desired profile index to the ASF Writer filter via this
// method. The filter will then try to configure itself for the selected profile.
//
// NOTE: These 2 XXXProfileId methods are now obsolete because they assume
// version 4.0 WMSDK profiles. To configure the filter for later profile
// versions using a profile index, use the XXXProfile methods which take
// the IWMProfile* directly.
//
HRESULT ConfigureFilterUsingProfileId([in] DWORD dwProfileId);
HRESULT GetCurrentProfileId([out] DWORD *pdwProfileId);
//
// configure using a pre-defined wmsdk profile guid
//
HRESULT ConfigureFilterUsingProfileGuid([in] REFGUID guidProfile);
HRESULT GetCurrentProfileGuid([out] GUID *pProfileGuid);
//
// Use these methods when a custom profile setup is preferred
//
HRESULT ConfigureFilterUsingProfile([in] IWMProfile * pProfile);
HRESULT GetCurrentProfile([out] IWMProfile **ppProfile);
//
// allow app to control whether or not to index file
//
HRESULT SetIndexMode( [in] BOOL bIndexFile );
HRESULT GetIndexMode( [out] BOOL *pbIndexFile );
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+318
View File
@@ -0,0 +1,318 @@
//------------------------------------------------------------------------------
// File: DynGraph.idl
//
// Desc: Dynamic graph interfaces
//
// Copyright (c) 1999-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
interface IPinConnection;
interface IPinFlowControl;
interface IGraphConfig;
interface IGraphConfigCallback;
//--------------------------------------------------------------------
//
// IPinConnection - supported by input pins
//
//--------------------------------------------------------------------
[
local,
object,
uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
pointer_default(unique)
]
interface IPinConnection : IUnknown {
// Do you accept this type chane in your current state?
HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
// Set event when EndOfStream receive - do NOT pass it on
// This condition is cancelled by a flush or Stop
HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
// Are you an 'end pin'
HRESULT IsEndPin();
HRESULT DynamicDisconnect();
};
//--------------------------------------------------------------------
//
// IPinFlowControl - supported by output pins
//
//--------------------------------------------------------------------
[
local,
object,
uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
pointer_default(unique)
]
interface IPinFlowControl : IUnknown {
// Block processing on this pin
HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
}
// block flags
enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS {
AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001, // 0 means unblock
};
// Reconnect flags
typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
// RemoveFilterEx flags
enum _REM_FILTER_FLAGS {
REMFILTERF_LEAVECONNECTED = 0x00000001
};
typedef enum _AM_FILTER_FLAGS {
AM_FILTER_FLAGS_REMOVABLE = 0x00000001
} AM_FILTER_FLAGS;
//--------------------------------------------------------------------
//
// IGraphConfig
//
//--------------------------------------------------------------------
[
local,
object,
uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
pointer_default(unique)
]
interface IGraphConfig : IUnknown {
HRESULT Reconnect([in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter, // can be NULL
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags);
HRESULT Reconfigure([in] IGraphConfigCallback *pCallback,
[in] PVOID pvContext,
[in] DWORD dwFlags,
[in] HANDLE hAbortEvent);
HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
// Get the start time associated with the last Run() call
// If the graph is not running returns VFW_E_WRONG_STATE
HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
HRESULT PushThroughData(
[in] IPin *pOutputPin,
[in] IPinConnection *pConnection,
[in] HANDLE hEventAbort);
HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
HRESULT RemoveFilterEx( [in] IBaseFilter *pFilter, DWORD Flags );
}
//--------------------------------------------------------------------
//
// IGraphConfigCallback
//
//--------------------------------------------------------------------
[
local,
object,
uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
pointer_default(unique)
]
interface IGraphConfigCallback : IUnknown
{
HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
}
// Filter Chain Definition
//
// Filter chains have the following properties:
//
// - Each filter chain has one or more filters.
//
// - Each filter in a filter chain has at most one connected input pin and one
// connected output pin. For example, filters A, C, D, F, G, H, I, J and K
// (see the diagram below) can be in a filter chain because each one has at
// most one connected input pin and one connected output pin.
//
// - Any filter in a chain is reachable by any other filter in the chain.
// For example, in the filter chain F-G-H, F can reach H by following the F-
// G connection to G and then following the G-H connection to H. Filters F
// and J cannot be in the same filter chain because J is not reachable from
// F. Anotherwords, there no sequence of connected filters between F and J.
//
// - The start filter is the only filter in the filter chain who's input
// pin is not connected to another filter in the chain. For instance, F is
// the start filter in F-G-H because F's input pin is connected to E and E
// is not in the filter chain. G's input pin is connected to F and H's is
// connected to G. Both F and G are in the filter chain.
//
// - The end filter is the only filter in the filter chain who's output pin
// is not connected to another filter in the chain. For example, in the
// filter chain J-K, K is the end filter because K's output pin is
// connected to L. J's output pin is connected to K and K is in the J-K
// filter chain.
//
//
// --->|---| |---|--->
// | C |--->| D |
// |---| |---|--->|---| |---|--->|---| |---| |---| |---|
// | A |--->| B | | E |--->| F |--->| G |--->| H |
// |---| |---|--->|---|------------>|---| |---| |---| |---|
// | I |--->
// --->|---|--->
//
// |---| |---| |---|
// | J |--->| K |--->| L |
// |---| |---| |---|
//
// Example Filter Graph
//
//
//
// IFilterChain Methods Documentation
//
// HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// StartChain() switches all the filters in the chain into the running state
// If one of the filters will not switch to the running state, then all the filters
// in the chain are stopped. This method can only be called if the filter graph is
// running.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
// from pStartFilter to the last downstream filter which can be in a filter chain.
// For example, IFilterChain::StartChain( A, NULL ) would start filter A.
// IFilterChain::StartChain( G, NULL ) would start filters G and H.
// IFilterChain::StartChain( C, NULL ) would start filters C and D. Finally,
// IFilterChain::StartChain( E, NULL ) would fail because E cannot be in a
// filter chain (see the Filter Chain Definition section for more information).
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
//
//
// HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// PauseChain() switches all the filters in a chain to the paused state. If it cannot
// switch one of the filtres into the paused state, all the filters in the chain are
// stopped. This method can only be called if the filter graph is paused.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
// from pStartFilter to the last downstream filter which can be in a filter chain.
// For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
// IFilterChain::StopChain( G, NULL ) would stop filters G and H.
// IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
// IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
// chain (see the Filter Chain Definition section for more information).
//
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
//
// HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// StopChain() switches all the filters in chain to the stopped state.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
// from pStartFilter to the last downstream filter which can be in a filter chain.
// For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
// IFilterChain::StopChain( G, NULL ) would stop filters G and H.
// IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
// IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
// chain (see the Filter Chain Definition section for more information).
//
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
//
//
//
// HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// RemoveChain() removes every filter in a chain from the filter graph.
// The filters can be removed while the graph is running.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain
// extends from pStartFilter to the last downstream filter which can be in a
// filter chain. For example, IFilterChain::RemoveChain( A, NULL ) would remove
// filter A from the filter graph. IFilterChain::RemoveChain( G, NULL ) would
// remove filters G and H. IFilterChain::RemoveChain( C, NULL ) would remove
// filters C and D. Finally, IFilterChain::RemoveChain( E, NULL ) would fail
// because E cannot be in a filter chain (see the Filter Chain Definition
// section for more information).
//
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
[
local,
object,
uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
pointer_default(unique)
]
interface IFilterChain : IUnknown
{
HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
}
+411
View File
@@ -0,0 +1,411 @@
//------------------------------------------------------------------------------
// File: MediaObj.idl
//
// Desc: Define the interfaces for DirectX Media Objects. This file will be
// processed by the MIDL tool to produce mediaobj.h and proxy-stub code.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "objidl.idl";
// DMO_MEDIA_TYPE structure
cpp_quote("#ifdef __strmif_h__")
cpp_quote("typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;")
cpp_quote("#else")
typedef struct _DMOMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
[size_is(cbFormat)] BYTE * pbFormat;
} DMO_MEDIA_TYPE;
typedef LONGLONG REFERENCE_TIME;
cpp_quote("#endif")
// Per-buffer flags that apply to input buffers
enum _DMO_INPUT_DATA_BUFFER_FLAGS {
DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
DMO_INPUT_DATA_BUFFERF_TIME = 0x00000002,
DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004
};
// Per-buffer flags that apply to output buffers.
enum _DMO_OUTPUT_DATA_BUFFER_FLAGS {
DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
DMO_OUTPUT_DATA_BUFFERF_TIME = 0x00000002,
DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004,
//
// This flag means the object could have generated more data for this
// output stream, even with no additional input from any input stream,
// but the output buffer did not have sufficient room.
//
DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x01000000
};
// Flags returned by GetInputStatus()
enum _DMO_INPUT_STATUS_FLAGS {
//
// ACCEPT_DATA indicates that the input stream is ready to accept
// new data via ProcessInput().
//
DMO_INPUT_STATUSF_ACCEPT_DATA = 0x00000001
};
// Flags returned by GetInputStreamInfo()
enum _DMO_INPUT_STREAM_INFO_FLAGS {
DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x00000008
};
// Flags returned by GetOutputStreamInfo()
enum _DMO_OUTPUT_STREAM_INFO_FLAGS {
DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
DMO_OUTPUT_STREAMF_DISCARDABLE = 0x00000008,
DMO_OUTPUT_STREAMF_OPTIONAL = 0x00000010
};
// SetType flags
enum _DMO_SET_TYPE_FLAGS {
DMO_SET_TYPEF_TEST_ONLY = 0x00000001,// check but don't set
DMO_SET_TYPEF_CLEAR = 0x00000002 // unset
};
// Process Output Flags
enum _DMO_PROCESS_OUTPUT_FLAGS {
DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x00000001 // Discard
};
// Buffer wrapper interface
[
object,
uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837)
]
interface IMediaBuffer : IUnknown
{
HRESULT SetLength(
DWORD cbLength
);
HRESULT GetMaxLength(
[out] DWORD *pcbMaxLength
);
HRESULT GetBufferAndLength(
[out] BYTE **ppBuffer, // not filled if NULL
[out] DWORD *pcbLength // not filled if NULL
);
}
//
// Output buffer info structure: one of these must be passed in for each
// output stream with every ProcessOutput() call
// All [out] fields should be
// assumed undefined if ProcessOutput() failed
//
typedef struct _DMO_OUTPUT_DATA_BUFFER {
IMediaBuffer *pBuffer; // [in] can be NULL
// ProcessOutput() must set any appropriate flags and zero out the rest.
DWORD dwStatus; // [out] DMO_OUTPUT_DATA_BUFFERF_XXX (INCOMPLETE, etc.)
//
// Each of these is valid if the corresponding flag is set in dwStatus
//
REFERENCE_TIME rtTimestamp; // [out]
REFERENCE_TIME rtTimelength; // [out]
} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;
// Interface supported by media objects
[
object,
uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4)
]
interface IMediaObject : IUnknown
{
//
// Stream enumeration
//
HRESULT GetStreamCount(
[out] DWORD *pcInputStreams,
[out] DWORD *pcOutputStreams
);
HRESULT GetInputStreamInfo(
DWORD dwInputStreamIndex, // 0-based
[out] DWORD *pdwFlags // HOLDS_BUFFERS
);
HRESULT GetOutputStreamInfo(
DWORD dwOutputStreamIndex, // 0-based
[out] DWORD *pdwFlags // Media object sets to 0
);
//
// Mediatypes
//
//
// GetType - iterate through media types supported by a stream.
// Returns S_FALSE if the type index is out of range ("no more types").
//
HRESULT GetInputType(
DWORD dwInputStreamIndex,
DWORD dwTypeIndex, // 0-based
[out] DMO_MEDIA_TYPE *pmt
);
HRESULT GetOutputType(
DWORD dwOutputStreamIndex,
DWORD dwTypeIndex, // 0-based
[out] DMO_MEDIA_TYPE *pmt
);
//
// SetType - tell the object the type of data it will work with.
//
HRESULT SetInputType(
DWORD dwInputStreamIndex,
[in] const DMO_MEDIA_TYPE *pmt,
DWORD dwFlags // test only
);
HRESULT SetOutputType(
DWORD dwOutputStreamIndex,
[in] const DMO_MEDIA_TYPE *pmt,
DWORD dwFlags // test only
);
//
// GetCurrentType - get the last mediatype supplied via SetType.
// Returns S_FALSE if SetType has not been called.
//
HRESULT GetInputCurrentType(
DWORD dwInputStreamIndex,
[out] DMO_MEDIA_TYPE *pmt
);
HRESULT GetOutputCurrentType(
DWORD dwOutputStreamIndex,
[out] DMO_MEDIA_TYPE *pmt
);
//
// SizeInfo
//
//
// GetSizeInfo - Get buffer size requirementes of a stream.
//
// If buffer size depends on the media type used, the object should
// base its response on the most recent media type set for this stream.
// If no mediatype has been set, the object may return an error.
//
HRESULT GetInputSizeInfo(
DWORD dwInputStreamIndex,
[out] DWORD *pcbSize, // size of input 'quantum'
[out] DWORD *pcbMaxLookahead, // max total bytes held
[out] DWORD *pcbAlignment // buffer alignment requirement
);
HRESULT GetOutputSizeInfo(
DWORD dwOutputStreamIndex,
[out] DWORD *pcbSize, // size of output 'quantum'
[out] DWORD *pcbAlignment // buffer alignment requirement
);
//
// Latency methods
//
HRESULT GetInputMaxLatency(
DWORD dwInputStreamIndex,
[out] REFERENCE_TIME *prtMaxLatency
);
HRESULT SetInputMaxLatency(
DWORD dwInputStreamIndex,
REFERENCE_TIME rtMaxLatency
);
//
// Streaming / state methods
//
//
// Flush() - discard any buffered data.
//
HRESULT Flush();
//
// Send a discontinuity to an input stream. The object will not
// accept any more data on this input stream until the discontinuity
// has been completely processed, which may involve multiple
// ProcessOutput() calls.
//
HRESULT Discontinuity(DWORD dwInputStreamIndex);
//
// If a streaming object needs to perform any time consuming
// initialization before it can stream data, it should do it inside
// AllocateStreamingResources() rather than during the first process
// call.
//
// This method is NOT guaranteed to be called before streaming
// starts. If it is not called, the object should perform any
// required initialization during a process call.
//
HRESULT AllocateStreamingResources();
// Free anything allocated in AllocateStreamingResources().
HRESULT FreeStreamingResources();
// GetInputStatus - the only flag defined right now is ACCEPT_DATA.
HRESULT GetInputStatus(
DWORD dwInputStreamIndex,
[out] DWORD *dwFlags // ACCEPT_DATA
);
//
// Pass one new buffer to an input stream
//
HRESULT ProcessInput(
DWORD dwInputStreamIndex,
IMediaBuffer *pBuffer, // must not be NULL
DWORD dwFlags, // DMO_INPUT_DATA_BUFFERF_XXX (syncpoint, etc.)
REFERENCE_TIME rtTimestamp, // valid if flag set
REFERENCE_TIME rtTimelength // valid if flag set
);
//
// ProcessOutput() - generate output for current input buffers
//
// Output stream specific status information is returned in the
// dwStatus member of each buffer wrapper structure.
//
HRESULT ProcessOutput(
DWORD dwFlags, // DMO_PROCESS_OUTPUT_FLAGS
DWORD cOutputBufferCount, // # returned by GetStreamCount()
[in,out,size_is(cOutputBufferCount)]
DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, // one per stream
[out] DWORD *pdwStatus // TBD, must be set to 0
);
// Locking - lock if bLock is TRUE, otherwise unlock
HRESULT Lock(LONG bLock);
};
//
// Interface returned by the DMO enumeration API
//
[
object,
uuid(2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f)
]
interface IEnumDMO : IUnknown {
HRESULT Next(
DWORD cItemsToFetch,
[out, size_is(cItemsToFetch), length_is(*pcItemsFetched)] CLSID *pCLSID,
[out, size_is(cItemsToFetch), length_is(*pcItemsFetched), string] WCHAR **Names,
[out] DWORD *pcItemsFetched
);
HRESULT Skip(
DWORD cItemsToSkip
);
HRESULT Reset(void);
HRESULT Clone(
[out] IEnumDMO **ppEnum
);
}
// Flags for IMediaObjectInPlace::Process
enum _DMO_INPLACE_PROCESS_FLAGS {
DMO_INPLACE_NORMAL = 0x00000000,
DMO_INPLACE_ZERO = 0x00000001
};
[
object,
uuid(651b9ad0-0fc7-4aa9-9538-d89931010741)
]
interface IMediaObjectInPlace : IUnknown {
// Proces - Given a buffer of size ulSize, put the output
// of the DMO into the same buffer.
HRESULT Process(
[in] ULONG ulSize,
[in,out,size_is(ulSize)] BYTE* pData,
[in] REFERENCE_TIME refTimeStart,
[in] DWORD dwFlags
);
// Create a copy of the In-Place Media Object. This allows
// for very fast initialization of a number of In-Place objects
// in a known state.
HRESULT Clone(
[out] IMediaObjectInPlace **ppMediaObject
);
// GetLatency - Returns a REFERENCE_TIME value
// (1 tick = 100ns) which corresponds to the latency time
// processing this effect will add to the graph. This assumes
// the effect cost per buffer is a constant.
HRESULT GetLatency(
[out] REFERENCE_TIME *pLatencyTime
);
}
// Quality control status flags
enum _DMO_QUALITY_STATUS_FLAGS {
DMO_QUALITY_STATUS_ENABLED = 0x00000001
};
[
object,
uuid(65abea96-cf36-453f-af8a-705e98f16260)
]
interface IDMOQualityControl : IUnknown {
HRESULT SetNow(
[in] REFERENCE_TIME rtNow
);
HRESULT SetStatus(
[in] DWORD dwFlags
);
HRESULT GetStatus(
[out] DWORD *pdwFlags
);
}
// Flags for IVideoOutputOptimizations
enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x00000001
};
[
object,
uuid(be8f4f4e-5b16-4d29-b350-7f6b5d9298ac)
]
interface IDMOVideoOutputOptimizations : IUnknown {
HRESULT QueryOperationModePreferences (
ULONG ulOutputStreamIndex,
DWORD *pdwRequestedCapabilities
);
HRESULT SetOperationMode (
ULONG ulOutputStreamIndex,
DWORD dwEnabledFeatures
);
HRESULT GetCurrentOperationMode (
ULONG ulOutputStreamIndex,
DWORD *pdwEnabledFeatures
);
HRESULT GetCurrentSampleRequirements (
ULONG ulOutputStreamIndex,
DWORD *pdwRequestedFeatures
);
}
+228
View File
@@ -0,0 +1,228 @@
//------------------------------------------------------------------------------
// File: MedParam.idl
//
// Desc: Definition of the IMediaParams and associated interfaces. These
// interfaces are designed to allow communication of curve-following
// behaviors for parameters of objects which require dynamic changes
// to their parameters at run time. All changes are specified by
// timestamp and curve type to ensure the parameters can be set
// at sufficient accuracy with predictable behavior on subsequent
// playback of the same curves.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "strmif.idl";
//------------------------------------------------------------------------------
// Define the semantic type to be used for each parameter. All values passed
// into this interface are 32-bit floats, but the interface can specify that
// the values must be integer, booleans, or enumerated types
//------------------------------------------------------------------------------
typedef float MP_DATA; // All data is 32-bit floats
typedef enum _MP_Type {
MPT_INT, // data is signed 23 bit integer (mantissa)
MPT_FLOAT, // data is 32bit IEEE float
MPT_BOOL, // data is true or false (using ANSI C++ definition)
MPT_ENUM, // data is a set (represented by consecutive integers)
MPT_MAX,
} MP_TYPE;
const MP_DATA MPBOOL_TRUE = 1.0; // Value of true
const MP_DATA MPBOOL_FALSE = 0.0; // Value of false
//------------------------------------------------------------------------------
// Define the types of curves which are supported
//------------------------------------------------------------------------------
typedef enum _MP_CURVE_TYPE {
MP_CURVE_JUMP = 0x0001, // No interpolation, just jump to next point
MP_CURVE_LINEAR = 0x0002, // Linear interpolation (y follows x from 0.0 to 1.0)
MP_CURVE_SQUARE = 0x0004, // y follow x^2 from 0.0 to 1.0
MP_CURVE_INVSQUARE = 0x0008, // y follows 1-(x^2) from 0.0 to 1.0
MP_CURVE_SINE = 0x0010, // y follows sin(x) from -pi/2 to pi/2
} MP_CURVE_TYPE;
//------------------------------------------------------------------------------
// Capability bits. Used by the object to specify what capabilities it has.
//------------------------------------------------------------------------------
typedef DWORD MP_CAPS;
// Curve capabilities - If the cap bit is set, that type of curve is supported
const MP_CAPS MP_CAPS_CURVE_JUMP = MP_CURVE_JUMP;
const MP_CAPS MP_CAPS_CURVE_LINEAR = MP_CURVE_LINEAR;
const MP_CAPS MP_CAPS_CURVE_SQUARE = MP_CURVE_SQUARE;
const MP_CAPS MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE;
const MP_CAPS MP_CAPS_CURVE_SINE = MP_CURVE_SINE;
//------------------------------------------------------------------------------
// Structure used to return information about the type and limits of a parameter
//------------------------------------------------------------------------------
typedef struct _MP_PARAMINFO {
MP_TYPE mpType; // One of MP_TYPE_xxx codes
MP_CAPS mopCaps; // A collection of MP_CAPS flags
// Minimum and maximum values
MP_DATA mpdMinValue; // minimum legal value
MP_DATA mpdMaxValue; // maximum legal value
MP_DATA mpdNeutralValue; // default or 'center' value
// Defualt Unit and Label text. These strings will ALWAYS be English
// strings in the UNICODE character set. For international text
// use the GetParamText member function
WCHAR szUnitText[32]; // units of the parameter
WCHAR szLabel[32]; // name of the parameter
} MP_PARAMINFO;
//------------------------------------------------------------------------------
// Parameter Index types
//------------------------------------------------------------------------------
typedef DWORD DWORD;
const DWORD DWORD_ALLPARAMS = -1; // Apply this operation to all params
//------------------------------------------------------------------------------
// Defined list of timestamp types
//------------------------------------------------------------------------------
typedef DWORD MP_TIMEDATA; // Extra data to further define type
// REFERENCE_TIME (1 tick = 100 nanoseconds, MP_TIMEDATA ignored)
cpp_quote("DEFINE_GUID(GUID_TIME_REFERENCE,")
cpp_quote("0x93ad712b, 0xdaa0, 0x4ffe, 0xbc, 0x81, 0xb0, 0xce, 0x50, 0xf, 0xcd, 0xd9);")
// Music Time (MP_TIMEDATA = parts/quarter note)
cpp_quote("DEFINE_GUID(GUID_TIME_MUSIC,")
cpp_quote("0x574c49d, 0x5b04, 0x4b15, 0xa5, 0x42, 0xae, 0x28, 0x20, 0x30, 0x11, 0x7b);")
// Time is measures in samples. MP_TIMEDATA = Samples/sec)
cpp_quote("DEFINE_GUID(GUID_TIME_SAMPLES,")
cpp_quote("0xa8593d05, 0xc43, 0x4984, 0x9a, 0x63, 0x97, 0xaf, 0x9e, 0x2, 0xc4, 0xc0);")
//------------------------------------------------------------------------------
// The value of a given parameter at a specific point in time
//------------------------------------------------------------------------------
typedef DWORD MP_FLAGS;
const MP_FLAGS MPF_ENVLP_STANDARD = 0x0000; // Use all data provided
const MP_FLAGS MPF_ENVLP_BEGIN_CURRENTVAL = 0x0001;
// Ignore valStart value, use current value as the staring point
const MP_FLAGS MPF_ENVLP_BEGIN_NEUTRALVAL = 0x0002;
// Ignore valStart value, use neutral value as the staring point
typedef struct _MP_ENVELOPE_SEGMENT {
REFERENCE_TIME rtStart; // Start time in current time format
REFERENCE_TIME rtEnd; // End time in current time format
MP_DATA valStart; // Initial Value
MP_DATA valEnd; // Final Value
MP_CURVE_TYPE iCurve; // One of MP_CURVE_TYPE codes
MP_FLAGS flags; // Special cases
} MP_ENVELOPE_SEGMENT;
//------------------------------------------------------------------------------
// Define flags for Punch-in timing
//------------------------------------------------------------------------------
const MP_FLAGS MPF_PUNCHIN_REFTIME = 0; // Use the reference time as the PI time
const MP_FLAGS MPF_PUNCHIN_NOW = 0x0001; // Punch in at the current clock time
const MP_FLAGS MPF_PUNCHIN_STOPPED = 0x0002; // Return change notifications during
// author time
//------------------------------------------------------------------------------
// IMediaParamInfo - Interface used to determine the names, data types and
// units of the parameters which are exposed by the object. This interface
// is used at discovery time, and is not required during run-time since the
// objects parameters are a fixed set and this data can be cached by the
// calling applicaiton.
//------------------------------------------------------------------------------
[
object,
uuid(6d6cbb60-a223-44aa-842f-a2f06750be6d),
version(1.0)
]
interface IMediaParamInfo : IUnknown
{
HRESULT GetParamCount (
[out] DWORD * pdwParams
);
HRESULT GetParamInfo (
[in] DWORD dwParamIndex,
[out] MP_PARAMINFO * pInfo
);
// returns a series of null terminated strings. strings are in the
// following order:
// Param Label, Units Text, 1st Enum Text, 2nd Enum Text, etc...
HRESULT GetParamText (
[in] DWORD dwParamIndex, // which param to get text for
[out] WCHAR **ppwchText // returns ptr to CoTaskMemAlloc'd string
);
// Returns the number of diffrent time formats this object understands
HRESULT GetNumTimeFormats (
[out] DWORD * pdwNumTimeFormats
);
// Returns the GUID for the ith supported time format
HRESULT GetSupportedTimeFormat(
[in] DWORD dwFormatIndex,
[out] GUID *pguidTimeFormat
);
// Returns the current time format
HRESULT GetCurrentTimeFormat (
[out] GUID *pguidTimeFormat,
[out] MP_TIMEDATA *pTimeData
);
}
//------------------------------------------------------------------------------
// IMediaParams - Interfaes used to actually set the media params and the
// envelopes to follow
//------------------------------------------------------------------------------
[
object,
uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e),
version(1.0)
]
interface IMediaParams : IUnknown
{
// Single param Get/Set methods
HRESULT GetParam (
[in] DWORD dwParamIndex,
[out] MP_DATA *pValue
);
HRESULT SetParam (
[in] DWORD dwParamIndex,
[in] MP_DATA value
);
// Envelope methods (param change over time)
HRESULT AddEnvelope (
[in] DWORD dwParamIndex,
[in] DWORD cSegments,
[in] MP_ENVELOPE_SEGMENT * pEnvelopeSegments
);
// Flush all of the envelope information for the given paramter between
// the timestamps specified
HRESULT FlushEnvelope (
[in] DWORD dwParamIndex,
[in] REFERENCE_TIME refTimeStart,
[in] REFERENCE_TIME refTimeEnd
);
// Change the time format being used by the object
HRESULT SetTimeFormat (
[in] GUID guidTimeFormat,
[in] MP_TIMEDATA mpTimeData
);
}
+72
View File
@@ -0,0 +1,72 @@
// Copyright (c) 1998 Microsoft Corporation. All Rights Reserved.
import "unknwn.idl";
// data id flags, used to notify the client whenever pertinent data changes
#define MIXER_DATA_ASPECT_RATIO 0x00000001 // picture aspect ratio changed
#define MIXER_DATA_NATIVE_SIZE 0x00000002 // native size of video changed
#define MIXER_DATA_PALETTE 0x00000004 // palette of video changed
// status flags defined here
#define MIXER_STATE_MASK 0x00000003 // use this mask with state status bits
#define MIXER_STATE_UNCONNECTED 0x00000000 // mixer is unconnected and stopped
#define MIXER_STATE_CONNECTED_STOPPED 0x00000001 // mixer is connected and stopped
#define MIXER_STATE_CONNECTED_PAUSED 0x00000002 // mixer is connected and paused
#define MIXER_STATE_CONNECTED_PLAYING 0x00000003 // mixer is connected and playing
interface IMixerOCXNotify;
interface IMixerOCX;
[
object,
uuid(81A3BD31-DEE1-11d1-8508-00A0C91F9CA0),
helpstring("IMixerOCXNotify Interface"),
pointer_default(unique)
]
interface IMixerOCXNotify : IUnknown
{
// invalidates the rect
HRESULT OnInvalidateRect([in] LPCRECT lpcRect);
// informs that a status change has occured, new status bits provided in ulStatusFlags
HRESULT OnStatusChange([in] ULONG ulStatusFlags);
// informs that data parameters, whose id is present in ilDataFlags has changed
HRESULT OnDataChange([in] ULONG ulDataFlags);
};
[
object,
uuid(81A3BD32-DEE1-11d1-8508-00A0C91F9CA0),
helpstring("IMixerOCX Interface"),
pointer_default(unique)
]
interface IMixerOCX : IUnknown
{
// used to notify the mixer that the display mode has changed, the mixer handles this
// asynchronously and the calls OnStatusChange(MIXER_DISPLAYCHANGE_HANDLED) when processing
// is done
HRESULT OnDisplayChange([in] ULONG ulBitsPerPixel, [in] ULONG ulScreenWidth, [in] ULONG ulScreenHeight);
HRESULT GetAspectRatio([out] LPDWORD pdwPictAspectRatioX, [out] LPDWORD pdwPictAspectRatioY);
HRESULT GetVideoSize([out] LPDWORD pdwVideoWidth, [out] LPDWORD pdwVideoHeight);
HRESULT GetStatus([out] LPDWORD *pdwStatus);
// the dc provided here is not supposed to be cached. If apps have set a dc using
// SetDrawInfo, then it is illegal to provide a non NULL argument here
HRESULT OnDraw([in] HDC hdcDraw, [in] LPCRECT prcDraw);
// lpptTopLeftSC should be NULL unless MIXER_DRAW_DC_ONSCREEN is set to TRUE
// specifying a NULL value for lprcClip means no clipping
// lpptTopLeftSC - top left corner of surface/dc in screen coordinates
// prcDrawCC - draw rectangle in surface/dc coordinates
// lprcClip - clipping rect in surface/dc coordinates (optional)
HRESULT SetDrawRegion([in] LPPOINT lpptTopLeftSC, [in] LPCRECT prcDrawCC, [in] LPCRECT lprcClip);
// function to set the sink interface for client notification
HRESULT Advise([in] IMixerOCXNotify *pmdns);
// function to remove the sink interface
HRESULT UnAdvise();
};
+190
View File
@@ -0,0 +1,190 @@
//------------------------------------------------------------------------------
// File: MMStream.idl
//
// Desc: MultiMedia streaming interface IDL file. Used by MIDL tool
// to generate mmstream.h.
//
// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)")
cpp_quote("#define MS_S_PENDING MS_SUCCESS_CODE(1)")
cpp_quote("#define MS_S_NOUPDATE MS_SUCCESS_CODE(2)")
cpp_quote("#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3)")
cpp_quote("#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1)")
cpp_quote("#define MS_E_PURPOSEID MS_ERROR_CODE(2)")
cpp_quote("#define MS_E_NOSTREAM MS_ERROR_CODE(3)")
cpp_quote("#define MS_E_NOSEEKING MS_ERROR_CODE(4)")
cpp_quote("#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5)")
cpp_quote("#define MS_E_BUSY MS_ERROR_CODE(6)")
cpp_quote("#define MS_E_NOTINIT MS_ERROR_CODE(7)")
cpp_quote("#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8)")
cpp_quote("#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9)")
cpp_quote("#define MS_E_NOTRUNNING MS_ERROR_CODE(10)")
cpp_quote("// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D}")
cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, ")
cpp_quote("0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
cpp_quote("// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D}")
cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,")
cpp_quote("0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
cpp_quote("#if(_WIN32_WINNT < 0x0400)")
typedef void (__stdcall * PAPCFUNC)(DWORD_PTR dwParam);
cpp_quote("#endif")
typedef LONGLONG STREAM_TIME;
typedef GUID MSPID;
typedef REFGUID REFMSPID;
typedef enum {
STREAMTYPE_READ = 0,
STREAMTYPE_WRITE = 1,
STREAMTYPE_TRANSFORM= 2
} STREAM_TYPE;
typedef enum {
STREAMSTATE_STOP = 0,
STREAMSTATE_RUN = 1
} STREAM_STATE;
typedef enum {
COMPSTAT_NOUPDATEOK = 0x00000001,
COMPSTAT_WAIT = 0x00000002,
COMPSTAT_ABORT = 0x00000004
} COMPLETION_STATUS_FLAGS;
// Flags for GetInformation
enum {
MMSSF_HASCLOCK = 0x00000001,
MMSSF_SUPPORTSEEK = 0x00000002,
MMSSF_ASYNCHRONOUS = 0x00000004
};
// Flags for StreamSample::Update
enum {
SSUPDATE_ASYNC = 0x00000001,
SSUPDATE_CONTINUOUS = 0x00000002
};
interface IMultiMediaStream;
interface IMediaStream;
interface IStreamSample;
// IMultiMediaStream interface
[
object,
local,
uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IMultiMediaStream : IUnknown {
HRESULT GetInformation(
[out] DWORD *pdwFlags,
[out] STREAM_TYPE *pStreamType);
HRESULT GetMediaStream(
[in] REFMSPID idPurpose,
[out] IMediaStream **ppMediaStream);
HRESULT EnumMediaStreams(
[in] long Index,
[out] IMediaStream **ppMediaStream);
HRESULT GetState(
[out] STREAM_STATE *pCurrentState);
HRESULT SetState(
[in] STREAM_STATE NewState);
HRESULT GetTime(
[out] STREAM_TIME *pCurrentTime);
HRESULT GetDuration(
[out] STREAM_TIME *pDuration);
HRESULT Seek(
[in] STREAM_TIME SeekTime);
HRESULT GetEndOfStreamEventHandle(
[out] HANDLE *phEOS);
};
// IMediaStream interface
[
object,
uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IMediaStream : IUnknown {
HRESULT GetMultiMediaStream(
[out] IMultiMediaStream **ppMultiMediaStream);
HRESULT GetInformation(
[out] MSPID *pPurposeId,
[out] STREAM_TYPE *pType);
HRESULT SetSameFormat(
[in] IMediaStream *pStreamThatHasDesiredFormat,
[in] DWORD dwFlags);
HRESULT AllocateSample(
[in] DWORD dwFlags,
[out] IStreamSample **ppSample);
HRESULT CreateSharedSample(
[in] IStreamSample *pExistingSample,
[in] DWORD dwFlags,
[out] IStreamSample **ppNewSample);
HRESULT SendEndOfStream(DWORD dwFlags);
};
// IStreamSample interface
[
object,
local,
uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IStreamSample : IUnknown {
HRESULT GetMediaStream(
[in] IMediaStream **ppMediaStream);
HRESULT GetSampleTimes(
[out] STREAM_TIME * pStartTime,
[out] STREAM_TIME * pEndTime,
[out] STREAM_TIME * pCurrentTime);
HRESULT SetSampleTimes(
[in] const STREAM_TIME *pStartTime,
[in] const STREAM_TIME *pEndTime);
HRESULT Update(
[in] DWORD dwFlags,
[in] HANDLE hEvent,
[in] PAPCFUNC pfnAPC,
[in] DWORD_PTR dwAPCData);
HRESULT CompletionStatus(
[in] DWORD dwFlags,
[in] DWORD dwMilliseconds);
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+52
View File
@@ -0,0 +1,52 @@
//------------------------------------------------------------------------------
// File: RegBag.idl
//
// Desc: IDL source for RegBag.dll.
//
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#pragma once")
#ifndef DO_NO_IMPORTS
import "objidl.idl";
import "oaidl.idl";
import "ocidl.idl";
#endif
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////
//
// Custom Factory interface
// since com doesn't support ctors or initialization parameters on std factory interface
// we have a custom creation interface
//
///////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
[object,
hidden, restricted,
uuid(8A674B48-1F63-11d3-B64C-00C04F79498E),
helpstring("Create property bag backed by registry"),
pointer_default(unique),
local
]
interface ICreatePropBagOnRegKey : IUnknown {
// NOTE: it is up to the caller to set the correct registry access based on the interface
// and methods the caller intends to use
// IPropertyBag2::GetPropertyInfo and CountProperties require both KEY_QUERY_VALUE and KEY_ENUMERATE_SUBKEYS
// IPropertyBagXXX::Read requires KEY_READ
// IPropertyBagXXX::Write requires KEY_WRITE
// also, you must CoTaskMemFree the name string from GetPropertyInfo
// if you write a value of VT_EMPTY or VT_NULL the property will be removed from the bag and the corresponding
// registry info will be deleted.
HRESULT Create([in] HKEY hkey, [in] LPCOLESTR subkey, [in] DWORD ulOptions, [in] DWORD samDesired, REFIID iid, [out] LPVOID *ppBag);
};
File diff suppressed because it is too large Load Diff
+51
View File
@@ -0,0 +1,51 @@
//------------------------------------------------------------------------------
// File: StrmIf.idl
//
// Desc: ActiveMovie interface definitions.
//
// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Temporarily disable the /W4 compiler warning C4201, which will be
// reported by all apps which include streams.h or dshow.h, which both
// include the strmif.h generated by this IDL file.
//
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2002.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("// Disable /W4 compiler warning C4201: nameless struct/union")
cpp_quote("#pragma warning(push)")
cpp_quote("#pragma warning(disable:4201) // Disable C4201: nameless struct/union")
cpp_quote(" ") // Blank space
import "unknwn.idl";
import "objidl.idl"; // for IPersist (IFilter's root)
#include "devenum.idl"
// core interfaces
#include "axcore.idl"
// extended, ActiveMovie-only interfaces
#include "axextend.idl"
// application interfaces for DVD
#include "dvdif.idl"
// Dynamic graph stuff
#include "dyngraph.idl"
// Video Mixing Renderer
#include "VMRender.idl"
//
// Restore the previous setting for C4201 compiler warning
//
cpp_quote("// Restore the previous setting for C4201 compiler warning")
cpp_quote("#pragma warning(pop)")
File diff suppressed because it is too large Load Diff
+242
View File
@@ -0,0 +1,242 @@
// TvRatings.idl : IDL source for TvRatings.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (TvRatings.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
typedef enum
{
MPAA = 0,
US_TV = 1,
Canadian_English = 2,
Canadian_French = 3,
Reserved4 = 4, // filler - not used.
System5 = 5, // maps to system 5 of XDS rating table 19
System6 = 6, // maps to system 6 of XDS rating table 19
Reserved7 = 7, // filler - not used.
TvRat_kSystems = 8, // used for allocating structures
TvRat_SystemDontKnow = 255 // haven't gotten a data value yet... (perhaps change to 0)
} EnTvRat_System;
typedef enum // constraint is that must be in increasing order, and max < 2^8
{
TvRat_0 = 0,
TvRat_1 = 1,
TvRat_2 = 2,
TvRat_3 = 3,
TvRat_4 = 4,
TvRat_5 = 5,
TvRat_6 = 6,
TvRat_7 = 7,
TvRat_kLevels = 8, // used for allocating structures
TvRat_LevelDontKnow = 255 // haven't gotten a data value yet... (perhaps change to _7)
} EnTvRat_GenericLevel;
typedef enum
{
MPAA_NotApplicable = TvRat_0,
MPAA_G = TvRat_1,
MPAA_PG = TvRat_2,
MPAA_PG13 = TvRat_3,
MPAA_R = TvRat_4,
MPAA_NC17 = TvRat_5,
MPAA_X = TvRat_6,
MPAA_NotRated = TvRat_7
} EnTvRat_MPAA;
typedef enum
{
US_TV_None = TvRat_0,
US_TV_Y = TvRat_1,
US_TV_Y7 = TvRat_2,
US_TV_G = TvRat_3,
US_TV_PG = TvRat_4,
US_TV_14 = TvRat_5,
US_TV_MA = TvRat_6,
US_TV_None7 = TvRat_7
} EnTvRat_US_TV;
typedef enum
{
CAE_TV_Exempt = TvRat_0,
CAE_TV_C = TvRat_1,
CAE_TV_C8 = TvRat_2,
CAE_TV_G = TvRat_3,
CAE_TV_PG = TvRat_4,
CAE_TV_14 = TvRat_5,
CAE_TV_18 = TvRat_6,
CAE_TV_Reserved = TvRat_7
} EnTvRat_CAE_TV;
typedef enum
{
CAF_TV_Exempt = TvRat_0,
CAF_TV_G = TvRat_1,
CAF_TV_8 = TvRat_2,
CAF_TV_13 = TvRat_3,
CAF_TV_16 = TvRat_4,
CAF_TV_18 = TvRat_5,
CAF_TV_Reserved6 = TvRat_6,
CAF_TV_Reserved = TvRat_7
} EnTvRat_CAF_TV;
// -------------------
typedef enum
{
BfAttrNone = 0, // no bits set (for initialization)
BfIsBlocked = 1, // if set,
BfIsAttr_1 = 2,
BfIsAttr_2 = 4,
BfIsAttr_3 = 8,
BfIsAttr_4 = 16,
BfIsAttr_5 = 32, // no bits set...
BfIsAttr_6 = 64,
BfIsAttr_7 = 128,
BfValidAttrSubmask = 255 // IsBlocked is not a valid attribute to display
} BfEnTvRat_GenericAttributes;
typedef enum
{
US_TV_IsBlocked = BfIsBlocked,
US_TV_IsViolent = BfIsAttr_1,
US_TV_IsSexualSituation = BfIsAttr_2,
US_TV_IsAdultLanguage = BfIsAttr_3,
US_TV_IsSexuallySuggestiveDialog = BfIsAttr_4,
US_TV_ValidAttrSubmask = 31 // IsBlocked is not a valid attribute for TV
} BfEnTvRat_Attributes_US_TV;
typedef enum
{
MPAA_IsBlocked = BfIsBlocked,
MPAA_ValidAttrSubmask = 1 // IsBlocked is not a valid attribute
} BfEnTvRat_Attributes_MPAA;
typedef enum
{
CAE_IsBlocked = BfIsBlocked,
CAE_ValidAttrSubmask = 1 // IsBlocked is not a valid attribute
} BfEnTvRat_Attributes_CAE_TV;
typedef enum
{
CAF_IsBlocked = BfIsBlocked,
CAF_ValidAttrSubmask = 1 // IsBlocked is not a valid attribute
} BfEnTvRat_Attributes_CAF_TV;
// -------------------------------------------------------
// -------------------------------------------------------
[
object,
uuid(C5C5C5B0-3ABC-11D6-B25B-00C04FA0C026),
dual,
helpstring("IXDSToRat Interface"),
pointer_default(unique)
]
interface IXDSToRat : IDispatch
{
[id(1), helpstring("method Init")]
HRESULT Init();
[id(2), helpstring("method ParseXDSBytePair")]
HRESULT ParseXDSBytePair(
[in] BYTE byte1,
[in] BYTE byte2,
[out] EnTvRat_System *pEnSystem,
[out] EnTvRat_GenericLevel *pEnLevel,
[out] LONG *plBfEnAttributes // bitfield of BfEnTvRat_GenericAttributes
);
};
// ------------------------
[
object,
uuid(C5C5C5B1-3ABC-11D6-B25B-00C04FA0C026),
dual,
helpstring("IEvalRat Interface"),
pointer_default(unique)
]
interface IEvalRat : IDispatch
{
[propget, id(1), helpstring("property BlockedRatingAttributes")]
HRESULT BlockedRatingAttributes(
[in] EnTvRat_System enSystem,
[in] EnTvRat_GenericLevel enLevel,
[out, retval] LONG *plbfAttrs // bitfield of BfEnTvRat_GenericAttributes
);
[propput, id(1), helpstring("property BlockedRatingAttributes")]
HRESULT BlockedRatingAttributes(
[in] EnTvRat_System enSystem,
[in] EnTvRat_GenericLevel enLevel,
[in] LONG lbfAttrs // bitfield of BfEnTvRat_GenericAttributes
);
[propget, id(2), helpstring("property BlockUnRated")]
HRESULT BlockUnRated(
[out, retval] BOOL *pfBlockUnRatedShows
);
[propput, id(2), helpstring("property BlockUnRated")]
HRESULT BlockUnRated(
[in] BOOL fBlockUnRatedShows
);
[ id(3), helpstring("method MostRestrictiveRating")]
HRESULT MostRestrictiveRating(
[in] EnTvRat_System enSystem1,
[in] EnTvRat_GenericLevel enEnLevel1,
[in] LONG lbfEnAttr1, // bitfield of BfEnTvRat_GenericAttributes
[in] EnTvRat_System enSystem2,
[in] EnTvRat_GenericLevel enEnLevel2,
[in] LONG lbfEnAttr2, // bitfield of BfEnTvRat_GenericAttributes
[out] EnTvRat_System *penSystem,
[out] EnTvRat_GenericLevel *penEnLevel,
[out] LONG *plbfEnAttr // bitfield of BfEnTvRat_GenericAttributes
);
[ id(4), helpstring("method TestRating")]
HRESULT TestRating(
[in] EnTvRat_System enShowSystem,
[in] EnTvRat_GenericLevel enShowLevel,
[in] LONG lbfEnShowAttributes // bitfield of BfEnTvRat_GenericAttributes
);
};
// This is enforcing a particular implementation on folk...
// Don't need this particular TypeLib, just as long
// as some library/libraries exists that supports the two coClasses,
// with the give ClassID's.
[
uuid(C5C5C500-3ABC-11D6-B25B-00C04FA0C026),
version(1.0),
helpstring("TvRatings 1.0 Type Library")
]
library TVRATINGSLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(C5C5C5F0-3ABC-11D6-B25B-00C04FA0C026),
helpstring("XDSToRat Class")
]
coclass XDSToRat
{
[default] interface IXDSToRat;
};
[
uuid(C5C5C5F1-3ABC-11D6-B25B-00C04FA0C026),
helpstring("EvalRat Class")
]
coclass EvalRat
{
[default] interface IEvalRat;
};
};
+84
View File
@@ -0,0 +1,84 @@
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: vidcap.idl
//
// Contents: Video Capture and Topology Interface Definitions
//
// History: first published in XP SP2 (ISelector,IKsTopologyInfo)
//
//--------------------------------------------------------------------------
import "unknwn.idl";
import "strmif.idl";
// The preprocessor directives here ensure that KSTOPOLOGY_CONNECTION is defined in the correct way
// Constraint is that ks.h cannot be included in the idl file. The directives below ensure that
// 1) KSTOPOLOGY_CONNECTION is locally defined for purposes of building the idl file itself.
// 2) An app can include vidcap.h and ks.h in either order.
// 3) The structure definition for KSTOPOLOGY_CONNECTION does not show up in vidcap.h since ks.h gets included.
// Look at vidcap.h to understand exactly what gets generated.
cpp_quote("#include \"ks.h\"")
cpp_quote("#ifndef _KS_")
typedef struct {
ULONG FromNode;
ULONG FromNodePin;
ULONG ToNode;
ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
cpp_quote("#endif")
// IKsTopologyInfo interface
[
object,
local,
uuid(720D4AC0-7533-11D0-A5D6-28DB04C10000),
pointer_default(unique)
]
interface IKsTopologyInfo : IUnknown
{
HRESULT get_NumCategories([out] DWORD *pdwNumCategories);
HRESULT get_Category([in] DWORD dwIndex, [out] GUID *pCategory);
HRESULT get_NumConnections([out] DWORD *pdwNumConnections);
HRESULT get_ConnectionInfo([in] DWORD dwIndex, [out] KSTOPOLOGY_CONNECTION *pConnectionInfo);
HRESULT get_NodeName([in] DWORD dwNodeId, [out] WCHAR *pwchNodeName, [in] DWORD dwBufSize, [out] DWORD *pdwNameLen);
HRESULT get_NumNodes([out] DWORD *pdwNumNodes);
HRESULT get_NodeType([in] DWORD dwNodeId, [out] GUID *pNodeType);
HRESULT CreateNodeInstance([in] DWORD dwNodeId, [in] REFIID iid, [out] void **ppvObject);
}
// ISelector interface
[
object,
local,
uuid(1ABDAECA-68B6-4F83-9371-B413907C7B9F),
pointer_default(unique)
]
interface ISelector : IUnknown
{
HRESULT get_NumSources([out] DWORD *pdwNumSources);
HRESULT get_SourceNodeId([out] DWORD *pdwPinId);
HRESULT put_SourceNodeId([in] DWORD dwPinId);
}
// IKsNodeControl interface
[
object,
local,
uuid(11737C14-24A7-4bb5-81A0-0D003813B0C4),
pointer_default(unique)
]
interface IKsNodeControl :IUnknown
{
HRESULT put_NodeId([in] DWORD dwNodeId);
HRESULT put_KsControl([in] PVOID pKsControl);
}
File diff suppressed because it is too large Load Diff