summaryrefslogtreecommitdiffstats
path: root/dxsdk/Include/DShowIDL
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-08-02 18:36:50 +0200
committerSergeanur <s.anureev@yandex.ua>2020-08-02 18:36:50 +0200
commita786dd45a4ebc6b91936b5e46d0ef0a9befc05af (patch)
treeced50966eaaf373f8733547046baf2bdc558662d /dxsdk/Include/DShowIDL
parentMerge branch 'master' of https://github.com/GTAmodding/re3 into erorcun (diff)
downloadre3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.tar
re3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.tar.gz
re3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.tar.bz2
re3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.tar.lz
re3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.tar.xz
re3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.tar.zst
re3-a786dd45a4ebc6b91936b5e46d0ef0a9befc05af.zip
Diffstat (limited to 'dxsdk/Include/DShowIDL')
-rw-r--r--dxsdk/Include/DShowIDL/Bdatif.idl678
-rw-r--r--dxsdk/Include/DShowIDL/Mpeg2Data.idl303
-rw-r--r--dxsdk/Include/DShowIDL/Mpeg2Structs.idl368
-rw-r--r--dxsdk/Include/DShowIDL/Mstvca.idl840
-rw-r--r--dxsdk/Include/DShowIDL/Mstvgs.idl837
-rw-r--r--dxsdk/Include/DShowIDL/Msvidctl.idl715
-rw-r--r--dxsdk/Include/DShowIDL/Segment.idl1349
-rw-r--r--dxsdk/Include/DShowIDL/Videoacc.idl172
-rw-r--r--dxsdk/Include/DShowIDL/Vmrender.idl1092
-rw-r--r--dxsdk/Include/DShowIDL/amstream.idl334
-rw-r--r--dxsdk/Include/DShowIDL/austream.idl106
-rw-r--r--dxsdk/Include/DShowIDL/axcore.idl1284
-rw-r--r--dxsdk/Include/DShowIDL/axextend.idl5169
-rw-r--r--dxsdk/Include/DShowIDL/bdaiface.idl1013
-rw-r--r--dxsdk/Include/DShowIDL/control.odl912
-rw-r--r--dxsdk/Include/DShowIDL/ddstream.idl86
-rw-r--r--dxsdk/Include/DShowIDL/devenum.idl38
-rw-r--r--dxsdk/Include/DShowIDL/dmodshow.idl33
-rw-r--r--dxsdk/Include/DShowIDL/dshowasf.idl59
-rw-r--r--dxsdk/Include/DShowIDL/dvdif.idl2326
-rw-r--r--dxsdk/Include/DShowIDL/dxtrans.idl1289
-rw-r--r--dxsdk/Include/DShowIDL/dyngraph.idl318
-rw-r--r--dxsdk/Include/DShowIDL/mediaobj.idl411
-rw-r--r--dxsdk/Include/DShowIDL/medparam.idl228
-rw-r--r--dxsdk/Include/DShowIDL/mixerocx.idl72
-rw-r--r--dxsdk/Include/DShowIDL/mmstream.idl190
-rw-r--r--dxsdk/Include/DShowIDL/mstve.idl1450
-rw-r--r--dxsdk/Include/DShowIDL/qedit.idl1734
-rw-r--r--dxsdk/Include/DShowIDL/regbag.idl52
-rw-r--r--dxsdk/Include/DShowIDL/sbe.idl1348
-rw-r--r--dxsdk/Include/DShowIDL/strmif.idl51
-rw-r--r--dxsdk/Include/DShowIDL/tuner.idl2254
-rw-r--r--dxsdk/Include/DShowIDL/tvratings.idl242
-rw-r--r--dxsdk/Include/DShowIDL/vidcap.idl84
-rw-r--r--dxsdk/Include/DShowIDL/vmr9.idl1057
35 files changed, 0 insertions, 28494 deletions
diff --git a/dxsdk/Include/DShowIDL/Bdatif.idl b/dxsdk/Include/DShowIDL/Bdatif.idl
deleted file mode 100644
index bc94db40..00000000
--- a/dxsdk/Include/DShowIDL/Bdatif.idl
+++ /dev/null
@@ -1,678 +0,0 @@
-//---------------------------------------------------------------------
-//
-// 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")
diff --git a/dxsdk/Include/DShowIDL/Mpeg2Data.idl b/dxsdk/Include/DShowIDL/Mpeg2Data.idl
deleted file mode 100644
index 6762c49c..00000000
--- a/dxsdk/Include/DShowIDL/Mpeg2Data.idl
+++ /dev/null
@@ -1,303 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// 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)
diff --git a/dxsdk/Include/DShowIDL/Mpeg2Structs.idl b/dxsdk/Include/DShowIDL/Mpeg2Structs.idl
deleted file mode 100644
index e04353f4..00000000
--- a/dxsdk/Include/DShowIDL/Mpeg2Structs.idl
+++ /dev/null
@@ -1,368 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// 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;
diff --git a/dxsdk/Include/DShowIDL/Mstvca.idl b/dxsdk/Include/DShowIDL/Mstvca.idl
deleted file mode 100644
index a9b257d8..00000000
--- a/dxsdk/Include/DShowIDL/Mstvca.idl
+++ /dev/null
@@ -1,840 +0,0 @@
-// 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")
-};
diff --git a/dxsdk/Include/DShowIDL/Mstvgs.idl b/dxsdk/Include/DShowIDL/Mstvgs.idl
deleted file mode 100644
index 7ce83f13..00000000
--- a/dxsdk/Include/DShowIDL/Mstvgs.idl
+++ /dev/null
@@ -1,837 +0,0 @@
-// 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;
- };
-};
diff --git a/dxsdk/Include/DShowIDL/Msvidctl.idl b/dxsdk/Include/DShowIDL/Msvidctl.idl
deleted file mode 100644
index d1a4d94e..00000000
--- a/dxsdk/Include/DShowIDL/Msvidctl.idl
+++ /dev/null
@@ -1,715 +0,0 @@
-// 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
diff --git a/dxsdk/Include/DShowIDL/Segment.idl b/dxsdk/Include/DShowIDL/Segment.idl
deleted file mode 100644
index a9895cbd..00000000
--- a/dxsdk/Include/DShowIDL/Segment.idl
+++ /dev/null
@@ -1,1349 +0,0 @@
-// Segment.idl : IDL source for devices segments for msvid.dll
-//
-
-// This file will be processed by the MIDL tool to
-// produce the type library (msvideo.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")
-
-#ifndef TUNING_MODEL_ONLY
-
-#include <olectl.h>
-cpp_quote("#include <olectl.h>")
-
-#ifndef DO_NO_IMPORTS
-import "oaidl.idl";
-import "ocidl.idl";
-import "strmif.idl";
-import "tuner.idl";
-import "tvratings.idl";
-#endif
-
-typedef enum {
-dispidName,
-dispidStatus,
-dispidDevImageSourceWidth,
-dispidDevImageSourceHeight,
-dispidDevCountryCode,
-dispidDevOverScan,
-dispidSegment,
-dispidDevVolume,
-dispidDevBalance,
-dispidDevPower,
-dispidTuneChan,
-dispidDevVideoSubchannel,
-dispidDevAudioSubchannel,
-dispidChannelAvailable,
-dispidDevVideoFrequency,
-dispidDevAudioFrequency,
-dispidCount,
-dispidDevFileName,
-dispidVisible,
-dispidOwner,
-dispidMessageDrain,
-//dispidPosition,
-dispidViewable,
-dispidDevView,
-dispidKSCat,
-dispidCLSID,
-dispid_KSCat,
-dispid_CLSID,
-dispidTune,
-dispidTS,
-dispidDevSAP,
-dispidClip,
-dispidRequestedClipRect,
-dispidClippedSourceRect,
-dispidAvailableSourceRect,
-dispidMediaPosition,
-dispidDevRun,
-dispidDevPause,
-dispidDevStop,
-dispidCCEnable,
-dispidDevStep,
-dispidDevCanStep,
-dispidSourceSize,
-dispid_playtitle,
-dispid_playchapterintitle,
-dispid_playchapter,
-dispid_playchaptersautostop,
-dispid_playattime,
-dispid_playattimeintitle,
-dispid_playperiodintitleautostop,
-dispid_replaychapter,
-dispid_playprevchapter,
-dispid_playnextchapter,
-dispid_playforwards,
-dispid_playbackwards,
-dispid_stilloff,
-dispid_audiolanguage,
-dispid_showmenu,
-dispid_resume,
-dispid_returnfromsubmenu,
-dispid_buttonsavailable,
-dispid_currentbutton,
-dispid_SelectAndActivateButton,
-dispid_ActivateButton,
-dispid_SelectRightButton,
-dispid_SelectLeftButton,
-dispid_SelectLowerButton,
-dispid_SelectUpperButton,
-dispid_ActivateAtPosition,
-dispid_SelectAtPosition,
-dispid_ButtonAtPosition,
-dispid_NumberOfChapters,
-dispid_TotalTitleTime,
-dispid_TitlesAvailable,
-dispid_VolumesAvailable,
-dispid_CurrentVolume,
-dispid_CurrentDiscSide,
-dispid_CurrentDomain,
-dispid_CurrentChapter,
-dispid_CurrentTitle,
-dispid_CurrentTime,
-dispid_FramesPerSecond,
-dispid_DVDTimeCode2bstr,
-dispid_DVDDirectory,
-dispid_IsSubpictureStreamEnabled,
-dispid_IsAudioStreamEnabled,
-dispid_CurrentSubpictureStream,
-dispid_SubpictureLanguage,
-dispid_CurrentAudioStream,
-dispid_AudioStreamsAvailable,
-dispid_AnglesAvailable,
-dispid_CurrentAngle,
-dispid_CCActive,
-dispid_CurrentCCService,
-dispid_SubpictureStreamsAvailable,
-dispid_SubpictureOn,
-dispid_DVDUniqueID,
-dispid_EnableResetOnStop,
-dispid_AcceptParentalLevelChange,
-dispid_NotifyParentalLevelChange,
-dispid_SelectParentalCountry,
-dispid_SelectParentalLevel,
-dispid_TitleParentalLevels,
-dispid_PlayerParentalCountry,
-dispid_PlayerParentalLevel,
-dispid_Eject,
-dispid_UOPValid,
-dispid_SPRM,
-dispid_GPRM,
-dispid_DVDTextStringType,
-dispid_DVDTextString,
-dispid_DVDTextNumberOfStrings,
-dispid_DVDTextNumberOfLanguages,
-dispid_DVDTextLanguageLCID,
-dispid_RegionChange,
-dispid_DVDAdm,
-dispid_DeleteBookmark,
-dispid_RestoreBookmark,
-dispid_SaveBookmark,
-dispid_SelectDefaultAudioLanguage,
-dispid_SelectDefaultSubpictureLanguage,
-dispid_PreferredSubpictureStream,
-dispid_DefaultMenuLanguage,
-dispid_DefaultSubpictureLanguage,
-dispid_DefaultAudioLanguage,
-dispid_DefaultSubpictureLanguageExt,
-dispid_DefaultAudioLanguageExt,
-dispid_LanguageFromLCID,
-dispid_KaraokeAudioPresentationMode,
-dispid_KaraokeChannelContent,
-dispid_KaraokeChannelAssignment,
-dispid_RestorePreferredSettings,
-dispid_ButtonRect,
-dispid_DVDScreenInMouseCoordinates,
-dispid_CustomCompositorClass,
-dispidCustomCompositorClass,
-dispid_CustomCompositor,
-dispidMixerBitmap,
-dispid_MixerBitmap,
-dispidMixerBitmapOpacity,
-dispidMixerBitmapRect,
-dispidSetupMixerBitmap,
-dispidUsingOverlay,
-dispidDisplayChange,
-dispidRePaint,
-dispid_IsEqualDevice,
-dispidrate,
-dispidposition,
-dispidpositionmode,
-dispidlength,
-dispidChangePassword,
-dispidSaveParentalLevel,
-dispidSaveParentalCountry,
-dispidConfirmPassword,
-dispidGetParentalLevel,
-dispidGetParentalCountry,
-dispidDefaultAudioLCID,
-dispidDefaultSubpictureLCID,
-dispidDefaultMenuLCID,
-dispidBookmarkOnStop,
-dispidMaxVidRect,
-dispidMinVidRect,
-dispidCapture,
-dispid_DecimateInput,
-dispidAlloctor,
-dispid_Allocator,
-dispidAllocPresentID,
-dispidSetAllocator,
-dispid_SetAllocator,
-dispidStreamBufferSinkName,
-dispidStreamBufferSourceName,
-dispidStreamBufferContentRecording,
-dispidStreamBufferReferenceRecording,
-dispidstarttime,
-dispidstoptime,
-dispidrecordingstopped,
-dispidrecordingstarted,
-dispidNameSetLock,
-dispidrecordingtype,
-dispidstart,
-dispidRecordingAttribute,
-dispid_RecordingAttribute,
-dispidSBEConfigure,
-dispid_CurrentRatings,
-dispid_MaxRatingsLevel,
-dispid_audioencoderint,
-dispid_videoencoderint,
-dispidService,
-dispid_BlockUnrated,
-dispid_UnratedDelay,
-dispid_SuppressEffects,
-dispidsbesource,
-LastReservedDeviceDispid=0x3fff
-} SegDispidList;
-typedef enum {
-eventidStateChange,
-eventidOnTuneChanged,
-eventidEndOfMedia,
-eventidDVDNotify,
-eventidPlayForwards,
-eventidPlayBackwards,
-eventidShowMenu,
-eventidResume,
-eventidSelectOrActivateButton,
-eventidStillOff,
-eventidPauseOn,
-eventidChangeCurrentAudioStream,
-eventidChangeCurrentSubpictureStream,
-eventidChangeCurrentAngle,
-eventidPlayAtTimeInTitle,
-eventidPlayAtTime,
-eventidPlayChapterInTitle,
-eventidPlayChapter,
-eventidReplayChapter,
-eventidPlayNextChapter,
-eventidStop,
-eventidReturnFromSubmenu,
-eventidPlayTitle,
-eventidPlayPrevChapter,
-eventidChangeKaraokePresMode,
-eventidChangeVideoPresMode,
-eventidOverlayUnavailable,
-eventidSinkCertificateFailure,
-eventidSinkCertificateSuccess,
-eventidSourceCertificateFailure,
-eventidSourceCertificateSuccess,
-eventidRatingsBlocked,
-eventidRatingsUnlocked,
-eventidRatingsChanged,
-eventidWriteFailure,
-eventidTimeHole,
-eventidStaleDataRead,
-eventidContentBecomingStale,
-eventidStaleFileDeleted,
-LastReservedDeviceEvent=0x3fff
-} SegEventidList;
-typedef enum {
- FrameMode,
- TenthsSecondsMode
-} PositionModeList;
-typedef enum {
- CONTENT = 0,
- REFERENCE
-} RecordingType;
-
- typedef enum {
- None,
- Caption1,
- Caption2,
- Text1,
- Text2,
- XDS
-} MSVidCCService;
-
-//*****************************************************************************
-//*****************************************************************************
-///////////////////////////////////////////////////////////////////////////////
-//
-// interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-//*****************************************************************************
-//*****************************************************************************
-
-//*****************************************************************************
-///////////////////////////////////////////////////////////////////////////////
-//
-// Utility Interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-//*****************************************************************************
-
-interface IMSVidRect;
-
-[object,
- uuid(7F5000A6-A440-47ca-8ACC-C0E75531A2C2),
- helpstring("Automation Compliant GDI Rect with Automatic HWND Scaling"),
- pointer_default(unique)
-]
-interface IMSVidRect : IDispatch {
- [propget, helpstring("Rectangle Top")] HRESULT Top([out, retval] LONG* TopVal);
- [propput, helpstring("Rectangle Top")] HRESULT Top([in] LONG TopVal);
- [propget, helpstring("Rectangle Left")] HRESULT Left([out, retval] LONG* LeftVal);
- [propput, helpstring("Rectangle Left")] HRESULT Left([in] LONG LeftVal);
- [propget, helpstring("Rectangle Width")] HRESULT Width([out, retval] LONG* WidthVal);
- [propput, helpstring("Rectangle Width")] HRESULT Width([in] LONG WidthVal);
- [propget, helpstring("Rectangle Height")] HRESULT Height([out, retval] LONG* HeightVal);
- [propput, helpstring("Rectangle Height")] HRESULT Height([in] LONG HeightVal);
- [propget, helpstring("Coordinates relative to HWnd")] HRESULT HWnd([out, retval] HWND* HWndVal);
- [propput, helpstring("Coordinates relative to HWnd")] HRESULT HWnd([in] HWND HWndVal);
- [propput, helpstring("New Rectangle Values")] HRESULT Rect([in] IMSVidRect* RectVal);
-};
-
-interface IMSVidGraphSegmentContainer;
-interface IMSVidGraphSegment;
-interface IEnumMSVidGraphSegment;
-
-
-//*****************************************************************************
-///////////////////////////////////////////////////////////////////////////////
-//
-// Segment Container interface allowing segments to find and access other segments
-//
-///////////////////////////////////////////////////////////////////////////////
-//*****************************************************************************
- ///////////////////////////////////////////////////////////////////////////////////////
- // if segments need to change the control state(stop, run, pause, etc) or get any stock
- // properties that are also made available to clients such as HWND, then they should simply
- // QI for the main IMSVidCtl interface. there's no reason to implement this stuff twice.
- [object,
- uuid(3DD2903D-E0AA-11d2-B63A-00C04F79498E),
- helpstring("DShow Graph Segment Container"),
- pointer_default(unique)
- ]
- interface IMSVidGraphSegmentContainer : IUnknown {
- [propget, helpstring("Graph")] HRESULT Graph([out] IGraphBuilder **ppGraph);
- [propget, helpstring("Input Segment")] HRESULT Input([out] IMSVidGraphSegment **pInput);
- [propget, helpstring("Output Segment")] HRESULT Outputs([out] IEnumMSVidGraphSegment **pOutputs);
- [propget, helpstring("Video Renderer")] HRESULT VideoRenderer([out] IMSVidGraphSegment **pVR);
- [propget, helpstring("Audio Renderer")] HRESULT AudioRenderer([out] IMSVidGraphSegment **pAR);
- [propget, helpstring("Features")] HRESULT Features([out] IEnumMSVidGraphSegment **pOutputs);
- [propget, helpstring("Composites")] HRESULT Composites([out] IEnumMSVidGraphSegment **pComposites);
- [propget, helpstring("Container")] HRESULT ParentContainer([out] IUnknown **ppContainer); // this allows the segments to get out and walk the dhtml hierarchy
- HRESULT Decompose(IMSVidGraphSegment *pSegment);
- HRESULT IsWindowless(); // the stock hwnd on the main vidctl is only valid if this is set
-
- // be very careful using GetFocus(think twice and then don't). it is recommended that systems follow the model
- // laid out by atvef and smil wherein the convergence of UI and video are implemented by providing the user interface
- // as standard html/xml, etc with video incorporated as an element of this standard presentation.
- // however, in the special case of dvd there is a prexisting standard which is conceptually inside out.
- // that is, the UI is embedded in the video stream rather than the stream being embedded in the UI.
- // as a consequence, buttons and menus can asynchronously pop up out of the video stream source(dvd navigator)
- // and, may require the focus. this inside out paradigm is the only situation where
- // getfocus should be used. otherwise, weird non-standard interactions will result.
- HRESULT GetFocus();
- };
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Direct Show Segment extension interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
- typedef enum MSVidSegmentType {
- MSVidSEG_SOURCE,
- MSVidSEG_XFORM,
- MSVidSEG_DEST,
- } MSVidSegmentType;
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object,
- uuid(1C15D482-911D-11d2-B632-00C04F79498E),
- helpstring("DShow Graph Segment Builder Interface"),
- pointer_default(unique)
- ]
- interface IMSVidGraphSegment : IPersist {
- // note: we separate init and load(via put_Container) because we want to associate device object
- // with their device moniker at creation time. but, we don't want to take the
- // hit of loading their filters until we're ready to build the graph because this segment may not get used
- [propget] HRESULT Init([out, retval] IUnknown **pInit);
- [propput] HRESULT Init([in] IUnknown *pInit);
- HRESULT EnumFilters([out] IEnumFilters **pNewEnum); //filters in seg
- [propget, helpstring("Graph that contains this segment")] HRESULT Container([out, retval] IMSVidGraphSegmentContainer **ppCtl);
- [propput, helpstring("Graph that contains this segment")] HRESULT Container([in] IMSVidGraphSegmentContainer *pCtl);
- [propget, helpstring("Type of Segment")] HRESULT Type([out, retval] MSVidSegmentType *pType);
- [propget, helpstring("Category this segment is for")] HRESULT Category([out, retval] GUID *pGuid);
- HRESULT Build(); // used to notify non-composition segment that the build/composition phase is about to start
- HRESULT PreRun(); // used to notify segments that the graph is built and about to be started
- HRESULT PostRun(); // called after graph is running
- HRESULT PreStop(); // used to notify segments that the graph about to be stopped
- HRESULT PostStop();// called after graph is stopped
- HRESULT OnEventNotify(LONG lEventCode, LONG_PTR lEventParm1, LONG_PTR lEventParm2); //DShow events
- HRESULT Decompose();
- };
-
-
- enum {
- // button state
- MSVIDCTL_LEFT_BUTTON =0x0001,
- MSVIDCTL_RIGHT_BUTTON =0x0002,
- MSVIDCTL_MIDDLE_BUTTON =0x0004,
- MSVIDCTL_X_BUTTON1 =0x0008,
- MSVIDCTL_X_BUTTON2 =0x0010,
- // shift state
- MSVIDCTL_SHIFT =0x0001,
- MSVIDCTL_CTRL =0x0002,
- MSVIDCTL_ALT =0x0004,
- };
-
- [object,
- uuid(301C060E-20D9-4587-9B03-F82ED9A9943C),
- helpstring("DShow Graph Segment Input Events"),
- pointer_default(unique)
- ]
- // this should only be implemented used by input(source) devices with ui in the video
- // stream(specifically dvd). see discussion of getfocus above
- interface IMSVidGraphSegmentUserInput : IUnknown {
- HRESULT Click();
- HRESULT DblClick();
- HRESULT KeyDown(short* KeyCode, short ShiftState);
- HRESULT KeyPress(short* KeyAscii);
- HRESULT KeyUp(short* KeyCode, short ShiftState);
- HRESULT MouseDown(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
- HRESULT MouseMove(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
- HRESULT MouseUp(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object,
- uuid(1C15D483-911D-11d2-B632-00C04F79498E),
- helpstring("DShow Graph Segment Composition Interface"),
- pointer_default(unique)
- ]
- interface IMSVidCompositionSegment : IMSVidGraphSegment {
- HRESULT Compose([in] IMSVidGraphSegment *upstream, [in] IMSVidGraphSegment *downstream);
- [propget, helpstring("The upstream segment being composed by this composition segment")] HRESULT Up([out] IMSVidGraphSegment **upstream);
- [propget, helpstring("The downstream segment being composed by this composition segment")] HRESULT Down([out] IMSVidGraphSegment **downstream);
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object,
- uuid(3DD2903E-E0AA-11d2-B63A-00C04F79498E),
- helpstring("DShow Graph Segment Enumerator"),
- pointer_default(unique)
- ]
- interface IEnumMSVidGraphSegment : IUnknown {
- HRESULT Next([in] ULONG celt, [out] IMSVidGraphSegment ** rgelt, [out] ULONG * pceltFetched);
- HRESULT Skip([in] ULONG celt);
- HRESULT Reset(void);
- HRESULT Clone([out] IEnumMSVidGraphSegment** ppenum);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object,
- uuid(DD47DE3F-9874-4f7b-8B22-7CB2688461E7),
- helpstring("DShow Video Renderer Graph Segment Builder Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVRGraphSegment : IMSVidGraphSegment {
- // NOTE: because of the way ActiveX controls work there is a tight coupling
- // between the video control itself and the video renderer device segment
- // as a consequence there are important interfaces such as positioning that
- // come through the control via the various ole interfaces which we need to
- // pass to the video renderer but we don't want script to access directly
- // there are also stock properties such as refresh and autosize that must also be
- // implemented directly on the video control and passed through to the video renderer
-
- // from ole interfaces
- [hidden, restricted, propput] HRESULT _VMRendererMode([in] LONG dwMode);
- [hidden, restricted, propput] HRESULT Owner([in] HWND Window);
- [hidden, restricted, propget] HRESULT Owner([out, retval] HWND* Window);
- // from ole interfaces
- [hidden, restricted, propget] HRESULT UseOverlay([out, retval] VARIANT_BOOL *UseOverlayVal);
- [hidden, restricted, propput] HRESULT UseOverlay([in] VARIANT_BOOL UseOverlayVal);
- // from top-level control visibility state
- [hidden, restricted, propget] HRESULT Visible([out, retval] VARIANT_BOOL* Visible);
- [hidden, restricted, propput] HRESULT Visible([in] VARIANT_BOOL Visible);
-
- // clients must go through top-level vidctl interfaces to access this. since vidctl's ondraw
- // actually paints this, it needs to know about it.
- [propget, hidden, restricted] HRESULT ColorKey([out, retval] OLE_COLOR* ColorKey);
- [propput, hidden, restricted] HRESULT ColorKey([in] OLE_COLOR ColorKey);
- // from ole interfaces and window msgs
- [propget, hidden, restricted] HRESULT Source([out, retval] LPRECT r);
- [propput, hidden, restricted] HRESULT Source([in] RECT r);
- // from ole interfaces and window msgs
- [propget, hidden, restricted] HRESULT Destination([out, retval] LPRECT r);
- [propput, hidden, restricted] HRESULT Destination([in] RECT r);
- [propget, hidden, restricted] HRESULT NativeSize([out] LPSIZE sizeval, [out] LPSIZE aspectratio);
- // letterboxing color if we're using
- [propget, hidden, restricted] HRESULT BorderColor([out, retval] OLE_COLOR* color);
- [propput, hidden, restricted] HRESULT BorderColor([in] OLE_COLOR color);
- // letterbox or stretch
- [propget, hidden, restricted] HRESULT MaintainAspectRatio([out, retval] VARIANT_BOOL *fMaintain);
- [propput, hidden, restricted] HRESULT MaintainAspectRatio([in] VARIANT_BOOL fMaintain);
-
- // from top-level control refresh method
- [hidden, restricted] HRESULT Refresh();
- [hidden, restricted] HRESULT DisplayChange();
- [hidden, restricted] HRESULT RePaint([in] HDC hdc);
-
- };
-
-
-//*****************************************************************************
-///////////////////////////////////////////////////////////////////////////////
-//
-// Automation compliant device object interfaces for bpc video control
-//
-///////////////////////////////////////////////////////////////////////////////
-//*****************************************************************************
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// input devices
-//
-///////////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(1C15D47C-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video Control Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidDevice : IDispatch {
- // base device properties
- [propget, id(dispidName)] HRESULT Name([out, retval] BSTR *Name);
- [propget, id(dispidStatus)] HRESULT Status([out, retval] long *Status);
- [propput, id(dispidDevPower)] HRESULT Power([in] VARIANT_BOOL Power);
- [propget, id(dispidDevPower)] HRESULT Power([retval, out] VARIANT_BOOL *Power);
- // DShow Associated properties
- // note: filter can be retrieved by QIing for IMSVidGraphSegment and enumerating
- [propget, id(dispidKSCat)] HRESULT Category([out, retval] BSTR *Guid);
- [propget, id(dispidCLSID)] HRESULT ClassID([out, retval] BSTR *Clsid);
- [propget, id(dispid_KSCat), hidden, restricted] HRESULT _Category([out, retval] GUID* Guid);
- [propget, id(dispid_CLSID), hidden, restricted] HRESULT _ClassID([out, retval] GUID* Clsid);
- [id(dispid_IsEqualDevice), helpstring("does the passed in device represent the same underlying hardware")] HRESULT IsEqualDevice([in] IMSVidDevice* Device, [out, retval] VARIANT_BOOL* IsEqual);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(37B0353D-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Input Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidInputDevice : IMSVidDevice {
- [id(dispidViewable)]HRESULT IsViewable([in] VARIANT* v, [out, retval] VARIANT_BOOL *pfViewable); // can this device view this item?
- [id(dispidDevView)]HRESULT View([in] VARIANT* v); // set this device to view this item
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation,
- uuid(1C15D480-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video Control Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidDeviceEvent : IDispatch {
- [id(eventidStateChange)] HRESULT StateChange([in] IMSVidDevice *lpd, [in] long oldState, [in] long newState);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation,
- uuid(37B0353E-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Input Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidInputDeviceEvent : IDispatch {
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(1C15D47F-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video Control Video Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVideoInputDevice : IMSVidInputDevice {
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
-
- [object, dual, oleautomation,
- uuid(37B03538-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Playback Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidPlayback : IMSVidInputDevice {
- // note: the following methods control the playback device *NOT* the graph.
- // if the underlying source filter only supports these functions via
- // imediacontrol on the graph then this device segment object should return E_NOTIMPL.
- [propget, id(dispid_EnableResetOnStop), helpstring("EnableResetOnStop")] HRESULT EnableResetOnStop([out, retval] VARIANT_BOOL *pVal);
- [propput, id(dispid_EnableResetOnStop), helpstring("EnableResetOnStop")] HRESULT EnableResetOnStop([in] VARIANT_BOOL newVal);
- [id(dispidDevRun)] HRESULT Run();
- [id(dispidDevPause)] HRESULT Pause();
- [id(dispidDevStop)] HRESULT Stop();
- [propget, id(dispidDevCanStep)] HRESULT CanStep([in] VARIANT_BOOL fBackwards, [out,retval] VARIANT_BOOL *pfCan);
- [id(dispidDevStep)] HRESULT Step([in] long lStep);
- [propput, id(dispidrate), helpstring("Rate")] HRESULT Rate([in] double plRate);
- [propget, id(dispidrate), helpstring("Rate")] HRESULT Rate([out,retval]double *plRate);
- [propput, id(dispidposition), helpstring("Position")] HRESULT CurrentPosition([in] long lPosition);
- [propget, id(dispidposition), helpstring("Position")] HRESULT CurrentPosition([out, retval] long* lPosition);
- [propput, id(dispidpositionmode), helpstring("PositionMode")] HRESULT PositionMode([in] PositionModeList lPositionMode);
- [propget, id(dispidpositionmode), helpstring("PositionMode")] HRESULT PositionMode([out, retval] PositionModeList* lPositionMode);
- [propget, id(dispidlength), helpstring("Length")] HRESULT Length([out, retval] long *lLength);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation,
- uuid(37B0353B-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Playback Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidPlaybackEvent : IMSVidInputDeviceEvent {
- [id(eventidEndOfMedia)] HRESULT EndOfMedia([in] IMSVidPlayback *lpd);
- };
-
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(1C15D47D-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video Tuner Interface"),
- pointer_default(unique)
- ]
- interface IMSVidTuner : IMSVidVideoInputDevice {
- [propget, id(dispidTune)] HRESULT Tune([out, retval] ITuneRequest **ppTR);
- [propput, id(dispidTune)] HRESULT Tune([in] ITuneRequest *pTR);
- [propget, id(dispidTS)] HRESULT TuningSpace([out, retval] ITuningSpace **plTS);
- [hidden, restricted, propput, id(dispidTS)] HRESULT TuningSpace([in] ITuningSpace* plTS);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(1C15D485-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video Control Tuner Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidTunerEvent : IMSVidInputDeviceEvent {
- [id(eventidOnTuneChanged)] HRESULT TuneChanged([in] IMSVidTuner *lpd);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(1C15D47E-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video TV Tuner Interface"),
- pointer_default(unique)
- ]
- interface IMSVidAnalogTuner : IMSVidTuner {
- [propget, id(dispidTuneChan)] HRESULT Channel([out, retval] long *Channel);
- [propput, id(dispidTuneChan)] HRESULT Channel([in] long Channel);
- [propget, id(dispidDevVideoFrequency)] HRESULT VideoFrequency([retval, out] long *lcc);
- [propget, id(dispidDevAudioFrequency)] HRESULT AudioFrequency([retval, out] long *lcc);
- // note: this is not LCID, this is physical location of device using
- // international dialing code value
- [propget, id(dispidDevCountryCode)] HRESULT CountryCode([retval, out] long *lcc);
- [propput, id(dispidDevCountryCode)] HRESULT CountryCode([in] long lcc);
- // analog specific shortcut to enabling a different audio component
- [propget, id(dispidDevSAP)] HRESULT SAP([out, retval] VARIANT_BOOL *pfSapOn);
- [propput, id(dispidDevSAP)] HRESULT SAP([in] VARIANT_BOOL fSapOn);
- // methods
- [id(dispidChannelAvailable)] HRESULT ChannelAvailable([in] long nChannel, [out] long *SignalStrength, [retval, out] VARIANT_BOOL *fSignalPresent);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation,
- uuid(1C15D486-911D-11d2-B632-00C04F79498E),
- helpstring("MS Video Control TV Tuner Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidAnalogTunerEvent : IMSVidTunerEvent {
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(37B03539-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control File Playback Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidFilePlayback : IMSVidPlayback {
- [propget, id(dispidDevFileName)] HRESULT FileName([out, retval] BSTR *FileName);
- [propput, id(dispidDevFileName)] HRESULT FileName([in] BSTR FileName);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(37B0353A-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control File Playback Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidFilePlaybackEvent : IMSVidPlaybackEvent {
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- typedef enum
- {
- dvdMenu_Title = 2,
- dvdMenu_Root = dvdMenu_Title + 1,
- dvdMenu_Subpicture = dvdMenu_Root + 1,
- dvdMenu_Audio = dvdMenu_Subpicture + 1,
- dvdMenu_Angle = dvdMenu_Audio + 1,
- dvdMenu_Chapter = dvdMenu_Angle + 1
- } DVDMenuIDConstants;
-
- typedef enum
- {
- dvdState_Undefined = -2,
- dvdState_Unitialized = dvdState_Undefined + 1,
- dvdState_Stopped = dvdState_Unitialized + 1,
- dvdState_Paused = dvdState_Stopped + 1,
- dvdState_Running = dvdState_Paused + 1
- } DVDFilterState;
-
- typedef enum
- {
- dvdStruct_Volume = 0x1,
- dvdStruct_Title = 0x2,
- dvdStruct_ParentalID = 0x3,
- dvdStruct_PartOfTitle = 0x4,
- dvdStruct_Cell = 0x5,
- dvdStream_Audio = 0x10,
- dvdStream_Subpicture = 0x11,
- dvdStream_Angle = 0x12,
- dvdChannel_Audio = 0x20,
- dvdGeneral_Name = 0x30,
- dvdGeneral_Comments = 0x31,
- dvdTitle_Series = 0x38,
- dvdTitle_Movie = 0x39,
- dvdTitle_Video = 0x3a,
- dvdTitle_Album = 0x3b,
- dvdTitle_Song = 0x3c,
- dvdTitle_Other = 0x3f,
- dvdTitle_Sub_Series = 0x40,
- dvdTitle_Sub_Movie = 0x41,
- dvdTitle_Sub_Video = 0x42,
- dvdTitle_Sub_Album = 0x43,
- dvdTitle_Sub_Song = 0x44,
- dvdTitle_Sub_Other = 0x47,
- dvdTitle_Orig_Series = 0x48,
- dvdTitle_Orig_Movie = 0x49,
- dvdTitle_Orig_Video = 0x4a,
- dvdTitle_Orig_Album = 0x4b,
- dvdTitle_Orig_Song = 0x4c,
- dvdTitle_Orig_Other = 0x4f,
- dvdOther_Scene = 0x50,
- dvdOther_Cut = 0x51,
- dvdOther_Take = 0x52
- } DVDTextStringType;
-
- typedef enum
- {
- dvdSPExt_NotSpecified = 0,
- dvdSPExt_Caption_Normal = 1,
- dvdSPExt_Caption_Big = 2,
- dvdSPExt_Caption_Children = 3,
- dvdSPExt_CC_Normal = 5,
- dvdSPExt_CC_Big = 6,
- dvdSPExt_CC_Children = 7,
- dvdSPExt_Forced = 9,
- dvdSPExt_DirectorComments_Normal = 13,
- dvdSPExt_DirectorComments_Big = 14,
- dvdSPExt_DirectorComments_Children = 15
- } DVDSPExt;
-
- [object, dual, oleautomation, hidden,
- uuid(CF45F88B-AC56-4EE2-A73A-ED04E2885D3C),
- helpstring("IMSVidWebDVD Interface"),
- pointer_default(unique)
- ]
- interface IMSVidWebDVD : IMSVidPlayback {
-
- HRESULT OnDVDEvent([in]long lEvent, [in]LONG_PTR lParam1, [in]LONG_PTR lParam2);
- [id(dispid_playtitle), helpstring("method PlayTitle")] HRESULT PlayTitle([in] long lTitle);
- [id(dispid_playchapterintitle), helpstring("method PlayChapterInTitle")] HRESULT PlayChapterInTitle([in] long lTitle, [in] long lChapter);
- [id(dispid_playchapter), helpstring("method PlayChapter")] HRESULT PlayChapter([in] long lChapter);
- [id(dispid_playchaptersautostop), helpstring("method PlayChaptersAutoStop")] HRESULT PlayChaptersAutoStop([in] long lTitle, [in] long lstrChapter, [in] long lChapterCount);
- [id(dispid_playattime), helpstring("method PlayAtTime")] HRESULT PlayAtTime([in] BSTR strTime);
- [id(dispid_playattimeintitle), helpstring("method PlayAtTimeInTitle")] HRESULT PlayAtTimeInTitle([in] long lTitle, [in] BSTR strTime);
- [id(dispid_playperiodintitleautostop), helpstring("method PlayPeriodInTitleAutoStop")] HRESULT PlayPeriodInTitleAutoStop([in] long lTitle, [in] BSTR strStartTime, [in] BSTR strEndTime);
- [id(dispid_replaychapter), helpstring("method ReplayChapter")] HRESULT ReplayChapter();
- [id(dispid_playprevchapter), helpstring("method PlayPrevChapter")] HRESULT PlayPrevChapter();
- [id(dispid_playnextchapter), helpstring("method PlayNextChapter")] HRESULT PlayNextChapter();
- [id(dispid_stilloff), helpstring("method StillOff")] HRESULT StillOff();
- [propget, id(dispid_audiolanguage), helpstring("AudioLanguage")] HRESULT AudioLanguage([in] long lStream, [in, defaultvalue(0)] VARIANT_BOOL fFormat, [out, retval] BSTR* strAudioLang);
- [id(dispid_showmenu), helpstring("method ShowMenu")] HRESULT ShowMenu([in] DVDMenuIDConstants MenuID);
- [id(dispid_resume), helpstring("method Resume")] HRESULT Resume();
- [id(dispid_returnfromsubmenu), helpstring("method ReturnFromSubmenu")] HRESULT ReturnFromSubmenu();
- [propget,id(dispid_buttonsavailable), helpstring("ButtonsAvailable")] HRESULT ButtonsAvailable([out, retval] long *pVal);
- [propget,id(dispid_currentbutton), helpstring("CurrentButton")] HRESULT CurrentButton([out, retval] long *pVal);
- [id(dispid_SelectAndActivateButton), helpstring("method SelectAndActivateButton")] HRESULT SelectAndActivateButton([in] long lButton);
- [id(dispid_ActivateButton), helpstring("method ActivateButton")] HRESULT ActivateButton();
- [id(dispid_SelectRightButton), helpstring("method SelectRightButton")] HRESULT SelectRightButton();
- [id(dispid_SelectLeftButton), helpstring("method SelectLeftButton")] HRESULT SelectLeftButton();
- [id(dispid_SelectLowerButton), helpstring("method SelectLowerButton")] HRESULT SelectLowerButton();
- [id(dispid_SelectUpperButton), helpstring("method SelectUpperButton")] HRESULT SelectUpperButton();
- [id(dispid_ActivateAtPosition), helpstring("method ActivateAtPosition")] HRESULT ActivateAtPosition([in] long xPos, [in] long yPos);
- [id(dispid_SelectAtPosition), helpstring("method SelectAtPosition")] HRESULT SelectAtPosition([in] long xPos, [in] long yPos);
- [propget, id(dispid_ButtonAtPosition), helpstring("ButtonAtPosition")] HRESULT ButtonAtPosition([in] long xPos, [in] long yPos, [out, retval] long* plButton);
- [propget, id(dispid_NumberOfChapters), helpstring("NumberOfChapters")] HRESULT NumberOfChapters([in] long lTitle, [out, retval] long *pVal);
- [propget, id(dispid_TotalTitleTime), helpstring("TotalTitleTime")] HRESULT TotalTitleTime([out, retval] BSTR *pVal);
- [propget, id(dispid_TitlesAvailable), helpstring("TitlesAvailable")] HRESULT TitlesAvailable([out, retval] long* pVal);
- [propget, id(dispid_VolumesAvailable), helpstring("VolumesAvailable")] HRESULT VolumesAvailable([out, retval] long *pVal);
- [propget, id(dispid_CurrentVolume), helpstring("CurrentVolume")] HRESULT CurrentVolume([out, retval] long *pVal);
- [propget, id(dispid_CurrentDiscSide), helpstring("CurrentDiscSide")] HRESULT CurrentDiscSide([out, retval] long *pVal);
- [propget, id(dispid_CurrentDomain), helpstring("CurrentDomain")] HRESULT CurrentDomain([out, retval] long *pVal);
- [propget, id(dispid_CurrentChapter), helpstring("CurrentChapter")] HRESULT CurrentChapter([out, retval] long *pVal);
- [propget, id(dispid_CurrentTitle), helpstring("CurrentTitle")] HRESULT CurrentTitle([out, retval] long *pVal);
- [propget, id(dispid_CurrentTime), helpstring("CurrentTime")] HRESULT CurrentTime([out, retval] BSTR *pVal);
- [id(dispid_DVDTimeCode2bstr), helpstring("method DVDTimeCode2bstr")] HRESULT DVDTimeCode2bstr([in] long timeCode, [out, retval] BSTR *pTimeStr);
- [propget, id(dispid_DVDDirectory), helpstring("DVDDirectory")] HRESULT DVDDirectory([out, retval] BSTR *pVal);
- [propput, id(dispid_DVDDirectory), helpstring("DVDDirectory")] HRESULT DVDDirectory([in] BSTR newVal);
- [id(dispid_IsSubpictureStreamEnabled), helpstring("method IsSubpictureStreamEnabled")] HRESULT IsSubpictureStreamEnabled([in] long lstream, [out, retval] VARIANT_BOOL *fEnabled);
- [id(dispid_IsAudioStreamEnabled), helpstring("method IsAudioStreamEnabled")] HRESULT IsAudioStreamEnabled([in] long lstream, [out, retval] VARIANT_BOOL *fEnabled);
- [propget, id(dispid_CurrentSubpictureStream), helpstring("CurrentSubpictureStream")] HRESULT CurrentSubpictureStream([out, retval] long *pVal);
- [propput, id(dispid_CurrentSubpictureStream), helpstring("CurrentSubpictureStream")] HRESULT CurrentSubpictureStream([in] long newVal);
- [propget, id(dispid_SubpictureLanguage), helpstring("SubpictureLanguage")] HRESULT SubpictureLanguage(long lStream, [out, retval] BSTR* strLanguage);
- [propget, id(dispid_CurrentAudioStream), helpstring("CurrentAudioStream")] HRESULT CurrentAudioStream([out, retval] long *pVal);
- [propput, id(dispid_CurrentAudioStream), helpstring("CurrentAudioStream")] HRESULT CurrentAudioStream([in] long newVal);
- [propget, id(dispid_AudioStreamsAvailable), helpstring("AudioStreamsAvailable")] HRESULT AudioStreamsAvailable([out, retval] long *pVal);
- [propget, id(dispid_AnglesAvailable), helpstring("AnglesAvailable")] HRESULT AnglesAvailable([out, retval] long *pVal);
- [propget, id(dispid_CurrentAngle), helpstring("CurrentAngle")] HRESULT CurrentAngle([out, retval] long *pVal);
- [propput, id(dispid_CurrentAngle), helpstring("CurrentAngle")] HRESULT CurrentAngle([in] long newVal);
- [propget, id(dispid_SubpictureStreamsAvailable), helpstring("SubpictureStreamsAvailable")] HRESULT SubpictureStreamsAvailable([out, retval] long *pVal);
- [propget, id(dispid_SubpictureOn), helpstring("SubpictureOn")] HRESULT SubpictureOn([out, retval] VARIANT_BOOL *pVal);
- [propput, id(dispid_SubpictureOn), helpstring("SubpictureOn")] HRESULT SubpictureOn([in] VARIANT_BOOL newVal);
- [propget, id(dispid_DVDUniqueID), helpstring("DVDUniqueID")] HRESULT DVDUniqueID([out, retval] BSTR *pVal);
- [id(dispid_AcceptParentalLevelChange), helpstring("method AcceptParentalLevelChange")] HRESULT AcceptParentalLevelChange([in] VARIANT_BOOL fAccept, [in] BSTR strUserName, [in] BSTR strPassword);
- [id(dispid_NotifyParentalLevelChange), helpstring("method NotifyParentalLevelChange")] HRESULT NotifyParentalLevelChange([in] VARIANT_BOOL newVal);
- [id(dispid_SelectParentalCountry), helpstring("method SelectParentalCountry")] HRESULT SelectParentalCountry([in] long lCountry, [in] BSTR strUserName, [in] BSTR strPassword);
- [id(dispid_SelectParentalLevel), helpstring("method SelectParentalLevel")] HRESULT SelectParentalLevel([in] long lParentalLevel, [in] BSTR strUserName, [in] BSTR strPassword);
- [propget, id(dispid_TitleParentalLevels), helpstring("TitleParentalLevels")] HRESULT TitleParentalLevels([in] long lTitle, [out, retval] long* plParentalLevels);
- [propget, id(dispid_PlayerParentalCountry), helpstring("PlayerParentalCountry")] HRESULT PlayerParentalCountry([out, retval] long* plCountryCode);
- [propget, id(dispid_PlayerParentalLevel), helpstring("PlayerParentalLevel")] HRESULT PlayerParentalLevel([out, retval] long* plParentalLevel);
- [id(dispid_Eject), helpstring("method Eject")] HRESULT Eject();
- [id(dispid_UOPValid), helpstring("method UOPValid")] HRESULT UOPValid([in] long lUOP, [out, retval] VARIANT_BOOL* pfValid);
- [propget, id(dispid_SPRM), helpstring("SPRM")] HRESULT SPRM([in] long lIndex, [out, retval] short *psSPRM);
- [propget, id(dispid_GPRM), helpstring("GPRM")] HRESULT GPRM([in] long lIndex, [out, retval] short *psSPRM);
- [propput, id(dispid_GPRM), helpstring("GPRM")] HRESULT GPRM([in] long lIndex, [in] short sValue);
- [propget, id(dispid_DVDTextStringType), helpstring("DVDTextStringType")] HRESULT DVDTextStringType([in] long lLangIndex, [in] long lStringIndex, [out, retval] DVDTextStringType* pType);
- [propget, id(dispid_DVDTextString), helpstring("DVDTextString")] HRESULT DVDTextString([in] long lLangIndex, [in] long lStringIndex, [out, retval] BSTR* pstrText);
- [propget, id(dispid_DVDTextNumberOfStrings), helpstring("DVDTextNumberOfStrings")] HRESULT DVDTextNumberOfStrings([in] long lLangIndex, [out, retval] long* plNumOfStrings);
- [propget, id(dispid_DVDTextNumberOfLanguages), helpstring("DVDTextNumberOfLanguages")] HRESULT DVDTextNumberOfLanguages([out, retval] long* plNumOfLangs);
- [propget, id(dispid_DVDTextLanguageLCID), helpstring("DVDTextLanguageLCID")] HRESULT DVDTextLanguageLCID([in] long lLangIndex, [out, retval] long* lcid);
- [id(dispid_RegionChange), helpstring("method RegionChange")] HRESULT RegionChange();
- [propget, id(dispid_DVDAdm), helpstring("DVDAdm")] HRESULT DVDAdm([out, retval] IDispatch* *pVal);
- [id(dispid_DeleteBookmark), helpstring("method DeleteBookmark")] HRESULT DeleteBookmark();
- [id(dispid_RestoreBookmark), helpstring("method RestoreBookmark")] HRESULT RestoreBookmark();
- [id(dispid_SaveBookmark), helpstring("method SaveBookmark")] HRESULT SaveBookmark();
- [id(dispid_SelectDefaultAudioLanguage), helpstring("method SelectDefaultAudioLanguage")] HRESULT SelectDefaultAudioLanguage([in] long lang, [in] long ext);
- [id(dispid_SelectDefaultSubpictureLanguage), helpstring("method SelectDefaultSubpictureLanguage")] HRESULT SelectDefaultSubpictureLanguage([in] long lang, [in] DVDSPExt ext);
- [propget, id(dispid_PreferredSubpictureStream), helpstring("PreferredSubpictureStream")] HRESULT PreferredSubpictureStream([out, retval] long *pVal);
- [propget, id(dispid_DefaultMenuLanguage), helpstring("DefaultMenuLanguage")] HRESULT DefaultMenuLanguage([out, retval] long* lang);
- [propput, id(dispid_DefaultMenuLanguage), helpstring("DefaultMenuLanguage")] HRESULT DefaultMenuLanguage([in] long lang);
- [propget, id(dispid_DefaultSubpictureLanguage), helpstring("DefaultSubpictureLanguage")] HRESULT DefaultSubpictureLanguage([out, retval] long* lang);
- [propget, id(dispid_DefaultAudioLanguage), helpstring("DefaultAudioLanguage")] HRESULT DefaultAudioLanguage([out, retval] long *lang);
- [propget, id(dispid_DefaultSubpictureLanguageExt), helpstring("DefaultSubpictureLanguageExt")] HRESULT DefaultSubpictureLanguageExt([out, retval] DVDSPExt* ext);
- [propget, id(dispid_DefaultAudioLanguageExt), helpstring("DefaultAudioLanguageExt")] HRESULT DefaultAudioLanguageExt([out, retval] long *ext);
- [propget, id(dispid_LanguageFromLCID), helpstring("LanguageFromLCID")] HRESULT LanguageFromLCID([in] long lcid, [out, retval] BSTR* lang);
- [propget, id(dispid_KaraokeAudioPresentationMode), helpstring("KaraokeAudioPresentationMode")] HRESULT KaraokeAudioPresentationMode([out, retval] long *pVal);
- [propput, id(dispid_KaraokeAudioPresentationMode), helpstring("KaraokeAudioPresentationMode")] HRESULT KaraokeAudioPresentationMode([in] long newVal);
- [propget, id(dispid_KaraokeChannelContent), helpstring("KaraokeChannelContent")] HRESULT KaraokeChannelContent([in] long lStream, [in] long lChan, [out, retval] long* lContent);
- [propget, id(dispid_KaraokeChannelAssignment), helpstring("KaraokeChannelAssignment")] HRESULT KaraokeChannelAssignment([in] long lStream, [out, retval] long *lChannelAssignment);
- [id(dispid_RestorePreferredSettings), helpstring("method RestorePreferredSettings")] HRESULT RestorePreferredSettings();
- [propget, id(dispid_ButtonRect), helpstring("ButtonRect")] HRESULT ButtonRect([in] long lButton, [out, retval] IMSVidRect** pRect);
- [propget, id(dispid_DVDScreenInMouseCoordinates), helpstring("DVDScreenInMouseCoordinates")] HRESULT DVDScreenInMouseCoordinates([out, retval] IMSVidRect** ppRect);
- [propput, id(dispid_DVDScreenInMouseCoordinates), helpstring("DVDScreenInMouseCoordinates")] HRESULT DVDScreenInMouseCoordinates([in] IMSVidRect* pRect);
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(B4F7A674-9B83-49cb-A357-C63B871BE958),
- helpstring("MS Video Control File Playback Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidWebDVDEvent : IMSVidPlaybackEvent {
- [id(eventidDVDNotify), helpstring("Notifies the client about DVD Code")] HRESULT DVDNotify([in]long lEventCode, [in]VARIANT lParam1, [in]VARIANT lParam2);
- [id(eventidPlayForwards), helpstring("Notifies the client")] HRESULT PlayForwards([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayBackwards), helpstring("Notifies the client")] HRESULT PlayBackwards([in] VARIANT_BOOL bEnabled);
- [id(eventidShowMenu), helpstring("Notifies the client")] HRESULT ShowMenu([in]DVDMenuIDConstants, [in] VARIANT_BOOL bEnabled);
- [id(eventidResume), helpstring("Notifies the client")] HRESULT Resume([in] VARIANT_BOOL bEnabled);
- [id(eventidSelectOrActivateButton), helpstring("Notifies the client")] HRESULT SelectOrActivateButton([in] VARIANT_BOOL bEnabled);
- [id(eventidStillOff), helpstring("Notifies the client")] HRESULT StillOff([in] VARIANT_BOOL bEnabled);
- [id(eventidPauseOn), helpstring("Notifies the client")] HRESULT PauseOn([in] VARIANT_BOOL bEnabled);
- [id(eventidChangeCurrentAudioStream), helpstring("Notifies the client")] HRESULT ChangeCurrentAudioStream([in] VARIANT_BOOL bEnabled);
- [id(eventidChangeCurrentSubpictureStream), helpstring("Notifies the client")] HRESULT ChangeCurrentSubpictureStream([in] VARIANT_BOOL bEnabled);
- [id(eventidChangeCurrentAngle), helpstring("Notifies the client")] HRESULT ChangeCurrentAngle([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayAtTimeInTitle), helpstring("Notifies the client")] HRESULT PlayAtTimeInTitle([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayAtTime), helpstring("Notifies the client")] HRESULT PlayAtTime([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayChapterInTitle), helpstring("Notifies the client")] HRESULT PlayChapterInTitle([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayChapter), helpstring("Notifies the client")] HRESULT PlayChapter([in] VARIANT_BOOL bEnabled);
- [id(eventidReplayChapter), helpstring("Notifies the client")] HRESULT ReplayChapter([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayNextChapter), helpstring("Notifies the client")] HRESULT PlayNextChapter([in] VARIANT_BOOL bEnabled);
- [id(eventidStop), helpstring("Notifies the client")] HRESULT Stop([in] VARIANT_BOOL bEnabled);
- [id(eventidReturnFromSubmenu), helpstring("Notifies the client")] HRESULT ReturnFromSubmenu([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayTitle), helpstring("Notifies the client")] HRESULT PlayTitle([in] VARIANT_BOOL bEnabled);
- [id(eventidPlayPrevChapter), helpstring("Notifies the client")] HRESULT PlayPrevChapter([in] VARIANT_BOOL bEnabled);
- [id(eventidChangeKaraokePresMode), helpstring("Notifies the client")] HRESULT ChangeKaraokePresMode([in] VARIANT_BOOL bEnabled);
- [id(eventidChangeVideoPresMode), helpstring("Notifies the client")] HRESULT ChangeVideoPresMode([in] VARIANT_BOOL bEnabled);
- };
-
- [object, dual, oleautomation, hidden,
- uuid(B8BE681A-EB2C-47f0-B415-94D5452F0E05),
- helpstring("IMSVidWebDVDAdm Interface"),
- pointer_default(unique)
- ]
- interface IMSVidWebDVDAdm : IDispatch
- {
- [id(dispidChangePassword), helpstring("method ChangePassword")] HRESULT ChangePassword([in]BSTR strUserName, [in]BSTR strOld, [in]BSTR strNew);
- [id(dispidSaveParentalLevel), helpstring("method SaveParentalLevel")] HRESULT SaveParentalLevel([in]long level,[in]BSTR strUserName, [in]BSTR strPassword);
- [id(dispidSaveParentalCountry), helpstring("method SaveParentalCountry")] HRESULT SaveParentalCountry([in]long country,[in]BSTR strUserName, [in]BSTR strPassword);
- [id(dispidConfirmPassword), hidden, restricted, helpstring("method ConfirmPassword")] HRESULT ConfirmPassword([in]BSTR strUserName, [in]BSTR strPassword, [out, retval] VARIANT_BOOL *pVal);
- [id(dispidGetParentalLevel), helpstring("method GetParentalLevel")] HRESULT GetParentalLevel([out, retval] long *lLevel);
- [id(dispidGetParentalCountry), helpstring("method GetParentalCountry")] HRESULT GetParentalCountry([out, retval] long *lCountry);
- [propget, id(dispidDefaultAudioLCID), helpstring("property DefaultAudioLCID")] HRESULT DefaultAudioLCID([out, retval] long *pVal);
- [propput, id(dispidDefaultAudioLCID), helpstring("property DefaultAudioLCID")] HRESULT DefaultAudioLCID([in] long newVal);
- [propget, id(dispidDefaultSubpictureLCID), helpstring("property DefaultSubpictureLCID")] HRESULT DefaultSubpictureLCID([out, retval] long *pVal);
- [propput, id(dispidDefaultSubpictureLCID), helpstring("property DefaultSubpictureLCID")] HRESULT DefaultSubpictureLCID([in] long newVal);
- [propget, id(dispidDefaultMenuLCID), helpstring("property DefaultMenuLCID")] HRESULT DefaultMenuLCID([out, retval] long *pVal);
- [propput, id(dispidDefaultMenuLCID), helpstring("property DefaultMenuLCID")] HRESULT DefaultMenuLCID([in] long newVal);
- [propget, id(dispidBookmarkOnStop), helpstring("property BookmarkOnStop")] HRESULT BookmarkOnStop([out, retval] VARIANT_BOOL *pVal);
- [propput, id(dispidBookmarkOnStop), helpstring("property BookmarkOnStop")] HRESULT BookmarkOnStop([in] VARIANT_BOOL newVal);
- };
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// output devices
-//
-///////////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(37B03546-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Output Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidOutputDevice : IMSVidDevice {
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation,
- uuid(2E6A14E2-571C-11d3-B652-00C04F79498E),
- helpstring("MS Video Control Output Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidOutputDeviceEvent : IMSVidDeviceEvent {
- };
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// features
-//
-///////////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(37B03547-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Feature Interface"),
- pointer_default(unique)
- ]
- interface IMSVidFeature : IMSVidDevice {
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation,
- uuid(3DD2903C-E0AA-11d2-B63A-00C04F79498E),
- helpstring("MS Video Control Feature Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidFeatureEvent : IMSVidDeviceEvent {
- };
-
-
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(C0020FD4-BEE7-43d9-A495-9F213117103D),
- helpstring("MS Video Control Encoder Feature Interface"),
- pointer_default(unique)
- ]
- interface IMSVidEncoder : IMSVidFeature {
- [propget, id(dispid_videoencoderint)] HRESULT VideoEncoderInterface([out, retval] IUnknown **ppEncInt);
- [propget, id(dispid_audioencoderint)] HRESULT AudioEncoderInterface([out, retval] IUnknown **ppEncInt);
- };
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation,
- uuid(11EBC158-E712-4d1f-8BB3-01ED5274C4CE),
- helpstring("MS Video Control XDS Feature Interface"),
- pointer_default(unique)
- ]
- interface IMSVidXDS : IMSVidFeature {
- };
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(334125C1-77E5-11d3-B653-00C04F79498E),
- helpstring("MS Video Control Data Services Feature Interface"),
- pointer_default(unique)
- ]
- interface IMSVidDataServices : IMSVidFeature {
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(334125C2-77E5-11d3-B653-00C04F79498E),
- helpstring("MS Video Control Data Services Feature Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidDataServicesEvent : IMSVidDeviceEvent {
- };
-
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(99652EA1-C1F7-414f-BB7B-1C967DE75983),
- helpstring("MS Video Control Closed Captioning Feature Interface"),
- pointer_default(unique)
- ]
- interface IMSVidClosedCaptioning : IMSVidFeature {
- [propget, id(dispidCCEnable)] HRESULT Enable([out, retval] VARIANT_BOOL *On);
- [propput, id(dispidCCEnable)] HRESULT Enable([in] VARIANT_BOOL On);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(E00CB864-A029-4310-9987-A873F5887D97),
- helpstring("MS Video Control Closed Captioning Feature Interface 2"),
- pointer_default(unique)
- ]
- interface IMSVidClosedCaptioning2 : IMSVidClosedCaptioning{
- [propget, id(dispidService)] HRESULT Service([out, retval] MSVidCCService *On);
- [propput, id(dispidService)] HRESULT Service([in] MSVidCCService On);
- };
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// video renderer
-//
-///////////////////////////////////////////////////////////////////////////////
-// need to add msvidvidoerenderer2 that has allocator prestenter stuff...
- typedef enum {
- sslFullSize,
- sslClipByOverScan,
- sslClipByClipRect,
- } SourceSizeList;
-
- ///////////////////////////////////////////////////////////////////////////////////////
-
- [object, dual, oleautomation, hidden,
- uuid(37B03540-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Video Renderer Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVideoRenderer : IMSVidOutputDevice {
- // Properties
- [propget, id(dispidCustomCompositorClass)] HRESULT CustomCompositorClass([out, retval] BSTR *CompositorCLSID);
- [propput, id(dispidCustomCompositorClass)] HRESULT CustomCompositorClass([in] BSTR CompositorCLSID);
- [propget, hidden, restricted, id(dispid_CustomCompositorClass)] HRESULT _CustomCompositorClass([out, retval] GUID* CompositorCLSID);
- [propput, hidden, restricted, id(dispid_CustomCompositorClass)] HRESULT _CustomCompositorClass([in] REFCLSID CompositorCLSID);
- [propget, hidden, restricted, id(dispid_CustomCompositor)] HRESULT _CustomCompositor([out, retval] IVMRImageCompositor** Compositor);
- [propput, hidden, restricted, id(dispid_CustomCompositor)] HRESULT _CustomCompositor([in] IVMRImageCompositor* Compositor);
- //
- [propget, id(dispidMixerBitmap)] HRESULT MixerBitmap([out,retval] IPictureDisp** MixerPictureDisp);
- [propget, hidden, restricted, id(dispid_MixerBitmap)] HRESULT _MixerBitmap([out, retval] IVMRMixerBitmap ** MixerPicture);
- [propput, id(dispidMixerBitmap)] HRESULT MixerBitmap([in] IPictureDisp* MixerPictureDisp);
- [propput, hidden, restricted, id(dispid_MixerBitmap)] HRESULT _MixerBitmap([in] VMRALPHABITMAP * MixerPicture);
- [propget, id(dispidMixerBitmapRect)] HRESULT MixerBitmapPositionRect([out,retval] IMSVidRect **rDest);
- [propput, id(dispidMixerBitmapRect)] HRESULT MixerBitmapPositionRect([in] IMSVidRect *rDest);
- [propget, id(dispidMixerBitmapOpacity)] HRESULT MixerBitmapOpacity([out,retval]int *opacity);
- [propput, id(dispidMixerBitmapOpacity)] HRESULT MixerBitmapOpacity([in]int opacity);
- [id(dispidSetupMixerBitmap)] HRESULT SetupMixerBitmap([in] IPictureDisp * MixerPictureDisp, [in] long Opacity, [in] IMSVidRect *rDest);
-
- // display surface control
- [propget, id(dispidSourceSize)] HRESULT SourceSize([retval, out] SourceSizeList *CurrentSize);
- [propput, id(dispidSourceSize)] HRESULT SourceSize([in] SourceSizeList NewSize);
-
- [propget, id(dispidDevOverScan), helpstring("trim each source edge by this amount(in hundredths of percent, e.g. 1.75% == 175)")] HRESULT OverScan([retval, out] long *plPercent);
- [propput, id(dispidDevOverScan), helpstring("trim each source edge by this amount(in hundredths of percent, e.g. 1.75% == 175)")] HRESULT OverScan([in] long lPercent);
-
- [propget, id(dispidAvailableSourceRect)] HRESULT AvailableSourceRect([out, retval] IMSVidRect **pRect);
- [propget, id(dispidMaxVidRect)] HRESULT MaxVidRect([out, retval] IMSVidRect **ppVidRect);
- [propget, id(dispidMinVidRect)] HRESULT MinVidRect([out, retval] IMSVidRect **ppVidRect);
- [propget, id(dispidClippedSourceRect)] HRESULT ClippedSourceRect([out, retval] IMSVidRect **pRect);
- [propput, id(dispidClippedSourceRect)] HRESULT ClippedSourceRect([in] IMSVidRect *pRect);
- [propget, id(dispidUsingOverlay)] HRESULT UsingOverlay([out, retval] VARIANT_BOOL *UseOverlayVal);
- [propput, id(dispidUsingOverlay)] HRESULT UsingOverlay([in] VARIANT_BOOL UseOverlayVal);
- [id(dispidCapture)] HRESULT Capture([out, retval] IPictureDisp **currentImage);
- [propget, id(dispid_FramesPerSecond), helpstring("FramesPerSecond")] HRESULT FramesPerSecond([out, retval] long *pVal);
- [propget, id(dispid_DecimateInput), helpstring("DecimateInput")] HRESULT DecimateInput([out,retval] VARIANT_BOOL *pDeci);
- [propput, id(dispid_DecimateInput), helpstring("DecimateInput")] HRESULT DecimateInput([in] VARIANT_BOOL pDeci);
-
- // Methods
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(37B03545-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Video Renderer Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVideoRendererEvent : IMSVidOutputDeviceEvent {
- [id(eventidOverlayUnavailable), helpstring("HW Overlay surface in use or not present")] HRESULT OverlayUnavailable();
- };
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Stream Buffer
-// Sink and Source
-//
-///////////////////////////////////////////////////////////////////////////////
-////
-// Stream Buffer Recording Control Object
- //////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- dual,
- oleautomation,
- hidden,
- nonextensible,
- pointer_default(unique),
- uuid(160621AA-BBBC-4326-A824-C395AEBC6E74),
- helpstring("IMSVidStreamBufferRecordingControl Interface"),
- ]
- interface IMSVidStreamBufferRecordingControl : IDispatch {
- [propget, id(dispidstarttime), helpstring("method StartTime, values in milliseconds")]HRESULT StartTime ([out, retval] long *rtStart) ;
- [propput, id(dispidstarttime), helpstring("method StartTime, values in milliseconds")]HRESULT StartTime ([in] long rtStart) ;
- [propget, id(dispidstoptime), helpstring("method StopTime, values in milliseconds")]HRESULT StopTime ([out, retval] long *rtStop) ;
- [propput, id(dispidstoptime), helpstring("method StopTime, values in milliseconds")]HRESULT StopTime ([in] long rtStop) ;
- [propget, id(dispidrecordingstopped), helpstring("method RecordingStopped")]HRESULT RecordingStopped ([out, retval] VARIANT_BOOL* phResult) ;
- [propget, id(dispidrecordingstarted), helpstring("method RecordingStarted")]HRESULT RecordingStarted ([out, retval] VARIANT_BOOL* phResult);
- [propget, id(dispidrecordingtype), helpstring("property returns type of recording object")] HRESULT RecordingType ([out, retval] RecordingType *dwType);
- [propget, id(dispidRecordingAttribute), helpstring("get Recording Attribute interface")] HRESULT RecordingAttribute ([out, retval] IUnknown **pRecordingAttribute);
- };
- // Sink
- [object, dual, oleautomation, hidden,
- uuid(159DBB45-CD1B-4dab-83EA-5CB1F4F21D07),
- helpstring("MS Video Control Stream Buffer Sink Output Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidStreamBufferSink : IMSVidOutputDevice {
- [propget, id(dispidStreamBufferContentRecording), helpstring("New Recording Object")] HRESULT ContentRecorder([in]BSTR pszFilename, [retval, out] IMSVidStreamBufferRecordingControl ** pRecordingIUnknown ) ;
- [propget, id(dispidStreamBufferReferenceRecording), helpstring("New Recording Object")] HRESULT ReferenceRecorder([in]BSTR pszFilename, [retval, out] IMSVidStreamBufferRecordingControl ** pRecordingIUnknown ) ;
- [propget, id(dispidStreamBufferSinkName), helpstring("Sink Name")] HRESULT SinkName([retval, out] BSTR* pName);
- [propput, id(dispidStreamBufferSinkName), helpstring("Sink Name")] HRESULT SinkName([in] BSTR Name);
- [id(dispidNameSetLock), helpstring("Name Set Lock")] HRESULT NameSetLock();
- [propget, id(dispidSBEConfigure), helpstring("SBE Sink Interface")] HRESULT SBESink([retval, out] IUnknown** sbeConfig);
-
- };
- ///////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(F798A36B-B05B-4bbe-9703-EAEA7D61CD51),
- helpstring("MS Video Control Stream Buffer Sink Output Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidStreamBufferSinkEvent : IMSVidOutputDeviceEvent {
- [id(eventidSinkCertificateFailure), helpstring("Sink Certificate Failure")] HRESULT CertificateFailure();
- [id(eventidSinkCertificateSuccess), helpstring("Sink Certificate Success")] HRESULT CertificateSuccess();
- [id(eventidWriteFailure), helpstring("Sink Write Failure")] HRESULT WriteFailure();
- };
-///////////////////////////////////////////////////////////////////////////////////////
-// SBE Source Playback
- [object, dual, oleautomation, hidden,
- uuid(EB0C8CF9-6950-4772-87B1-47D11CF3A02F),
- helpstring("MS Video Control Stream Buffer Source Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidStreamBufferSource : IMSVidFilePlayback {
- [propget, id(dispidstart), helpstring("Start")] HRESULT Start([out, retval] long *lStart);
- [propget, id(dispid_RecordingAttribute), helpstring("get Recording Attribute interface")] HRESULT RecordingAttribute ([out, retval] IUnknown **pRecordingAttribute);
- [id(dispid_CurrentRatings), helpstring("Current Ratings for SBE playback")] HRESULT CurrentRatings([out] EnTvRat_System *pEnSystem, [out] EnTvRat_GenericLevel *pEnRating, [out] LONG *pBfEnAttr); // attrs are bitfields of BfEnTvRat_GenericAttributes
- [id(dispid_MaxRatingsLevel), helpstring("Maximum Ratings Level for SBE playback")] HRESULT MaxRatingsLevel([in] EnTvRat_System enSystem, [in] EnTvRat_GenericLevel enRating, [in] LONG lbfEnAttr);
- [propput, id(dispid_BlockUnrated), helpstring("Block unrated content")] HRESULT BlockUnrated([in] VARIANT_BOOL bBlock);
- [propput, id(dispid_UnratedDelay), helpstring("Maximum Ratings Level for SBE playback")] HRESULT UnratedDelay([in] long dwDelay);
- [propget, id(dispidsbesource), helpstring("Stream Buffer Source Interface")] HRESULT SBESource([out, retval] IUnknown **sbeFilter);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(50CE8A7D-9C28-4DA8-9042-CDFA7116F979),
- helpstring("MS Video Control Stream Buffer Source Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidStreamBufferSourceEvent : IMSVidFilePlaybackEvent {
- [id(eventidSourceCertificateFailure), helpstring("Source Certificate Failure")] HRESULT CertificateFailure();
- [id(eventidSourceCertificateSuccess), helpstring("Source Certificate Success")] HRESULT CertificateSuccess();
- [id(eventidRatingsBlocked), helpstring("Ratings Blocked")] HRESULT RatingsBlocked();
- [id(eventidRatingsUnlocked), helpstring("Ratings Unblocked")] HRESULT RatingsUnblocked();
- [id(eventidRatingsChanged), helpstring("Ratings Changed")] HRESULT RatingsChanged();
- [id(eventidTimeHole), helpstring("Source Time Hole")] HRESULT TimeHole([in] long StreamOffsetMS, [in] long SizeMS);
- [id(eventidStaleDataRead), helpstring("Source Stale Data Read")] HRESULT StaleDataRead();
- [id(eventidContentBecomingStale), helpstring("Source Content Becoming Stale")] HRESULT ContentBecomingStale();
- [id(eventidStaleFileDeleted), helpstring("Source Stale File Deleted")] HRESULT StaleFileDeleted();
- };
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// video renderer II
-//
-///////////////////////////////////////////////////////////////////////////////
-
- [object, dual, oleautomation, hidden,
- uuid(6BDD5C1E-2810-4159-94BC-05511AE8549B),
- helpstring("MS Video Control Video Renderer Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVideoRenderer2 : IMSVidVideoRenderer {
- // Properties
- [propget, id(dispidAlloctor)] HRESULT Allocator([out, retval] IUnknown ** AllocPresent);
- [propget, id(dispid_Allocator), hidden, restricted] HRESULT _Allocator([out, retval] IVMRSurfaceAllocator ** AllocPresent);
- // Quick Notes on ID's
- // 1. default id is the lower 32 bits of the IUnknown pointer for the Vidctl
- // 2. if the id is not yet set get_Allocator_ID will return -1
- [propget, id(dispidAllocPresentID)] HRESULT Allocator_ID([out, retval] long *ID);
- [id(dispidSetAllocator)] HRESULT SetAllocator([in] IUnknown* AllocPresent, [in, defaultvalue(-1)] long ID);
- [id(dispid_SetAllocator), hidden, restricted] HRESULT _SetAllocator([in] IVMRSurfaceAllocator* AllocPresent, [in, defaultvalue(-1)] long ID);
- [propput, id(dispid_SuppressEffects)] HRESULT SuppressEffects( [in] VARIANT_BOOL bSuppress);
- [propget, id(dispid_SuppressEffects)] HRESULT SuppressEffects( [out, retval] VARIANT_BOOL *bSuppress);
- // display surface control
- // Methods
-
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(7145ED66-4730-4fdb-8A53-FDE7508D3E5E),
- helpstring("MS Video Control Video Renderer Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVideoRendererEvent2 : IMSVidOutputDeviceEvent {
- [id(eventidOverlayUnavailable), helpstring("HW Overlay surface in use or not present")] HRESULT OverlayUnavailable();
- };
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// audio renderer
-//
-///////////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, dual, oleautomation, hidden,
- uuid(37B0353F-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Audio Renderer Device Interface"),
- pointer_default(unique)
- ]
- interface IMSVidAudioRenderer : IMSVidOutputDevice {
- [propput, id(dispidDevVolume)] HRESULT Volume([in] long lVol);
- [propget, id(dispidDevVolume)] HRESULT Volume([retval, out] long *lVol);
- [propput, id(dispidDevBalance)] HRESULT Balance([in] long lBal);
- [propget, id(dispidDevBalance)] HRESULT Balance([retval, out] long *lBal);
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////
- [object, oleautomation, hidden,
- uuid(37B03541-A4C8-11d2-B634-00C04F79498E),
- helpstring("MS Video Control Audio Renderer Device Event Interface"),
- pointer_default(unique)
- ]
- interface IMSVidAudioRendererEvent : IMSVidOutputDeviceEvent {
- };
-
-///////////////////////////////////////////////////////////////////////////////////////
-// device collection
-///////////////////////////////////////////////////////////////////////////////////////
-
- [object, dual, oleautomation, hidden,
- uuid(C5702CD1-9B79-11d3-B654-00C04F79498E),
- helpstring("MS Video Control Input Device Writable Collection Interface"),
- pointer_default(unique)
- ]
- interface IMSVidInputDevices : IDispatch {
- [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
- [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
- [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidInputDevice **pDB);
- [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidInputDevice *pDB);
- [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
- };
-
- [object, dual, oleautomation, hidden,
- uuid(C5702CD2-9B79-11d3-B654-00C04F79498E),
- helpstring("MS Video Control Output Device Writable Collection Interface"),
- pointer_default(unique)
- ]
- interface IMSVidOutputDevices : IDispatch {
- [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
- [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
- [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidOutputDevice **pDB);
- [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidOutputDevice *pDB);
- [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
- };
-
- [object, dual, oleautomation, hidden,
- uuid(C5702CD3-9B79-11d3-B654-00C04F79498E),
- helpstring("MS Video Control Video Renderer Device Writable Collection Interface"),
- pointer_default(unique)
- ]
- interface IMSVidVideoRendererDevices : IDispatch {
- [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
- [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
- [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidVideoRenderer **pDB);
- [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidVideoRenderer *pDB);
- [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
- };
-
- [object, dual, oleautomation, hidden,
- uuid(C5702CD4-9B79-11d3-B654-00C04F79498E),
- helpstring("MS Video Control Audio Renderer Device Writable Collection Interface"),
- pointer_default(unique)
- ]
- interface IMSVidAudioRendererDevices : IDispatch {
- [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
- [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
- [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidAudioRenderer **pDB);
- [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidAudioRenderer *pDB);
- [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
- };
-
- [object, dual, oleautomation, hidden,
- uuid(C5702CD5-9B79-11d3-B654-00C04F79498E),
- helpstring("MS Video Control Features Writable Collection Interface"),
- pointer_default(unique)
- ]
- interface IMSVidFeatures: IDispatch {
- [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
- [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
- [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidFeature **pDB);
- [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidFeature *pDB);
- [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
- };
-
-#endif // TUNING_MODEL_ONLY
-
-// end of file segment.idl
diff --git a/dxsdk/Include/DShowIDL/Videoacc.idl b/dxsdk/Include/DShowIDL/Videoacc.idl
deleted file mode 100644
index 6c55aa73..00000000
--- a/dxsdk/Include/DShowIDL/Videoacc.idl
+++ /dev/null
@@ -1,172 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);
-};
-
-
-
-
-
-
diff --git a/dxsdk/Include/DShowIDL/Vmrender.idl b/dxsdk/Include/DShowIDL/Vmrender.idl
deleted file mode 100644
index ed5e50ec..00000000
--- a/dxsdk/Include/DShowIDL/Vmrender.idl
+++ /dev/null
@@ -1,1092 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// Public Interfaces for the Video Mixing Renderer DShow filter
-//
-// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
-///////////////////////////////////////////////////////////////////////////////
-
-cpp_quote("#if 0")
-// This is temporary work around to persuade
-// MIDL to allow forward declarations.
-typedef DWORD* LPDIRECTDRAW7;
-typedef DWORD* LPDIRECTDRAWSURFACE7;
-typedef DWORD* LPDDPIXELFORMAT;
-typedef DWORD* LPBITMAPINFOHEADER;
-typedef struct {DWORD dw1; DWORD dw2;} DDCOLORKEY;
-typedef DDCOLORKEY* LPDDCOLORKEY;
-cpp_quote ("#endif")
-cpp_quote("#include <ddraw.h>")
-
-
-// public interfaces supported by the VMR
-interface IVMRSurface;
-
-interface IVMRSurfaceAllocator;
-interface IVMRSurfaceAllocatorNotify;
-interface IVMRImagePresenter;
-interface IVMRImagePresenterConfig;
-
-interface IVMRWindowlessControl;
-interface IVMRMixerControl;
-interface IVMRMixerBitmap;
-interface IVMRFilterConfig;
-interface IVMRAspectRatioControl;
-interface IVMRDeinterlaceControl;
-interface IVMRMonitorConfig;
-
-interface IVMRImageCompositor;
-
-interface IVMRVideoStreamControl;
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Allocator Presenter interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-
-//=====================================================================
-//
-// IVMRImagePresenter
-//
-//=====================================================================
-typedef enum {
- VMRSample_SyncPoint = 0x00000001,
- VMRSample_Preroll = 0x00000002,
- VMRSample_Discontinuity = 0x00000004,
- VMRSample_TimeValid = 0x00000008,
- VMRSample_SrcDstRectsValid= 0x00000010
-} VMRPresentationFlags;
-
-
-typedef struct tagVMRPRESENTATIONINFO {
- DWORD dwFlags;
- LPDIRECTDRAWSURFACE7 lpSurf;
- REFERENCE_TIME rtStart;
- REFERENCE_TIME rtEnd;
- SIZE szAspectRatio;
- RECT rcSrc;
- RECT rcDst;
- DWORD dwTypeSpecificFlags;
- DWORD dwInterlaceFlags;
-} VMRPRESENTATIONINFO;
-
-[
- local,
- object,
- local,
- uuid(CE704FE7-E71E-41fb-BAA2-C4403E1182F5),
- helpstring("IVMRImagePresenter Interface"),
- pointer_default(unique)
-]
-interface IVMRImagePresenter : IUnknown
-{
- HRESULT StartPresenting(
- [in] DWORD_PTR dwUserID
- );
-
- HRESULT StopPresenting(
- [in] DWORD_PTR dwUserID
- );
-
-
- HRESULT PresentImage(
- [in] DWORD_PTR dwUserID,
- [in] VMRPRESENTATIONINFO* lpPresInfo
- );
-};
-
-
-//=====================================================================
-//
-// IVMRSurfaceAllocator
-//
-//=====================================================================
-
-typedef enum {
- AMAP_PIXELFORMAT_VALID = 0x01,
- AMAP_3D_TARGET = 0x02,
- AMAP_ALLOW_SYSMEM = 0x04,
- AMAP_FORCE_SYSMEM = 0x08,
- AMAP_DIRECTED_FLIP = 0x10,
- AMAP_DXVA_TARGET = 0x20
-} VMRSurfaceAllocationFlags;
-
-typedef struct tagVMRALLOCATIONINFO {
- DWORD dwFlags;
- LPBITMAPINFOHEADER lpHdr;
- LPDDPIXELFORMAT lpPixFmt;
- SIZE szAspectRatio;
- DWORD dwMinBuffers;
- DWORD dwMaxBuffers;
- DWORD dwInterlaceFlags;
- SIZE szNativeSize;
-} VMRALLOCATIONINFO;
-
-[
- local,
- object,
- local,
- uuid(31ce832e-4484-458b-8cca-f4d7e3db0b52),
- helpstring("IVMRSurfaceAllocator Interface"),
- pointer_default(unique)
-]
-interface IVMRSurfaceAllocator : IUnknown
-{
- HRESULT AllocateSurface(
- [in] DWORD_PTR dwUserID,
- [in] VMRALLOCATIONINFO* lpAllocInfo,
- [in] [out] DWORD* lpdwActualBuffers,
- [out] LPDIRECTDRAWSURFACE7 *lplpSurface
- );
-
- HRESULT FreeSurface(
- [in] DWORD_PTR dwID
- );
-
- HRESULT PrepareSurface(
- [in] DWORD_PTR dwUserID,
- [in] LPDIRECTDRAWSURFACE7 lpSurface,
- [in] DWORD dwSurfaceFlags
- );
-
- HRESULT AdviseNotify(
- [in] IVMRSurfaceAllocatorNotify* lpIVMRSurfAllocNotify
- );
-};
-
-
-//=====================================================================
-//
-// IVMRSurfaceAllocatorNotify
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(aada05a8-5a4e-4729-af0b-cea27aed51e2),
- helpstring("IVMRSurfaceAllocatorNotify Interface"),
- pointer_default(unique)
-]
-interface IVMRSurfaceAllocatorNotify : IUnknown
-{
- HRESULT AdviseSurfaceAllocator(
- [in] DWORD_PTR dwUserID,
- [in] IVMRSurfaceAllocator* lpIVRMSurfaceAllocator
- );
-
- HRESULT SetDDrawDevice(
- [in] LPDIRECTDRAW7 lpDDrawDevice,
- [in] HMONITOR hMonitor
- );
-
- HRESULT ChangeDDrawDevice(
- [in] LPDIRECTDRAW7 lpDDrawDevice,
- [in] HMONITOR hMonitor
- );
-
- HRESULT RestoreDDrawSurfaces();
-
- HRESULT NotifyEvent(
- [in] LONG EventCode,
- [in] LONG_PTR Param1,
- [in] LONG_PTR Param2
- );
-
- HRESULT SetBorderColor(
- [in] COLORREF clrBorder
- );
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Application control and configuration interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-//=====================================================================
-//
-// IVMRWindowlessControl
-//
-//=====================================================================
-typedef enum {
- VMR_ARMODE_NONE,
- VMR_ARMODE_LETTER_BOX
-} VMR_ASPECT_RATIO_MODE;
-
-[
- local,
- object,
- local,
- uuid(0eb1088c-4dcd-46f0-878f-39dae86a51b7),
- helpstring("IVMRWindowlessControl Interface"),
- pointer_default(unique)
-]
-interface IVMRWindowlessControl : IUnknown
-{
- //
- //////////////////////////////////////////////////////////
- // Video size and position information
- //////////////////////////////////////////////////////////
- //
- HRESULT GetNativeVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight,
- [out] LONG* lpARWidth,
- [out] LONG* lpARHeight
- );
-
- HRESULT GetMinIdealVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight
- );
-
- HRESULT GetMaxIdealVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight
- );
-
- HRESULT SetVideoPosition(
- [in] const LPRECT lpSRCRect,
- [in] const LPRECT lpDSTRect
- );
-
- HRESULT GetVideoPosition(
- [out] LPRECT lpSRCRect,
- [out] LPRECT lpDSTRect
- );
-
- HRESULT GetAspectRatioMode(
- [out] DWORD* lpAspectRatioMode
- );
-
- HRESULT SetAspectRatioMode(
- [in] DWORD AspectRatioMode
- );
-
- //
- //////////////////////////////////////////////////////////
- // Display and clipping management
- //////////////////////////////////////////////////////////
- //
- HRESULT SetVideoClippingWindow(
- [in] HWND hwnd
- );
-
- HRESULT RepaintVideo(
- [in] HWND hwnd,
- [in] HDC hdc
- );
-
- HRESULT DisplayModeChanged();
-
-
- //
- //////////////////////////////////////////////////////////
- // GetCurrentImage
- //
- // Returns the current image being displayed. This images
- // is returned in the form of packed Windows DIB.
- //
- // GetCurrentImage can be called at any time, also
- // the caller is responsible for free the returned memory
- // by calling CoTaskMemFree.
- //
- // Excessive use of this function will degrade video
- // playback performed.
- //////////////////////////////////////////////////////////
- //
- HRESULT GetCurrentImage(
- [out] BYTE** lpDib
- );
-
- //
- //////////////////////////////////////////////////////////
- // Border Color control
- //
- // The border color is color used to fill any area of the
- // the destination rectangle that does not contain video.
- // It is typically used in two instances. When the video
- // straddles two monitors and when the VMR is trying
- // to maintain the aspect ratio of the movies by letter
- // boxing the video to fit within the specified destination
- // rectangle. See SetAspectRatioMode above.
- //////////////////////////////////////////////////////////
- //
- HRESULT SetBorderColor(
- [in] COLORREF Clr
- );
-
- HRESULT GetBorderColor(
- [out] COLORREF* lpClr
- );
-
- //
- //////////////////////////////////////////////////////////
- // Color key control only meaningful when the VMR is using
- // and overlay
- //////////////////////////////////////////////////////////
- //
- HRESULT SetColorKey(
- [in] COLORREF Clr
- );
-
- HRESULT GetColorKey(
- [out] COLORREF* lpClr
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRMixerControl
-//
-//=====================================================================
-
-typedef enum {
- MixerPref_NoDecimation = 0x00000001, // No decimation - full size
- MixerPref_DecimateOutput = 0x00000002, // decimate output by 2 in x & y
- MixerPref_ARAdjustXorY = 0x00000004, // adjust the aspect ratio in x or y
- MixerPref_DecimationReserved = 0x00000008, // bits reserved for future use.
- MixerPref_DecimateMask = 0x0000000F,
-
- MixerPref_BiLinearFiltering = 0x00000010, // use bi-linear filtering
- MixerPref_PointFiltering = 0x00000020, // use point filtering
- MixerPref_FilteringMask = 0x000000F0, // OR of all above flags
-
- MixerPref_RenderTargetRGB = 0x00000100, // Uses D3D to perform mixing
- MixerPref_RenderTargetYUV = 0x00001000, // Uses DXVA to perform mixing
-
- MixerPref_RenderTargetYUV420 = 0x00000200, // Deprecated render target
- MixerPref_RenderTargetYUV422 = 0x00000400, // Deprecated render target
- MixerPref_RenderTargetYUV444 = 0x00000800, // Deprecated render target
- MixerPref_RenderTargetReserved = 0x0000E000, // 3 bits reserved for future use.
- MixerPref_RenderTargetMask = 0x0000FF00, // OR of all above flags
-
- //
- // Dynamic changes that can be performed when the VMR's mixer is
- // configured to use the YUV Render target (see MixerPref_RenderTargetYUV)
- // These preferences can be applied while the graph is running and take effect
- // when the next frame is composed by the mixer.
- //
- MixerPref_DynamicSwitchToBOB = 0x00010000,
- MixerPref_DynamicDecimateBy2 = 0x00020000,
-
- MixerPref_DynamicReserved = 0x000C0000,
- MixerPref_DynamicMask = 0x000F0000
-
-} VMRMixerPrefs;
-
-//
-// Normalized relative rectangle
-// Coordinate ranges: x=[0...1) y=[0...1)
-// Where the output window goes from 0,0 (closed inclusive lower bound)
-// to 1,1 (open exclusive upper bound)
-//
-typedef struct _NORMALIZEDRECT
-{
- float left;
- float top;
- float right;
- float bottom;
-} NORMALIZEDRECT, *PNORMALIZEDRECT;
-
-[
- local,
- object,
- local,
- uuid(1c1a17b0-bed0-415d-974b-dc6696131599),
- helpstring("IVMRMixerControl Interface"),
- pointer_default(unique)
-]
-interface IVMRMixerControl : IUnknown
-{
- HRESULT SetAlpha(
- [in] DWORD dwStreamID,
- [in] float Alpha // Source alpha premultication factor (global alpha for source)
- );
-
- HRESULT GetAlpha(
- [in] DWORD dwStreamID,
- [out] float* pAlpha
- );
-
- HRESULT SetZOrder(
- [in] DWORD dwStreamID,
- [in] DWORD dwZ
- );
-
- HRESULT GetZOrder(
- [in] DWORD dwStreamID,
- [out] DWORD* pZ
- );
-
- HRESULT SetOutputRect(
- [in] DWORD dwStreamID,
- [in] const NORMALIZEDRECT *pRect
- );
-
- HRESULT GetOutputRect(
- [in] DWORD dwStreamID,
- [out] NORMALIZEDRECT *pRect
- );
-
- HRESULT SetBackgroundClr(
- [in] COLORREF ClrBkg
- );
-
- HRESULT GetBackgroundClr(
- [in] COLORREF* lpClrBkg
- );
-
- HRESULT SetMixingPrefs(
- [in] DWORD dwMixerPrefs // a combination of VMRMixingPrefFlags
- );
-
- HRESULT GetMixingPrefs(
- [out] DWORD* pdwMixerPrefs
- );
-};
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// VMR Multimon configuration interface
-//
-///////////////////////////////////////////////////////////////////////////////
-typedef struct tagVMRGUID {
- GUID* pGUID; // is NULL if the default DDraw device
- GUID GUID; // otherwise points to this GUID
-} VMRGUID;
-
-#define VMRDEVICENAMELEN 32
-#define VMRDEVICEDESCRIPTIONLEN 256
-
-typedef struct tagVMRMONITORINFO {
- VMRGUID guid;
- RECT rcMonitor;
- HMONITOR hMon;
- DWORD dwFlags; // described in MONITORINFOEX, currently only MONITORINFOF_PRIMARY
- wchar_t szDevice[VMRDEVICENAMELEN];
- wchar_t szDescription[VMRDEVICEDESCRIPTIONLEN];
- LARGE_INTEGER liDriverVersion;
- DWORD dwVendorId;
- DWORD dwDeviceId;
- DWORD dwSubSysId;
- DWORD dwRevision;
- // find out the DDCAPS using DDrawCreate on the monitor GUID
-} VMRMONITORINFO;
-
-[
- object,
- local,
- uuid(9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce),
- helpstring("IVMRMonitorConfig Interface"),
- pointer_default(unique)
-]
-interface IVMRMonitorConfig : IUnknown
-{
- // Use this method on a Multi-Monitor system to specify to the
- // mixer filter which Direct Draw driver should be used when connecting
- // to an upstream decoder filter.
- //
- HRESULT SetMonitor(
- [in] const VMRGUID *pGUID
- );
-
- // Use this method to determine the direct draw object that will be used when
- // connecting the mixer filter to an upstream decoder filter.
- //
- HRESULT GetMonitor(
- [out] VMRGUID *pGUID
- );
-
- // Use this method on a multi-monitor system to specify to the
- // mixer filter the default Direct Draw device to use when
- // connecting to an upstream filter. The default direct draw device
- // can be overriden for a particular connection by SetMonitor method
- // described above.
- //
- HRESULT SetDefaultMonitor(
- [in] const VMRGUID *pGUID
- );
-
- // Use this method on a multi-monitor system to determine which
- // is the default direct draw device the overlay mixer filter
- // will use when connecting to an upstream filter.
- //
- HRESULT GetDefaultMonitor(
- [out] VMRGUID *pGUID
- );
-
- // Use this method to get a list of Direct Draw device GUIDs and thier
- // associated monitor information that the mixer can use when
- // connecting to an upstream decoder filter. Passing down a NULL pInfo
- // parameter allows the app to determine the required array size (returned
- // in pdwNumDevices). Otherwise, dwNumDevices returns the actual
- // number of devices retrieved.
- //
- HRESULT GetAvailableMonitors(
- [out, size_is(dwMaxInfoArraySize)] VMRMONITORINFO* pInfo,
- [in] DWORD dwMaxInfoArraySize, // in array members
- [out] DWORD* pdwNumDevices // actual number of devices retrieved
- );
-};
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// VMR Filter configuration interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-typedef enum {
- RenderPrefs_RestrictToInitialMonitor = 0x00000000, // not implemented do not use
- RenderPrefs_ForceOffscreen = 0x00000001,
- RenderPrefs_ForceOverlays = 0x00000002, // fail if no overlays
- RenderPrefs_AllowOverlays = 0x00000000, // overlay used by default
- RenderPrefs_AllowOffscreen = 0x00000000, // offscreen used if no overlay
- RenderPrefs_DoNotRenderColorKeyAndBorder = 0x00000008, // app paints color keys
- RenderPrefs_Reserved = 0x00000010, // note: used to be RestrictToInitialMonitor
- RenderPrefs_PreferAGPMemWhenMixing = 0x00000020, // try agp mem when allocating textures
-
- RenderPrefs_Mask = 0x0000003f, // OR of all above flags
-} VMRRenderPrefs;
-
-typedef enum {
- VMRMode_Windowed = 0x00000001,
- VMRMode_Windowless = 0x00000002,
- VMRMode_Renderless = 0x00000004,
-
- // not a valid value to pass to SetRenderMode
- VMRMode_Mask = 0x00000007, // OR of all above flags
-} VMRMode;
-
-enum {
- MAX_NUMBER_OF_STREAMS = 16
-};
-
-[
- object,
- local,
- uuid(9e5530c5-7034-48b4-bb46-0b8a6efc8e36),
- helpstring("IVMRFilterConfig Interface"),
- pointer_default(unique)
-]
-interface IVMRFilterConfig : IUnknown
-{
- HRESULT SetImageCompositor(
- [in] IVMRImageCompositor* lpVMRImgCompositor
- );
-
- HRESULT SetNumberOfStreams(
- [in] DWORD dwMaxStreams
- );
-
- HRESULT GetNumberOfStreams(
- [out] DWORD* pdwMaxStreams
- );
-
- HRESULT SetRenderingPrefs(
- [in] DWORD dwRenderFlags // a combination of VMRRenderingPrefFlags
- );
-
- HRESULT GetRenderingPrefs(
- [out] DWORD* pdwRenderFlags
- );
-
- HRESULT SetRenderingMode(
- [in] DWORD Mode // a combination of VMRMode
- );
-
- HRESULT GetRenderingMode(
- [out] DWORD* pMode
- );
-}
-
-
-//=====================================================================
-//
-// IVMRAspectRatioControl
-//
-//=====================================================================
-[
- object,
- local,
- uuid(ede80b5c-bad6-4623-b537-65586c9f8dfd),
- helpstring("IVMRAspectRatioControl Interface"),
- pointer_default(unique)
-]
-interface IVMRAspectRatioControl : IUnknown
-{
- HRESULT GetAspectRatioMode(
- [out] LPDWORD lpdwARMode
- );
-
- HRESULT SetAspectRatioMode(
- [in] DWORD dwARMode
- );
-}
-
-
-//=====================================================================
-//
-// IVMRDeinterlaceControl
-//
-// New interfaced introduced into the WindowsXP SP1 release of the VMR.
-// This interface allows applications to control the DX-VA deinterlacing
-// support provided by the VMR.
-//
-// The VMR needs to be set into "mixing" mode for this interface to work.
-//
-// SetDeinterlaceMode is only effective for new connections made to the
-// VMR. It should be noted that the graphics device driver may refuse
-// to use the specified deinterlace mode, in which case 3 fallback
-// policies are offered by the VMR, these being:
-//
-// 1. Fallback to the next best mode offered by the driver.
-// 2. Fallback to the BOB deinterlace mode.
-// 3. Fallback to the WEAVE deinterlace mode (ie. turn deinterlacing off).
-//
-//=====================================================================
-
-typedef enum {
- DeinterlacePref_NextBest = 0x01,
- DeinterlacePref_BOB = 0x02,
- DeinterlacePref_Weave = 0x04,
- DeinterlacePref_Mask = 0x07
-} VMRDeinterlacePrefs;
-
-typedef enum {
-
- // the algorithm is unknown or proprietary
- DeinterlaceTech_Unknown = 0x0000,
-
- // the algorithm creates the missing lines by repeating
- // the line either above or below it - this method will look very jaggy and
- // isn't recommended
- DeinterlaceTech_BOBLineReplicate = 0x0001,
-
-
- // the algorithm creates the missing lines by vertically stretching each
- // video field by a factor of two, for example by averaging two lines or
- // using a [-1, 9, 9, -1]/16 filter across four lines.
- // Slight vertical adjustments are made to ensure that the resulting image
- // does not "bob" up and down.
- DeinterlaceTech_BOBVerticalStretch = 0x0002,
-
- // the pixels in the missing line are recreated by a median filtering operation
- DeinterlaceTech_MedianFiltering = 0x0004,
-
- // the pixels in the missing line are recreated by an edge filter.
- // In this process, spatial directional filters are applied to determine
- // the orientation of edges in the picture content, and missing
- // pixels are created by filtering along (rather than across) the
- // detected edges.
- DeinterlaceTech_EdgeFiltering = 0x0010,
-
- // the pixels in the missing line are recreated by switching on a field by
- // field basis between using either spatial or temporal interpolation
- // depending on the amount of motion.
- DeinterlaceTech_FieldAdaptive = 0x0020,
-
- // the pixels in the missing line are recreated by switching on a pixel by pixel
- // basis between using either spatial or temporal interpolation depending on
- // the amount of motion..
- DeinterlaceTech_PixelAdaptive = 0x0040,
-
- // Motion Vector Steering identifies objects within a sequence of video
- // fields. The missing pixels are recreated after first aligning the
- // movement axes of the individual objects in the scene to make them
- // parallel with the time axis.
- DeinterlaceTech_MotionVectorSteered = 0x0080
-
-} VMRDeinterlaceTech;
-
-typedef struct _VMRFrequency {
- DWORD dwNumerator;
- DWORD dwDenominator;
-} VMRFrequency;
-
-typedef struct _VMRVideoDesc {
- DWORD dwSize;
- DWORD dwSampleWidth;
- DWORD dwSampleHeight;
- BOOL SingleFieldPerSample;
- DWORD dwFourCC;
- VMRFrequency InputSampleFreq;
- VMRFrequency OutputFrameFreq;
-} VMRVideoDesc;
-
-typedef struct _VMRDeinterlaceCaps {
- DWORD dwSize;
- DWORD dwNumPreviousOutputFrames;
- DWORD dwNumForwardRefSamples;
- DWORD dwNumBackwardRefSamples;
- VMRDeinterlaceTech DeinterlaceTechnology;
-} VMRDeinterlaceCaps;
-
-[
- object,
- local,
- uuid(bb057577-0db8-4e6a-87a7-1a8c9a505a0f),
- helpstring("IVMRDeinterlaceControl Interface"),
- pointer_default(unique)
-]
-interface IVMRDeinterlaceControl : IUnknown
-{
- //
- // For the specified video description returns the
- // number of deinterlacing modes available to the VMR.
- // The deinterlacing modes are returned in descending
- // quality order ie. the best quality mode is at
- // lpdwNumDeinterlaceModes[0], the next best at
- // lpdwNumDeinterlaceModes[1] and so on.
- //
- // To determine how big an array of guids to pass to the
- // GetNumberOfDeinterlaceModes method call
- // GetNumberOfDeinterlaceModes(lpVideoDescription, &dwNumModes, NULL);
- //
- HRESULT GetNumberOfDeinterlaceModes(
- [in] VMRVideoDesc* lpVideoDescription,
- [in] [out] LPDWORD lpdwNumDeinterlaceModes,
- [out] LPGUID lpDeinterlaceModes
- );
-
- //
- // For the given video description get the capabilities of the
- // specified de-interlace mode.
- //
- HRESULT GetDeinterlaceModeCaps(
- [in] LPGUID lpDeinterlaceMode,
- [in] VMRVideoDesc* lpVideoDescription,
- [in] [out] VMRDeinterlaceCaps* lpDeinterlaceCaps
- );
-
- //
- // Get/Set the deinterlace mode that you would like the
- // VMR to use when de-interlacing the specified stream.
- // It should be noted that the VMR may not actually be able
- // to use the requested deinterlace mode, in which case the
- // the VMR will fall back to other de-interlace modes as specified
- // by the de-interlace preferences (see SetDeinterlacePrefs below).
- //
- HRESULT GetDeinterlaceMode(
- [in] DWORD dwStreamID,
- [out] LPGUID lpDeinterlaceMode // returns GUID_NULL if SetDeinterlaceMode
- ); // has not been called yet.
-
- HRESULT SetDeinterlaceMode(
- [in] DWORD dwStreamID, // use 0xFFFFFFFF to set mode for all streams
- [in] LPGUID lpDeinterlaceMode // GUID_NULL == turn deinterlacing off
- );
-
-
- HRESULT GetDeinterlacePrefs(
- [out] LPDWORD lpdwDeinterlacePrefs
- );
-
- HRESULT SetDeinterlacePrefs(
- [in] DWORD dwDeinterlacePrefs
- );
-
- //
- // Get the DeinterlaceMode currently in use for the specified
- // video stream (ie. pin). The returned GUID will be NULL if
- // the de-interlacing h/w has not been created by the VMR at the
- // time the function is called, or if the VMR determines that
- // this stream should not or can be de-interlaced.
- //
- HRESULT GetActualDeinterlaceMode(
- [in] DWORD dwStreamID,
- [out] LPGUID lpDeinterlaceMode
- );
-}
-
-
-//=====================================================================
-//
-// IVMRMixerBitmap
-//
-//=====================================================================
-typedef struct _VMRALPHABITMAP
-{
- DWORD dwFlags; // flags word
- HDC hdc; // DC for the bitmap to copy
- LPDIRECTDRAWSURFACE7 pDDS; // DirectDraw surface to copy
- RECT rSrc; // rectangle to copy from the DC/DDS
- NORMALIZEDRECT rDest; // output rectangle in composition space
- FLOAT fAlpha; // opacity of the bitmap
- COLORREF clrSrcKey; // src color key
-} VMRALPHABITMAP, *PVMRALPHABITMAP;
-
-// Disable the alpha bitmap for now
-cpp_quote("#define VMRBITMAP_DISABLE 0x00000001")
-
-// Take the bitmap from the HDC rather than the DirectDraw surface
-cpp_quote("#define VMRBITMAP_HDC 0x00000002")
-
-// Take the entire DDraw surface - rSrc is ignored
-cpp_quote("#define VMRBITMAP_ENTIREDDS 0x00000004")
-
-// Indicates that the clrTrans value is valid and should be
-// used when blending
-cpp_quote("#define VMRBITMAP_SRCCOLORKEY 0x00000008")
-
-// Indicates that the rSrc rectangle is valid and specifies a
-// sub-rectangle of the of original app image to be blended.
-// Use of this parameter enables "Image Strips"
-cpp_quote("#define VMRBITMAP_SRCRECT 0x00000010")
-
-[
- object,
- local,
- uuid(1E673275-0257-40aa-AF20-7C608D4A0428),
- helpstring("IVMRMixerBitmap Interface"),
- pointer_default(unique)
-]
-interface IVMRMixerBitmap : IUnknown
-{
- // Set bitmap, location to blend it, and blending value
- HRESULT SetAlphaBitmap(
- [in] const VMRALPHABITMAP *pBmpParms
- );
-
- // Change bitmap location, size and blending value,
- // graph must be running for change to take effect.
- HRESULT UpdateAlphaBitmapParameters(
- [in] PVMRALPHABITMAP pBmpParms
- );
-
- // Get bitmap, location to blend it, and blending value
- HRESULT GetAlphaBitmapParameters(
- [out] PVMRALPHABITMAP pBmpParms
- );
-};
-
-
-
-
-
-//=====================================================================
-//
-// IVMRImageCompositor
-//
-//=====================================================================
-
-typedef struct _VMRVIDEOSTREAMINFO {
- LPDIRECTDRAWSURFACE7 pddsVideoSurface;
- DWORD dwWidth, dwHeight;
- DWORD dwStrmID;
- FLOAT fAlpha;
- DDCOLORKEY ddClrKey;
- NORMALIZEDRECT rNormal;
-} VMRVIDEOSTREAMINFO;
-[
- local,
- object,
- local,
- uuid(7a4fb5af-479f-4074-bb40-ce6722e43c82),
- helpstring("IVMRImageCompositor Interface"),
- pointer_default(unique)
-]
-interface IVMRImageCompositor : IUnknown
-{
- HRESULT InitCompositionTarget(
- [in] IUnknown* pD3DDevice,
- [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget
- );
-
- HRESULT TermCompositionTarget(
- [in] IUnknown* pD3DDevice,
- [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget
- );
-
- HRESULT SetStreamMediaType(
- [in] DWORD dwStrmID,
- [in] AM_MEDIA_TYPE* pmt,
- [in] BOOL fTexture
- );
-
- HRESULT CompositeImage(
- [in] IUnknown* pD3DDevice,
- [in] LPDIRECTDRAWSURFACE7 pddsRenderTarget,
- [in] AM_MEDIA_TYPE* pmtRenderTarget,
- [in] REFERENCE_TIME rtStart,
- [in] REFERENCE_TIME rtEnd,
- [in] DWORD dwClrBkGnd,
- [in] VMRVIDEOSTREAMINFO* pVideoStreamInfo,
- [in] UINT cStreams
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRVideoStreamControl
-//
-//=====================================================================
-[
- object,
- local,
- uuid(058d1f11-2a54-4bef-bd54-df706626b727),
- helpstring("IVMRMixerStreamConfig Interface"),
- pointer_default(unique)
-]
-interface IVMRVideoStreamControl: IUnknown
-{
- HRESULT SetColorKey(
- [in] LPDDCOLORKEY lpClrKey // Source color key, set to 0xFFFFFFFF to disable
- );
-
- HRESULT GetColorKey(
- [out] LPDDCOLORKEY lpClrKey
- );
-
-
- HRESULT SetStreamActiveState(
- [in] BOOL fActive
- );
-
- HRESULT GetStreamActiveState(
- [out] BOOL* lpfActive
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRSurface
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(a9849bbe-9ec8-4263-b764-62730f0d15d0),
- helpstring("IVMRSurface Interface"),
- pointer_default(unique)
-]
-interface IVMRSurface : IUnknown
-{
- HRESULT IsSurfaceLocked();
-
- HRESULT LockSurface(
- [out] BYTE** lpSurface
- );
-
- HRESULT UnlockSurface();
-
- HRESULT GetSurface(
- [out] LPDIRECTDRAWSURFACE7 *lplpSurface
- );
-};
-
-
-
-//=====================================================================
-//
-// IID_IVMRImagePresenterConfig - this interface allows applications
-// to configure the default Microsoft provided allocator-presenter
-// inorder to simplify the implementation of their own
-// allocator-presenter plug-in.
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(9f3a1c85-8555-49ba-935f-be5b5b29d178),
- helpstring("IVMRImagePresenterConfig Interface"),
- pointer_default(unique)
-]
-
-interface IVMRImagePresenterConfig : IUnknown
-{
-
- HRESULT SetRenderingPrefs(
- [in] DWORD dwRenderFlags // see VMRRenderPrefs for valid flags
- );
-
- HRESULT GetRenderingPrefs(
- [out] DWORD* dwRenderFlags // see VMRRenderPrefs for valid flags
- );
-
-}
-
-//=====================================================================
-//
-// IID_IVMRImagePresenterExclModeConfig - this interface allows applications
-// to configure the DDraw exclusive mode allocator-presenter. This
-// interface extends the IVMRImagePresenterConfig interface defined
-// above and is only implemented by the CLSID_AllocPresenterDDXclMode
-// allocator-presenter object.
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(e6f7ce40-4673-44f1-8f77-5499d68cb4ea),
- helpstring("IVMRImagePresenterExclModeConfig Interface"),
- pointer_default(unique)
-]
-
-interface IVMRImagePresenterExclModeConfig : IVMRImagePresenterConfig
-{
- HRESULT SetXlcModeDDObjAndPrimarySurface(
- [in] LPDIRECTDRAW7 lpDDObj,
- [in] LPDIRECTDRAWSURFACE7 lpPrimarySurf
- );
-
- HRESULT GetXlcModeDDObjAndPrimarySurface(
- [out] LPDIRECTDRAW7* lpDDObj,
- [out] LPDIRECTDRAWSURFACE7* lpPrimarySurf
- );
-}
-
-
-//=====================================================================
-//
-// IVPManager
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(aac18c18-e186-46d2-825d-a1f8dc8e395a),
- helpstring("IVPManager Interface"),
- pointer_default(unique)
-]
-interface IVPManager : IUnknown
-{
- // Use this method on a Multi-Monitor system to specify to the
- // video port manager filter which videoport index is used
- // to an upstream decoder filter.
- //
- HRESULT SetVideoPortIndex(
- [in] DWORD dwVideoPortIndex // the video port number that this is connected to
- );
-
- // This method returns the current video port index being used by the VPM.
- //
- HRESULT GetVideoPortIndex(
- [out] DWORD* pdwVideoPortIndex // the video port number that this is connected to
- );
-};
-
diff --git a/dxsdk/Include/DShowIDL/amstream.idl b/dxsdk/Include/DShowIDL/amstream.idl
deleted file mode 100644
index f52db99e..00000000
--- a/dxsdk/Include/DShowIDL/amstream.idl
+++ /dev/null
@@ -1,334 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);")
diff --git a/dxsdk/Include/DShowIDL/austream.idl b/dxsdk/Include/DShowIDL/austream.idl
deleted file mode 100644
index 4987aa08..00000000
--- a/dxsdk/Include/DShowIDL/austream.idl
+++ /dev/null
@@ -1,106 +0,0 @@
-//------------------------------------------------------------------------------
-// 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
- );
-}
-
diff --git a/dxsdk/Include/DShowIDL/axcore.idl b/dxsdk/Include/DShowIDL/axcore.idl
deleted file mode 100644
index 4aceea78..00000000
--- a/dxsdk/Include/DShowIDL/axcore.idl
+++ /dev/null
@@ -1,1284 +0,0 @@
-//------------------------------------------------------------------------------
-// File: AXCore.idl
-//
-// Desc: Core streaming interfaces. Other ActiveMovie-only interfaces
-// are in AXExtend.idl.
-//
-// Copyright (c) 1992-2002, Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------------------------
-
-
-// include unknwn.idl and objidl.idl first
-
-#define CHARS_IN_GUID 39 // 128 bits, plus { - } punctuation and terminal null
- // chars NOT BYTES in the standard representation
- // e.g. {D3588AB0-0781-11ce-B03A-0020AF0BA770} + null
-
-cpp_quote("#define CHARS_IN_GUID 39")
-
-
-//=====================================================================
-//=====================================================================
-// media types & formats
-//=====================================================================
-//=====================================================================
-
-// There is a high-level media type (audio, compressed video,
-// mpeg video, midi). Within each type, there is a subtype (cinepak, pcm)
-// and a length+untyped data block defining the format in a
-// type-specific manner. EG for video/cinepak, the data block would be
-// a bitmapinfo.
-// The contents of the format block are defined by the formattype GUID.
-// For example, FORMAT_VideoInfo, FORMAT_WaveFormatEx. In the future, this
-// may be a pointer to an object supporting property style interfaces
-// in which case the GUID may be something like FORMAT_IUnknown. When
-// you are passed a media type you should check the format type, if
-// it isn't a type you recognize, then don't touch the format block
-
-typedef struct _AMMediaType {
- GUID majortype;
- GUID subtype;
- BOOL bFixedSizeSamples;
- BOOL bTemporalCompression;
- ULONG lSampleSize;
- GUID formattype;
- IUnknown *pUnk;
- ULONG cbFormat;
- [size_is(cbFormat)] BYTE * pbFormat;
-} AM_MEDIA_TYPE;
-
-//=====================================================================
-//=====================================================================
-// pin information
-//=====================================================================
-//=====================================================================
-
-// is this an input or output pin
-typedef enum _PinDirection {
- PINDIR_INPUT,
- PINDIR_OUTPUT
-} PIN_DIRECTION;
-
-// other types that need defining
-#define MAX_PIN_NAME 128
-cpp_quote("#define MAX_PIN_NAME 128")
-cpp_quote("#define MAX_FILTER_NAME 128")
-#define MAX_FILTER_NAME 128
-
-
-//=====================================================================
-//=====================================================================
-// time information
-//
-// This represents a time (either reference or stream) in 100ns units.
-// The class library contains a CRefTime helper class
-// that supports simple comparison and arithmetic operations
-//=====================================================================
-//=====================================================================
-
-typedef LONGLONG REFERENCE_TIME;
-typedef double REFTIME;
-
-// Win32 HANDLEs have to be cast to these as the MIDL compiler doesn't
-// like the HANDLE type or in fact anything remotely associated with
-// them. If this ever gets ported to a MAC environment then these will
-// have to become an alertable synchronisation object that it supports
-
-typedef DWORD_PTR HSEMAPHORE;
-typedef DWORD_PTR HEVENT;
-
-//=====================================================================
-//=====================================================================
-// Allocator properties
-//
-// Used to describe the actual properties of an allocator,
-// and used to request properties from an allocator or from an upstream
-// filter that could create an allocator. See IMemAllocator and
-// IMemInputPin.
-//=====================================================================
-//=====================================================================
-typedef struct _AllocatorProperties {
- long cBuffers; // count of buffers at this allocator
- long cbBuffer; // size of each buffer, excluding any prefix
-
- // alignment of the buffer - buffer start will be aligned on a multiple of
- // this amount
- long cbAlign;
-
- // prefix amount. Each buffer is immediately preceeded by cbPrefix bytes.
- // note that GetPointer points to the beginning of the buffer proper.
- // the prefix is aligned, i.e. (GetPointer() - cbPrefix) is aligned on cbAlign.
- long cbPrefix;
-} ALLOCATOR_PROPERTIES;
-
-
-
-
-
-// forward declarations (in alphabetical order - we were getting duplicates)
-interface IAMovieSetup;
-interface IEnumFilters;
-interface IEnumMediaTypes;
-interface IEnumPins;
-interface IBaseFilter;
-interface IFilterGraph;
-interface IMediaFilter;
-interface IMediaSample;
-interface IMemAllocator;
-interface IMemAllocatorCallbackTemp;
-interface IMemAllocatorNotifyCallbackTemp;
-interface IMemInputPin;
-interface IPin;
-interface IReferenceClock;
-
-
-
-//=====================================================================
-//=====================================================================
-// Defines IPin interface
-//
-// interface representing a single, unidirection connection point on a
-// filter. A Pin will connect to exactly one other pin on another filter.
-// This interface represents the interface other objects can call on
-// this pin. The interface between the filter and the pin is private to
-// the implementation of a specific filter.
-//
-// During the connection process, one pin will be instructed to take
-// the lead: the connect interface on this pin will be calling, passing
-// the IPin* for the other pin. This connecting pin will call the
-// ReceiveConnection member function on the other pin, as well as presumably
-// other format-enumeration and queryinterface calls to establish whether
-// the connection is possible.
-//=====================================================================
-//=====================================================================
-
-[
-object,
-uuid(56a86891-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IPin : IUnknown {
-
- // initiate a connection to another pin. calls ReceiveConnection on the
- // other pin. Verifies that the connection is possible and may reject
- // it.
- // The mediatype parameter is optional. If it is not null, the pin must
- // connect using that media type if possible. The subtype and/or format
- // type can be GUID_NULL, meaning that the pin can fill them in as desired.
- // This allows an application to partially specify the media type to be
- // used for the connection, insisting on eg YUV 422 but leaving details
- // (such as the image size) to be negotiated between the pins.
- HRESULT Connect(
- [in] IPin * pReceivePin, // connect yourself to this pin
- [in] const AM_MEDIA_TYPE * pmt // (optional) connect using this type
- );
-
- // called by a connecting pin to make a connection
- HRESULT ReceiveConnection(
- [in] IPin * pConnector,
- [in] const AM_MEDIA_TYPE *pmt // this is the media type we will exchange
- );
-
- // break a connection - no params since there is only one connection
- // possible on this pin
- HRESULT Disconnect(void);
-
- // Find the pin this pin is connected to (if any)
- // The pointer returned is AddRef()d
- // Fails if the pin is not connected
- HRESULT ConnectedTo(
- [out] IPin **pPin
- );
-
- // Return the media type of a connection if the pin is connected
- HRESULT ConnectionMediaType(
- [out] AM_MEDIA_TYPE *pmt
- );
-
- // get information about the pin itself
- typedef struct _PinInfo {
- IBaseFilter *pFilter; // the filter this pin is on
- PIN_DIRECTION dir; // am I an input or output pin?
- WCHAR achName[MAX_PIN_NAME]; // the name of this pin within this filter
- } PIN_INFO;
-
- HRESULT QueryPinInfo(
- [out] PIN_INFO * pInfo
- );
-
- // We often want to know the direction. Rather than use the
- // relatively expensive QueryPinInfo, use this
- HRESULT QueryDirection(
- [out] PIN_DIRECTION *pPinDir
- );
-
- // Get an identifier for the pin (allows connections to be saved).
- // The storage will be allocated by the filter using CoTaskMemAlloc
- // The caller should free it using CoTaskMemFree
- HRESULT QueryId(
- [out] LPWSTR * Id
- );
-
- // will the pin accept the format type, S_OK yes, S_FALSE no
- HRESULT QueryAccept(
- [in] const AM_MEDIA_TYPE *pmt
- );
-
- // return an enumerator for this pin's preferred media types
- HRESULT EnumMediaTypes(
- [out] IEnumMediaTypes **ppEnum
- );
-
- // return an array of IPin* - the pins that this pin internally connects to
- // All pins put in the array must be AddReffed (but no others)
- // Errors: "Can't say" - FAIL; not enough slots - return S_FALSE
- // Default: return E_NOTIMPL
- // The filter graph will interpret E_NOTIMPL as any input pin connects to
- // all visible output pins and vise versa.
- // apPin can be NULL if nPin==0 (not otherwise).
- HRESULT QueryInternalConnections(
- [out] IPin* *apPin, // array of IPin*
- [in, out] ULONG *nPin // on input, the number of slots
- // on output the number of pins
- );
-
- // notify the pin that no more data is expected until a new run
- // command is issued. End of stream should be queued and delivered after
- // all queued data is delivered. Pass through if there is no queued data.
- // Flush should flush any queued EOS.
- // returns S_OK unless there is some error.
- // input pins only: output pins will normally return E_UNEXPECTED.
- HRESULT EndOfStream(void);
-
- // Flush
-
- // Enter flush state: do the following steps (in order)
- // -- prevent any more Receives succeeding (set a flushing flag)
- // -- discard any queued data
- // -- free anyone blocked on Receive in your filter
- // -- pass BeginFlush to any downstream pins
- HRESULT BeginFlush(void);
-
- // End flush state: do the following steps in order
- // -- ensure no more data will be pushed by your filter
- // (sync with thread if you have one, stop it pushing and
- // discard any queued data)
- // -- re-enable Receive (clear internal flushing flag)
- // -- pass EndFlush to any downstream pins
- HRESULT EndFlush(void);
-
- // informational: all data arriving after this call is part of a segment
- // from StartTime to StopTime, played at rate. This allows filters that
- // process buffers containing more than one sample to clip the rendering
- // to within the start and stop times.
- //
- // A source pin will call a destination pin on this method after completing
- // delivery of any previous data, and before any Receive calls for the
- // new data
- HRESULT NewSegment(
- [in] REFERENCE_TIME tStart,
- [in] REFERENCE_TIME tStop,
- [in] double dRate);
-}
-
-typedef IPin *PPIN;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IEnumPins interface
-//
-// interface returned from IBaseFilter::EnumPins(). based on IEnumXXXX
-//=====================================================================
-//=====================================================================
-
-[
-object,
-uuid(56a86892-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IEnumPins : IUnknown {
-
- HRESULT Next(
- [in] ULONG cPins, // place this many pins...
- [out, size_is(cPins)] IPin ** ppPins, // ...in this array
- [out] ULONG * pcFetched // actual count passed
- );
-
- HRESULT Skip(
- [in] ULONG cPins);
-
- HRESULT Reset(void);
-
- HRESULT Clone(
- [out] IEnumPins **ppEnum
- );
-}
-
-typedef IEnumPins *PENUMPINS;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IEnumMediaTypes interface
-//
-// Enumerates the preferred formats for a pin
-//=====================================================================
-//=====================================================================
-
-[
-object,
-uuid(89c31040-846b-11ce-97d3-00aa0055595a),
-pointer_default(unique)
-]
-interface IEnumMediaTypes : IUnknown {
-
- // to call this member function pass in the address of a pointer to a
- // media type. The interface will allocate the necessary AM_MEDIA_TYPE
- // structures and initialise them with the variable format block
-
- HRESULT Next(
- [in] ULONG cMediaTypes, // place this many types...
- [out, size_is(cMediaTypes)]
- AM_MEDIA_TYPE ** ppMediaTypes, // ...in this array
- [out] ULONG * pcFetched // actual count passed
- );
-
- HRESULT Skip(
- [in] ULONG cMediaTypes);
-
- HRESULT Reset(void);
-
- HRESULT Clone(
- [out] IEnumMediaTypes **ppEnum
- );
-}
-
-typedef IEnumMediaTypes *PENUMMEDIATYPES;
-
-
-
-//========================================================================
-//========================================================================
-// Defines IFilterGraph interface
-//
-// abstraction representing a graph of filters
-// This allows filters to be joined into a graph and operated as a unit.
-//========================================================================
-//========================================================================
-
-[
-object,
-uuid(56a8689f-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IFilterGraph : IUnknown {
-
- //==========================================================================
- // Low level filter functions
- //==========================================================================
-
- // Add a filter to the graph and name it with *pName.
- // If the name is not unique, The request will fail.
- // The Filter graph will call the JoinFilterGraph
- // member function of the filter to inform it.
- // This must be called before attempting Connect, ConnectDirect or Render
- // for pins of the filter.
-
- HRESULT AddFilter
- ( [in] IBaseFilter * pFilter,
- [in, string] LPCWSTR pName
- );
-
-
- // Remove a filter from the graph. The filter graph implementation
- // will inform the filter that it is being removed.
-
- HRESULT RemoveFilter
- ( [in] IBaseFilter * pFilter
- );
-
-
- // Set *ppEnum to be an enumerator for all filters in the graph.
-
- HRESULT EnumFilters
- ( [out] IEnumFilters **ppEnum
- );
-
-
- // Set *ppFilter to be the filter which was added with the name *pName
- // Will fail and set *ppFilter to NULL if the name is not in this graph.
-
- HRESULT FindFilterByName
- ( [in, string] LPCWSTR pName,
- [out] IBaseFilter ** ppFilter
- );
-
- //==========================================================================
- // Low level connection functions
- //==========================================================================
-
- // Connect these two pins directly (i.e. without intervening filters)
- // the media type is optional, and may be partially specified (that is
- // the subtype and/or format type may be GUID_NULL). See IPin::Connect
- // for details of the media type parameter.
- HRESULT ConnectDirect
- ( [in] IPin * ppinOut, // the output pin
- [in] IPin * ppinIn, // the input pin
- [in, unique] const AM_MEDIA_TYPE* pmt // optional mediatype
- );
-
- // Break the connection that this pin has and reconnect it to the
- // same other pin.
-
- HRESULT Reconnect
- ( [in] IPin * ppin // the pin to disconnect and reconnect
- );
-
-
-
- // Disconnect this pin, if connected. Successful no-op if not connected.
-
- HRESULT Disconnect
- ( [in] IPin * ppin
- );
-
- //==========================================================================
- // intelligent connectivity - now in IGraphBuilder, axextend.idl
- //==========================================================================
-
- //==========================================================================
- // Whole graph functions
- //==========================================================================
-
- // Once a graph is built, it can behave as a (composite) filter.
- // To control this filter, QueryInterface for IMediaFilter.
-
- // The filtergraph will by default ensure that the graph has a sync source
- // when it is made to Run. SetSyncSource(NULL) will prevent that and allow
- // all the filters to run unsynchronised until further notice.
- // SetDefaultSyncSource will set the default sync source (the same as would
- // have been set by default on the first call to Run).
- HRESULT SetDefaultSyncSource(void);
-
-}
-
-typedef IFilterGraph *PFILTERGRAPH;
-
-
-
-//==========================================================================
-//==========================================================================
-// Defines IEnumFilters interface
-//
-// enumerator interface returned from IFilterGraph::EnumFilters().
-// based on IEnum pseudo-template
-//==========================================================================
-//==========================================================================
-
-[
-object,
-uuid(56a86893-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IEnumFilters : IUnknown {
-
- HRESULT Next
- ( [in] ULONG cFilters, // place this many filters...
- [out] IBaseFilter ** ppFilter, // ...in this array of IBaseFilter*
- [out] ULONG * pcFetched // actual count passed returned here
- );
-
-
- HRESULT Skip
- ( [in] ULONG cFilters
- );
-
-
- HRESULT Reset(void);
-
-
- HRESULT Clone
- ( [out] IEnumFilters **ppEnum
- );
-}
-
-typedef IEnumFilters *PENUMFILTERS;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IMediaFilter interface
-//
-// multimedia components that provide time-based data will expose this.
-// this interface abstracts an object that processes time-based data streams
-// and represents a multimedia device (possibly implemented in software).
-// it controls the active/running state of the object and its synchronization
-// to other objects in the system.
-//
-// derived from IPersist so that all filter-type objects in a graph
-// can have their class id serialised.
-//=====================================================================
-//=====================================================================
-
-[
-object,
-uuid(56a86899-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IMediaFilter : IPersist {
-
- // tell the filter to transition to the new state. The state transition
- // may not be instantaneous (external mechanical activity may be involved,
- // for example). The state functions may return before the state
- // transition has completed
-
- // these functions will return S_OK if the transition is complete, S_FALSE if
- // the transition is not complete but no error has occurred, or some error value
- // if the transition failed.
- HRESULT Stop(void);
- HRESULT Pause(void);
-
- // in order to synchronise independent streams, you must pass a time
- // value with the Run command. This is the difference between stream
- // time and reference time. That is, it is the amount to be added to
- // the IMediaSample timestamp to get the time at which that sample
- // should be rendered according to the reference clock.
- // If we are starting at the beginning of the stream, it will thus be
- // simply the time at which the first sample should appear. If we are
- // restarting from Paused mode in midstream, then it will be the total
- // time we have been paused added to the initial start time.
-
- // the filtergraph will provide this information to its filters. If you
- // are an app calling the filtergraph, it's ok to pass a start time of
- // 0, in which case the filter graph will calculate a soon-as-possible
- // time. FilterGraphs will accept 0 meaning ASAP; most filters will not.
-
- HRESULT Run(REFERENCE_TIME tStart);
-
-
- // possible states that the filter could be in
- typedef enum _FilterState {
- State_Stopped, // not in use
- State_Paused, // holding resources, ready to go
- State_Running // actively processing media stream
- } FILTER_STATE;
-
- // find out what state the filter is in.
- // If timeout is 0, will return immediately - if a state transition is
- // not complete, it will return the state being transitioned into, and
- // the return code will be VFW_S_STATE_INTERMEDIATE. if no state
- // transition is in progress the state will be returned and the return
- // code will be S_OK.
- //
- // If timeout is non-zero, GetState will not return until the state
- // transition is complete, or the timeout expires.
- // The timeout is in milliseconds.
- // You can also pass in INFINITE as a special value for the timeout, in
- // which case it will block indefinitely waiting for the state transition
- // to complete. If the timeout expires, the state returned is the
- // state we are trying to reach, and the return code will be
- // VFW_S_STATE_INTERMEDIATE. If no state transition is in progress
- // the routine returns immediately with return code S_OK.
-
- //
- // return State is State_Running, State_Paused or State_Stopped.
- // return code is S_OK, or VFW_S_STATE_INTERMEDIATE if state
- // transition is not complete or an error value if the method failed.
- HRESULT GetState(
- [in] DWORD dwMilliSecsTimeout,
- [out] FILTER_STATE *State);
-
-
- // tell the filter the reference clock to which it should synchronize
- // activity. This is most important to rendering filters and may not
- // be of any interest to other filters.
- HRESULT SetSyncSource(
- [in] IReferenceClock * pClock);
-
- // get the reference clock currently in use (it may be NULL)
- HRESULT GetSyncSource(
- [out] IReferenceClock ** pClock);
-}
-
-typedef IMediaFilter *PMEDIAFILTER;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IBaseFilter interface
-//
-// all multimedia components will expose this interface
-// this interface abstracts an object that has typed input and output
-// connections and can be dynamically aggregated.
-//
-// IMediaFilter supports synchronisation and activity state: IBaseFilter
-// is derived from that since all filters need to support IMediaFilter,
-// whereas a few objects (plug-in control distributors for example) will
-// support IMediaFilter but not IBaseFilter.
-//
-// IMediaFilter is itself derived from IPersist so that every filter
-//supports GetClassID()
-//=====================================================================
-//=====================================================================
-
-[
-object,
-uuid(56a86895-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IBaseFilter : IMediaFilter {
-
- // enumerate all the pins available on this filter
- // allows enumeration of all pins only.
- //
- HRESULT EnumPins(
- [out] IEnumPins ** ppEnum // enum interface returned here
- );
-
- // Convert the external identifier of a pin to an IPin *
- // This pin id is quite different from the pin Name in CreatePin.
- // In CreatePin the Name is invented by the caller. In FindPin the Id
- // must have come from a previous call to IPin::QueryId. Whether or not
- // this operation would cause a pin to be created depends on the filter
- // design, but if called twice with the same id it should certainly
- // return the same pin both times.
- HRESULT FindPin(
- [in, string] LPCWSTR Id,
- [out] IPin ** ppPin
- );
-
- // find out information about this filter
- typedef struct _FilterInfo {
- WCHAR achName[MAX_FILTER_NAME]; // maybe null if not part of graph
- IFilterGraph * pGraph; // null if not part of graph
- } FILTER_INFO;
-
- HRESULT QueryFilterInfo(
- [out] FILTER_INFO * pInfo
- );
-
- // notify a filter that it has joined a filter graph. It is permitted to
- // refuse. The filter should addref and store this interface for later use
- // since it may need to notify events to this interface. A null pointer indicates
- // that the filter is no longer part of a graph.
- HRESULT JoinFilterGraph(
- [in] IFilterGraph * pGraph,
- [in, string] LPCWSTR pName
- );
-
- // return a Vendor information string. Optional - may return E_NOTIMPL.
- // memory returned should be freed using CoTaskMemFree
- HRESULT QueryVendorInfo(
- [out, string] LPWSTR* pVendorInfo
- );
-}
-
-typedef IBaseFilter *PFILTER;
-
-
-//=====================================================================
-//=====================================================================
-// sync and state management
-//=====================================================================
-//=====================================================================
-
-
-//=====================================================================
-//=====================================================================
-// Defines IReferenceClock interface
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(56a86897-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IReferenceClock : IUnknown {
-
- // get the time now
- HRESULT GetTime(
- [out] REFERENCE_TIME *pTime
- );
-
- // ask for an async notification that a time has elapsed
- HRESULT AdviseTime(
- [in] REFERENCE_TIME baseTime, // base reference time
- [in] REFERENCE_TIME streamTime, // stream offset time
- [in] HEVENT hEvent, // advise via this event
- [out] DWORD_PTR * pdwAdviseCookie // where your cookie goes
- );
-
- // ask for an async periodic notification that a time has elapsed
- HRESULT AdvisePeriodic(
- [in] REFERENCE_TIME startTime, // starting at this time
- [in] REFERENCE_TIME periodTime, // time between notifications
- [in] HSEMAPHORE hSemaphore, // advise via a semaphore
- [out] DWORD_PTR * pdwAdviseCookie // where your cookie goes
- );
-
- // cancel a request for notification
- HRESULT Unadvise(
- [in] DWORD_PTR dwAdviseCookie);
-}
-
-typedef IReferenceClock *PREFERENCECLOCK;
-
-//=====================================================================
-//=====================================================================
-// Defines IReferenceClock2 interface
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(36b73885-c2c8-11cf-8b46-00805f6cef60),
- pointer_default(unique)
-]
-interface IReferenceClock2 : IReferenceClock {
-}
-
-typedef IReferenceClock2 *PREFERENCECLOCK2;
-
-
-//=====================================================================
-//=====================================================================
-// Data transport interfaces
-//=====================================================================
-//=====================================================================
-
-
-//=====================================================================
-//=====================================================================
-// Defines IMediaSample interface
-//=====================================================================
-//=====================================================================
-
-[
- local,
- object,
- uuid(56a8689a-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IMediaSample : IUnknown {
-
- // get me a read/write pointer to this buffer's memory. I will actually
- // want to use sizeUsed bytes.
- HRESULT GetPointer([out] BYTE ** ppBuffer);
-
- // return the size in bytes of the buffer data area
- long GetSize(void);
-
- // get the stream time at which this sample should start and finish.
- HRESULT GetTime(
- [out] REFERENCE_TIME * pTimeStart, // put time here
- [out] REFERENCE_TIME * pTimeEnd
- );
-
- // Set the stream time at which this sample should start and finish.
- // pTimeStart==pTimeEnd==NULL will invalidate the time stamps in
- // this sample
- HRESULT SetTime(
- [in] REFERENCE_TIME * pTimeStart, // put time here
- [in] REFERENCE_TIME * pTimeEnd
- );
-
- // sync-point property. If true, then the beginning of this
- // sample is a sync-point. (note that if AM_MEDIA_TYPE.bTemporalCompression
- // is false then all samples are sync points). A filter can start
- // a stream at any sync point. S_FALSE if not sync-point, S_OK if true.
-
- HRESULT IsSyncPoint(void);
- HRESULT SetSyncPoint(BOOL bIsSyncPoint);
-
- // preroll property. If true, this sample is for preroll only and
- // shouldn't be displayed.
- HRESULT IsPreroll(void);
- HRESULT SetPreroll(BOOL bIsPreroll);
-
- long GetActualDataLength(void);
- HRESULT SetActualDataLength(long);
-
- // these allow for limited format changes in band - if no format change
- // has been made when you receive a sample GetMediaType will return S_FALSE
-
- HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType);
- HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType);
-
- // returns S_OK if there is a discontinuity in the data (this frame is
- // not a continuation of the previous stream of data
- // - there has been a seek or some dropped samples).
- HRESULT IsDiscontinuity(void);
- // set the discontinuity property - TRUE if this sample is not a
- // continuation, but a new sample after a seek or a dropped sample.
- HRESULT SetDiscontinuity(BOOL bDiscontinuity);
-
- // get the media times for this sample
- HRESULT GetMediaTime(
- [out] LONGLONG * pTimeStart,
- [out] LONGLONG * pTimeEnd
- );
-
- // Set the media times for this sample
- // pTimeStart==pTimeEnd==NULL will invalidate the media time stamps in
- // this sample
- HRESULT SetMediaTime(
- [in] LONGLONG * pTimeStart,
- [in] LONGLONG * pTimeEnd
- );
-}
-
-typedef IMediaSample *PMEDIASAMPLE;
-
-// Values for dwFlags for AM_SAMPLE_PROPERTIES
-enum tagAM_SAMPLE_PROPERTY_FLAGS
- { AM_SAMPLE_SPLICEPOINT = 0x01, /* Is this a splice point
- IE can it be decoded
- without reference to
- previous data */
- AM_SAMPLE_PREROLL = 0x02, /* Is this a preroll sample */
- AM_SAMPLE_DATADISCONTINUITY = 0x04, /* Set if start of new segment */
- AM_SAMPLE_TYPECHANGED = 0x08, /* Has the type changed */
- AM_SAMPLE_TIMEVALID = 0x10, /* Set if time is valid */
- AM_SAMPLE_TIMEDISCONTINUITY = 0x40, /* time gap in data starts after
- this sample - pbBuffer can
- be NULL
- */
- AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, /* For live data - discard
- in paused state
- */
- AM_SAMPLE_STOPVALID = 0x100, /* Stop time is valid */
- AM_SAMPLE_ENDOFSTREAM = 0x200, /* End of stream after
- this data
- This is reserved for
- kernel streaming and is
- not currently used by
- ActiveMovie
- */
- AM_STREAM_MEDIA = 0, /* Normal data stream id */
- AM_STREAM_CONTROL = 1 /* Control stream id */
- /* > 7FFFFFFF is application
- defined stream
- */
- };
-
-// Media sample generic properties structure
-typedef struct tagAM_SAMPLE2_PROPERTIES {
- DWORD cbData; // Length of generic data for extensiblity
- // Number of bytes INCLUDING this field
- DWORD dwTypeSpecificFlags; // Type specific flag data
- DWORD dwSampleFlags; // Flags bits defined by AM_SAMPLE_xxx flags
- // All undefined bits RESERVED (set to 0,
- // leave on copy)
- LONG lActual; // Length of data in buffer
- REFERENCE_TIME tStart; // Start time if valid
- REFERENCE_TIME tStop; // Stop time if valid
- DWORD dwStreamId; // Stream 0 is normal media transport
- // Stream 1 is control
- AM_MEDIA_TYPE *pMediaType; // Copy of media type - INVALID after Release()
- BYTE *pbBuffer; // Pointer to buffer - INVALID after Release()
- LONG cbBuffer; // Length of buffer
-} AM_SAMPLE2_PROPERTIES;
-
-//=====================================================================
-//=====================================================================
-// Defines IMediaSample2 interface
-//=====================================================================
-//=====================================================================
-
-[
- local,
- object,
- uuid(36b73884-c2c8-11cf-8b46-00805f6cef60),
- pointer_default(unique)
-]
-interface IMediaSample2 : IMediaSample {
-
- // Get sample properties
- //
- // cbProperties - length of generic data to retrieve
- // pbProperties - pointer to generic data buffer - can
- // be NULL if cbProperties is NULL
- // data conforms to AM_SAMPLE_PROPERTIES
- //
- HRESULT GetProperties(
- [in] DWORD cbProperties,
- [out, size_is(cbProperties)] BYTE * pbProperties
- );
- // Set sample properties
- //
- // cbProperties - length of generic data to set
- // pbProperties - pointer to generic data buffer - can
- // be NULL if cbProperties is NULL
- // data conforms to AM_SAMPLE_PROPERTIES
- //
- //
- HRESULT SetProperties(
- [in] DWORD cbProperties,
- [in, size_is(cbProperties)] const BYTE * pbProperties
- );
-
-
- // // Get the clock associated with the sample
- // HRESULT GetClock(
- // [out] IReferenceClock2 **ppClock
- // );
-
- // // Get a pointer to the object containing the data
- // //
- // // riid - IID of interface required on object
- // // ppvobject - Pointer to object containing the data
- // //
- // // Returns
- // // S_OK - Got the object
- // // E_NOINTERFACE - object does not support this interface
- // // if IUnknown is not supported
- // // there is no backing object
- // // E_NOTIMPL - samples don't have backing objects
- // //
- // //
- // HRESULT GetBackingObject(
- // [in] REFIID riid,
- // [out] void **ppvObject
- // );
-}
-
-typedef IMediaSample2 *PMEDIASAMPLE2;
-
-
-// flags for dwFlags in IMemAllocator::GetBuffer
-// AM_GBF_PREVFRAMESKIPPED is only significant when asking for a buffer from the
-// video renderer. It should be TRUE if and only if the previous frame
-// was skipped. It affects quality management.
-// AM_GBF_NOTASYNCPOINT indicates to the downstream filter (most likely the
-// video renderer) that you are not going to fill this buffer with a sync point
-// (keyframe) so now would be a bad time to return a buffer with a dynamic
-// format change, because you will be unable to switch to the new format without
-// waiting for the next sync point, causing some frames to be dropped.
-#define AM_GBF_PREVFRAMESKIPPED 1
-#define AM_GBF_NOTASYNCPOINT 2
-cpp_quote("#define AM_GBF_PREVFRAMESKIPPED 1")
-cpp_quote("#define AM_GBF_NOTASYNCPOINT 2")
-
-// This may not be supported by allocators
-cpp_quote("#define AM_GBF_NOWAIT 4")
-
-// This flag is supported by the VMR's surface allocator
-// When set the DDraw surface used for the media sample
-// is returned is an un-locked state. Calls the GetPointer on
-// the returned media sample will fail and return a NULL pointer
-//
-cpp_quote("#define AM_GBF_NODDSURFACELOCK 8")
-
-//=====================================================================
-//=====================================================================
-// Defines IMemAllocator interface
-//
-// an allocator of IMediaSample blocks to be used for data transfer between
-// pins. Can be provided by input, output or a third party. Release
-// the IMediaSample object obtained back to the pool by calling
-// IMediaSample::Release.
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(56a8689c-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IMemAllocator : IUnknown {
-
- // negotiate buffer sizes, buffer count and alignment. pRequest is filled
- // in by the caller with the requested values. pActual will be returned
- // by the allocator with the closest that the allocator can come to this.
- // Cannot be called unless the allocator is decommitted.
- // Calls to GetBuffer need not succeed until Commit is called.
- HRESULT SetProperties(
- [in] ALLOCATOR_PROPERTIES* pRequest,
- [out] ALLOCATOR_PROPERTIES* pActual);
-
- // return the properties actually being used on this allocator
- HRESULT GetProperties(
- [out] ALLOCATOR_PROPERTIES* pProps);
-
-
- // commit the memory for the agreed buffers
- HRESULT Commit(void);
-
- // release the memory for the agreed buffers. Any threads waiting in
- // GetBuffer will return with an error. GetBuffer calls will always fail
- // if called before Commit or after Decommit.
- HRESULT Decommit(void);
-
- // get container for a sample. Blocking, synchronous call to get the
- // next free buffer (as represented by an IMediaSample interface).
- // on return, the time etc properties will be invalid, but the buffer
- // pointer and size will be correct.
- // Will only succeed if memory is committed. If GetBuffer is blocked
- // waiting for a buffer and Decommit is called on another thread,
- // GetBuffer will return with an error.
- HRESULT GetBuffer(
- [out] IMediaSample **ppBuffer,
- [in] REFERENCE_TIME * pStartTime,
- [in] REFERENCE_TIME * pEndTime,
- [in] DWORD dwFlags
- );
-
- // put a buffer back on the allocators free list.
- // this is typically called by the Release() method of the media
- // sample when the reference count goes to 0
- //
- HRESULT ReleaseBuffer(
- [in] IMediaSample *pBuffer
- );
-}
-
-typedef IMemAllocator *PMEMALLOCATOR;
-
-//=====================================================================
-//=====================================================================
-// Defines IMemAllocatorCallbackTemp interface
-//
-// If the allocator supports IMemAllocator2 then callbacks are
-// available
-//
-//=====================================================================
-//=====================================================================
-[
- object,
- uuid(379a0cf0-c1de-11d2-abf5-00a0c905f375),
- pointer_default(unique)
-]
-interface IMemAllocatorCallbackTemp : IMemAllocator {
-
- // Set notification interface. pNotify can be NULL
- HRESULT SetNotify(
- [in] IMemAllocatorNotifyCallbackTemp *pNotify);
-
- // Get current stats
- HRESULT GetFreeCount(
- [out] LONG *plBuffersFree);
-}
-
-//=====================================================================
-//=====================================================================
-// Defines IMemAllocatorNotify interface
-//
-//=====================================================================
-//=====================================================================
-[
- object,
- uuid(92980b30-c1de-11d2-abf5-00a0c905f375),
- pointer_default(unique)
-]
-interface IMemAllocatorNotifyCallbackTemp : IUnknown {
-
- // Called whenever ReleaseBuffer is called in the allocator
- // Note the caller may have acquired locks and this call may
- // occur in any context so generally the implementor of this
- // call will just set an event or post a message for another
- // thread to take action.
- HRESULT NotifyRelease();
-}
-
-//=====================================================================
-//=====================================================================
-// Defines IMemInputPin interface
-//
-// basic shared memory transport interface.
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(56a8689d-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IMemInputPin : IUnknown {
-
- // return the allocator interface that this input pin
- // would like the output pin to use
- HRESULT GetAllocator(
- [out] IMemAllocator ** ppAllocator);
-
- // tell the input pin which allocator the output pin is actually
- // going to use.
- // If the readonly flag is set, then all samples from this allocator are
- // to be treated as read-only, and should be copied before being modified.
- HRESULT NotifyAllocator(
- [in] IMemAllocator * pAllocator,
- [in] BOOL bReadOnly
- );
-
- // this method is optional (can return E_NOTIMPL). Output pins are not obliged to call
- // this method, nor are they obliged to fulfil the request. Input pins making such a
- // request should check the allocator in NotifyAllocator to see if it meets their needs. If
- // not, the input pin is responsible for any necessary data copy.
- // Zero values will be treated as don't care: so a pin can return an alignment value
- // and leave the other values 0.
- HRESULT GetAllocatorRequirements( [out] ALLOCATOR_PROPERTIES*pProps);
-
- // here's the next block of data from the stream. AddRef it if
- // you need to hold it beyond the end of the Receive call.
- // call pSample->Release when done with it.
- //
- // This is a blocking synchronous call. Usually no blocking
- // will occur but if a filter cannot process the sample immediately
- // it may use the caller's thread to wait until it can.
- HRESULT Receive(
- [in] IMediaSample * pSample);
-
- // Same as Receive but with multiple samples. Useful for
- // fragmented streams
- HRESULT ReceiveMultiple(
- [in, size_is(nSamples)] IMediaSample **pSamples,
- [in] long nSamples,
- [out] long *nSamplesProcessed);
-
- // See if Receive might block
- // Returns S_OK if it can block, S_FALSE if it can't or some
- // failure code (assume it can in this case)
- HRESULT ReceiveCanBlock();
-}
-
-typedef IMemInputPin *PMEMINPUTPIN;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IAMovieSetup interface
-//
-// exported by filter to allow it to be self-registering
-//=====================================================================
-//=====================================================================
-
-[
-object,
-uuid(a3d8cec0-7e5a-11cf-bbc5-00805f6cef20),
-pointer_default(unique)
-]
-interface IAMovieSetup : IUnknown {
-
- // methods to register and unregister filter, etc.
-
- HRESULT Register( );
- HRESULT Unregister( );
-}
-
-typedef IAMovieSetup *PAMOVIESETUP;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IMediaSeeking interface
-//
-// Controls seeking (time, bytes, frames, fields and samples)
-//=====================================================================
-//=====================================================================
-
-typedef enum AM_SEEKING_SeekingFlags
-{
- AM_SEEKING_NoPositioning = 0x00, // No change
- AM_SEEKING_AbsolutePositioning = 0x01, // Position is supplied and is absolute
- AM_SEEKING_RelativePositioning = 0x02, // Position is supplied and is relative
- AM_SEEKING_IncrementalPositioning = 0x03, // (Stop) position relative to current
- // Useful for seeking when paused (use +1)
- AM_SEEKING_PositioningBitsMask = 0x03, // Useful mask
- AM_SEEKING_SeekToKeyFrame = 0x04, // Just seek to key frame (performance gain)
- AM_SEEKING_ReturnTime = 0x08, // Plug the media time equivalents back into the supplied LONGLONGs
-
- AM_SEEKING_Segment = 0x10, // At end just do EC_ENDOFSEGMENT,
- // don't do EndOfStream
- AM_SEEKING_NoFlush = 0x20 // Don't flush
-} AM_SEEKING_SEEKING_FLAGS;
-
-typedef enum AM_SEEKING_SeekingCapabilities
-{
- AM_SEEKING_CanSeekAbsolute = 0x001,
- AM_SEEKING_CanSeekForwards = 0x002,
- AM_SEEKING_CanSeekBackwards = 0x004,
- AM_SEEKING_CanGetCurrentPos = 0x008,
- AM_SEEKING_CanGetStopPos = 0x010,
- AM_SEEKING_CanGetDuration = 0x020,
- AM_SEEKING_CanPlayBackwards = 0x040,
- AM_SEEKING_CanDoSegments = 0x080,
- AM_SEEKING_Source = 0x100 // Doesn't pass thru used to
- // count segment ends
-} AM_SEEKING_SEEKING_CAPABILITIES;
-
-[
- object,
- uuid(36b73880-c2c8-11cf-8b46-00805f6cef60),
- pointer_default(unique)
-]
-interface IMediaSeeking : IUnknown {
-
- // Returns the capability flags
- HRESULT GetCapabilities( [out] DWORD * pCapabilities );
-
- // And's the capabilities flag with the capabilities requested.
- // Returns S_OK if all are present, S_FALSE if some are present, E_FAIL if none.
- // *pCababilities is always updated with the result of the 'and'ing and can be
- // checked in the case of an S_FALSE return code.
- HRESULT CheckCapabilities( [in,out] DWORD * pCapabilities );
-
- // returns S_OK if mode is supported, S_FALSE otherwise
- HRESULT IsFormatSupported([in] const GUID * pFormat);
- HRESULT QueryPreferredFormat([out] GUID * pFormat);
-
- HRESULT GetTimeFormat([out] GUID *pFormat);
- // Returns S_OK if *pFormat is the current time format, otherwise S_FALSE
- // This may be used instead of the above and will save the copying of the GUID
- HRESULT IsUsingTimeFormat([in] const GUID * pFormat);
-
- // (may return VFE_E_WRONG_STATE if graph is stopped)
- HRESULT SetTimeFormat([in] const GUID * pFormat);
-
- // return current properties
- HRESULT GetDuration([out] LONGLONG *pDuration);
- HRESULT GetStopPosition([out] LONGLONG *pStop);
- HRESULT GetCurrentPosition([out] LONGLONG *pCurrent);
-
- // Convert time from one format to another.
- // We must be able to convert between all of the formats that we say we support.
- // (However, we can use intermediate formats (e.g. MEDIA_TIME).)
- // If a pointer to a format is null, it implies the currently selected format.
- HRESULT ConvertTimeFormat([out] LONGLONG * pTarget, [in] const GUID * pTargetFormat,
- [in] LONGLONG Source, [in] const GUID * pSourceFormat );
-
-
- // Set current and end positions in one operation
- // Either pointer may be null, implying no change
- HRESULT SetPositions( [in,out] LONGLONG * pCurrent, [in] DWORD dwCurrentFlags
- , [in,out] LONGLONG * pStop, [in] DWORD dwStopFlags );
-
- // Get CurrentPosition & StopTime
- // Either pointer may be null, implying not interested
- HRESULT GetPositions( [out] LONGLONG * pCurrent,
- [out] LONGLONG * pStop );
-
- // Get earliest / latest times to which we can currently seek "efficiently".
- // This method is intended to help with graphs where the source filter has
- // a very high latency. Seeking within the returned limits should just
- // result in a re-pushing of already cached data. Seeking beyond these
- // limits may result in extended delays while the data is fetched (e.g.
- // across a slow network).
- // (NULL pointer is OK, means caller isn't interested.)
- HRESULT GetAvailable( [out] LONGLONG * pEarliest, [out] LONGLONG * pLatest );
-
- // Rate stuff
- HRESULT SetRate([in] double dRate);
- HRESULT GetRate([out] double * pdRate);
-
- // Preroll
- HRESULT GetPreroll([out] LONGLONG * pllPreroll);
-}
-
-typedef IMediaSeeking *PMEDIASEEKING;
-
-// Flags for IMediaEventEx
-cpp_quote("enum tagAM_MEDIAEVENT_FLAGS")
-cpp_quote("{")
-cpp_quote(" AM_MEDIAEVENT_NONOTIFY = 0x01")
-cpp_quote("};")
diff --git a/dxsdk/Include/DShowIDL/axextend.idl b/dxsdk/Include/DShowIDL/axextend.idl
deleted file mode 100644
index 257fb19a..00000000
--- a/dxsdk/Include/DShowIDL/axextend.idl
+++ /dev/null
@@ -1,5169 +0,0 @@
-//------------------------------------------------------------------------------
-// File: AXExtend.idl
-//
-// Desc: Extended streaming interface definitions for the ActiveMovie
-// streaming and synchronization architecture. Core streaming
-// interfaces are in AXCore.idl, and control interfaces for the
-// type library are in Control.odl.
-//
-// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------------------------
-
-
-// include after unknwn.idl, objidl.idl and axcore.idl
-
-
-// forward declarations - these are the interfaces declared in this file
-
-interface IEnumRegFilters;
-interface IFileSourceFilter;
-interface IFileSinkFilter;
-interface IFileSinkFilter2;
-interface IGraphBuilder;
-interface ICaptureGraphBuilder;
-interface ICaptureGraphBuilder2;
-interface IAMCopyCaptureFileProgress;
-interface IFilterMapper;
-interface IFilterMapper2;
-interface IMediaEventSink;
-interface IOverlay;
-interface IOverlayNotify;
-interface IOverlayNotify2;
-interface IQualityControl;
-interface ISeekingPassThru;
-interface IAMStreamConfig;
-interface IAMDevMemoryAllocator;
-interface IAMDevMemoryControl;
-interface IConfigInterleaving;
-interface IConfigAviMux;
-interface IAMVideoCompression;
-interface IAMVfwCaptureDialogs;
-interface IAMVfwCompressDialogs;
-interface IAMDroppedFrames;
-interface IAMAudioInputMixer;
-interface IAMBufferNegotiation;
-interface IAMAnalogVideoDecoder;
-interface IAMVideoProcAmp;
-interface IAMAnalogVideoEncoder;
-interface IAMCameraControl;
-interface IAMCrossbar;
-interface IAMTVTuner;
-interface IKsPropertySet;
-interface IAMPhysicalPinInfo;
-interface IAMExtDevice;
-interface IAMExtTransport;
-interface IAMTimecodeReader;
-interface IAMTimecodeGenerator;
-interface IAMTimecodeDisplay;
-interface IDrawVideoImage;
-interface IDecimateVideoImage;
-interface IAMVideoDecimationProperties;
-interface IAMPushSource;
-interface IAMAudioRendererStats;
-interface IAMLatency;
-interface IAMGraphStreams;
-interface IAMOverlayFX;
-interface IAMOpenProgress;
-interface IMpeg2Demultiplexer ;
-interface IMPEG2StreamIdMap ;
-interface IEnumStreamIdMap ;
-interface IAMClockSlave ;
-interface IEncoderAPI;
-interface IVideoEncoder;
-interface IAMGraphBuilderCallback;
-interface IAMCertifiedOutputProtection;
-
-//==========================================================================
-//==========================================================================
-// IEnumRegFilters interface -- enumerates registered filters.
-// enumerator interface returned from IFilterMapper::EnumMatchingFilters().
-// based on IEnum pseudo-template
-//==========================================================================
-//==========================================================================
-
-typedef struct {
- CLSID Clsid; // class id of the filter
- LPWSTR Name; // name of filter
-} REGFILTER;
-
-[
-object,
-uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-
-// The point of the mapper is to avoid loading filters. By looking in the
-// registry we can reduce the number of filters which must be loaded and tried.
-// This enumerator returns descriptors of filters (including the GUIDs that
-// CoCreateInstance can instantiate). The filters themselves are not loaded.
-
-interface IEnumRegFilters : IUnknown {
- import "unknwn.idl";
-
- // The caller must use CoTaskMemFree to free each REGFILTER* returned
- // in the array.
- HRESULT Next
- ( [in] ULONG cFilters, // place this many filters...
- [out] REGFILTER ** apRegFilter, // ...in this array of REGFILTER*
- [out] ULONG * pcFetched // actual count passed returned here
- );
-
- // I can't think why anyone would want to skip, so it's not implemented.
- // (anyone who thinks they know what they would be skipping over is probably
- // missing some piece of the jigsaw). This ALWAYS returns E_NOTIMPL.
-
- HRESULT Skip(
- [in] ULONG cFilters
- );
-
- HRESULT Reset(void);
-
- // No cloning either - also ALWAYS returns E_NOTIMPL.
-
- HRESULT Clone(
- [out] IEnumRegFilters **ppEnum
- );
-}
-
-
-typedef IEnumRegFilters *PENUMREGFILTERS;
-
-//========================================================================
-//========================================================================
-// abstraction representing the registered information about filters.
-// This allows properties of filters to be looked up without loading them.
-//========================================================================
-//========================================================================
-
-[
-object,
-uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IFilterMapper : IUnknown {
- import "unknwn.idl";
-
- //==========================================================================
- // Registration functions.
- // A filter should be registered before any other use.
- // The registration can be NON_VOLATILE (i.e. permanent, do once ever)
- // or VOLATILE (once per boot of the system).
- // UnregisterFilter (obviously) removes the registration.
- // The action of any of the other calls on unregistered filters is undefined.
- // it will either work or you'll get an error, but I'm not saying which.
- //==========================================================================
-
- // Four predefined values controling the order in which filters are tried
- // for intelligent graph building. Intermediate values are legal.
- // Any value <=MERIT_DO_NOT_USE will mean that the filter will never
- // be tried by the filtergrah to automatically complete a connection.
-
- enum { MERIT_PREFERRED = 0x800000,
- MERIT_NORMAL = 0x600000,
- MERIT_UNLIKELY = 0x400000,
- MERIT_DO_NOT_USE = 0x200000,
- MERIT_SW_COMPRESSOR = 0x100000,
- MERIT_HW_COMPRESSOR = 0x100050
- };
-
- // Register a filter
-
- HRESULT RegisterFilter
- ( [in] CLSID clsid, // GUID of the filter
- [in] LPCWSTR Name, // Descriptive name for the filter
- [in] DWORD dwMerit // DO_NOT_USE, UNLIKELY, NORMAL or PREFERRED.
- );
-
-
- // Register an identifiable instance of a filter. This deals with cases
- // such as two similar sound cards which are driven by the same driver,
- // but we want to choose which oif these cards the sound will come out of.
- // This is not needed if there is only one instance of the filter
- // (e.g. there is only one sound card in the machine) or if all instances
- // of the filter are equivalent.
-
- // The filter itself must have already been registered // ??? Is that true?
- HRESULT RegisterFilterInstance
- ( [in] CLSID clsid, // GUID of the filter
- [in] LPCWSTR Name, // Descriptive name of instance.
- [out] CLSID *MRId // Returned Media Resource Id. A
- // locally unique id for this instance
- // of this filter
- );
-
-
- HRESULT RegisterPin
- ( [in] CLSID Filter, // GUID of filter
- [in] LPCWSTR Name, // Name of the pin
- [in] BOOL bRendered, // The filter renders this input
- [in] BOOL bOutput, // TRUE if this is an Output pin
- [in] BOOL bZero, // TRUE if OK for zero instances of pin
- // In this case you will have to Create
- // a pin to have even one instance
- [in] BOOL bMany, // TRUE if OK for many instances of pin
- [in] CLSID ConnectsToFilter, // Filter it connects to if it has
- // subterranean connection, else NULL
- [in] LPCWSTR ConnectsToPin // Name of pin it connects to
- // NULL for output pins
- );
-
- HRESULT RegisterPinType
- ( [in] CLSID clsFilter, // GUID of filter
- [in] LPCWSTR strName, // Descriptive name of the pin
- [in] CLSID clsMajorType, // Major type of the data stream
- [in] CLSID clsSubType // Sub type of the data stream
- );
-
-
- HRESULT UnregisterFilter
- ( [in] CLSID Filter // GUID of filter
- );
-
-
- HRESULT UnregisterFilterInstance
- ( [in] CLSID MRId // Media Resource Id of this instance
- );
-
-
- HRESULT UnregisterPin
- ( [in] CLSID Filter, // GUID of filter
- [in] LPCWSTR Name // Name of the pin
- );
-
-
- // Set *ppEnum to be an enumerator for filters matching the requirements.
-
- HRESULT EnumMatchingFilters
- ( [out] IEnumRegFilters **ppEnum // enumerator returned
- , [in] DWORD dwMerit // at least this merit needed
- , [in] BOOL bInputNeeded // need at least one input pin
- , [in] CLSID clsInMaj // input major type
- , [in] CLSID clsInSub // input sub type
- , [in] BOOL bRender // must the input be rendered?
- , [in] BOOL bOututNeeded // need at least one output pin
- , [in] CLSID clsOutMaj // output major type
- , [in] CLSID clsOutSub // output sub type
- );
-
-}
-
-// structure used to identify media types a pin handles. Used for
-// registration through IFilterMapper and IFilterMapper2
-//
-typedef struct
-{
- const CLSID * clsMajorType;
- const CLSID * clsMinorType;
-} REGPINTYPES;
-
-// describes pin for filter registration. Used for registration
-// through IFilterMapper and IFilterMapper2
-//
-typedef struct
-{
- LPWSTR strName;
-
- // The filter renders this input
- BOOL bRendered;
-
- // This is an Output pin
- BOOL bOutput;
-
- // OK to have zero instances of pin In this case you will have to
- // Create a pin to have even one instance
- BOOL bZero;
-
- // OK to create many instance of pin
- BOOL bMany;
-
- const CLSID * clsConnectsToFilter;
- const WCHAR * strConnectsToPin;
-
- UINT nMediaTypes;
- const REGPINTYPES * lpMediaType;
-} REGFILTERPINS;
-
-// mediums (as defined in the Windows NT DDK) for registration with
-// IFilterMapper2
-//
-typedef struct
-{
- CLSID clsMedium;
- DWORD dw1;
- DWORD dw2;
-} REGPINMEDIUM;
-
-// flags for dwFlags in REFILTERPINS2
-enum
-{
- // OK to have zero instances of pin In this case you will have to
- // Create a pin to have even one instance
- REG_PINFLAG_B_ZERO = 0x1,
-
- // The filter renders this input
- REG_PINFLAG_B_RENDERER = 0x2,
-
- // OK to create many instance of pin
- REG_PINFLAG_B_MANY = 0x4,
-
- // This is an Output pin
- REG_PINFLAG_B_OUTPUT = 0x8
-};
-
-
-// describes pin for filter registration through IFilterMapper2
-typedef struct
-{
- // combination of REG_PINFLAG flags
- DWORD dwFlags;
-
- // number of instances of the pin if known
- UINT cInstances;
-
- UINT nMediaTypes;
- [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
-
- UINT nMediums;
- [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
-
- // pin category (for Kernel Streaming pins) as defined in the
- // Windows NT DDK
- const CLSID *clsPinCategory;
-
-} REGFILTERPINS2;
-
-// describes filter for registration through IFilterMapper2
-typedef struct
-{
- DWORD dwVersion; // 1 or 2
- DWORD dwMerit;
-
- /* unnamed union */
- [switch_is(dwVersion)] [switch_type(DWORD)] union
- {
- [case(1)]
-
- struct
- {
- ULONG cPins;
- [size_is(cPins)] const REGFILTERPINS *rgPins;
- };
-
- [case(2)]
-
- struct
- {
- ULONG cPins2;
- [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
- };
-
- [default]
- ;
- } ;
-
-} REGFILTER2;
-
-
-
-[
-object,
-uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
-pointer_default(unique)
-]
-interface IFilterMapper2 : IUnknown {
- import "unknwn.idl";
-
- // create or rename ActiveMovie category
- HRESULT CreateCategory
- ( [in] REFCLSID clsidCategory,
- [in] DWORD dwCategoryMerit,
- [in] LPCWSTR Description
- );
-
- HRESULT UnregisterFilter
- ( [in] const CLSID *pclsidCategory,
- [in] const OLECHAR *szInstance,
- [in] REFCLSID Filter // GUID of filter
- );
-
- // Register a filter, pins, and media types under a category.
- HRESULT RegisterFilter
- ( [in] REFCLSID clsidFilter, // GUID of the filter
- [in] LPCWSTR Name, // Descriptive name for the filter
-
- // ppMoniker can be null. or *ppMoniker can contain the
- // moniker where this filter data will be written;
- // *ppMoniker will be set to null on return. or *ppMoniker
- // can be null in which case the moniker will be returned
- // with refcount.
- [in, out] IMoniker **ppMoniker,
-
- // can be null
- [in] const CLSID *pclsidCategory,
-
- // cannot be null
- [in] const OLECHAR *szInstance,
-
- // rest of filter and pin registration
- [in] const REGFILTER2 *prf2
- );
-
- // Set *ppEnum to be an enumerator for filters matching the
- // requirements.
- HRESULT EnumMatchingFilters
- ( [out] IEnumMoniker **ppEnum // enumerator returned
- , [in] DWORD dwFlags // 0
- , [in] BOOL bExactMatch // don't match wildcards
- , [in] DWORD dwMerit // at least this merit needed
- , [in] BOOL bInputNeeded // need at least one input pin
- , [in] DWORD cInputTypes // Number of input types to match
- // Any match is OK
- , [size_is(cInputTypes*2)] const GUID *pInputTypes // input major+subtype pair array
- , [in] const REGPINMEDIUM *pMedIn // input medium
- , [in] const CLSID *pPinCategoryIn // input pin category
- , [in] BOOL bRender // must the input be rendered?
- , [in] BOOL bOutputNeeded // need at least one output pin
- , [in] DWORD cOutputTypes // Number of output types to match
- // Any match is OK
- , [size_is(cOutputTypes*2)] const GUID *pOutputTypes // output major+subtype pair array
- , [in] const REGPINMEDIUM *pMedOut // output medium
- , [in] const CLSID *pPinCategoryOut // output pin category
- );
-}
-
-[
-object,
-uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
-pointer_default(unique)
-]
-interface IFilterMapper3 : IFilterMapper2 {
- // new interface to allow creating filters using the mapper's devenum instance
- // primarily needed for out-of-proc access to a graph
- HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
-}
-
-//========================================================================
-//========================================================================
-// Defines IQualityControl interface
-//
-// Defines quality messages and allows a quality manager to install itself
-// as the sink for quality messages.
-//========================================================================
-//========================================================================
-
-typedef enum tagQualityMessageType {
- Famine,
- Flood
-} QualityMessageType;
-
-typedef struct tagQuality {
- QualityMessageType Type;
- long Proportion; // milli-units. 1000 = no change
- // for Flood:
- // What proportion of the media samples currently
- // coming through are required in the future.
- // 800 means please drop another 20%
- // For Famine:
- // How much to "keep in" e.g. 800 means send me
- // 20% less e.g. by dropping 20% of the samples.
- // 1100 would mean "I'm coping, send me more".
- REFERENCE_TIME Late;
- // How much you need to catch up by
- REFERENCE_TIME TimeStamp;
- // The stream time when this was generated (probably
- // corresponds to the start time on some sample).
-} Quality;
-
-typedef IQualityControl *PQUALITYCONTROL;
-
-
-[
-object,
-uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IQualityControl : IUnknown {
-
- // Notify the recipient that a quality change is requested.
- // pSelf is the IBaseFilter* of the sender.
- // this is sent from a filter
- // to (the quality manager or) an upstream peer.
- HRESULT Notify
- ( [in] IBaseFilter * pSelf,
- [in] Quality q
- );
-
- // Notify the recipient that future quality messages are to be sent
- // to iqc. If piqc is NULL then quality messages are to default back to
- // the upstream peer.
- // This is sent from the quality manager to a filter.
- // The recipient should hold piqc as a WEAK reference,
- // i.e. do not AddRef it, do not Release it.
- HRESULT SetSink
- ( [in] IQualityControl * piqc
- );
-}
-
-//=====================================================================
-//=====================================================================
-// Definitions required for overlay transport
-//=====================================================================
-//=====================================================================
-
-
-// Used to communicate the colour that the IOverlay client wants the window
-// painted in so that it can draw directly to the correct clipping region
-// A colour key can be described in two alternate ways, the first is by a
-// range of one or more (system) palette indices. The second is by defining
-// a colour cube with two RGB values, any of which would be acceptable.
-//
-// The CK values are consistent with GDI PALETTEINDEX and PALETTERGB macros
-
-
-enum { CK_NOCOLORKEY = 0x0, // No color key is required
- CK_INDEX = 0x1, // Index into the current system palette
- CK_RGB = 0x2 }; // Color key is an RGB value (or range)
-
-typedef struct tagCOLORKEY {
-
- DWORD KeyType; // Explains meaning of the structure
- DWORD PaletteIndex; // Palette index if available
- COLORREF LowColorValue; // Low colour space RGB value
- COLORREF HighColorValue; // Defines the high RGB value
-
-} COLORKEY;
-
-// When a filter sets up an advise link it can ask that only certain types
-// of notifications be sent, for example just palette changes. While this
-// doesn't mean that the other notification call backs won't ever be called
-// the IOverlay implementation may use this as an efficiency optimisation
-
-enum { ADVISE_NONE = 0x0, // No notifications required
- ADVISE_CLIPPING = 0x1, // Synchronous clip information
- ADVISE_PALETTE = 0x2, // Palette change notifications
- ADVISE_COLORKEY = 0x4, // Called when colour key changes
- ADVISE_POSITION = 0x8, // Likewise when window moves etc
- ADVISE_DISPLAY_CHANGE = 0x10 // Called on WM_DISPLAYCHANGE
- };
-
-const DWORD ADVISE_ALL = ADVISE_CLIPPING |
- ADVISE_PALETTE |
- ADVISE_COLORKEY |
- ADVISE_POSITION;
-
-const DWORD ADVISE_ALL2 = ADVISE_ALL |
- ADVISE_DISPLAY_CHANGE;
-
-// This isn't defined when you run IDL
-
-cpp_quote("#ifndef _WINGDI_")
-
-typedef struct _RGNDATAHEADER {
- DWORD dwSize;
- DWORD iType;
- DWORD nCount;
- DWORD nRgnSize;
- RECT rcBound;
-} RGNDATAHEADER;
-
-typedef struct _RGNDATA {
- RGNDATAHEADER rdh;
- char Buffer[1];
-} RGNDATA;
-
-cpp_quote("#endif")
-
-
-//=====================================================================
-//=====================================================================
-// Defines IOverlayNotify interface
-//
-// This interface gives asynchronous notifications of changes to the
-// rendering window - such as changes to the exposed window area
-//=====================================================================
-//=====================================================================
-
-[
-object,
-local,
-uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IOverlayNotify : IUnknown {
-
- // IOverlayNotify methods
-
- // This notifies the filter of palette changes, the filter should copy
- // the array of RGBQUADs if it needs to use them after returning. This
- // is not called when the palette is actually changed in the display
- // but at a short time after (in sync with WM_PALETTECHANGED messages)
-
- HRESULT OnPaletteChange(
- [in] DWORD dwColors, // Number of colours present
- [in] const PALETTEENTRY *pPalette); // Array of palette colours
-
- // This provides synchronous clip changes so that the client is called
- // before the window is moved to freeze the video, and then when the
- // window has stabilised it is called again to start playback again.
- // If the window rect is all zero then the window is invisible, the
- // filter must take a copy of the information if it wants to keep it
-
- HRESULT OnClipChange(
- [in] const RECT *pSourceRect, // Region of video to use
- [in] const RECT *pDestinationRect, // Where video goes
- [in] const RGNDATA *pRgnData); // Defines clipping information
-
- HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
-
- // The calls to OnClipChange happen in sync with the window. So it is
- // called with an empty clip list before the window moves to freeze
- // the video, and then when the window has stabilised it is called
- // again with the new clip list. The OnPositionChange callback is for
- // overlay cards that don't want the expense of synchronous clipping
- // updates and just want to know when the source or destination video
- // positions change. They will NOT be called in sync with the window
- // but at some point after the window has changed (basicly in time
- // with WM_SIZE etc messages received). This is therefore suitable
- // for overlay cards that don't inlay their data to the frame buffer
- // NOTE the destination is NOT clipped to the visible display area
-
- HRESULT OnPositionChange([in] const RECT *pSourceRect,
- [in] const RECT *pDestinationRect);
-}
-
-typedef IOverlayNotify *POVERLAYNOTIFY;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IOverlayNotify2 interface
-//
-// This interface gives asynchronous notifications of changes to the
-// rendering window - such as changes to the exposed window area
-// This is optionally supported by the advise sink for the purposes
-// of accepting OnDisplayChange notification.
-//=====================================================================
-//=====================================================================
-
-cpp_quote("#if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500)")
-cpp_quote("#define HMONITOR_DECLARED")
-cpp_quote("#if 0")
-typedef HANDLE HMONITOR;
-cpp_quote("#endif")
-cpp_quote("DECLARE_HANDLE(HMONITOR);")
-cpp_quote("#endif")
-
-[
-object,
-local,
-uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
-pointer_default(unique)
-]
-interface IOverlayNotify2 : IOverlayNotify {
-
- // IOverlayNotify2 methods
-
- HRESULT OnDisplayChange( // ADVISE_DISPLAY_CHANGE
- HMONITOR hMonitor);
-}
-
-typedef IOverlayNotify2 *POVERLAYNOTIFY2;
-
-
-//=====================================================================
-//=====================================================================
-// Defines IOverlay interface
-//
-// This interface provides information so that a filter can write direct to
-// the frame buffer while placing the video in the correct window position
-//=====================================================================
-//=====================================================================
-
-[
-object,
-local,
-uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
-pointer_default(unique)
-]
-interface IOverlay : IUnknown {
-
- // IOverlay methods
-
- HRESULT GetPalette(
- [out] DWORD *pdwColors, // Number of colours present
- [out] PALETTEENTRY **ppPalette); // Where to put palette data
-
- HRESULT SetPalette(
- [in] DWORD dwColors, // Number of colours present
- [in] PALETTEENTRY *pPalette); // Colours to use for palette
-
- // If you change the colour key through SetColorKey then all the advise
- // links will receive an OnColorKeyChange callback with the new colour
-
- HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
- HRESULT GetColorKey([out] COLORKEY *pColorKey);
- HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
- HRESULT GetWindowHandle([out] HWND *pHwnd);
-
- // The IOverlay implementation allocates the memory for the clipping
- // rectangles as it can be variable in length. The filter calling
- // this method should free the memory when it is finished with it
-
- HRESULT GetClipList([out] RECT *pSourceRect,
- [out] RECT *pDestinationRect,
- [out] RGNDATA **ppRgnData);
-
- // Returns the current video source and destination
-
- HRESULT GetVideoPosition([out] RECT *pSourceRect,
- [out] RECT *pDestinationRect);
-
- HRESULT Advise(
- [in] IOverlayNotify *pOverlayNotify, // Notification interface
- [in] DWORD dwInterests); // Callbacks interested in
-
- HRESULT Unadvise(); // Stop the callbacks now
-}
-
-typedef IOverlay *POVERLAY;
-
-
-//=====================================================================
-//=====================================================================
-// control related interfaces (others are defined in control.odl)
-//=====================================================================
-//=====================================================================
-
-
-//=====================================================================
-//=====================================================================
-// Defines IMediaEventSink interface
-//
-// Exposed by filtergraph. Called by filters to notify events. Will be
-// passed on to application by the IMediaControl event methods.
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IMediaEventSink : IUnknown {
-
- // notify an event. will be queued, but not delivered to
- // the application on this thread.
- HRESULT Notify(
- [in] long EventCode,
- [in] LONG_PTR EventParam1,
- [in] LONG_PTR EventParam2
- );
-}
-
-typedef IMediaEventSink *PMEDIAEVENTSINK;
-
-//=====================================================================
-//=====================================================================
-// Defines IFileSourceFilter interface
-//
-// Exposed by source filters to set the file name and media type.
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IFileSourceFilter : IUnknown {
-
- // Load a file and assign it the given media type
- HRESULT Load(
- [in] LPCOLESTR pszFileName, // Pointer to absolute path of file to open
- [in, unique] const AM_MEDIA_TYPE *pmt // Media type of file - can be NULL
- );
- // Get the currently loaded file name
- HRESULT GetCurFile(
- [out] LPOLESTR *ppszFileName, // Pointer to the path for the current file
- [out] AM_MEDIA_TYPE *pmt // Pointer to the media type
- );
-}
-
-typedef IFileSourceFilter *PFILTERFILESOURCE;
-
-//=====================================================================
-//=====================================================================
-// Defines IFileSinkFilter interface
-//
-// Exposed by renderers to set the output file name.
-//=====================================================================
-//=====================================================================
-
-[
- object,
- uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
- pointer_default(unique)
-]
-interface IFileSinkFilter : IUnknown {
-
- // Output to this file. default is to open the existing file
- HRESULT SetFileName(
- [in] LPCOLESTR pszFileName, // Pointer to absolute path of output file
- [in, unique] const AM_MEDIA_TYPE *pmt // Media type of file - can be NULL
- );
- // Get the current file name
- HRESULT GetCurFile(
- [out] LPOLESTR *ppszFileName, // Pointer to the path for the current file
- [out] AM_MEDIA_TYPE *pmt // Pointer to the media type
- );
-}
-
-typedef IFileSinkFilter *PFILTERFILESINK;
-
-[
- object,
- uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
- pointer_default(unique)
-]
-interface IFileSinkFilter2 : IFileSinkFilter {
-
- HRESULT SetMode(
- [in] DWORD dwFlags // AM_FILESINK_FLAGS
- );
-
- HRESULT GetMode(
- [out] DWORD *pdwFlags // AM_FILESINK_FLAGS
- );
-}
-
-typedef IFileSinkFilter2 *PFILESINKFILTER2;
-
-typedef enum {
-
- // create a new file
- AM_FILE_OVERWRITE = 0x00000001,
-
-} AM_FILESINK_FLAGS;
-
-
-//
-// Intelligent connectivity for filters - an interface supported by
-// filter graphs (since it is an extension to IFilterGraph) that supports
-// building of graphs by automatic selection and connection of appropriate
-// filters
-
-[
- object,
- uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IGraphBuilder : IFilterGraph {
- // Connect these two pins directly or indirectly, using transform filters
- // if necessary.
-
- HRESULT Connect
- ( [in] IPin * ppinOut, // the output pin
- [in] IPin * ppinIn // the input pin
- );
-
-
- // Connect this output pin directly or indirectly, using transform filters
- // if necessary to something that will render it.
-
- HRESULT Render
- ( [in] IPin * ppinOut // the output pin
- );
-
-
- // Build a filter graph that will render this file using this play list.
- // If lpwstrPlayList is NULL then it will use the default play list
- // which will typically render the whole file.
-
- HRESULT RenderFile
- ( [in] LPCWSTR lpcwstrFile,
- [in, unique] LPCWSTR lpcwstrPlayList
- );
-
-
- // Add to the filter graph a source filter for this file. This would
- // be the same source filter that would be added by calling Render.
- // This call gives you more control over building
- // the rest of the graph, e.g. AddFilter(<a renderer of your choice>)
- // and then Connect the two.
- // The IBaseFilter* interface exposed by the source filter is returned
- // in ppFilter, addrefed already for you
- // The filter will be known by the name lpcwstrFIlterName
- // nn this filter graph,
- HRESULT AddSourceFilter
- ( [in] LPCWSTR lpcwstrFileName,
- [in, unique] LPCWSTR lpcwstrFilterName,
- [out] IBaseFilter* *ppFilter
- );
-
-
- // If this call is made then trace information will be written to the
- // file showing the actions taken in attempting to perform an operation.
- HRESULT SetLogFile
- ( [in] DWORD_PTR hFile // open file handle e.g. from CreateFile
- );
-
-
- // Request that the graph builder should return as soon as possible from
- // its current task.
- // Note that it is possible fot the following to occur in the following
- // sequence:
- // Operation begins; Abort is requested; Operation completes normally.
- // This would be normal whenever the quickest way to finish an operation
- // was to simply continue to the end.
- HRESULT Abort();
-
- // Return S_OK if the curent operation is to continue,
- // return S_FALSE if the current operation is to be aborted.
- // This method can be called as a callback from a filter which is doing
- // some operation at the request of the graph.
- HRESULT ShouldOperationContinue();
-
-}
-
-
-//
-// New capture graph builder
-
-[
- object,
- uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
- pointer_default(unique)
-]
-interface ICaptureGraphBuilder : IUnknown {
-
- // Use this filtergraph
- HRESULT SetFiltergraph(
- [in] IGraphBuilder *pfg);
-
- // what filtergraph are you using?
- // *ppfg->Release() when you're done with it
- HRESULT GetFiltergraph(
- [out] IGraphBuilder **ppfg);
-
- // creates a rendering section in the filtergraph consisting of a MUX
- // of some filetype, and a file writer (and connects them together)
- // *ppf->Release() when you're done with it
- // *ppSink->Release() when you're done with it
- HRESULT SetOutputFileName(
- [in] const GUID *pType, // type of file to write, eg. MEDIASUBTYPE_Avi
- [in] LPCOLESTR lpstrFile, // filename given to file writer
- [out] IBaseFilter **ppf, // returns pointer to the MUX
- [out] IFileSinkFilter **ppSink);// queried from file writer
-
- // Looks for an interface on the filter and on the output pin of the given
- // category. (Categories: CAPTURE/PREVIEW/VIDEOPORT/VBI etc. or
- // NULL for "don't care".
- // It will also look upstream and downstream of
- // the pin for the interface, to find interfaces on renderers, MUXES, TV
- // Tuners, etc.
- // Call *ppint->Release() when you're done with it
- [local] HRESULT FindInterface(
- [in, unique] const GUID *pCategory, // can be NULL for all pins
- [in] IBaseFilter *pf,
- [in] REFIID riid,
- [out] void **ppint);
- [call_as(FindInterface)] HRESULT RemoteFindInterface(
- [in, unique] const GUID *pCategory, // can be NULL for all pins
- [in] IBaseFilter *pf,
- [in] REFIID riid,
- [out] IUnknown **ppint);
-
- // Connects the pin of the given category of the source filter to the
- // rendering filter, optionally through another filter (compressor?)
- // For a non-NULL category, it will instantiate and connect additional
- // required filters upstream too, like TV Tuners and Crossbars.
- // If there is only one output pin on the source, use a NULL
- // category. You can also have pSource be a pin
- HRESULT RenderStream(
- [in] const GUID *pCategory, // can be NULL if only one output pin
- [in] IUnknown *pSource, // filter or pin
- [in] IBaseFilter *pfCompressor,
- [in] IBaseFilter *pfRenderer); // can be NULL
-
- // Sends IAMStreamControl messages to the pin of the desired category, eg.
- // "capture" or "preview"
- // REFERENCE_TIME=NULL means NOW
- // REFERENCE_TIME=MAX_TIME means never, or cancel previous request
- // NULL controls all capture filters in the graph - you will get one
- // notification for each filter with a pin of that category found
- // returns S_FALSE if stop will be signalled before last sample is
- // rendered.
- // return a FAILURE code if the filter does not support IAMStreamControl
- HRESULT ControlStream(
- [in] const GUID *pCategory,
- [in] IBaseFilter *pFilter,
- [in] REFERENCE_TIME *pstart,
- [in] REFERENCE_TIME *pstop,
- [in] WORD wStartCookie, // high word reserved
- [in] WORD wStopCookie); // high word reserved
-
- // creates a pre-allocated file of a given size in bytes
- HRESULT AllocCapFile(
- [in] LPCOLESTR lpstr,
- [in] DWORDLONG dwlSize);
-
- // Copies the valid file data out of the old, possibly huge old capture
- // file into a shorter new file.
- // Return S_FALSE from your progress function to abort capture, S_OK to
- // continue
- HRESULT CopyCaptureFile(
- [in] LPOLESTR lpwstrOld,
- [in] LPOLESTR lpwstrNew,
- [in] int fAllowEscAbort, // pressing ESC will abort?
- [in] IAMCopyCaptureFileProgress *pCallback); // implement this to
- // get progress
-}
-
-
-//
-// Capture graph builder "CopyCapturedFile" progress callback
-
-[
- object,
- uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
- pointer_default(unique)
-]
-interface IAMCopyCaptureFileProgress : IUnknown {
-
- // If you support this interface somewhere, this function will be called
- // periodically while ICaptureGraphBuilder::CopyCaptureFile is executing
- // to let you know the progress
- //
- // Return S_OK from this function to continue. Return S_FALSE to abort the
- // copy
- HRESULT Progress(
- [in] int iProgress); // a number between 0 and 100 (%)
-}
-
-
-//
-// Capture graph builder that can deal with a single filter having more than
-// one pin of each category... some new devices can capture both audio and
-// video, for example
-//
-
-[
- object,
- uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
- pointer_default(unique)
-]
-interface ICaptureGraphBuilder2 : IUnknown {
-
- // Use this filtergraph
- HRESULT SetFiltergraph(
- [in] IGraphBuilder *pfg);
-
- // what filtergraph are you using?
- // *ppfg->Release() when you're done with it
- HRESULT GetFiltergraph(
- [out] IGraphBuilder **ppfg);
-
- // creates a rendering section in the filtergraph consisting of a MUX
- // of some filetype, and a file writer (and connects them together)
- // *ppf->Release() when you're done with it
- // *ppSink->Release() when you're done with it
- HRESULT SetOutputFileName(
- [in] const GUID *pType, // GUID of MUX filter to use
- [in] LPCOLESTR lpstrFile, // filename given to file writer
- [out] IBaseFilter **ppf, // returns pointer to the MUX
- [out] IFileSinkFilter **ppSink);// queried from file writer
-
- // Looks for an interface on the filter and on the output pin of the given
- // category and type. (Categories: CAPTURE/PREVIEW/VIDEOPORT/VBI etc. or
- // NULL for "don't care". Type: MAJORTYPE_Video/Audio etc or NULL)
- // !!! Will some filters have >1 capture pin? ie RGB and MPEG?
- // It will also look upstream and downstream of
- // the pin for the interface, to find interfaces on renderers, MUXES, TV
- // Tuners, etc.
- // Call *ppint->Release() when you're done with it
- [local] HRESULT FindInterface(
- [in] const GUID *pCategory, // can be NULL for all pins
- [in] const GUID *pType, // Audio/Video/??? or NULL (don't care)
- [in] IBaseFilter *pf,
- [in] REFIID riid,
- [out] void **ppint);
- [call_as(FindInterface)] HRESULT RemoteFindInterface(
- [in] const GUID *pCategory, // can be NULL for all pins
- [in] const GUID *pType, // Audio/Video/??? or NULL (don't care)
- [in] IBaseFilter *pf,
- [in] REFIID riid,
- [out] IUnknown **ppint);
-
- // Connects the pin of the given category and type of the source filter to
- // the rendering filter, optionally through another filter (compressor?)
- // (Type is a Majortype, like Video or Audio)
- // For a non-NULL category, it will instantiate and connect additional
- // required filters upstream too, like TV Tuners and Crossbars.
- // If there is only one output pin on the source, use a NULL category
- // and type. You can also have pSource be a pin
- HRESULT RenderStream(
- [in] const GUID *pCategory, // can be NULL if only one output pin
- [in] const GUID *pType, // Major type (Video/Audio/etc)
- [in] IUnknown *pSource, // filter or pin
- [in] IBaseFilter *pfCompressor,
- [in] IBaseFilter *pfRenderer); // can be NULL
-
- // Sends IAMStreamControl messages to the pin of the desired category,
- // (eg. "capture" or "preview") and of the desired type (eg. VIDEO or AUDIO)
- // A category MUST be given. If a filter is given, a type must be too.
- // REFERENCE_TIME=NULL means NOW
- // REFERENCE_TIME=MAX_TIME means never, or cancel previous request
- // NULL controls all capture filters in the graph - you will get one
- // notification for each filter with a pin of that category found
- // returns S_FALSE if stop will be signalled before last sample is
- // rendered.
- // return a FAILURE code if the filter does not support IAMStreamControl
- HRESULT ControlStream(
- [in] const GUID *pCategory,
- [in] const GUID *pType, // Major type (Video/Audio/etc)
- [in] IBaseFilter *pFilter,
- [in] REFERENCE_TIME *pstart,
- [in] REFERENCE_TIME *pstop,
- [in] WORD wStartCookie, // high word reserved
- [in] WORD wStopCookie); // high word reserved
-
- // creates a pre-allocated file of a given size in bytes
- HRESULT AllocCapFile(
- [in] LPCOLESTR lpstr,
- [in] DWORDLONG dwlSize);
-
- // Copies the valid file data out of the old, possibly huge old capture
- // file into a shorter new file.
- // Return S_FALSE from your progress function to abort capture, S_OK to
- // continue
- HRESULT CopyCaptureFile(
- [in] LPOLESTR lpwstrOld,
- [in] LPOLESTR lpwstrNew,
- [in] int fAllowEscAbort, // pressing ESC will abort?
- [in] IAMCopyCaptureFileProgress *pCallback); // implement this to
- // get progress
- // Helper fn to find a certain pin on a filter.
- HRESULT FindPin(
- [in] IUnknown *pSource,
- [in] PIN_DIRECTION pindir, // input or output?
- [in] const GUID *pCategory, // what category? (or NULL)
- [in] const GUID *pType, // what Major type (or NULL)
- [in] BOOL fUnconnected, // must it be unconnected?
- [in] int num, // which pin matching this? (0 based)
- [out] IPin **ppPin);
-}
-
-enum _AM_RENSDEREXFLAGS {
- AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01 // Dont add any renderers
-};
-
-//
-// IFilterGraph2
-//
-// New methods on for IFilterGraph and IGraphBuilder will have to go here.
-//
-
-[
- object,
- uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
- pointer_default(unique)
-]
-interface IFilterGraph2: IGraphBuilder {
-
- // Add a Moniker source moniker
- HRESULT AddSourceFilterForMoniker(
- [in] IMoniker *pMoniker,
- [in] IBindCtx *pCtx,
- [in, unique] LPCWSTR lpcwstrFilterName,
- [out] IBaseFilter **ppFilter
- );
-
- // Specify the type for a reconnect
- // This is better than Reconnect as sometime the parties to a
- // reconnection can't remember what type they'd agreed (!)
- HRESULT ReconnectEx
- ( [in] IPin * ppin, // the pin to disconnect and reconnect
- [in, unique] const AM_MEDIA_TYPE *pmt // the type to reconnect with - can be NULL
- );
-
- // Render a pin without adding any new renderers
- HRESULT RenderEx( [in] IPin *pPinOut, // Pin to render
- [in] DWORD dwFlags, // flags
- [in, out] DWORD *pvContext // Unused - set to NULL
- );
-
-#if 0
- // Method looks for a filter which supports the specified interface. If such
- // a filter exists, an AddRef()'ed pointer to the requested interface is placed
- // in *ppInterface.
- //
- // *ppInterface will be NULL on return if such a filter could not be found, and
- // the method will return E_NOINTERFACE.
- //
- // pdwIndex is an internal index that is used for obtaining subsequent interfaces.
- // *pdwIndex should be initialized to zero. It is set on return to a value that
- // allows the implementation of FindFilterInterface to search for further interfaces
- // if called again. If no more such interfaces exist, the method will return E_NOINTERFACE.
- //
- // If pdwIndex is NULL, FindFilterInterface returns an interface only if there is just
- // a single filter in the graph that supports the interface. Otherwise it returns
- // E_NOINTERFACE.
- //
- HRESULT FindFilterInterface( [in] REFIID iid, [out] void ** ppInterface, [in,out] LPDWORD pdwIndex );
-
- // Tries to obtain the interface from the filter graph itself. If this fails,
- // it attempts to find the unique filter that supports the interface.
- // On failure the method will return E_NOINTERFACE. On success, it returns
- // S_OK and an AddRef()'ed pointer to the requested interface in *ppInterface.
- //
- HRESULT FindInterface( [in] REFIID iid, [out] void ** ppInterface );
-
-#endif
-}
-
-//
-// StreamBuilder
-// aka Graph building with constraints
-// aka convergent graphs
-// aka Closed captioning
-
-[
- object,
- local,
- uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IStreamBuilder : IUnknown {
-
- // Connect this output pin directly or indirectly, using transform filters
- // if necessary to thing(s) that will render it, within this graph
- // Move from Initial state to Rendered state.
-
- HRESULT Render
- ( [in] IPin * ppinOut, // the output pin
- [in] IGraphBuilder * pGraph // the graph
- );
-
- // Undo what you did in Render. Return to Initial state.
- HRESULT Backout
- ( [in] IPin * ppinOut, // the output pin
- [in] IGraphBuilder * pGraph // the graph
- );
-}
-
-
-// async reader interface - supported by file source filters. Allows
-// multiple overlapped reads from different positions
-
-
-[
- object,
- uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IAsyncReader : IUnknown
-{
- // pass in your preferred allocator and your preferred properties.
- // method returns the actual allocator to be used. Call GetProperties
- // on returned allocator to learn alignment and prefix etc chosen.
- // this allocator will be not be committed and decommitted by
- // the async reader, only by the consumer.
- // Must call this before calling Request.
- HRESULT RequestAllocator(
- [in] IMemAllocator* pPreferred,
- [in] ALLOCATOR_PROPERTIES* pProps,
- [out] IMemAllocator ** ppActual);
-
- // queue a request for data.
- // media sample start and stop times contain the requested absolute
- // byte position (start inclusive, stop exclusive).
- // may fail if sample not obtained from agreed allocator.
- // may fail if start/stop position does not match agreed alignment.
- // samples allocated from source pin's allocator may fail
- // GetPointer until after returning from WaitForNext.
- // Stop position must be aligned - this means it may exceed duration.
- // on completion, stop position will be corrected to unaligned
- // actual data.
- HRESULT Request(
- [in] IMediaSample* pSample,
- [in] DWORD_PTR dwUser); // user context
-
- // block until the next sample is completed or the timeout occurs.
- // timeout (millisecs) may be 0 or INFINITE. Samples may not
- // be delivered in order. If there is a read error of any sort, a
- // notification will already have been sent by the source filter,
- // and HRESULT will be an error.
- // If ppSample is not null, then a Request completed with the result
- // code returned.
- HRESULT WaitForNext(
- [in] DWORD dwTimeout,
- [out] IMediaSample** ppSample, // completed sample
- [out] DWORD_PTR * pdwUser); // user context
-
- // sync read of data. Sample passed in must have been acquired from
- // the agreed allocator. Start and stop position must be aligned.
- // equivalent to a Request/WaitForNext pair, but may avoid the
- // need for a thread on the source filter.
- HRESULT SyncReadAligned(
- [in] IMediaSample* pSample);
-
-
- // sync read. works in stopped state as well as run state.
- // need not be aligned. Will fail if read is beyond actual total
- // length.
- HRESULT SyncRead(
- [in] LONGLONG llPosition, // absolute file position
- [in] LONG lLength, // nr bytes required
- [out, size_is(lLength)]
- BYTE* pBuffer); // write data here
-
- // return total length of stream, and currently available length.
- // reads for beyond the available length but within the total length will
- // normally succeed but may block for a long period.
- HRESULT Length(
- [out] LONGLONG* pTotal,
- [out] LONGLONG* pAvailable);
-
- // cause all outstanding reads to return, possibly with a failure code
- //(VFW_E_TIMEOUT) indicating they were cancelled.
- // Between BeginFlush and EndFlush calls, Request calls will fail and
- // WaitForNext calls will always complete immediately.
- HRESULT BeginFlush(void);
- HRESULT EndFlush(void);
-}
-
-
-// interface provided by the filtergraph itself to let other objects
-// (especially plug-in distributors, but also apps like graphedt) know
-// when the graph has changed.
-[
- object,
- uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IGraphVersion : IUnknown
-{
- // returns the current graph version number
- // this is incremented every time there is a change in the
- // set of filters in the graph or in their connections
- //
- // if this is changed since your last enumeration, then re-enumerate
- // the graph
- HRESULT QueryVersion(LONG* pVersion);
-}
-
-
-
-
-//
-// interface describing an object that uses resources.
-//
-// implement if: you request resources using IResourceManager. You will
-// need to pass your implementation of this pointer as an in param.
-//
-// use if: you are a resource manager who implements IResourceManager
-[
- object,
- uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IResourceConsumer : IUnknown
-{
- // you may acquire the resource specified.
- // return values:
- // S_OK -- I have successfully acquired it
- // S_FALSE -- I will acquire it and call NotifyAcquire afterwards
- // VFW_S_NOT_NEEDED: I no longer need the resource
- // FAILED(hr)-I tried to acquire it and failed.
-
- HRESULT
- AcquireResource(
- [in] LONG idResource);
-
-
-
- // Please release the resource.
- // return values:
- // S_OK -- I have released it (and want it again when available)
- // S_FALSE -- I will call NotifyRelease when I have released it
- // other something went wrong.
- HRESULT
- ReleaseResource(
- [in] LONG idResource);
-}
-
-
-
-// interface describing a resource manager that will resolve contention for
-// named resources.
-//
-// implement if: you are a resource manager. The filtergraph will be a resource
-// manager, internally delegating to the system wide resource manager
-// (when there is one)
-//
-// use if: you need resources that are limited. Use the resource manager to
-// resolve contention by registering the resource with this interface,
-// and requesting it from this interface whenever needed.
-//
-// or use if: you detect focus changes which should affect resource usage.
-// Notifying change of focus to the resource manager will cause the resource
-// manager to switch contended resources to the objects that have the user's
-// focus
-[
- object,
- uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IResourceManager : IUnknown
-{
- // tell the manager how many there are of a resource.
- // ok if already registered. will take new count. if new count
- // is lower, will de-allocate resources to new count.
- //
- // You get back a token that will be used in further calls.
- //
- // Passing a count of 0 will eliminate this resource. There is currently
- // no defined way to find the id without knowing the count.
- //
- HRESULT
- Register(
- [in] LPCWSTR pName, // this named resource
- [in] LONG cResource, // has this many instances
- [out] LONG* plToken // token placed here on return
- );
-
- HRESULT
- RegisterGroup(
- [in] LPCWSTR pName, // this named resource group
- [in] LONG cResource, // has this many resources
- [in, size_is(cResource)]
- LONG* palTokens, // these are the contained resources
- [out] LONG* plToken // group resource id put here on return
- );
-
- // request the use of a given, registered resource.
- // possible return values:
- // S_OK == yes you can use it now
- // S_FALSE == you will be called back when the resource is available
- // other - there is an error.
- //
- // The priority of this request should be affected by the associated
- // focus object -- that is, when SetFocus is called for that focus
- // object (or a 'related' object) then my request should be put through.
- //
- // A filter should pass the filter's IUnknown here. The filtergraph
- // will match filters to the filtergraph, and will attempt to trace
- // filters to common source filters when checking focus objects.
- // The Focus object must be valid for the entire lifetime of the request
- // -- until you call CancelRequest or NotifyRelease(id, p, FALSE)
- HRESULT
- RequestResource(
- [in] LONG idResource,
- [in] IUnknown* pFocusObject,
- [in] IResourceConsumer* pConsumer
- );
-
-
- // notify the resource manager that an acquisition attempt completed.
- // Call this method after an AcquireResource method returned
- // S_FALSE to indicate asynchronous acquisition.
- // HR should be S_OK if the resource was successfully acquired, or a
- // failure code if the resource could not be acquired.
- HRESULT
- NotifyAcquire(
- [in] LONG idResource,
- [in] IResourceConsumer* pConsumer,
- [in] HRESULT hr);
-
- // Notify the resource manager that you have released a resource. Call
- // this in response to a ReleaseResource method, or when you have finished
- // with the resource. bStillWant should be TRUE if you still want the
- // resource when it is next available, or FALSE if you no longer want
- // the resource.
- HRESULT
- NotifyRelease(
- [in] LONG idResource,
- [in] IResourceConsumer* pConsumer,
- [in] BOOL bStillWant);
-
- // I don't currently have the resource, and I no longer need it.
- HRESULT
- CancelRequest(
- [in] LONG idResource,
- [in] IResourceConsumer* pConsumer);
-
- // Notify the resource manager that a given object has been given the
- // user's focus. In ActiveMovie, this will normally be a video renderer
- // whose window has received the focus. The filter graph will switch
- // contended resources to (in order):
- // requests made with this same focus object
- // requests whose focus object shares a common source with this
- // requests whose focus object shares a common filter graph
- // After calling this, you *must* call ReleaseFocus before the IUnknown
- // becomes invalid, unless you can guarantee that another SetFocus
- // of a different object is done in the meantime. No addref is held.
- //
- // The resource manager will hold this pointer until replaced or cancelled,
- // and will use it to resolve resource contention. It will call
- // QueryInterface for IBaseFilter at least and if found will call methods on
- // that interface.
- HRESULT
- SetFocus(
- [in] IUnknown* pFocusObject);
-
- // Sets the focus to NULL if the current focus object is still
- // pFocusObject. Call this when
- // the focus object is about to be destroyed to ensure that no-one is
- // still referencing the object.
- HRESULT
- ReleaseFocus(
- [in] IUnknown* pFocusObject);
-
-
-
-// !!! still need
-// -- app override (some form of SetPriority)
-// -- enumeration and description of resources
-
-}
-
-
-//
-// Interface representing an object that can be notified about state
-// and other changes within a filter graph. The filtergraph will call plug-in
-// distributors that expose this optional interface so that they can
-// respond to appropriate changes.
-//
-// Implement if: you are a plug-in distributor (your class id is found
-// under HKCR\Interface\<IID>\Distributor= for some interface).
-//
-// Use if: you are the filtergraph.
-[
- object,
- uuid(56a868af-0ad4-11ce-b03a-0020af0ba770),
- pointer_default(unique)
-]
-interface IDistributorNotify : IUnknown
-{
- // called when graph is entering stop state. Called before
- // filters are stopped.
- HRESULT Stop(void);
-
- // called when graph is entering paused state, before filters are
- // notified
- HRESULT Pause(void);
-
- // called when graph is entering running state, before filters are
- // notified. tStart is the stream-time offset parameter that will be
- // given to each filter's IBaseFilter::Run method.
- HRESULT Run(REFERENCE_TIME tStart);
-
- // called when the graph's clock is changing, with the new clock. Addref
- // the clock if you hold it beyond this method. Called before
- // the filters are notified.
- HRESULT SetSyncSource(
- [in] IReferenceClock * pClock);
-
- // called when the set of filters or their connections has changed.
- // Called on every AddFilter, RemoveFilter or ConnectDirect (or anything
- // that will lead to one of these).
- // You don't need to rebuild your list of interesting filters at this point
- // but you should release any refcounts you hold on any filters that
- // have been removed.
- HRESULT NotifyGraphChange(void);
-}
-
-typedef enum {
- AM_STREAM_INFO_START_DEFINED = 0x00000001,
- AM_STREAM_INFO_STOP_DEFINED = 0x00000002,
- AM_STREAM_INFO_DISCARDING = 0x00000004,
- AM_STREAM_INFO_STOP_SEND_EXTRA = 0x00000010
-} AM_STREAM_INFO_FLAGS;
-
-// Stream information
-typedef struct {
- REFERENCE_TIME tStart;
- REFERENCE_TIME tStop;
- DWORD dwStartCookie;
- DWORD dwStopCookie;
- DWORD dwFlags;
-} AM_STREAM_INFO;
-
-//
-// IAMStreamControl
-//
-
-[
- object,
- uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
- pointer_default(unique)
-]
-interface IAMStreamControl : IUnknown
-{
- // The REFERENCE_TIME pointers may be null, which
- // indicates immediately. If the pointer is non-NULL
- // and dwCookie is non-zero, then pins should send
- // EC_STREAM_CONTROL_STOPPED / EC_STREAM_CONTROL_STARTED
- // with an IPin pointer and the cookie, thus allowing
- // apps to tie the events back to their requests.
- // If either dwCookies is zero, or the pointer is null,
- // then no event is sent.
-
- // If you have a capture pin hooked up to a MUX input pin and they
- // both support IAMStreamControl, you'll want the MUX to signal the
- // stop so you know the last frame was written out. In order for the
- // MUX to know it's finished, the capture pin will have to send one
- // extra sample after it was supposed to stop, so the MUX can trigger
- // off that. So you would set bSendExtra to TRUE for the capture pin
- // Leave it FALSE in all other cases.
-
- HRESULT StartAt( [in] const REFERENCE_TIME * ptStart,
- [in] DWORD dwCookie );
- HRESULT StopAt( [in] const REFERENCE_TIME * ptStop,
- [in] BOOL bSendExtra,
- [in] DWORD dwCookie );
- HRESULT GetInfo( [out] AM_STREAM_INFO *pInfo);
-}
-
-
-
-//
-// ISeekingPassThru
-//
-
-[
- object,
- uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
- pointer_default(unique)
-]
-interface ISeekingPassThru : IUnknown
-{
- HRESULT Init( [in] BOOL bSupportRendering,
- [in] IPin *pPin);
-}
-
-
-
-//
-// IAMStreamConfig - pin interface
-//
-
-// A capture filter or compression filter's output pin
-// supports this interface - no matter what data type you produce.
-
-// This interface can be used to set the output format of a pin (as an
-// alternative to connecting the pin using a specific media type).
-// After setting an output format, the pin will use that format
-// the next time it connects to somebody, so you can just Render that
-// pin and get a desired format without using Connect(CMediaType)
-// Your pin should do that by ONLY OFFERING the media type set in SetFormat
-// in its enumeration of media types, and no others. This will ensure that
-// that format is indeed used for connection (or at least offer it first).
-// An application interested in enumerating accepted mediatypes may have to
-// do so BEFORE calling SetFormat.
-
-// But this interface's GetStreamCaps function can get more information
-// about accepted media types than the traditional way of enumerating a pin's
-// media types, so it should typically be used instead.
-// GetStreamCaps gets information about the kinds of formats allowed... how
-// it can stretch and crop, and the frame rate and data rates allowed (for
-// video)
-
-// VIDEO EXAMPLE
-//
-// GetStreamCaps returns a whole array of {MediaType, Capabilities}.
-// Let's say your capture card supports JPEG anywhere between 160x120 and
-// 320x240, and also the size 640x480. Also, say it supports RGB24 at
-// resolutions between 160x120 and 320x240 but only multiples of 8. You would
-// expose these properties by offering a media type of 320 x 240 JPEG
-// (if that is your default or preferred size) coupled with
-// capabilities saying minimum 160x120 and maximum 320x240 with granularity of
-// 1. The next pair you expose is a media type of 640x480 JPEG coupled with
-// capabilities of min 640x480 max 640x480. The third pair is media type
-// 320x240 RGB24 with capabilities min 160x120 max 320x240 granularity 8.
-// In this way you can expose almost every quirk your card might have.
-// An application interested in knowing what compression formats you provide
-// can get all the pairs and make a list of all the unique sub types of the
-// media types.
-//
-// If a filter's output pin is connected with a media type that has rcSource
-// and rcTarget not empty, it means the filter is being asked to stretch the
-// rcSource sub-rectangle of its InputSize (the format of the input pin for
-// a compressor, and the largest bitmap a capture filter can generate with
-// every pixel unique) into the rcTarget sub-rectangle of its output format.
-// For instance, if a video compressor has as input 160x120 RGB, and as output
-// 320x240 MPEG with an rcSource of (10,10,20,20) and rcTarget of (0,0,100,100)
-// this means the compressor is being asked to take a 10x10 piece of the 160x120
-// RGB bitmap, and make it fill the top 100x100 area of a 320x240 bitmap,
-// leaving the rest of the 320x240 bitmap untouched.
-// A filter does not have to support this and can fail to connect with a
-// media type where rcSource and rcTarget are not empty.
-//
-// Your output pin is connected to the next filter with a certain media
-// type (either directly or using the media type passed by SetFormat),
-// and you need to look at the AvgBytesPerSecond field of the format
-// of that mediatype to see what data rate you are being asked to compress
-// the video to, and use that data rate. Using the number of frames per
-// second in AvgTimePerFrame, you can figure out how many bytes each frame
-// is supposed to be. You can make it smaller, but NEVER EVER make a bigger
-// data rate. For a video compressor, your input pin's media type tells you
-// the frame rate (use that AvgTimePerFrame). For a capture filter, the
-// output media type tells you, so use that AvgTimePerFrame.
-//
-// The cropping rectangle described below is the same as the rcSrc of the
-// output pin's media type.
-//
-// The output rectangle described below is the same of the width and height
-// of the BITMAPINFOHEADER of the media type of the output pin's media type
-
-
-// AUDIO EXAMPLE
-//
-// This API can return an array of pairs of (media type, capabilities).
-// This can be used to expose all kinds of wierd capabilities. Let's say you
-// do any PCM frequency from 11,025 to 44,100 at 8 or 16 bit mono or
-// stereo, and you also do 48,000 16bit stereo as a special combination.
-// You would expose 3 pairs. The first pair would have Min Freq of 11025 and
-// Max Freq of 44100, with MaxChannels=2 and MinBits=8 and MaxBits=8 for the
-// capabilites structure, and a media type of anything you like, maybe
-// 22kHz, 8bit stereo as a default.
-// The 2nd pair would be the same except for MinBits=16 and MaxBits=16 in
-// the capabilities structure and the media type could be something like
-// 44kHz, 16bit stereo as a default (the media type in the pair should always
-// be something legal as described by the capabilities structure... the
-// structure tells you how you can change the media type to produce other
-// legal media types... for instance changing 44kHz to 29010Hz would be legal,
-// but changing bits from 16 to 14 would not be.)
-// The 3rd pair would be MinFreq=48000 MaxFreq=48000 MaxChannels=2
-// MinBits=16 and MaxBits=16, and the media type would be 48kHz 16bit stereo.
-// You can also use the Granularity elements of the structure (like the example
-// for video) if you support values that multiples of n, eg. you could say
-// minimum bits per sample 8, max 16, and granularity 8 to describe doing
-// either 8 or 16 bit all in one structure
-//
-// If you support non-PCM formats, the media type returned in GetStreamCaps
-// can show which non-PCM formats you support (with a default sample rate,
-// bit rate and channels) and the capabilities structure going with that
-// media type can describe which other sample rates, bit rates and channels
-// you support.
-
-[
- object,
- uuid(C6E13340-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
-]
-interface IAMStreamConfig : IUnknown
-{
-
- // this is the structure returned by a VIDEO filter
- //
- typedef struct _VIDEO_STREAM_CONFIG_CAPS {
-
- GUID guid; // will be MEDIATYPE_Video
-
- // the logical or of all the AnalogVideoStandard's supported
- // typically zero if not supported
- ULONG VideoStandard;
-
- // the inherent size of the incoming signal... taken from the input
- // pin for a compressor, or the largest size a capture filter can
- // digitize the signal with every pixel still unique
- SIZE InputSize;
-
- // The input of a compressor filter may have to be connected for these
- // to be known
-
- // smallest rcSrc cropping rect allowed
- SIZE MinCroppingSize;
- // largest rcSrc cropping rect allowed
- SIZE MaxCroppingSize;
- // granularity of cropping size - eg only widths a multiple of 4 allowed
- int CropGranularityX;
- int CropGranularityY;
- // alignment of cropping rect - eg rect must start on multiple of 4
- int CropAlignX;
- int CropAlignY;
-
- // The input of a compressor filter may have to be connected for these
- // to be known
-
- // smallest bitmap this pin can produce
- SIZE MinOutputSize;
- // largest bitmap this pin can produce
- SIZE MaxOutputSize;
- // granularity of output bitmap size
- int OutputGranularityX;
- int OutputGranularityY;
- // !!! what about alignment of rcTarget inside BIH if different?
-
- // how well can you stretch in the x direction? 0==not at all
- // 1=pixel doubling 2=interpolation(2 taps) 3=better interpolation
- // etc.
- int StretchTapsX;
- int StretchTapsY;
- // how well can you shrink in the x direction? 0==not at all
- // 1=pixel doubling 2=interpolation(2 taps) 3=better interpolation
- // etc.
- int ShrinkTapsX;
- int ShrinkTapsY;
-
- // CAPTURE filter only - what frame rates are allowed?
- LONGLONG MinFrameInterval;
- LONGLONG MaxFrameInterval;
-
- // what data rates can this pin produce?
- LONG MinBitsPerSecond;
- LONG MaxBitsPerSecond;
- } VIDEO_STREAM_CONFIG_CAPS;
-
-
- // this is the structure returned by an AUDIO filter
- //
- typedef struct _AUDIO_STREAM_CONFIG_CAPS {
-
- GUID guid; // will be MEDIATYPE_Audio
- ULONG MinimumChannels;
- ULONG MaximumChannels;
- ULONG ChannelsGranularity;
- ULONG MinimumBitsPerSample;
- ULONG MaximumBitsPerSample;
- ULONG BitsPerSampleGranularity;
- ULONG MinimumSampleFrequency;
- ULONG MaximumSampleFrequency;
- ULONG SampleFrequencyGranularity;
- } AUDIO_STREAM_CONFIG_CAPS;
-
- // - only allowed when pin is not streaming, else the call will FAIL
- // - If your output pin is not yet connected, and you can
- // connect your output pin with this media type, you should
- // succeed the call, and start offering it first (enumerate as format#0)
- // from GetMediaType so that this format will be used to connect with
- // when you do connect to somebody
- // - if your output pin is already connected, and you can provide this
- // type, reconnect your pin. If the other pin can't accept it, FAIL
- // this call and leave your connection alone.
- HRESULT SetFormat(
- [in] AM_MEDIA_TYPE *pmt);
-
- // the format it's connected with, or will connect with
- // the application is responsible for calling DeleteMediaType(*ppmt);
- HRESULT GetFormat(
- [out] AM_MEDIA_TYPE **ppmt);
-
- // how many different Stream Caps structures are there?
- // also, how big is the stream caps structure?
- HRESULT GetNumberOfCapabilities(
- [out] int *piCount,
- [out] int *piSize); // pSCC of GetStreamCaps needs to be this big
-
- // - gets one of the pairs of {Mediatype, Caps}
- // - return S_FALSE if iIndex is too high
- // - the application is responsible for calling DeleteMediaType(*ppmt);
- // - the first thing pSCC points to is a GUID saying MEDIATYPE_Video
- // or MEDIATYPE_Audio, so you can tell if you have a pointer to a
- // VIDEO_STREAM_CONFIG_CAPS or an AUDIO_STREAM_CONFIG_CAPS structure
- // There could potentially be many more possibilities other than video
- // or audio.
- HRESULT GetStreamCaps(
- [in] int iIndex, // 0 to #caps-1
- [out] AM_MEDIA_TYPE **ppmt,
- [out] BYTE *pSCC);
-
-}
-
-
-
-// Interface to control interleaving of different streams in one file
-[
-object,
-uuid(BEE3D220-157B-11d0-BD23-00A0C911CE86),
-pointer_default(unique)
-]
-interface IConfigInterleaving : IUnknown
-{
- import "unknwn.idl";
-
- typedef enum
- {
- // uninterleaved - samples written out in the order they
- // arrive.
- INTERLEAVE_NONE,
-
- // approximate interleaving with less overhead for video
- // capture
- INTERLEAVE_CAPTURE,
-
- // full, precise interleaving. slower.
- INTERLEAVE_FULL,
-
- // samples written out in the order they arrive. writes are
- // buffered
- INTERLEAVE_NONE_BUFFERED
-
- } InterleavingMode;
-
- HRESULT put_Mode(
- [in] InterleavingMode mode
- );
-
- HRESULT get_Mode(
- [out] InterleavingMode *pMode
- );
-
- HRESULT put_Interleaving(
- [in] const REFERENCE_TIME *prtInterleave,
- [in] const REFERENCE_TIME *prtPreroll
- );
-
- HRESULT get_Interleaving(
- [out] REFERENCE_TIME *prtInterleave,
- [out] REFERENCE_TIME *prtPreroll
- );
-}
-
-// Interface to control the AVI mux
-[
-object,
-uuid(5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6),
-pointer_default(unique)
-]
-interface IConfigAviMux : IUnknown
-{
- import "unknwn.idl";
-
- // control whether the AVI mux adjusts the frame rate or audio
- // sampling rate for drift when the file is closed. -1 to disables
- // this behavior.
- HRESULT SetMasterStream([in] LONG iStream);
- HRESULT GetMasterStream([out] LONG *pStream);
-
- // control whether the AVI mux writes out an idx1 index chunk for
- // compatibility with older AVI players.
- HRESULT SetOutputCompatibilityIndex([in] BOOL fOldIndex);
- HRESULT GetOutputCompatibilityIndex([out] BOOL *pfOldIndex);
-}
-
- //---------------------------------------------------------------------
- // CompressionCaps enum
- //---------------------------------------------------------------------
-
- // This tells you which features of IAMVideoCompression are supported
-
- // CanCrunch means that it can compress video to a specified data rate
- // If so, then the output pin's media type will contain that data rate
- // in the format's AvgBytesPerSecond field, and that should be used.
-
- typedef enum
- {
- CompressionCaps_CanQuality = 0x01,
- CompressionCaps_CanCrunch = 0x02,
- CompressionCaps_CanKeyFrame = 0x04,
- CompressionCaps_CanBFrame = 0x08,
- CompressionCaps_CanWindow = 0x10
- } CompressionCaps;
-
-
-
- //---------------------------------------------------------------------
- // IAMVideoCompression interface
- //
- // Control compression parameters - pin interface
- //---------------------------------------------------------------------
-
- // This interface is implemented by the output pin of a video capture
- // filter or video compressor that provides video data
-
- // You use this interface to control how video is compressed... how
- // many keyframes, etc., and to find information like capabilities and
- // the description of this compressor
-
- [
- object,
- uuid(C6E13343-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMVideoCompression : IUnknown
- {
- // - Only valid if GetInfo's pCapabilities sets
- // CompressionCaps_CanKeyFrame
- // - KeyFrameRate < 0 means use the compressor default
- // - KeyFrames == 0 means only the first frame is a key
- HRESULT put_KeyFrameRate (
- [in] long KeyFrameRate);
-
- HRESULT get_KeyFrameRate (
- [out] long * pKeyFrameRate);
-
- // - Only valid if GetInfo's pCapabilities sets
- // CompressionCaps_CanBFrame
- // - If keyframes are every 10, and there are 3 P Frames per key,
- // they will be spaced evenly between the key frames and the other
- // 6 frames will be B frames
- // - PFramesPerKeyFrame < 0 means use the compressor default
- HRESULT put_PFramesPerKeyFrame (
- [in] long PFramesPerKeyFrame);
-
- HRESULT get_PFramesPerKeyFrame (
- [out] long * pPFramesPerKeyFrame);
-
- // - Only valid if GetInfo's pCapabilities sets
- // CompressionCaps_CanQuality
- // - Controls image quality
- // - If you are compressing to a fixed data rate, a high quality
- // means try and use all of the data rate, and a low quality means
- // feel free to use much lower than the data rate if you want to.
- // - Quality < 0 means use the compressor default
- HRESULT put_Quality (
- [in] double Quality);
-
- HRESULT get_Quality (
- [out] double * pQuality);
-
- // If you have set a data rate of 100K/sec on a 10fps movie, that
- // will normally mean each frame must be <=10K. But a window size
- // means every consecutive n frames must average to the data rate,
- // but an individual frame (if n > 1) is allowed to exceed the
- // frame size suggested by the data rate
- HRESULT put_WindowSize (
- [in] DWORDLONG WindowSize);
-
- HRESULT get_WindowSize (
- [out] DWORDLONG * pWindowSize);
-
- // - pszVersion might be "Version 2.1.0"
- // - pszDescription might be "Danny's awesome video compressor"
- // - pcbVersion and pcbDescription will be filled in with the
- // required length if they are too short
- // - *pCapabilities is a logical OR of some CompressionCaps flags
- HRESULT GetInfo(
- [out, size_is(*pcbVersion)] WCHAR * pszVersion,
- [in,out] int *pcbVersion,
- [out, size_is(*pcbDescription)] LPWSTR pszDescription,
- [in,out] int *pcbDescription,
- [out] long *pDefaultKeyFrameRate,
- [out] long *pDefaultPFramesPerKey,
- [out] double *pDefaultQuality,
- [out] long *pCapabilities //CompressionCaps
- );
-
- // - this means when this frame number comes along after the graph
- // is running, make it a keyframe even if you weren't going to
- HRESULT OverrideKeyFrame(
- [in] long FrameNumber
- );
-
- // - Only valid if GetInfo's pCapabilities sets
- // CompressionCaps_CanCrunch
- // - this means when this frame number comes along after the graph
- // is running, make it this many bytes big instead of whatever size
- // you were going to make it.
- HRESULT OverrideFrameSize(
- [in] long FrameNumber,
- [in] long Size
- );
-
- }
-
- //---------------------------------------------------------------------
- // VfwCaptureDialogs enum
- //---------------------------------------------------------------------
-
- typedef enum
- {
- VfwCaptureDialog_Source = 0x01,
- VfwCaptureDialog_Format = 0x02,
- VfwCaptureDialog_Display = 0x04
- } VfwCaptureDialogs;
-
-
- //---------------------------------------------------------------------
- // VfwCompressDialogs enum
- //---------------------------------------------------------------------
-
- typedef enum
- {
- VfwCompressDialog_Config = 0x01,
- VfwCompressDialog_About = 0x02,
- // returns S_OK if the dialog exists and can be shown, else S_FALSE
- VfwCompressDialog_QueryConfig = 0x04,
- VfwCompressDialog_QueryAbout = 0x08
- } VfwCompressDialogs;
-
-
- //---------------------------------------------------------------------
- // IAMVfwCaptureDialogs - filter interface
- //
- // Show a VfW capture driver dialog - SOURCE, FORMAT, or DISPLAY
- //---------------------------------------------------------------------
-
- // This interface is supported only by Microsoft's Video For Windows
- // capture driver Capture Filter. It allows an application to bring up
- // one of the 3 driver dialogs that VfW capture drivers have.
-
- [
- object,
- local,
- uuid(D8D715A0-6E5E-11D0-B3F0-00AA003761C5),
- pointer_default(unique)
- ]
- interface IAMVfwCaptureDialogs : IUnknown
- {
- HRESULT HasDialog(
- [in] int iDialog // VfwCaptureDialogs enum
- );
-
- HRESULT ShowDialog(
- [in] int iDialog, // VfwCaptureDialogs enum
- [in] HWND hwnd
- );
-
- HRESULT SendDriverMessage(
- [in] int iDialog, // VfwCaptureDialogs enum
- [in] int uMsg,
- [in] long dw1,
- [in] long dw2
- );
-
- // - iDialog can be one of the VfwCaptureDialogs enums
- // - HasDialog returns S_OK if it has the dialog, else S_FALSE
- // - ShowDialog can only be called when not streaming or when another
- // dialog is not already up
- // - SendDriverMessage can send a private message to the capture driver.
- // USE IT AT YOUR OWN RISK!
- }
-
- //---------------------------------------------------------------------
- // IAMVfwCompressDialogs - filter interface
- //
- // Show a VfW codec driver dialog - CONFIG or ABOUT
- //---------------------------------------------------------------------
-
- // This interface is supported only by Microsoft's ICM Compressor filter
- // (Co). It allows an application to bring up either the Configure or
- // About dialogs for the ICM codec that it is currently using.
-
- [
- object,
- local,
- uuid(D8D715A3-6E5E-11D0-B3F0-00AA003761C5),
- pointer_default(unique)
- ]
- interface IAMVfwCompressDialogs : IUnknown
- {
-
- // Bring up a dialog for this codec
- HRESULT ShowDialog(
- [in] int iDialog, // VfwCompressDialogs enum
- [in] HWND hwnd
- );
-
- // Calls ICGetState and gives you the result
- HRESULT GetState(
- [out, size_is(*pcbState)] LPVOID pState,
- [in, out] int *pcbState
- );
-
- // Calls ICSetState
- HRESULT SetState(
- [in, size_is(cbState)] LPVOID pState,
- [in] int cbState
- );
-
- // Send a codec specific message
- HRESULT SendDriverMessage(
- [in] int uMsg,
- [in] long dw1,
- [in] long dw2
- );
-
- // - iDialog can be one of the VfwCaptureDialogs enums
- // - ShowDialog can only be called when not streaming or when no other
- // dialog is up already
- // - an application can call GetState after ShowDialog(CONFIG) to
- // see how the compressor was configured and next time the graph
- // is used, it can call SetState with the data it saved to return
- // the codec to the state configured by the dialog box from last time
- // - GetState with a NULL pointer returns the size needed
- // - SendDriverMessage can send a private message to the codec.
- // USE IT AT YOUR OWN RISK!
- }
-
-
- //---------------------------------------------------------------------
- // IAMDroppedFrames interface
- //
- // Report status of capture - pin interface
- //---------------------------------------------------------------------
-
- // A capture filter's video output pin supports this. It reports
- // how many frames were not sent (dropped), etc.
-
- // Every time your filter goes from STOPPED-->PAUSED, you reset all your
- // counts to zero.
-
- // An app may call this all the time while you are capturing to see how
- // capturing is going. MAKE SURE you always return as current information
- // as possible while you are running.
-
- // When your capture filter starts running, it starts by sending frame 0,
- // then 1, 2, 3, etc. The time stamp of each frame sent should correspond
- // to the graph clock's time when the image was digitized. The end time
- // is the start time plus the duration of the video frame.
- // You should also set the MediaTime of each sample (SetMediaTime) as well.
- // This should be the frame number ie (0,1) (1,2) (2,3).
- // If a frame is dropped, a downstream filter will be able to tell easily
- // not by looking for gaps in the regular time stamps, but by noticing a
- // frame number is missing (eg. (1,2) (2,3) (4,5) (5,6) means frame 3
- // was dropped.
-
- // Using the info provided by this interface, an application can figure out
- // the number of frames dropped, the frame rate achieved (the length of
- // time the graph was running divided by the number of frames not dropped),
- // and the data rate acheived (the length of time the graph was running
- // divided by the average frame size).
-
- // If your filter is running, then paused, and then run again, you need
- // to continue to deliver frames as if it was never paused. The first
- // frame after the second RUN cannot be time stamped earlier than the last
- // frame sent before the pause.
-
- // Your filter must always increment the MediaTime of each sample sent.
- // Never send the same frame # twice, and never go back in time. The
- // regular time stamp of a sample can also never go back in time.
-
- [
- object,
- uuid(C6E13344-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMDroppedFrames : IUnknown
- {
- // Get the number of dropped frames
- HRESULT GetNumDropped(
- [out] long * plDropped
-
- );
-
- //Get the number of non-dropped frames
- HRESULT GetNumNotDropped(
- [out] long * plNotDropped
-
- );
-
- // - plArray points to an array of lSize longs. The filter will
- // fill it with the frame number of the first lSize frames dropped.
- // A filter may not have bothered to remember as many as you asked
- // for, so it will set *plNumCopied to the number of frames it filled
- // in.
- HRESULT GetDroppedInfo(
- [in] long lSize,
- [out] long * plArray,
- [out] long * plNumCopied
- );
-
- // - This is the average size of the frames it didn't drop (in bytes)
- HRESULT GetAverageFrameSize(
- [out] long * plAverageSize
-
- );
-
- }
-
-
-
- cpp_quote("#define AMF_AUTOMATICGAIN -1.0")
-
- //---------------------------------------------------------------------
- // IAMAudioInputMixer interface
- //
- // Sets the recording levels, pan and EQ for the audio card inputs
- //---------------------------------------------------------------------
-
- // This interface is implemented by each input pin of an audio capture
- // filter, to tell it what level, panning, and EQ to use for each input.
- // The name of each pin will reflect the type of input, eg. "Line input 1"
- // or "Mic". An application uses the pin names to decide how it wants to
- // set the recording levels
-
- // This interface can also be supported by the audio capture filter itself
- // to control to overall record level and panning after the mix
-
- [
- object,
- uuid(54C39221-8380-11d0-B3F0-00AA003761C5),
- pointer_default(unique)
- ]
- interface IAMAudioInputMixer : IUnknown
- {
- // This interface is only supported by the input pins, not the filter
- // If disabled, this channel will not be mixed in as part of the
- // recorded signal.
- HRESULT put_Enable (
- [in] BOOL fEnable); // TRUE=enable FALSE=disable
-
- //Is this channel enabled?
- HRESULT get_Enable (
- [out] BOOL *pfEnable);
-
- // When set to mono mode, making a stereo recording of this channel
- // will have both channels contain the same data... a mixture of the
- // left and right signals
- HRESULT put_Mono (
- [in] BOOL fMono); // TRUE=mono FALSE=multi channel
-
- //all channels combined into a mono signal?
- HRESULT get_Mono (
- [out] BOOL *pfMono);
-
- // !!! WILL CARDS BE ABLE TO BOOST THE GAIN?
- //Set the record level for this channel
- HRESULT put_MixLevel (
- [in] double Level); // 0 = off, 1 = full (unity?) volume
- // AMF_AUTOMATICGAIN, if supported,
- // means automatic
-
- //Get the record level for this channel
- HRESULT get_MixLevel (
- [out] double *pLevel);
-
- // For instance, when panned full left, and you make a stereo recording
- // of this channel, you will record a silent right channel.
- HRESULT put_Pan (
- [in] double Pan); // -1 = full left, 0 = centre, 1 = right
-
- //Get the pan for this channel
- HRESULT get_Pan (
- [out] double *pPan);
-
- // Boosts the bass of low volume signals before they are recorded
- // to compensate for the fact that your ear has trouble hearing quiet
- // bass sounds
- HRESULT put_Loudness (
- [in] BOOL fLoudness);// TRUE=on FALSE=off
-
- HRESULT get_Loudness (
- [out] BOOL *pfLoudness);
-
- // boosts or cuts the treble of the signal before it's recorded by
- // a certain amount of dB
- HRESULT put_Treble (
- [in] double Treble); // gain in dB (-ve = attenuate)
-
- //Get the treble EQ for this channel
- HRESULT get_Treble (
- [out] double *pTreble);
-
- // This is the maximum value allowed in put_Treble. ie 6.0 means
- // any value between -6.0 and 6.0 is allowed
- HRESULT get_TrebleRange (
- [out] double *pRange); // largest value allowed
-
- // boosts or cuts the bass of the signal before it's recorded by
- // a certain amount of dB
- HRESULT put_Bass (
- [in] double Bass); // gain in dB (-ve = attenuate)
-
- // Get the bass EQ for this channel
- HRESULT get_Bass (
- [out] double *pBass);
-
- // This is the maximum value allowed in put_Bass. ie 6.0 means
- // any value between -6.0 and 6.0 is allowed
- HRESULT get_BassRange (
- [out] double *pRange); // largest value allowed
-
- }
-
-
- //---------------------------------------------------------------------
- // IAMBufferNegotiation interface
- //
- // Tells a pin what kinds of buffers to use when connected
- //---------------------------------------------------------------------
-
- // This interface can be implemented by any pin that will connect to
- // another pin using IMemInputPin. All capture filters should support
- // this interface.
-
- // SuggestAllocatorProperties is a way for an application to get
- // in on the buffer negotiation process for a pin. This pin will use
- // the numbers given to it by the application as its request to the
- // allocator. An application can use a negative number for any element
- // in the ALLOCATOR_PROPERTIES to mean "don't care". An application must
- // call this function before the pin is connected, or it will be too late
- // To ensure that an application gets what it wants, it would be wise to
- // call this method on both pins being connected together, so the other
- // pin doesn't overrule the application's request.
-
- // GetAllocatorProperties can only be called after a pin is connected and
- // it returns the properties of the current allocator being used
-
- [
- object,
- uuid(56ED71A0-AF5F-11D0-B3F0-00AA003761C5),
- pointer_default(unique)
- ]
- interface IAMBufferNegotiation : IUnknown
- {
- HRESULT SuggestAllocatorProperties (
- [in] const ALLOCATOR_PROPERTIES *pprop);
-
- HRESULT GetAllocatorProperties (
- [out] ALLOCATOR_PROPERTIES *pprop);
-
- }
-
-
- //---------------------------------------------------------------------
- // AnalogVideoStandard enum
- //---------------------------------------------------------------------
-
- typedef enum tagAnalogVideoStandard
- {
- AnalogVideo_None = 0x00000000, // This is a digital sensor
- AnalogVideo_NTSC_M = 0x00000001, // 75 IRE Setup
- AnalogVideo_NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup
- AnalogVideo_NTSC_433 = 0x00000004,
-
- AnalogVideo_PAL_B = 0x00000010,
- AnalogVideo_PAL_D = 0x00000020,
- AnalogVideo_PAL_G = 0x00000040,
- AnalogVideo_PAL_H = 0x00000080,
- AnalogVideo_PAL_I = 0x00000100,
- AnalogVideo_PAL_M = 0x00000200,
- AnalogVideo_PAL_N = 0x00000400,
-
- AnalogVideo_PAL_60 = 0x00000800,
-
- AnalogVideo_SECAM_B = 0x00001000,
- AnalogVideo_SECAM_D = 0x00002000,
- AnalogVideo_SECAM_G = 0x00004000,
- AnalogVideo_SECAM_H = 0x00008000,
- AnalogVideo_SECAM_K = 0x00010000,
- AnalogVideo_SECAM_K1 = 0x00020000,
- AnalogVideo_SECAM_L = 0x00040000,
- AnalogVideo_SECAM_L1 = 0x00080000,
-
- AnalogVideo_PAL_N_COMBO // Argentina
- = 0x00100000
- } AnalogVideoStandard;
-
- cpp_quote("#define AnalogVideo_NTSC_Mask 0x00000007")
- cpp_quote("#define AnalogVideo_PAL_Mask 0x00100FF0")
- cpp_quote("#define AnalogVideo_SECAM_Mask 0x000FF000")
-
-
- //---------------------------------------------------------------------
- // TunerInputType enum
- //---------------------------------------------------------------------
-
- typedef enum tagTunerInputType
- {
- TunerInputCable,
- TunerInputAntenna
- } TunerInputType;
-
- //---------------------------------------------------------------------
- // VideoCopyProtectionType enum
- //---------------------------------------------------------------------
-
- typedef enum
- {
- VideoCopyProtectionMacrovisionBasic,
- VideoCopyProtectionMacrovisionCBI
- } VideoCopyProtectionType;
-
- //---------------------------------------------------------------------
- // PhysicalConnectorType enum
- //---------------------------------------------------------------------
-
- typedef enum tagPhysicalConnectorType
- {
- PhysConn_Video_Tuner = 1,
- PhysConn_Video_Composite,
- PhysConn_Video_SVideo,
- PhysConn_Video_RGB,
- PhysConn_Video_YRYBY,
- PhysConn_Video_SerialDigital,
- PhysConn_Video_ParallelDigital,
- PhysConn_Video_SCSI,
- PhysConn_Video_AUX,
- PhysConn_Video_1394,
- PhysConn_Video_USB,
- PhysConn_Video_VideoDecoder,
- PhysConn_Video_VideoEncoder,
- PhysConn_Video_SCART,
- PhysConn_Video_Black,
-
-
- PhysConn_Audio_Tuner = 0x1000,
- PhysConn_Audio_Line,
- PhysConn_Audio_Mic,
- PhysConn_Audio_AESDigital,
- PhysConn_Audio_SPDIFDigital,
- PhysConn_Audio_SCSI,
- PhysConn_Audio_AUX,
- PhysConn_Audio_1394,
- PhysConn_Audio_USB,
- PhysConn_Audio_AudioDecoder,
- } PhysicalConnectorType;
-
-
-
-
- //---------------------------------------------------------------------
- // IAMAnalogVideoDecoder interface
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(C6E13350-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMAnalogVideoDecoder : IUnknown
- {
-
- //Gets the supported analog video standards (NTSC/M, PAL/B, SECAM/K1...
- HRESULT get_AvailableTVFormats(
- [out] long *lAnalogVideoStandard
- );
-
- //Sets or gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...
- HRESULT put_TVFormat(
- [in] long lAnalogVideoStandard
- );
-
- // Sets or gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...
- HRESULT get_TVFormat(
- [out] long * plAnalogVideoStandard
- );
-
- // True if horizontal sync is locked
- HRESULT get_HorizontalLocked (
- [out] long * plLocked);
-
- // True if connected to a VCR (changes PLL timing)
- HRESULT put_VCRHorizontalLocking (
- [in] long lVCRHorizontalLocking);
-
- HRESULT get_VCRHorizontalLocking (
- [out] long * plVCRHorizontalLocking);
-
- // Returns the number of lines in the video signal")]
- HRESULT get_NumberOfLines (
- [out] long *plNumberOfLines);
-
- // Enables or disables the output bus
- HRESULT put_OutputEnable (
- [in] long lOutputEnable);
-
- HRESULT get_OutputEnable (
- [out] long *plOutputEnable);
-
- }
-
-
- //---------------------------------------------------------------------
- // VideoProcAmp Property enum
- //---------------------------------------------------------------------
-
- typedef enum tagVideoProcAmpProperty
- {
- VideoProcAmp_Brightness,
- VideoProcAmp_Contrast,
- VideoProcAmp_Hue,
- VideoProcAmp_Saturation,
- VideoProcAmp_Sharpness,
- VideoProcAmp_Gamma,
- VideoProcAmp_ColorEnable,
- VideoProcAmp_WhiteBalance,
- VideoProcAmp_BacklightCompensation,
- VideoProcAmp_Gain
- } VideoProcAmpProperty;
-
- //---------------------------------------------------------------------
- // VideoProcAmp Flags enum
- //---------------------------------------------------------------------
-
- typedef enum tagVideoProcAmpFlags
- {
- VideoProcAmp_Flags_Auto = 0x0001,
- VideoProcAmp_Flags_Manual = 0x0002
- } VideoProcAmpFlags;
-
- //---------------------------------------------------------------------
- // IAMVideoProcAmp interface
- //
- // Adjusts video quality in either the analog or digital domain.
- //
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(C6E13360-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMVideoProcAmp : IUnknown
- {
- // Returns min, max, step size, and default values
- HRESULT GetRange(
- [in] long Property, // Which property to query
- [out] long * pMin, // Range minimum
- [out] long * pMax, // Range maxumum
- [out] long * pSteppingDelta,// Step size
- [out] long * pDefault, // Default value
- [out] long * pCapsFlags // VideoProcAmpFlags
-
- );
-
- // Set a VideoProcAmp property
- HRESULT Set(
- [in] long Property, // VideoProcAmpProperty
- [in] long lValue, // Value to set
- [in] long Flags // VideoProcAmp_Flags_*
-
- );
-
- // Get a VideoProcAmp property
- HRESULT Get(
- [in] long Property, // VideoProcAmpProperty
- [out] long * lValue, // Current value
- [out] long * Flags // VideoProcAmp_Flags_*
- );
- }
-
-
- //---------------------------------------------------------------------
- // CameraControl Property enum
- //---------------------------------------------------------------------
-
- typedef enum tagCameraControlProperty
- {
- CameraControl_Pan,
- CameraControl_Tilt,
- CameraControl_Roll,
- CameraControl_Zoom,
- CameraControl_Exposure,
- CameraControl_Iris,
- CameraControl_Focus
- } CameraControlProperty;
-
- //---------------------------------------------------------------------
- // CameraControl Flags enum
- //---------------------------------------------------------------------
-
- typedef enum tagCameraControlFlags
- {
- CameraControl_Flags_Auto = 0x0001,
- CameraControl_Flags_Manual = 0x0002
- } CameraControlFlags;
-
- //---------------------------------------------------------------------
- // IAMCameraControl interface
- //
- // Control of local or remote cameras
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(C6E13370-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMCameraControl : IUnknown
- {
- // Returns min, max, step size, and default values
- HRESULT GetRange(
- [in] long Property, // Which property to query
- [out] long * pMin, // Range minimum
- [out] long * pMax, // Range maxumum
- [out] long * pSteppingDelta,// Step size
- [out] long * pDefault, // Default value
- [out] long * pCapsFlags // CamaeraControlFlags
-
- );
-
- // Set a CameraControl property
- HRESULT Set(
- [in] long Property, // CameraControlProperty
- [in] long lValue, // Value to set
- [in] long Flags // CameraControl_Flags_*
-
- );
-
- // Get a CameraControl property
- HRESULT Get(
- [in] long Property, // CameraControlProperty
- [out] long * lValue, // Current value
- [out] long * Flags // CameraControl_Flags_*
- );
- }
-
- //---------------------------------------------------------------------
- // VideoControl Flags enum
- //---------------------------------------------------------------------
-
- typedef enum tagVideoControlFlags
- {
- VideoControlFlag_FlipHorizontal = 0x0001,
- VideoControlFlag_FlipVertical = 0x0002,
- VideoControlFlag_ExternalTriggerEnable = 0x0004,
- VideoControlFlag_Trigger = 0x0008
-
- } VideoControlFlags;
-
- //---------------------------------------------------------------------
- // IAMVideoControl interface
- //
- // Control of horizontal & vertical flip, external trigger,
- // and listing available frame rates
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
- pointer_default(unique)
- ]
- interface IAMVideoControl : IUnknown
- {
- // What can the underlying hardware do?
- HRESULT GetCaps(
- [in] IPin * pPin, // the pin to query or control
- [out] long * pCapsFlags // VideoControlFlag_*
-
- );
-
- // Set the mode of operation
- HRESULT SetMode(
- [in] IPin * pPin, // the pin to query or control
- [in] long Mode // VideoControlFlag_*
-
- );
-
- // Get the mode of operation
- HRESULT GetMode(
- [in] IPin * pPin, // the pin to query or control
- [out] long * Mode // VideoControlFlag_*
- );
-
- // Get actual frame rate info for USB and 1394
- // This is only available when streaming
- HRESULT GetCurrentActualFrameRate(
- [in] IPin * pPin, // the pin to query or control
- [out] LONGLONG * ActualFrameRate // 100 nS units
- );
-
- // Get max available frame rate info for USB and 1394
- // Returns the max frame rate currently available based on bus bandwidth usage
- HRESULT GetMaxAvailableFrameRate(
- [in] IPin * pPin, // the pin to query or control
- [in] long iIndex, // 0 to IAMStreamConfig->GetNumberOfCapabilities-1
- [in] SIZE Dimensions, // width and height
- [out] LONGLONG * MaxAvailableFrameRate // 100 nS units
- );
-
- // Get List of available frame rates
- HRESULT GetFrameRateList(
- [in] IPin * pPin, // the pin to query or control
- [in] long iIndex, // 0 to IAMStreamConfig->GetNumberOfCapabilities-1
- [in] SIZE Dimensions, // width and height
- [out] long * ListSize, // Number of elements in the list
- [out] LONGLONG ** FrameRates // Array of framerates in 100 nS units
- // or NULL to just get ListSize
- );
-
- }
-
-
- //---------------------------------------------------------------------
- // IAMCrossbar interface
- //
- // Controls a routing matrix for analog or digital video or audio
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(C6E13380-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMCrossbar : IUnknown
- {
-
- // How many pins are there?
- HRESULT get_PinCounts(
- [out] long * OutputPinCount, // count of output pins
- [out] long * InputPinCount); // count of input pins
-
- // True if routing is possible
- HRESULT CanRoute (
- [in] long OutputPinIndex, // the output pin
- [in] long InputPinIndex); // the input pin
-
- // Routes an input pin to an output pin
- HRESULT Route (
- [in] long OutputPinIndex, // the output pin
- [in] long InputPinIndex); // the input pin
-
- // Returns the input pin connected to a given output pin
- HRESULT get_IsRoutedTo (
- [in] long OutputPinIndex, // the output pin
- [out] long * InputPinIndex); // the connected input pin
-
- // Returns a pin which is related to a given pin
- // (ie. this audio pin is related to a video pin)
- HRESULT get_CrossbarPinInfo (
- [in] BOOL IsInputPin, // TRUE for input pins
- [in] long PinIndex, // a pin
- [out] long * PinIndexRelated, // Index of related pin
- [out] long * PhysicalType); // Physical type of pin
-
- }
-
-
- //---------------------------------------------------------------------
- // IAMTuner interface
- //
- // base tuner device
- //---------------------------------------------------------------------
-
- // predefined subchannel values
- typedef enum tagAMTunerSubChannel
- {
- AMTUNER_SUBCHAN_NO_TUNE = -2, // don't tune
- AMTUNER_SUBCHAN_DEFAULT = -1 // use default sub chan
- } AMTunerSubChannel;
-
- // predefined signal strength values
- typedef enum tagAMTunerSignalStrength
- {
- AMTUNER_HASNOSIGNALSTRENGTH = -1, // cannot indicate signal strength
- AMTUNER_NOSIGNAL = 0, // no signal available
- AMTUNER_SIGNALPRESENT = 1 // signal present
- } AMTunerSignalStrength;
-
- // specifies the mode of operation of the tuner
- typedef enum tagAMTunerModeType
- {
- AMTUNER_MODE_DEFAULT = 0x0000, // default tuner mode
- AMTUNER_MODE_TV = 0x0001, // tv
- AMTUNER_MODE_FM_RADIO = 0x0002, // fm radio
- AMTUNER_MODE_AM_RADIO = 0x0004, // am radio
- AMTUNER_MODE_DSS = 0x0008, // dss
- } AMTunerModeType;
-
- // Events reported by IAMTunerNotification
- typedef enum tagAMTunerEventType{
- AMTUNER_EVENT_CHANGED = 0x0001, // status changed
- } AMTunerEventType;
-
- interface IAMTunerNotification;
-
- [
- object,
- uuid(211A8761-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IAMTuner : IUnknown
- {
- // Sets and gets the Channel
- HRESULT put_Channel(
- [in] long lChannel,
- [in] long lVideoSubChannel,
- [in] long lAudioSubChannel
- );
- HRESULT get_Channel(
- [out] long *plChannel,
- [out] long *plVideoSubChannel,
- [out] long *plAudioSubChannel
- );
-
- // Gets the minimum and maximum channel available
- HRESULT ChannelMinMax(
- [out] long *lChannelMin,
- [out] long *lChannelMax
- );
-
- // CountryCode is the same as the international
- // long distance telephone dialing prefix
-
- HRESULT put_CountryCode(
- [in] long lCountryCode
- );
- HRESULT get_CountryCode(
- [out] long *plCountryCode
- );
-
- HRESULT put_TuningSpace(
- [in] long lTuningSpace
- );
- HRESULT get_TuningSpace(
- [out] long *plTuningSpace
- );
-
- [local] HRESULT Logon(
- [in] HANDLE hCurrentUser
- );
- HRESULT Logout();
-
- // Signal status for current channel
- // signal strength == TUNER_NOSIGNAL, or strength value
- HRESULT SignalPresent(
- [out] long * plSignalStrength // AMTunerSignalStrength
- );
-
- // allow multifunction tuner to be switch between modes
- HRESULT put_Mode(
- [in] AMTunerModeType lMode // AMTunerModeType
- );
- HRESULT get_Mode(
- [out] AMTunerModeType *plMode // AMTunerModeType
- );
-
- // retrieve a bitmask of the possible modes
- HRESULT GetAvailableModes(
- [out] long *plModes // AMTunerModeType
- );
-
- // allow IAMTuner clients to receive event notification
- HRESULT RegisterNotificationCallBack(
- [in] IAMTunerNotification *pNotify,
- [in] long lEvents // bitmask from AMTunerEventType enumeration
- );
- HRESULT UnRegisterNotificationCallBack(
- [in] IAMTunerNotification *pNotify
- );
- }
-
- //---------------------------------------------------------------------
- // IAMTunerNotification interface
- //
- // Provided to IAMTuner if notification callbacks are desired
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(211A8760-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IAMTunerNotification : IUnknown
- {
- HRESULT OnEvent([in] AMTunerEventType Event);
- }
-
-
- //---------------------------------------------------------------------
- // IAMTVTuner interface
- //
- // Controls an analog TV tuner device
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(211A8766-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IAMTVTuner : IAMTuner
- {
- // Gets the supported analog video standards (NTSC/M, PAL/B, SECAM/K1, ...
- HRESULT get_AvailableTVFormats(
- [out] long *lAnalogVideoStandard
- );
-
- // Gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...)
- HRESULT get_TVFormat(
- [out] long * plAnalogVideoStandard
- );
-
- // Scans for a signal on a given channel
- // NOTE: this is equivalent to put_Channel(), SignalStrength()
- HRESULT AutoTune(
- [in] long lChannel,
- [out] long * plFoundSignal
- );
-
- // Saves the fine tuning information for all channels")]
- HRESULT StoreAutoTune();
-
- // The number of TV sources plugged into the tuner
- HRESULT get_NumInputConnections(
- [out] long * plNumInputConnections
- );
-
- // Sets or gets the tuner input type (Cable or Antenna)
- HRESULT put_InputType(
- [in] long lIndex,
- [in] TunerInputType InputType
- );
- HRESULT get_InputType(
- [in] long lIndex,
- [out] TunerInputType * pInputType
- );
-
- // Sets or gets the tuner input
- HRESULT put_ConnectInput(
- [in] long lIndex
- );
- HRESULT get_ConnectInput(
- [out] long *plIndex
- );
-
- // Gets the video and audio carrier frequencies
- HRESULT get_VideoFrequency(
- [out] long *lFreq
- );
- HRESULT get_AudioFrequency(
- [out] long *lFreq
- );
- }
-
-
- //---------------------------------------------------------------------
- // IBPCSatelliteTuner interface
- //
- // An interface supporting Satellite tuning-related functions
- //---------------------------------------------------------------------
- [
- object,
- local,
- uuid(211A8765-03AC-11d1-8D13-00AA00BD8339),
- pointer_default(unique)
- ]
- interface IBPCSatelliteTuner : IAMTuner
- {
- HRESULT get_DefaultSubChannelTypes(
- [out] long *plDefaultVideoType, // Provider-specific service type
- [out] long *plDefaultAudioType // Provider-specific service type
- );
-
- HRESULT put_DefaultSubChannelTypes(
- [in] long lDefaultVideoType, // Provider-specific service type
- [in] long lDefaultAudioType // Provider-specific service type
- );
-
- HRESULT IsTapingPermitted(); // S_OK yes, S_FALSE no
- }
-
-
-
- //---------------------------------------------------------------------
- // IAMTVAudio interface
- //
- // TV Audio control
- //---------------------------------------------------------------------
-
- typedef enum tagTVAudioMode
- {
- AMTVAUDIO_MODE_MONO = 0x0001, // Mono
- AMTVAUDIO_MODE_STEREO = 0x0002, // Stereo
- AMTVAUDIO_MODE_LANG_A = 0x0010, // Primary language
- AMTVAUDIO_MODE_LANG_B = 0x0020, // 2nd avail language
- AMTVAUDIO_MODE_LANG_C = 0x0040, // 3rd avail language
- } TVAudioMode;
-
- // Events reported by IAMTVAudioNotification
- typedef enum tagAMTVAudioEventType
- {
- AMTVAUDIO_EVENT_CHANGED = 0x0001, // mode changed
- } AMTVAudioEventType;
-
- interface IAMTVAudioNotification;
-
- [
- object,
- local,
- uuid(83EC1C30-23D1-11d1-99E6-00A0C9560266),
- pointer_default(unique)
- ]
- interface IAMTVAudio : IUnknown
- {
- // retrieve a bitmask of the formats available in the hardware
- HRESULT GetHardwareSupportedTVAudioModes(
- [out] long *plModes // TVAudioMode
- );
-
- // retrieve a bitmask of the possible modes
- HRESULT GetAvailableTVAudioModes(
- [out] long *plModes // TVAudioMode
- );
-
- HRESULT get_TVAudioMode(
- [out] long *plMode // TVAudioMode
- );
- HRESULT put_TVAudioMode(
- [in] long lMode // TVAudioMode
- );
-
- // allow IAMTVAudio clients to receive event notification
- HRESULT RegisterNotificationCallBack(
- [in] IAMTunerNotification *pNotify,
- [in] long lEvents // bitmask from AMTVAudioEventType enumeration
- );
- HRESULT UnRegisterNotificationCallBack(
- IAMTunerNotification *pNotify
- );
- }
-
- //---------------------------------------------------------------------
- // IAMTVAudioNotification interface
- //
- // Provided to IAMTVAudio clients if notification callbacks are desired
- //---------------------------------------------------------------------
-
- [
- object,
- local,
- uuid(83EC1C33-23D1-11d1-99E6-00A0C9560266),
- pointer_default(unique)
- ]
- interface IAMTVAudioNotification : IUnknown
- {
- HRESULT OnEvent([in] AMTVAudioEventType Event);
- }
-
-
-
-
- //---------------------------------------------------------------------
- // IAMAnalogVideoEncoder interface
- //---------------------------------------------------------------------
-
- [
- object,
- uuid(C6E133B0-30AC-11d0-A18C-00A0C9118956),
- pointer_default(unique)
- ]
- interface IAMAnalogVideoEncoder : IUnknown
- {
- // Gets the supported analog video standards (NTSC/M, PAL/B, SECAM/K1, ...)
- HRESULT get_AvailableTVFormats(
- [out] long *lAnalogVideoStandard
- );
-
- // Sets or gets the current analog video standard (NTSC/M, PAL/B, SECAM/K1, ...)
- HRESULT put_TVFormat(
- [in] long lAnalogVideoStandard
- );
-
- HRESULT get_TVFormat(
- [out] long * plAnalogVideoStandard
- );
-
- // Sets or gets the copy protection
- HRESULT put_CopyProtection (
- [in] long lVideoCopyProtection); // VideoCopyProtectionType
-
- HRESULT get_CopyProtection (
- [out] long *lVideoCopyProtection); // VideoCopyProtectionType
-
-
- // Enables and disables close captioning
- HRESULT put_CCEnable (
- [in] long lCCEnable);
-
- HRESULT get_CCEnable (
- [out] long *lCCEnable);
-
- }
-
- // used by IKsPropertySet set AMPROPSETID_Pin
- typedef enum {
- AMPROPERTY_PIN_CATEGORY,
- AMPROPERTY_PIN_MEDIUM
- } AMPROPERTY_PIN;
-
- //---------------------------------------------------------------------
- // IKsPropertySet interface
- //
- // Sets or gets a property identified by a property set GUID and a
- // property ID.
- //
- // Return codes for all 3 methods:
- // E_PROP_SET_UNSUPPORTED the property set is not supported
- // E_PROP_ID_UNSUPPORTED the property ID is not supported
- // for the specified property set
- //---------------------------------------------------------------------
-
-cpp_quote("#ifndef _IKsPropertySet_")
-cpp_quote("#define _IKsPropertySet_")
-
- //---------------------------------------------------------------------
- // #defines for IKsPropertySet::QuerySupported return result in pTypeSupport
- //---------------------------------------------------------------------
-
-cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
-cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
-
-
- [
- object,
- uuid(31EFAC30-515C-11d0-A9AA-00AA0061BE93),
- pointer_default(unique)
- ]
- interface IKsPropertySet : IUnknown
- {
- [local] HRESULT Set(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] LPVOID pInstanceData,
- [in] DWORD cbInstanceData,
- [in, size_is(cbPropData)] LPVOID pPropData,
- [in] DWORD cbPropData);
-
- [call_as(Set)] HRESULT RemoteSet(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] byte * pInstanceData,
- [in] DWORD cbInstanceData,
- [in, size_is(cbPropData)] byte * pPropData,
- [in] DWORD cbPropData);
-
- // To get a property, the caller allocates a buffer which the called
- // function fills in. To determine necessary buffer size, call Get with
- // pPropData=NULL and cbPropData=0.
- [local] HRESULT Get(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] LPVOID pInstanceData,
- [in] DWORD cbInstanceData,
- [out, size_is(cbPropData)] LPVOID pPropData,
- [in] DWORD cbPropData,
- [out] DWORD * pcbReturned);
-
- [call_as(Get)] HRESULT RemoteGet(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [in, size_is(cbInstanceData)] byte * pInstanceData,
- [in] DWORD cbInstanceData,
- [out, size_is(cbPropData)] byte * pPropData,
- [in] DWORD cbPropData,
- [out] DWORD * pcbReturned);
- // QuerySupported must either return E_NOTIMPL or correctly indicate
- // if getting or setting the property set and property is supported.
- // S_OK indicates the property set and property ID combination is
- HRESULT QuerySupported(
- [in] REFGUID guidPropSet,
- [in] DWORD dwPropID,
- [out] DWORD *pTypeSupport);
- }
-cpp_quote("#endif // _IKsPropertySet_")
-
-[
-object,
-uuid(6025A880-C0D5-11d0-BD4E-00A0C911CE86),
-pointer_default(unique)
-]
-interface IMediaPropertyBag : IPropertyBag
-{
- import "ocidl.idl";
-
- typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG;
-
- // return the i'th element in the property bag
- HRESULT EnumProperty(
- [in] ULONG iProperty,
- [in, out] VARIANT * pvarPropertyName,
- [in, out] VARIANT * pvarPropertyValue
- );
-
-}
-
-
-[
-object,
-uuid(5738E040-B67F-11d0-BD4D-00A0C911CE86),
-pointer_default(unique)
-]
-interface IPersistMediaPropertyBag : IPersist
-{
- import "ocidl.idl";
- import "unknwn.idl";
-
- HRESULT InitNew(
- void
- );
-
- HRESULT Load(
- [in] IMediaPropertyBag * pPropBag,
- [in] IErrorLog * pErrorLog
- );
-
- HRESULT Save(
- [in] IMediaPropertyBag * pPropBag,
- [in] BOOL fClearDirty,
- [in] BOOL fSaveAllProperties
- );
-
-
- typedef IPersistMediaPropertyBag * LPPERSISTMEDIAPROPERTYBAG;
-}
-
-
- //---------------------------------------------------------------------
- //
- // Defines IAMPhysicalPinInfo Interface
- //
- // Returns an enum and string that describes an input pin's physical type.
- //
- // Implement if: you have physical input pins such as video or audio (like
- // on a video capture card or a VCR)
- //
- // Use if: you want to communicate to a user available physical input pins
- // and allow them to select the active one if there is more than one
- //---------------------------------------------------------------------
-
-
-[
- object,
- uuid(F938C991-3029-11cf-8C44-00AA006B6814),
- pointer_default(unique)
- ]
-interface IAMPhysicalPinInfo : IUnknown {
-
- // Returns VFW_E_NO_ACCEPTABLE_TYPES if not a physical pin
- HRESULT GetPhysicalType(
- [out] long *pType, // the enum representing the Physical Type
- [out] LPOLESTR *ppszType // a friendly name
- );
-}
-typedef IAMPhysicalPinInfo *PAMPHYSICALPININFO;
-
- //---------------------------------------------------------------------
- // Defines IAMExtDevice Interface
- //
- // Base interface for external professional devices
- //
- // Implement if: the filter controls an external device such as a VCR,
- // timecode reader/generator, etc. The intent is to build a object from
- // this implementation plus another that specifically describes the device,
- // such as IAMExtTransport.
- //
- // Use if: you want to control and external device such as a VCR
- //
- // See edevdefs.h for the enumerated parameter list
- //---------------------------------------------------------------------
- [
- object,
- uuid(B5730A90-1A2C-11cf-8C23-00AA006B6814),
- pointer_default(unique)
- ]
- interface IAMExtDevice : IUnknown
- {
- // General device capabilities property. See edevdefs.h for supported
- // values
- HRESULT GetCapability(
- [in] long Capability, // identify the property
- [out] long *pValue, // return value
- [out] double *pdblValue // return value
- );
-
- // Get external device identification string. Usually the model #
- // of the device
- HRESULT get_ExternalDeviceID(
- [out] LPOLESTR *ppszData // ID string
- );
-
- HRESULT get_ExternalDeviceVersion(
- [out] LPOLESTR *ppszData // revision string
- );
-
- // Controls the external device's power mode
- HRESULT put_DevicePower([in] long PowerMode
- );
- HRESULT get_DevicePower([out] long *pPowerMode
- );
-
- // Some devices need to be reset in some way, i.e., rewinding a VCR
- // to the beginning of the tape and resetting the counter to zero.
- HRESULT Calibrate(
- [in] HEVENT hEvent,
- [in] long Mode,
- [out] long *pStatus // OATRUE is active, OAFALSE is inactive
- );
-
- // Selects the device's communications port, i.e.,COM1, IEEE1394, etc.
- // See edevdefs.h for enums
- HRESULT put_DevicePort([in] long DevicePort
- );
- HRESULT get_DevicePort([out] long *pDevicePort
- );
-
-}
-typedef IAMExtDevice *PEXTDEVICE;
-
- //---------------------------------------------------------------------
- // Defines IAMExtTransport Interface
- //
- // Contains properties and methods that control behavior of an external
- // transport device such as a VTR
- //
- // Implement if: you control such a device. Intended to be agregated
- // with IAMExtDevice.
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //---------------------------------------------------------------------
-[
- object,
- uuid(A03CD5F0-3045-11cf-8C44-00AA006B6814),
- pointer_default(unique)
- ]
-interface IAMExtTransport : IUnknown {
-
- // General transport capabilities property. See edevdefs.h for enums
- HRESULT GetCapability(
- [in] long Capability, // identify the property
- [out] long *pValue, // return value
- [out] double *pdblValue // return value
- );
-
- // For disc-based devices: spinning, or not spinning.
- // For tape-based device: threaded, unthreaded or ejected
- HRESULT put_MediaState([in] long State
- );
- HRESULT get_MediaState([out] long *pState // see edevdefs.h
- );
-
- // Determines state of unit's front panel
- HRESULT put_LocalControl([in] long State
- );
- HRESULT get_LocalControl([out] long *pState // OATRUE or OAFALSE
- );
-
- // Transport status such as Play, Stop, etc. More extensive
- // than AM states.
- HRESULT GetStatus(
- [in] long StatusItem, // see edevdefs.h
- [out] long *pValue
- );
-
- // Parameters such as recording speed, servo reference, ballistics, etc.
- HRESULT GetTransportBasicParameters(
- [in] long Param,
- [out] long *pValue,
- [out] LPOLESTR *ppszData
- );
-
- HRESULT SetTransportBasicParameters(
- [in] long Param,
- [in] long Value,
- [in] LPCOLESTR pszData
- );
-
- // Parameters such as video output mode
- HRESULT GetTransportVideoParameters(
- [in] long Param,
- [out] long *pValue
- );
-
- HRESULT SetTransportVideoParameters(
- [in] long Param,
- [in] long Value
- );
-
- // Parameters such as audio channel enable
- HRESULT GetTransportAudioParameters(
- [in] long Param,
- [out] long *pValue
- );
-
- HRESULT SetTransportAudioParameters(
- [in] long Param,
- [in] long Value
- );
-
- // Mode is the movement of the transport, i.e., Play, Stop,
- // Record, Edit, etc.
- HRESULT put_Mode([in] long Mode
- );
- HRESULT get_Mode([out] long *pMode
- );
-
- // Rate is for variable speed control of the the device. This
- // can be linked to IMediaControl::Rate() in the implementation
- // if desired.
- HRESULT put_Rate([in] double dblRate
- );
- HRESULT get_Rate([out] double *pdblRate
- );
-
- // This is a lengthy method, that is, it is in effect until canceled or complete and
- // requires housekeeping by the filter. It puts transport in play mode and maintains
- // fixed relationship between master time reference and transport position.
- HRESULT GetChase(
- [out] long *pEnabled, // OATRUE | OAFALSE
- [out] long *pOffset, // offset in current time format
- [out] HEVENT *phEvent // completion notification
- );
- HRESULT SetChase(
- [in] long Enable, // OATRUE | OAFALSE
- [in] long Offset, // offset in current time format
- [in] HEVENT hEvent // completion notification
- );
-
- // Also a lengthy method: temporarily change transport speed (for synchronizing).
- HRESULT GetBump(
- [out] long *pSpeed,
- [out] long *pDuration // in current time format
- );
- HRESULT SetBump(
- [in] long Speed,
- [in] long Duration // in current time format
- );
-
- // Enable/Disable transport anti-headclog control.
- HRESULT get_AntiClogControl([out] long *pEnabled // OATRUE | OAFALSE
- );
- HRESULT put_AntiClogControl([in] long Enable // OATRUE | OAFALSE
- );
-
- // The following group of properties describes edit events. An edit event can be a
- // standard insert or assemble edit or a memorized position called a bookmark.
- // A NOTE ABOUT EVENTS: as with all lengthy commands, event objects must be created to
- // signal completion or error.
-
- // Intended usage: an edit event is prepared for use by:
- // 1. Registering an edit property set and getting an EditID
- // 2. Setting the necessary edit properties
- // 3. Setting the edit property set active
-
- // Please see edevdefs.h for properties and values
-
- // The reference clock's advance is the mechanism that puts an edit in motion (see
- // ED_EDIT_REC_INPOINT).
-
- // Property set methods
- HRESULT GetEditPropertySet(
- [in] long EditID,
- [out] long *pState // ED_SET_ACTIVE | ED_SET_INACTIVE | ED_SET_INVALID
- // | ED_SET_EXECUTING
- );
-
- HRESULT SetEditPropertySet(
- [in, out] long *pEditID,
- [in] long State // ED_SET_REGISTER | ED_SET_DELETE | ED_SET_ACTIVE |
- ); // ED_SET_INACTIVE
-
- // the following properties define an edit event such as a bookmark, seek point, or
- // actual edit
- HRESULT GetEditProperty(
- [in] long EditID,
- [in] long Param,
- [out] long *pValue
- );
- HRESULT SetEditProperty(
- [in] long EditID,
- [in] long Param,
- [in] long Value
- );
-
- // Activates a capable transport's edit control (typically used for "on the fly" editing).
- HRESULT get_EditStart([out] long *pValue // OATRUE or OAFALSE
- );
- HRESULT put_EditStart([in] long Value // OATRUE or OAFALSE
- );
-}
-typedef IAMExtTransport *PIAMEXTTRANSPORT;
-
- //---------------------------------------------------------------------
- // Defines IAMTimecodeReader Interface
- //
- // Contains properties and methods that define behavior of a
- // SMPTE/MIDI Timecode Reader. It is expected that this interface
- // will be combined (aggregated) with IAMExtTransport to "build" a pro
- // VCR.
- //
- // Implement if: you control such a device
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //=====================================================================
-
-
-// timecode structures
-cpp_quote("#if 0")
-cpp_quote("/* the following is what MIDL knows how to remote */")
-typedef struct tagTIMECODE {
- WORD wFrameRate; // will be replaced by AM defs, but see ED_FORMAT_SMPTE for now
- WORD wFrameFract; // fractional frame. full scale is always 0x1000
- DWORD dwFrames;
-}TIMECODE;
-cpp_quote("#else /* 0 */")
-cpp_quote("#ifndef TIMECODE_DEFINED")
-cpp_quote("#define TIMECODE_DEFINED")
-cpp_quote("typedef union _timecode {")
-cpp_quote(" struct {")
-cpp_quote(" WORD wFrameRate;")
-cpp_quote(" WORD wFrameFract;")
-cpp_quote(" DWORD dwFrames;")
-cpp_quote(" };")
-cpp_quote(" DWORDLONG qw;")
-cpp_quote(" } TIMECODE;")
-cpp_quote("")
-cpp_quote("#endif /* TIMECODE_DEFINED */")
-cpp_quote("#endif /* 0 */")
-
-typedef TIMECODE *PTIMECODE;
-
-typedef struct tagTIMECODE_SAMPLE {
- LONGLONG qwTick; // ActiveMovie 100ns timestamp
- TIMECODE timecode; // timecode
- DWORD dwUser; // timecode user data (aka user bits)
- DWORD dwFlags; // timecode flags - see below
-} TIMECODE_SAMPLE;
-typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE;
-
-
-[
- object,
- uuid(9B496CE1-811B-11cf-8C77-00AA006B6814),
- pointer_default(unique)
-]
-interface IAMTimecodeReader : IUnknown
-{
- // Timecode Reader Mode - gets/sets the following properties
- // ED_TCR_SOURCE - timecode gen (readback), LTC, VITC, or Control Track
- HRESULT GetTCRMode(
- [in] long Param,
- [out] long *pValue);
- HRESULT SetTCRMode(
- [in] long Param,
- [in] long Value);
-
- // Select which line of the vertical interval timecode will be read from (if VITC).
- // To read VITC on specific multiple lines, the caller would make successive calls to
- // put_VITCLine(), once for each line desired.
- HRESULT put_VITCLine(
- [in] long Line ); // valid lines are 11-20, 0 means autoselect,
- // hi bit set means add to list of lines (for
- // readers that test across multiple lines)
- HRESULT get_VITCLine(
- [out] long *pLine ); // hi bit set means multiple lines are used,
- // and successive calls will cycle through the
- // line numbers (like an enumerator, only simpler)
-
- // GetTimecode can be used to obtain the most recent timecode value available in the
- // stream. The client can use this to monitor the timecode, parse duplicates and
- // discontinuities. The source filter supplying the timecode or possibly a down stream
- // filter might want to parse for discontinuities or errors since you have to look at
- // every sample to do this properly.
- //
-
- HRESULT GetTimecode(
- [out] PTIMECODE_SAMPLE pTimecodeSample) ;
-
-}
-typedef IAMTimecodeReader *PIAMTIMECODEREADER;
-
- //---------------------------------------------------------------------
- //=====================================================================
- // Defines IAMTimecodeGenerator Interface
- //
- // Contains properties and methods that define behavior of an external
- // SMPTE/MIDI Timecode Generator. It is expected that this interface
- // will be combined (aggregated) with IAMExtTransport to "build" a pro
- // VCR.
- //
- // Implement if: you control such a device
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //---------------------------------------------------------------------
-[
- object,
- uuid(9B496CE0-811B-11cf-8C77-00AA006B6814),
- pointer_default(unique)
- ]
-interface IAMTimecodeGenerator : IUnknown {
-
- // Timecode Generator Mode - gets/sets the following properties (see
- // vcrdefss.h for detailed values):
- // ED_TCG_TIMECODE_TYPE - LTC, VITC, or MIDI
- // ED_TCG_FRAMERATE - 24, 25, 30 drop or 30 nondrop
- // ED_TCG_SYNC_SOURCE - what is driving the bitclock
- // ED_TCG_REFERENCE_SOURCE - what is driving the count value
- HRESULT GetTCGMode(
- [in] long Param,
- [out] long *pValue);
-
- HRESULT SetTCGMode(
- [in] long Param,
- [in] long Value);
-
- // Select into which line(s) of the vertical interval timecode will be inserted (if VITC).
- // Hi bit set means add this line to any previously set lines.
- // To generate VITC on specific multiple lines, the caller would make successive calls to
- // put_VITCLine(), once for each line desired.
- HRESULT put_VITCLine(
- [in] long Line // valid lines are 11-20, 0 means autoselect(this setting
- ); // is for TC readers that decode from multiple lines)
- HRESULT get_VITCLine(
- [out] long *pLine
- );
-
- // Sets timecode and/or userbit value. If generator is running, takes effect
- // immediately. If caller wants to set only timecode, set userbit value to -1L (and
- // same for setting userbits only)
- //
-
- HRESULT SetTimecode(
- [in] PTIMECODE_SAMPLE pTimecodeSample) ;
-
-
- // GetTimecode can be used to obtain the most recent timecode value available in the
- // stream. The client can use this to monitor the timecode and verify the generator is
- // working properly
- //
-
- HRESULT GetTimecode(
- [out] PTIMECODE_SAMPLE pTimecodeSample) ;
-
-}
-typedef IAMTimecodeGenerator *PIAMTIMECODEGENERATOR;
-
- //---------------------------------------------------------------------
- // Defines IAMTimecodeDisplay Interface
- //
- // Contains properties and methods that define behavior of an external
- // SMPTE/MIDI Timecode Display device (aka "character generator" for
- // making "burn-ins" or "window dubs"). It is expected that this interface
- // will be combined (aggregated) with IAMExtTransport and the timecode
- // interfaces to "build" a pro VCR.
- //
- // Implement if: you control such a device
- //
- // Use if: you want to control such a device
- //
- // See edevdefs.h for the parameter lists
- //---------------------------------------------------------------------
-[
- object,
- uuid(9B496CE2-811B-11cf-8C77-00AA006B6814),
- pointer_default(unique)
- ]
-interface IAMTimecodeDisplay : IUnknown
-{
- // Enable/disable external device's timecode reader's character generator output. Some
- // readers have this feature - this is not intended for rendering inside the PC!
- HRESULT GetTCDisplayEnable(
- [out] long *pState); // OATRUE | OAFALSE
- HRESULT SetTCDisplayEnable(
- [in] long State); // OATRUE | OAFALSE
- // Timecode reader's character generator output
- // characteristics (size, position, intensity, etc.).
- HRESULT GetTCDisplay(
- [in] long Param,
- [out] long *pValue);
- HRESULT SetTCDisplay(
- [in] long Param,
- [in] long Value);
-
- /* Allowable params and values (see edevdefs.h for details):
- ED_TCD_SOURCE
- ED_TCR | ED_TCG
- ED_TCD_SIZE
- ED_SMALL | ED_MED | ED_LARGE
- ED_TCD_POSITION
- ED_TOP | ED_MIDDLE | ED_BOTTOM or'd with
- ED_LEFT | ED_CENTER | ED_RIGHT
- ED_TCD_INTENSITY
- ED_HIGH | ED_LOW
- ED_TCD_TRANSPARENCY // set from 0 to 4, 0 being completely opaque
- ED_TCD_INVERT // white on black or black on white
- OATRUE | OAFALSE
- ED_TCD_BORDER // white border for black chars, black border for white letters
- OATRUE | OAFALSE
- */
-}
-typedef IAMTimecodeDisplay *PIAMTIMECODEDISPLAY;
-
-
-[
- object,
- uuid(c6545bf0-e76b-11d0-bd52-00a0c911ce86),
- pointer_default(unique)
-]
-interface IAMDevMemoryAllocator : IUnknown
-{
- HRESULT GetInfo(
- [out] DWORD *pdwcbTotalFree,
- [out] DWORD *pdwcbLargestFree,
- [out] DWORD *pdwcbTotalMemory,
- [out] DWORD *pdwcbMinimumChunk);
-
- HRESULT CheckMemory(
- [in] const BYTE *pBuffer);
-
- HRESULT Alloc(
- [out] BYTE **ppBuffer,
- [in, out] DWORD *pdwcbBuffer);
-
- HRESULT Free(
- [in] BYTE *pBuffer);
-
- HRESULT GetDevMemoryObject(
- [out] IUnknown **ppUnkInnner,
- [in] IUnknown *pUnkOuter);
-}
-typedef IAMDevMemoryAllocator *PAMDEVMEMORYALLOCATOR;
-
-
-[
- object,
- uuid(c6545bf1-e76b-11d0-bd52-00a0c911ce86),
- pointer_default(unique)
-]
-interface IAMDevMemoryControl : IUnknown
-{
- HRESULT QueryWriteSync();
-
- HRESULT WriteSync();
-
- HRESULT GetDevId(
- [out] DWORD *pdwDevId);
-
-}
-typedef IAMDevMemoryControl *PAMDEVMEMORYCONTROL;
-
-// Flags for IAMStreamSelection::Info
-enum _AMSTREAMSELECTINFOFLAGS {
- AMSTREAMSELECTINFO_ENABLED = 0x01, // Enable - off for disable
- AMSTREAMSELECTINFO_EXCLUSIVE = 0x02 // Turns off the others in the group
- // when enabling this one
-};
-// Flags for IAMStreamSelection::Enable
-enum _AMSTREAMSELECTENABLEFLAGS {
- // Currently valid values are :
- // 0 - disable all streams in the group containing this stream
- // ..._ENABLE - enable only this stream with in the given group
- // and disable all others
- // ..._ENABLEALL - send out all streams
- AMSTREAMSELECTENABLE_ENABLE = 0x01, // Enable
- AMSTREAMSELECTENABLE_ENABLEALL = 0x02 // Enable all streams in the group
- // containing this stream
-};
-
-// Control which logical streams are played and find out information about
-// them
-// Normally supported by a filter
-[
- object,
- uuid(c1960960-17f5-11d1-abe1-00a0c905f375),
- pointer_default(unique)
-]
-interface IAMStreamSelect : IUnknown
-{
- // Returns total count of streams
- HRESULT Count(
- [out] DWORD *pcStreams); // Count of logical streams
-
- // Return info for a given stream - S_FALSE if iIndex out of range
- // The first steam in each group is the default
- HRESULT Info(
- [in] long lIndex, // 0-based index
- [out] AM_MEDIA_TYPE **ppmt, // Media type - optional
- // Use DeleteMediaType to free
- [out] DWORD *pdwFlags, // flags - optional
- [out] LCID *plcid, // LCID (returns 0 if none) - optional
- [out] DWORD *pdwGroup, // Logical group - optional
- [out] WCHAR **ppszName, // Name - optional - free with CoTaskMemFree
- // optional
- [out] IUnknown **ppObject, // Associated object - optional
- // Object may change if Enable is
- // called on this interface
- // - returns NULL if no associated object
- // Returns pin or filter for DShow
- [out] IUnknown **ppUnk); // Stream specific interface
-
- // Enable or disable a given stream
- HRESULT Enable(
- [in] long lIndex,
- [in] DWORD dwFlags);
-}
-typedef IAMStreamSelect *PAMSTREAMSELECT;
-
-enum _AMRESCTL_RESERVEFLAGS
-{
- AMRESCTL_RESERVEFLAGS_RESERVE = 0x00, // Increment reserve count
- AMRESCTL_RESERVEFLAGS_UNRESERVE = 0x01 // Decrement reserve count
-};
-
-// Reserve resources now so that playback can be subsequently
-// guaranteed
-//
-// Normally supported by a filter
-//
-[
- object,
- uuid(8389d2d0-77d7-11d1-abe6-00a0c905f375),
- pointer_default(unique),
- local
-]
-interface IAMResourceControl : IUnknown
-{
- // The reserve count is incremented/decremented if and only if
- // S_OK is returned
- // Unreserve once for every Reserve call
- HRESULT Reserve(
- [in] DWORD dwFlags, // From _AMRESCTL_RESERVEFLAGS enum
- [in] PVOID pvReserved // Must be NULL
- );
-}
-
-
-// Set clock adjustments - supported by some clocks
-[
- object,
- uuid(4d5466b0-a49c-11d1-abe8-00a0c905f375),
- pointer_default(unique),
- local
-]
-interface IAMClockAdjust : IUnknown
-{
- // Set the following delta to clock times
- // The clock will add adjust its times by the given delta
- HRESULT SetClockDelta(
- [in] REFERENCE_TIME rtDelta
- );
-};
-
-// Filter miscellaneous status flags
-
-enum _AM_FILTER_MISC_FLAGS {
- AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x00000001, /* Will deliver EC_COMPLETE
- at end of media */
- AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x00000002 /* Filter sources data */
-};
-
-[
- object,
- uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
- pointer_default(unique),
- local
-]
-interface IAMFilterMiscFlags : IUnknown
-{
- // Get miscellaneous property flags
- ULONG GetMiscFlags(void);
-};
-
-
-// Video Image drawing interface
-[
- object,
- local,
- uuid(48efb120-ab49-11d2-aed2-00a0c995e8d5),
- pointer_default(unique),
-]
-interface IDrawVideoImage : IUnknown
-{
- HRESULT DrawVideoImageBegin();
-
- HRESULT DrawVideoImageEnd();
-
- HRESULT DrawVideoImageDraw(
- [in] HDC hdc,
- [in] LPRECT lprcSrc,
- [in] LPRECT lprcDst
- );
-}
-
-//
-// Video Image decimation interface
-//
-// The aim of this interface is to enable a video renderer filter to
-// control the decimation properties of a video decoder connected to
-// the video renderer
-//
-// This interface should only be supported by decoders that are capable of
-// decimating their output image by an arbitary amount.
-//
-//
-[
- object,
- local,
- uuid(2e5ea3e0-e924-11d2-b6da-00a0c995e8df),
- pointer_default(unique),
-]
-interface IDecimateVideoImage : IUnknown
-{
- //
- // Informs the decoder that it should decimate its output
- // image to the specified width and height. If the decoder can
- // decimate to this size it should return S_OK.
- // If the decoder can't perform the requested decimation
- // or wants to stop performing the decimation that it is
- // currently doing it should return E_FAIL.
- //
- HRESULT SetDecimationImageSize(
- [in] long lWidth,
- [in] long lHeight);
-
- //
- // Informs the decoder that it should stop decimating its output image
- // and resume normal output.
- //
- HRESULT ResetDecimationImageSize();
-}
-
-typedef enum _DECIMATION_USAGE {
- DECIMATION_LEGACY, // decimate at ovly then video port then crop
- DECIMATION_USE_DECODER_ONLY, // decimate image at the decoder only
- DECIMATION_USE_VIDEOPORT_ONLY, // decimate at the video port only
- DECIMATION_USE_OVERLAY_ONLY, // decimate at the overlay only
- DECIMATION_DEFAULT // decimate at decoder then ovly the vide port then crop
-} DECIMATION_USAGE;
-
-[
- object,
- local,
- uuid(60d32930-13da-11d3-9ec6-c4fcaef5c7be),
- pointer_default(unique),
-]
-interface IAMVideoDecimationProperties: IUnknown
-{
- //
- // Queries the current usage of the above IDecimateVideoImage
- // interface.
- //
- HRESULT QueryDecimationUsage(
- [out] DECIMATION_USAGE* lpUsage); // from DECIMATION_USAGE enum
-
- //
- // Sets the current usage of the above IDecimateVideoImage
- // interface.
- //
- HRESULT SetDecimationUsage(
- [in] DECIMATION_USAGE Usage); // from DECIMATION_USAGE enum
-}
-
-//---------------------------------------------------------------------
-//
-// IVideoFrameStep interface
-//
-//---------------------------------------------------------------------
-
-[
- object,
- uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a),
- pointer_default(unique),
-]
-interface IVideoFrameStep : IUnknown
-{
- //
- // Stop(), Pause(), Run() all cancel Step as does any seeking
- // request.
- //
- // The Step() and CancelStep() methods of this interface
- // Cancel any previous step.
- //
- // When stepping is complete EC_STEP_COMPLETE is signalled.
- //
- // When the filter graph gets EC_STEP_COMPLETE it automatically
- // sets the filter graph into paused state and forwards the
- // notification to the application
- //
- // Returns S_OK if stepping initiated.
- //
- // dwFrames
- // 1 means step 1 frame forward
- // 0 is invalid
- // n (n > 1) means skip n - 1 frames and show the nth
- //
- // pStepObject
- // NULL - default step object (filter) picked
- // non-NULL - use this object for stepping
- //
- HRESULT Step(DWORD dwFrames, [unique] IUnknown *pStepObject);
-
- // Can step?
- // Returns S_OK if it can, S_FALSE if it can't or error code.
- // bMultiple - if TRUE return whether can step n > 1
- HRESULT CanStep(long bMultiple, [unique] IUnknown *pStepObject);
-
- // Cancel stepping
- HRESULT CancelStep();
-}
-
-
-
-
-//---------------------------------------------------------------------
-//
-// IAMPushSource interface
-//
-// Provides a means for source filters to describe information about the
-// data that they source, such as whether the data is live or not, and
-// what type of clock was used for timestamps. This information may be
-// needed by other clocks in the graph in order to provide accurate
-// synchronization. Also provides a way to specify an offset value for
-// the filter to use when timestamping the streams it sources. Provides
-// support for the IAMLatency interface as well.
-//
-//---------------------------------------------------------------------
-
-enum _AM_PUSHSOURCE_FLAGS {
-
- //
- // The default assumption is that the data is from a live source,
- // time stamped with the graph clock, and the source does not
- // attempt to rate match the data it delivers.
- // The following flags can be used to override this assumption.
- //
-
- // capability flags
- AM_PUSHSOURCECAPS_INTERNAL_RM = 0x00000001, // source provides internal support for rate matching
- AM_PUSHSOURCECAPS_NOT_LIVE = 0x00000002, // don't treat source data as live
- AM_PUSHSOURCECAPS_PRIVATE_CLOCK = 0x00000004, // source data timestamped with clock not
- // exposed to the graph
-
- // request flags, set by user via SetPushSourceFlags method
- AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = 0x00010000, // source was requested to timestamp
- // using a clock that isn't the graph clock
-
- AM_PUSHSOURCEREQS_USE_CLOCK_CHAIN = 0x00020000, // source requests reference clock chaining
-};
-
-//
-// Used to set a source filter to run in a "live" mode.
-//
-[
-object,
- uuid(F185FE76-E64E-11d2-B76E-00C04FB6BD3D),
- pointer_default(unique)
-]
-interface IAMPushSource : IAMLatency
-{
- // used to discover push source's capabilities.
- // may be any combination of the AM_PUSHSOURCE_FLAGS flags.
- HRESULT GetPushSourceFlags (
- [out] ULONG *pFlags
- );
-
- // used to set request flags for a push source.
- // may be a combination of the AM_PUSHSOURCE_REQS_xxx flags.
- HRESULT SetPushSourceFlags (
- [in] ULONG Flags
- );
-
- // specify an offset for push source time stamps
- HRESULT SetStreamOffset (
- [in] REFERENCE_TIME rtOffset
- );
-
- // retrieve the offset this push source is using
- HRESULT GetStreamOffset (
- [out] REFERENCE_TIME *prtOffset
- );
-
- // retrieve the maximum stream offset this push source thinks it can support
- HRESULT GetMaxStreamOffset (
- [out] REFERENCE_TIME *prtMaxOffset
- );
-
- // allows the filter graph to tell a push source the maximum latency allowed on the graph
- // this allows pins like the video capture preview pin to be more efficient with the amount
- // of buffering required to support the maximum graph latency
- HRESULT SetMaxStreamOffset (
- [in] REFERENCE_TIME rtMaxOffset
- );
-};
-
-
-// ------------------------------------------------------------------------
-//
-// IAMDeviceRemoval interface
-//
-// Implemented by filters to request and receive WM_DEVICECHANGE
-// notifications
-//
-// ------------------------------------------------------------------------
-
-[
- object,
- uuid(f90a6130-b658-11d2-ae49-0000f8754b99),
- pointer_default(unique)
-]
-interface IAMDeviceRemoval : IUnknown
-{
-
- HRESULT DeviceInfo(
- [out] CLSID *pclsidInterfaceClass,
- [out] WCHAR **pwszSymbolicLink);
-
- HRESULT Reassociate();
-
- HRESULT Disassociate();
-}
-
-//
-// for DV
-//
-typedef struct {
- //for 1st 5/6 DIF seq.
- DWORD dwDVAAuxSrc;
- DWORD dwDVAAuxCtl;
- //for 2nd 5/6 DIF seq.
- DWORD dwDVAAuxSrc1;
- DWORD dwDVAAuxCtl1;
- //for video information
- DWORD dwDVVAuxSrc;
- DWORD dwDVVAuxCtl;
- DWORD dwDVReserved[2];
-
-} DVINFO, *PDVINFO;
-
-// ------------------------------------------------------------------------
-//
-// IDVEnc interface
-//
-// Implemented by DV encoder filters to set Encoder format
-//
-// ------------------------------------------------------------------------
-enum _DVENCODERRESOLUTION { //resolution
- DVENCODERRESOLUTION_720x480 = 2012,
- DVENCODERRESOLUTION_360x240 = 2013,
- DVENCODERRESOLUTION_180x120 = 2014,
- DVENCODERRESOLUTION_88x60 = 2015
-};
-enum _DVENCODERVIDEOFORMAT { //PAL/ntsc
- DVENCODERVIDEOFORMAT_NTSC = 2000,
- DVENCODERVIDEOFORMAT_PAL = 2001
-};
-enum _DVENCODERFORMAT { // dvsd/dvhd/dvsl
- DVENCODERFORMAT_DVSD = 2007,
- DVENCODERFORMAT_DVHD = 2008,
- DVENCODERFORMAT_DVSL = 2009
-};
-[
- object,
- uuid(d18e17a0-aacb-11d0-afb0-00aa00b67a42),
- pointer_default(unique)
-]
-interface IDVEnc : IUnknown
-{
-
- HRESULT get_IFormatResolution (
- [out] int *VideoFormat, //pal or ntsc
- [out] int *DVFormat, //dvsd dvhd dvsl
- [out] int *Resolution, //720, 360, 180,88
- [in] BYTE fDVInfo, //TRUE: DVINFO structure exist, FALSE: Do not care DVINFO
- [out] DVINFO *sDVInfo //NULL if fDVInfo=FALSE,
- );
-
- HRESULT put_IFormatResolution (
- [in] int VideoFormat,
- [in] int DVFormat,
- [in] int Resolution,
- [in] BYTE fDVInfo, //TRUE: DVINFO structure exist, FALSE: Do not care DVINFO
- [in] DVINFO *sDVInfo //NULL if fDVInfo=FALSE,
- );
-
-}
-
-// ------------------------------------------------------------------------
-//
-// IDVDec interface
-//
-// Implemented by DV decoder filters to set decoder size
-//
-// ------------------------------------------------------------------------
-enum _DVDECODERRESOLUTION {
- DVDECODERRESOLUTION_720x480 = 1000,
- DVDECODERRESOLUTION_360x240 = 1001,
- DVDECODERRESOLUTION_180x120 = 1002,
- DVDECODERRESOLUTION_88x60 = 1003
-};
-enum _DVRESOLUTION {
- DVRESOLUTION_FULL = 1000,
- DVRESOLUTION_HALF = 1001,
- DVRESOLUTION_QUARTER = 1002,
- DVRESOLUTION_DC = 1003
-};
-[
- object,
- uuid(b8e8bd60-0bfe-11d0-af91-00aa00b67a42),
- pointer_default(unique)
-]
-interface IIPDVDec : IUnknown
-{
- HRESULT get_IPDisplay (
- [out] int *displayPix // The display pixels arrage
- );
-
- HRESULT put_IPDisplay (
- [in] int displayPix // Change to this display pixel arrage
- ) ;
-}
-
-//------------------------------------------------------------------------
-//
-// IDVRGB219 interface
-//
-// Implemented by both the DV encoder and decoder filters
-// Used for enabling the 219 mode in which the Range of RGB24 either received
-// by the encoder or produced by the decoder becomes (16,16,16)--(235,235,235)
-// instead of (0,0,0)--(255,255,255).
-// The interface's method has no effect in case of any other color space than
-// RGB 24
-//
-//------------------------------------------------------------------------
-
-[
- object,
- uuid(58473A19-2BC8-4663-8012-25F81BABDDD1),
- pointer_default(unique)
-]
-interface IDVRGB219 : IUnknown
-{
- HRESULT SetRGB219 ([in] BOOL bState); // State = True Turn 219 mode on else turn it off.
-}
-
-
-// ------------------------------------------------------------------------
-//
-// IDVSplitter interface
-//
-// Implemented by DV splitter filters
-//
-// ------------------------------------------------------------------------
-[
- object,
- uuid(92a3a302-da7c-4a1f-ba7e-1802bb5d2d02)
-]
-interface IDVSplitter : IUnknown
-{
- HRESULT DiscardAlternateVideoFrames(
- [in] int nDiscard
- ) ;
-}
-
-// Audio Renderer statistics params for IAMAudioRendererStats interface
-enum _AM_AUDIO_RENDERER_STAT_PARAM {
- AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1, // audio breaks
- AM_AUDREND_STAT_PARAM_SLAVE_MODE, // current slave mode, see AM_AUDREND_SLAVE_MODEs
- AM_AUDREND_STAT_PARAM_SILENCE_DUR, // silence inserted due to gaps (ms)
- AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR, // duration of the last buffer received
- AM_AUDREND_STAT_PARAM_DISCONTINUITIES, // discontinuities seen since running
- AM_AUDREND_STAT_PARAM_SLAVE_RATE, // what rate are we currently slaving at? S_FALSE if not slaving
- AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR, // for waveOut slaving - data dropped or added to stay in-sync
- // dwParam1 - dropped duration(ms)
- // dwParam2 - paused duration(ms)
- AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR, // highest & lowest clock differences seen
- // dwParam1 - high err
- // dwParam2 - low err
- AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR, // last high and low errs seen
- // dwParam1 - last high err
- // dwParam2 - last low err
- AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR, // error between master/slave clocks
- AM_AUDREND_STAT_PARAM_BUFFERFULLNESS, // percent audio buffer fullness
- AM_AUDREND_STAT_PARAM_JITTER // input buffer jitter
-};
-
-//---------------------------------------------------------------------
-//
-// IAMAudioRendererStats interface
-//
-// Interface to get at statistical information that is optionally stored
-// in an audio renderer filter. Supported on the filter interface (although
-// this might be better for ksproxy if we define it as a pin interface?)
-//
-//---------------------------------------------------------------------
-
-[
-object,
- uuid(22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93),
- pointer_default(unique)
-]
-interface IAMAudioRendererStats : IUnknown
-{
- // Get value corresponding to the passed in parameter id
- HRESULT GetStatParam(
- [in] DWORD dwParam,
- [out] DWORD *pdwParam1,
- [out] DWORD *pdwParam2
- );
-}
-
-//---------------------------------------------------------------------
-//
-// IAMLatency interface
-//
-// Allows a filter to report the expected latency associated with a data
-// stream flowing from its input to output pin. Supported on output pins.
-//
-//---------------------------------------------------------------------
-
-[
-object,
- uuid(62EA93BA-EC62-11d2-B770-00C04FB6BD3D),
- pointer_default(unique)
-]
-interface IAMLatency : IUnknown
-{
- HRESULT GetLatency(
- [in] REFERENCE_TIME *prtLatency
- );
-}
-
-
-enum _AM_INTF_SEARCH_FLAGS {
- AM_INTF_SEARCH_INPUT_PIN = 0x00000001, // search input pins
- AM_INTF_SEARCH_OUTPUT_PIN = 0x00000002, // search output pins
- AM_INTF_SEARCH_FILTER = 0x00000004 // search filters
-};
-
-//---------------------------------------------------------------------
-//
-// IAMGraphStreams interface
-//
-// Interface used to control or search over connected streams of data
-// flow within a filter graph.
-//
-//---------------------------------------------------------------------
-
-[
-object,
- uuid(632105FA-072E-11d3-8AF9-00C04FB6BD3D),
- pointer_default(unique)
-]
-interface IAMGraphStreams : IUnknown
-{
- // Search upstream from the current pin, for the specified interface.
- // dwFlags can be any combination of the AM_INTF_SEARCH_FLAGS, and allows
- // control over what objects to search. A value of 0 means to search all.
- HRESULT FindUpstreamInterface(
- [in] IPin *pPin,
- [in] REFIID riid,
- [out, iid_is(riid)] void **ppvInterface,
- [in] DWORD dwFlags );
-
- // Enable or disable the graph's setting of a timestamp offset
- // on push sources.
- HRESULT SyncUsingStreamOffset( [in] BOOL bUseStreamOffset );
-
- // allow an app to set the maximum offset used on push source filters
- HRESULT SetMaxGraphLatency( [in] REFERENCE_TIME rtMaxGraphLatency );
-}
-
-
-//
-// IAMOverlayFX
-//
-// This interface is exposed by the overlay mixer filter and allows
-// an application to apply various "effects" to the overlay surface
-// used by the overlay mixer.
-//
-// The effects that can be applied are described by the AMOVERLAYFX
-// enumeration.
-//
-enum AMOVERLAYFX {
- // Normal (ie. top down, left to right) video
- AMOVERFX_NOFX = 0x00000000,
-
- // Mirror the overlay across the vertical axis
- AMOVERFX_MIRRORLEFTRIGHT = 0x00000002,
-
- // Mirror the overlay across the horizontal axis
- AMOVERFX_MIRRORUPDOWN = 0x00000004,
-
- // Deinterlace the overlay, if possible
- AMOVERFX_DEINTERLACE = 0x00000008
-};
-
-[
-object,
- uuid(62fae250-7e65-4460-bfc9-6398b322073c),
- pointer_default(unique)
-]
-interface IAMOverlayFX : IUnknown
-{
- // Use this method to determine what overlay effects are currently available
- // for the overlay surface used by the overlay mixer filter.
- //
- HRESULT QueryOverlayFXCaps(
- [out] DWORD *lpdwOverlayFXCaps
- );
-
- // Use this method to apply a new overlay effect to the overlay surface
- // used by the overlay mixer filter. This method can be called while the
- // filter graph is running, the effect is applied immediately
- //
- HRESULT SetOverlayFX(
- [in] DWORD dwOverlayFX
- );
-
- // Use this method to determine what effect (if any) is currently being
- // applied to the overlay surface by the overlay mixer filter.
- //
- HRESULT GetOverlayFX(
- [out] DWORD *lpdwOverlayFX
- );
-}
-
-
-
-// IAMOpenProgress interface provides information about current progress through
-// a download
-
-[
-object,
-uuid(8E1C39A1-DE53-11cf-AA63-0080C744528D),
-pointer_default(unique)
-]
-
-interface IAMOpenProgress : IUnknown
-{
- // QueryProgress can be used to query the source filter which supports this interface
- // for progress information during a renderfile operation.
- HRESULT QueryProgress(
- [out] LONGLONG* pllTotal,
- [out] LONGLONG* pllCurrent
- );
-
- // AbortOperation can be used to request an abort of RenderFile operation
- // causing it to stop downloading. This methods instructs the exporter of
- // the IAMOpenProgress interface to hold up their internal abort flag until
- // further notice.
- HRESULT AbortOperation(
- );
-}
-
-
-/*++
- IMpeg2Demultiplexer
-
- This interface is implemented by the MPEG-2 Demultiplexer filter,
- irrespective of program vs. transport stream splitting functionality.
---*/
-[
- object,
- local,
- uuid (436eee9c-264f-4242-90e1-4e330c107512),
- pointer_default(unique)
-]
-interface IMpeg2Demultiplexer : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- purpose: Creates an output pin of the specified media type.
-
- pMediaType media type specifier for the new pin
- pszPinName pin name; cannot be a duplicate of an existing pin
- ppIPin IPin interface pointer to the newly created pin
- --*/
- HRESULT
- CreateOutputPin (
- [in] AM_MEDIA_TYPE * pMediaType,
- [in] LPWSTR pszPinName,
- [out] IPin ** ppIPin
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- purpose: Updates the media type of the specified output pin. If no
- connection exists, the media type is updated always. If
- the pin is connected, the success/failure of the call will
- depend on downstream input pin's accetance/rejection of
- the specified media type, and subsequent success/failure
- of a reconnect.
-
- pszPinName pin name
- pMediaType new media type specifier
- --*/
- HRESULT
- SetOutputPinMediaType (
- [in] LPWSTR pszPinName,
- [in] AM_MEDIA_TYPE * pMediaType
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- purpose: Deletes the specified output pin.
-
- pszPinName pin name
- --*/
- HRESULT
- DeleteOutputPin (
- [in] LPWSTR pszPinName
- ) ;
-} ;
-
-//---------------------------------------------------------------------
-// IEnumStreamIdMap interface
-//---------------------------------------------------------------------
-
-cpp_quote("#define MPEG2_PROGRAM_STREAM_MAP 0x00000000")
-cpp_quote("#define MPEG2_PROGRAM_ELEMENTARY_STREAM 0x00000001")
-cpp_quote("#define MPEG2_PROGRAM_DIRECTORY_PES_PACKET 0x00000002")
-cpp_quote("#define MPEG2_PROGRAM_PACK_HEADER 0x00000003")
-cpp_quote("#define MPEG2_PROGRAM_PES_STREAM 0x00000004")
-cpp_quote("#define MPEG2_PROGRAM_SYSTEM_HEADER 0x00000005")
-
-cpp_quote("#define SUBSTREAM_FILTER_VAL_NONE 0x10000000")
-
-typedef struct {
- ULONG stream_id ; // mpeg-2 stream_id
- DWORD dwMediaSampleContent ; // #define'd above
- ULONG ulSubstreamFilterValue ; // filtering value
- int iDataOffset ; // offset to elementary stream
-} STREAM_ID_MAP ;
-
-/*++
- Enumerates the StreamIds mapped on a pin
---*/
-[
- object,
- local,
- uuid (945C1566-6202-46fc-96C7-D87F289C6534),
- pointer_default(unique)
-]
-interface IEnumStreamIdMap : IUnknown
-{
- HRESULT
- Next (
- [in] ULONG cRequest,
- [in, out, size_is (cRequest)] STREAM_ID_MAP * pStreamIdMap,
- [out] ULONG * pcReceived
- ) ;
-
- HRESULT
- Skip (
- [in] ULONG cRecords
- ) ;
-
- HRESULT
- Reset (
- ) ;
-
- HRESULT
- Clone (
- [out] IEnumStreamIdMap ** ppIEnumStreamIdMap
- ) ;
-} ;
-
-/*++
- Implemented on the output pin.
-
- Provides the ability to map/unmap a stream_id to/from an output pin.
---*/
-[
- object,
- local,
- uuid (D0E04C47-25B8-4369-925A-362A01D95444),
- pointer_default(unique)
-]
-interface IMPEG2StreamIdMap : IUnknown
-{
- HRESULT
- MapStreamId (
- [in] ULONG ulStreamId, // mpeg-2 stream_id
- [in] DWORD MediaSampleContent, // #define'd above IEnumStreamIdMap
- [in] ULONG ulSubstreamFilterValue, // filter value
- [in] int iDataOffset // elementary stream offset
- ) ;
-
- HRESULT
- UnmapStreamId (
- [in] ULONG culStreamId, // number of stream_id's in pulStreamId
- [in] ULONG * pulStreamId // array of stream_id's to unmap
- ) ;
-
- HRESULT
- EnumStreamIdMap (
- [out] IEnumStreamIdMap ** ppIEnumStreamIdMap
- ) ;
-} ;
-
-
-// Register a service provider with the filter graph
-[
- object,
- local,
- uuid(7B3A2F01-0751-48DD-B556-004785171C54),
- pointer_default(unique)
-]
-interface IRegisterServiceProvider : IUnknown
-{
- // registers one service into it's internal table.. Object is refcounted.
- // register a NULL value to remove the service
- HRESULT RegisterService([in] REFGUID guidService, [in] IUnknown *pUnkObject);
-};
-
-
-
-//---------------------------------------------------------------------
-//
-// IAMClockSlave interface
-//
-// When the audio renderer is slaving to a separate graph clock this
-// interface provides a way for an app to specify how closely in sync
-// the slaving renderer should try to stay to the graph clock. Note that
-// using a larger tolerance for a video & audio playback graph will likely
-// result in looser a/v sync, so it recommended not to change this setting
-// except under special circumstances.
-//
-//---------------------------------------------------------------------
-
-//
-// Used to set/get the error tolerance used by a slaving audio renderer
-//
-[
-object,
- uuid(9FD52741-176D-4b36-8F51-CA8F933223BE),
- pointer_default(unique)
-]
-interface IAMClockSlave : IUnknown
-{
- // set millisecond value to use for slaving tolerance
- // the allowed range is 1 to 1000ms
- HRESULT SetErrorTolerance (
- [in] DWORD dwTolerance
- );
-
- // get millisecond value currently being used for slaving tolerance
- HRESULT GetErrorTolerance (
- [out] DWORD *pdwTolerance
- );
-};
-
-
-
-//---------------------------------------------------------------------
-//
-// IAMGraphBuilderCallback interface
-//
-// Interface which gives the app a chance to configure filters
-// before a connection is attempted.
-//
-// If this interface is supported by the site passed in to the graph
-// via IObjectWithSite::SetSite, the graph will call back with each
-// filter it creates as part of the Render or Connect process. Does
-// not call back for source filters. Filter may be discarded and not
-// used in graph or may be connected and disconnected more than once
-//
-// The callback occurs with the graph lock held, so do not call into
-// the graph again and do not wait on other threads calling into the
-// graph.
-//
-//---------------------------------------------------------------------
-
-[
- object,
- uuid(4995f511-9ddb-4f12-bd3b-f04611807b79),
- local,
- pointer_default(unique)
-]
-interface IAMGraphBuilderCallback : IUnknown
-{
- // graph builder selected a filter to create and attempt to
- // connect. failure indicates filter should be rejected.
- HRESULT SelectedFilter(
- [in] IMoniker *pMon
- );
-
- // app configures filter during this call. failure indicates
- // filter should be rejected.
- HRESULT CreatedFilter(
- [in] IBaseFilter *pFil
- );
-};
-
-cpp_quote("#ifdef __cplusplus")
-cpp_quote("#ifndef _IAMFilterGraphCallback_")
-cpp_quote("#define _IAMFilterGraphCallback_")
-cpp_quote("// Note: Because this interface was not defined as a proper interface it is")
-cpp_quote("// supported under C++ only. Methods aren't stdcall.")
-cpp_quote("EXTERN_GUID(IID_IAMFilterGraphCallback,0x56a868fd,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70);")
-cpp_quote("interface IAMFilterGraphCallback : public IUnknown")
-cpp_quote("{")
-cpp_quote(" // S_OK means rendering complete, S_FALSE means retry now.")
-cpp_quote(" virtual HRESULT UnableToRender(IPin *pPin) = 0;")
-cpp_quote(" ")
-cpp_quote("};")
-cpp_quote("#endif // _IAMFilterGraphCallback_")
-cpp_quote("#endif")
-
-//------------------------------------------------------------------------------
-// File: EncAPI.idl
-//
-// Desc: Encoder (and future decoder) interface definitions.
-//
-// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------------------------
-
-struct CodecAPIEventData
-{
- GUID guid;
- DWORD dataLength;
- DWORD reserved[3];
- // BYTE data[dataLength];
-};
-
-interface IStream; // forward declaration
-//
-// Applications can pass the CODECAPI_VIDEO_ENCODER to IsSupported to test for video encoders
-// Similarly, the GUIDs for audio encoders, video decoders, audio decoders and muxes can be
-// used to test for the codec classification
-//
-// See uuids.h for a more detailed list.
-//
-[
- object,
- uuid(901db4c7-31ce-41a2-85dc-8fa0bf41b8da),
- pointer_default(unique)
-]
-interface ICodecAPI : IUnknown
-{
- //
- // IsSupported():
- //
- // Query whether a given parameter is supported.
- //
- HRESULT
- IsSupported (
- [in] const GUID *Api
- );
-
- //
- // IsModifiable
- //
- // Query whether a given parameter can be changed given the codec selection
- // and other parameter selections.
- //
- HRESULT
- IsModifiable (
- [in] const GUID *Api
- );
-
- //
- // GetParameterRange():
- //
- // Returns the valid range of values that the parameter supports should
- // the parameter support a stepped range as opposed to a list of specific
- // values. The support is [ValueMin .. ValueMax] by SteppingDelta.
- //
- // Ranged variant types must fall into one of the below types. Each
- // parameter will, by definition, return a specific type.
- //
- // If the range has no stepping delta (any delta will do), the Stepping
- // delta will be empty (VT_EMPTY).
- //
- HRESULT
- GetParameterRange (
- [in] const GUID *Api,
- [out] VARIANT *ValueMin,
- [out] VARIANT *ValueMax,
- [out] VARIANT *SteppingDelta
- );
-
- //
- // GetParameterValues():
- //
- // Returns the list of values supported by the given parameter as a
- // COM allocated array. The total number of values will be placed in
- // the ValuesCount parameter and the Values array will contain the
- // individual values. This array must be freed by the caller through
- // CoTaskMemFree().
- //
- HRESULT
- GetParameterValues (
- [in] const GUID *Api,
- [out, size_is(,*ValuesCount)] VARIANT **Values,
- [out] ULONG *ValuesCount
- );
-
- //
- // GetDefaultValue():
- //
- // Get the default value for a parameter, if one exists. Otherwise,
- // an error will be returned.
- //
- HRESULT
- GetDefaultValue (
- [in] const GUID *Api,
- [out] VARIANT *Value
- );
-
- //
- // GetValue():
- //
- // Get the current value of a parameter.
- //
- HRESULT
- GetValue (
- [in] const GUID *Api,
- [out] VARIANT *Value
- );
-
- //
- // SetValue():
- //
- // Set the current value of a parameter.
- //
- HRESULT
- SetValue (
- [in] const GUID *Api,
- [in] VARIANT *Value
- );
-
- // new methods beyond IEncoderAPI
-
- //
- // RegisterForEvent():
- //
- // Enable events to be reported for the given event GUID. For DShow
- // events, the event is returned as
- // (EC_CODECAPI_EVENT, lParam=userData, lParam2=CodecAPIEventData* Data)
- // where
- // - the CodecAPIEventData is COM allocated memory and must be handled and freed
- // by the application using CoTaskMemFree().
- // - the userData is the same pointer passed to RegisterForEvent
- //
- // Each data block starts with the following structure:
- // struct CodecAPIEventData
- // {
- // GUID guid;
- // DWORD dataLength;
- // DWORD reserved[3]; // pad to 16 byte alignment
- // BYTE data[dataLength];
- // }
- // The guid parameter identifies the event. The data associated with the event follows the
- // structure (represented by the variable length BYTE data[dataLength] array).
- //
- // If guid is equal to CODECAPI_CHANGELISTS, then data is an array of GUIDs that changed as
- // a result of setting the parameter, as follows:
- // GUID changedGuids[ header.dataLength / sizeof(GUID) ]
- //
- // The current array is limited, so a driver may send multiple messages if the array size is
- // exceeded.
- //
- HRESULT
- RegisterForEvent (
- [in] const GUID *Api,
- [in] LONG_PTR userData
- );
-
- //
- // UnregisterForEvent():
- //
- // Disable event reporting for the given event GUID.
- //
- HRESULT
- UnregisterForEvent (
- [in] const GUID *Api
- );
-
- //
- // SetAllDefaults
- //
- HRESULT SetAllDefaults(void);
-
- //
- // Extended SetValue & SetAllDefaults:
- //
- // Changes the current value of a parameter and returns back an alteration list
- //
- // The secondary arguments return back a list of other settings
- // that changed as a result of the SetValue() call (for UI updates etc)
- // The client must free the buffer.
- //
- HRESULT
- SetValueWithNotify (
- [in] const GUID *Api,
- [in] VARIANT *Value,
- [out, size_is(,*ChangedParamCount)] GUID **ChangedParam,
- [out] ULONG *ChangedParamCount
- );
-
- //
- // SetAllDefaultsWithNotify
- //
- HRESULT SetAllDefaultsWithNotify(
- [out, size_is(,*ChangedParamCount)] GUID **ChangedParam,
- [out] ULONG *ChangedParamCount
- );
- //
- // GetAllSettings
- // Load the current settings from a stream
- //
- HRESULT GetAllSettings( [in] IStream* );
-
- //
- // SetAllSettings
- // Save the current settings to a stream
- //
- HRESULT SetAllSettings( [in] IStream* );
-
- //
- // SetAllSettingsWithNotify
- //
- HRESULT SetAllSettingsWithNotify( IStream*,
- [out, size_is(,*ChangedParamCount)] GUID **ChangedParam,
- [out] ULONG *ChangedParamCount );
-}
-
-[
- object,
- local,
- uuid(a8809222-07bb-48ea-951c-33158100625b),
- pointer_default(unique)
-]
-interface IGetCapabilitiesKey : IUnknown
-{
- HRESULT GetCapabilitiesKey( [out] HKEY* pHKey );
-};
-
-// -----------------------------------------------------------------------------------------
-// From this point on, this is retained for backwards compatiblity only
-// Do not use this for future encoders
-// -----------------------------------------------------------------------------------------
-[
- object,
- uuid(70423839-6ACC-4b23-B079-21DBF08156A5),
- pointer_default(unique)
-]
-interface IEncoderAPI : IUnknown
-{
- HRESULT IsSupported ( [in] const GUID *Api );
- HRESULT IsAvailable ( [in] const GUID *Api );
- HRESULT GetParameterRange ( [in] const GUID *Api,
- [out] VARIANT *ValueMin, [out] VARIANT *ValueMax,
- [out] VARIANT *SteppingDelta );
- HRESULT GetParameterValues ( [in] const GUID *Api,
- [out, size_is(,*ValuesCount)] VARIANT **Values,
- [out] ULONG *ValuesCount );
- HRESULT GetDefaultValue ( [in] const GUID *Api, [out] VARIANT *Value );
- HRESULT GetValue ( [in] const GUID *Api, [out] VARIANT *Value );
- HRESULT SetValue ( [in] const GUID *Api, [in] VARIANT *Value );
-}
-
-[
- object,
- uuid(02997C3B-8E1B-460e-9270-545E0DE9563E),
- pointer_default(unique)
-]
-interface IVideoEncoder : IEncoderAPI
-{
-}
-//---------------------------------------------------------------------
-//
-// Old Encoder API Interfaces
-//
-//---------------------------------------------------------------------
-
-cpp_quote ("#ifndef __ENCODER_API_DEFINES__")
-cpp_quote ("#define __ENCODER_API_DEFINES__")
-
-typedef enum {
-
- //
- // Bit rate used for encoding is constant
- //
- ConstantBitRate = 0,
-
- //
- // Bit rate used for encoding is variable with the specified bitrate used
- // as a guaranteed average over a specified window. The default window
- // size is considered to be 5 minutes.
- //
- VariableBitRateAverage,
-
- //
- // Bit rate used for encoding is variable with the specified bitrate used
- // as a peak rate over a specified window. The default window size
- // is considered to be 500ms (classically one GOP).
- //
- VariableBitRatePeak
-
-} VIDEOENCODER_BITRATE_MODE;
-
-cpp_quote ("#endif // __ENCODER_API_DEFINES__")
-
-cpp_quote("#define AM_GETDECODERCAP_QUERY_VMR_SUPPORT 0x00000001")
-cpp_quote("#define VMR_NOTSUPPORTED 0x00000000")
-cpp_quote("#define VMR_SUPPORTED 0x00000001")
-
-cpp_quote("#define AM_QUERY_DECODER_VMR_SUPPORT 0x00000001")
-cpp_quote("#define AM_QUERY_DECODER_DXVA_1_SUPPORT 0x00000002")
-
-cpp_quote("#define AM_QUERY_DECODER_DVD_SUPPORT 0x00000003")
-cpp_quote("#define AM_QUERY_DECODER_ATSC_SD_SUPPORT 0x00000004")
-cpp_quote("#define AM_QUERY_DECODER_ATSC_HD_SUPPORT 0x00000005")
-cpp_quote("#define AM_GETDECODERCAP_QUERY_VMR9_SUPPORT 0x00000006")
-
-cpp_quote("#define DECODER_CAP_NOTSUPPORTED 0x00000000")
-cpp_quote("#define DECODER_CAP_SUPPORTED 0x00000001")
-
-[
- object,
- local,
- uuid(c0dff467-d499-4986-972b-e1d9090fa941),
- pointer_default(unique)
-]
-interface IAMDecoderCaps : IUnknown
-{
- HRESULT GetDecoderCaps([in] DWORD dwCapIndex, [out] DWORD* lpdwCap);
-};
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// IAMCertifiedOutputProtection
-//
-///////////////////////////////////////////////////////////////////////////////
-typedef struct _AMCOPPSignature {
- BYTE Signature[256];
-} AMCOPPSignature;
-
-typedef struct _AMCOPPCommand {
- GUID macKDI; // 16 bytes
- GUID guidCommandID; // 16 bytes
- DWORD dwSequence; // 4 bytes
- DWORD cbSizeData; // 4 bytes
- BYTE CommandData[4056]; // 4056 bytes (4056+4+4+16+16 = 4096)
-} AMCOPPCommand, *LPAMCOPPCommand;
-
-typedef struct _AMCOPPStatusInput {
- GUID rApp; // 16 bytes
- GUID guidStatusRequestID;// 16 bytes
- DWORD dwSequence; // 4 bytes
- DWORD cbSizeData; // 4 bytes
- BYTE StatusData[4056]; // 4056 bytes (4056+4+4+16+16 = 4096)
-} AMCOPPStatusInput, *LPAMCOPPStatusInput;
-
-typedef struct _AMCOPPStatusOutput {
- GUID macKDI; // 16 bytes
- DWORD cbSizeData; // 4 bytes
- BYTE COPPStatus[4076]; // 4076 bytes (4076+16+4 = 4096)
-} AMCOPPStatusOutput, *LPAMCOPPStatusOutput;
-
-
-[
- object,
- local,
- uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515),
- pointer_default(unique)
-]
-interface IAMCertifiedOutputProtection : IUnknown
-{
- HRESULT KeyExchange (
- [out] GUID* pRandom, // 128-bit random number generated by Graphics Driver
- [out] BYTE** VarLenCertGH, // Graphics Hardware certificate, memory released by CoTaskMemFree
- [out] DWORD* pdwLengthCertGH); // Length of Graphics Hardware certificate
-
- HRESULT SessionSequenceStart(
- [in] AMCOPPSignature*pSig); // Concatenation of 128-bit random data security session key,
- // 128-bit random data integrity session key, 32-bit random
- // starting status sequence number and 32-bit random starting
- // command sequence number encrypted with the public key of
- // the graphic hardware. This value is 2048 bits long.
-
- HRESULT ProtectionCommand(
- [in] const AMCOPPCommand* cmd); // Encrypted command
-
- HRESULT ProtectionStatus(
- [in] const AMCOPPStatusInput* pStatusInput, // Encrypted Status request
- [out] AMCOPPStatusOutput* pStatusOutput); // Encrypted Status results
-};
-
diff --git a/dxsdk/Include/DShowIDL/bdaiface.idl b/dxsdk/Include/DShowIDL/bdaiface.idl
deleted file mode 100644
index e1d27ca9..00000000
--- a/dxsdk/Include/DShowIDL/bdaiface.idl
+++ /dev/null
@@ -1,1013 +0,0 @@
-//------------------------------------------------------------------------------
-// File: BDAIface.idl
-//
-// Desc: This file defines the Ring 3 BDA interfaces that are common to
-// all BDA network and device types.
-//
-// The interfaces specific to a particular Network Type or filter
-// implementation are defined in a separate include file for that
-// Network Type or filter implementation.
-//
-// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------
-// IUnknown import idl
-//---------------------------------------------------------------------
-#ifndef DO_NO_IMPORTS
-import "unknwn.idl";
-import "strmif.idl";
-import "BdaTypes.h";
-#endif
-
-//---------------------------------------------------------------------
-//
-// IBDA_NetworkProvider interface
-//
-// Implemented by a BDA Network Provider
-//
-// Used by a BDA device filter to register itself with
-// a Network Provider and query information about the
-// the current tuning request.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
- pointer_default(unique)
-]
-
-interface IBDA_NetworkProvider : IUnknown
-{
-
- HRESULT
- PutSignalSource (
- [in] ULONG ulSignalSource
- );
-
-
- HRESULT
- GetSignalSource (
- [in, out] ULONG * pulSignalSource
- );
-
- HRESULT
- GetNetworkType (
- [in, out] GUID * pguidNetworkType
- );
-
- HRESULT
- PutTuningSpace (
- [in] REFGUID guidTuningSpace
- );
-
- HRESULT
- GetTuningSpace (
- [in, out] GUID * pguidTuingSpace
- );
-
- HRESULT
- RegisterDeviceFilter (
- [in] IUnknown * pUnkFilterControl,
- [in, out] ULONG * ppvRegisitrationContext
- );
-
- HRESULT
- UnRegisterDeviceFilter (
- [in] ULONG pvRegistrationContext
- );
-
-}
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_EthernetFilter interface
-//
-// Implemented by a BDA Network Provider
-//
-// Used by an Ethernet Network Data Sink filter (eg. IPSink) to
-// request that the Network Provider make its best effort to tune
-// to the stream(s) on which a list of Ethernet multicast addresses
-// may be transmitted.
-//
-// Addresses in the address list are byte aligned in Network order.
-// UlcbAddresses will always be an integer multiple of the
-// size of an ethernet address.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_EthernetFilter : IUnknown
-{
- HRESULT
- GetMulticastListSize (
- [in, out] ULONG * pulcbAddresses
- );
-
- HRESULT
- PutMulticastList (
- [in] ULONG ulcbAddresses,
- [in, size_is(ulcbAddresses)] BYTE pAddressList []
- );
-
- HRESULT
- GetMulticastList (
- [in, out] ULONG * pulcbAddresses,
- [out, size_is(*pulcbAddresses)] BYTE pAddressList []
- );
-
- HRESULT
- PutMulticastMode (
- [in] ULONG ulModeMask
- );
-
- HRESULT
- GetMulticastMode (
- [out] ULONG * pulModeMask
- );
-
-}
-
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_IPV4Filter interface
-//
-// Implemented by a BDA Network Provider
-//
-// Used by an IPv4 Network Data Sink filter to request
-// that the Network Provider make its best effort to tune
-// to the stream(s) on which a list of IPv4 multicast addresses
-// may be transmitted.
-//
-// Addresses in the address list are byte aligned in Network order.
-// UlcbAddresses will always be an integer multiple of the
-// size of an IPv4 address.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_IPV4Filter : IUnknown
-{
-
- HRESULT
- GetMulticastListSize (
- [in, out] ULONG * pulcbAddresses
- );
-
- HRESULT
- PutMulticastList (
- [in] ULONG ulcbAddresses,
- [in, size_is(ulcbAddresses)] BYTE pAddressList []
- );
-
- HRESULT
- GetMulticastList (
- [in, out] ULONG * pulcbAddresses,
- [out, size_is(*pulcbAddresses)] BYTE pAddressList []
- );
-
- HRESULT
- PutMulticastMode (
- [in] ULONG ulModeMask
- );
-
- HRESULT
- GetMulticastMode (
- [out] ULONG* pulModeMask
- );
-}
-
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_IPV6Filter interface
-//
-// Implemented by a BDA Network Provider
-//
-// Used by an IPv6 Network Data Sink filter to request
-// that the Network Provider make its best effort to tune
-// to the stream(s) on which a list of IPv6 multicast addresses
-// may be transmitted.
-//
-// Addresses in the address list are byte aligned in Network order.
-// UlcbAddresses will always be an integer multiple of the
-// size of an IPv6 address.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
- pointer_default(unique)
-]
-
-interface IBDA_IPV6Filter : IUnknown
-{
-
- HRESULT
- GetMulticastListSize (
- [in, out] ULONG * pulcbAddresses
- );
-
- HRESULT
- PutMulticastList (
- [in] ULONG ulcbAddresses,
- [in, size_is(ulcbAddresses)] BYTE pAddressList []
- );
-
- HRESULT
- GetMulticastList (
- [in, out] ULONG * pulcbAddresses,
- [out, size_is(*pulcbAddresses)] BYTE pAddressList []
- );
-
- HRESULT
- PutMulticastMode (
- [in] ULONG ulModeMask
- );
-
- HRESULT
- GetMulticastMode (
- [out] ULONG* pulModeMask
- );
-}
-
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_DeviceControl interface
-//
-// Implemented by a BDA Device Filter
-//
-// Used by the Network Provider to commit a series of changes
-// on a BDA device filter. The device filter validates and
-// accumulates all changes requested after StartChanges(). It
-// effects the accumulated list of changes when CommitChanges() is
-// called.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_DeviceControl : IUnknown
-{
- HRESULT
- StartChanges (
- void
- );
-
- HRESULT
- CheckChanges (
- void
- );
-
- HRESULT
- CommitChanges (
- void
- );
-
- HRESULT
- GetChangeState (
- [in, out] ULONG * pState
- );
-
-}
-
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_PinControl interface
-//
-// Implemented by a BDA Device Filter's Pin
-//
-// Used by the Network Provider to determine the BDA PinID and
-// PinType on a BDA Filter's Pin
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
- pointer_default(unique)
-]
-
-interface IBDA_PinControl : IUnknown
-{
- HRESULT
- GetPinID (
- [in, out] ULONG * pulPinID
- );
-
- HRESULT
- GetPinType (
- [in, out] ULONG * pulPinType
- );
-
- HRESULT
- RegistrationContext (
- [in, out] ULONG * pulRegistrationCtx
- );
-}
-
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_SignalProperties interface
-//
-// Implemented by a BDA Device Filter
-//
-// BDA Signal Properties is used by a Network Provider to inform
-// a BDA Device Filter about the current tuning request. The
-// Network Provider will call the Put functions when the BDA
-// device is first registered with the Network Provider and whenever
-// the current tuning request is modified.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
- pointer_default(unique)
-]
-
-interface IBDA_SignalProperties : IUnknown
-{
- HRESULT
- PutNetworkType (
- [in] REFGUID guidNetworkType
- );
-
- HRESULT
- GetNetworkType (
- [in, out] GUID * pguidNetworkType
- );
-
- HRESULT
- PutSignalSource (
- [in] ULONG ulSignalSource
- );
-
- HRESULT
- GetSignalSource (
- [in, out] ULONG * pulSignalSource
- );
-
- HRESULT
- PutTuningSpace (
- [in] REFGUID guidTuningSpace
- );
-
- HRESULT
- GetTuningSpace (
- [in, out] GUID * pguidTuingSpace
- );
-}
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_SignalStatistics interface
-//
-// Implemented by a BDA Control Node
-//
-// A BDA Control Node may return these properties to describe
-// the condition of a signal that is being received.
-//
-//
-//
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(1347D106-CF3A-428a-A5CB-AC0D9A2A4338),
- pointer_default(unique)
-]
-
-interface IBDA_SignalStatistics : IUnknown
-{
- HRESULT
- put_SignalStrength (
- [in] LONG lDbStrength
- );
-
- HRESULT
- get_SignalStrength (
- [in, out] LONG * plDbStrength
- );
-
- HRESULT
- put_SignalQuality (
- [in] LONG lPercentQuality
- );
-
- HRESULT
- get_SignalQuality (
- [in, out] LONG * plPercentQuality
- );
-
- HRESULT
- put_SignalPresent (
- [in] BOOLEAN fPresent
- );
-
- HRESULT
- get_SignalPresent (
- [in, out] BOOLEAN * pfPresent
- );
-
- HRESULT
- put_SignalLocked (
- [in] BOOLEAN fLocked
- );
-
- HRESULT
- get_SignalLocked (
- [in, out] BOOLEAN * pfLocked
- );
-
- HRESULT
- put_SampleTime (
- [in] LONG lmsSampleTime
- );
-
- HRESULT
- get_SampleTime (
- [in, out] LONG * plmsSampleTime
- );
-}
-
-
-//---------------------------------------------------------------------
-//
-// IBDA_Topology interface
-//
-// Implemented by a BDA Device Filter
-//
-// Used by the Network Provider to query a BDA Device Filter's
-// possible topologies (template topology) and to configure
-// the device with an appropriate topology for the current
-// tuning request. It is also used to get an IUnknown to
-// a control node which may be used to set specific tuning
-// information.
-//
-//---------------------------------------------------------------------
-[
- object,
- uuid(79B56888-7FEA-4690-B45D-38FD3C7849BE),
- pointer_default(unique)
-]
-
-interface IBDA_Topology : IUnknown
-{
- HRESULT
- GetNodeTypes (
- [in, out] ULONG * pulcNodeTypes,
- [in] ULONG ulcNodeTypesMax,
- [in, out, size_is (ulcNodeTypesMax)] ULONG rgulNodeTypes[]
- );
-
- HRESULT
- GetNodeDescriptors (
- [in, out] ULONG * ulcNodeDescriptors,
- [in] ULONG ulcNodeDescriptorsMax,
- [in, out, size_is (ulcNodeDescriptorsMax)] BDANODE_DESCRIPTOR rgNodeDescriptors[]
- );
-
- HRESULT
- GetNodeInterfaces (
- [in] ULONG ulNodeType,
- [in, out] ULONG * pulcInterfaces,
- [in] ULONG ulcInterfacesMax,
- [in, out, size_is (ulcInterfacesMax)] GUID rgguidInterfaces[]
- );
-
- HRESULT
- GetPinTypes (
- [in, out] ULONG * pulcPinTypes,
- [in] ULONG ulcPinTypesMax,
- [in, out, size_is (ulcPinTypesMax)] ULONG rgulPinTypes[]
- );
-
- HRESULT
- GetTemplateConnections (
- [in, out] ULONG * pulcConnections,
- [in] ULONG ulcConnectionsMax,
- [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION rgConnections[]
- );
-
- HRESULT
- CreatePin (
- [in] ULONG ulPinType,
- [in, out] ULONG * pulPinId
- );
-
- HRESULT
- DeletePin (
- [in] ULONG ulPinId
- );
-
- HRESULT
- SetMediaType (
- [in] ULONG ulPinId,
- [in] AM_MEDIA_TYPE * pMediaType
- );
-
- HRESULT
- SetMedium (
- [in] ULONG ulPinId,
- [in] REGPINMEDIUM * pMedium
- );
-
- HRESULT
- CreateTopology (
- [in] ULONG ulInputPinId,
- [in] ULONG ulOutputPinId
- );
-
- HRESULT
- GetControlNode (
- [in] ULONG ulInputPinId,
- [in] ULONG ulOutputPinId,
- [in] ULONG ulNodeType,
- [in, out] IUnknown ** ppControlNode
- );
-}
-
-//---------------------------------------------------------------------
-// IBDA_VoidTransform interface
-//---------------------------------------------------------------------
-[
- object,
- uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_VoidTransform : IUnknown
-{
- HRESULT
- Start (
- void
- );
-
- HRESULT
- Stop (
- void
- );
-
-}
-
-//---------------------------------------------------------------------
-// IBDA_NullTransform interface
-//---------------------------------------------------------------------
-[
- object,
- uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_NullTransform : IUnknown
-{
- HRESULT
- Start (
- void
- );
-
- HRESULT
- Stop (
- void
- );
-
-}
-
-
-//---------------------------------------------------------------------
-// IBDA_FrequencyFilter interface
-//---------------------------------------------------------------------
-[
- object,
- uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_FrequencyFilter : IUnknown
-{
- HRESULT
- put_Autotune (
- [in] ULONG ulTransponder
- );
-
- HRESULT
- get_Autotune (
- [in, out] ULONG * pulTransponder
- );
-
- HRESULT
- put_Frequency (
- [in] ULONG ulFrequency
- );
-
- HRESULT
- get_Frequency (
- [in, out] ULONG * pulFrequency
- );
-
- HRESULT
- put_Polarity (
- [in] Polarisation Polarity
- );
-
- HRESULT
- get_Polarity (
- [in, out] Polarisation * pPolarity
- );
-
- HRESULT
- put_Range (
- [in] ULONG ulRange
- );
-
- HRESULT
- get_Range (
- [in, out] ULONG * pulRange
- );
-
- HRESULT
- put_Bandwidth (
- [in] ULONG ulBandwidth
- );
-
- HRESULT
- get_Bandwidth (
- [in, out] ULONG * pulBandwidth
- );
-
- HRESULT
- put_FrequencyMultiplier (
- [in] ULONG ulMultiplier
- );
-
- HRESULT
- get_FrequencyMultiplier (
- [in, out] ULONG * pulMultiplier
- );
-}
-
-
-//---------------------------------------------------------------------
-// IBDA_LNBInfo interface
-//---------------------------------------------------------------------
-[
- object,
- uuid(992CF102-49F9-4719-A664-C4F23E2408F4),
- pointer_default(unique)
-]
-
-interface IBDA_LNBInfo : IUnknown
-{
- HRESULT
- put_LocalOscilatorFrequencyLowBand (
- [in] ULONG ulLOFLow
- );
-
- HRESULT
- get_LocalOscilatorFrequencyLowBand (
- [in, out] ULONG * pulLOFLow
- );
-
- HRESULT
- put_LocalOscilatorFrequencyHighBand (
- [in] ULONG ulLOFHigh
- );
-
- HRESULT
- get_LocalOscilatorFrequencyHighBand (
- [in, out] ULONG * pulLOFHigh
- );
-
- HRESULT
- put_HighLowSwitchFrequency (
- [in] ULONG ulSwitchFrequency
- );
-
- HRESULT
- get_HighLowSwitchFrequency (
- [in, out] ULONG * pulSwitchFrequency
- );
-}
-
-
-//---------------------------------------------------------------------
-// IBDA_AutoDemodulate interface
-//---------------------------------------------------------------------
-[
- object,
- uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
- pointer_default(unique)
-]
-
-interface IBDA_AutoDemodulate : IUnknown
-{
- HRESULT
- put_AutoDemodulate (
- void
- );
-}
-
-//---------------------------------------------------------------------
-// IBDA_DigitalDemodulator interface
-//---------------------------------------------------------------------
-[
- object,
- uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
- pointer_default(unique)
-]
-
-interface IBDA_DigitalDemodulator : IUnknown
-{
- HRESULT
- put_ModulationType (
- [in] ModulationType * pModulationType
- );
-
- HRESULT
- get_ModulationType (
- [in, out] ModulationType * pModulationType
- );
-
- HRESULT
- put_InnerFECMethod (
- [in] FECMethod * pFECMethod
- );
-
- HRESULT
- get_InnerFECMethod (
- [in, out] FECMethod * pFECMethod
- );
-
- HRESULT
- put_InnerFECRate (
- [in] BinaryConvolutionCodeRate * pFECRate
- );
-
- HRESULT
- get_InnerFECRate (
- [in, out] BinaryConvolutionCodeRate * pFECRate
- );
-
- HRESULT
- put_OuterFECMethod (
- [in] FECMethod * pFECMethod
- );
-
- HRESULT
- get_OuterFECMethod (
- [in, out] FECMethod * pFECMethod
- );
-
- HRESULT
- put_OuterFECRate (
- [in] BinaryConvolutionCodeRate * pFECRate
- );
-
- HRESULT
- get_OuterFECRate (
- [in, out] BinaryConvolutionCodeRate * pFECRate
- );
-
- HRESULT
- put_SymbolRate (
- [in] ULONG * pSymbolRate
- );
-
- HRESULT
- get_SymbolRate (
- [in, out] ULONG * pSymbolRate
- );
-
- HRESULT
- put_SpectralInversion (
- [in] SpectralInversion * pSpectralInversion
- );
-
- HRESULT
- get_SpectralInversion (
- [in, out] SpectralInversion * pSpectralInversion
- );
-}
-
-typedef enum
-{
- KSPROPERTY_IPSINK_MULTICASTLIST,
- KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
- KSPROPERTY_IPSINK_ADAPTER_ADDRESS
-
-} KSPROPERTY_IPSINK;
-
-
-
-//---------------------------------------------------------------------
-// IBDA_IPSinkControl interface (mutlimedia\filters.ks\ipsink)
-// IBDA_IPSinkInfo interface
-//
-// IBDA_IPSinkControl is no longer being supported for Ring3 clients.
-// Use the BDA_IPSinkInfo interface instead.
-//---------------------------------------------------------------------
-
-[
- object,
- uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
- pointer_default(unique),
- helpstring("Not supported - Use IBDA_IPSinkInfo instead")
-]
-interface IBDA_IPSinkControl : IUnknown
-{
- HRESULT GetMulticastList (
- [in, out] unsigned long *pulcbSize,
- [in, out] BYTE **pbBuffer
- );
-
-
- HRESULT GetAdapterIPAddress (
- [in,out] unsigned long *pulcbSize,
- [in,out] BYTE **pbBuffer
- );
-
-}
-
-[
- object,
- uuid(A750108F-492E-4d51-95F7-649B23FF7AD7),
- pointer_default(unique)
-]
-interface IBDA_IPSinkInfo : IUnknown
-{
- HRESULT get_MulticastList ( // returns N 6-byte 802.3 IP addreses.
- [in, out] ULONG * pulcbAddresses, // 6*N
- [out, size_is(*pulcbAddresses)] BYTE **ppbAddressList // Allocated by caller, must deallocate in callee with CoTaskMemFree()
- );
-
- HRESULT get_AdapterIPAddress (
- [out] BSTR *pbstrBuffer
- );
-
- HRESULT get_AdapterDescription (
- [out] BSTR *pbstrBuffer
- );
-}
-//
-// mpeg-2 demultiplexer-specific interfaces follow
-//
-
-//---------------------------------------------------------------------
-// IEnumPIDMap interface
-//---------------------------------------------------------------------
-
-#ifdef REMOVE_THESE
-typedef enum {
- MEDIA_TRANSPORT_PACKET, // complete TS packet e.g. pass-through mode
- MEDIA_ELEMENTARY_STREAM, // PES payloads; audio/video only
- MEDIA_MPEG2_PSI, // PAT, PMT, CAT, Private
- MEDIA_TRANSPORT_PAYLOAD // gathered TS packet payloads (PES packets, etc...)
-} MEDIA_SAMPLE_CONTENT ;
-
-typedef struct {
- ULONG ulPID ;
- MEDIA_SAMPLE_CONTENT MediaSampleContent ;
-} PID_MAP ;
-#endif // REMOVE_THESE
-
-[
- object,
- uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
- pointer_default(unique)
-]
-interface IEnumPIDMap : IUnknown
-{
- HRESULT
- Next (
- [in] ULONG cRequest,
- [in, out, size_is (cRequest)] PID_MAP * pPIDMap,
- [out] ULONG * pcReceived
- ) ;
-
- HRESULT
- Skip (
- [in] ULONG cRecords
- ) ;
-
- HRESULT
- Reset (
- ) ;
-
- HRESULT
- Clone (
- [out] IEnumPIDMap ** ppIEnumPIDMap
- ) ;
-} ;
-
-//---------------------------------------------------------------------
-// IMPEG2PIDMap interface
-//---------------------------------------------------------------------
-
-[
- object,
- uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
- pointer_default(unique)
-]
-interface IMPEG2PIDMap : IUnknown
-{
- HRESULT
- MapPID (
- [in] ULONG culPID,
- [in] ULONG * pulPID,
- [in] MEDIA_SAMPLE_CONTENT MediaSampleContent
- ) ;
-
- HRESULT
- UnmapPID (
- [in] ULONG culPID,
- [in] ULONG * pulPID
- ) ;
-
- HRESULT
- EnumPIDMap (
- [out] IEnumPIDMap ** pIEnumPIDMap
- ) ;
-} ;
-
-//---------------------------------------------------------------------
-// IFrequencyMap interface
-// Currently implemented on the TIF. The interface can be QIed on the NP
-//---------------------------------------------------------------------
-
-
- [
- object,
- uuid(06FB45C1-693C-4ea7-B79F-7A6A54D8DEF2),
- helpstring("IFrequencyMap Interface"),
- pointer_default(unique),
- hidden, restricted
- ]
-
- interface IFrequencyMap : IUnknown
- {
- [helpstring("method get_FrequencyMapping")]
- HRESULT
- get_FrequencyMapping(
- [out] ULONG* ulCount,
- [out, size_is(1, *ulCount)] ULONG** ppulList
- );
- [helpstring("method put_FrequencyMapping")]
- HRESULT
- put_FrequencyMapping(
- [in] ULONG ulCount,
- [in, size_is(ulCount)] ULONG pList[]
- );
- [helpstring("method get_CountryCode")]
- HRESULT
- get_CountryCode(
- [out] ULONG *pulCountryCode
- );
- [helpstring("method put_CountryCode")]
- HRESULT
- put_CountryCode(
- [in] ULONG ulCountryCode
- );
-
- [helpstring("method get_DefaultFrequencyMapping")]
- HRESULT
- get_DefaultFrequencyMapping(
- [in] ULONG ulCountryCode,
- [out] ULONG* pulCount,
- [out, size_is(1, *pulCount)] ULONG** ppulList
- );
-
-
- [helpstring("method get_CountryCodeList")]
- HRESULT
- get_CountryCodeList(
- [out] ULONG* pulCount,
- [out, size_is(1, *pulCount)] ULONG** ppulList
- );
-
-
- };
-
-
-
diff --git a/dxsdk/Include/DShowIDL/control.odl b/dxsdk/Include/DShowIDL/control.odl
deleted file mode 100644
index 4fba88cf..00000000
--- a/dxsdk/Include/DShowIDL/control.odl
+++ /dev/null
@@ -1,912 +0,0 @@
-//==========================================================================;
-//
-// 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);
- }
-};
diff --git a/dxsdk/Include/DShowIDL/ddstream.idl b/dxsdk/Include/DShowIDL/ddstream.idl
deleted file mode 100644
index 30fa0475..00000000
--- a/dxsdk/Include/DShowIDL/ddstream.idl
+++ /dev/null
@@ -1,86 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);
-
-};
diff --git a/dxsdk/Include/DShowIDL/devenum.idl b/dxsdk/Include/DShowIDL/devenum.idl
deleted file mode 100644
index 257193f4..00000000
--- a/dxsdk/Include/DShowIDL/devenum.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);
-}
diff --git a/dxsdk/Include/DShowIDL/dmodshow.idl b/dxsdk/Include/DShowIDL/dmodshow.idl
deleted file mode 100644
index 246f5ae6..00000000
--- a/dxsdk/Include/DShowIDL/dmodshow.idl
+++ /dev/null
@@ -1,33 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);
-}
-
diff --git a/dxsdk/Include/DShowIDL/dshowasf.idl b/dxsdk/Include/DShowIDL/dshowasf.idl
deleted file mode 100644
index 8add5111..00000000
--- a/dxsdk/Include/DShowIDL/dshowasf.idl
+++ /dev/null
@@ -1,59 +0,0 @@
-//------------------------------------------------------------------------------
-// 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 );
-}
-
diff --git a/dxsdk/Include/DShowIDL/dvdif.idl b/dxsdk/Include/DShowIDL/dvdif.idl
deleted file mode 100644
index 4ad2bca1..00000000
--- a/dxsdk/Include/DShowIDL/dvdif.idl
+++ /dev/null
@@ -1,2326 +0,0 @@
-//------------------------------------------------------------------------------
-// File: DVDIf.idl
-//
-// Desc: DirectShow interfaces to control playback of a DVD filter graph.
-//
-// Copyright (c) 1992-2002, Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------------------------
-
-
-// forward declarations - these are the interfaces declared in this file
-
-import "unknwn.idl";
-import "objidl.idl";
-
-cpp_quote("#include <ddraw.h>")
-
-interface IDvdControl;
-interface IDvdInfo;
-interface IDirectDraw;
-interface IDirectDrawSurface;
-interface IDvdGraphBuilder ;
-interface IDDrawExclModeVideo;
-interface IDDrawExclModeVideoCallback;
-interface IDvdCmd;
-interface IDvdState;
-
-
-//==========================================================================
-//==========================================================================
-//
-// typedefs used by IDvdControl and IDvdInfo interfaces.
-//
-//==========================================================================
-//==========================================================================
-
-typedef enum tagDVD_DOMAIN {
- // The DVD_DOMAIN is used to indicate the stat of a DVD player.
- DVD_DOMAIN_FirstPlay=1, // doing default initialization of a dvd disc
- DVD_DOMAIN_VideoManagerMenu, // displaying menus for whole disc
- DVD_DOMAIN_VideoTitleSetMenu, // displaying menus for current title set
- DVD_DOMAIN_Title, // displaying current title
- DVD_DOMAIN_Stop // player is in stopped state
-} DVD_DOMAIN;
-
-typedef enum tagDVD_MENU_ID {
- DVD_MENU_Title = 2, // to choose a title from any VTS in a DVD-Video volume
- DVD_MENU_Root = 3, // main menu for a specific VTS
- DVD_MENU_Subpicture =4, // to choose subpicture stream in a VTS
- DVD_MENU_Audio = 5, // to choose audio stream in a VTS
- DVD_MENU_Angle = 6, // to choose angle num in a VTS
- DVD_MENU_Chapter = 7 // to choose a chapter in a VTS
- // the Root menu always provides a means of getting to to Subpicture, Audio,
- // Angle and Chapter menus if they exist.
-} DVD_MENU_ID;
-
-typedef enum tagDVD_DISC_SIDE {
- DVD_SIDE_A = 1,
- DVD_SIDE_B = 2
-} DVD_DISC_SIDE;
-
-
-typedef enum tagDVD_PREFERRED_DISPLAY_MODE
-{
- // DVD_PREFERRED_DISPLAY_MODE is used to indicate the user's
- // preferred window aspect ratio and preferred method of converion of
- // 16*9 content to a 4*3 window aspect ratio. Pan-scan and letterboxing are
- // the two conversion methods. This enum is used to indicate only a preference of
- // conversion mechinism since some content can only be converted using one
- // of these methods. 4*3 content is converted to a 16*9 window always by using
- // "reverse" letterboxing where black bars are added to the right and left
- // sides of the display instead of the top and bottom of the display as in the 16*9
- // to 4*3 conversion useing letterboxing.
- DISPLAY_CONTENT_DEFAULT = 0, // default to content
- DISPLAY_16x9 = 1, // 16x9 display
- DISPLAY_4x3_PANSCAN_PREFERRED = 2, // 4x3 display with pan-scan preferrence
- DISPLAY_4x3_LETTERBOX_PREFERRED = 3 // 4x3 display with letterbox preferrence
-
-} DVD_PREFERRED_DISPLAY_MODE;
-
-typedef WORD DVD_REGISTER;
-typedef DVD_REGISTER GPRMARRAY[16]; // DVD-Video 1.0 has 16 16-bit General Parameter Registers
-typedef DVD_REGISTER SPRMARRAY[24]; // DVD-Video 1.0 has 24 16-bit System Parameter Registers
-
-
-
-// these are only for IDVDInfo1 compatibility and require the DVD-Video 1.0 specification
-// Please use the IDVDInfo2's DVD_Title/MenuAttributes, DVD_VideoAttributes, DVD_AudioAttributes, and DVD_SubpictureAttributes
-typedef struct tagDVD_ATR
-{
- //
- // Refer to the DVD-Video 1.0 spec to parse these structures.
- //
- ULONG ulCAT; // VMG_CAT if this is for a volume; or VTS_CAT
- // if this is for a Video Title Set (VTS)
- BYTE pbATRI[768];// All stream attributes for menu and title from bytes
- // 256 to 1023 of VMGI or VTSI.
-} DVD_ATR;
-typedef BYTE DVD_VideoATR[2]; // video stream attributes.
-typedef BYTE DVD_AudioATR[8]; // audio stream attributes.
-typedef BYTE DVD_SubpictureATR[6]; // subpicture stream attributes.
-
-// DVD1.0 Timecode is BCD encoded in this format: 0xHhMmSsFf, where
-// H is tens of hours
-// h is hours
-// M is tens of minutes
-// m is minutes
-// S is tens of seconds
-// s is seconds
-// F is tens of frames
-// f is frames
-// Note that you must know the frame rate to interperate the frame count as time.
-typedef enum tagDVD_FRAMERATE
-{
- DVD_FPS_25 =1, // 25 frames per second
- DVD_FPS_30NonDrop = 3 // exactly 30 frames per second
-} DVD_FRAMERATE;
-
-cpp_quote("typedef struct tagDVD_TIMECODE")
-cpp_quote("{")
-cpp_quote(" ULONG Hours1 :4; // Hours")
-cpp_quote(" ULONG Hours10 :4; // Tens of Hours ")
-cpp_quote("")
-cpp_quote(" ULONG Minutes1 :4; // Minutes ")
-cpp_quote(" ULONG Minutes10:4; // Tens of Minutes ")
-cpp_quote("")
-cpp_quote(" ULONG Seconds1 :4; // Seconds ")
-cpp_quote(" ULONG Seconds10:4; // Tens of Seconds ")
-cpp_quote("")
-cpp_quote(" ULONG Frames1 :4; // Frames ")
-cpp_quote(" ULONG Frames10 :2; // Tens of Frames ")
-cpp_quote("")
-cpp_quote(" ULONG FrameRateCode: 2; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop")
-cpp_quote("} DVD_TIMECODE;")
-
-//
-// Newer IDVD2 methods can use the HMSF format instead
-// Call SetOption( DVD_HMSF_TimeCodeEvents, TRUE) to return EC_DVD_CURRENT_HMSF_TIME
-// instead of EC_DVD_CURRENT_TIME events
-//
-typedef enum tagDVD_TIMECODE_FLAGS
-{
- DVD_TC_FLAG_25fps = 0x00000001, // 25 frames per second
- DVD_TC_FLAG_30fps = 0x00000002, // 30 frames per second
- DVD_TC_FLAG_DropFrame = 0x00000004, // 29.97 instead of 30 fps
- DVD_TC_FLAG_Interpolated = 0x00000008, // timecode may be inaccurate
- // remainder of bits are reserved and should not be read
-} DVD_TIMECODE_FLAGS;
-
-// this can be cast to/from a ULONG
-typedef struct tagDVD_HMSF_TIMECODE
-{
- BYTE bHours;
- BYTE bMinutes;
- BYTE bSeconds;
- BYTE bFrames;
-} DVD_HMSF_TIMECODE;
-
-typedef struct tagDVD_PLAYBACK_LOCATION2
-{
- //
- // TitleNum & ChapterNum or TitleNum & TimeCode are sufficient to save
- // playback location for One_Sequential_PGC_Titles.
- //
- ULONG TitleNum; // title number for whole disc (TTN not VTS_TTN)
- ULONG ChapterNum; // part-of-title number with title. 0xffffffff if not Once_Sequential_PGC_Title
- DVD_HMSF_TIMECODE TimeCode; // use DVD_TIMECODE for current playback time.
- ULONG TimeCodeFlags; // union of DVD_TIMECODE_EVENT_FLAGS
-
-} DVD_PLAYBACK_LOCATION2;
-
-typedef struct tagDVD_PLAYBACK_LOCATION
-{
- //
- // TitleNum & ChapterNum or TitleNum & TimeCode are sufficient to save
- // playback location for One_Sequential_PGC_Titles.
- //
- ULONG TitleNum; // title number for whole disc (TTN not VTS_TTN)
- ULONG ChapterNum; // part-of-title number with title. 0xffffffff if not Once_Sequential_PGC_Title
- ULONG TimeCode; // use DVD_TIMECODE for current playback time. 0xffffffff if not Once_Sequential_PGC_Title
-
-} DVD_PLAYBACK_LOCATION;
-
-typedef DWORD VALID_UOP_SOMTHING_OR_OTHER;
-
-typedef enum {
- //
- // Annex J User Functions ---
- //
- UOP_FLAG_Play_Title_Or_AtTime = 0x00000001, // Title_Or_Time_Play
- UOP_FLAG_Play_Chapter = 0x00000002, // Chapter_Search_Or_Play
- UOP_FLAG_Play_Title = 0x00000004, // Title_Play
- UOP_FLAG_Stop = 0x00000008, // Stop
- UOP_FLAG_ReturnFromSubMenu = 0x00000010, // GoUp
- UOP_FLAG_Play_Chapter_Or_AtTime = 0x00000020, // Time_Or_Chapter_Search
- UOP_FLAG_PlayPrev_Or_Replay_Chapter = 0x00000040, // Prev_Or_Top_PG_Search
- UOP_FLAG_PlayNext_Chapter = 0x00000080, // Next_PG_Search
- UOP_FLAG_Play_Forwards = 0x00000100, // Forward_Scan
- UOP_FLAG_Play_Backwards = 0x00000200, // Backward_Scan
- UOP_FLAG_ShowMenu_Title = 0x00000400, // Title_Menu_Call
- UOP_FLAG_ShowMenu_Root = 0x00000800, // Root_Menu_Call
- UOP_FLAG_ShowMenu_SubPic = 0x00001000, // SubPic_Menu_Call
- UOP_FLAG_ShowMenu_Audio = 0x00002000, // Audio_Menu_Call
- UOP_FLAG_ShowMenu_Angle = 0x00004000, // Angle_Menu_Call
- UOP_FLAG_ShowMenu_Chapter = 0x00008000, // Chapter_Menu_Call
- UOP_FLAG_Resume = 0x00010000, // Resume
- UOP_FLAG_Select_Or_Activate_Button = 0x00020000, // Button_Select_Or_Activate
- UOP_FLAG_Still_Off = 0x00040000, // Still_Off
- UOP_FLAG_Pause_On = 0x00080000, // Pause_On
- UOP_FLAG_Select_Audio_Stream = 0x00100000, // Audio_Stream_Change
- UOP_FLAG_Select_SubPic_Stream = 0x00200000, // SubPic_Stream_Change
- UOP_FLAG_Select_Angle = 0x00400000, // Angle_Change
- UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = 0x00800000, // Karaoke_Audio_Pres_Mode_Change
- UOP_FLAG_Select_Video_Mode_Preference = 0x01000000 // Video_Pres_Mode_Change
-} VALID_UOP_FLAG ;
-
-typedef enum {
- DVD_CMD_FLAG_None = 0x00000000,
- DVD_CMD_FLAG_Flush = 0x00000001,
- DVD_CMD_FLAG_SendEvents = 0x00000002,
- DVD_CMD_FLAG_Block = 0x00000004, // block end
- DVD_CMD_FLAG_StartWhenRendered = 0x00000008, // command "start" when the first frame is rendered
- DVD_CMD_FLAG_EndAfterRendered = 0x00000010, // command "ends" after the last frame is rendered
-} DVD_CMD_FLAGS;
-
-// For IDVDControl2::SetOption flags
-typedef enum {
- DVD_ResetOnStop = 1, // default TRUE
- DVD_NotifyParentalLevelChange = 2, // default FALSE
- DVD_HMSF_TimeCodeEvents = 3, // default FALSE (send DVD_CURRENT_TIME events)
- DVD_AudioDuringFFwdRew = 4 // default FALSE (or by reg)
-} DVD_OPTION_FLAG;
-
-typedef enum {
- DVD_Relative_Upper = 1,
- DVD_Relative_Lower = 2,
- DVD_Relative_Left = 3,
- DVD_Relative_Right = 4
-} DVD_RELATIVE_BUTTON;
-
-// Parental Level Information
-typedef enum tagDVD_PARENTAL_LEVEL
-{
- DVD_PARENTAL_LEVEL_8 = 0x8000,
- DVD_PARENTAL_LEVEL_7 = 0x4000,
- DVD_PARENTAL_LEVEL_6 = 0x2000,
- DVD_PARENTAL_LEVEL_5 = 0x1000,
- DVD_PARENTAL_LEVEL_4 = 0x0800,
- DVD_PARENTAL_LEVEL_3 = 0x0400,
- DVD_PARENTAL_LEVEL_2 = 0x0200,
- DVD_PARENTAL_LEVEL_1 = 0x0100
-} DVD_PARENTAL_LEVEL;
-
-
-typedef enum tagDVD_AUDIO_LANG_EXT
-{
- DVD_AUD_EXT_NotSpecified =0,
- DVD_AUD_EXT_Captions =1,
- DVD_AUD_EXT_VisuallyImpaired =2,
- DVD_AUD_EXT_DirectorComments1 =3,
- DVD_AUD_EXT_DirectorComments2 =4,
-} DVD_AUDIO_LANG_EXT;
-
-typedef enum tagDVD_SUBPICTURE_LANG_EXT
-{
- DVD_SP_EXT_NotSpecified =0,
- DVD_SP_EXT_Caption_Normal =1,
- DVD_SP_EXT_Caption_Big =2,
- DVD_SP_EXT_Caption_Children =3,
- DVD_SP_EXT_CC_Normal =5,
- DVD_SP_EXT_CC_Big =6,
- DVD_SP_EXT_CC_Children =7,
- DVD_SP_EXT_Forced =9,
- DVD_SP_EXT_DirectorComments_Normal =13,
- DVD_SP_EXT_DirectorComments_Big =14,
- DVD_SP_EXT_DirectorComments_Children =15,
-} DVD_SUBPICTURE_LANG_EXT;
-
-typedef enum tagDVD_AUDIO_APPMODE
-{
- DVD_AudioMode_None = 0, // no special mode
- DVD_AudioMode_Karaoke = 1,
- DVD_AudioMode_Surround = 2,
- DVD_AudioMode_Other = 3,
-} DVD_AUDIO_APPMODE;
-
-typedef enum tagDVD_AUDIO_FORMAT
-{
- DVD_AudioFormat_AC3 = 0,
- DVD_AudioFormat_MPEG1 = 1,
- DVD_AudioFormat_MPEG1_DRC = 2, // MPEG1 with dynamic range control
- DVD_AudioFormat_MPEG2 = 3,
- DVD_AudioFormat_MPEG2_DRC = 4, // MPEG2 with dynamic range control
- DVD_AudioFormat_LPCM = 5,
- DVD_AudioFormat_DTS = 6,
- DVD_AudioFormat_SDDS = 7,
- DVD_AudioFormat_Other = 8
-} DVD_AUDIO_FORMAT;
-
-// flags for SelectKaraokeAudioPresentationMode
-typedef enum tagDVD_KARAOKE_DOWNMIX
-{
- DVD_Mix_0to0 = 0x0001, // unused - reserved for future use
- DVD_Mix_1to0 = 0x0002, // unused - reserved for future use
- DVD_Mix_2to0 = 0x0004,
- DVD_Mix_3to0 = 0x0008,
- DVD_Mix_4to0 = 0x0010,
- DVD_Mix_Lto0 = 0x0020, // mix auxillary L to channel 0 (left speaker)
- DVD_Mix_Rto0 = 0x0040, // mix auxillary R to channel 0 (left speaker)
-
- DVD_Mix_0to1 = 0x0100, // unused - reserved for future use
- DVD_Mix_1to1 = 0x0200, // unused - reserved for future use
- DVD_Mix_2to1 = 0x0400,
- DVD_Mix_3to1 = 0x0800,
- DVD_Mix_4to1 = 0x1000,
- DVD_Mix_Lto1 = 0x2000, // mix auxillary L to channel 1 (right speaker)
- DVD_Mix_Rto1 = 0x4000, // mix auxillary R to channel 1 (right speaker)
-} DVD_KARAOKE_DOWNMIX;
-
-
-typedef struct tagDVD_AudioAttributes
-{
- DVD_AUDIO_APPMODE AppMode;
- BYTE AppModeData;
- DVD_AUDIO_FORMAT AudioFormat; // Use GetKaraokeAttributes()
- LCID Language; // 0 if no language is present
- DVD_AUDIO_LANG_EXT LanguageExtension; // (captions, if for children etc)
- BOOL fHasMultichannelInfo; // multichannel attributes are present (Use GetMultiChannelAudioAttributes())
- DWORD dwFrequency; // in hertz (48k, 96k)
- BYTE bQuantization; // resolution (16, 20, 24 bits etc), 0 is unknown
- BYTE bNumberOfChannels; // 5.1 AC3 has 6 channels
- DWORD dwReserved[2];
-} DVD_AudioAttributes;
-
-typedef struct tagDVD_MUA_MixingInfo
-{
- // surround sound mixing information applied when:
- // AppMode = DVD_AudioMode_Surround
- // AudioFormat = DVD_AudioFormat_LPCM,
- // fHasMultichannelInfo=1 modes are all on
- //
- BOOL fMixTo0;
- BOOL fMixTo1;
-
- //
- BOOL fMix0InPhase;
- BOOL fMix1InPhase;
-
- DWORD dwSpeakerPosition; // see ksmedia.h: SPEAKER_FRONT_LEFT, SPEAKER_FRONT_RIGHT, etc
-} DVD_MUA_MixingInfo;
-
-// The alpha coeff is used to mix to ACH0 and beta is used to mix to ACH1
-//
-// In general:
-// ACH0 = coeff[0].alpha * value[0] + coeff[1].alpha * value[1] + ...
-// ACH1 = coeff[0].beta * value[0] + coeff[1].beta * value[1] + ...
-typedef struct tagDVD_MUA_Coeff
-{
- double log2_alpha; // actual coeff = 2^alpha
- double log2_beta; // actual coeff = 2^beta
-} DVD_MUA_Coeff;
-
-typedef struct tagDVD_MultichannelAudioAttributes
-{
- // actual Data for each data stream
- DVD_MUA_MixingInfo Info[8];
- DVD_MUA_Coeff Coeff[8];
-} DVD_MultichannelAudioAttributes;
-
-// bitwise OR of these flags descript the contents of each channel
-typedef enum tagDVD_KARAOKE_CONTENTS
-{
- DVD_Karaoke_GuideVocal1 = 0x0001,
- DVD_Karaoke_GuideVocal2 = 0x0002,
- DVD_Karaoke_GuideMelody1 = 0x0004,
- DVD_Karaoke_GuideMelody2 = 0x0008,
- DVD_Karaoke_GuideMelodyA = 0x0010,
- DVD_Karaoke_GuideMelodyB = 0x0020,
- DVD_Karaoke_SoundEffectA = 0x0040,
- DVD_Karaoke_SoundEffectB = 0x0080
-} DVD_KARAOKE_CONTENTS;
-
-typedef enum tagDVD_KARAOKE_ASSIGNMENT
-{
- DVD_Assignment_reserved0 = 0,
- DVD_Assignment_reserved1 = 1,
- DVD_Assignment_LR = 2, // left right
- DVD_Assignment_LRM = 3, // left right middle
- DVD_Assignment_LR1 = 4, // left right audio1
- DVD_Assignment_LRM1 = 5, // left right middle audio1
- DVD_Assignment_LR12 = 6, // left right audio1 audio2
- DVD_Assignment_LRM12 = 7 // left right middle audio1 audio2
-} DVD_KARAOKE_ASSIGNMENT;
-
-typedef struct tagDVD_KaraokeAttributes
-{
- BYTE bVersion;
- BOOL fMasterOfCeremoniesInGuideVocal1;
- BOOL fDuet; // false = solo
- DVD_KARAOKE_ASSIGNMENT ChannelAssignment;
- WORD wChannelContents[8]; // logical OR of DVD_KARAOKE_CONTENTS
-} DVD_KaraokeAttributes;
-
-typedef enum tagDVD_VIDEO_COMPRESSION
-{
- DVD_VideoCompression_Other = 0,
- DVD_VideoCompression_MPEG1 = 1,
- DVD_VideoCompression_MPEG2 = 2,
-} DVD_VIDEO_COMPRESSION;
-
-typedef struct tagDVD_VideoAttributes
-{
- BOOL fPanscanPermitted; // if a 4x3 display, can be shown as PanScan
- BOOL fLetterboxPermitted; // if a 4x3 display, can be shown as Letterbox
- ULONG ulAspectX; // 4x3 or 16x9
- ULONG ulAspectY;
- ULONG ulFrameRate; // 50hz or 60hz
- ULONG ulFrameHeight; // 525 (60hz) or 625 (50hz)
- DVD_VIDEO_COMPRESSION Compression;// MPEG1 or MPEG2
-
- BOOL fLine21Field1InGOP; // true if there is user data in field 1 of GOP of video stream
- BOOL fLine21Field2InGOP; // true if there is user data in field 1 of GOP of video stream
-
- ULONG ulSourceResolutionX; // X source resolution (352,704, or 720)
- ULONG ulSourceResolutionY; // Y source resolution (240,480, 288 or 576)
-
- BOOL fIsSourceLetterboxed; // subpictures and highlights (e.g. subtitles or menu buttons) are only
- // displayed in the active video area and cannot be displayed in the top/bottom 'black' bars
- BOOL fIsFilmMode; // for 625/50hz systems, is film mode (true) or camera mode (false)
-} DVD_VideoAttributes;
-
-typedef enum tagDVD_SUBPICTURE_TYPE
-{
- DVD_SPType_NotSpecified = 0,
- DVD_SPType_Language = 1,
- DVD_SPType_Other = 2,
-} DVD_SUBPICTURE_TYPE;
-
-typedef enum tagDVD_SUBPICTURE_CODING
-{
- DVD_SPCoding_RunLength = 0,
- DVD_SPCoding_Extended = 1,
- DVD_SPCoding_Other = 2,
-} DVD_SUBPICTURE_CODING;
-
-typedef struct tagDVD_SubpictureAttributes
-{
- DVD_SUBPICTURE_TYPE Type;
- DVD_SUBPICTURE_CODING CodingMode;
- LCID Language;
- DVD_SUBPICTURE_LANG_EXT LanguageExtension;
-} DVD_SubpictureAttributes;
-
-typedef enum tagDVD_TITLE_APPMODE
-{
- DVD_AppMode_Not_Specified = 0, // no special mode
- DVD_AppMode_Karaoke = 1,
- DVD_AppMode_Other = 3,
-} DVD_TITLE_APPMODE;
-
-typedef struct tagDVD_TitleMainAttributes
-{
- // for Titles
- DVD_TITLE_APPMODE AppMode;
-
- // Attributes about the 'main' video of the menu or title
- DVD_VideoAttributes VideoAttributes;
-
- ULONG ulNumberOfAudioStreams;
- DVD_AudioAttributes AudioAttributes[8];
- // present if the multichannel bit is set in the corresponding stream's audio attributes
- DVD_MultichannelAudioAttributes MultichannelAudioAttributes[8];
-
- ULONG ulNumberOfSubpictureStreams;
- DVD_SubpictureAttributes SubpictureAttributes[32];
-} DVD_TitleAttributes;
-
-typedef struct tagDVD_MenuAttributes
-{
- // for VMG only
- BOOL fCompatibleRegion[8]; // indeces 0..7 correspond to regions 1..8
-
- // Attributes about the main menu (VMGM or VTSM)
- DVD_VideoAttributes VideoAttributes;
-
- BOOL fAudioPresent;
- DVD_AudioAttributes AudioAttributes;
-
- BOOL fSubpicturePresent;
- DVD_SubpictureAttributes SubpictureAttributes;
-} DVD_MenuAttributes;
-
-//==========================================================================
-//==========================================================================
-// IDvdControl interface -- Basic DVD-Video playback control.
-// This modeled after the app control of a player specified in Annex J
-// of the DVD Video spec. IDvdInfo can be used to get information useful
-// in using IDvdControl
-//==========================================================================
-//==========================================================================
-
-[
-object,
-uuid(A70EFE61-E2A3-11d0-A9BE-00AA0061BE93),
-pointer_default(unique)
-]
-
-interface IDvdControl : IUnknown {
- import "unknwn.idl";
-
- // TitlePlay
- // Start playing the specified title number.
- // Title numbers range between 1 and 99.
- HRESULT TitlePlay
- ( [in] ULONG ulTitle
- );
-
- // ChapterPlay
- // Start playing at the specified chapter (or part-of-title)
- // within the specified title. Chapters range from 1 to 999.
- HRESULT ChapterPlay
- ( [in] ULONG ulTitle,
- [in] ULONG ulChapter
- );
-
- // TimePlay
- // Start playing at the specified time within the specified title.
- // NOTE: the actual start time will be the closest sync point before
- // or equal to the specified frame number.
- HRESULT TimePlay
- ( [in] ULONG ulTitle,
- [in] ULONG bcdTime // use DVD_TIMECODE. Framerate code is ignored.
- );
-
- // StopForResume
- // Stop playback after saving resume information. DVD Navigator transfers to the DVD "Stop State" and
- // (same as DVD_DOMAIN_Stop), but filter graph remains in DirectShow's Run state.
- HRESULT StopForResume();
-
- // GoUp
- // Start playback of the program chain currently authored as the "GoUp_PGCN".
- HRESULT GoUp();
-
- // TimeSearch
- // Start playing at the specified time within the current title.
- // NOTE: the actual start time will be the closest sync point before
- // or equal to the specified frame number.
- HRESULT TimeSearch
- ( [in] ULONG bcdTime // use DVD_TIMECODE. Framerate code is ignored.
- );
-
- // ChapterSearch
- // Start playing at the specified chapter (or part-of-title) within
- // the current title.
- HRESULT ChapterSearch
- ( [in] ULONG ulChapter
- );
-
- // PrevPGSearch
- // Start playing at the beginning of the previous DVD "program".
- // For One-Sequential_PGC_Titles (which includes most titles) a program
- // is equivalent to a chapter, otherwise a program is part of a chapter.
- HRESULT PrevPGSearch();
-
- // TopPGSearch
- // Start playing from the beginning of they current program.
- HRESULT TopPGSearch();
-
- // NextPGSearch
- // Start playing from the beginning of the next program.
- HRESULT NextPGSearch();
-
- // ForwardScan
- // Set forward play at the specified speed.
- // dwSpeed == 1 is normal play
- // dwSpeed < 1 is slow play
- // dwSpeed > 1 is fast play
- // For dwSpeed != 1, audio and subpicture is muted.
- HRESULT ForwardScan
- ( [in] double dwSpeed
- );
-
- // BackwardScan
- // Set reverse play at the specified speed.
- // dwSpeed == 1 is normal play speed in reverse
- // dwSpeed < 1 is slow play in reverse
- // dwSpeed > 1 is fast play in reverse
- // For reverse play, audio and subpicture are always muted.
- HRESULT BackwardScan
- ( [in] double dwSpeed
- );
-
- // MenuCall
- // Start playback of the Menu specified by an enum DVD_MENU_ID.
- HRESULT MenuCall
- ( [in] DVD_MENU_ID MenuID
- );
-
- // Resume
- // Returns to title playback in DVD_DOMAIN_Title. This is typically
- // done after MenuCall which puts the DVD Navigator in
- // DVD_DOMAIN_VideoTitleSetMenu or DVD_DOMAIN_VideoManagerMenu.
- HRESULT Resume();
-
- // UpperButtonSelect
- // Selects the button above the current button.
- // "Selecting" a DVD button simply highlights the button but does
- // not "Activate" the button. Selecting is the Windows equivalent
- // to tabbing to a button but not pressing the space bar or enter key.
- // Activating is the Windows equivalent of pressing the space bar or
- // enter key after tabbing to a button.
- HRESULT UpperButtonSelect();
-
- // LowerButtonSelect
- // Selects the button below the current button.
- HRESULT LowerButtonSelect();
-
- // LeftButtonSelect
- // Selects the button to the left of the current button.
- HRESULT LeftButtonSelect();
-
- // RightButtonSelect
- // Selects the button to the right of the current button.
- HRESULT RightButtonSelect();
-
- // ButtonActivate
- // Activates current button.
- HRESULT ButtonActivate();
-
- // ButtonSelectAndActivate
- // Selects and then activates the button specified by the user.
- // ulButton is intended to be a number entered by a user corresponding
- // to button numbers currently displayed on screen.
- // Button numbers range from 1 to 36.
- HRESULT ButtonSelectAndActivate
- ( [in] ULONG ulButton
- );
-
- // StillOff
- // Releases any current still if there are no available buttons.
- // This includes VOBU stills, Cell stills, and PGC stills, whether the
- // still is infinite. When buttons are available, stills are released by
- // activating a button. Note this does not release a Pause.
- HRESULT StillOff();
-
- // PauseOn
- // Freezes playback and any internal timers. This is similar to
- // IMediaControl::Pause()
- HRESULT PauseOn();
-
- // PauseOff
- // Releases a Pause.
- HRESULT PauseOff();
-
- // MenuLanguageSelect
- // Selects the default language for menus. Languages are specified with
- // Windows standard LCIDs. LCIDs can be created from ISO-639 codes with
- // MAKELCID( MAKELANGID(wISO639LangID ,SUBLANG_DEFAULT ), SORT_DEFAULT )
- // NOTE: MAKELANGID seems to have a bug so 'jp' may have to be used
- // instead of 'ja' for the ISO639 code for Japanese.
- // MenuLanguageSelect may only called from the DVD Stop state (DVD_DOMAIN_Stop).
- HRESULT MenuLanguageSelect
- ( [in] LCID Language
- );
-
- // AudioStreamChange
- // Changes the current audio stream.
- HRESULT AudioStreamChange
- ( [in] ULONG ulAudio
- );
-
- // SubpictureStreamChange
- // Changes the current subpicture stream number to nSubpic, and toggles
- // its display.
- HRESULT SubpictureStreamChange
- ( [in] ULONG ulSubPicture,
- [in] BOOL bDisplay
- );
-
- // AngleChange
- // Changes the current angle number.
- HRESULT AngleChange
- ( [in] ULONG ulAngle
- );
-
- // ParentalLevelSelect
- // Selects the current player parental level between 1 and 8. The
- // defined parental levels are listed below :
- //
- // Level Rating
- // ----- ------
- //
- // 1 G
- // 3 PG
- // 4 PG13
- // 6 R
- // 7 NC17
- // Higher levels can play lower level content; lower levels cannot play
- // higher level content. The DVD Navigator provides no restriction on
- // setting the parental level. DVD player application may enforce
- // restriction on parental level setting, such as password protection for
- // raising the current parental level. Parental Management is disabled in
- // the Navigator by default.
- //
- // Note : To disable parental management, pass 0xffffffff for ulParentalLevel
- // If parental management is disabled, then the player will play the
- // first PGC in a parental block regardless of parental IDs.
- //
- HRESULT ParentalLevelSelect
- ( [in] ULONG ulParentalLevel
- );
-
- // ParentalCountrySelect
- // Sets the country in which to interpret the the Parental Level.
- // The country specified using the Alpha-2 code of the ISO-3166 standard,
- // with the addition of 'ZZ'
- HRESULT ParentalCountrySelect
- ( [in] WORD wCountry
- );
-
- // KaraokeAudioPresentationModeChange
- // Sets the Karaoke audio mode.
- // NOTE: This and all other Karoke support is currently not implemented.
- HRESULT KaraokeAudioPresentationModeChange
- ( [in] ULONG ulMode
- );
-
- // VideoModePreferrence
- // The user can specify the preferred display mode that should
- // be used to display content. The parameter is a ULONG that has
- // one of the values defined in DVD_PREFERRED_DISPLAY_MODE
- HRESULT VideoModePreferrence
- ( [in] ULONG ulPreferredDisplayMode
- );
-
- // SetRoot
- // Sets the root directory containing the DVD-Video volume.
- // Can only be called from the DVD Stop State (DVD_DOMAIN_Stop).
- // If the root directory is not successfully set before
- // IMediaControl::Play is called, the first drive starting from c:
- // containing a VIDEO_TS directory in the top level directory
- // will be used as the root.
- HRESULT SetRoot
- ( [in] LPCWSTR pszPath
- );
-
- // MouseActivate
- // This is typically called in response to a mouse click.
- // The specified point within the display window is to see if it is
- // within a current DVD button's highlight rect. If it is, that
- // button is first selected, then activated.
- // NOTE: DVD Buttons do not all necessarily have highlight rects,
- // button rects can overlap, and button rects do not always
- // correspond to the visual representation of DVD buttons.
- HRESULT MouseActivate // typically called after a mouse click
- ( [in] POINT point
- );
-
- // MouseSelect
- // This is typically called in response to a mouse move within the
- // display window.
- // The specified point within the display window is to see if it is
- // within a current DVD button's highlight rect. If it is, that
- // button is selected.
- // NOTE: DVD Buttons do not all necessarily have highlight rects,
- // button rects can overlap, and button rects do not always
- // correspond to the visual representation of DVD buttons.
- HRESULT MouseSelect // typically called after a mouse move
- ( [in] POINT point
- );
-
- // ChapterPlayAutoStop
- // Start playing at the specified chapter within the specified title
- // and play the number of chapters specified by the third parameter.
- // Chapters range from 1 to 999.
- HRESULT ChapterPlayAutoStop
- ( [in] ULONG ulTitle, // title number
- [in] ULONG ulChapter, // chapter number to start playback
- [in] ULONG ulChaptersToPlay // number of chapters to play from the start chapter
- );
-}
-
-
-
-//==========================================================================
-//==========================================================================
-// IDvdInfo interface -- allow an app to query for attributes of available
-// DVD titles and DVD player status. Also allow for control of a DVD
-// player beyond Annex J in the DVD spec.
-//==========================================================================
-//==========================================================================
-
-[
-object,
-uuid(A70EFE60-E2A3-11d0-A9BE-00AA0061BE93),
-pointer_default(unique)
-]
-
-interface IDvdInfo : IUnknown {
- import "unknwn.idl";
-
- // GetCurrentDomain
- // Returns the current DVD Domain of the DVD player.
- HRESULT GetCurrentDomain
- ( [out] DVD_DOMAIN *pDomain
- );
-
- // GetCurrentLocation
- // Returns information sufficient to restart playback of a video
- // from the current playback location in titles that don't explicitly
- // disable seeking to the current location.
- HRESULT GetCurrentLocation
- ( [out] DVD_PLAYBACK_LOCATION *pLocation
- );
-
- // GetTotalTitleTime
- // Return the total playback time for the current title. Only works
- // for One_Sequential_PGC_Titles.
- HRESULT GetTotalTitleTime
- ( [out] ULONG * pulTotalTime // use DVD_TIMECODE.
- );
-
- // GetCurrentButton
- // Indicates the number of currently available buttons and the current
- // selected button number. If buttons are not present it returns 0 for
- // both pulButtonsAvailable and pulCurrentButton
- HRESULT GetCurrentButton
- ( [out] ULONG * pulButtonsAvailable,
- [out] ULONG * pulCurrentButton
- );
-
- // GetCurrentAngle
- // Indicates the number of currently available angles and the current
- // selected angle number. If *pnAnglesAvailable==1, then the current
- // video is not multiangle.
- HRESULT GetCurrentAngle
- ( [out] ULONG * pulAnglesAvailable,
- [out] ULONG * pulCurrentAngle
- );
-
- // GetCurrentAudio
- // Indicates the number of currently available audio streams and
- // the current selected audio stream number.
- // This only work when in DVD_DOMAIN_Title.
- HRESULT GetCurrentAudio
- ( [out] ULONG * pulStreamsAvailable,
- [out] ULONG * pulCurrentStream
- );
-
- // GetCurrentSubpicture
- // Indicates the number of currently available subpicture streams,
- // the current selected subpicture stream number, and if the
- // subpicture display is currently disabled. Subpicture streams
- // authored as Forcedly Activated stream will be displayed even if
- // subpicture display has been disabled by the app with
- // IDVDControl::SubpictureChangeStream.
- // This only work when in DVD_DOMAIN_Title.
- HRESULT GetCurrentSubpicture
- ( [out] ULONG * pulStreamsAvailable,
- [out] ULONG * pulCurrentStream,
- [out] BOOL * pIsDisabled
- );
-
- // GetCurrentUOPS
- // Indicates which IDVDControl methods are currently valid. DVD titles
- // can enable or disable individual user operations at almost any point
- // during playback.
- HRESULT GetCurrentUOPS
- ( [out] VALID_UOP_SOMTHING_OR_OTHER * pUOP
- );
-
- // GetAllSPRMs
- // Returns the current contents of all System Parameter Registers.
- // See DVD-Video spec for use of individual registers.
- HRESULT GetAllSPRMs
- ( [out] SPRMARRAY * pRegisterArray
- );
-
- // GetAllGPRMs
- // Returns the current contents of all General Parameter Registers.
- // Use of GPRMs is title specific.
- HRESULT GetAllGPRMs
- ( [out] GPRMARRAY * pRegisterArray
- );
-
- // GetAudioLanguage
- // Returns the language of the specified stream within the current
- // title. Does not return languages for menus. Sets *pLanguage=0 if
- // if the stream does not include language.
- // Use GetLocaleInfo(*pLanguage, LOCALE_SENGLANGUAGE, pszString, cbSize)
- // to create a human readable string name from the result LCID.
- HRESULT GetAudioLanguage
- ( [in] ULONG ulStream,
- [out] LCID * pLanguage
- );
-
- // GetSubpictureLanguage
- // Returns the language of the specified stream within the current
- // title. Does not return languages for menus. Sets *pLanguage=0 if
- // if the stream does not include language.
- // Use GetLocaleInfo(*pLanguage, LOCALE_SENGLANGUAGE, pszString, cbSize)
- // to create a human readable string name from the result LCID.
- HRESULT GetSubpictureLanguage
- ( [in] ULONG ulStream,
- [out] LCID * pLanguage
- );
-
- // GetTitleAttributes
- // Returns attributes of all video, audio, and subpicture
- // streams for the specified title including menus.
- // If nTitle == 0xffffffff, attributes for the current title are returned.
- HRESULT GetTitleAttributes
- ( [in] ULONG ulTitle, // requested title number
- [out] DVD_ATR * pATR
- );
-
- // GetVMGAttributes
- // Returns attributes of all video, audio, and subpicture
- // streams for Video Manager Menus. Some menus, such as the DVD_MENU_Title
- // are in a separate group of streams called the VMG (Video Manager) and
- // are not associated with any particular title number.
- HRESULT GetVMGAttributes
- ( [out] DVD_ATR * pATR
- );
-
- // GetCurrentVideoAttributes
- // Returns the video attributes for the current title or menu.
- HRESULT GetCurrentVideoAttributes
- ( [out] DVD_VideoATR *pATR
- );
-
- // GetCurrentAudioAttributes
- // Returns the video attributes for the stream in the current
- // title or menu.
- HRESULT GetCurrentAudioAttributes
- ( [out] DVD_AudioATR *pATR
- );
-
- // GetCurrentSubpictureAttributes
- // Returns the video attributes for the stream in the current
- // title or menu.
- HRESULT GetCurrentSubpictureAttributes
- ( [out] DVD_SubpictureATR *pATR
- );
-
-
- // GetCurrentVolumeInfo
- // Returns current DVD volume info.
- HRESULT GetCurrentVolumeInfo
- ( [out] ULONG *pulNumOfVol, // number of volumes (disc sides?) in a volume set
- [out] ULONG *pulThisVolNum, // volume number for this root directory
- [out] DVD_DISC_SIDE *pSide, // current disc side
- [out] ULONG *pulNumOfTitles // number of titles available in this volume
- );
-
-
- // GetDVDTextInfo
- // Returns the TXTDT_MG structure, which can contain text descriptions for title
- // name, volume name, producer name, vocalist name, etc. in various languages.
- // refer to Section 4.1.6 and Annex A of the DVD-Video spec.
- // If the buffer size passed in is insufficient (for example if cbBufSize==0),
- // then E_OUTOFMEMORY is returned, and *pcbActualSize is set to the required size.
- HRESULT GetDVDTextInfo
- ( [out, size_is(ulBufSize)] BYTE *pTextManager,
- [in] ULONG ulBufSize, // buffer size passed in
- [out] ULONG *pulActualSize // amount of actual data return
- );
-
- // GetPlayerParentalLevel
- // Returns the current parental level and the current country code
- // that has been set in the system registers in player.
- // See Table 3.3.4-1 of the DVD-Video spec for the defined parental levels.
- // Valid Parental Levels = 1..8 if parental management is enabled
- // 0xffffffff if parental management is disabled
- // See ISO3166 : Alpha-2 Code for the country codes.
- HRESULT GetPlayerParentalLevel
- ( [out] ULONG *pulParentalLevel, // current parental level
- [out] ULONG *pulCountryCode // current country code
- );
-
- // GetNumberOfChapters
- // Returns the number of chapters that are defined for a
- // given title.
- HRESULT GetNumberOfChapters
- ( [in] ULONG ulTitle, // Title for which number of chapters is requested
- [out] ULONG *pulNumberOfChapters // Number of chapters for the specified title
- );
-
- // GetTitleParentalLevels
- // Returns the parental levels that are defined for a
- // particular title. pParentalLevels will be combination
- // of DVD_PARENTAL_LEVEL_8, DVD_PARENTAL_LEVEL_6, or
- // DVD_PARENTAL_LEVEL_1 "OR"ed together
- HRESULT GetTitleParentalLevels
- ( [in] ULONG ulTitle, // Title for which parental levels are requested
- [out] ULONG *pulParentalLevels // Parental levels defined for the title "OR"ed together
- );
-
- // GetRoot
- // Returns the root directory that is set in the player. If a valid root
- // has been found, it returns the root string. Otherwise, it returns 0 for
- // pcbActualSize indicating that a valid root directory has not been found
- // or initialized.
- //
- // !!! used to return LPTSTR. interface was changed to return
- // LPSTR (ansi) for compatibility. COM APIs should pass with
- // UNICODE strings only.
- //
- HRESULT GetRoot
- ( [out, size_is(ulBufSize)] LPSTR pRoot, // pointer to buffer to get root string
- [in] ULONG ulBufSize, // size of buffer passed in
- [out] ULONG *pulActualSize // size of actual data returned
- );
-}
-
-//==========================================================================
-//==========================================================================
-// IDvdCmd interface -- the IDVDControl2 command sequencing object.
-//
-// For the IDVDControl2 interface, the application can track the status of
-// commands that have been issued to the navigator. Each command is identified
-// by an IDvdCmd object. The IDvdCmd object stores the results of the command
-// at both the start (when the command has begun processing) and the end after
-// it has completed. It also allows the app to synchronize with the processing
-// of the command.
-//
-// The command object also allows the app to uniquely identify and correlate
-// completion events (if it prefers to process events in a message loop instead
-// of creating another process).
-//
-// Allows the app to track the status of an issued command to the nav.
-//==========================================================================
-//==========================================================================
-
-[
-object,
-uuid(5a4a97e4-94ee-4a55-9751-74b5643aa27d),
-pointer_default(unique)
-]
-
-interface IDvdCmd : IUnknown {
- import "unknwn.idl";
-
- //
- // WaitForStart
- //
- // Blocks the application until the command has begun.
- //
- HRESULT WaitForStart();
-
- //
- // WaitForEnd
- //
- // Blocks until the command has completed or has been cancelled.
- HRESULT WaitForEnd();
-}
-
-//==========================================================================
-//==========================================================================
-// IDvdState interface -- the State state object.
-//
-// Whenever the application wishes to save or restore a location on the disc,
-// it needs to store the DVD state into an object.
-// The State object supports the IPersistStream
-//
-//==========================================================================
-//==========================================================================
-
-[
-object,
-uuid(86303d6d-1c4a-4087-ab42-f711167048ef),
-pointer_default(unique)
-]
-
-interface IDvdState : IUnknown
-{
- //
- // GetDiscID
- //
- // Returns the disc ID from which the bookmark was made.
- //
- HRESULT GetDiscID
- ( [out] ULONGLONG* pullUniqueID ); // 64-bit unique id for the disc
-
- //
- // GetParentalLevel
- //
- // Returns the state's parental level
- //
- HRESULT GetParentalLevel
- ( [out] ULONG* pulParentalLevel );
-}
-
-//==========================================================================
-//==========================================================================
-// IDvdControl2 interface -- Basic DVD-Video playback control.
-// This is modeled after the app control of a player specified in Annex J
-// of the DVD Video spec. IDvdInfo2 can be used to get information useful
-// in using IDvdControl2
-//==========================================================================
-//==========================================================================
-
-[
-object,
-uuid(33BC7430-EEC0-11D2-8201-00A0C9D74842),
-pointer_default(unique)
-]
-
-interface IDvdControl2 : IUnknown {
- import "unknwn.idl";
-
- // PlayTitle
- //
- // Start playing from the beginning of the specified title number.
- // Annex J: Title_Play
- // Title numbers range between 1 and 99.
- HRESULT PlayTitle
- ( [in] ULONG ulTitle,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // PlayChapterInTitle
- //
- // Start playing from the beginning of the given chapter (or part-of-title) number
- // within the specified title number.
- // Annex J: PTT_Play
- // Title numbers range between 1 and 99.
- // Chapters range from 1 to 999.
- HRESULT PlayChapterInTitle
- ( [in] ULONG ulTitle,
- [in] ULONG ulChapter,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // PlayAtTimeInTitle
- //
- // Start playing from the specified time within the specified title number.
- // NOTE: the actual start time will be the closest sync point before
- // or equal to the specified frame number.
- // Annex J: Time_Play
- // Title numbers range between 1 and 99.
- HRESULT PlayAtTimeInTitle
- ( [in] ULONG ulTitle,
- [in] DVD_HMSF_TIMECODE* pStartTime,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // Stop
- // Stop playback by transferring DVD Navigator to the DVD "Stop State" (same
- // as DVD_DOMAIN_Stop), but filter graph remains in DirectShow's Run state.
- // Annex J: Stop
- HRESULT Stop();
-
- // ReturnFromSubmenu
- //
- // Stop playback of current program chain (PGC) and start playing the PGC
- // specified by "GoUp_PGCN".in the PGCI.
- // If the GoUp_PGCN value is 0xFFFF the Resume() operation is carried out.
- // Annex J: GoUp
- HRESULT ReturnFromSubmenu(
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd );
-
- // PlayAtTime
- // Start playing at the specified time within the current title.
- // NOTE: the actual start time will be the closest sync point before
- // or equal to the specified frame number.
- // Annex J: Time_Search
- // The time is in BCD format, passed in as a ULONG.
- HRESULT PlayAtTime
- ( [in] DVD_HMSF_TIMECODE* pTime,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // PlayChapter
- // Start playing at the specified chapter (or part-of-title) within
- // the current title.
- // Annex J: PTT_Search
- // Chapters range from 1 to 999.
- HRESULT PlayChapter
- ( [in] ULONG ulChapter,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // PlayPrevChapter
- // Start playing at the beginning of the previous DVD "program".
- // For One-Sequential_PGC_Titles (which includes most titles) a program
- // is equivalent to a chapter, otherwise a program is part of a chapter.
- // Annex J: PrevPG_Search
- HRESULT PlayPrevChapter(
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd );
-
- // ReplayChapter
- // Start playing from the beginning of they current program.
- // Annex J: TopPG_Search
- HRESULT ReplayChapter(
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd );
-
- // PlayNextChapter
- // Start playing from the beginning of the next program.
- // Annex J: NextPG_Search
- HRESULT PlayNextChapter(
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd );
-
- // PlayForwards
- // Set forward play at the specified speed.
- // Annex J: Forward_Scan
- // dSpeed == 1 is normal play
- // dSpeed < 1 is slow play
- // dSpeed > 1 is fast play
- // For dSpeed != 1, audio and subpicture is muted.
- HRESULT PlayForwards
- ( [in] double dSpeed,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // PlayBackwards
- // Set reverse play at the specified speed.
- // Annex J: Backward_Scan
- // dSpeed == 1 is normal play speed in reverse
- // dSpeed < 1 is slow play in reverse
- // dSpeed > 1 is fast play in reverse
- // For reverse play, audio and subpicture are always muted.
- HRESULT PlayBackwards
- ( [in] double dSpeed,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // ShowMenu
- // Start playback of the Menu specified by an enum DVD_MENU_ID.
- // Annex J: Menu_Call
- HRESULT ShowMenu
- ( [in] DVD_MENU_ID MenuID,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // Resume
- // Returns to title playback in DVD_DOMAIN_Title. This is typically
- // done after MenuCall which puts the DVD Navigator in
- // DVD_DOMAIN_VideoTitleSetMenu or DVD_DOMAIN_VideoManagerMenu.
- // Annex J: Resume
- HRESULT Resume(
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd );
-
- // SelectRelativeButton
- // Moves the selection highlight above, below, to the left of, or to the right of the
- // currently selected.
- // "Selecting" a DVD button simply highlights the button but does
- // not "Activate" the button. Selecting is the Windows equivalent
- // to tabbing to a button but not pressing the space bar or enter key.
- // Activating is the Windows equivalent of pressing the space bar or
- // enter key after tabbing to a button.
- // Annex J: Upper_button_Select, Lower_button_Select, Left_button_Select, Right_button_Select
- HRESULT SelectRelativeButton( DVD_RELATIVE_BUTTON buttonDir );
-
- // ActivateButton
- // Activates current button.
- // Annex J: Button_Activate
- HRESULT ActivateButton();
-
- // SelectButton
- // Selects a specific button (with the index from 1 to 36).
- // ulButton is intended to be a number entered by a user corresponding
- // to button numbers currently displayed on screen.
- // Button numbers range from 1 to 36.
- HRESULT SelectButton
- ( [in] ULONG ulButton
- );
-
- // SelectAndActivateButton
- // Selects and then activates the button specified by the user.
- // ulButton is intended to be a number entered by a user corresponding
- // to button numbers currently displayed on screen.
- // Annex J: Button_Select_And_Activate
- // Button numbers range from 1 to 36.
- HRESULT SelectAndActivateButton
- ( [in] ULONG ulButton
- );
-
- // StillOff
- // Releases any current still if there are no available buttons.
- // This includes VOBU stills, Cell stills, and PGC stills, whether the
- // still is infinite. When buttons are available, stills are released by
- // activating a button. Note this does not release a Pause.
- // Annex J: Still_Off
- HRESULT StillOff();
-
- // Pause
- // Freezes / unfreezes playback and any internal timers. This is similar to
- // IMediaControl::Pause(), but not the same in effect as IMediaControl::Pause
- // puts the filter (all filters, if done to the graph) in paused state.
- // Annex J: Pause_On and Pause_Off
- // bState is TRUE or FALSE to indicate whether to do Puase_on/Pause_Off according
- // to Annex J terminology.
- HRESULT Pause
- ( [in] BOOL bState
- );
-
- // SelectAudioStream
- // Changes the current audio stream to ulAudio.
- // Annex J: Audio_Stream_Change
- // Audio stream number ranges between 0 and 7 or DEFAULT_AUDIO_STREAM (15 - default based on default language & language extension)
- HRESULT SelectAudioStream
- ( [in] ULONG ulAudio,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
-
- );
-
- // SelectSubpictureStream
- // Changes the current subpicture stream number to ulSubPicture
- // Annex J: Sub-picture_Stream_Change (first param)
- // Subpicture stream number should be between 0 and 31 or 63.
- HRESULT SelectSubpictureStream
- ( [in] ULONG ulSubPicture,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
-
- );
-
- // SetSubpictureState
- // Turns on/off current subpicture stream display.
- // Annex J: Sub-picture_Stream_Change (second param)
- // Subpicture state is On or Off (TRUE or FALSE)
- HRESULT SetSubpictureState
- ( [in] BOOL bState,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // SelectAngle
- // Changes the current angle number.
- // Annex J: Angle_Change
- // Angle number is between 1 and 9.
- HRESULT SelectAngle
- ( [in] ULONG ulAngle,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // SelectParentalLevel
- // Selects the current player parental level.
- // Annex J: Parental_Level_Select
- // Parental level ranges between 1 and 8.
- // The defined parental levels are listed below :
- //
- // Level Rating
- // ----- ------
- // 1 G
- // 3 PG
- // 4 PG13
- // 6 R
- // 7 NC17
- // Higher levels can play lower level content; lower levels cannot play
- // higher level content. The DVD Navigator provides no restriction on
- // setting the parental level. DVD player application may enforce
- // restriction on parental level setting, such as password protection for
- // raising the current parental level. Parental Management is disabled in
- // the Navigator by default.
- //
- // Note : To disable parental management, pass 0xffffffff for ulParentalLevel
- // If parental management is disabled, then the player will play the
- // first PGC in a parental block regardless of parental IDs.
- //
- HRESULT SelectParentalLevel
- ( [in] ULONG ulParentalLevel
- );
-
- // SelectParentalCountry
- // Sets the country in which to interpret the Parental Level.
- // Annex J: Parental_Country_Select
- // The country specified using the Alpha-2 code of the ISO-3166 standard,
- HRESULT SelectParentalCountry
- ( [in] BYTE bCountry[2]
- );
-
- // SelectKaraokeAudioPresentationMode
- // Sets the Karaoke audio mode.
- // Annex J: Karaoke_Audio_Presentation_Mode_Change
- // NOTE: This and all other Karoke support is currently not implemented.
- // Mode represents the audio mixing mode for Karaoke (same info as SPRM11).
- // Use a bitwise OR of the bits in DVD_KARAOKE_DOWNMIX
- HRESULT SelectKaraokeAudioPresentationMode
- ( [in] ULONG ulMode
- );
-
- // SelectVideoModePreference
- // The user can specify the (initial) preferred display mode (aspect ratio)
- // (wide / letterbox / pan-scan) that should be used to display content
- // (16 : 9).
- // Annex J: Video_Presentation_Mode_Change
- // The parameter is a ULONG that has one of the values defined in
- // DVD_PREFERRED_DISPLAY_MODE
- HRESULT SelectVideoModePreference
- ( [in] ULONG ulPreferredDisplayMode
- );
-
- // SetDVDDirectory
- // Sets the root directory containing the DVD-Video volume.
- // Can only be called from the DVD Stop State (DVD_DOMAIN_Stop).
- // If the root directory is not successfully set before
- // IMediaControl::Play is called, the first drive starting from c:
- // containing a VIDEO_TS directory in the top level directory
- // will be used as the root.
- HRESULT SetDVDDirectory
- ( [in] LPCWSTR pszwPath
- );
-
- // ActivateAtPosition
- // This is typically called in response to a mouse click.
- // The specified point within the display window is to see if it is
- // within a current DVD button's highlight rect. If it is, that
- // button is first selected, then activated.
- // NOTE: DVD Buttons do not all necessarily have highlight rects,
- // button rects can overlap, and button rects do not always
- // correspond to the visual representation of DVD buttons.
- HRESULT ActivateAtPosition // typically called after a mouse click
- ( [in] POINT point
- );
-
- // SelectAtPosition
- // This is typically called in response to a mouse move within the
- // display window.
- // The specified point within the display window is to see if it is
- // within a current DVD button's highlight rect. If it is, that
- // button is selected.
- // NOTE: DVD Buttons do not all necessarily have highlight rects,
- // button rects can overlap, and button rects do not always
- // correspond to the visual representation of DVD buttons.
- HRESULT SelectAtPosition // typically called after a mouse move
- ( [in] POINT point
- );
-
- // PlayChaptersAutoStop
- // Start playing at the specified chapter within the specified title
- // and play the number of chapters specified by the third parameter.
- // Then the playback stops by sending an event EC_DVD_CHAPTER_AUTOSTOP.
- // Title ranges from 1 to 99.
- // Chapter (and number of chapters to play) ranges from 1 to 999.
- HRESULT PlayChaptersAutoStop
- ( [in] ULONG ulTitle, // title number
- [in] ULONG ulChapter, // chapter number to start playback
- [in] ULONG ulChaptersToPlay, // number of chapters to play from the start chapter
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // AcceptParentalLevelChange
- //
- // Application's way of informing the Navigator that the required parental
- // level change indicated through a previous event was accepted or rejected
- // by the app (and unblock the Navigator).
- //
- // FALSE - reject the disc's request to change the current parental level.
- // TRUE - change the parental level as required by the disc.
- HRESULT AcceptParentalLevelChange
- ( [in] BOOL bAccept
- );
-
- // SetOption(flag, true/false )
- // Flags:
- //
- // DVD_ResetOnStop
- // Disable reset of the Navigator's internal state on the
- // subsequent IMediaControl::Stop() call(s).
- //
- // FALSE - Navigator does not reset its state on the subsequent Stop calls
- // (play from the current location on next Run call).
- // TRUE - (default) Navigator resets its state on the subsequent Stop call
- // (play from the first play PGC on the Run call after the Stop).
- //
- // DVD_NotifyParentalLevelChange
- //
- // Allows the application to indicate to the Navigator that it wants to control
- // parent level change (e.g., through a dialog box) and indicate the acceptance
- // or rejection of the new parental level to the Navigator through
- // AcceptParentalLevelChange().
- //
- // FALSE - disable (default). Always reject request by the disc to change parental level.
- // TRUE - enable. Navigator will send the app a 'EC_DVD_PARENTAL_LEVEL_CHANGE' event
- // and block until AcceptParentalLevelChange() is called by the app.
- //
- // DVD_HMSF_TimeCodeEvents
- //
- // Lets the application specify to the Navigator if it wants to get the new time
- // event EC_DVD_CURRENT_HMSF_TIME with the HMSF format rather than the older
- // EC_DVD_CURRENT_TIME events.
- //
- // FALSE - disable (default). Older EC_DVD_CURRENT_TIME events are returned.
- // TRUE - enable. Navigator will send the app EC_DVD_CURRENT_HMSF_TIME events.
-
- HRESULT SetOption
- ( [in] DVD_OPTION_FLAG flag,
- [in] BOOL fState
- );
-
- // SetState
- //
- // The navigator will use the location information in the given state object to restore
- // the navigator's position to a specific location on the disc.
- // A valid state object is returned by either calling GetState(), or by using
- // "CoCreateInstance( CLSID_DVDState, NULL, CLSCTX_INPROC_SERVER, IID_IDvdState, (void **) ppState )"
- // to create a state object, followed by pState->IPersist::Load() to read it from memory or disk.
- //
- HRESULT SetState
- ( [in] IDvdState* pState,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
-
- );
-
- // PlayPeriodInTitleAutoStop
- //
- // Start playing from the specified time within the specified title number until the specified end time.
- // NOTE: the actual start and end times will be the closest sync points before
- // or equal to the specified frame number.
- // Annex J: Time_Play for a limited range
- // Title numbers range between 1 and 99.
- HRESULT PlayPeriodInTitleAutoStop
- ( [in] ULONG ulTitle,
- [in] DVD_HMSF_TIMECODE* pStartTime,
- [in] DVD_HMSF_TIMECODE* pEndTime,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // SetGPRM
- // Sets the current contents of a DVD General Parameter Register.
- // Use of GPRMs is title specific.
-
- HRESULT SetGPRM
- ( [in] ULONG ulIndex,
- [in] WORD wValue,
- [in] DWORD dwFlags,
- [out] IDvdCmd** ppCmd
- );
-
- // SelectDefaultMenuLanguage
- // Selects the default language for menus.
- // Languages are specified with Windows standard LCIDs. LCIDs can be created
- // from ISO-639 codes with
- // MAKELCID( MAKELANGID(wISO639LangID ,SUBLANG_DEFAULT ), SORT_DEFAULT ).
- // SelectMenuLanguage may only called from the DVD Stop state (DVD_DOMAIN_Stop).
- // Annex J: Menu_Language_Select
- //
- // NOT TRUE ANYMORE:
- // NOTE: MAKELANGID seems to have a bug so 'jp' may have to be used
- // instead of 'ja' for the ISO639 code for Japanese.
- HRESULT SelectDefaultMenuLanguage
- ( [in] LCID Language
- );
-
- // SelectDefaultAudioLanguage
- // Selects the default audio language.
- // Languages are specified with Windows standard LCIDs.
- HRESULT SelectDefaultAudioLanguage
- ( [in] LCID Language,
- [in] DVD_AUDIO_LANG_EXT audioExtension
- );
-
- // SelectDefaultSubpictureLanguage
- // Selects the default subpicture language.
- // Languages are specified with Windows standard LCIDs.
- HRESULT SelectDefaultSubpictureLanguage
- ( [in] LCID Language,
- [in] DVD_SUBPICTURE_LANG_EXT subpictureExtension
- );
-}
-
-
-//==========================================================================
-//==========================================================================
-// IDvdInfo2 interface -- allows an app to query for attributes of available
-// DVD titles and DVD player status. Also allows for control of a DVD
-// player beyond Annex J in the DVD spec.
-//==========================================================================
-//==========================================================================
-
-enum DVD_TextStringType {
- // disc structure (0x00..0x0f)
- DVD_Struct_Volume = 0x01,
- DVD_Struct_Title = 0x02,
- DVD_Struct_ParentalID = 0x03,
- DVD_Struct_PartOfTitle = 0x04,
- DVD_Struct_Cell = 0x05,
- // stream (0x10..0x1f)
- DVD_Stream_Audio = 0x10,
- DVD_Stream_Subpicture = 0x11,
- DVD_Stream_Angle = 0x12,
- // channel in stream (0x20..0x2f)
- DVD_Channel_Audio = 0x20,
-
- // Application information
- // General (0x30..0x37)
- DVD_General_Name = 0x30,
- DVD_General_Comments = 0x31,
-
- // Title (0x38..0x3f)
- DVD_Title_Series = 0x38,
- DVD_Title_Movie = 0x39,
- DVD_Title_Video = 0x3a,
- DVD_Title_Album = 0x3b,
- DVD_Title_Song = 0x3c,
- DVD_Title_Other = 0x3f,
-
- // Title (sub) (0x40..0x47)
- DVD_Title_Sub_Series = 0x40,
- DVD_Title_Sub_Movie = 0x41,
- DVD_Title_Sub_Video = 0x42,
- DVD_Title_Sub_Album = 0x43,
- DVD_Title_Sub_Song = 0x44,
- DVD_Title_Sub_Other = 0x47,
-
- // Title (original) (0x48..0x4f)
- DVD_Title_Orig_Series = 0x48,
- DVD_Title_Orig_Movie = 0x49,
- DVD_Title_Orig_Video = 0x4a,
- DVD_Title_Orig_Album = 0x4b,
- DVD_Title_Orig_Song = 0x4c,
- DVD_Title_Orig_Other = 0x4f,
-
- // Other info (0x50..0x57)
- DVD_Other_Scene = 0x50,
- DVD_Other_Cut = 0x51,
- DVD_Other_Take = 0x52,
-
- // Language 0x58..0x5b
- // Work 0x5c..0x6b
- // Character 0x6c..0x8f
- // Data 0x90..0x93
- // Karaoke 0x94..0x9b
- // Category 0x9c..0x9f
- // Lyrics 0xa0..0xa3
- // Document 0xa4..0xa7
- // Others 0xa8..0xab
- // Reserved 0xac..0xaf
- // Admin 0xb0..0xb7
- // more admin 0xb8..0xc0
- // Reserved 0xd0..0xdf
- // vendor 0xe0..0xef
- // extension 0xf0..0xf7
- // reserved 0xf8..0xff
-};
-
-enum DVD_TextCharSet {
- DVD_CharSet_Unicode = 0,
- DVD_CharSet_ISO646 = 1,
- DVD_CharSet_JIS_Roman_Kanji = 2,
- DVD_CharSet_ISO8859_1 = 3,
- DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana = 4
-};
-
-cpp_quote ("#define DVD_TITLE_MENU 0x000")
-cpp_quote ("#define DVD_STREAM_DATA_CURRENT 0x800")
-cpp_quote ("#define DVD_STREAM_DATA_VMGM 0x400")
-cpp_quote ("#define DVD_STREAM_DATA_VTSM 0x401")
-cpp_quote ("#define DVD_DEFAULT_AUDIO_STREAM 0x0f")
-
-// DVD Decoder Caps data
-typedef struct tagDVD_DECODER_CAPS
-{
- DWORD dwSize ; // size of this struct
- DWORD dwAudioCaps ; // bits indicating audio support (AC3, DTS, SDDS, LPCM etc.) of decoder
- double dFwdMaxRateVideo ; // max data rate for video going forward
- double dFwdMaxRateAudio ; // ... .. .. ... audio ... ...
- double dFwdMaxRateSP ; // ... .. .. ... SP ... ...
- double dBwdMaxRateVideo ; // if smooth reverse is not available, this will be set to 0
- double dBwdMaxRateAudio ; // -- ditto --
- double dBwdMaxRateSP ; // -- ditto --
- DWORD dwRes1 ; // reserved for future expansion
- DWORD dwRes2 ; // -- ditto --
- DWORD dwRes3 ; // -- ditto --
- DWORD dwRes4 ; // -- ditto --
-} DVD_DECODER_CAPS ;
-
-// Bits for decoder's audio format support
-cpp_quote ("#define DVD_AUDIO_CAPS_AC3 0x00000001")
-cpp_quote ("#define DVD_AUDIO_CAPS_MPEG2 0x00000002")
-cpp_quote ("#define DVD_AUDIO_CAPS_LPCM 0x00000004")
-cpp_quote ("#define DVD_AUDIO_CAPS_DTS 0x00000008")
-cpp_quote ("#define DVD_AUDIO_CAPS_SDDS 0x00000010")
-
-
-[
-object,
-uuid(34151510-EEC0-11D2-8201-00A0C9D74842),
-pointer_default(unique)
-]
-
-interface IDvdInfo2 : IUnknown {
- import "unknwn.idl";
-
- // GetCurrentDomain
- // Returns the current DVD Domain of the DVD player.
- HRESULT GetCurrentDomain
- ( [out] DVD_DOMAIN *pDomain
- );
-
- // GetCurrentLocation
- // Returns information sufficient to restart playback of a video
- // from the current playback location in titles that don't explicitly
- // disable seeking to the current location.
- HRESULT GetCurrentLocation
- ( [out] DVD_PLAYBACK_LOCATION2 *pLocation
- );
-
- // GetTotalTitleTime
- // Returns the total playback time for the current title. Only works
- // for One_Sequential_PGC_Titles.
- // THIS SHOULD CHANGE, RIGHT?
- HRESULT GetTotalTitleTime
- ( [out] DVD_HMSF_TIMECODE* pTotalTime,
- [out] ULONG* ulTimeCodeFlags // union of DVD_TIMECODE_FLAGS
- );
-
- // GetCurrentButton
- // Indicates the number of currently available buttons and the current
- // selected button number. If buttons are not present it returns 0 for
- // both pulButtonsAvailable and pulCurrentButton
- HRESULT GetCurrentButton
- ( [out] ULONG * pulButtonsAvailable,
- [out] ULONG * pulCurrentButton
- );
-
- // GetCurrentAngle
- // Indicates the number of currently available angles and the current
- // selected angle number. If *pulAnglesAvailable is returned as 1 then
- // the current content is not multiangle.
- HRESULT GetCurrentAngle
- ( [out] ULONG * pulAnglesAvailable,
- [out] ULONG * pulCurrentAngle
- );
-
- // GetCurrentAudio
- // Indicates the number of currently available audio streams and
- // the currently selected audio stream number.
- // This only works inside the Title domain.
- HRESULT GetCurrentAudio
- ( [out] ULONG * pulStreamsAvailable,
- [out] ULONG * pulCurrentStream
- );
-
- // GetCurrentSubpicture
- // Indicates the number of currently available subpicture streams,
- // the currently selected subpicture stream number, and if the
- // subpicture display is currently disabled. Subpicture streams
- // authored as "Forcedly Activated" stream will be displayed even if
- // subpicture display has been disabled by the app with
- // IDVDControl::SetSubpictureState.
- // This only works inside the Title domain.
- HRESULT GetCurrentSubpicture
- ( [out] ULONG * pulStreamsAvailable,
- [out] ULONG * pulCurrentStream,
- [out] BOOL * pbIsDisabled
- );
-
- // GetCurrentUOPS
- // Indicates which IDVDControl methods (Annex J user operations) are
- // currently valid. DVD titles can enable or disable individual user
- // operations at almost any point during playback.
- HRESULT GetCurrentUOPS
- ( [out] ULONG * pulUOPs
- );
-
- // GetAllSPRMs
- // Returns the current contents of all DVD System Parameter Registers.
- // See DVD-Video spec for use of individual registers.
- // WE SHOULD DOC THE SPRMs RATHER THAN ASKING TO REFER TO DVD SPEC.
- HRESULT GetAllSPRMs
- ( [out] SPRMARRAY * pRegisterArray
- );
-
- // GetAllGPRMs
- // Returns the current contents of all DVD General Parameter Registers.
- // Use of GPRMs is title specific.
- // WE SHOULD DOC THE GPRMs RATHER THAN ASKING TO REFER TO DVD SPEC.
- HRESULT GetAllGPRMs
- ( [out] GPRMARRAY * pRegisterArray
- );
-
- // GetAudioLanguage
- // Returns the language of the specified stream within the current title.
- // Does not return languages for menus. Returns *pLanguage as 0 if the
- // stream does not include language.
- // Use Win32 API GetLocaleInfo(*pLanguage, LOCALE_SENGLANGUAGE, pszString, cbSize)
- // to create a human readable string name from the returned LCID.
- HRESULT GetAudioLanguage
- ( [in] ULONG ulStream,
- [out] LCID * pLanguage
- );
-
- // GetSubpictureLanguage
- // Returns the language of the specified stream within the current title.
- // Does not return languages for menus. Returns *pLanguage=0 as 0 if the
- // stream does not include language.
- // Use Win32 API GetLocaleInfo(*pLanguage, LOCALE_SENGLANGUAGE, pszString, cbSize)
- // to create a human readable string name from the returned LCID.
- HRESULT GetSubpictureLanguage
- ( [in] ULONG ulStream,
- [out] LCID * pLanguage
- );
-
- // GetTitleAttributes
- // Returns attributes of all video, audio, and subpicture streams for the
- // specified title including menus.
- // If 0xffffffff is specified as ulTitle, attributes for the current title
- // are returned.
- HRESULT GetTitleAttributes
- ( [in] ULONG ulTitle, // requested title number
- [out] DVD_MenuAttributes * pMenu,
- [out] DVD_TitleAttributes * pTitle
- );
-
- // GetVMGAttributes
- // Returns attributes of all video, audio, and subpicture
- // streams for Video Manager Menus. This method suppliments GetTitleAttributes()
- // for some menus, such as the Title menu, which are in a separate group of
- // streams called the VMG (Video Manager) and are not associated with any
- // particular title number.
- HRESULT GetVMGAttributes
- ( [out] DVD_MenuAttributes* pATR
- );
-
- // GetCurrentVideoAttributes
- // Returns the video attributes for the current title or menu.
- //
- HRESULT GetCurrentVideoAttributes
- ( [out] DVD_VideoAttributes * pATR
- );
-
- // GetAudioAttributes
- // Returns the audio attributes for the specified stream in the current title
- // or menu.
- HRESULT GetAudioAttributes
- ( [in] ULONG ulStream,
- [out] DVD_AudioAttributes *pATR
- );
-
- // GetKaraokeChannelContents
- // Returns the karaoke contents of each channel of the specified stream in the current title
- // or menu.
- HRESULT GetKaraokeAttributes
- ( [in] ULONG ulStream,
- [out] DVD_KaraokeAttributes* pAttributes
- );
-
- // GetSubpictureAttributes
- // Returns the subpicture attributes for the specified stream in the current
- // title or menu.
- HRESULT GetSubpictureAttributes
- ( [in] ULONG ulStream,
- [out] DVD_SubpictureAttributes *pATR
- );
-
- // GetDVDVolumeInfo
- // Returns current DVD volume information.
- HRESULT GetDVDVolumeInfo
- ( [out] ULONG *pulNumOfVolumes, // number of volumes (disc sides?) in a volume set
- [out] ULONG *pulVolume, // volume number for current DVD directory
- [out] DVD_DISC_SIDE *pSide, // current disc side
- [out] ULONG *pulNumOfTitles // number of titles available in this volume
- );
-
- // GetDVDTextNumberOfLanguages
- // Returns the number of text languages for the current DVD directory.
- // Should return some error code if no root directory is found.
- HRESULT GetDVDTextNumberOfLanguages
- ( [out] ULONG * pulNumOfLangs
- );
-
- // GetDVDTextLanguageInfo
- // Returns the text languages information (number of strings, language code,
- // char set) for the specified language index.
- // Should return some error code if an invalid text index is specified.
- HRESULT GetDVDTextLanguageInfo
- ( [in] ULONG ulLangIndex,
- [out] ULONG* pulNumOfStrings,
- [out] LCID* pLangCode,
- [out] enum DVD_TextCharSet * pbCharacterSet
- );
-
- // GetDVDTextStringAsNative
- // Returns the text string as an array of bytes for the specified language
- // index.and string index.
- // Should return some error code if an invalid text or string index is specified.
- // It also just returns the length of the string if pchBuffer is specified as NULL.
- HRESULT GetDVDTextStringAsNative
- ( [in] ULONG ulLangIndex,
- [in] ULONG ulStringIndex,
- [out] BYTE* pbBuffer,
- [in] ULONG ulMaxBufferSize,
- [out] ULONG* pulActualSize,
- [out] enum DVD_TextStringType* pType
- );
-
- // GetDVDTextStringAsUnicode
- // Returns the text string in Unicode for the specified language index.and string index.
- // Should return some error code if an invalid text or string index is specified.
- // It also just returns the length of the string if pchBuffer is specified as NULL.
- HRESULT GetDVDTextStringAsUnicode
- ( [in] ULONG ulLangIndex,
- [in] ULONG ulStringIndex,
- [out] WCHAR* pchwBuffer,
- [in] ULONG ulMaxBufferSize,
- [out] ULONG* pulActualSize,
- [out] enum DVD_TextStringType* pType
- );
-
- // GetPlayerParentalLevel
- // Returns the current parental level and the current country code that has
- // been set in the system registers in player.
- // See Table 3.3.4-1 of the DVD-Video spec for the defined parental levels.
- // Valid Parental Levels range from 1 to 8 if parental management is enabled.
- // Returns 0xffffffff if parental management is disabled
- // See ISO3166 : Alpha-2 Code for the country codes.
- HRESULT GetPlayerParentalLevel
- ( [out] ULONG *pulParentalLevel, // current parental level
- [out] BYTE pbCountryCode[2] // current country code
- );
-
- // GetNumberOfChapters
- // Returns the number of chapters that are defined for a
- // given title.
- HRESULT GetNumberOfChapters
- ( [in] ULONG ulTitle, // Title for which number of chapters is requested
- [out] ULONG *pulNumOfChapters // Number of chapters for the specified title
- );
-
- // GetTitleParentalLevels
- // Returns the parental levels that are defined for a particular title.
- // pulParentalLevels will be combination of DVD_PARENTAL_LEVEL_8,
- // DVD_PARENTAL_LEVEL_6, or DVD_PARENTAL_LEVEL_1 OR-ed together
- HRESULT GetTitleParentalLevels
- ( [in] ULONG ulTitle, // Title for which parental levels are requested
- [out] ULONG *pulParentalLevels // Parental levels defined for the title "OR"ed together
- );
-
- // GetDVDDirectory
- // Returns the root directory that is set in the player. If a valid root
- // has been found, it returns the root string. Otherwise, it returns 0 for
- // pcbActualSize indicating that a valid root directory has not been found
- // or initialized.
- //
- // !!! used to return LPTSTR. interface was changed to return
- // LPSTR (ansi) for compatibility. COM APIs should pass with
- // UNICODE strings only.
- //
- HRESULT GetDVDDirectory
- ( [out, size_is(ulMaxSize)] LPWSTR pszwPath, // pointer to buffer to get root string
- [in] ULONG ulMaxSize, // size of buffer in WCHARs passed in
- [out] ULONG *pulActualSize // size of actual data returned (in WCHARs)
- );
-
-
- // IsAudioStreamEnabled
- //
- // Determines if the specified audio stream is enabled/disabled in the current PGC.
- //
- // ulStreamNum - audio stream number to test
- // pbEnabled - where to place the result
- HRESULT IsAudioStreamEnabled
- ( [in] ULONG ulStreamNum, // stream number to test
- [out] BOOL *pbEnabled // returned state
- );
-
- // GetDiscID
- //
- // If pszwPath is specified as NULL, DVD Navigator will use the current path
- // that would be returned by GetDVDDirectory() at this point.
- //
- // Returns a 64-bit identification number for the specified DVD disc.
- HRESULT GetDiscID
- ( [in] LPCWSTR pszwPath, // root path (should we rather use const WCHAR*?)
- [out] ULONGLONG* pullDiscID // 64-bit unique id for the disc
- ) ;
-
- // GetState
- //
- // The navigator will create a new state object and save the current location into it.
- // The state object can be used to restore the navigator the saved location at a later time.
- // A new IDvdState object is created (with a single AddRef) and returned in *pStateData.
- // The object must be Released() when the application is finished with it.
- //
- HRESULT GetState
- ( [out] IDvdState **pStateData // returned object
- );
-
- //
- // GetMenuLanguages
- //
- // Navigator gets all of the menu languages for the VMGM and VTSM domains.
- //
- HRESULT GetMenuLanguages
- ( [out] LCID *pLanguages, // data buffer (NULL returns #languages)
- [in] ULONG ulMaxLanguages, // maxiumum number of languages to retrieve
- [out] ULONG *pulActualLanguages // actual number of languages retrieved
- );
-
- //
- // GetButtonAtPosition
- //
- // This is typically called in response to a mouse move within the
- // display window.
- // It returns the button located at the specified point within the display window.
- // If no button is present at that position, then VFW_E_DVD_NO_BUTTON is returned.
- // Button indices start at 1.
- //
- // NOTE: DVD Buttons do not all necessarily have highlight rects,
- // button rects can overlap, and button rects do not always
- // correspond to the visual representation of DVD buttons.
- HRESULT GetButtonAtPosition // typically called after a mouse move
- ( [in] POINT point,
- [out] ULONG *pulButtonIndex
- );
-
- //
- // GetCmdFromEvent
- //
- // This method maps an EC_DVD_CMD_BEGIN/COMPLETE/CANCEL event's lParam1 into an AddRef'd
- // IDvdCmd pointer. You must Release the returned pointer. NULL is returned if the function
- // fails.
- //
- HRESULT GetCmdFromEvent
- ( [in] LONG_PTR lParam1,
- [out] IDvdCmd **pCmdObj
- );
-
- // GetDefaultMenuLanguage
- // Returns the default language for menus.
- HRESULT GetDefaultMenuLanguage
- ( [out] LCID * pLanguage
- );
-
- // GetDefaultAudioLanguage
- // Gets the default audio language.
- // Languages are specified with Windows standard LCIDs.
- HRESULT GetDefaultAudioLanguage
- ( [out] LCID* pLanguage,
- [out] DVD_AUDIO_LANG_EXT* pAudioExtension
- );
-
- // GetDefaultSubpictureLanguage
- // Gets the default subpicture language.
- // Languages are specified with Windows standard LCIDs.
- HRESULT GetDefaultSubpictureLanguage
- ( [out] LCID* pLanguage,
- [out] DVD_SUBPICTURE_LANG_EXT* pSubpictureExtension
- );
-
- //
- // GetDecoderCaps:
- // Retrieves the DVD decoder's details about max data rate for video, audio
- // and subpicture (going backward and forward) as well as support for various
- // types of audio (AC3, MPEG2, DTS, SDDS, LPCM).
- //
- HRESULT GetDecoderCaps
- ( [out] DVD_DECODER_CAPS *pCaps
- ) ;
-
- //
- // GetButtonRect:
- // Retrieves the coordinates for a given button number
- //
- HRESULT GetButtonRect
- ( [in] ULONG ulButton,
- [out] RECT *pRect
- ) ;
-
- // IsSubpictureStreamEnabled
- //
- // Determines if the specified subpicture stream is enabled/disabled in the current PGC.
- //
- // ulStreamNum - Subpicture stream number to test
- // pbEnabled - where to place the result
- HRESULT IsSubpictureStreamEnabled
- ( [in] ULONG ulStreamNum, // stream number to test
- [out] BOOL *pbEnabled // returned state
- );
-}
-
-
-
-//==========================================================================
-//==========================================================================
-//
-// typedefs used by IDvdGraphBuilder interface.
-//
-//==========================================================================
-//==========================================================================
-
-typedef enum _AM_DVD_GRAPH_FLAGS {
- AM_DVD_HWDEC_PREFER = 0x01, // default
- AM_DVD_HWDEC_ONLY = 0x02,
- AM_DVD_SWDEC_PREFER = 0x04,
- AM_DVD_SWDEC_ONLY = 0x08,
- AM_DVD_NOVPE = 0x100,
- AM_DVD_VMR9_ONLY = 0x800 // only use VMR9 (otherwise fail) for rendering
-} AM_DVD_GRAPH_FLAGS ;
-
-typedef enum _AM_DVD_STREAM_FLAGS {
- AM_DVD_STREAM_VIDEO = 0x01,
- AM_DVD_STREAM_AUDIO = 0x02,
- AM_DVD_STREAM_SUBPIC = 0x04
-} AM_DVD_STREAM_FLAGS ;
-
-typedef struct {
- HRESULT hrVPEStatus ; // VPE mixing error code (0 => success)
- BOOL bDvdVolInvalid ; // Is specified DVD volume invalid?
- BOOL bDvdVolUnknown ; // Is DVD volume to be played not specified/not found?
- BOOL bNoLine21In ; // video decoder doesn't produce line21 (CC) data
- BOOL bNoLine21Out ; // can't show decoded line21 data as CC on video
- int iNumStreams ; // number of DVD streams to render
- int iNumStreamsFailed ; // number of streams failed to render
- DWORD dwFailedStreamsFlag ; // combination of flags to indicate failed streams
-} AM_DVD_RENDERSTATUS ;
-
-
-//
-// IDvdGraphBuilder interface to build a filter graph for DVD-Video playback.
-//
-
-[
- object,
- local,
- uuid(FCC152B6-F372-11d0-8E00-00C04FD7C08B),
- pointer_default(unique)
-]
-interface IDvdGraphBuilder : IUnknown {
-
- // Returns the IGraphBuilder interface for the filtergraph used by the
- // CDvdGraphBuilder object.
- // Remember to *ppGB->Release() when you're done with it
- HRESULT GetFiltergraph
- ( [out] IGraphBuilder **ppGB
- ) ;
-
- // Gets specific interface pointers in the DVD-Video playback graph to
- // make DVD-Video playback development easier.
- // It helps get the following interfaces to control playback/show CC/
- // position window/control volume etc:
- // - IDvdControl, IDvdInfo
- // - IAMLine21Decoder
- // - IVideoWindow, IBasicVideo
- // - IBasicAudio
- // This method will return
- // a) E_INVALIDARG if ppvIF is invalid
- // b) E_NOINTERFACE if riid is an IID we don't know about
- // c) VFW_E_DVD_GRAPHNOTREADY if the graph has not been built through
- // RenderDvdVideoVolume() yet.
- // Remember to *ppvIF->Release() when you're done with it
- HRESULT GetDvdInterface
- ( [in] REFIID riid, // IID of the interface required
- [out] void **ppvIF // returns pointer to the required interface
- ) ;
-
- // Builds a filter graph according to user specs for playing back a
- // DVD-Video volume.
- // This method returns S_FALSE if
- // 1. the graph has been either built, but either
- // a) VPE mixing doesn't work (app didn't use AM_DVD_NOVPE flag)
- // b) video decoder doesn't produce line21 data
- // c) line21 data couldn't be rendered (decoding/mixing problem)
- // d) the call specified an invalid volume path or DVD Nav couldn't
- // locate any DVD-Video volume to be played.
- // 2. some streams didn't render (completely), but the others have
- // been rendered so that the volume can be partially played back.
- // The status is indicated through the fields of the pStatus (out)
- // parameter.
- // About 1(a), the app will have enough info to tell the user that the
- // video won't be visible unless a TV is connected to the NTSC out
- // port of the DVD decoder (presumably HW in this case).
- // For case 1(b) & (c), the app "can" put up a warning/informative message
- // that closed captioning is not available because of the decoder.
- // 1(d) helps an app to ask the user to insert a DVD-Video disc if none
- // is specified/available in the drive when playback is started.
- // This method builds the graph even if
- // - an invalid DVD-Video volume is specified
- // - the caller uses lpwszPathName = NULL to make the DVD Nav to locate
- // the default volume to be played back, but DVD Nav doesn't find a
- // default DVD-Video volume to be played back.
- // An app can later specify the volume using IDvdControl::SetRoot()
- // method.
- // #2 will help the app indicate to the user that some of the streams
- // can't be played.
- //
- // The graph is built using filters based on the dwFlags value (to use
- // HW decoders or SW decoders or a mix of them).
- // The dwFlags value is one of the values in AM_DVD_GRAPH_FLAGS enum
- // type. The default value is AM_DVD_HWDEC_PREFER. None of the
- // AM_DVD_HWDEC_xxx or AM_DVD_SWDEC_xxx flags can be mixed. However
- // AM_DVD_NOVPE can be OR-ed with any of the AM_DVD_HWDEC_xxx flags.
- //
- // The method returns S_OK if the playback graph is built successfully
- // with all the streams completely rendered and a valid DVD-Video volume
- // is specified or a default one has been located.
- //
- // If the dwFlags specify conflicting options, E_INVALIDARG is returned.
- // If the graph building fails, the method returns one of the following
- // error codes:
- // VFW_E_DVD_RENDERFAIL, VFW_E_DVD_DECNOTENOUGH
- //
- HRESULT RenderDvdVideoVolume
- ( [in] LPCWSTR lpcwszPathName, // Can be NULL too
- [in] DWORD dwFlags, // 0 is the default (use max HW)
- [out] AM_DVD_RENDERSTATUS *pStatus // returns indications of ANY failure
- ) ;
-}
-
-
-//
-// DDraw Exclusive Mode Video standard COM interface for Overlay Mixer
-//
-[
- object,
- local,
- uuid(153ACC21-D83B-11d1-82BF-00A0C9696C8F),
- pointer_default(unique)
-]
-interface IDDrawExclModeVideo : IUnknown {
- // set a ddraw object to be used by the overlay mixer. If even one of the pins
- // of the ovmixer is connected, then it won't start using the new ddraw obect
- // immediately but just cache it. It will start using it the next time, all its
- // pins are disconnected.
- HRESULT SetDDrawObject([in] IDirectDraw *pDDrawObject);
-
- // gets the ddraw object currently being used by the overlay mixer. If the app has not
- // set any ddraw object and the ovmixer has not yet allocated one, then *ppDDrawObject
- // will be set to NULL and *pbUsingExternal will be set TO FALSE. Otherwise *pbUsingExternal
- // will be set to TRUE if the ovmixer is currently USING an app given ddraw object and FALSE
- // othewise
- HRESULT GetDDrawObject([out] IDirectDraw **ppDDrawObject,
- [out] BOOL *pbUsingExternal);
-
- // set a primary surface to be used by the overlay mixer. If even one of the pins
- // of the ovmixer is connected, then it won't start using the new primary surface
- // immediately but just cache it. It will start using it the next time, all its
- // pins are disconnected.
- // Also when the ovmixer does start using an app given primary surface, it will delete
- // its output pin (and not draw its own colorkey) since the app is expected to do the
- // window management and drawing colorkey etc on the primary surface
- // This function makes sure that the surface provided exposes IDirectDrawSurface3, and
- // is consistent with the ddraw object provided.
- HRESULT SetDDrawSurface([in] IDirectDrawSurface *pDDrawSurface);
-
- // gets the ddraw surface currently being used by the overlay mixer. If the app has not
- // set any ddraw surface and the ovmixer has not yet allocated one, then *ppDDrawSurface
- // will be set to NULL and *pbUsingExternal will be set to FALSE. Otherwise *pbUsingExternal
- // will be set to TRUE if the ovmixer is curretnly USING an app given ddraw surface and FALSE
- // otherwise
- HRESULT GetDDrawSurface([out] IDirectDrawSurface **ppDDrawSurface,
- [out] BOOL *pbUsingExternal);
-
- // set draw paramters on the ovmixer (src and dest rect). Note that if the mode
- // of the ovmixer is set to LETTER_BOX, then the ovmixer might show the video in
- // only a subrect of *prcTarget (see IMixerPinConfig for details).
- HRESULT SetDrawParameters([in] const RECT * prcSource,
- [in] const RECT * prcTarget);
-
- // gets the current video size and picture aspect ratio of the primary stream of the overlay mixer
- // The app should look for the evene EC_VIDEO_SIZE_AR_CHANGED and on its receipt
- // call this function again
- HRESULT GetNativeVideoProps([out] DWORD *pdwVideoWidth,
- [out] DWORD *pdwVideoHeight,
- [out] DWORD *pdwPictAspectRatioX,
- [out] DWORD *pdwPictAspectRatioY);
-
- // Set the callback interface - the callback interface will be defined in a later release
- // Currently returns E_NOTIMPL
- HRESULT SetCallbackInterface([in] IDDrawExclModeVideoCallback *pCallback,
- [in] DWORD dwFlags);
-}
-
-
-//
-// DDraw Exclusive Mode Video callbacks
-//
-
-// enum for flags
-enum _AM_OVERLAY_NOTIFY_FLAGS {
- AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = 0x00000001,
- AM_OVERLAY_NOTIFY_SOURCE_CHANGE = 0x00000002,
- AM_OVERLAY_NOTIFY_DEST_CHANGE = 0x00000004
-};
-[
- object,
- local,
- uuid(913c24a0-20ab-11d2-9038-00a0c9697298),
- pointer_default(unique)
-]
-interface IDDrawExclModeVideoCallback : IUnknown {
-
- // Called once before UpdateOverlay is called with bBefore == TRUE
- // and once after it is called with bBefore == FALSE and otherwise
- // identical parameters
- HRESULT OnUpdateOverlay(
- [in] BOOL bBefore, // After UpdateOverlayCalled?
- [in] DWORD dwFlags,// _AM_OVERLAY_NOTIFY enum
- [in] BOOL bOldVisible,
- [in] const RECT *prcOldSrc,
- [in] const RECT *prcOldDest,
- [in] BOOL bNewVisible,
- [in] const RECT *prcNewSrc,
- [in] const RECT *prcNewDest);
-
- // Called when the surface color key is changed
- HRESULT OnUpdateColorKey(
- [in] const COLORKEY *pKey,
- [in] DWORD dwColor);
-
- // Called when the video size or aspect ratio changes
- HRESULT OnUpdateSize( [in] DWORD dwWidth, // Movie pixel width
- [in] DWORD dwHeight, // Movie pixel height
- [in] DWORD dwARWidth, // Aspect ratio horizontal
- [in] DWORD dwARHeight); // Aspect ratio vertical
-}
diff --git a/dxsdk/Include/DShowIDL/dxtrans.idl b/dxsdk/Include/DShowIDL/dxtrans.idl
deleted file mode 100644
index 6395d325..00000000
--- a/dxsdk/Include/DShowIDL/dxtrans.idl
+++ /dev/null
@@ -1,1289 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// Copyright Microsoft Corporation 1997-2000
-// All rights reserved.
-//
-// File: dxtrans.idl
-//
-// Overview:
-// This is the IDL file for DirectX installable transform coclass,
-// interface, and type definitions.
-//
-//------------------------------------------------------------------------------
-
-cpp_quote("#include <servprov.h>")
-cpp_quote("#include <ddraw.h>")
-cpp_quote("#include <d3d.h>")
-cpp_quote("#include <d3drm.h>")
-cpp_quote("#include <urlmon.h>")
-
-//--- Import base idl
-import "oaidl.idl";
-import "ocidl.idl";
-import "servprov.idl";
-import "comcat.idl";
-
-//
-// Since direct draw does not have an IDL, we'll define DDSURFACEDESC to
-// be a void, but include ddraw.h in the header file. This makes MIDL happy.
-//
-#ifndef DDSURFACEDESC
-cpp_quote("#if 0")
-cpp_quote("// Bogus definition used to make MIDL compiler happy")
-typedef void DDSURFACEDESC;
-typedef void D3DRMBOX;
-typedef void D3DVECTOR;
-typedef void D3DRMMATRIX4D;
-typedef void* LPSECURITY_ATTRIBUTES;
-cpp_quote("#endif")
-#endif
-//--- Additional includes
-
-//--- Export
-cpp_quote( "#ifdef _DXTRANSIMPL")
-cpp_quote( " #define _DXTRANS_IMPL_EXT _declspec(dllexport)")
-cpp_quote( "#else")
-cpp_quote( " #define _DXTRANS_IMPL_EXT _declspec(dllimport)")
-cpp_quote( "#endif")
-
-//=== Forward References ====================================================
-interface IDXTransformFactory;
-interface IDXTransform;
-interface IDXTaskManager;
-interface IDXSurfaceFactory;
-interface IDXSurface;
-interface IDXARGBSurfaceInit;
-interface IDXRawSurface;
-interface IDXARGBReadPtr;
-interface IDXARGBReadWritePtr;
-interface IDXDCLock;
-interface IDXTScale;
-interface IDXLookupTable;
-interface IDXTBindHost;
-interface IBindHost;
-interface IDXTScaleOutput;
-interface IDXGradient;
-
-//=== Constants =============================================================
-
-cpp_quote("//")
-cpp_quote("// All GUIDs for DXTransform are declared in DXTGUID.C in the SDK include directory")
-cpp_quote("//")
-cpp_quote("EXTERN_C const GUID DDPF_RGB1;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB2;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB4;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB8;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB332;")
-cpp_quote("EXTERN_C const GUID DDPF_ARGB4444;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB565;")
-cpp_quote("EXTERN_C const GUID DDPF_BGR565;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB555;")
-cpp_quote("EXTERN_C const GUID DDPF_ARGB1555;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB24;")
-cpp_quote("EXTERN_C const GUID DDPF_BGR24;")
-cpp_quote("EXTERN_C const GUID DDPF_RGB32;")
-cpp_quote("EXTERN_C const GUID DDPF_BGR32;")
-cpp_quote("EXTERN_C const GUID DDPF_ABGR32;")
-cpp_quote("EXTERN_C const GUID DDPF_ARGB32;")
-cpp_quote("EXTERN_C const GUID DDPF_PMARGB32;")
-cpp_quote("EXTERN_C const GUID DDPF_A1;")
-cpp_quote("EXTERN_C const GUID DDPF_A2;")
-cpp_quote("EXTERN_C const GUID DDPF_A4;")
-cpp_quote("EXTERN_C const GUID DDPF_A8;")
-cpp_quote("EXTERN_C const GUID DDPF_Z8;")
-cpp_quote("EXTERN_C const GUID DDPF_Z16;")
-cpp_quote("EXTERN_C const GUID DDPF_Z24;")
-cpp_quote("EXTERN_C const GUID DDPF_Z32;")
-cpp_quote("//")
-cpp_quote("// Component categories")
-cpp_quote("//")
-cpp_quote("EXTERN_C const GUID CATID_DXImageTransform;")
-cpp_quote("EXTERN_C const GUID CATID_DX3DTransform;")
-cpp_quote("EXTERN_C const GUID CATID_DXAuthoringTransform;")
-cpp_quote("EXTERN_C const GUID CATID_DXSurface;")
-cpp_quote("//")
-cpp_quote("// Service IDs")
-cpp_quote("//")
-cpp_quote("EXTERN_C const GUID SID_SDirectDraw;")
-cpp_quote("EXTERN_C const GUID SID_SDirect3DRM;")
-cpp_quote("#define SID_SDXTaskManager CLSID_DXTaskManager")
-cpp_quote("#define SID_SDXSurfaceFactory IID_IDXSurfaceFactory")
-cpp_quote("#define SID_SDXTransformFactory IID_IDXTransformFactory")
-cpp_quote("//")
-cpp_quote("// DXTransforms Core Type Library Version Info")
-cpp_quote("//")
-cpp_quote("#define DXTRANS_TLB_MAJOR_VER 1")
-cpp_quote("#define DXTRANS_TLB_MINOR_VER 1")
-
-//=== Struct & Enum definitions =============================================
-
-//=== Interface definitions =================================================
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXBaseObject
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(17B59B2B-9CC8-11d1-9053-00C04FD9189D),
- helpstring("IDXBaseObject Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXBaseObject : IUnknown
- {
- HRESULT GetGenerationId( [out]ULONG *pID);
- HRESULT IncrementGenerationId([in] BOOL bRefresh);
- HRESULT GetObjectSize( [out] ULONG *pcbSize);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// Bounding rectangle and vector structures.
-//
-//------------------------------------------------------------------------------
-
- //--- Dimension identifiers
- typedef enum DXBNDID
- {
- DXB_X = 0,
- DXB_Y = 1,
- DXB_Z = 2,
- DXB_T = 3
- } DXBNDID;
-
- //--- Bound types
- typedef enum DXBNDTYPE
- {
- DXBT_DISCRETE,
- DXBT_DISCRETE64,
- DXBT_CONTINUOUS,
- DXBT_CONTINUOUS64
- } DXBNDTYPE;
-
- //--- Discrete bounds (image & sound)
- typedef struct DXDBND
- {
- long Min;
- long Max;
- } DXDBND;
- typedef DXDBND DXDBNDS[4];
-
- typedef struct DXDBND64
- {
- LONGLONG Min;
- LONGLONG Max;
- } DXDBND64;
- typedef DXDBND64 DXDBNDS64[4];
-
- //--- Continuous bounds (geometry)
- typedef struct DXCBND
- {
- float Min;
- float Max;
- } DXCBND;
- typedef DXCBND DXCBNDS[4];
-
- typedef struct DXCBND64
- {
- double Min;
- double Max;
- } DXCBND64;
- typedef DXCBND64 DXCBNDS64[4];
-
- //--- Combined space
- typedef union DXBNDS switch( DXBNDTYPE eType ) u
- {
- case DXBT_DISCRETE:
- DXDBND D[4];
- case DXBT_DISCRETE64:
- DXDBND64 LD[4];
- case DXBT_CONTINUOUS:
- DXCBND C[4];
- case DXBT_CONTINUOUS64:
- DXCBND64 LC[4];
- } DXBNDS;
-
- //--- Discrete 4D vector
- typedef long DXDVEC[4];
- typedef LONGLONG DXDVEC64[4];
-
- //--- Continous 4D vector
- typedef float DXCVEC[4];
- typedef double DXCVEC64[4];
-
- //--- Combined space vector
- typedef union DXVEC switch( DXBNDTYPE eType ) u
- {
- case DXBT_DISCRETE:
- long D[4];
- case DXBT_DISCRETE64:
- LONGLONG LD[4];
- case DXBT_CONTINUOUS:
- float C[4];
- case DXBT_CONTINUOUS64:
- double LC[4];
- } DXVEC;
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXTransformFactory
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(6A950B2B-A971-11d1-81C8-0000F87557DB),
- helpstring("IDXTransformFactory Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXTransformFactory : IServiceProvider
- {
- HRESULT SetService( [in]REFGUID guidService,
- [in]IUnknown *pUnkService,
- [in]BOOL bWeakReference);
-
- HRESULT CreateTransform( [in, size_is(ulNumInputs)]IUnknown** punkInputs,
- [in]ULONG ulNumInputs,
- [in, size_is(ulNumOutputs)]IUnknown** punkOutputs,
- [in]ULONG ulNumOutputs,
- [in]IPropertyBag* pInitProps, [in]IErrorLog* pErrLog,
- [in]REFCLSID TransCLSID, [in]REFIID TransIID,
- [out, iid_is(TransIID)]void** ppTransform );
-
- HRESULT InitializeTransform( [in]IDXTransform* pTransform,
- [in, size_is(ulNumInputs)]IUnknown** punkInputs,
- [in]ULONG ulNumInputs,
- [in, size_is(ulNumOutputs)]IUnknown** punkOutputs,
- [in]ULONG ulNumOutputs,
- [in]IPropertyBag* pInitProps, [in]IErrorLog* pErrLog );
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXTransform
-//
-//------------------------------------------------------------------------------
-
- typedef enum DXTMISCFLAGS
- {
- DXTMF_BLEND_WITH_OUTPUT = ( 1L << 0 ),
- DXTMF_DITHER_OUTPUT = ( 1L << 1 ),
- DXTMF_OPTION_MASK = (0x0000FFFF), // Low word is settable options
- DXTMF_VALID_OPTIONS = (DXTMF_BLEND_WITH_OUTPUT | DXTMF_DITHER_OUTPUT),
- //
- // Status flags can not be changed by call to SetMiscFlags
- //
- DXTMF_BLEND_SUPPORTED = ( 1L << 16 ),
- DXTMF_DITHER_SUPPORTED = ( 1L << 17 ),
- DXTMF_INPLACE_OPERATION = ( 1L << 24 ),
- DXTMF_BOUNDS_SUPPORTED = ( 1L << 25 ),
- DXTMF_PLACEMENT_SUPPORTED = ( 1L << 26 ),
- DXTMF_QUALITY_SUPPORTED = ( 1L << 27 ),
- DXTMF_OPAQUE_RESULT = ( 1L << 28 )
- } DXTMISCFLAGS;
-
- typedef enum DXINOUTINFOFLAGS
- {
- DXINOUTF_OPTIONAL = ( 1L << 0)
- } DXINOUTINFOFLAGS;
-
- [
- object,
- uuid(30A5FB78-E11F-11d1-9064-00C04FD9189D),
- helpstring("IDXTransform Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXTransform : IDXBaseObject
- {
- HRESULT Setup( [in, size_is(ulNumInputs)] IUnknown * const * punkInputs,
- [in]ULONG ulNumInputs,
- [in, size_is(ulNumOutputs)] IUnknown * const * punkOutputs,
- [in]ULONG ulNumOutputs,
- [in]DWORD dwFlags );
- HRESULT Execute( [in]const GUID* pRequestID, [in]const DXBNDS *pClipBnds,
- [in]const DXVEC *pPlacement );
- HRESULT MapBoundsIn2Out( [in] const DXBNDS *pInBounds,
- [in]ULONG ulNumInBnds,
- [in]ULONG ulOutIndex,
- [out]DXBNDS *pOutBounds );
- HRESULT MapBoundsOut2In( [in] ULONG ulOutIndex,
- [in] const DXBNDS *pOutBounds,
- [in] ULONG ulInIndex,
- [out]DXBNDS *pInBounds );
- HRESULT SetMiscFlags( [in] DWORD dwMiscFlags);
- HRESULT GetMiscFlags( [out]DWORD * pdwMiscFlags );
- HRESULT GetInOutInfo( [in]BOOL bIsOutput, [in]ULONG ulIndex,
- [out]DWORD *pdwFlags, [out, size_is(*pcIDs)] GUID *pIDs,
- [in, out] ULONG *pcIDs,
- [out] IUnknown **ppUnkCurrentObject);
- HRESULT SetQuality( [in] float fQuality );
- HRESULT GetQuality( [out] float * fQuality );
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXSurfacePick
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(30A5FB79-E11F-11d1-9064-00C04FD9189D),
- helpstring("IDXSurfacePick Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXSurfacePick : IUnknown
- {
- HRESULT PointPick([in]const DXVEC *pPoint,
- [out]ULONG * pulInputSurfaceIndex,
- [out]DXVEC *pInputPoint);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXTBindHost
-//
-// Overview:
-// This interface is used to set a site-specific bind host for a transform.
-// Only transforms that need access to a bind host need to implement this
-// interface.
-//
-// For some reason, MIDL does not like IBindHost, so we've declared this
-// interface local.
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(D26BCE55-E9DC-11d1-9066-00C04FD9189D),
- helpstring("IDXTBindHost Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXTBindHost : IUnknown
- {
- HRESULT SetBindHost([in] IBindHost * pBindHost);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXTaskManager
-//
-// Overview:
-// This interface is used to implement a task managment service provider to
-// optimize thread usage.
-//
-//------------------------------------------------------------------------------
-
- typedef void (__stdcall DXTASKPROC)(void *pTaskData, BOOL* pbContinueProcessing );
- typedef DXTASKPROC *PFNDXTASKPROC;
-
- typedef void (__stdcall DXAPCPROC)(DWORD dwData);
- typedef DXAPCPROC *PFNDXAPCPROC;
-
-cpp_quote("#ifdef __cplusplus")
-
- cpp_quote("typedef struct DXTMTASKINFO" )
- cpp_quote("{")
- cpp_quote(" PFNDXTASKPROC pfnTaskProc; // Pointer to function to execute")
- cpp_quote(" PVOID pTaskData; // Pointer to argument data")
- cpp_quote(" PFNDXAPCPROC pfnCompletionAPC; // Pointer to completion APC proc")
- cpp_quote(" DWORD dwCompletionData; // Pointer to APC proc data")
- cpp_quote(" const GUID* pRequestID; // Used to identify groups of tasks")
- cpp_quote("} DXTMTASKINFO;")
-
-cpp_quote("#else")
-
- typedef struct DXTMTASKINFO
- {
- PVOID pfnTaskProc; // Pointer to function to execute
- PVOID pTaskData; // Pointer to argument data
- PVOID pfnCompletionAPC; // Pointer to completion APC proc
- DWORD dwCompletionData; // Pointer to APC proc data
- const GUID* pRequestID; // Used to identify groups of tasks
- } DXTMTASKINFO;
-
-cpp_quote("#endif")
-
- [
- object,
- uuid(254DBBC1-F922-11d0-883A-3C8B00C10000),
- helpstring("IDXTaskManager Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXTaskManager : IUnknown
- {
- HRESULT QueryNumProcessors( [out]ULONG* pulNumProc );
- HRESULT SetThreadPoolSize( [in]ULONG ulNumThreads );
- HRESULT GetThreadPoolSize( [out]ULONG* pulNumThreads );
- HRESULT SetConcurrencyLimit( [in]ULONG ulNumThreads );
- HRESULT GetConcurrencyLimit( [out]ULONG* pulNumThreads );
- HRESULT ScheduleTasks( [in]DXTMTASKINFO TaskInfo[],
- [in]HANDLE Events[],
- [out]DWORD TaskIDs[],
- [in]ULONG ulNumTasks, [in]ULONG ulWaitPeriod );
- HRESULT TerminateTasks( [in]DWORD TaskIDs[], [in]ULONG ulCount,
- [in]ULONG ulTimeOut );
- HRESULT TerminateRequest( [in]REFIID RequestID, [in]ULONG ulTimeOut );
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// Sample structures (C++)
-//
-// Overview:
-// We want an operator so that we can cast from a DXSAMPLE to a DWORD, so
-// for C++ we will define the structure a special way.
-//
-//------------------------------------------------------------------------------
-
-cpp_quote("#ifdef __cplusplus")
-
- cpp_quote("/////////////////////////////////////////////////////")
- cpp_quote("")
- cpp_quote("class DXBASESAMPLE;")
- cpp_quote("class DXSAMPLE;")
- cpp_quote("class DXPMSAMPLE;")
- cpp_quote("")
- cpp_quote("/////////////////////////////////////////////////////")
- cpp_quote("")
- cpp_quote("class DXBASESAMPLE")
- cpp_quote("{")
- cpp_quote("public:")
- cpp_quote(" BYTE Blue;")
- cpp_quote(" BYTE Green;")
- cpp_quote(" BYTE Red;")
- cpp_quote(" BYTE Alpha;")
- cpp_quote(" DXBASESAMPLE() {}")
- cpp_quote(" DXBASESAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :")
- cpp_quote(" Alpha(alpha),")
- cpp_quote(" Red(red),")
- cpp_quote(" Green(green),")
- cpp_quote(" Blue(blue) {}")
- cpp_quote(" DXBASESAMPLE(const DWORD val) { *this = (*(DXBASESAMPLE *)&val); }")
- cpp_quote(" operator DWORD () const {return *((DWORD *)this); }")
- cpp_quote(" DWORD operator=(const DWORD val) { return *this = *((DXBASESAMPLE *)&val); }")
- cpp_quote("}; // DXBASESAMPLE")
- cpp_quote("")
- cpp_quote("/////////////////////////////////////////////////////")
- cpp_quote("")
- cpp_quote("class DXSAMPLE : public DXBASESAMPLE")
- cpp_quote("{")
- cpp_quote("public:")
- cpp_quote(" DXSAMPLE() {}")
- cpp_quote(" DXSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :")
- cpp_quote(" DXBASESAMPLE(alpha, red, green, blue) {}")
- cpp_quote(" DXSAMPLE(const DWORD val) { *this = (*(DXSAMPLE *)&val); }")
- cpp_quote(" operator DWORD () const {return *((DWORD *)this); }")
- cpp_quote(" DWORD operator=(const DWORD val) { return *this = *((DXSAMPLE *)&val); }")
- cpp_quote(" operator DXPMSAMPLE() const;")
- cpp_quote("}; // DXSAMPLE")
- cpp_quote("")
- cpp_quote("/////////////////////////////////////////////////////")
- cpp_quote("")
- cpp_quote("class DXPMSAMPLE : public DXBASESAMPLE")
- cpp_quote("{")
- cpp_quote("public:")
- cpp_quote(" DXPMSAMPLE() {}")
- cpp_quote(" DXPMSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :")
- cpp_quote(" DXBASESAMPLE(alpha, red, green, blue) {}")
- cpp_quote(" DXPMSAMPLE(const DWORD val) { *this = (*(DXPMSAMPLE *)&val); }")
- cpp_quote(" operator DWORD () const {return *((DWORD *)this); }")
- cpp_quote(" DWORD operator=(const DWORD val) { return *this = *((DXPMSAMPLE *)&val); }")
- cpp_quote(" operator DXSAMPLE() const;")
- cpp_quote("}; // DXPMSAMPLE")
- cpp_quote("")
- cpp_quote("//")
- cpp_quote("// The following cast operators are to prevent a direct assignment of a DXSAMPLE to a DXPMSAMPLE")
- cpp_quote("//")
- cpp_quote("inline DXSAMPLE::operator DXPMSAMPLE() const { return *((DXPMSAMPLE *)this); }")
- cpp_quote("inline DXPMSAMPLE::operator DXSAMPLE() const { return *((DXSAMPLE *)this); }")
-
-
-//+-----------------------------------------------------------------------------
-//
-// Sample structures (IDL, C)
-//
-//------------------------------------------------------------------------------
-
-cpp_quote("#else // !__cplusplus")
-
- typedef struct DXBASESAMPLE
- {
- BYTE Blue;
- BYTE Green;
- BYTE Red;
- BYTE Alpha;
- } DXBASESAMPLE;
-
- typedef struct DXSAMPLE
- {
- BYTE Blue;
- BYTE Green;
- BYTE Red;
- BYTE Alpha;
- } DXSAMPLE;
-
- typedef struct DXPMSAMPLE
- {
- BYTE Blue;
- BYTE Green;
- BYTE Red;
- BYTE Alpha;
- } DXPMSAMPLE;
-
-cpp_quote("#endif // !__cplusplus")
-
-//+-----------------------------------------------------------------------------
-//
-// DXRUNINFO structures.
-//
-//------------------------------------------------------------------------------
-
- typedef enum DXRUNTYPE
- {
- DXRUNTYPE_CLEAR = 0, // The run is zero Alpha
- DXRUNTYPE_OPAQUE = 1, // The run is full Alpha (i.e. 255)
- DXRUNTYPE_TRANS = 2, // The run is non-zero Alpha
- DXRUNTYPE_UNKNOWN= 3 // The run type is unknown. Caller must inspect.
- } DXRUNTYPE;
-
- const ULONG DX_MAX_RUN_INFO_COUNT = 128; // Defines the maximum number of RUNINFOs in a single row
-
-
- cpp_quote("// Ignore the definition used by MIDL for TLB generation")
- cpp_quote("#if 0")
-
- typedef struct DXRUNINFO
- {
- ULONG Bitfields;
- } DXRUNINFO;
-
- cpp_quote("#endif // 0")
-
- // Emit the C definition to the H file directly, as bit fields are not
- // supported by MIDL.
-
- cpp_quote("typedef struct DXRUNINFO")
- cpp_quote("{")
- cpp_quote(" ULONG Type : 2; // Type")
- cpp_quote(" ULONG Count : 30; // Number of samples in run")
- cpp_quote("} DXRUNINFO;")
-
-
- typedef enum DXSFCREATE
- {
- DXSF_FORMAT_IS_CLSID = ( 1L << 0 ),
- DXSF_NO_LAZY_DDRAW_LOCK = ( 1L << 1 )
- } DXSFCREATE;
-
- typedef enum DXBLTOPTIONS
- {
- DXBOF_DO_OVER = (1L << 0),
- DXBOF_DITHER = (1L << 1)
- } DXBLTOPTIONS;
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXSurfaceModifier
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(144946F5-C4D4-11d1-81D1-0000F87557DB),
- helpstring("IDXSurfaceFactory Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXSurfaceFactory : IUnknown
- {
- HRESULT CreateSurface([in] IUnknown *pDirectDraw,
- [in] const DDSURFACEDESC * pDDSurfaceDesc,
- [in] const GUID * pFormatID,
- [in] const DXBNDS *pBounds,
- [in] DWORD dwFlags,
- [in] IUnknown *punkOuter,
- [in] REFIID riid,
- [out, iid_is( riid )] void ** ppDXSurface);
-
- HRESULT CreateFromDDSurface([in] IUnknown *pDDrawSurface,
- [in] const GUID *pFormatID,
- [in] DWORD dwFlags,
- [in] IUnknown *punkOuter,
- [in] REFIID riid,
- [out, iid_is( riid )] void ** ppDXSurface);
-
- HRESULT LoadImage(
- [in] const LPWSTR pszFileName,
- [in] IUnknown *pDirectDraw,
- [in] const DDSURFACEDESC * pDDSurfaceDesc,
- [in] const GUID *pFormatID,
- [in] REFIID riid,
- [out, iid_is( riid )] void ** ppDXSurface);
-
- HRESULT LoadImageFromStream([in] IStream *pStream,
- [in] IUnknown *pDirectDraw,
- [in] const DDSURFACEDESC * pDDSurfaceDesc,
- [in] const GUID *pFormatID,
- [in] REFIID riid,
- [out, iid_is( riid )] void ** ppDXSurface);
-
- HRESULT CopySurfaceToNewFormat( [in]IDXSurface* pSrc,
- [in] IUnknown *pDirectDraw,
- [in] const DDSURFACEDESC * pDDSurfaceDesc,
- [in] const GUID *pDestFormatID,
- [out] IDXSurface** ppNewSurface );
-
- HRESULT CreateD3DRMTexture([in] IDXSurface *pSrc,
- [in] IUnknown *pDirectDraw,
- [in] IUnknown *pD3DRM3,
- [in] REFIID riid,
- [out, iid_is(riid)] void **ppTexture3);
-
- HRESULT BitBlt([in] IDXSurface *pDest,
- [in] const DXVEC *pPlacement,
- [in] IDXSurface *pSrc,
- [in] const DXBNDS *pClipBounds,
- [in] DWORD dwFlags);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXSurfaceModifier
-//
-//------------------------------------------------------------------------------
-
- typedef enum DXSURFMODCOMPOP
- {
- DXSURFMOD_COMP_OVER = 0,
- DXSURFMOD_COMP_ALPHA_MASK = 1,
- DXSURFMOD_COMP_MAX_VALID = 1
- } DXSURFMODCOMPOP;
-
- [
- object,
- uuid(9EA3B637-C37D-11d1-905E-00C04FD9189D),
- helpstring("IDXSurfaceModifier Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXSurfaceModifier : IUnknown
- {
- HRESULT SetFillColor([in] DXSAMPLE Color);
- HRESULT GetFillColor([out] DXSAMPLE *pColor);
- HRESULT SetBounds([in] const DXBNDS *pBounds ); // Get supported though IDXSurface interface
- HRESULT SetBackground([in] IDXSurface *pSurface);
- HRESULT GetBackground([out] IDXSurface **ppSurface);
- HRESULT SetCompositeOperation([in] DXSURFMODCOMPOP CompOp);
- HRESULT GetCompositeOperation([out] DXSURFMODCOMPOP *pCompOp);
- //
- // The following methods only apply to the FOREGROUND surface
- //
- HRESULT SetForeground([in] IDXSurface *pSurface, [in] BOOL bTile, [in] const POINT * pOrigin);
- HRESULT GetForeground([out] IDXSurface **ppSurface, [out] BOOL *pbTile, [out] POINT * pOrigin);
- HRESULT SetOpacity([in] float Opacity);
- HRESULT GetOpacity([out] float *pOpacity);
- HRESULT SetLookup( [in]IDXLookupTable * pLookupTable );
- HRESULT GetLookup( [out]IDXLookupTable ** ppLookupTable );
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXSurface
-//
-//------------------------------------------------------------------------------
-
- typedef enum DXSAMPLEFORMATENUM
- {
- DXPF_FLAGSMASK = (0xFFFF0000), // Top word is flags, low word is enum
- DXPF_NONPREMULT = (0x00010000), // Flags to be OR'd with pixel formats
- DXPF_TRANSPARENCY = (0x00020000), // Color key or one-bit alpha (alpha only 0 or 0xFF)
- DXPF_TRANSLUCENCY = (0x00040000), // Alpha can be any value from 0->0xFF
- //
- // This 3-bit field is used to determine what type of dithering to be used
- //
- DXPF_2BITERROR = (0x00200000), // 2 bits of error term
- DXPF_3BITERROR = (0x00300000), // 3 bits of error term for color (16-bit color)
- DXPF_4BITERROR = (0x00400000), // 4 bits of error term (ARGB 4444)
- DXPF_5BITERROR = (0x00500000), // 5 bits of error term for color (8-bit color)
- DXPF_ERRORMASK = (0x00700000), // Mask of bits used for dithering
-
- DXPF_NONSTANDARD = (0), // To be used for any surface that is not one of the following formats
- // This can be combined with DXPFNONPREMULT if the surface can work
- // better in non-premultiplied space.
- DXPF_PMARGB32 = (1 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY),
- DXPF_ARGB32 = (2 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY),
- DXPF_ARGB4444 = (3 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY | DXPF_4BITERROR),
- DXPF_A8 = (4 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY),
- DXPF_RGB32 = (5),
- DXPF_RGB24 = (6),
- DXPF_RGB565 = (7 | DXPF_3BITERROR),
- DXPF_RGB555 = (8 | DXPF_3BITERROR),
- DXPF_RGB8 = (9 | DXPF_5BITERROR),
- DXPF_ARGB1555 = (10 | DXPF_TRANSPARENCY | DXPF_3BITERROR),
- DXPF_RGB32_CK = (DXPF_RGB32 | DXPF_TRANSPARENCY),
- DXPF_RGB24_CK = (DXPF_RGB24 | DXPF_TRANSPARENCY),
- DXPF_RGB555_CK = (DXPF_RGB555 | DXPF_TRANSPARENCY),
- DXPF_RGB565_CK = (DXPF_RGB565 | DXPF_TRANSPARENCY),
- DXPF_RGB8_CK = (DXPF_RGB8 | DXPF_TRANSPARENCY)
- } DXSAMPLEFORMATENUM;
-
- typedef enum DXLOCKSURF
- {
- DXLOCKF_READ = 0,
- DXLOCKF_READWRITE = (1 << 0),
- DXLOCKF_EXISTINGINFOONLY = (1 << 1), // If used in conjunction with WANTRUNINFO will prevent creation of a runmap if one does not exist
- DXLOCKF_WANTRUNINFO = (1 << 2),
- //
- // The flags in the high word should be specific to the type of pointer that
- // is requested. These flags define ARGB flags. These flags are advisory and
- // are not required to be set for ARGB locks.
- //
- DXLOCKF_NONPREMULT = (1 << 16), // Caller will request non-premultiplied data
- DXLOCKF_VALIDFLAGS = (DXLOCKF_READWRITE | DXLOCKF_EXISTINGINFOONLY | DXLOCKF_WANTRUNINFO | DXLOCKF_NONPREMULT)
- } DXLOCKSURF;
-
- typedef enum DXSURFSTATUS
- {
- DXSURF_TRANSIENT = (1 << 0), // Data in this surface changes often.
- DXSURF_READONLY = (1 << 1), // Surface is read-only
- DXSURF_VALIDFLAGS = (DXSURF_TRANSIENT | DXSURF_READONLY)
- } DXSURFSTATUS;
-
- [
- object,
- uuid(B39FD73F-E139-11d1-9065-00C04FD9189D),
- helpstring("IDXSurface Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXSurface : IDXBaseObject
- {
- HRESULT GetPixelFormat([out] GUID * pFormatID, [out] DXSAMPLEFORMATENUM *pSampleFormatEnum);
- HRESULT GetBounds( [out]DXBNDS *pBounds );
- HRESULT GetStatusFlags([out] DWORD * pdwStatusFlags);
- HRESULT SetStatusFlags([in] DWORD dwStatusFlags);
- HRESULT LockSurface( [in]const DXBNDS *pBounds, [in]ULONG ulTimeOut, [in]DWORD dwFlags,
- [in]REFIID riid, [out, iid_is(riid)] void **ppPointer,
- [out]ULONG* pulGenerationId );
- HRESULT GetDirectDrawSurface( [in] REFIID riid,
- [out, iid_is(riid)] void ** ppSurface);
- HRESULT GetColorKey(DXSAMPLE * pColorKey); // Can return E_NOTIMPL
- HRESULT SetColorKey(DXSAMPLE ColorKey); // Set color of 0 to get rid of color key, can return E_NOTIMPL
- HRESULT LockSurfaceDC( [in] const DXBNDS *pBounds, [in]ULONG ulTimeOut, [in] DWORD dwFlags,
- [out] IDXDCLock **ppDCLock);
- HRESULT SetAppData(DWORD_PTR dwAppData);
- HRESULT GetAppData(DWORD_PTR *pdwAppData);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXSurfaceInit
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(9EA3B639-C37D-11d1-905E-00C04FD9189D),
- helpstring("IDXSurfaceInit Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXSurfaceInit : IUnknown
- {
- HRESULT InitSurface([in] IUnknown *pDirectDraw,
- [in] const DDSURFACEDESC *pDDSurfaceDesc,
- [in] const GUID * pFormatID,
- [in] const DXBNDS *pBounds,
- [in] DWORD dwFlags);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXARGBSurfaceInit
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(9EA3B63A-C37D-11d1-905E-00C04FD9189D),
- helpstring("IDXARGBSurfaceInit Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXARGBSurfaceInit : IDXSurfaceInit
- {
- HRESULT InitFromDDSurface( [in] IUnknown *pDDrawSurface,
- [in] const GUID * pFormatID,
- [in] DWORD dwFlags);
- HRESULT InitFromRawSurface([in] IDXRawSurface *pRawSurface);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXARGBReadPtr
-//
-//------------------------------------------------------------------------------
-
- typedef struct tagDXNATIVETYPEINFO
- {
- BYTE * pCurrentData;
- BYTE * pFirstByte;
- long lPitch;
- DWORD dwColorKey;
- } DXNATIVETYPEINFO;
-
- typedef struct tagDXPACKEDRECTDESC
- {
- DXBASESAMPLE *pSamples;
- BOOL bPremult;
- RECT rect;
- long lRowPadding;
- } DXPACKEDRECTDESC;
-
- typedef struct tagDXOVERSAMPLEDESC
- {
- POINT p;
- DXPMSAMPLE Color;
- } DXOVERSAMPLEDESC;
-
- [
- object,
- uuid(EAAAC2D6-C290-11d1-905D-00C04FD9189D),
- helpstring("IDXARGBReadPtr Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXARGBReadPtr : IUnknown
- {
- HRESULT GetSurface( [in]REFIID riid, [out, iid_is( riid )]void ** ppSurface);
- DXSAMPLEFORMATENUM GetNativeType( [out]DXNATIVETYPEINFO *pInfo );
- void Move( [in]long cSamples );
- void MoveToRow( [in]ULONG y );
- void MoveToXY( [in]ULONG x, [in]ULONG y);
- ULONG MoveAndGetRunInfo( [in]ULONG Row, [out] const DXRUNINFO** ppInfo ); // Returns count of runs
- DXSAMPLE * Unpack( [in]DXSAMPLE* pSamples, [in]ULONG cSamples, [in]BOOL bMove );
- DXPMSAMPLE * UnpackPremult( [in]DXPMSAMPLE* pSamples, [in]ULONG cSamples, [in]BOOL bMove );
- void UnpackRect([in] const DXPACKEDRECTDESC * pRectDesc);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXARGBReadWritePtr
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(EAAAC2D7-C290-11d1-905D-00C04FD9189D),
- helpstring("IDXARGBReadWritePtr Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXARGBReadWritePtr : IDXARGBReadPtr
- {
- void PackAndMove( [in]const DXSAMPLE *pSamples, [in]ULONG cSamples );
- void PackPremultAndMove( [in]const DXPMSAMPLE *pSamples, [in]ULONG cSamples );
- void PackRect([in]const DXPACKEDRECTDESC *pRectDesc);
- void CopyAndMoveBoth( [in]DXBASESAMPLE *pScratchBuffer, [in]IDXARGBReadPtr *pSrc,
- [in]ULONG cSamples, [in]BOOL bIsOpaque );
- void CopyRect( [in] DXBASESAMPLE *pScratchBuffer,
- [in] const RECT *pDestRect, [in]IDXARGBReadPtr *pSrc,
- [in] const POINT *pSrcOrigin, [in]BOOL bIsOpaque);
- void FillAndMove( [in]DXBASESAMPLE *pScratchBuffer, [in]DXPMSAMPLE SampVal,
- [in]ULONG cSamples, [in]BOOL bDoOver );
- void FillRect( [in]const RECT *pRect, [in]DXPMSAMPLE SampVal, [in]BOOL bDoOver );
- void OverSample( [in]const DXOVERSAMPLEDESC * pOverDesc);
- void OverArrayAndMove([in]DXBASESAMPLE *pScratchBuffer,
- [in] const DXPMSAMPLE *pSrc,
- [in] ULONG cSamples);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXDCLock
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(0F619456-CF39-11d1-905E-00C04FD9189D),
- helpstring("IDXDCLock Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXDCLock : IUnknown
- {
- HDC GetDC(void);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXTScaleOutput
-//
-// Overview:
-// Generic interface that any transform can support which allows caller to
-// specify the desired output bounds.
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(B2024B50-EE77-11d1-9066-00C04FD9189D),
- helpstring("IDXTScaleOutput Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXTScaleOutput : IUnknown
- {
- HRESULT SetOutputSize([in] const SIZE OutSize, [in] BOOL bMaintainAspect);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXGradient
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(B2024B51-EE77-11d1-9066-00C04FD9189D),
- helpstring("IDXGradient Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXGradient : IDXTScaleOutput
- {
- HRESULT SetGradient(DXSAMPLE StartColor, DXSAMPLE EndColor, BOOL bHorizontal);
- HRESULT GetOutputSize([out] SIZE *pOutSize);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXTScale
-//
-// Overview:
-// This is the control interface for the simple scale transform.
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(B39FD742-E139-11d1-9065-00C04FD9189D),
- helpstring("IDXTScale Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXTScale : IUnknown
- {
- HRESULT SetScales( [in]float Scales[2] );
- HRESULT GetScales( [out]float Scales[2] );
- HRESULT ScaleFitToSize( [in,out]DXBNDS* pClipBounds,
- [in]SIZE FitToSize, [in]BOOL bMaintainAspect );
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXEffect
-//
-// Overview:
-// This interface is used to generically control transforms that are
-// transition effects.
-//
-//------------------------------------------------------------------------------
-
- typedef enum DISPIDDXEFFECT
- {
- DISPID_DXECAPABILITIES = 10000, // Start at 10000 to avoid conflicts with inhereted interfaces
- DISPID_DXEPROGRESS,
- DISPID_DXESTEP,
- DISPID_DXEDURATION,
- DISPID_DXE_NEXT_ID
- } DISPIDDXBOUNDEDEFFECT;
-
- typedef enum DXEFFECTTYPE
- {
- DXTET_PERIODIC = (1 << 0), // Result at 1 is same as result at 0
- DXTET_MORPH = (1 << 1) // Transition between 2 inputs (input 0 to input 1)
- } DXEFFECTTYPE;
-
- [
- object,
- uuid(E31FB81B-1335-11d1-8189-0000F87557DB),
- helpstring("IDXEffect Interface"),
- pointer_default(unique),
- dual
- ]
- interface IDXEffect : IDispatch
- {
- [propget, id(DISPID_DXECAPABILITIES)]
- HRESULT Capabilities([out, retval] long *pVal);
- [propget, id(DISPID_DXEPROGRESS)]
- HRESULT Progress([out, retval] float *pVal);
- [propput, id(DISPID_DXEPROGRESS)]
- HRESULT Progress([in] float newVal);
- [propget, id(DISPID_DXESTEP)]
- HRESULT StepResolution([out, retval] float *pVal);
- [propget, id(DISPID_DXEDURATION)]
- HRESULT Duration([out, retval] float *pVal);
- [propput, id(DISPID_DXEDURATION)]
- HRESULT Duration([in] float newVal);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXLookupTable
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(01BAFC7F-9E63-11d1-9053-00C04FD9189D),
- helpstring("IDXLookupTable Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXLookupTable : IDXBaseObject
- {
- HRESULT GetTables( [out]BYTE RedLUT[256],
- [out]BYTE GreenLUT[256],
- [out]BYTE BlueLUT[256],
- [out]BYTE AlphaLUT[256] );
-
- HRESULT IsChannelIdentity([out] DXBASESAMPLE * pSampleBools);
- HRESULT GetIndexValues([in] ULONG Index, [out] DXBASESAMPLE *pSample);
- HRESULT ApplyTables([in, out] DXSAMPLE *pSamples, [in] ULONG cSamples);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IDXRawSurface
-//
-// Overview:
-// User created objects support IDXRawSurface
-//
-//------------------------------------------------------------------------------
-
- typedef struct DXRAWSURFACEINFO
- {
- BYTE * pFirstByte;
- long lPitch;
- ULONG Width;
- ULONG Height;
- const GUID * pPixelFormat;
- HDC hdc;
- DWORD dwColorKey; // Note: High byte must == 0xFF for color keyed surface. Low 3 bytes are native data type.
- DXBASESAMPLE * pPalette;
- } DXRAWSURFACEINFO;
-
- [
- object,
- uuid(09756C8A-D96A-11d1-9062-00C04FD9189D),
- helpstring("IDXRawSurface Interface"),
- pointer_default(unique),
- local
- ]
- interface IDXRawSurface : IUnknown
- {
- HRESULT GetSurfaceInfo(DXRAWSURFACEINFO * pSurfaceInfo);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// IHTMLDXTransform
-//
-//------------------------------------------------------------------------------
-
- [
- object,
- uuid(30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5),
- helpstring("IHTMLDXTransform Interface"),
- pointer_default(unique),
- local
- ]
- interface IHTMLDXTransform : IUnknown
- {
- HRESULT SetHostUrl(BSTR bstrHostUrl);
- };
-
-
-//+-----------------------------------------------------------------------------
-//
-// ICSSFilterDispatch
-//
-//------------------------------------------------------------------------------
-
- typedef enum DXTFILTER_STATUS
- {
- DXTFILTER_STATUS_Stopped = 0,
- DXTFILTER_STATUS_Applied,
- DXTFILTER_STATUS_Playing,
- DXTFILTER_STATUS_MAX
- } DXTFILTER_STATUS;
-
- typedef enum DXTFILTER_DISPID
- {
- DISPID_DXTFilter_Percent = 1,
- DISPID_DXTFilter_Duration,
- DISPID_DXTFilter_Enabled,
- DISPID_DXTFilter_Status,
- DISPID_DXTFilter_Apply,
- DISPID_DXTFilter_Play,
- DISPID_DXTFilter_Stop,
- DISPID_DXTFilter_MAX
- } DXTFILTER_DISPID;
-
- [
- object,
- uuid(9519152B-9484-4A6C-B6A7-4F25E92D6C6B),
- helpstring("ICSSFilterDispatch Interface"),
- pointer_default(unique),
- dual
- ]
- interface ICSSFilterDispatch : IDispatch
- {
- [propget, id(DISPID_DXTFilter_Percent)] HRESULT Percent( [out, retval] float *pVal);
- [propput, id(DISPID_DXTFilter_Percent)] HRESULT Percent( [in] float newVal);
- [propget, id(DISPID_DXTFilter_Duration)] HRESULT Duration([out, retval] float *pVal);
- [propput, id(DISPID_DXTFilter_Duration)] HRESULT Duration([in] float newVal);
- [propget, id(DISPID_DXTFilter_Enabled)] HRESULT Enabled( [out, retval] VARIANT_BOOL *pfVal);
- [propput, id(DISPID_DXTFilter_Enabled)] HRESULT Enabled( [in] VARIANT_BOOL fVal);
- [propget, id(DISPID_DXTFilter_Status)] HRESULT Status( [out, retval] DXTFILTER_STATUS * peVal);
- [id(DISPID_DXTFilter_Apply)] HRESULT Apply();
- [id(DISPID_DXTFilter_Play)] HRESULT Play([in, optional] VARIANT varDuration);
- [id(DISPID_DXTFilter_Stop)] HRESULT Stop();
- };
-
-
-//=== CoClass definitions =================================================
-
-[
- uuid(54314D1D-35FE-11d1-81A1-0000F87557DB),
- version(1.1),
- helpstring("Microsoft DirectX Transforms Core Type Library")
-]
-library DXTRANSLib
-{
- importlib("stdole2.tlb");
-
- ///////////////////////////////
- // DXTransformFactory CoClass
- ///////////////////////////////
- [
- uuid(D1FE6762-FC48-11D0-883A-3C8B00C10000),
- helpstring("DXTransformFactory Class")
- ]
- coclass DXTransformFactory
- {
- [default] interface IDXTransformFactory;
- interface IDXSurfaceFactory;
- };
-
-
- ///////////////////////////////
- // DXTaskManager CoClass
- ///////////////////////////////
- [
- uuid(4CB26C03-FF93-11d0-817E-0000F87557DB),
- helpstring("DXTaskManager Class")
- ]
- coclass DXTaskManager
- {
- [default] interface IDXTaskManager;
- };
-
-
- ///////////////////////////////
- // DXTScale CoClass
- ///////////////////////////////
- [
- uuid(555278E2-05DB-11D1-883A-3C8B00C10000),
- helpstring("DXTScale Class")
- ]
- coclass DXTScale
- {
- [default] interface IDXTScale;
- };
-
-
- ///////////////////////////////
- // DXSurface CoClass
- ///////////////////////////////
- [
- uuid(0E890F83-5F79-11D1-9043-00C04FD9189D),
- helpstring("DXSurface Class")
- ]
- coclass DXSurface
- {
- [default] interface IDXSurface;
- };
-
-
- ///////////////////////////////
- // DXSurfaceModifier CoClass
- ///////////////////////////////
- [
- uuid(3E669F1D-9C23-11d1-9053-00C04FD9189D),
- helpstring("DXSurfaceModifier Class")
- ]
- coclass DXSurfaceModifier
- {
- [default] interface IDXSurfaceModifier;
- };
-
-
- ///////////////////////////////
- // DXGradient CoClass
- ///////////////////////////////
- [
- uuid(C6365470-F667-11d1-9067-00C04FD9189D),
- helpstring("DXGradient Class")
- ]
- coclass DXGradient
- {
- [default] interface IDXGradient;
- };
-
-
- ///////////////////////////////
- // DXTFilter CoClass
- ///////////////////////////////
- [
- uuid(385A91BC-1E8A-4e4a-A7A6-F4FC1E6CA1BD),
- helpstring("DXTFilter Class")
- ]
- coclass DXTFilter
- {
- [default] interface ICSSFilterDispatch;
- };
-};
diff --git a/dxsdk/Include/DShowIDL/dyngraph.idl b/dxsdk/Include/DShowIDL/dyngraph.idl
deleted file mode 100644
index 569def6e..00000000
--- a/dxsdk/Include/DShowIDL/dyngraph.idl
+++ /dev/null
@@ -1,318 +0,0 @@
-//------------------------------------------------------------------------------
-// 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 );
-}
-
-
-
-
diff --git a/dxsdk/Include/DShowIDL/mediaobj.idl b/dxsdk/Include/DShowIDL/mediaobj.idl
deleted file mode 100644
index 6852ced9..00000000
--- a/dxsdk/Include/DShowIDL/mediaobj.idl
+++ /dev/null
@@ -1,411 +0,0 @@
-//------------------------------------------------------------------------------
-// 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
- );
-}
-
diff --git a/dxsdk/Include/DShowIDL/medparam.idl b/dxsdk/Include/DShowIDL/medparam.idl
deleted file mode 100644
index b45eab97..00000000
--- a/dxsdk/Include/DShowIDL/medparam.idl
+++ /dev/null
@@ -1,228 +0,0 @@
-//------------------------------------------------------------------------------
-// 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
- );
-}
-
-
-
diff --git a/dxsdk/Include/DShowIDL/mixerocx.idl b/dxsdk/Include/DShowIDL/mixerocx.idl
deleted file mode 100644
index 5e45b459..00000000
--- a/dxsdk/Include/DShowIDL/mixerocx.idl
+++ /dev/null
@@ -1,72 +0,0 @@
-// 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();
-};
diff --git a/dxsdk/Include/DShowIDL/mmstream.idl b/dxsdk/Include/DShowIDL/mmstream.idl
deleted file mode 100644
index b94f1ed1..00000000
--- a/dxsdk/Include/DShowIDL/mmstream.idl
+++ /dev/null
@@ -1,190 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);
-};
-
-
-
-
diff --git a/dxsdk/Include/DShowIDL/mstve.idl b/dxsdk/Include/DShowIDL/mstve.idl
deleted file mode 100644
index 07383041..00000000
--- a/dxsdk/Include/DShowIDL/mstve.idl
+++ /dev/null
@@ -1,1450 +0,0 @@
-// Copyright (c) 1999,2000,2001 Microsoft Corporation. All Rights Reserved.
-// MSTvE.idl : IDL source for MSTvE.dll
-//
-// This file will be processed by the MIDL tool to
-// produce the type library (TveContr.tlb) and marshalling code.
-//
-// Need to put MIDL attributes of:
-// 'noncreatable' on
-// 'hidden' on
-// 'nonbrowsable' on
-//
-// -- _Helper interfaces need to be in the library section or else
-// can't seen them in the client
-//
-// -- None of the _Helper interfaces are marked dual. Hence they
-// won't work up on the client... (???)
-//
-// ---------------------------------------------------
-// CAUTION - if Change methods below, need to regen the proxy-stub file
-// nmake -f MSTvEps.mk
-// regsvr32 /s MSTvEps.dll
-//
-//
-// Also - if change any of the IID's, need to rebuild ..\uuid\[]\strmiids.lib
-
-cpp_quote("//+-------------------------------------------------------------------------")
-cpp_quote("//")
-cpp_quote("// Microsoft Windows")
-cpp_quote("// Copyright (C) Microsoft Corporation, 1999, 2000.")
-cpp_quote("//")
-cpp_quote("//--------------------------------------------------------------------------")
-cpp_quote("#pragma once")
-
-import "oaidl.idl";
-import "ocidl.idl";
-
- // forward declarations
-interface ITVETrigger;
-interface ITVETrack;
-interface ITVEVariation;
-interface ITVEEnhancement;
-interface ITVEService;
-interface ITVEActiveService;
-interface ITVESupervisor;
-interface ITVEAttrMap;
-interface ITVEAttrTimeQ;
-
-interface ITVETracks;
-interface ITVEVariations;
-interface ITVEEnhancements;
-interface ITVEServices;
-
-interface ITVEFile;
-
-interface ITVESupervisor_Helper;
-
-// Listener..
-interface ITVEMCast;
-interface ITVEMCasts;
-interface ITVEMCastManager;
-interface ITVEMCastCallback;
-
-// interfaces to configure the filter and get events from,
-interface ITVEFilter ;
-interface ITVEFilter_Helper;
-
-// glue stuff
-interface ITVENavAid;
-interface ITVENavAid_Helper;
-interface ITVENavAid_NoVidCtl;
-interface ITVETriggerCtrl;
-interface ITVETriggerCtrl_Helper;
-
-interface ITVEFeature;
-interface ITVESupervisorGITProxy;
-// ----------------------------------------------------------------------------------
-
-#define COLLECTID_Item DISPID_VALUE // (0)
-#define COLLECTID_Count 1 // standard set of collection interfaces
-#define COLLECTID_Add 2
-#define COLLECTID_Remove 3
-#define COLLECTID_RemoveAll 4 // extra for maps
-#define COLLECTID_Key 5
-#define COLLECTID_Replace 6
-#define COLLECTID_Insert 7
-#define COLLECTID_Update 8
-
-typedef enum NENH_Mode
-{
- NENH_New,
- NENH_Duplicate,
- NENH_Updated,
- NENH_Starting,
- NENH_Expired
-} NENH_Mode;
-
-typedef enum NPKG_Mode
-{
- NPKG_Starting, // brand new packet (never seen this UUID before)
- NPKG_Received, // correctly received and decoded a package
- NPKG_Duplicate, // duplicate send of a one already successfully received (packet 0 only)
- NPKG_Resend, // resend of one that wasn't received correctly before (packet 0 only)
- NPKG_Expired
-} NPKG_Mode;
-
-typedef enum NTRK_Mode
-{
- NTRK_New,
- NTRK_Duplicate, // exact duplicate of existing one
- NTRK_Updated, // updated version of existing one
- NTRK_Starting, // (not used???)
- NTRK_Expired
-} NTRK_Mode;
-
-typedef enum NFLE_Mode
-{
- NFLE_Received, // correctly received and decoded a package
- NFLE_Expired
-} NFLE_Mode;
-
-typedef enum NTUN_Mode
-{
- NTUN_New, // new station (service) never seen before
- NTUN_Retune, // tuning back to an existing station
- NTUN_Reactivate, // retuning to the current station
- NTUN_Turnoff, // turning atvef off
- NTUN_Fail // failed to tune for some reason
-} NTUN_Mode;
-
-
-typedef enum NWHAT_Mode // used in NotifyAuxInfo
-{
- NWHAT_Announcement,
- NWHAT_Trigger,
- NWHAT_Data,
- NWHAT_Other,
- NWHAT_Extra
-} NWHAT_Mode;
-
-
-
-
- // ---------------------------------------------------------------------
-
- [
- object,
- uuid(05500101-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVETrigger Interface"),
- pointer_default(unique)
- ]
- interface ITVETrigger : IDispatch
- {
- [propget, id(1), helpstring("property Parent")] HRESULT Parent([out, retval] IUnknown* *pVal);
- [propget, id(2), helpstring("property Service")] HRESULT Service([out, retval] ITVEService* *pVal);
- [propget, id(3), helpstring("property IsValid")] HRESULT IsValid([out, retval] VARIANT_BOOL *pVal);
- [propget, id(4), helpstring("property URL")] HRESULT URL([out, retval] BSTR *pVal);
- [propget, id(5), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
- [propget, id(6), helpstring("property Expires")] HRESULT Expires([out, retval] DATE *pVal);
- [propget, id(7), helpstring("property Executes")] HRESULT Executes([out, retval] DATE *pVal);
- [propget, id(8), helpstring("property Script")] HRESULT Script([out, retval] BSTR *pVal);
- [propget, id(9), helpstring("property TVELevel")] HRESULT TVELevel([out, retval] float *pVal);
- [propget, id(10), helpstring("property Rest")] HRESULT Rest([out, retval] BSTR *pVal);
- [ id(11), helpstring("method ParseTrigger")] HRESULT ParseTrigger([in] const BSTR rVal);
- };
-
- [
- object,
- uuid(05500201-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- hidden,
- helpstring("ITVETrigger_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVETrigger_Helper : IUnknown
- {
- [ id(1), helpstring("method ConnectParent")] HRESULT ConnectParent([in] ITVETrack *pTrack);
- [propget, id(2), helpstring("property CRC")] HRESULT CRC([in] const BSTR rVal, [out, retval] BSTR *pbstrCRC);
- [ id(3), helpstring("method UpdateFrom")] HRESULT UpdateFrom([in] ITVETrigger *pTrigger, [out] long *plgrfTRKChanged);
- [ id(4), helpstring("method RemoveYourself")] HRESULT RemoveYourself();
- [ id(5), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pbstrBuff);
- };
-
-
-// ---------------------------------------------------
-
- [
- object,
- uuid(05500102-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVETrack Interface"),
- pointer_default(unique)
- ]
- interface ITVETrack : IDispatch
- {
- [propget, id(1), helpstring("property Parent")] HRESULT Parent([out, retval] IUnknown* *pVal);
- [propget, id(2), helpstring("property Service")] HRESULT Service([out, retval] ITVEService* *pVal);
- [propget, id(3), helpstring("property Trigger")] HRESULT Trigger([out, retval] ITVETrigger* *pVal);
- [propget, id(4), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
- [propput, id(4), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
- [ id(5), helpstring("method AttachTrigger")] HRESULT AttachTrigger([in] ITVETrigger *pTrigger);
- [ id(6), helpstring("method ReleaseTrigger")] HRESULT ReleaseTrigger();
- [ id(7), helpstring("method CreateTrigger")] HRESULT CreateTrigger([in] const BSTR bstrDescription);
- };
-
- [
- object,
- uuid(05500202-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- hidden,
- helpstring("ITVETrack_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVETrack_Helper : IUnknown
- {
- [id(1), helpstring("method ConnectParent")] HRESULT ConnectParent(ITVEVariation *pVariation);
- [id(2), helpstring("method RemoveYourself")] HRESULT RemoveYourself();
- [id(3), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pbstrBuff);
- };
-
- [
- object,
- uuid(05500112-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVETracks Interface"),
- pointer_default(unique)
- ]
-
- interface ITVETracks : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] ITVETrack * *pVal);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] ITVETrack *pTrack);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- [ id(COLLECTID_Insert), helpstring("method Insert")] HRESULT Insert([in] int iLoc, [in] ITVETrack *pTrack);
- };
-
-// ---------------------------------------------------
-
- [
- object,
- uuid(05500103-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEVariation Interface"),
- pointer_default(unique)
- ]
- interface ITVEVariation : IDispatch
- {
- [propget, id(1), helpstring("property Parent")] HRESULT Parent([out, retval] IUnknown* *pVal);
- [propget, id(2), helpstring("property Service")] HRESULT Service([out, retval] ITVEService* *pVal);
- [propget, id(3), helpstring("property Tracks")] HRESULT Tracks([out, retval] ITVETracks* *pVal);
- [propget, id(4), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
- [propput, id(4), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
-
- [propget, id(5), helpstring("property IsValid")] HRESULT IsValid([out, retval] VARIANT_BOOL *pVal);
- [propget, id(6), helpstring("property MediaName")] HRESULT MediaName([out, retval] BSTR *newVal);
- [propget, id(7), helpstring("property MediaTitle")] HRESULT MediaTitle([out, retval] BSTR *newVal);
- [propget, id(8), helpstring("property FileIPAdapter")] HRESULT FileIPAdapter([out, retval] BSTR *newVal);
- [propget, id(9), helpstring("property FileIPAddress")] HRESULT FileIPAddress([out, retval] BSTR *newVal);
- [propget, id(10), helpstring("property FilePort")] HRESULT FilePort([out, retval] LONG *lPort);
- [propget, id(11), helpstring("property TriggerIPAdapter")] HRESULT TriggerIPAdapter([out, retval] BSTR *newVal);
- [propget, id(12), helpstring("property TriggerIPAddress")] HRESULT TriggerIPAddress([out, retval] BSTR *newVal);
- [propget, id(13), helpstring("property TriggerPort")] HRESULT TriggerPort([out, retval] LONG *lPort);
- [propget, id(14),helpstring("property Languages")] HRESULT Languages([out, retval] ITVEAttrMap* *ppVal);
- [propget, id(15),helpstring("property SDPLanguages")] HRESULT SDPLanguages([out, retval] ITVEAttrMap* *ppVal);
- [propget, id(16),helpstring("property Bandwidth")] HRESULT Bandwidth([out, retval] LONG *lVal);
- [propget, id(17),helpstring("property BandwidthInfo")] HRESULT BandwidthInfo([out, retval] BSTR *newVal);
- [propget, id(18),helpstring("property Attributes")] HRESULT Attributes([out, retval] ITVEAttrMap* *ppVal);
-
- [propget, id(19),helpstring("property Rest")] HRESULT Rest([out, retval] ITVEAttrMap* *ppVal);
- [ id(20),helpstring("method Initialize")] HRESULT Initialize([in] BSTR newVal);
- };
-
- [
- object,
- uuid(05500203-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- hidden,
- helpstring("ITVEVariation_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVEVariation_Helper : IUnknown
- {
- [ id(1), helpstring("method ConnectParent")] HRESULT ConnectParent([in] ITVEEnhancement *pEnhancement);
- [ id(2), helpstring("method DefaultTo")] HRESULT DefaultTo([in] ITVEVariation *pVariationBase);
- [ id(3), helpstring("method SetTriggerIPAdapter")] HRESULT SetTriggerIPAdapter([in] BSTR bstrBuff);
- [ id(4), helpstring("method SetFileIPAdapter")] HRESULT SetFileIPAdapter([in] BSTR bstrBuff);
- [ id(5), helpstring("method SubParseSDP")] HRESULT SubParseSDP(const BSTR *pbstrSDP, BOOL *pfMissingMedia);
- [ id(6), helpstring("method ParseCBTrigger")] HRESULT ParseCBTrigger(BSTR bstrTrig);
- [ id(7), helpstring("method FinalParseSDP")] HRESULT FinalParseSDP();
- [ id(8), helpstring("method UpdateVariation")] HRESULT UpdateVariation(ITVEVariation *pVarNew, long *plNVAR_grfChanged);
- [ id(9), helpstring("method InitAsXOver")] HRESULT InitAsXOver();
- [ id(11), helpstring("method NewXOverLink")] HRESULT NewXOverLink([in] BSTR bstrLine21Trigger);
- [ id(12), helpstring("method RemoveYourself")] HRESULT RemoveYourself();
- [propput, id(13), helpstring("property MediaTitle")] HRESULT MediaTitle([in] BSTR bstrBuff);
- [propput, id(14), helpstring("property IsValid")] HRESULT IsValid([in] VARIANT_BOOL fValid);
- [ id(15), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *bstrBuff);
- };
-
- [
- object,
- uuid(05500113-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEVariations Interface"),
- pointer_default(unique)
- ]
- interface ITVEVariations : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] ITVEVariation * *pVal);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] ITVEVariation *pEnh);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- [ id(COLLECTID_Insert), helpstring("method Insert")] HRESULT Insert([in] int iLoc, [in] ITVEVariation *pEnh);
- };
-// ---------------------------------------------------
- [
- object,
- uuid(05500104-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEEnhancement Interface"),
- pointer_default(unique)
- ]
- interface ITVEEnhancement : IDispatch
- {
- [propget, id(1), helpstring("property Parent")] HRESULT Parent([out, retval] IUnknown* *pVal);
- [propget, id(2), helpstring("property Service")] HRESULT Service([out, retval] ITVEService* *pVal);
- [propget, id(3), helpstring("property Variations")] HRESULT Variations([out, retval] ITVEVariations* *pVal);
-
- [propget, id(4), helpstring("property IsValid")] HRESULT IsValid([out, retval] VARIANT_BOOL *pVal);
- [propget, id(5), helpstring("property ProtocolVersion")] HRESULT ProtocolVersion([out, retval] BSTR *pVal);
- [propget, id(6), helpstring("property SessionUserName")] HRESULT SessionUserName([out, retval] BSTR *pVal);
- [propget, id(7), helpstring("property SessionId")] HRESULT SessionId([out, retval] LONG *plVal);
- [propget, id(8), helpstring("property SessionVersion")] HRESULT SessionVersion([out, retval] LONG *plVal);
- [propget, id(9), helpstring("property SessionIPAddress")] HRESULT SessionIPAddress([out, retval] BSTR *pVal);
- [propget, id(10), helpstring("property SessionName")] HRESULT SessionName([out, retval] BSTR *pVal);
- [propget, id(11), helpstring("property EmailAddresses")] HRESULT EmailAddresses([out, retval] ITVEAttrMap* *pVal);
- [propget, id(12), helpstring("property PhoneNumbers")] HRESULT PhoneNumbers([out, retval] ITVEAttrMap* *pVal);
-
- [propget, id(13), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
- [propput, id(13), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
- [propget, id(14), helpstring("property DescriptionURI")] HRESULT DescriptionURI([out, retval] BSTR *pVal);
-
- [propget, id(15), helpstring("property UUID")] HRESULT UUID([out, retval] BSTR *pVal);
- [propget, id(16), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pVal);
- [propget, id(17), helpstring("property StopTime")] HRESULT StopTime([out, retval] DATE *pVal);
- [propget, id(18), helpstring("property IsPrimary")] HRESULT IsPrimary([out, retval] VARIANT_BOOL *pVal);
-
- [propget, id(19), helpstring("property Type")] HRESULT Type([out, retval] BSTR *pVal);
- [propget, id(20), helpstring("property TveType")] HRESULT TveType([out, retval] BSTR *pVal);
- [propget, id(21), helpstring("property TveSize")] HRESULT TveSize([out, retval] LONG *plVal);
- [propget, id(23), helpstring("property TveLevel")] HRESULT TveLevel([out, retval] double *pVal);
-
- [propget, id(24), helpstring("property Attributes")] HRESULT Attributes([out, retval] ITVEAttrMap* *pVal);
- [propget, id(25), helpstring("property Rest")] HRESULT Rest([out, retval] ITVEAttrMap* *pVal);
-
- [propget, id(26), helpstring("property SAPHeaderBits")] HRESULT SAPHeaderBits([out, retval] short *pVal);
- [propget, id(27), helpstring("property SAPAuthLength")] HRESULT SAPAuthLength([out, retval] short *pVal);
- [propget, id(28), helpstring("property SAPMsgIDHash")] HRESULT SAPMsgIDHash([out, retval] LONG *pVal);
- [propget, id(29), helpstring("property SAPSendingIP")] HRESULT SAPSendingIP([out, retval] BSTR *pVal);
- [propget, id(30), helpstring("property SAPAuthData")] HRESULT SAPAuthData([out, retval] BSTR *pVal);
-
- [ id(31), helpstring("method ParseAnnouncement")] HRESULT ParseAnnouncement([in] BSTR bstrAdapter, [in] const BSTR *pbstVal, [out] long *plgrfParseError, [out] long *plLineError);
- };
-
-
- [
- object,
- uuid(05500204-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- hidden,
- helpstring("ITVEEnhancement_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVEEnhancement_Helper : IUnknown
- {
- [id(0), helpstring("method ConnectParent")] HRESULT ConnectParent(ITVEService *pService);
- [id(1), helpstring("method Activate")] HRESULT Activate();
- [id(2), helpstring("method Deactivate")] HRESULT Deactivate();
- [id(3), helpstring("method UpdateEnhancement")] HRESULT UpdateEnhancement([in] ITVEEnhancement *pEnhNew,[out] long *plNENH_grfChanged);
- [id(4), helpstring("method InitAsXOver")] HRESULT InitAsXOver();
- [id(5), helpstring("method NewXOverLink")] HRESULT NewXOverLink([in] BSTR bstrLine21Trigger);
- [id(6), helpstring("method RemoveYourself")] HRESULT RemoveYourself();
- [id(7), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pbstrBuff);
- };
-
-
- [
- object,
- uuid(05500114-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEEnhancements Interface"),
- pointer_default(unique)
- ]
-
- interface ITVEEnhancements : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] ITVEEnhancement * *pVal);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] ITVEEnhancement *pEnh);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- [ id(COLLECTID_Insert), helpstring("method Insert")] HRESULT Insert([in] int iLoc, [in] ITVEEnhancement *pEnh);
- };
-// ---------------------------------------------------
-
- [
- object,
- uuid(05500105-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEService Interface"),
- pointer_default(unique)
- ]
- interface ITVEService : IDispatch
- {
- [propget, id(1), helpstring("property Parent")] HRESULT Parent([out, retval] IUnknown* *pVal);
- [propget, id(2), helpstring("property Enhancements")] HRESULT Enhancements([out, retval] ITVEEnhancements* *pVal);
- [propget, id(3), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
- [propput, id(3), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
- [ id(4), helpstring("method Activate")] HRESULT Activate(); // used in tuning, turns on announcement
- [ id(5), helpstring("method Deactivate")] HRESULT Deactivate(); // used in tuning, turns off announcement
- [propget, id(6), helpstring("property XOverLinks")] HRESULT XOverLinks([out, retval] ITVETracks* *pVal); // returns ITVETracks (Collection)
- [propget, id(7),helpstring("property XOverEnhancement")] HRESULT XOverEnhancement([out, retval] ITVEEnhancement* *pVal); // special for tree view...
- [ id(8), helpstring("method NewXOverLink")] HRESULT NewXOverLink([in] BSTR bstrLine21Trigger);
- // Set date offset used added to dates before expiring.
- // Used when doing playback recorded shows, offseting expire dates by this amount
- [propget, id(9), helpstring("property ExpireOffset")] HRESULT ExpireOffset([out, retval] DATE *pVal);
- [propput, id(9), helpstring("property ExpireOffset")] HRESULT ExpireOffset([in] DATE newVal);
- // return the ITVEAttrTimeQ list giving dates of IUnknowns in this service are due to expire
- [propget, id(10), helpstring("property ExpireQueue")] HRESULT ExpireQueue([out, retval] ITVEAttrTimeQ* *pVal);
- // Expires any items earlier than the specified date + ExpireOffset
- // If ezactly zero, Date defaults to <NOW>.
- [ id(11),helpstring("method ExpireForDate")] HRESULT ExpireForDate([in] DATE dateExpireTime);
- // Mark Service active, only one Active service currently allowed .. turns off all others.
- [propget, id(12), helpstring("IsActive")] HRESULT IsActive([out, retval] VARIANT_BOOL *fIsActive);
- // save and restore an arbitrary property on this service... (Useful with ITVENavAid::CacheState())
- [propput, id(13), helpstring("Property")] HRESULT Property([in] BSTR bstrPropName, BSTR bstrPropVal);
- [propget, id(13), helpstring("Property")] HRESULT Property([in] BSTR bstrPropName, [out, retval] BSTR *pbstrPropVal);
- };
-
- [
- object,
- uuid(05500205-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- hidden,
- helpstring("ITVEService_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVEService_Helper : IUnknown
- {
- [ id(1), helpstring("method ConnectParent")] HRESULT ConnectParent([in] ITVESupervisor *pSupervisor);
- [ id(2), helpstring("method ParseCBAnnouncement")] HRESULT ParseCBAnnouncement([in] BSTR bstrFileTrigAdapter,[in] BSTR *pbstrBuff);
- [ id(3), helpstring("method SetAnncIPValues")] HRESULT SetAnncIPValues([in] BSTR bstrAnncIPAdapter,[in] BSTR bstrAnncIPAddress,[in] LONG lAnncPort);
- [ id(4), helpstring("method GetAnncIPValues")] HRESULT GetAnncIPValues([in] BSTR *pbstrAnncIPAdapter,[in] BSTR *pbstrAnncIPAddress,[in] LONG *plAnncPort);
- [ id(5), helpstring("method InitXOverEnhancement")] HRESULT InitXOverEnhancement();
- [ id(6), helpstring("method AddToExpireQueue")] HRESULT AddToExpireQueue([in] DATE dateExpires, [in] IUnknown *punkItem);
- [ id(7), helpstring("method ChangeInExpireQueue")] HRESULT ChangeInExpireQueue([in] DATE dateExpires, [in] IUnknown *punkItem);
- [ id(8), helpstring("method RemoveFromExpireQueue")] HRESULT RemoveFromExpireQueue([in] IUnknown *punkItem);
- [ id(9), helpstring("method RemoveEnhFilesFromExpireQueue")] HRESULT RemoveEnhFilesFromExpireQueue([in] ITVEEnhancement *pEnhancement);
- [propget, id(10), helpstring("method ExpireQueueChangeCount")] HRESULT ExpireQueueChangeCount([out, retval] long *pChangeCount);
- [ id(11), helpstring("method RemoveYourself")] HRESULT RemoveYourself();
- [ id(12), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pbstrBuff);
- };
-
-
- [
- object,
- uuid(05500305-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEFeature Interface (Inherits ITVEService)"),
- pointer_default(unique)
- ]
- interface ITVEFeature : ITVEService
- {
- // New methods just for the Feature
- [id(101), helpstring("method TuneTo")] HRESULT TuneTo([in] BSTR bstrStation, [in] BSTR bstrIPAdapter);
- [id(102), helpstring("method ReTune")] HRESULT ReTune([in] ITVEService *pService);
- [id(103), helpstring("method BindToSupervisor")] HRESULT BindToSupervisor([in] ITVESupervisor *pTVESupervisor);
- // these are incoming events called by Supervisor ((_ITVEvents).. Must match
- [id(2101), helpstring("method NotifyTVETune")] HRESULT NotifyTVETune([in] NTUN_Mode tuneMode, [in] ITVEService *pService, [in] BSTR bstrDescription, [in] BSTR bstrIPAdapter);
- [id(2102), helpstring("method NotifyTVEEnhancementNew")] HRESULT NotifyTVEEnhancementNew([in] ITVEEnhancement *pEnh);
- [id(2103), helpstring("method NotifyTVEEnhancementUpdated")] HRESULT NotifyTVEEnhancementUpdated([in] ITVEEnhancement *pEnh, [in] long lChangedFlags); // changedFlags : NENH_grfDiff
- [id(2104), helpstring("method NotifyTVEEnhancementStarting")] HRESULT NotifyTVEEnhancementStarting([in] ITVEEnhancement *pEnh);
- [id(2105), helpstring("method NotifyTVEEnhancementExpired")] HRESULT NotifyTVEEnhancementExpired([in] ITVEEnhancement *pEnh);
- [id(2106), helpstring("method NotifyTVETriggerNew")] HRESULT NotifyTVETriggerNew([in] ITVETrigger *pTrigger,[in] BOOL fActive);
- [id(2107), helpstring("method NotifyTVETriggerUpdated")] HRESULT NotifyTVETriggerUpdated([in] ITVETrigger *pTrigger,[in] BOOL fActive, [in] long lChangedFlags); // changedFlags : NTRK_grfDiff
- [id(2108), helpstring("method NotifyTVETriggerExpired")] HRESULT NotifyTVETriggerExpired([in] ITVETrigger *pTrigger,[in] BOOL fActive);
- [id(2109), helpstring("method NotifyTVEPackage")] HRESULT NotifyTVEPackage([in] NPKG_Mode engPkgMode, [in] ITVEVariation *pVariation, [in] BSTR bstrUUID, [in] long cBytesTotal, [in] long cBytesReceived);
- [id(2110), helpstring("method NotifyTVEFile")] HRESULT NotifyTVEFile([in] NFLE_Mode engFileMode, [in] ITVEVariation *pVariation, [in] BSTR bstrUrlName, [in] BSTR bstrFileName);
- [id(2111), helpstring("method NotifyTVEAuxInfo")] HRESULT NotifyTVEAuxInfo([in] NWHAT_Mode engAuxInfoMode, [in] BSTR bstrAuxInfoString, [in] long lChangedFlags, [in] long lErrorLine); // WhatIsIt is NWHAT_Mode - lChangedFlags is NENH_grfDiff or NTRK_grfDiff treated as error bits
-
- };
-
- [
- object,
- uuid(05500115-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEServices Interface"),
- pointer_default(unique)
- ]
- interface ITVEServices : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] ITVEService * *pVal);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] ITVEService *pService);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- [ id(COLLECTID_Insert), helpstring("method Insert")] HRESULT Insert([in] int iLoc, [in] ITVEService *pService);
- };
-
-
-// ---------------------------------------------------
-
- [
- object,
- uuid(05500106-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVESupervisor Interface"),
- pointer_default(unique)
- ]
-
- interface ITVESupervisor : IDispatch
- {
- [propget, id(1), helpstring("property Services")] HRESULT Services([out, retval] ITVEServices* *pVal);
- [propget, id(2), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
- [propput, id(2), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
- [ id(3), helpstring("method TuneTo")] HRESULT TuneTo([in] BSTR bstrDescription, [in] BSTR bstrIPAdapter);
- [ id(4), helpstring("method ReTune")] HRESULT ReTune([in] ITVEService *pService);
-
- [ id(5), helpstring("method NewXOverLink")] HRESULT NewXOverLink([in] BSTR bstrLine21Trigger);
- // Expires any items earlier than the specified date + service.ExpireOffset
- // If ezactly zero, Date defaults to <NOW>.
- [ id(6), helpstring("method ExpireForDate")] HRESULT ExpireForDate([in] DATE dateExpireTime);
-
- // need to be here rather than Helper, since called from Filter, and Supervisor_Helper
- // not in the proxy-stub DLL
- [ id(7), restricted, helpstring("method InitStats")] HRESULT InitStats();
- [ id(8), restricted, helpstring("method GetStats")] HRESULT GetStats([out] BSTR *pbstrBuff); // CTVEStats
- };
-
- [
- object,
- uuid(05500206-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- hidden,
- helpstring("ITVESupervisor_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVESupervisor_Helper : IUnknown
- {
- [id(1), helpstring("method ConnectParent")] HRESULT ConnectParent([in] IUnknown *pUnk);
- [id(2), helpstring("method GetActiveService")] HRESULT GetActiveService([out] ITVEService **ppActiveService);
- [id(3), helpstring("method GetMCastManager")] HRESULT GetMCastManager([out] ITVEMCastManager **pMCastManager);
- [id(4), helpstring("method UnpackBuffer")] HRESULT UnpackBuffer([in] IUnknown *pTVEVariation, [in] unsigned char *m_rgbData, [in] int cBytes);
-
- [id(5), helpstring("method NotifyEnhancement")] HRESULT NotifyEnhancement([in] NENH_Mode enhMode,[in] ITVEEnhancement *pEnhancement,[in] long lChangedFlags); // changedFlags NENH_grfDiff
- [id(6), helpstring("method NotifyTrigger")] HRESULT NotifyTrigger([in] NTRK_Mode trgMode,[in] ITVETrack *pTrack,[in] long lChangedFlags); // changedFlags NTRK_grfDiff
- [id(7), helpstring("method NotifyPackage")] HRESULT NotifyPackage([in] NPKG_Mode pkgMode, [in] ITVEVariation *pVariation, [in] BSTR bstrPackageUUID, [in] long cBytesTotal, [in] long cBytesReceived);
- [id(8), helpstring("method NotifyFile")] HRESULT NotifyFile([in] NFLE_Mode fileMode, [in] ITVEVariation *pVariation, [in] BSTR bstrURLName, [in] BSTR bstrFileName);
- [id(9), helpstring("method NotifyTune")] HRESULT NotifyTune([in] NTUN_Mode tuneMode, [in] ITVEService *pService, [in] BSTR bstrDescription, [in] BSTR bstrIPAdapter);
- // WhatIsIt is NWHAT_Mode - lChangedFlags is NENH_grfDiff or NTRK_grfDiff treated as error bits
- [id(10), helpstring("method NotifyAuxInfo")] HRESULT NotifyAuxInfo([in] NWHAT_Mode whatMode, [in] BSTR bstrAuxInfoString, [in] long lgrfWhatDiff, [in] long lLineError);
-
- [id(11), helpstring("method NotifyEnhancement_XProxy")] HRESULT NotifyEnhancement_XProxy([in] NENH_Mode enhMode,[in] ITVEEnhancement *pEnhancement,[in] long lChangedFlags); // changedFlags NENH_grfDiff
- [id(12), helpstring("method NotifyTrigger_XProxy")] HRESULT NotifyTrigger_XProxy([in] NTRK_Mode trgMode,[in] ITVETrack *pTrack,[in] long lChangedFlags); // changedFlags NTRK_grfDiff
- [id(13), helpstring("method NotifyPackage_XProxy")] HRESULT NotifyPackage_XProxy( NPKG_Mode pkgMode, ITVEVariation *pVariation,BSTR bstrPackageUUID, long cBytesTotal,long cBytesReceived);
- [id(14), helpstring("method NotifyFile_XProxy")] HRESULT NotifyFile_XProxy([in] NFLE_Mode fileMode, [in] ITVEVariation *pVariation, [in] BSTR bstrURLName, [in] BSTR bstrFileName);
- [id(15), helpstring("method NotifyTune_XProxy")] HRESULT NotifyTune_XProxy([in] NTUN_Mode tuneMode, [in] ITVEService *pService, [in] BSTR bstrDescription, [in] BSTR bstrIPAdapter);
- [id(16), helpstring("method NotifyAuxInfo_XProxy")] HRESULT NotifyAuxInfo_XProxy([in] NWHAT_Mode whatMode, [in] BSTR bstrAuxInfoString, [in] long lgrfWhatDiff,[in] long lLineError);
-
- [propget, id(17), helpstring("property HaltFlags")] HRESULT HaltFlags([out, retval] LONG *plGrfHaltFlags);
- [propput, id(17), helpstring("property HaltFlags")] HRESULT HaltFlags([in] LONG lGrfHaltFlags);
-
- [ id(18), helpstring("method RemoveAllListenersOnAdapter")] HRESULT RemoveAllListenersOnAdapter([in] BSTR bstrAdapter);
- [propget, id(19), helpstring("method PossibleIPAdapterAddress")] HRESULT PossibleIPAdapterAddress([in] int iAdapter, [out,retval] BSTR *pbstrIPAdapterAddr);
- [ id(20), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pbstrBuff);
-
- [propget, id(21), helpstring("property SupervisorGITProxy")] HRESULT SupervisorGITProxy([out] ITVESupervisorGITProxy **ppSupervisorGITProxy); // internal GIT refcounted pointer to supervisor
- };
-
- [
- hidden,
- object,
- uuid(05500306-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVESupervisorGITProxy Interface"),
- pointer_default(unique)
- ]
-
- interface ITVESupervisorGITProxy: IUnknown
- {
- [propget, id(1), helpstring("property Supervisor")] HRESULT Supervisor([out, retval] ITVESupervisor **ppVal);
- [propput, id(1), helpstring("property Supervisor")] HRESULT Supervisor([in] ITVESupervisor *pVal);
- };
-
-// ---------------------------------------------------
-
- // ---------------------------------
- [
- object,
- uuid(05500121-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEAttrMap Interface"),
- pointer_default(unique)
- ]
- interface ITVEAttrMap : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] BSTR *pVal);
- [propget, id(COLLECTID_Key), helpstring("property Key")] HRESULT Key([in] VARIANT var, [out, retval] BSTR *pKey);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] BSTR bstrKey, [in] BSTR bstrValue);
- [ id(COLLECTID_Replace), helpstring("method Replace")] HRESULT Replace([in] BSTR bstrKey, [in] BSTR bstrValue);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- [ id(7), helpstring("method Add1")] HRESULT Add1(BSTR bstrValue);
- [ id(8), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pDump);
- };
-
-// ---------------------------------------------------
-
- // ---------------------------------
- [
- object,
- uuid(05500122-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEAttrTimeQ Interface"),
- pointer_default(unique)
- ]
- interface ITVEAttrTimeQ : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] IUnknown **ppVal);
- [propget, id(COLLECTID_Key), helpstring("property Key")] HRESULT Key([in] VARIANT var, [out, retval] DATE *pKey);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] DATE dateKey, [in] IUnknown *pUnk);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- [ id(COLLECTID_Update), helpstring("method Update")] HRESULT Update([in] DATE dateKey, [in] IUnknown *pUnk);
- [ id(9), helpstring("method LockRead")] HRESULT LockRead();
- [ id(10), helpstring("method LockWrite")] HRESULT LockWrite();
- [ id(11), helpstring("method Unlock")] HRESULT Unlock();
- [ id(12), helpstring("method RemoveSimple")] HRESULT RemoveSimple([in] VARIANT var); // remove without calling var->RemoveYourself()
- [ id(13), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pDump);
- };
-
-// ---------------------------------------------------
- [
- object,
- uuid(05500130-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEMCast Interface"),
- pointer_default(unique)
- ]
- interface ITVEMCast : IDispatch
- {
- [propget, id(1), helpstring("property IPAdapter")] HRESULT IPAdapter([out, retval] BSTR *pVal);
- [propput, id(1), helpstring("property IPAdapter")] HRESULT IPAdapter([in] BSTR newVal);
- [propget, id(2), helpstring("property IPAddress")] HRESULT IPAddress([out, retval] BSTR *pVal);
- [propput, id(2), helpstring("property IPAddress")] HRESULT IPAddress([in] BSTR newVal);
- [propget, id(3), helpstring("property IPPort")] HRESULT IPPort([out, retval] long *pVal);
- [propput, id(3), helpstring("property IPPort")] HRESULT IPPort([in] long newVal);
- [ id(4), helpstring("method Join")] HRESULT Join();
- [ id(5), helpstring("method Leave")] HRESULT Leave();
- [propget, id(6), helpstring("property IsJoined")] HRESULT IsJoined([out, retval] VARIANT_BOOL *pVal);
- [propget, id(7), helpstring("property IsSuspended")] HRESULT IsSuspended([out, retval] VARIANT_BOOL *pVal);
- [ id(8), helpstring("method Suspend")] HRESULT Suspend(VARIANT_BOOL fSuspend);
- [propget, id(9), helpstring("property PacketCount")] HRESULT PacketCount([out, retval] long *pVal);
- [propget, id(10), helpstring("property ByteCount")] HRESULT ByteCount([out, retval] long *pVal);
- [ id(11), helpstring("method KeepStats")] HRESULT KeepStats(VARIANT_BOOL fKeepStats);
- [ id(12), helpstring("method ResetStats")] HRESULT ResetStats();
- [ id(13), helpstring("method SetReadCallback")] HRESULT SetReadCallback([in] int nBuffers, [in] int iPrioritySetback, [in] IUnknown *pVal);
- [ id(14), helpstring("method ConnectManager")] HRESULT ConnectManager([in] ITVEMCastManager* pVal);
- [propget, id(15), helpstring("property Manager")] HRESULT Manager([out, retval] IUnknown* *ppVal);
- [propget, id(16), helpstring("property QueueThreadId")] HRESULT QueueThreadId([out, retval] long* pVal);
- [propput, id(16), helpstring("property QueueThreadId")] HRESULT QueueThreadId([in] long pVal);
- [propget, id(17), helpstring("property WhatType")] HRESULT WhatType([out, retval] NWHAT_Mode *pWhatType);
- [propput, id(17), helpstring("property WhatType")] HRESULT WhatType([in] NWHAT_Mode whatType);
- };
-
- [
- object,
- uuid(05500131-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEMCasts Interface"),
- pointer_default(unique)
- ]
- interface ITVEMCasts : IDispatch
- {
- [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
- [propget, id(COLLECTID_Count), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
- [propget, id(COLLECTID_Item), helpstring("property Item")] HRESULT Item([in] VARIANT var, [out, retval] ITVEMCast * *pVal);
- [ id(COLLECTID_Add), helpstring("method Add")] HRESULT Add([in] ITVEMCast *punk);
- [ id(COLLECTID_Remove), helpstring("method Remove")] HRESULT Remove([in] VARIANT var);
- [ id(COLLECTID_RemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
- };
- [
- object,
- uuid(05500132-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEMCastManager Interface"),
- pointer_default(unique)
- ]
- interface ITVEMCastManager : IDispatch
- {
- [propget, id(1), helpstring("property MCasts")] HRESULT MCasts([out, retval] ITVEMCasts* *pVal);
- [propget, id(2), helpstring("property Supervisor")] HRESULT Supervisor([out, retval] ITVESupervisor* *ppSupervisor);
- [propput, id(2), helpstring("property Supervisor")] HRESULT Supervisor([in] ITVESupervisor *pSupervisor);
- [ id(3), helpstring("method AddMulticast")] HRESULT AddMulticast([in] NWHAT_Mode whatType, [in] BSTR bsAdapter, [in] BSTR bsIPAddress, [in] LONG ulIPPort, [in] LONG cBuffers, [in] IUnknown *pICallback, [out] ITVEMCast **ppMCastAdded);
- [ id(4), helpstring("method FindMulticast")] HRESULT FindMulticast([in] BSTR bstrIPAdapter, [in] BSTR bstrIPAddress, [in] LONG sPort, [out] ITVEMCast **ppMCast, [out] LONG *pcMatches);
- [ id(5), helpstring("method RemoveMulticast")] HRESULT RemoveMulticast(ITVEMCast *pMCast);
- [ id(6), helpstring("method JoinAll")] HRESULT JoinAll();
- [ id(7), helpstring("method LeaveAll")] HRESULT LeaveAll();
- [ id(8), helpstring("method SuspendAll")] HRESULT SuspendAll([in] VARIANT_BOOL fSuspend);
- [ id(9), helpstring("method Lock_")] HRESULT Lock_();
- [ id(10), helpstring("method Unlock_")] HRESULT Unlock_();
- [ id(11), helpstring("method DumpStatsToBSTR")] HRESULT DumpStatsToBSTR(int iType, BSTR *pBSTR);
- [propget, id(13), helpstring("property HaltFlags")] HRESULT HaltFlags([out, retval] LONG *plGrfHaltFlags);
- [propput, id(13), helpstring("property HaltFlags")] HRESULT HaltFlags([in] LONG lGrfHaltFlags);
- };
-
- [
- object,
- uuid(05500232-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- hidden,
- helpstring("ITVEMCastManager_Helper Interface"),
- pointer_default(unique)
- ]
- interface ITVEMCastManager_Helper : IUnknown
- {
- [ id(1), helpstring("method DumpString")] HRESULT DumpString(BSTR bstrDump); // writes string to a Dump.txt
- [ id(2), helpstring("method CreateQueueThread")] HRESULT CreateQueueThread();
- [ id(3), helpstring("method KillQueueThread")] HRESULT KillQueueThread();
- [ id(4), helpstring("method PostToQueueThread")] HRESULT PostToQueueThread(UINT uiMsg, WPARAM wParam, LPARAM lParam);
- [ id(5), helpstring("method GetPacketCounts")] HRESULT GetPacketCounts([out] LONG *pCPackets, [out] LONG *pCPacketsDropped, [out] LONG *pCPacketsDroppedTotal);
- };
-
-
- [
- object,
- uuid(05500133-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEMCastCallback Interface"),
- pointer_default(unique)
- ]
- interface ITVEMCastCallback : IDispatch
- {
- [id(1), helpstring("method SetMCast")] HRESULT SetMCast(ITVEMCast *pMCast);
- [id(2), helpstring("method ProcessPacket")] HRESULT ProcessPacket(unsigned char *pchBuffer, long cBytes, long lPacketId);
- [id(3), helpstring("method PostPacket")] HRESULT PostPacket(unsigned char *pchBuffer, long cBytes, long wPacketId);
- };
-
-
-
-
- // ................ specific callbacks ..............
- [
- object,
- uuid(05500141-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVECBAnnc Interface"),
- pointer_default(unique)
- ]
- interface ITVECBAnnc : IDispatch
- {
- [id(1), helpstring("method Init")] HRESULT Init(BSTR bstrFileTrigAdapter, ITVEService *pService); // want ITVEService here
- };
- [
- object,
- uuid(05500142-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVECBTrig Interface"),
- pointer_default(unique)
- ]
- interface ITVECBTrig : IDispatch
- {
- [id(1), helpstring("method Init")] HRESULT Init(ITVEVariation *pIVariation);
- };
- [
- object,
- uuid(05500143-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVECBFile Interface"),
- pointer_default(unique)
- ]
- interface ITVECBFile : IDispatch
- {
- [id(1), helpstring("method Init")] HRESULT Init(ITVEVariation *pIVariation, ITVEService *pIService);
- };
- [
- object,
- uuid(05500144-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVECBDummy Interface"),
- pointer_default(unique)
- ]
- interface ITVECBDummy : IDispatch
- {
- [id(1), helpstring("method Init")] HRESULT Init(int i);
- };
-
-
-// ----------------------------------------------------
- [
- object,
- uuid(05500151-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVEFile Interface"),
- pointer_default(unique)
- ]
- interface ITVEFile : IDispatch
- {
- [ id(1), helpstring("method InitializeFile")] HRESULT InitializeFile([in] ITVEVariation *pVaria, [in] BSTR bsName, [in] BSTR bsLoc, [in] DATE dateExpires);
- [ id(2), helpstring("method InitializePackage")] HRESULT InitializePackage([in] ITVEVariation *pVaria, [in] BSTR bsName, [in] BSTR bsLoc, [in] DATE dateExpires);
- [propget, id(3), helpstring("property Description")] HRESULT Description([out, retval] BSTR* pBstrDesc);
- [propget, id(4), helpstring("property Location")] HRESULT Location([out, retval] BSTR* pBstrLoc);
- [propget, id(5), helpstring("property ExpireTime")] HRESULT ExpireTime([out, retval] DATE* pDateExpires);
- [propget, id(6), helpstring("property IsPackage")] HRESULT IsPackage([out, retval] BOOL* pfVal);
- [propget, id(7), helpstring("property Variation")] HRESULT Variation([out, retval] ITVEVariation* *pVal);
- [propget, id(8), helpstring("property Service")] HRESULT Service([out, retval] ITVEService* *pVal);
- [ id(9), helpstring("method RemoveYourself")] HRESULT RemoveYourself();
- [ id(10), helpstring("method DumpToBSTR")] HRESULT DumpToBSTR([out] BSTR *pBstrDump);
- };
-
-
-// ----------------------------------------------------
-// ITVENavAid
-// ----------------------------------------------------
-
-[
- object,
- uuid (05500160-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVENavAid Interface"),
- pointer_default(unique)
-]
-interface ITVENavAid : IDispatch
-{
- [propput, id(1), helpstring("property WebBrowserApp")] HRESULT WebBrowserApp([in] IDispatch *pWebBrowser);
- [propget, id(1), helpstring("property WebBrowserApp")] HRESULT WebBrowserApp([out, retval] IDispatch **ppWebBrowser);
- [propget, id(2), helpstring("property TVETriggerCtrl")] HRESULT TVETriggerCtrl([out, retval] ITVETriggerCtrl **ppTriggerCtrl);
- [propput, id(3), helpstring("property EnableAutoTriggering")] HRESULT EnableAutoTriggering([in] long lAutoTriggers);
- [propget, id(3), helpstring("property EnableAutoTriggering")] HRESULT EnableAutoTriggering([out, retval] long *plAutoTriggers);
- [propget, id(4), helpstring("property ActiveVariation")] HRESULT ActiveVariation([out, retval] ITVEVariation **ppActiveVariation);
- [propput, id(4), helpstring("property ActiveVariation")] HRESULT ActiveVariation([in] ITVEVariation *pActiveVariation);
- [propget, id(5), helpstring("property TVEFeature")] HRESULT TVEFeature([out, retval] ITVEFeature **ppTVEFeature);
- [propget, id(6), helpstring("property CacheState")] HRESULT CacheState([out, retval] BSTR *pbstrBuff);
- [propput, id(6), helpstring("property CacheState")] HRESULT CacheState([in] BSTR bstrBuff);
- [ , id(7), helpstring("method NavUsingTVETrigger")] HRESULT NavUsingTVETrigger([in] ITVETrigger *pTrigger, [in] long lForceNav, [in] long lForceExec);
- [ , id(8), helpstring("method ExecScript")] HRESULT ExecScript([in] BSTR bstrScript, [in] BSTR bstrLanguage);
- [ , id(9), helpstring("method Navigate")] HRESULT Navigate([in] VARIANT *URL,[in] VARIANT *Flags,[in] VARIANT *TargetFrameName, [in] VARIANT *PostData, [in] VARIANT *Headers);
- [propget, id(10), helpstring("property CurrTVEName")] HRESULT CurrTVEName([out, retval] BSTR *pbstrName);
- [propget, id(11), helpstring("property CurrTVEURL")] HRESULT CurrTVEURL([out, retval] BSTR *pbstrURL);
-
- // these are incoming sinkn events called by Supervisor ((_ITVEvents).. ID's Must match (I think)
- // &DIID__ITVEEvents
- [id(2101), helpstring("method NotifyTVETune")] HRESULT NotifyTVETune([in] NTUN_Mode tuneMode, [in] ITVEService *pService, [in] BSTR bstrDescription, [in] BSTR bstrIPAdapter);
- [id(2102), helpstring("method NotifyTVEEnhancementNew")] HRESULT NotifyTVEEnhancementNew([in] ITVEEnhancement *pEnh);
- [id(2103), helpstring("method NotifyTVEEnhancementUpdated")] HRESULT NotifyTVEEnhancementUpdated([in] ITVEEnhancement *pEnh, [in] long lChangedFlags); // changedFlags : NENH_grfDiff
- [id(2104), helpstring("method NotifyTVEEnhancementStarting")] HRESULT NotifyTVEEnhancementStarting([in] ITVEEnhancement *pEnh);
- [id(2105), helpstring("method NotifyTVEEnhancementExpired")] HRESULT NotifyTVEEnhancementExpired([in] ITVEEnhancement *pEnh);
- [id(2106), helpstring("method NotifyTVETriggerNew")] HRESULT NotifyTVETriggerNew([in] ITVETrigger *pTrigger,[in] BOOL fActive);
- [id(2107), helpstring("method NotifyTVETriggerUpdated")] HRESULT NotifyTVETriggerUpdated([in] ITVETrigger *pTrigger,[in] BOOL fActive, [in] long lChangedFlags); // changedFlags : NTRK_grfDiff
- [id(2108), helpstring("method NotifyTVETriggerExpired")] HRESULT NotifyTVETriggerExpired([in] ITVETrigger *pTrigger,[in] BOOL fActive);
- [id(2109), helpstring("method NotifyTVEPackage")] HRESULT NotifyTVEPackage([in] NPKG_Mode engPkgMode, [in] ITVEVariation *pVariation, [in] BSTR bstrUUID, [in] long cBytesTotal, [in] long cBytesReceived);
- [id(2110), helpstring("method NotifyTVEFile")] HRESULT NotifyTVEFile([in] NFLE_Mode engFileMode, [in] ITVEVariation *pVariation, [in] BSTR bstrUrlName, [in] BSTR bstrFileName);
- [id(2111), helpstring("method NotifyTVEAuxInfo")] HRESULT NotifyTVEAuxInfo([in] NWHAT_Mode engAuxInfoMode, [in] BSTR bstrAuxInfoString, [in] long lChangedFlags, [in] long lErrorLine); // WhatIsIt is NWHAT_Mode - lChangedFlags is NENH_grfDiff or NTRK_grfDiff treated as error bits
-
-
- // &DIID_DWebBrowserEvents2,
-
- [id(0x66), helpstring("method NotifyStatusTextChange")] HRESULT NotifyStatusTextChange(BSTR Text);
- [id(0x6c), helpstring("method NotifyProgressChange")] HRESULT NotifyProgressChange(LONG Progress, LONG ProgressMax);
- [id(0x69), helpstring("method NotifyCommandStateChange")] HRESULT NotifyCommandStateChange(LONG Command, VARIANT_BOOL Enable);
- [id(0x6a), helpstring("method NotifyDownloadBegin")] HRESULT NotifyDownloadBegin();
- [id(0x68), helpstring("method NotifyDownloadComplete")] HRESULT NotifyDownloadComplete();
- [id(0x71), helpstring("method NotifyTitleChange")] HRESULT NotifyTitleChange(BSTR Text);
- [id(0x70), helpstring("method NotifyPropertyChange")] HRESULT NotifyPropertyChange(BSTR szProperty);
- [id(0xfa), helpstring("method NotifyBeforeNavigate2")] HRESULT NotifyBeforeNavigate2(IDispatch * pDisp, VARIANT * URL, VARIANT * Flags, VARIANT * TargetFrameName, VARIANT * PostData, VARIANT * Headers, VARIANT_BOOL * Cancel);
- [id(0xfb), helpstring("method NotifyNewWindow2")] HRESULT NotifyNewWindow2(IDispatch * * ppDisp, VARIANT_BOOL * Cancel);
- [id(0xfc), helpstring("method NotifyNavigateComplete2")] HRESULT NotifyNavigateComplete2(IDispatch * pDisp, VARIANT * URL);
- [id(0x103), helpstring("method NotifyDocumentComplete")] HRESULT NotifyDocumentComplete(IDispatch * pDisp, VARIANT * URL);
- [id(0xfd), helpstring("method NotifyOnQuit")] HRESULT NotifyOnQuit();
- [id(0xfe), helpstring("method NotifyOnVisible")] HRESULT NotifyOnVisible(VARIANT_BOOL Visible);
- [id(0xff), helpstring("method NotifyOnToolBar")] HRESULT NotifyOnToolBar(VARIANT_BOOL ToolBar);
- [id(0x100), helpstring("method NotifyOnMenuBar")] HRESULT NotifyOnMenuBar(VARIANT_BOOL MenuBar);
- [id(0x101), helpstring("method NotifyOnStatusBar")] HRESULT NotifyOnStatusBar(VARIANT_BOOL StatusBar);
- [id(0x102), helpstring("method NotifyOnFullScreen")] HRESULT NotifyOnFullScreen(VARIANT_BOOL FullScreen);
- [id(0x104), helpstring("method NotifyOnTheaterMode")] HRESULT NotifyOnTheaterMode(VARIANT_BOOL TheaterMode);
-
-} ;
- // ------
- // these interfaces for running without the VidControl
- // - idea is to create CoCreate supervisor, and 'put' it here.
-[
- object,
- uuid (05500360-FAA5-4df9-8246-BFC23AC5CEA8),
- hidden,
-// dual,
- helpstring("ITVENavAid_NoVidCtl Interface"),
- pointer_default(unique)
-]
-interface ITVENavAid_NoVidCtl : IUnknown
-{
- [propput ,id(1), helpstring("property NoVidCtl_Supervisor")] HRESULT NoVidCtl_Supervisor([in] ITVESupervisor *pSuper);
- [propget ,id(1), helpstring("property NoVidCtl_Supervisor")] HRESULT NoVidCtl_Supervisor([out,retval] ITVESupervisor **ppSuper);
-
-} ;
-
- // ------
-[
- object,
- uuid (05500260-FAA5-4df9-8246-BFC23AC5CEA8),
- hidden,
- dual, // - used in proxying, must be marked Dual regardless of what .net says
- helpstring("ITVENavAid_Helper Interface"),
- pointer_default(unique)
-]
-interface ITVENavAid_Helper : IUnknown
-{
- [ id(1), helpstring("method LocateVidAndTriggerCtrls")] HRESULT LocateVidAndTriggerCtrls([out] IDispatch **pVidCtrl, [out] IDispatch **pTrigCtrl);
- [ id(2), helpstring("method NotifyTVETriggerUpdated_XProxy")] HRESULT NotifyTVETriggerUpdated_XProxy([in] ITVETrigger *pTrigger,[in] BOOL fActive, [in] long lChangedFlags); // changedFlags : NTRK_grfDiff
- [ id(3), helpstring("method ReInitCurrNavState")] HRESULT ReInitCurrNavState([in] long lReserved);
-
-} ;
-// ----------------------------------------------------
-// Filter interfaces
-// -----------------------------------------------------
-[
- object,
- uuid (05500180-FAA5-4df9-8246-BFC23AC5CEA8),
-// dual,
- helpstring("TVEFilter Interface"),
- pointer_default(unique)
-]
-interface ITVEFilter : IUnknown
-{
-// [propget, id(2), helpstring("property Supervisor")] HRESULT Supervisor([out, retval] IDispatch **ppSuperDsp);
- [propget, id(3), helpstring("property SupervisorPunk")] HRESULT SupervisorPunk([out, retval] IUnknown **ppSuperPunk);
-
- [propget, id(4), helpstring("property IPAdapterAddress")] HRESULT IPAdapterAddress([out, retval] BSTR *pbstrIPAddr);
- [propput, id(4), helpstring("property IPAdapterAddress")] HRESULT IPAdapterAddress([in] BSTR bstrIPAddr);
-
- [propget, id(5), helpstring("property StationID")] HRESULT StationID([out, retval] BSTR *pbstrStationID);
- [propput, id(5), helpstring("property StationID")] HRESULT StationID([in] BSTR bstrStationID);
-
- [propget, id(6), helpstring("property MulticastList")] HRESULT MulticastList([out, retval] BSTR *pbstrMulticastList);
- [propget, id(7), helpstring("property AdapterDescription")] HRESULT AdapterDescription([out, retval] BSTR *pbstrAdapterDescription);
-
- [ id(8), helpstring("method ReTune")] HRESULT ReTune();
-
- // should move to FilterHelper
- [propget, id(9), helpstring("property HaltFlags")] HRESULT HaltFlags([out, retval] LONG *plGrfHaltFlags);
- [propput, id(9), helpstring("property HaltFlags")] HRESULT HaltFlags([in] LONG lGrfHaltFlags);
-
- [ id(10), helpstring("method ParseCCBytePair")] HRESULT ParseCCBytePair([in] LONG lByteType, [in] BYTE byte1, [in] BYTE byte2);
-
- [propget, id(11), helpstring("property IPSinkAdapterAddress")] HRESULT IPSinkAdapterAddress([out, retval] BSTR *pbstrIPAddr);
-
-// [propput, id(12), helpstring("property SupervisorHelperPunk")] HRESULT get_SupervisorHelperPunk([out] IUnknown **ppSuperHelper);
-
-};
-
-// ------------------------------------------------------
-[
- object,
- uuid (05500280-FAA5-4df9-8246-BFC23AC5CEA8),
- hidden,
- helpstring("ITVEFilter_Helper Interface"),
- pointer_default(unique)
-]
-interface ITVEFilter_Helper : IUnknown
-{
-// [id(1),helpstring("method ConnectParent")] HRESULT ConnectParent([in] ITVEEnhancement *pEnhancement);
-} ;
-
-
-[
- object,
- uuid (05500190-FAA5-4df9-8246-BFC23AC5CEA8),
- dual,
- helpstring("ITVETriggerCtrl Interface"),
- pointer_default(unique)
-]
-interface ITVETriggerCtrl : IDispatch
-{
- [propput, id(1)] HRESULT enabled([in] VARIANT_BOOL newVal);
- [propget, id(1)] HRESULT enabled([out, retval] VARIANT_BOOL* pVal);
- [propget, id(2)] HRESULT sourceID([out, retval] BSTR* pbstrID);
- [propput, id(3)] HRESULT releasable([in] VARIANT_BOOL newVal);
- [propget, id(3)] HRESULT releasable([out, retval] VARIANT_BOOL* pVal);
- [propget, id(4)] HRESULT backChannel([out, retval] BSTR* pVal);
- [propget, id(5)] HRESULT contentLevel([out, retval] double* pVal);
-} ;
-
-[
- object,
- uuid (05500191-FAA5-4df9-8246-BFC23AC5CEA8),
- hidden,
- helpstring("ITVETriggerCtrl_Helper Interface"),
- pointer_default(unique)
-]
-interface ITVETriggerCtrl_Helper : IUnknown
-{
- [propput, id(1)] HRESULT sourceID([in] BSTR pSourceUUID); // cache the SourceID
- [propget, id(2)] HRESULT TopLevelPage([out, retval] BSTR *pURL); // return the cached URL (???) of the top web page
-
-} ;
-
-// ---------------------------------------------------------------------------------------
-// ***************************************************************************************
-// ----------------------------------------------------------------------------------------
-[
- uuid(1700C001-6666-4f66-B1E2-BF3C9FBB9BA6), // new
- version(1.0),
- helpstring("Microsoft TVE Library and DShow Filter")
-]
-library MSTvELib
-{
- importlib("stdole32.tlb");
- importlib("stdole2.tlb");
-// -------------------------------------------------------
-typedef enum NENH_grfDiff // need to fill out..
-{
- NENH_grfNone = 0x0000, // no flags
- NENH_grfDescription = 0x00000001,
- NENH_grfIsPrimary = 0x00000002,
- NENH_grfProtocolVersion = 0x00000004,
- NENH_grfSessionUserName = 0x00000008,
- NENH_grfSessionId = 0x00000010,
- NENH_grfSessionVersion = 0x00000020,
- NENH_grfSessionIPAddress = 0x00000040,
- NENH_grfSessionName = 0x00000080,
- NENH_grfEmailAddresses = 0x00000100,
- NENH_grfPhoneNumbers = 0x00000200,
- NENH_grfUUID = 0x00000400,
- NENH_grfStartTime = 0x00000800,
- NENH_grfStopTime = 0x00001000,
- NENH_grfType = 0x00002000,
- NENH_grfTveType = 0x00004000,
- NENH_grfTveSize = 0x00008000,
- NENH_grfTveLevel = 0x00010000,
- NENH_grfAttributes = 0x00020000,
- NENH_grfRest = 0x00040000,
- NENH_grfVariationAdded = 0x00080000,
- NENH_grfVariationRemoved = 0x00100000,
- NENH_grfDescriptionURI = 0x00200000,
- NENH_grfSomeVarIP = 0x00400000,
- NENH_grfSomeVarText = 0x00800000,
- NENH_grfSomeVarBandwidth = 0x01000000,
- NENH_grfSomeVarLanguages = 0x02000000,
- NENH_grfSomeVarAttribute = 0x04000000,
- NENH_grfUnused = 0x08000000,
- NENH_grfSAPVersion = 0x10000000,
- NENH_grfSAPAddressType = 0x20000000,
- NENH_grfSAPOther = 0x40000000,
- NENH_grfSAPEncryptComp = 0x80000000,
- NENH_grfAnyIP = (NENH_grfSomeVarIP | NENH_grfVariationAdded | NENH_grfVariationRemoved),
- NENH_grfAll = (NENH_grfSomeVarAttribute<<1) - 1 // all flags
-} NENH_grfDiff;
-
-typedef enum NVAR_grfDiff
-{
- NVAR_grfNone = 0x0000,
- NVAR_grfDescription = 0x0001,
- NVAR_grfMediaName = 0x0002,
- NVAR_grfMediaTitle = 0x0004,
- NVAR_grfFilePort = 0x0008,
- NVAR_grfFileIPAddress = 0x0010,
- NVAR_grfFileIPAdapter = 0x0020,
- NVAR_grfTriggerPort = 0x0040,
- NVAR_grfTriggerIPAddress = 0x0080,
- NVAR_grfTriggerIPAdapter = 0x0100,
- NVAR_grfAttributes = 0x0200,
- NVAR_grfLanguages = 0x0400,
- NVAR_grfBandwidth = 0x0800,
- NVAR_grfBandwidthInfo = 0x1000,
- NVAR_grfRest = 0x2000,
- NVAR_grfAnyIP = (NVAR_grfFilePort | NVAR_grfFileIPAddress | NVAR_grfFileIPAdapter |
- NVAR_grfTriggerPort | NVAR_grfTriggerIPAddress | NVAR_grfTriggerIPAdapter),
- NVAR_grfAnyText = (NVAR_grfDescription | NVAR_grfMediaName | NVAR_grfMediaTitle),
- NVAR_grfAnyBandwidth = (NVAR_grfBandwidth | NVAR_grfBandwidthInfo),
- NVAR_grfAnyAttribute = (NVAR_grfAttributes | NVAR_grfRest),
-
- NVAR_grfAll = (NVAR_grfRest<<1) - 1 // all flags
-} NVAR_grfDiff;
-
-
-typedef enum NTRK_grfDiff // attempt at a bit-field flag
-{
- NTRK_grfNone = 0x00,
- NTRK_grfURL = 0x01,
- NTRK_grfName = 0x02,
- NTRK_grfScript = 0x04,
- NTRK_grfDate = 0x08,
- NTRK_grfTVELevel= 0x10,
- NTRK_grfExpired = 0x20, // trigger arrived out of date
- NTRK_grfRest = 0x40,
- NTRK_grfAll = (NTRK_grfRest<<1) - 1 // all flags
-} NTRK_grfDiff;
-
-typedef enum NFLT_grfHaltFlags // flags to turn various processing bits off
-{
- NFLT_grfNone = 0x00,
-
- NFLT_grfTA_Listen = 0x01, // don't listen for CC (XOverLink) triggers
- NFLT_grfTA_Decode = 0x02, // don't accumulate byte data for XOverLink triggers into strings
- NFLT_grfTA_Parse = 0x04, // don't parse any XOverLink data
-
- NFLT_grfTB_AnncListen = 0x10, // suspend listening for announcement packets if set
- NFLT_grfTB_AnncDecode = 0x20, // suspend decoding and processing of announcement packets if set
- NFLT_grfTB_AnncParse = 0x40, // don't parse any announcements
-
- NFLT_grfTB_TrigListen = 0x100, // suspend listening for transport B triggers
- NFLT_grfTB_TrigDecode = 0x200, // suspend listening for transport B triggers
- NFLT_grfTB_TrigParse = 0x400, // don't parse any transport B triggers
-
- NFLT_grfTB_DataListen = 0x1000, // suspend listening for transport B data (files)
- NFLT_grfTB_DataDecode = 0x2000, // suspend listening for transport B data (files)
- NFLT_grfTB_DataParse = 0x4000, // don't parse any transport B data (files)
-
- NFLT_grf_ExpireQueue = 0x10000, // turn expire queue processing on and off
- NFLT_grf_Extra1 = 0x100000, // extra flag
- NFLT_grf_Extra2 = 0x200000, // extra flag
- NFLT_grf_Extra3 = 0x400000, // extra flag
- NFLT_grf_Extra4 = 0x800000 //extra flag
-
-} NFLT_grfHaltFlags;
-
-
-// -------------------------------------------------
-// ---------------------------------------------------
-// CAUTION - if Change events below, need to perform (after MIDL compiling this file):
-// CTVESupervisor->Implement Connection Point (_ITVEEvents)
-// AND
-// CTVEFeature->Implement Connection Point (_ITVEEvents)
-// to regenerate the CProxy_ITVEEvents<> code.
-//
-// Select Browse... button, goto filters\tve\mstve\objd\i386 directory, use mstve.tlb
-//
-// Note thefile MSTvECP.h must be checked out.
-//
-
- [
- uuid(05500000-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("_ITVEEvents Interface")
- ]
- dispinterface _ITVEEvents
- {
- properties:
- methods:
- [id(2101), helpstring("method NotifyTVETune")] HRESULT NotifyTVETune([in] NTUN_Mode tuneMode, [in] ITVEService *pService, [in] BSTR bstrDescription, [in] BSTR bstrIPAdapter);
- [id(2102), helpstring("method NotifyTVEEnhancementNew")] HRESULT NotifyTVEEnhancementNew([in] ITVEEnhancement *pEnh);
- [id(2103), helpstring("method NotifyTVEEnhancementUpdated")] HRESULT NotifyTVEEnhancementUpdated([in] ITVEEnhancement *pEnh, [in] long lChangedFlags); // changedFlags : NENH_grfDiff
- [id(2104), helpstring("method NotifyTVEEnhancementStarting")] HRESULT NotifyTVEEnhancementStarting([in] ITVEEnhancement *pEnh);
- [id(2105), helpstring("method NotifyTVEEnhancementExpired")] HRESULT NotifyTVEEnhancementExpired([in] ITVEEnhancement *pEnh);
- [id(2106), helpstring("method NotifyTVETriggerNew")] HRESULT NotifyTVETriggerNew([in] ITVETrigger *pTrigger,[in] BOOL fActive);
- [id(2107), helpstring("method NotifyTVETriggerUpdated")] HRESULT NotifyTVETriggerUpdated([in] ITVETrigger *pTrigger,[in] BOOL fActive, [in] long lChangedFlags); // changedFlags : NTRK_grfDiff
- [id(2108), helpstring("method NotifyTVETriggerExpired")] HRESULT NotifyTVETriggerExpired([in] ITVETrigger *pTrigger,[in] BOOL fActive);
- [id(2109), helpstring("method NotifyTVEPackage")] HRESULT NotifyTVEPackage([in] NPKG_Mode engPkgMode, [in] ITVEVariation *pVariation, [in] BSTR bstrUUID, [in] long cBytesTotal, [in] long cBytesReceived);
- [id(2110), helpstring("method NotifyTVEFile")] HRESULT NotifyTVEFile([in] NFLE_Mode engFileMode, [in] ITVEVariation *pVariation, [in] BSTR bstrUrlName, [in] BSTR bstrFileName);
- [id(2111), helpstring("method NotifyTVEAuxInfo")] HRESULT NotifyTVEAuxInfo([in] NWHAT_Mode engAuxInfoMode, [in] BSTR bstrAuxInfoString, [in] long lChangedFlags, [in] long lErrorLine); // WhatIsIt is NWHAT_Mode - lChangedFlags is NENH_grfDiff or NTRK_grfDiff treated as error bits
- };
-
- [
- uuid(05500001-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVETrigger Class")
- ]
- coclass TVETrigger
- {
- [default] interface ITVETrigger;
- interface ITVETrigger_Helper;
- };
-// ----------------------------------------------------
-
- [
- uuid(05500002-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVETrack Class")
- ]
- coclass TVETrack
- {
- [default] interface ITVETrack;
- interface ITVETrack_Helper;
- };
-// ---------------------------------
-// [
-// uuid(05500012-FAA5-4df9-8246-BFC23AC5CEA8),
-// helpstring("TVETracks Class")
-// ]
-// coclass TVETracks
-// {
-// [default] interface ITVETracks;
-// };
-// ----------------------------------------------------
-
- [
- uuid(05500003-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEVariation Class")
- ]
- coclass TVEVariation
- {
- [default] interface ITVEVariation;
- interface ITVEVariation_Helper;
- };
-// [
-// uuid(05500013-FAA5-4df9-8246-BFC23AC5CEA8),
-// helpstring("TVEVariations Class")
-// ]
-// coclass TVEVariations
-// {
-// [default] interface ITVEVariations;
-// };
-// ---------------------------------------------------
- [
- uuid(05500004-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEEnhancement Class")
- ]
- coclass TVEEnhancement
- {
- [default] interface ITVEEnhancement;
- interface ITVEEnhancement_Helper;
- };
-
- // --------------------------------
-
- [
- uuid(05500014-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEEnhancements Class")
- ]
- coclass TVEEnhancements
- {
- [default] interface ITVEEnhancements;
- };
-// ---------------------------------------------------
-
-
- [
- uuid(05500005-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEService Class")
- ]
- coclass TVEService
- {
- [default] interface ITVEService;
- interface ITVEService_Helper;
- };
-
- [
- uuid(05500025-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEFeature Class")
- ]
- coclass TVEFeature
- {
- [default] interface ITVEFeature;
- [default, source] dispinterface _ITVEEvents; // out going event handler
- interface _ITVEEvents; // incoming event interface
-// interface ITVEService_Helper;
- };
-
- // -------------------------------
-
- [
- uuid(05500015-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEServices Class")
- ]
- coclass TVEServices
- {
- [default] interface ITVEServices;
- };
-
-
-// ---------------------------------------------------
- [
- uuid(05500006-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVESupervisor Class")
- ]
- coclass TVESupervisor
- {
- [default] interface ITVESupervisor;
- [default, source] dispinterface _ITVEEvents;
- interface ITVESupervisor_Helper;
- };
-/*
- [
- hidden,
- uuid(05500406-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("ITVESupervisorGITProxy Class")
- ]
- coclass TVESupervisorGITProxy
- {
- [default] interface ITVESupervisorGITProxy;
- };
- */
-// ---------------------------------------------------
-
- [
- uuid(05500021-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEAttrMap Class")
- ]
- coclass TVEAttrMap
- {
- [default] interface ITVEAttrMap;
- };
-
- [
- uuid(05500022-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEAttrTimeQ Class")
- ]
- coclass TVEAttrTimeQ
- {
- [default] interface ITVEAttrTimeQ;
- };
-
- [
- uuid(05500030-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEMCast Class")
- ]
- coclass TVEMCast
- {
- [default] interface ITVEMCast;
- };
-
- [
- uuid(05500031-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEMCasts Class")
- ]
- coclass TVEMCasts
- {
- [default] interface ITVEMCasts;
- };
-
- [
- uuid(05500032-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEMCastManager Class")
- ]
- coclass TVEMCastManager
- {
- [default] interface ITVEMCastManager;
- interface ITVEMCastManager_Helper;
- };
-
-
- [
- uuid(05500040-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEMCastCallback Class")
- ]
- coclass TVEMCastCallback
- {
- [default] interface ITVEMCastCallback;
- };
- [
- uuid(05500041-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVECBAnnc Class")
- ]
- // specific Multicast Callbacks
- coclass TVECBAnnc
- {
- [default] interface ITVECBAnnc;
- };
- [
- uuid(05500042-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVECBTrig Class")
- ]
- coclass TVECBTrig
- {
- [default] interface ITVECBTrig;
- };
- [
- uuid(05500043-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVECBFile Class")
- ]
- coclass TVECBFile
- {
- [default] interface ITVECBFile;
- };
- [
- uuid(05500049-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVECBDummy Class")
- ]
- coclass TVECBDummy
- {
- [default] interface ITVECBDummy;
- };
-
-
- [
- uuid(05500050-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEFile Class")
- ]
- coclass TVEFile
- {
- [default] interface ITVEFile;
- }
-
- // This control gets CoCreate'ed by an app to handle hooking things together
- [
- uuid(05500070-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVENavAid Class")
- ]
- coclass TVENavAid
- {
- [default] interface ITVENavAid; // controllable from HTML
- interface ITVENavAid_Helper; // internal control methods
- interface ITVENavAid_NoVidCtl; // to work without the VidControl
- };
-
- // this is the DShow TVE Receiver Filter that encapsulates a TVESupervisor
- // object in a in a DShow graph
- [
- uuid(05500080-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVEFilter Class")
- ]
- coclass TVEFilter
- {
-// [default, source] dispinterface _ITVEEvents;
- [default] interface ITVEFilter;
- interface ITVEFilter_Helper;
- };
-
- // This control gets CoCreated by HTML in <OBJECT TYPE="application\tve-trigger">
- // Implements the tve-trigger receiver object properties as per Atvef Spec
- [
- uuid(05500091-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("_ITVETriggerCtrlEvents Interface")
- ]
- dispinterface _ITVETriggerCtrlEvents
- {
- properties:
- methods:
- };
-
-
- [
- uuid(05500090-FAA5-4df9-8246-BFC23AC5CEA8),
- helpstring("TVETriggerCtrl Class")
- ]
- coclass TVETriggerCtrl
- {
- [default] interface ITVETriggerCtrl; // controllable from HTML
- interface ITVETriggerCtrl_Helper; // internal control methods
- [default, source] dispinterface _ITveTriggerCtrlEvents; // fire control events to HTML
-// interface _ITVEvents; // respond to slew of TVE events
- };
-
-};
diff --git a/dxsdk/Include/DShowIDL/qedit.idl b/dxsdk/Include/DShowIDL/qedit.idl
deleted file mode 100644
index b75a3e35..00000000
--- a/dxsdk/Include/DShowIDL/qedit.idl
+++ /dev/null
@@ -1,1734 +0,0 @@
-//------------------------------------------------------------------------------
-// File: QEdit.idl
-//
-// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------------------------
-
-
-import "oaidl.idl";
-import "ocidl.idl";
-import "dxtrans.idl";
-import "amstream.idl";
-import "msxml.idl";
-
-//
-// forward declare
-//
-interface IAMTimelineGroup;
-interface IAMTimelineObj;
-interface IAMTimelineEffect;
-interface IAMTimelineTrans;
-interface IAMTimelineSrc;
-interface IAMTimeline;
-interface IAMErrorLog;
-interface ISampleGrabber;
-interface IPropertySetter;
-
-// used by DEXTER_VALUE's dwInterp var
-typedef enum
-{
- DEXTERF_JUMP,
- DEXTERF_INTERPOLATE
-} DEXTERF;
-
-// used to set values on the property setter
-typedef struct
-{
- BSTR Name;
- DISPID dispID;
- LONG nValues;
-} DEXTER_PARAM;
-
-// used to set values on the property setter
-typedef struct
-{
- VARIANT v;
- REFERENCE_TIME rt;
- DWORD dwInterp; // one of the DEXTERF_ flags
-} DEXTER_VALUE;
-
-// used by bMethod directly below
-enum
-{
- DEXTER_AUDIO_JUMP,
- DEXTER_AUDIO_INTERPOLATE
-};
-
-// used to set volumes on the mixer and mixer pins
-typedef struct
-{
- REFERENCE_TIME rtEnd; //end Time
- double dLevel; //end Volume Level
- BOOL bMethod; //jump or interpolate
-} DEXTER_AUDIO_VOLUMEENVELOPE ;
-
-// used in IAMTimeline::Get(Set)InsertMode
-enum
-{
- TIMELINE_INSERT_MODE_INSERT = 1,
- TIMELINE_INSERT_MODE_OVERLAY = 2
-};
-
-//
-// define what main 'things' can be put into the timeline tree.
-// these values are used quite a bit with timeline access
-// (bitmap mask flags)
-typedef enum
-{
- TIMELINE_MAJOR_TYPE_COMPOSITE = 1,
- TIMELINE_MAJOR_TYPE_TRACK = 2,
- TIMELINE_MAJOR_TYPE_SOURCE = 4,
- TIMELINE_MAJOR_TYPE_TRANSITION = 8,
- TIMELINE_MAJOR_TYPE_EFFECT = 16,
- TIMELINE_MAJOR_TYPE_GROUP = 128
-} TIMELINE_MAJOR_TYPE;
-
-// used in various IAMTimelineXXX "search" functions. Look in this
-// file for "SearchDirection" to see where it's used. I didn't want
-// to use an enum as an interface param type, so I used a long.
-typedef enum
-{
- DEXTERF_BOUNDING = -1, // finds any source whose start <= Time and stop > Time
- DEXTERF_EXACTLY_AT = 0, // finds any source that starts exactly at Time
- DEXTERF_FORWARDS = 1 // finds any source that starts at or after Time
-} DEXTERF_TRACK_SEARCH_FLAGS;
-
-// right now, the media type in the group contains enough information about
-// how we want to recompress. This might not be enough information in the
-// future, so we define a structure we can get and set to the group.
-//
-typedef struct _SCompFmt0
-{
- long nFormatId;
- AM_MEDIA_TYPE MediaType;
-} SCompFmt0;
-
-// used in IAMTimelineSrc::Get(Set)StretchMode
-//
-enum
-{
- RESIZEF_STRETCH,
- RESIZEF_CROP,
- RESIZEF_PRESERVEASPECTRATIO,
- RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX
-};
-
-// used in IRenderEngine::SetDynamicReconnectLevel
-// (bitmap mask flags)
-enum
-{
- CONNECTF_DYNAMIC_NONE = 0x00000000,
- CONNECTF_DYNAMIC_SOURCES = 0x00000001,
- CONNECTF_DYNAMIC_EFFECTS = 0x00000002
-};
-
-// used in
-// IMediaLocator::FindMediaFile
-// IRenderEngine::SetSourceNameValidation
-// IAMTimeline::ValidateSourceNames
-// (bitmap mask flags)
-enum
-{
- SFN_VALIDATEF_CHECK = 0x00000001, // do a check. Without this set, no check will be done.
- SFN_VALIDATEF_POPUP = 0x00000002, // should UI popup show if not found
- SFN_VALIDATEF_TELLME = 0x00000004, // warn user about replaced files
- SFN_VALIDATEF_REPLACE = 0x00000008, // should it replace names in the tldb if found
- SFN_VALIDATEF_USELOCAL = 0x000000010, // use local media preferrably over networked media
- SFN_VALIDATEF_NOFIND = 0x000000020, // never find filenames, always use UI popup to find.,
- // when used, _POPUP must be used as well
- SFN_VALIDATEF_IGNOREMUTED = 0x000000040, // ignore muted files in the tldb
- SFN_VALIDATEF_END
-};
-
-// key transitions types
-enum
-{
- DXTKEY_RGB,
- DXTKEY_NONRED,
- DXTKEY_LUMINANCE,
- DXTKEY_ALPHA,
- DXTKEY_HUE
-};
-
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-// New Property setting Interfaces
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-
-// interface for objects which can save/load IDispatch-able properties
-[
- object,
- uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20),
- helpstring("IPropertySetter Interface"),
- pointer_default(unique)
-]
-interface IPropertySetter : IUnknown // IPersist?
-{
- // for loading and saving through XML
- HRESULT LoadXML([in] IUnknown * pxml);
- // !!! doesn't work HRESULT LoadXML([in] IXMLElement * pxml);
- HRESULT PrintXML([out] char *pszXML, [in] int cbXML, [out] int *pcbPrinted,[in] int indent);
-
- // for cloning a portion of the props when splitting the object
- //AUTOMATE
- HRESULT CloneProps([out] IPropertySetter **ppSetter,
- [in] REFERENCE_TIME rtStart,
- [in] REFERENCE_TIME rtStop);
-
- // for loading and saving programmatically
- // caller must call this in pre-sorted order, this time must be > all
- // previous times
- //AUTOMATE
- HRESULT AddProp([in] DEXTER_PARAM Param,
- [in] DEXTER_VALUE *paValue);
- //AUTOMATE
- HRESULT GetProps([out] LONG *pcParams,
- [out] DEXTER_PARAM **paParam,
- [out] DEXTER_VALUE **paValue);
- // after calling GetProps, you must call FreeProps to free resources
- //AUTOMATE
- HRESULT FreeProps([in] LONG cParams,
- [in] DEXTER_PARAM *paParam,
- [in] DEXTER_VALUE *paValue);
- // to empty to property setter, so you can start over again
- HRESULT ClearProps();
-
- // for persisting
- HRESULT SaveToBlob([out] LONG *pcSize, [out] BYTE **ppb);
- HRESULT LoadFromBlob([in] LONG cSize, [in] BYTE *pb);
-
- // to program the object that supports IDispatch with the props
- // call with rtNow == -1 to set Static Props when your object instantiates
- // errors will be logged, if a log is provided
- //AUTOMATE
- HRESULT SetProps([in] IUnknown *pTarget,
- [in] REFERENCE_TIME rtNow);
-
- // unicode version
- HRESULT PrintXMLW([out] WCHAR *pszXML, [in] int cchXML, [out] int *pcchPrinted,[in] int indent);
-};
-
-// supported by our DxtCompositor class, this allows us to draw whatever comes in
-// upon only a portion of the output bitmap
-
-[
- object,
- uuid(BB44391E-6ABD-422f-9E2E-385C9DFF51FC),
- dual,
- helpstring("IDxtCompositor Interface"),
- pointer_default(unique)
-]
-interface IDxtCompositor : IDXEffect
-{
- [propget, id(1), helpstring("property OffsetX")] HRESULT OffsetX([out, retval] long *pVal);
- [propput, id(1), helpstring("property OffsetX")] HRESULT OffsetX([in] long newVal);
- [propget, id(2), helpstring("property OffsetY")] HRESULT OffsetY([out, retval] long *pVal);
- [propput, id(2), helpstring("property OffsetY")] HRESULT OffsetY([in] long newVal);
- [propget, id(3), helpstring("property Width")] HRESULT Width([out, retval] long *pVal);
- [propput, id(3), helpstring("property Width")] HRESULT Width([in] long newVal);
- [propget, id(4), helpstring("property Height")] HRESULT Height([out, retval] long *pVal);
- [propput, id(4), helpstring("property Height")] HRESULT Height([in] long newVal);
-
- [propget, id(5), helpstring("property SrcOffsetX")] HRESULT SrcOffsetX([out, retval] long *pVal);
- [propput, id(5), helpstring("property SrcOffsetX")] HRESULT SrcOffsetX([in] long newVal);
- [propget, id(6), helpstring("property SrcOffsetY")] HRESULT SrcOffsetY([out, retval] long *pVal);
- [propput, id(6), helpstring("property SrcOffsetY")] HRESULT SrcOffsetY([in] long newVal);
- [propget, id(7), helpstring("property SrcWidth")] HRESULT SrcWidth([out, retval] long *pVal);
- [propput, id(7), helpstring("property SrcWidth")] HRESULT SrcWidth([in] long newVal);
- [propget, id(8), helpstring("property SrcHeight")] HRESULT SrcHeight([out, retval] long *pVal);
- [propput, id(8), helpstring("property SrcHeight")] HRESULT SrcHeight([in] long newVal);
-};
-
-[
- object,
- uuid(4EE9EAD9-DA4D-43d0-9383-06B90C08B12B),
- dual,
- helpstring("IDxtAlphaSetter Interface"),
- pointer_default(unique)
-]
-interface IDxtAlphaSetter : IDXEffect
-{
- // set the alpha to a particular number
- [propget, id(1), helpstring("property Alpha")] HRESULT Alpha([out, retval] long *pVal);
- [propput, id(1), helpstring("property Alpha")] HRESULT Alpha([in] long newVal);
-
- // set the alpha to a percentage of it's full value
- [propget, id(2), helpstring("property AlphaRamp")] HRESULT AlphaRamp([out, retval] double *pVal);
- [propput, id(2), helpstring("property AlphaRamp")] HRESULT AlphaRamp([in] double newVal);
-};
-
-// Supported by our JPEG DXT, that can do any wipe based on a bitmap
-//
-
-[
- object,
- uuid(DE75D011-7A65-11D2-8CEA-00A0C9441E20),
- dual,
- helpstring("IDxtJpeg Interface"),
- pointer_default(unique)
-]
-interface IDxtJpeg : IDXEffect
-{
- [propget, id(1), helpstring("property MaskNum")] HRESULT MaskNum([out, retval] long *);
- [propput, id(1), helpstring("property MaskNum")] HRESULT MaskNum([in] long);
- [propget, id(2), helpstring("property MaskName")] HRESULT MaskName([out, retval] BSTR *pVal);
- [propput, id(2), helpstring("property MaskName")] HRESULT MaskName([in] BSTR newVal);
- [propget, id(3), helpstring("property ScaleX")] HRESULT ScaleX([out, retval] double *);
- [propput, id(3), helpstring("property ScaleX")] HRESULT ScaleX([in] double);
- [propget, id(4), helpstring("property ScaleY")] HRESULT ScaleY([out, retval] double *);
- [propput, id(4), helpstring("property ScaleY")] HRESULT ScaleY([in] double);
- [propget, id(5), helpstring("property OffsetX")] HRESULT OffsetX([out, retval] long *);
- [propput, id(5), helpstring("property OffsetX")] HRESULT OffsetX([in] long);
- [propget, id(6), helpstring("property OffsetY")] HRESULT OffsetY([out, retval] long *);
- [propput, id(6), helpstring("property OffsetY")] HRESULT OffsetY([in] long);
- [propget, id(7), helpstring("property ReplicateX")] HRESULT ReplicateX([out, retval] long *pVal);
- [propput, id(7), helpstring("property ReplicateX")] HRESULT ReplicateX([in] long newVal);
- [propget, id(8), helpstring("property ReplicateY")] HRESULT ReplicateY([out, retval] long *pVal);
- [propput, id(8), helpstring("property ReplicateY")] HRESULT ReplicateY([in] long newVal);
- [propget, id(9), helpstring("property BorderColor")] HRESULT BorderColor([out, retval] long *pVal);
- [propput, id(9), helpstring("property BorderColor")] HRESULT BorderColor([in] long newVal);
- [propget, id(10), helpstring("property BorderWidth")] HRESULT BorderWidth([out, retval] long *pVal);
- [propput, id(10), helpstring("property BorderWidth")] HRESULT BorderWidth([in] long newVal);
- [propget, id(11), helpstring("property BorderSoftness")] HRESULT BorderSoftness([out, retval] long *pVal);
- [propput, id(11), helpstring("property BorderSoftness")] HRESULT BorderSoftness([in] long newVal);
- HRESULT ApplyChanges();
- HRESULT LoadDefSettings();
-};
-
- // key
- [
- object,
- uuid(3255de56-38fb-4901-b980-94b438010d7b),
- dual,
- helpstring("IDxtKey Interface"),
- pointer_default(unique)
- ]
- interface IDxtKey : IDXEffect
- {
- [propget, id(1), helpstring("property KeyType")] HRESULT KeyType([out, retval] int *);
- [propput, id(1), helpstring("property Keytype")] HRESULT KeyType([in] int);
- [propget, id(2), helpstring("property Hue")] HRESULT Hue([out, retval] int *);
- [propput, id(2), helpstring("property Hue")] HRESULT Hue([in] int );
- [propget, id(3), helpstring("property Luminance")] HRESULT Luminance([out, retval] int *);
- [propput, id(3), helpstring("property Luminance")] HRESULT Luminance([in] int );
- [propget, id(4), helpstring("property RGB")] HRESULT RGB([out, retval] DWORD *);
- [propput, id(4), helpstring("property RGB")] HRESULT RGB([in] DWORD );
- [propget, id(5), helpstring("property Similarity")] HRESULT Similarity([out,retval] int * );
- [propput, id(5), helpstring("property Similarity")] HRESULT Similarity([in] int );
- [propget, id(6), helpstring("property Invert")] HRESULT Invert([out, retval] BOOL *);
- [propput, id(6), helpstring("property Invert")] HRESULT Invert([in] BOOL);
- };
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // This little COM interface will look 'around' for the closest
- // path match for a given file. If the file already exists, then
- // this interface should hardly do anything. If it's not found,
- // it will go look for it and if successful, return S_FALSE. If it
- // cannot find the file, it will call the hook, if set and return
- // it's return code. if the hook is not set, it is in a type of
- // error condition. The Dexter-provided MediaLocator will bring up
- // a dialog box asking you to browse for your file. Other COM
- // objects may do something else.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(288581E0-66CE-11d2-918F-00C0DF10D434),
- odl,
- helpstring("IMediaLocator Interface"),
- pointer_default(unique)
-]
-interface IMediaLocator : IUnknown
-{
- // same flags as used by IRenderEngine's SetSourceNameValidation
- HRESULT FindMediaFile( BSTR Input, BSTR FilterString, BSTR * pOutput, long Flags );
- HRESULT AddFoundLocation( BSTR DirectoryName );
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // This object provides caching of duration and stream type
- // information for files that would produce a directshow source
- // filter. It takes too long to figure this out in DShow right
- // now, so this is one way around it. The way it works is that
- // you first fill out the Filename property, then call and
- // ask how many streams it has, or, set the CurrentStream prop
- // and then ask for the per-stream properties, StreamType or
- // StreamLength. They both reference the CurrentStream prop that
- // you set. I also allowed you (for convenience) to just give
- // it a IUnknown Filter that represents an IBaseFilter source
- // filter that is NOT currently in a graph. It will use that
- // instead. When using this, though, you will not get cached
- // values. The cached values are stored in the system's ini file
- // called DCBC2A70-70D8-4459-BFFA-E0D61DEA3FDF.INI. Nice, huh? :-)
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(65BD0710-24D2-4ff7-9324-ED2E5D3ABAFA),
- odl,
- helpstring("IMediaDet Interface"),
- pointer_default(unique)
-]
-interface IMediaDet : IUnknown
-{
- [propget, id(1), helpstring("property Filter")] HRESULT Filter([out, retval] IUnknown* *pVal);
- [propput, id(1), helpstring("property Filter")] HRESULT Filter([in] IUnknown* newVal);
- [propget, id(2), helpstring("property OutputStreams")] HRESULT OutputStreams([out, retval] long *pVal);
- [propget, id(3), helpstring("property CurrentStream")] HRESULT CurrentStream([out, retval] long *pVal);
- [propput, id(3), helpstring("property CurrentStream")] HRESULT CurrentStream([in] long newVal);
- [propget, id(4), helpstring("property StreamType")] HRESULT StreamType([out, retval] GUID *pVal);
- [propget, id(5), helpstring("property StreamTypeB")] HRESULT StreamTypeB([out, retval] BSTR *pVal);
- [propget, id(6), helpstring("property StreamLength")] HRESULT StreamLength([out, retval] double *pVal);
- [propget, id(7), helpstring("property Filename")] HRESULT Filename([out, retval] BSTR *pVal);
- [propput, id(7), helpstring("property Filename")] HRESULT Filename([in] BSTR newVal);
- [id(8), helpstring("method GetBitmapBits")] HRESULT GetBitmapBits(double StreamTime, long * pBufferSize, char * pBuffer, long Width, long Height);
- [id(9), helpstring("method WriteBitmapBits")] HRESULT WriteBitmapBits(double StreamTime, long Width, long Height, BSTR Filename );
- [propget, id(10), helpstring("property StreamMediaType")] HRESULT StreamMediaType([out, retval] AM_MEDIA_TYPE * pVal);
- [id(11), helpstring("method GetSampleGrabber")] HRESULT GetSampleGrabber( [out] ISampleGrabber ** ppVal );
- [propget, id(12), helpstring("property FrameRate")] HRESULT FrameRate([out, retval] double *pVal);
- [id(13), helpstring("method EnterBitmapGrabMode")] HRESULT EnterBitmapGrabMode( double SeekTime );
-};
-
-
-// useless interface, don't use it!
-
-[
- object,
- uuid(AE9472BE-B0C3-11D2-8D24-00A0C9441E20),
- odl,
- helpstring("IGrfCache Interface"),
- pointer_default(unique)
-]
-interface IGrfCache : IDispatch
-{
- [id(1), helpstring("method AddFilter")]
- HRESULT AddFilter(
- IGrfCache * ChainedCache,
- LONGLONG ID,
- const IBaseFilter * pFilter,
- LPCWSTR pName);
-
- [id(2), helpstring("method ConnectPins")]
- HRESULT ConnectPins(
- IGrfCache * ChainedCache,
- LONGLONG PinID1,
- const IPin * pPin1,
- LONGLONG PinID2,
- const IPin * pPin2);
-
- [id(3), helpstring("method SetGraph")]
- HRESULT SetGraph(const IGraphBuilder * pGraph);
-
- [id(4), helpstring("method DoConnectionsNow")]
- HRESULT DoConnectionsNow();
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // The RenderEngin builds a graph from the timeline and gives
- // you some simple positional commands.
- // explained methods:
- // SetTimelineObject - tell the render engine who to parse
- // ConnectEverything - build up a graph based on the timeline
- // ScrapIt - throw away graph and everything
- // GetFilterGraph - get the graph that's built up, if any
- // SetFilterGraph - allows you to preset the graph that's built up.
- // cannot call this if there already is a graph.
-
- // !!! the following methods are unused/not implemented
-
- // SetInterestRange - discard COM objects and memory outside of this
- // range, if possible. Used for scrubbing on a long timeline and
- // freeing up resources
- // SetRenderRange - pretend like a portion of the timeline IS the timeline
- // and don't connect anything in the graph outside of that range.
- // Commit - allocate what's necessary and get prepared to run
- // Decommit - free anything possible
- // GetCaps - find out some info about the render engine
- // DoSmartRecompression - connect compressed sources if
- // possible
- // in the graph, this will RenderPin( ) on every switcher
- // rendering pin.
- // SetSourceNameValidation - allows you to set some flags which
- // determine how source files are found, if they need to be found.
- // FilterString is a list of extensions to find for the media
- // files (see OPENFILENAME filters)
- // pOverride is a media locator you would like to use instead
- // of the built in one
- // The flags are defined in the struct immediately below.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(6BEE3A81-66C9-11d2-918F-00C0DF10D434),
- odl,
- helpstring("IRenderEngine Interface"),
- pointer_default(unique)
-]
-interface IRenderEngine : IUnknown
-{
- HRESULT SetTimelineObject( IAMTimeline * pTimeline );
- HRESULT GetTimelineObject( [out] IAMTimeline ** ppTimeline );
- HRESULT GetFilterGraph( [out] IGraphBuilder ** ppFG );
- HRESULT SetFilterGraph( IGraphBuilder * pFG );
- HRESULT SetInterestRange( REFERENCE_TIME Start, REFERENCE_TIME Stop );
- HRESULT SetInterestRange2( double Start, double Stop );
- HRESULT SetRenderRange( REFERENCE_TIME Start, REFERENCE_TIME Stop );
- HRESULT SetRenderRange2( double Start, double Stop );
- HRESULT GetGroupOutputPin( long Group, [out] IPin ** ppRenderPin );
- HRESULT ScrapIt( );
- HRESULT RenderOutputPins( );
- HRESULT GetVendorString( [out,retval] BSTR * pVendorID );
- HRESULT ConnectFrontEnd( );
- HRESULT SetSourceConnectCallback( IGrfCache * pCallback );
- HRESULT SetDynamicReconnectLevel( long Level );
- HRESULT DoSmartRecompression( );
- HRESULT UseInSmartRecompressionGraph( );
-
- HRESULT SetSourceNameValidation( BSTR FilterString, IMediaLocator * pOverride, LONG Flags );
-
- // not implemented yet
- HRESULT Commit( );
- HRESULT Decommit( );
- HRESULT GetCaps( long Index, long * pReturn );
-};
-
-[
- object,
- uuid(6BEE3A82-66C9-11d2-918F-00C0DF10D434),
- odl,
- helpstring("IRenderEngine2 Interface"),
- pointer_default(unique)
-]
-interface IRenderEngine2 : IUnknown
-{
- HRESULT SetResizerGUID( GUID ResizerGuid );
-}
-
-// used for the smart render engine when it needs to find a compressor
-[
- object,
- uuid(F03FA8DE-879A-4d59-9B2C-26BB1CF83461),
- odl,
- helpstring("IFindCompressorCB Interface"),
- pointer_default(unique)
-]
-interface IFindCompressorCB : IUnknown
-{
- HRESULT GetCompressor( AM_MEDIA_TYPE * pType, AM_MEDIA_TYPE * pCompType, [out] IBaseFilter ** ppFilter );
-}
-
-[
- object,
- uuid(F03FA8CE-879A-4d59-9B2C-26BB1CF83461),
- odl,
- helpstring("ISmartRenderEngine Interface"),
- pointer_default(unique)
-]
-interface ISmartRenderEngine : IUnknown
-{
- HRESULT SetGroupCompressor( long Group, IBaseFilter * pCompressor );
- HRESULT GetGroupCompressor( long Group, IBaseFilter ** pCompressor );
- HRESULT SetFindCompressorCB( IFindCompressorCB * pCallback );
-}
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-// TIMELINE TIMELINE TIMELINE TIMELINE TIMELINE TIMELINE
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Every object on the timeline supports at least this interface.
- // explained methods:
- // Get/SetStartStop - the timeline times at which this object is
- // active. Groups and Tracks have start times of zero.
- // FixTimes - used by the render engine. Rounds the input times
- // to the nearest FPS of the parent Group, for use in setting
- // up the big switch.
- // GetSubObject - get the sub-object which is associated with this
- // timeline object. Each timeline object can carry around a
- // pointer to 'something else'. For our Render Engine, this is
- // a pointer to a filter that gets put into a graph.
- // NOTE: Getting the subobject will FORCE it to load if it's possible
- // to force this. If you don't want it to do this, don't call
- // this function.
- // SetSubObject - see GetSubObject
- // SetSubObjectGUID - instead of giving the node a pointer, you can
- // instead give it a GUID and see if this works instead. The
- // sub-object will attempt to be instantiated when 'necessary'
- // which is really when it's asked for with GetSubObject./
- // !!! a better way to do this perhaps?
- // GetSubObjectLoaded - ask if the sub-object pointer is set
- // Get/SetTimelineType - return the major type which is stored here,
- // used by the API user and the render engine.
- // Get/SetTimelineSubType - see above
- // Get/SetUserID - get and set a number, any number
- // GetGenID - every created object has a unique number to it. Used
- // by the render engine.
- // Get/SetUserName - a storable name, for users of the API
- // Get/SetPropertySetter - the object that will set properties for this
- // object (it will support IPropertySetter and it is created by
- // CPropertySetter)
- // Get/SetUserData - gets the persistant data used by the user of
- // the API.
- // Get/SetMuted - set whether this object should be active or not.
- // Setting a parent of other objects off also turns off the
- // sub-objects.
- // Get/SetLocked - set whether you can edit this object or not.
- // Note: the timeline doesn't enforce this, it just stores
- // a value for convenience.
- // Get/SetDirtyRange -
- // RemoveAll - remove this object, and if in the tree already, all it's
- // sub objects, including children
- // Remove - remove this object, and if in the tree already, all it's
- // sub objects, but not kids
- // GetTimelineNoRef - called internally by the timeline.
- // GetGroupIBelongTo - called internally by the timeline.
- // GetEmbedDepth - find out how many tracks we are a part of
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- local,
- uuid(78530B77-61F9-11D2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineObj Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineObj : IUnknown
-{
- [helpstring("method GetStartStop")]
- HRESULT GetStartStop(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
- [helpstring("method GetStartStop2")]
- HRESULT GetStartStop2(REFTIME * pStart, REFTIME * pStop);
- [helpstring("method FixTimes")]
- HRESULT FixTimes(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
- [helpstring("method FixTimes2")]
- HRESULT FixTimes2(REFTIME * pStart, REFTIME * pStop);
- [helpstring("method SetStartStop")]
- HRESULT SetStartStop(REFERENCE_TIME Start, REFERENCE_TIME Stop);
- [helpstring("method SetStartStop2")]
- HRESULT SetStartStop2(REFTIME Start, REFTIME Stop);
- [helpstring("method GetPropertySetter")]
- HRESULT GetPropertySetter([out,retval] IPropertySetter* *pVal);
- [helpstring("method SetPropertySetter")]
- HRESULT SetPropertySetter(IPropertySetter* newVal);
- [helpstring("method GetSubObject")]
- HRESULT GetSubObject([out,retval] IUnknown* *pVal);
- [helpstring("method SetSubObject")]
- HRESULT SetSubObject(IUnknown* newVal);
- [helpstring("method SetSubObjectGUID")]
- HRESULT SetSubObjectGUID(GUID newVal);
- [helpstring("method SetSubObjectGUIDByBSTR")]
- HRESULT SetSubObjectGUIDB(BSTR newVal);
- [helpstring("method GetSubObjectGUID")]
- HRESULT GetSubObjectGUID(GUID * pVal);
- [helpstring("method GetSubObjectGUIDByBSTR")]
- HRESULT GetSubObjectGUIDB([out,retval] BSTR * pVal);
- [helpstring("method GetSubObjectLoaded")]
- HRESULT GetSubObjectLoaded(BOOL * pVal);
- [helpstring("method GetTimelineType")]
- HRESULT GetTimelineType(TIMELINE_MAJOR_TYPE * pVal);
- [helpstring("method SetTimelineType")]
- HRESULT SetTimelineType(TIMELINE_MAJOR_TYPE newVal);
- [helpstring("method GetUserID")]
- HRESULT GetUserID(long * pVal);
- [helpstring("method SetUserID")]
- HRESULT SetUserID(long newVal);
- [helpstring("method GetGenID")]
- HRESULT GetGenID( long * pVal );
- [helpstring("method GetUserName")]
- HRESULT GetUserName([out,retval] BSTR * pVal);
- [helpstring("method SetUserName")]
- HRESULT SetUserName(BSTR newVal);
- [helpstring("method GetUserData")]
- HRESULT GetUserData(BYTE * pData, long * pSize);
- [helpstring("method SetUserData")]
- HRESULT SetUserData(BYTE * pData, long Size);
- [helpstring("method GetMuted")]
- HRESULT GetMuted(BOOL * pVal);
- [helpstring("method SetMuted")]
- HRESULT SetMuted(BOOL newVal);
- [helpstring("method GetLocked")]
- HRESULT GetLocked(BOOL * pVal);
- [helpstring("method SetLocked")]
- HRESULT SetLocked(BOOL newVal);
- [helpstring("method GetDirtyRange")]
- HRESULT GetDirtyRange(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
- [helpstring("method GetDirtyRange")]
- HRESULT GetDirtyRange2(REFTIME * pStart, REFTIME * pStop);
- [helpstring("method SetDirtyRange")]
- HRESULT SetDirtyRange(REFERENCE_TIME Start, REFERENCE_TIME Stop);
- [helpstring("method SetDirtyRange")]
- HRESULT SetDirtyRange2(REFTIME Start, REFTIME Stop);
- [helpstring("method ClearDirty")]
- HRESULT ClearDirty( );
- [helpstring("method Remove")]
- HRESULT Remove();
- [helpstring("method RemoveAll")]
- HRESULT RemoveAll();
- HRESULT GetTimelineNoRef( IAMTimeline ** ppResult );
- HRESULT GetGroupIBelongTo( [out] IAMTimelineGroup ** ppGroup );
- HRESULT GetEmbedDepth( long * pVal );
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Any object on the timeline that can have an effect put on it
- // implements this interface. This includes sources, tracks, and
- // compositions.
- // explained methods:
- // EffectInsBefore - insert an effect at the given priority onto
- // this object. The effect's times will be clipped within
- // this object's bounds. Use -1 to specify 'at the end' for priority.
- // You cannot have two effects at the same priority.
- // EffectSwapPriorities - swaparoo two effects. Makes undo easier to
- // implement.
- // EffectGetCount - get how many effects are applied to this object.
- // GetEffect - get the nth effect applied to this object
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-[
- object,
- uuid(EAE58537-622E-11d2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineEffectable Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineEffectable : IUnknown
-{
- [helpstring("method EffectInsBefore")]
- HRESULT EffectInsBefore(IAMTimelineObj * pFX, long priority);
- [helpstring("method EffectSwapPriorities")]
- HRESULT EffectSwapPriorities(long PriorityA, long PriorityB);
- [helpstring("method EffectGetCount")]
- HRESULT EffectGetCount(long * pCount);
- [helpstring("method GetEffect")]
- HRESULT GetEffect([out] IAMTimelineObj ** ppFx, long Which);
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Any effect on the timeline will support at least this interface.
- // NOTE: The Start/Stop times on this object are RELATIVE to their
- // parent's, as are all start/stop times.
- // explained methods:
- // EffectGetPriority - finds out this effect's priority related to the others.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(BCE0C264-622D-11d2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineEffect Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineEffect : IUnknown
-{
- [helpstring("method EffectGetPriority")]
- HRESULT EffectGetPriority(long * pVal);
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Any object on the timeline that can have a transition put on it
- // implements this interface
- // explained methods:
- // TransAdd - add a transition on this object. Multiple trans's on
- // the same object cannot overlap in time. Transitions' times
- // must lie within the bounds of their parent.
- // TransGetCount - get how many transitions are applied to this
- // object.
- // GetNextTrans - given a time, get the next transition that happens
- // on this object after that time. On exit, the input time is
- // set to the start time of the transition.
- // GetTransAtTime - find a transition forwards or backwards from
- // a given spot. See DEXTERF_TRACK_SEARCH_FLAGS enum.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(378FA386-622E-11d2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineTransable Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineTransable : IUnknown
-{
- [helpstring("method TransAdd")]
- HRESULT TransAdd(IAMTimelineObj * pTrans);
- [helpstring("method TransGetCount")]
- HRESULT TransGetCount(long * pCount);
- [helpstring("method GetNextTrans")]
- HRESULT GetNextTrans([out] IAMTimelineObj ** ppTrans, REFERENCE_TIME * pInOut);
- [helpstring("method GetNextTrans2")]
- HRESULT GetNextTrans2([out] IAMTimelineObj ** ppTrans, REFTIME * pInOut);
- [helpstring("method GetTransAtTime")]
- HRESULT GetTransAtTime(
- [out] IAMTimelineObj ** ppObj,
- REFERENCE_TIME Time,
- long SearchDirection );
- [helpstring("method GetTransAtTime2")]
- HRESULT GetTransAtTime2([out] IAMTimelineObj ** ppObj, REFTIME Time, long SearchDirection );
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Any object on the timeline that can be split into two will
- // implement this interface. Namely, source, effects, and transitions
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(A0F840A0-D590-11d2-8D55-00A0C9441E20),
- odl,
- helpstring("IAMTimelineSplittable Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineSplittable : IUnknown
-{
- HRESULT SplitAt(REFERENCE_TIME Time);
- HRESULT SplitAt2(REFTIME Time);
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Any trans on the timeline will support at least this interface.
- // NOTE: The Start/Stop times on this object are RELATIVE to their
- // parent's, as are all start/stop times.
- // explained methods:
- // GetCutPoint - get where this transition should cut from A to B
- // if the transition were not applied.
- // GetA2B - get if this transition is to go from A->B or B->A.
- // GetBackwards - get if this transition should run backwards.
- // GetCutsOnly - force no transition, force doing a cut
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(BCE0C265-622D-11d2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineTrans Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineTrans : IUnknown
-{
- [helpstring("method GetCutPoint")]
- HRESULT GetCutPoint(REFERENCE_TIME * pTLTime);
- [helpstring("method GetCutPoint2")]
- HRESULT GetCutPoint2(REFTIME * pTLTime);
- [helpstring("method SetCutPoint")]
- HRESULT SetCutPoint(REFERENCE_TIME TLTime);
- [helpstring("method SetCutPoint2")]
- HRESULT SetCutPoint2(REFTIME TLTime);
- [helpstring("method GetSwapInputs")]
- HRESULT GetSwapInputs( BOOL * pVal );
- [helpstring("method SetSwapInputs")]
- HRESULT SetSwapInputs( BOOL pVal );
- [helpstring("method GetCutsOnly")]
- HRESULT GetCutsOnly( BOOL * pVal );
- [helpstring("method SetCutsOnly")]
- HRESULT SetCutsOnly( BOOL pVal );
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Sources represent any source media object on the timeline.
- // They extend an IAMTimelineObj to include media start and stop
- // times, a media name (which could represent darned near anything),
- // and a StreamNumber, which defines which stream out of a potential
- // many this stream represents from a source clip.
- // explained methods:
- // ModifyStopTime - like calling SetStartStop, but this method just
- // adjusts the tail end of the clip.
- // FixMediaTimes - called by the render engine to round times to
- // this source clip's parent group's FPS.
- // SpliceWithNext - if the next clip after this is the same source
- // and this's stop time matches next's start time, the two
- // will be joined.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(78530B79-61F9-11D2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineSrc Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineSrc : IUnknown
-{
- [helpstring("method GetMediaTimes")]
- HRESULT GetMediaTimes(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
- [helpstring("method GetMediaTimes2")]
- HRESULT GetMediaTimes2(REFTIME * pStart, REFTIME * pStop);
- [helpstring("method ModifyStopTime")]
- HRESULT ModifyStopTime(REFERENCE_TIME Stop);
- [helpstring("method ModifyStopTime2")]
- HRESULT ModifyStopTime2(REFTIME Stop);
- [helpstring("method FixMediaTimes")]
- HRESULT FixMediaTimes(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
- [helpstring("method FixMediaTimes2")]
- HRESULT FixMediaTimes2(REFTIME * pStart, REFTIME * pStop);
- [helpstring("method SetMediaTimes")]
- HRESULT SetMediaTimes(REFERENCE_TIME Start, REFERENCE_TIME Stop);
- [helpstring("method SetMediaTimes2")]
- HRESULT SetMediaTimes2(REFTIME Start, REFTIME Stop);
- [helpstring("method SetMediaLength")]
- HRESULT SetMediaLength(REFERENCE_TIME Length);
- [helpstring("method SetMediaLength2")]
- HRESULT SetMediaLength2(REFTIME Length);
- [helpstring("method GetMediaLength")]
- HRESULT GetMediaLength(REFERENCE_TIME * pLength);
- [helpstring("method GetMediaLength2")]
- HRESULT GetMediaLength2(REFTIME * pLength);
- [helpstring("method GetMediaName")]
- HRESULT GetMediaName([out,retval] BSTR * pVal);
- [helpstring("method SetMediaName")]
- HRESULT SetMediaName(BSTR newVal);
- [helpstring("method SpliceWithNext")]
- HRESULT SpliceWithNext(IAMTimelineObj * pNext);
- [helpstring("method GetStreamNumber")]
- HRESULT GetStreamNumber(long * pVal);
- [helpstring("method SetStreamNumber")]
- HRESULT SetStreamNumber(long Val);
- HRESULT IsNormalRate( BOOL * pVal );
-
- // If a source can't figure out its frames per second, this number
- // will be used (eg: Dib sequences). AVI, MPEG, etc. will not need this
- // Use 0 fps to prevent a filename like "ski4.jpg" from using a dib seq
- [helpstring("method GetDefaultFPS")]
- HRESULT GetDefaultFPS(double * pFPS);
- [helpstring("method SetDefaultFPS")]
- HRESULT SetDefaultFPS(double FPS);
-
- // !!! This is video specific.. new interface?
- // what kind of stretching? Stretch, crop, or preserve aspect ratio?
- [helpstring("method GetStretchMode")]
- HRESULT GetStretchMode(int * pnStretchMode);
- [helpstring("method SetStretchMode")]
- HRESULT SetStretchMode(int nStretchMode);
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Tracks are things that can contain media in them. You can add
- // and remove sources, effects, and transitions from them. Sources
- // are added according to the current insert mode of the timeline.
- // If in OVERLAY mode, moving or adding a source to a time that's
- // already occupied by another source will wipe out any overlapping
- // portion of the underlying source. In InsertMode, everything at
- // the insert point is moved down in time to make room for the
- // new source.
- // explained methods:
- // SrcAdd - add the source to this track. The source's start/stop
- // times must be set up first.
- // GetNextSrc - pass a time in at which you wish to find a source
- // and it will return the first source which occurs after the
- // given time.
- // MoveEverythingBy - bump a bunch of objects a certain direction
- // on the track by a given time.
- // GetSourcesCount - how many sources are on this track?
- // AreYouBlank - do you contain anything at all?
- // GetSrcAtTime - find a source at a given time. SearchDirection
- // is which way to search. -1 = backwards, 1 = forwards
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(EAE58538-622E-11d2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineTrack Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineTrack : IUnknown
-{
- [helpstring("method SrcAdd")]
- HRESULT SrcAdd(IAMTimelineObj * pSource);
- [helpstring("method GetNextSrc")]
- HRESULT GetNextSrc([out] IAMTimelineObj ** ppSrc, REFERENCE_TIME * pInOut);
- [helpstring("method GetNextSrc2")]
- HRESULT GetNextSrc2([out] IAMTimelineObj ** ppSrc, REFTIME * pInOut);
- [helpstring("method MoveEverythingBy")]
- HRESULT MoveEverythingBy( REFERENCE_TIME Start, REFERENCE_TIME MoveBy );
- [helpstring("method MoveEverythingBy2")]
- HRESULT MoveEverythingBy2( REFTIME Start, REFTIME MoveBy );
- [helpstring("method GetSourcesCount")]
- HRESULT GetSourcesCount( long * pVal );
- [helpstring("method AreYouBlank")]
- HRESULT AreYouBlank( long * pVal );
- [helpstring("method GetSrcAtTime")]
- HRESULT GetSrcAtTime(
- [out] IAMTimelineObj ** ppSrc,
- REFERENCE_TIME Time,
- long SearchDirection );
- [helpstring("method GetSrcAtTime2")]
- HRESULT GetSrcAtTime2([out] IAMTimelineObj ** ppSrc, REFTIME Time, long SearchDirection );
- HRESULT InsertSpace( REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd );
- HRESULT InsertSpace2( REFTIME rtStart, REFTIME rtEnd );
- HRESULT ZeroBetween( REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd );
- HRESULT ZeroBetween2( REFTIME rtStart, REFTIME rtEnd );
- HRESULT GetNextSrcEx(IAMTimelineObj * pLast, [out] IAMTimelineObj **ppNext);
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // This virtual track interface is shared by both the compositions
- // and tracks (and groups).
- // explained methods:
- // TrackGetPriority - used by rendering objects which need to know this.
- // SetTrackDirty - !!! not sure if this is useful.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(A8ED5F80-C2C7-11d2-8D39-00A0C9441E20),
- odl,
- helpstring("IAMTimelineVirtualTrack Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineVirtualTrack : IUnknown
-{
- [helpstring("method TrackGetPriority")]
- HRESULT TrackGetPriority(long * pPriority);
- [helpstring("method SetTrackDirty")]
- HRESULT SetTrackDirty( );
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Compositions are like tracks in the sense that they also
- // implement IAMVirtualTrack and you can put transitions and effects
- // on them, but they really are the SUM of those tracks that they
- // contain. They are "embedded" compositions. They should only contain
- // media of one particular type (like all video or all audio), but
- // this is not enforced. You can add a composition to another
- // composition with VTrackInsBefore, just like you can add a track.
- // The very top composition to which all other comps and tracks belong
- // is a Group, which supports I-AMTimelineGroup as well as I-AMTimelineComp.
- // explained methods:
- // VTrackInsBefore - does NOT mean VideoTrack. Means Virtual Track.
- // Adds a virtual track to a composition at a given priority.
- // use -1 to mean "at the end"
- // VTrackSwapPriorities - switch two vtracks around.
- // VTrackGetCount - get how many vtracks this comp contains.
- // GetVTrack - you get the idea
- // GetCountOfType - Get the total number of these objects this comp
- // and all it's vtracks (recursively) contains. !!! this may be dead.
- // GetRecursiveLayerOfType - given a number, returns a given track. This
- // is done recursively. You need to pass in a pointer to the number,
- // and it will be modified upon exit to an unknown value. DO NOT
- // CALL THE VERSION WITH THE POINTER!
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(EAE58536-622E-11d2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimelineComp Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineComp : IUnknown
-{
- [helpstring("method VTrackInsBefore")]
- HRESULT VTrackInsBefore(IAMTimelineObj * pVirtualTrack, long Priority);
- [helpstring("method VTrackSwapPriorities")]
- HRESULT VTrackSwapPriorities(long VirtualTrackA, long VirtualTrackB);
- [helpstring("method VTrackGetCount")]
- HRESULT VTrackGetCount(long * pVal);
- [helpstring("method GetVTrack")]
- HRESULT GetVTrack([out] IAMTimelineObj ** ppVirtualTrack, long Which);
- [helpstring("method GetCountOfType")]
- HRESULT GetCountOfType(long * pVal, long * pValWithComps, TIMELINE_MAJOR_TYPE MajorType );
- [helpstring("method GetRecursiveLayerOfType")]
- HRESULT GetRecursiveLayerOfType(
- [out] IAMTimelineObj ** ppVirtualTrack,
- long WhichLayer,
- TIMELINE_MAJOR_TYPE Type);
- [helpstring("method GetRecursiveLayerOfTypeI (do not call)")]
- HRESULT GetRecursiveLayerOfTypeI(
- [out] IAMTimelineObj ** ppVirtualTrack,
- [in,out] long * pWhichLayer,
- TIMELINE_MAJOR_TYPE Type);
- HRESULT GetNextVTrack(IAMTimelineObj *pVirtualTrack, [out] IAMTimelineObj **ppNextVirtualTrack);
-};
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Groups represent the topmost composition in a timeline. Every
- // group should contain media of only one major type (like all video).
- // The timeline can contain multiple groups, see it's interface for
- // this. Each group has a particular "media type" that you can get/set
- // which help identify it. Each group has an associated FPS which
- // is used by the render engine in setting up the big switch. All
- // cuts on the timeline will happen rounded to this nearest FPS for
- // this particular group. Each group has a priority which enables
- // writing out multiple-stream files with 1 or more streams of the
- // same type. (Like a 2 video stream AVI file).
- // explained methods:
- // SetTimeline - this is called internally when the group is added.
- // Do not call this.
- // GetTimeline - get the timeline this group belongs to.
- // GetPriority - get this group's priority
- // Get/SetOutputFPS - explained above
- // SetMediaTypeForVB - method for VB. Pass in 0 for video, 1 for audio
- // SetRecompFormatFromSource - set the recompress format based on the
- // source that's loaded or set in the IAMTimelineSrc
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434),
- odl,
- helpstring("IAMTimelineGroup Interface"),
- pointer_default(unique)
-]
-interface IAMTimelineGroup : IUnknown
-{
- [helpstring("method SetTimeline")]
- HRESULT SetTimeline( IAMTimeline * pTimeline );
- [helpstring("method GetTimeline")]
- HRESULT GetTimeline( [out] IAMTimeline ** ppTimeline );
- [helpstring("method GetPriority")]
- HRESULT GetPriority( long * pPriority );
- [helpstring("method GetMediaType")]
- HRESULT GetMediaType([out] AM_MEDIA_TYPE *);
- [helpstring("method SetMediaType")]
- HRESULT SetMediaType([in] AM_MEDIA_TYPE *);
- [helpstring("method SetOutputFPS")]
- HRESULT SetOutputFPS(double FPS);
- [helpstring("method GetOutputFPS")]
- HRESULT GetOutputFPS(double * pFPS);
- [helpstring("method SetGroupName")]
- HRESULT SetGroupName( BSTR pGroupName );
- [helpstring("method GetGroupName")]
- HRESULT GetGroupName( [out,retval] BSTR * pGroupName );
- // in preview mode, skip frames. In authoring mode, don't
- [helpstring("method SetPreviewMode")]
- HRESULT SetPreviewMode( BOOL fPreview );
- [helpstring("method GetPreviewMode")]
- HRESULT GetPreviewMode( BOOL *pfPreview );
- [helpstring("method SetMediaTypeForVB")]
- HRESULT SetMediaTypeForVB([in] long Val );
- // how many frames ahead switch can run
- [helpstring("method GetOutputBuffering")]
- HRESULT GetOutputBuffering([out] int *pnBuffer );
- [helpstring("method SetOutputBuffering")]
- HRESULT SetOutputBuffering([in] int nBuffer );
-
- HRESULT SetSmartRecompressFormat( long * pFormat );
- HRESULT GetSmartRecompressFormat( long ** ppFormat );
- HRESULT IsSmartRecompressFormatSet( BOOL * pVal );
- HRESULT IsRecompressFormatDirty( BOOL * pVal );
- HRESULT ClearRecompressFormatDirty( );
- HRESULT SetRecompFormatFromSource( IAMTimelineSrc * pSource );
-};
-
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // The main timeline. This is the base object you use to set
- // properties of the timeline as a whole, and to create blank
- // objects for use within the timeline. You cannot create the
- // objects using COM methods, you must go through the timeline to
- // create this. That's because certain information is set before
- // handing the object back to you. Every object created by the
- // timeline will support at LEAST IAMTimelineObj. For any timeline,
- // it can have one or more "groups" that it knows about. Each group
- // has the capability to hold a complete sub-tree containing media
- // that is all of one type. This logical seperation is used for the
- // rendering engine, but is not strictly enforced.
- // explained methods:
- // CreateEmptyNode - pass in a mid type and it will pass back
- // an object of the type you requested.
- // AddGroup - add a created group to the tree
- // RemGroupFromList - make sure timeline no longer knows about this group.
- // does NOT do anything to the group itself. Normally the user
- // does not want to call this, it's called from the Group's Remove( ) method.
- // GetGroup - get a certain group
- // GetGroupCount - get how many groups
- // ClearAllGroups - clear everything
- // GetInsertMode - ask what the insert mode is, overlay or insert
- // SetInsertMode - set whether to insert or overlay
- // EnableTransitions - turn transitions on or off as a whole
- // EnableEffects - same deal.
- // SetIntererstRange - discard sub-objects outside of a given
- // time range, to save memory/resources
- // Get/SetDefaultFPS - set the 'default' FPS for this timeline,
- // the RenderEngine reads this information for setting itself up
- // by default.
- // GetCountOfType - ask for how many of a given thing are in a given
- // group. !!! this may be a useless function.
- // !!! not implemented
- // IsDirty - asks if anything in the timeline needs to be redrawn
- // GetDirtyRange - same deal
- // ValidateSourceNames - make sure the filenames in the sources
- // really exist. Use the same enum flags as the render engine
- // uses for SetSourceNameValidation. Source's filenames will be
- // changed to those of the found ones in the timeline.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-[
- object,
- uuid(78530B74-61F9-11D2-8CAD-00A024580902),
- odl,
- helpstring("IAMTimeline Interface"),
- pointer_default(unique)
-]
-interface IAMTimeline : IUnknown
-{
- [helpstring("method CreateEmptyNode")]
- HRESULT CreateEmptyNode([out] IAMTimelineObj ** ppObj, TIMELINE_MAJOR_TYPE Type );
- HRESULT AddGroup( IAMTimelineObj * pGroup );
- HRESULT RemGroupFromList( IAMTimelineObj * pGroup );
- HRESULT GetGroup( [out] IAMTimelineObj ** ppGroup, long WhichGroup );
- HRESULT GetGroupCount( long * pCount );
- HRESULT ClearAllGroups( );
- HRESULT GetInsertMode( long * pMode );
- [helpstring("method SetInsertMode")]
- HRESULT SetInsertMode(long Mode);
- [helpstring("method EnableTransitions")]
- HRESULT EnableTransitions(BOOL fEnabled);
- [helpstring("method TransitionsEnabled")]
- HRESULT TransitionsEnabled(BOOL * pfEnabled);
- [helpstring("method EnableEffects")]
- HRESULT EnableEffects(BOOL fEnabled);
- [helpstring("method EffectsEnabled")]
- HRESULT EffectsEnabled(BOOL * pfEnabled);
- [helpstring("method SetInterestRange")]
- HRESULT SetInterestRange(REFERENCE_TIME Start, REFERENCE_TIME Stop);
- [helpstring("method GetDuration")]
- HRESULT GetDuration(REFERENCE_TIME * pDuration);
- [helpstring("method GetDuration2")]
- HRESULT GetDuration2(double * pDuration);
- [helpstring("method SetDefaultFPS")]
- HRESULT SetDefaultFPS(double FPS);
- [helpstring("method GetDefaultFPS")]
- HRESULT GetDefaultFPS(double * pFPS);
- [helpstring("method IsDirty")]
- HRESULT IsDirty(BOOL * pDirty);
- [helpstring("method GetDirtyRange")]
- HRESULT GetDirtyRange(REFERENCE_TIME * pStart, REFERENCE_TIME * pStop);
- [helpstring("method GetCountOfType")]
- HRESULT GetCountOfType(long Group, long * pVal, long * pValWithComps, TIMELINE_MAJOR_TYPE MajorType );
- HRESULT ValidateSourceNames( long ValidateFlags, IMediaLocator * pOverride, LONG_PTR NotifyEventHandle );
-
- HRESULT SetDefaultTransition( GUID * pGuid );
- HRESULT GetDefaultTransition( GUID * pGuid );
- HRESULT SetDefaultEffect( GUID * pGuid );
- HRESULT GetDefaultEffect( GUID * pGuid );
- HRESULT SetDefaultTransitionB( BSTR pGuid );
- HRESULT GetDefaultTransitionB( [out,retval] BSTR * pGuid );
- HRESULT SetDefaultEffectB( BSTR pGuid );
- HRESULT GetDefaultEffectB( [out,retval] BSTR * pGuid );
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-// XML STUFF --- XML STUFF --- XML STUFF --- XML STUFF --- XML
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// Xml2Dex - converts back and forth between XML and a dexter project
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-[
- object,
- uuid(18C628ED-962A-11D2-8D08-00A0C9441E20),
- odl,
- helpstring("IXml2Dex Interface"),
- pointer_default(unique)
-]
-interface IXml2Dex : IDispatch
-{
- [id(1), helpstring("method CreateGraphFromFile")]
- HRESULT CreateGraphFromFile([out] IUnknown ** ppGraph, IUnknown * pTimeline, BSTR Filename);
- [id(2), helpstring("method WriteGrfFile")]
- HRESULT WriteGrfFile(IUnknown * pGraph, BSTR FileName);
- [id(3), helpstring("method WriteXMLFile")]
- HRESULT WriteXMLFile(IUnknown * pTimeline, BSTR FileName);
- [id(5), helpstring("method ReadXMLFile")]
- HRESULT ReadXMLFile(IUnknown *pTimeline, BSTR XMLName);
- [id(6), helpstring("method Delete")]
- HRESULT Delete(IUnknown *pTimeline, double dStart, double dEnd);
- [id(7), helpstring("method WriteXMLPart")]
- HRESULT WriteXMLPart(IUnknown * pTimeline, double dStart, double dEnd, BSTR FileName);
- [id(8), helpstring("method PasteXMLFile")]
- HRESULT PasteXMLFile(IUnknown * pTimeline, double dStart, BSTR FileName);
- [id(9), helpstring("method CopyXML")]
- HRESULT CopyXML(IUnknown * pTimeline, double dStart, double dEnd);
- [id(10), helpstring("method PasteXML")]
- HRESULT PasteXML(IUnknown * pTimeline, double dStart);
- [id(11), helpstring("method Reset")]
- HRESULT Reset( );
- [id(12), helpstring("method ReadXML")]
- HRESULT ReadXML(IUnknown *pTimeline, IUnknown *pXML);
- [id(13), helpstring("method WriteXML")]
- HRESULT WriteXML(IUnknown *pTimeline, BSTR *pbstrXML);
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-// USEFUL HELPER INTERFACES
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// IAMErrorLog - an interface that receives error information from
-// a timeline or a render engine.
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-[
- object,
- uuid(E43E73A2-0EFA-11d3-9601-00A0C9441E20),
- odl,
- helpstring("IAMErrorLog Interface"),
- pointer_default(unique)
-]
-interface IAMErrorLog : IUnknown
-{
- [helpstring("method LogError")] HRESULT LogError(long Severity, BSTR pErrorString, long ErrorCode, long hresult, [in] VARIANT * pExtraInfo );
-};
-
-[
- object,
- uuid(963566DA-BE21-4eaf-88E9-35704F8F52A1),
- odl,
- helpstring("IAMSetErrorLog Interface"),
- pointer_default(unique)
-]
-interface IAMSetErrorLog : IUnknown
-{
- [propget, helpstring("property ErrorLog")] HRESULT ErrorLog([out, retval] IAMErrorLog * *pVal);
- [propput, helpstring("property ErrorLog")] HRESULT ErrorLog([in] IAMErrorLog * newVal);
-};
-
-[
- object,
- uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
- local,
- helpstring("ISampleGrabberCB Interface"),
- pointer_default(unique)
-]
-interface ISampleGrabberCB : IUnknown
-{
- HRESULT SampleCB( double SampleTime, IMediaSample * pSample );
- HRESULT BufferCB( double SampleTime, BYTE * pBuffer, long BufferLen );
-}
-
-[
- object,
- uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F),
- local,
- helpstring("ISampleGrabber Interface"),
- pointer_default(unique)
-]
-interface ISampleGrabber: IUnknown
-{
- // set this to have the filter immediate stop after
- // garnishing a sample
- //
- HRESULT SetOneShot( BOOL OneShot );
-
- // set what media type we connect to. It can be partially
- // specified by setting only the major type, OR the major and
- // subtype, OR major, subtype, and the formattype.
- //
- HRESULT SetMediaType( const AM_MEDIA_TYPE * pType );
-
- // after something's connected to this filter, find out
- // what it is
- //
- HRESULT GetConnectedMediaType( AM_MEDIA_TYPE * pType );
-
- // call this to buffer incoming samples, so the next two methods will work
- // If this is not called, the next two methods will return
- // E_INVALIDARG
- //
- HRESULT SetBufferSamples( BOOL BufferThem );
-
- // pass in NULL for pBuffer to get out the buffer size you need to
- // allocate. This will NOT return a pointer to a compressed dib
- // any longer! It will return the IMediaSample's GetPointer buffer.
- //
- HRESULT GetCurrentBuffer( [in,out] long * pBufferSize, [out] long * pBuffer );
-
- // return the currently buffered sample
- //
- HRESULT GetCurrentSample( [out,retval] IMediaSample ** ppSample );
-
- // if this callback is set, then it will be called for
- // every sample passing through the filter. Do not take a long time
- // in the callback for smooth playback (obviously!)
- //
- HRESULT SetCallback( ISampleGrabberCB * pCallback, long WhichMethodToCallback );
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-// THE LIBRARY ITSELF
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-
-[
- uuid(78530B68-61F9-11D2-8CAD-00A024580902),
- version(1.0),
- helpstring("Dexter 1.0 Type Library")
-]
-library DexterLib
-{
- importlib("stdole2.tlb");
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // resize the input video to an output size, for uniformity within DES.
- // DES will set the output media type and probably also put_Size. By setting
- // the output media type, DES is stating the resizer must produce only that
- // media type on the output pin, unless it is succeeded by a put_Size call.
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- [
- object,
- uuid(4ada63a0-72d5-11d2-952a-0060081840bc),
- odl,
- helpstring("IResize Interface"),
- pointer_default(unique)
- ]
- interface IResize : IUnknown
- {
- HRESULT get_Size([out] int *piHeight, [out] int *piWidth, [out] long *pFlag);
- HRESULT get_InputSize([out] int *piHeight, [out] int *piWidth);
- HRESULT put_Size([in] int Height, [in] int Width, [in] long Flag);
- HRESULT get_MediaType([out] AM_MEDIA_TYPE *pmt);
- HRESULT put_MediaType([in] const AM_MEDIA_TYPE *pmt);
- };
-
- [
- uuid(78530B75-61F9-11D2-8CAD-00A024580902),
- helpstring("AMTimeline Class")
- ]
- coclass AMTimeline
- {
- [default] interface IAMTimeline;
- interface IPersistStream;
- interface IAMSetErrorLog;
- };
-
- [
- uuid(78530B78-61F9-11D2-8CAD-00A024580902),
- helpstring("IAMTimelineObj Class")
- ]
- coclass AMTimelineObj
- {
- [default] interface IAMTimelineObj;
- };
-
- [
- uuid(78530B7A-61F9-11D2-8CAD-00A024580902),
- helpstring("IAMTimelineSrc Class")
- ]
- coclass AMTimelineSrc
- {
- [default] interface IAMTimelineSrc;
- interface IAMTimelineObj;
- interface IAMTimelineEffectable;
- interface IAMTimelineSplittable;
- };
-
- [
- uuid(8F6C3C50-897B-11d2-8CFB-00A0C9441E20),
- ]
- coclass AMTimelineTrack
- {
- [default] interface IAMTimelineTrack;
- interface IAMTimelineObj;
- interface IAMTimelineEffectable;
- interface IAMTimelineTransable;
- interface IAMTimelineVirtualTrack;
- interface IAMTimelineSplittable;
- };
-
- [
- uuid(74D2EC80-6233-11d2-8CAD-00A024580902),
- ]
- coclass AMTimelineComp
- {
- [default] interface IAMTimelineComp;
- interface IAMTimelineObj;
- interface IAMTimelineEffectable;
- interface IAMTimelineTransable;
- interface IAMTimelineVirtualTrack;
- };
-
- [
- uuid(F6D371E1-B8A6-11d2-8023-00C0DF10D434),
- ]
- coclass AMTimelineGroup
- {
- [default] interface IAMTimelineGroup;
- interface IAMTimelineComp;
- interface IAMTimelineObj;
- };
-
- [
- uuid(74D2EC81-6233-11d2-8CAD-00A024580902),
- ]
- coclass AMTimelineTrans
- {
- [default] interface IAMTimelineTrans;
- interface IAMTimelineObj;
- interface IAMTimelineSplittable;
- };
-
- [
- uuid(74D2EC82-6233-11d2-8CAD-00A024580902),
- ]
- coclass AMTimelineEffect
- {
- [default] interface IAMTimelineEffect;
- interface IAMTimelineObj;
- interface IAMTimelineSplittable;
- interface IPropertyBag;
- };
-
- [
- uuid(64D8A8E0-80A2-11d2-8CF3-00A0C9441E20),
- ]
- coclass RenderEngine
- {
- [default] interface IRenderEngine;
- interface IRenderEngine2;
- interface IAMSetErrorLog;
- };
-
- [
- uuid(498B0949-BBE9-4072-98BE-6CCAEB79DC6F),
- ]
- coclass SmartRenderEngine
- {
- [default] interface IRenderEngine;
- interface ISmartRenderEngine;
- interface IAMSetErrorLog;
- };
-
- [
- uuid(036A9790-C153-11d2-9EF7-006008039E37),
- ]
- coclass AudMixer
- {
- [default] interface IBaseFilter;
- };
-
- [
- uuid(18C628EE-962A-11D2-8D08-00A0C9441E20),
- helpstring("Xml2Dex Class")
- ]
- coclass Xml2Dex
- {
- [default] interface IXml2Dex;
- };
-
- [
- uuid(CC1101F2-79DC-11D2-8CE6-00A0C9441E20),
- helpstring("MediaLocator Class")
- ]
- coclass MediaLocator
- {
- [default] interface IMediaLocator;
- };
-
- [
- uuid(ADF95821-DED7-11d2-ACBE-0080C75E246E),
- helpstring("Varying Property Holder")
- ]
- coclass PropertySetter
- {
- [default] interface IPropertySetter;
- interface IAMSetErrorLog;
- };
-
- [
- uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA),
- helpstring("MediaDet Class")
- ]
- coclass MediaDet
- {
- [default] interface IMediaDet;
- };
-
- [
- uuid(C1F400A0-3F08-11d3-9F0B-006008039E37),
- helpstring("MsGrab Class")
- ]
- coclass SampleGrabber
- {
- [default] interface ISampleGrabber;
- };
-
- // useful for movie maker and other people
- [
- uuid(C1F400A4-3F08-11d3-9F0B-006008039E37),
- helpstring("NullRenderer Class")
- ]
- coclass NullRenderer
- {
- [default] interface IBaseFilter;
- };
-
- [
- uuid(BB44391D-6ABD-422f-9E2E-385C9DFF51FC),
- helpstring("DxtCompositor Class")
- ]
- coclass DxtCompositor
- {
- [default] interface IDxtCompositor;
- };
-
- [
- uuid(506D89AE-909A-44f7-9444-ABD575896E35),
- helpstring("DxtAlphaSetter Class")
- ]
- coclass DxtAlphaSetter
- {
- [default] interface IDxtAlphaSetter;
- };
-
- [
- uuid(DE75D012-7A65-11D2-8CEA-00A0C9441E20),
- helpstring("SMPTE wipe DXT")
- ]
- coclass DxtJpeg
- {
- [default] interface IDxtJpeg;
- };
-
- [
- uuid(0cfdd070-581a-11d2-9ee6-006008039e37),
- ]
- coclass ColorSource
- {
- [default] interface IBaseFilter;
- };
-
- [
- uuid(C5B19592-145E-11d3-9F04-006008039E37),
- helpstring("DxtKey Class")
- ]
- coclass DxtKey
- {
- [default] interface IDxtKey;
- };
-};
-
-// these are some error codes that we can/will return
-enum
-{
- E_NOTINTREE = 0x80040400,
- E_RENDER_ENGINE_IS_BROKEN = 0x80040401,
- E_MUST_INIT_RENDERER = 0x80040402,
- E_NOTDETERMINED = 0x80040403,
- E_NO_TIMELINE = 0x80040404,
- S_WARN_OUTPUTRESET = 40404
-};
-
-// These codes are given to the app in IAMErrorLog to help identify what went wrong
-
-// Filename doesn't exist, or DShow doesn't recognize the filetype
-// EXTRA - filename
-cpp_quote("#define DEX_IDS_BAD_SOURCE_NAME 1400")
-
-// Filename doesn't exist or contains unknown data
-// EXTRA - filename (maybe no codec?)
-cpp_quote("#define DEX_IDS_BAD_SOURCE_NAME2 1401")
-
-// filename was required, but wasn't given
-cpp_quote("#define DEX_IDS_MISSING_SOURCE_NAME 1402")
-
-// cannot parse data provided by this source
-// !!! what source?
-cpp_quote("#define DEX_IDS_UNKNOWN_SOURCE 1403")
-
-// unexpected error - some DShow component not installed correctly
-cpp_quote("#define DEX_IDS_INSTALL_PROBLEM 1404")
-
-// Source filter does not accept filenames
-// !!! What source?
-cpp_quote("#define DEX_IDS_NO_SOURCE_NAMES 1405")
-
-// The group's mediatype is not supported
-// EXTRA - gives you an integer group number
-cpp_quote("#define DEX_IDS_BAD_MEDIATYPE 1406")
-
-// Invalid stream number for a source
-// EXTRA - gives the stream number !!! should identify which source!
-cpp_quote("#define DEX_IDS_STREAM_NUMBER 1407")
-
-// You ran out of memory
-cpp_quote("#define DEX_IDS_OUTOFMEMORY 1408")
-
-// One bitmap in a sequence was not the same type as the others
-// EXTRA - gives the bitmap name
-cpp_quote("#define DEX_IDS_DIBSEQ_NOTALLSAME 1409")
-
-// Clip's mediatimes are invalid, or DibSeq too short, or a previous error caused this
-// !!! Needs to give the clip name
-cpp_quote("#define DEX_IDS_CLIPTOOSHORT 1410")
-
-// Clsid of FX/Transition is not a DirectX Transform
-// EXTRA - gives the CLSID
-cpp_quote("#define DEX_IDS_INVALID_DXT 1411")
-
-// Default FX/Transition Clsid is not a DirectX Transform"
-// EXTRA - gives the CLSID
-cpp_quote("#define DEX_IDS_INVALID_DEFAULT_DXT 1412")
-
-// Your version of DX doesn't support 3D transforms"
-// EXTRA - gives the CLSID of the 3D transform you tried to use
-cpp_quote("#define DEX_IDS_NO_3D 1413")
-
-// This DirectX Transform is not the right kind, or is broken
-// EXTRA - gives the CLSID of the broken transform
-cpp_quote("#define DEX_IDS_BROKEN_DXT 1414")
-
-// No such property exists on an object
-// EXTRA - gives the name of the property (if given as a string)
-cpp_quote("#define DEX_IDS_NO_SUCH_PROPERTY 1415")
-
-// Illegal value for a property
-// EXTRA - gives the VARIANT value that was illegal
-cpp_quote("#define DEX_IDS_ILLEGAL_PROPERTY_VAL 1416")
-
-// Syntax error in XML file at line:
-// EXTRA - gives I4 line number, if available
-cpp_quote("#define DEX_IDS_INVALID_XML 1417")
-
-// Can't find filter specified in XML by Category and Instance
-// EXTRA - gives friendly name (instance)
-cpp_quote("#define DEX_IDS_CANT_FIND_FILTER 1418")
-
-// Disk error writing XML file
-cpp_quote("#define DEX_IDS_DISK_WRITE_ERROR 1419")
-
-// Clsid not a valid DShow audio effect filter
-// EXTRA - gives the CLSID
-cpp_quote("#define DEX_IDS_INVALID_AUDIO_FX 1420")
-
-// Cannot find compressor for smart recompression type
-cpp_quote("#define DEX_IDS_CANT_FIND_COMPRESSOR 1421")
-
-
-
-// !!! Here go problems hooking up sources or finding codecs
-
-
-// THE FOLLOWING SHOULD NEVER HAPPEN - please call me if they do
-
-// Unexpected error in parsing the timeline
-cpp_quote("#define DEX_IDS_TIMELINE_PARSE 1426")
-// Unexpected error building the filtergraph
-cpp_quote("#define DEX_IDS_GRAPH_ERROR 1427")
-// Unexpected error with the internal grid
-cpp_quote("#define DEX_IDS_GRID_ERROR 1428")
-// Unexpected error getting an interface
-cpp_quote("#define DEX_IDS_INTERFACE_ERROR 1429")
-
-// these are the enumeration categories for effects
-//
-cpp_quote("EXTERN_GUID(CLSID_VideoEffects1Category, 0xcc7bfb42, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59);")
-cpp_quote("EXTERN_GUID(CLSID_VideoEffects2Category, 0xcc7bfb43, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59);")
-cpp_quote("EXTERN_GUID(CLSID_AudioEffects1Category, 0xcc7bfb44, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59);")
-cpp_quote("EXTERN_GUID(CLSID_AudioEffects2Category, 0xcc7bfb45, 0xf175, 0x11d1, 0xa3, 0x92, 0x0, 0xe0, 0x29, 0x1f, 0x39, 0x59);")
-
diff --git a/dxsdk/Include/DShowIDL/regbag.idl b/dxsdk/Include/DShowIDL/regbag.idl
deleted file mode 100644
index 103aff17..00000000
--- a/dxsdk/Include/DShowIDL/regbag.idl
+++ /dev/null
@@ -1,52 +0,0 @@
-//------------------------------------------------------------------------------
-// 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);
-};
-
diff --git a/dxsdk/Include/DShowIDL/sbe.idl b/dxsdk/Include/DShowIDL/sbe.idl
deleted file mode 100644
index 246b148c..00000000
--- a/dxsdk/Include/DShowIDL/sbe.idl
+++ /dev/null
@@ -1,1348 +0,0 @@
-
-/*++
-
- Copyright (c) 2002 Microsoft Corporation
-
- Module Name:
-
- sbe.idl
-
- Abstract:
-
- This module the StreamBuffer interface definitions & CLSIDs, public
-
---*/
-
-import "unknwn.idl" ;
-import "wtypes.idl" ;
-import "objidl.idl";
-import "strmif.idl" ;
-
-// ============================================================================
-
-// interfaces
-interface IStreamBufferSink ; // locking & recording
-interface IStreamBufferSink2 ; // ext locking
-interface IStreamBufferSink3 ; // specify the minimum
-interface IStreamBufferSource ; // associates with IStreamBufferSink
-interface IStreamBufferRecordControl ; // recording control
-interface IStreamBufferRecordingAttribute ; // StreamBuffer attribute creation
-interface IEnumStreamBufferRecordingAttrib ; // StreamBuffer attribute enumeration
-interface IStreamBufferConfigure ; // configuration interface
-interface IStreamBufferConfigure2 ; // configuration interface; more
-interface IStreamBufferMediaSeeking ; // IMediaSeeking but with different GUID
-interface IStreamBufferMediaSeeking2 ; // + available filter & frame rate on FF/RW
-interface IStreamBufferPolicy ; // StreamBuffer policies
-interface IStreamBufferInitialize ; // allows 3rd party app to set HKEY
-interface IStreamBufferDataCounters ; // collect data rate from the pins
-
-[
- object,
- uuid(9ce50f2d-6ba7-40fb-a034-50b1a674ec78),
- pointer_default(unique)
-]
-[local] interface IStreamBufferInitialize : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- SetHKEY ()
-
- Implemented on StreamBufferStreamSink and StreamBufferSource filters.
- Gives a hosting application the ability to specify HKEY root in
- registry. This method must called **early**: after the filter is
- instantiated, but before StreamBufferSource is locked (explicitly or
- implicitely) if calling the method on StreamBufferSource, or before
- a source is set (via IStreamBufferSource or IFileSourceFilter) if
- calling the method on StreamBufferStreamSource. If a call is made
- after either filter has been initialized internally, the call will
- fail with E_UNEXPECTED. The hosting application is responsible for
- ensuring that the HKEY passed in is writable & readable per the
- logged-on user privileges. The HKEY is duplicated internally,
- so the caller can close it after making this call.
- --*/
- HRESULT
- SetHKEY (
- [in] HKEY hkeyRoot
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- SetSIDs ()
-
- Implemented on StreamBufferStreamSink and StreamBufferSource filters.
- Provides a way for the hosting application to specify security-level
- sharing between capture and render processes and contexts. By
- default security attributes are inherited from the hosting process,
- unless the application overrides the defaults and provides them via
- this method.
- --*/
- HRESULT
- SetSIDs (
- [in] DWORD cSIDs,
- [in, size_is (cSIDs)] PSID * ppSID
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferSink
-
- Stream Source interface;
- implemented on the StreamBufferSink filter;
- Only way to get a recorder object's IUnknown (object will subsequently
- be associated with this Sink)
---*/
-
-enum {
- RECORDING_TYPE_CONTENT = 0, // no post-recording or overlapped
- RECORDING_TYPE_REFERENCE, // allows post-recording & overlapped
-} ;
-
-[
- object,
- uuid(afd1f242-7efd-45ee-ba4e-407a25c9a77a),
- pointer_default(unique)
-]
-interface IStreamBufferSink : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- LockProfile ()
-
- 1. Locks the profile;
- 2. No *new* input pin connections will be accepted;
- 3. Existing pins that are, or have ever been, connected can be
- reconnected if the media type is exactly the same as the first
- successful connection;
- 4. Can be called multiple times with the same parameter as the initial
- LockProfile() call was made with i.e. more than once with NULL if
- initially locked with NULL, or more than once with a string if
- initially locked with a string; if the profile is already locked,
- and the parameters are the same, returns S_FALSE, else the call
- fails (if trying to lock a locked profile with a different
- parameter)
- 5. Must be called before the filter that implements this interface is
- ever run; when it is run, it locks implicitely and this method has
- no effect if called with NULL parameters, or fails if called with
- non-NULL parameter for the reasons listed above;
- 6. Errors with VFW_E_UNSUPPORTED_STREAM if there are no streams in the
- profile;
-
- Parameter Detail
- ----------------
-
- pszStreamBufferFilename
-
- Is a NULL-terminated filename string. If the content written by
- this sink is to be shared cross-process, this parameter specifies a
- filename that will be opened by any reader(s) to read & render the
- content sent into the sink.
-
- Can be NULL (not specified)
-
- Must be a full-path filename; if no path is specified, the file is
- created in a "current" directory
-
- If the file already exists, the call fails
-
- Is opened with DELETE_ON_CLOSE flag, so is automatically deleted
- when the sink is unlocked, or when the hosting process terminates
- --*/
- HRESULT
- LockProfile (
- [in] LPCWSTR pszStreamBufferFilename
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- CreateRecorder ()
-
- 1. Returns a *new* recorder object's IUnknown;
- 2. Caller can call QueryInterface() on the returned pointer to get
- interface pointers to configure & control the recording;
- 3. Returned IUnknown pointer is ref'd & must be Release()'d by the
- caller
- 4. IStreamBufferSink interface must have been locked (explicitely or
- implicitely) prior to call
-
- To create an ordinary recording, specify RECORDING_TYPE_CONTENT for the
- dwRecordType parammeter. This will record the content directly into
- the specified file. These recording types only accept start and stop
- times that occur in the future.
-
- A recording of type RECORDING_TYPE_REFERENCE generates a small file
- that references content saved in temporary storage. Recordings of this
- type can have start and stop times that occurs in the past, and can
- overlap other same-type recordings.
-
- Reference recording *content* will be saved in the same subdirectory as
- the specified reference file, but with hidden and system attributes.
- The naming convention of the files will append a _1.sbe, _2.sbe, etc...
- to the filename (minus extension) specified in the call e.g. a
- "seinfeld01.sbe" reference file will have saved content in hidden
- and system files "seinfeld01_1.sbe", "seinfeld01_2.sbe", etc...
-
- --*/
- HRESULT
- CreateRecorder (
- [in] LPCWSTR pszFilename,
- [in] DWORD dwRecordType, // RECORDING_TYPE_CONTENT or RECORDING_TYPE_REFERENCE
- [out] IUnknown ** pRecordingIUnknown
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- IsProfileLocked ()
-
- 1. Returns S_OK if the profile is locked and S_FALSE if it is not.
- 2. Returns E_FAIL on error.
- --*/
- HRESULT
- IsProfileLocked (
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferSink2 ()
-
- Stream Source interface;
- implemented on the StreamBufferSink filter;
---*/
-[
- object,
- uuid(DB94A660-F4FB-4bfa-BCC6-FE159A4EEA93),
- pointer_default(unique)
-]
-interface IStreamBufferSink2 : IStreamBufferSink
-{
- /*++
- ------------------------------------------------------------------------
- UnlockProfile ()
-
- 1. Unlocks a profile explicitely.
- 2. Is a noop if the sink is not locked & returns S_FALSE.
- 3. Can only be called when the graph & filter are stopped.
- 4. Since recordings are bound to the "lock session", incomplete
- recordings i.e. those that have never been started, are
- invalidated & must be re-created under the next "lock session".
- 5. Profile still unlocks implicitly when the filter is stopped.
- --*/
- HRESULT
- UnlockProfile (
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferSink3 ()
-
- Stream Source interface;
- implemented on the StreamBufferSink filter;
---*/
-[
- object,
- uuid(974723f2-887a-4452-9366-2cff3057bc8f),
- pointer_default(unique)
-]
-interface IStreamBufferSink3 : IStreamBufferSink2
-{
- /*++
- -----------------------------------------------------------------------
- SetAvailableFilter ()
-
- Bounds the minimum. This affects readers so they cannot seek past
- the specified minimum.
-
- Parameter Detail
- ----------------
-
- prtMin
-
- min time relative to "now"
-
- cannot be NULL
-
- [in]: time, specified relative to the last sample written, to set
- as the minimum time available to readers; valid values are <= 0;
- use -MAXLONGLONG if all the backing store should be made available.
-
- [out]: actual min time; if the [in] value further back than what is
- available, the [out] value will be set to the actual time made
- available.
-
- Return Values
- -------------
-
- success S_OK
-
- failure error code
- --*/
- HRESULT
- SetAvailableFilter (
- [in, out] REFERENCE_TIME * prtMin
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferSource ()
-
- Stream Source reader interface;
- Implemented on the StreamBufferSource filter;
---*/
-[
- object,
- uuid(1c5bd776-6ced-4f44-8164-5eab0e98db12),
- pointer_default(unique)
-]
-interface IStreamBufferSource : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- SetStreamSink ()
-
- 1. Sets the StreamBuffer Sink that streams from this Source;
- 2. IStreamBufferSink object must be in the same process as this object;
- 3. Interface is AddRef()'d if the call succeeds;
-
- Parameter Detail
- ----------------
-
- pIStreamBufferSink
-
- Sink that will stream to this Source
- --*/
- HRESULT
- SetStreamSink (
- [in] IStreamBufferSink * pIStreamBufferSink
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferRecordControl
-
- obtained by QIing IStreamBufferSink::CreateRecorder()-returned IUnknown *
---*/
-[
- object,
- uuid(ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31),
- pointer_default(unique)
-]
-interface IStreamBufferRecordControl : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- Start ()
-
- 1. Starts a recording;
- 2. Will save to the filename that is specified when this interface's
- IUnknown is requested (IStreamBufferSink::CreateRecorder());
-
- Parameter Detail
- ----------------
-
- rtStart
-
- Start time relative to "now;
-
- If the recording type is a content recording, can only refer to
- seconds in the future; allowed seconds are [0,5]
-
- If the recording type is a reference recording, can refer to any
- time that still has valid content i.e. content that has not yet
- become stale
-
- If the recording is a reference recording and (* prtStart) is
- earlier than the earliest still-valid content, the call will reset
- it to the earliest content; the value when the recording was
- actually started will be [out]
- --*/
- HRESULT
- Start (
- [in,out] REFERENCE_TIME * prtStart
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- Stop ()
-
- 1. Stops a recording;
- 2. Closes out the file;
-
- Parameter Detail
- ----------------
-
- rtStart
-
- Stop time relative to "now;
-
- If the recording type is a content recording, can only refer to
- seconds in the future; allowed seconds are [0,5]
-
- If the recording type is a reference recording, can refer to any
- time that still has valid content i.e. content that has not yet
- become stale; stop time cannot be <= start time
- --*/
- HRESULT
- Stop (
- [in] REFERENCE_TIME rtStop
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetRecordingStatus ()
-
- 1. Retrieves the status of the recording
-
- Parameter Detail
- ----------------
-
- phResult
-
- The (current) status of writing or closing the recording file;
-
- Can be NULL;
-
- pbStarted
-
- If supplied, set to a non-zero value if the recording has been
- started
-
- Can be NULL;
-
- pbStopped
-
- If supplied, set to a non-zero value if the recording has been
- stopped;
-
- Can be NULL;
-
- NOTE: If the recording has never been started, it will not be flagged
- as stopped.
-
- --*/
- HRESULT
- GetRecordingStatus (
- [out] HRESULT * phResult,
- [out] BOOL * pbStarted,
- [out] BOOL * pbStopped
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferRecComp
-
- CoCreateInstance CLSID_StreamBufferComposeRecording and QueryInterface for
- this interface; this interface allows the creation of a single target
- content recording which consists of a number of concatenated recordings
- (reference or content; can mix & match if desired)
---*/
-
-[
- object,
- uuid(9E259A9B-8815-42ae-B09F-221970B154FD),
- pointer_default(unique)
-]
-interface IStreamBufferRecComp : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- Initialize ()
-
- 1. Initializes for a target recording
-
- Parameter Detail
- ----------------
-
- pszTargetFilename
-
- Sets the target filename
-
- Fails if the file already exists
-
- pszSBRecProfileRef
-
- Must be a completed, SBE-generated recording
-
- This recording's profile will be used to define the target profile
-
- Appended files must have exactly the same profile
- --*/
- HRESULT
- Initialize (
- [in] LPCWSTR pszTargetFilename,
- [in] LPCWSTR pszSBRecProfileRef
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- Append ()
-
- 1. appends an entire recording
- 2. fails if the recording is live
- --*/
- HRESULT
- Append (
- [in] LPCWSTR pszSBRecording
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- AppendEx ()
-
- 1. appends the specified portion of the recording; the parameters must
- be accurate; the call will not readjust them within the boundaries
- 2. the time spread must be at least 2 seconds
- 3. fails if the recording is live
- --*/
- HRESULT
- AppendEx (
- [in] LPCWSTR pszSBRecording,
- [in] REFERENCE_TIME rtStart,
- [in] REFERENCE_TIME rtStop
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetCurrentLength ()
-
- 1. returns the current length of the recording; updates as recordings
- are appended;
- 2. can be called repeatedly during a Append() call on another
- thread;
- --*/
- HRESULT
- GetCurrentLength (
- [out] DWORD * pcSeconds
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- Close ()
-
- 1. explicitely closes the recording
-
- 2. final release of interface closes the recording as well
- --*/
- HRESULT
- Close (
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- Cancel ()
-
- 1. cancels an in-progress appending operation; has no effect otherwise
- --*/
- HRESULT
- Cancel (
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferRecordingAttribute
-
- obtained by calling QueryInterface on a recorder
-
- well-known attributes:
-
- NAME DESCRIPTION
- ------------------- ----------------------------------------------------
-
- Title String containing the content title.
-
- Author String containing the name of the content author.
-
- Description String containing a description of the content.
-
- Rating String containing a content rating.
-
- Copyright String containing a content copyright message.
-
- Duration Quadruple word value containing the playing duration
- of the file, in 100-nanosecond units.
-
- Bitrate Double word value containing the bit rate.
-
- Seekable Boolean value; true denoting that the content is
- seekable.
-
- Stridable Boolean value, true denoting that the content is
- stridable (fast forward and rewind are enabled).
-
- Broadcast Boolean value; true denoting that the content is not
- copyright-protected, and can be broadcast.
-
- Use_DRM reserved
-
- DRM_Flags reserved
-
- DRM_Level reserved
-
- Is_Protected reserved
-
- Is_Trusted reserved
-
- Signature_Name reserved
-
- HasAudio Boolean, true denoting the content includes an
- audio stream.
-
- HasImage Boolean, true denoting the content includes a still
- image stream (such as JPEG images).
-
- HasScript Boolean, true denoting the content includes a script
- stream.
-
- HasVideo Boolean, true denoting the content includes a video
- stream.
-
- CurrentBitrate Double word containing the current total bitrate,
- usually used for MEB (multi-bit rate) streams.
-
- OptimalBitrate Double word containing the minimum total bitrate
- recommended to stream the content and get
- maximum quality.
-
- WM/AlbumTitle String containing the album title.
-
- WM/Track Double word containing the track number.
-
- WM/PromotionURL String with a URL to an HTML page that contains
- information about products and events (such as
- concerts) that are related to this music.
-
- WM/AlbumCoverURL String with a URL to an HTML page that contains an
- image of the album cover and information about
- the album.
-
- WM/Genre String with the genre of the music.
-
- WM/Year String with the year of publication of the music.
-
- WM/GenreID
-
- WM/MCDI
-
- BannerImageType One member of the WMT_ATTR_IMAGETYPE enumeration
- type.
-
- BannerImageData The actual image data: a bitmap, JPEG, or GIF image.
-
-
- BannerImageURL If the banner image is clicked on then this URL is
- activated.
-
- CopyrightURL An URL to a copyright page.
-
- NSC_Name String containing the multicast station contact
- name (read-only).
-
- NSC_Address String containing the multicast station contact
- address (read-only).
-
- NSC_Phone String containing the multicast station contact
- phone number (read-only).
-
- NSC_Email String containing the multicast station contact
- email address (read-only).
-
- NSC_Description String containing the multicast station contact
- description (read-only).
-
---*/
-
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// List of pre-defined attributes " )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingDuration[] =L\"Duration\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBitrate[] =L\"Bitrate\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSeekable[] =L\"Seekable\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingStridable[] =L\"Stridable\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBroadcast[] =L\"Broadcast\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingProtected[] =L\"Is_Protected\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTrusted[] =L\"Is_Trusted\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSignature_Name[] =L\"Signature_Name\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasAudio[] =L\"HasAudio\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasImage[] =L\"HasImage\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasScript[] =L\"HasScript\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasVideo[] =L\"HasVideo\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingCurrentBitrate[] =L\"CurrentBitrate\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingOptimalBitrate[] =L\"OptimalBitrate\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasAttachedImages[] =L\"HasAttachedImages\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSkipBackward[] =L\"Can_Skip_Backward\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSkipForward[] =L\"Can_Skip_Forward\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNumberOfFrames[] =L\"NumberOfFrames\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingFileSize[] =L\"FileSize\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasArbitraryDataStream[] =L\"HasArbitraryDataStream\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasFileTransferStream[] =L\"HasFileTransferStream\";" )
-cpp_quote( "" )
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// The content description object supports 5 basic attributes." )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTitle[] =L\"Title\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAuthor[] =L\"Author\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingDescription[] =L\"Description\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingRating[] =L\"Rating\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingCopyright[] =L\"Copyright\";" )
-cpp_quote( "" )
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// These attributes are used to configure DRM using IWMDRMWriter::SetDRMAttribute." )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR *g_wszStreamBufferRecordingUse_DRM = L\"Use_DRM\";" )
-cpp_quote( "static const WCHAR *g_wszStreamBufferRecordingDRM_Flags = L\"DRM_Flags\";" )
-cpp_quote( "static const WCHAR *g_wszStreamBufferRecordingDRM_Level = L\"DRM_Level\";" )
-cpp_quote( "" )
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// These are the additional attributes defined in the WM attribute" )
-cpp_quote( "// namespace that give information about the content." )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAlbumTitle[] =L\"WM/AlbumTitle\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTrack[] =L\"WM/Track\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingPromotionURL[] =L\"WM/PromotionURL\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAlbumCoverURL[] =L\"WM/AlbumCoverURL\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingGenre[] =L\"WM/Genre\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingYear[] =L\"WM/Year\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingGenreID[] =L\"WM/GenreID\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingMCDI[] =L\"WM/MCDI\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingComposer[] =L\"WM/Composer\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingLyrics[] =L\"WM/Lyrics\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTrackNumber[] =L\"WM/TrackNumber\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingToolName[] =L\"WM/ToolName\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingToolVersion[] =L\"WM/ToolVersion\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingIsVBR[] =L\"IsVBR\";" )
-
-//
-// WM/AlbumArtist is a potentially different value than Author
-//
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAlbumArtist[] =L\"WM/AlbumArtist\";" )
-cpp_quote( "" )
-
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// These optional attributes may be used to give information " )
-cpp_quote( "// about the branding of the content." )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBannerImageType[] =L\"BannerImageType\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBannerImageData[] =L\"BannerImageData\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBannerImageURL[] =L\"BannerImageURL\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingCopyrightURL[] =L\"CopyrightURL\";" )
-
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// Optional attributes, used to give information " )
-cpp_quote( "// about video stream properties." )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAspectRatioX[] =L\"AspectRatioX\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAspectRatioY[] =L\"AspectRatioY\";" )
-
-cpp_quote( "////////////////////////////////////////////////////////////////" )
-cpp_quote( "//" )
-cpp_quote( "// The NSC file supports the following attributes." )
-cpp_quote( "//" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCName[] =L\"NSC_Name\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCAddress[] =L\"NSC_Address\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCPhone[] =L\"NSC_Phone\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCEmail[] =L\"NSC_Email\";" )
-cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCDescription[] =L\"NSC_Description\";" )
-cpp_quote( "" )
-
-//
-// StreamBuffer Attribute datatypes;
-//
-typedef enum {
- STREAMBUFFER_TYPE_DWORD = 0,
- STREAMBUFFER_TYPE_STRING = 1,
- STREAMBUFFER_TYPE_BINARY = 2,
- STREAMBUFFER_TYPE_BOOL = 3,
- STREAMBUFFER_TYPE_QWORD = 4,
- STREAMBUFFER_TYPE_WORD = 5,
- STREAMBUFFER_TYPE_GUID = 6,
-} STREAMBUFFER_ATTR_DATATYPE ;
-
-[
- object,
- uuid(16CA4E03-FE69-4705-BD41-5B7DFC0C95F3),
- pointer_default(unique)
-]
-interface IStreamBufferRecordingAttribute : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- SetAttribute ()
-
- 1. Sets an attribute on a recording object;
- 2. Fails if the IStreamBufferRecordControl::Start has already been successfully
- called;
- 3. If an attribute of the same name already exists, overwrites the old;
- --*/
- HRESULT
- SetAttribute (
- [in] ULONG ulReserved,
- [in] LPCWSTR pszAttributeName,
- [in] STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType,
- [in, size_is (cbAttributeLength)] BYTE * pbAttribute,
- [in] WORD cbAttributeLength
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetAttributeCount ()
-
- 1. Returns the count of attributes currently set;
- --*/
- HRESULT
- GetAttributeCount (
- [in] ULONG ulReserved,
- [out] WORD * pcAttributes
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetAttributeByName ()
-
- 1. Given a name, returns the attribute data;
- 2. If the provided buffer is too small, returns VFW_E_BUFFER_OVERFLOW,
- and (* pcbLength) contains the minimum required length of the buffer
- 3. To learn the length of the attribute, pass in non-NULL pcbLength,
- and NULL pbAttribute parameter; [out] value will be the length of
- the attribute
- --*/
- HRESULT
- GetAttributeByName (
- [in] LPCWSTR pszAttributeName,
- [in] ULONG * pulReserved,
- [out] STREAMBUFFER_ATTR_DATATYPE * pStreamBufferAttributeType,
- [out, size_is (* pcbLength)] BYTE * pbAttribute,
- [in, out] WORD * pcbLength
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetAttributeByIndex ()
-
- 1. Given an 0-based index, returns the attribute name and data
- 2. If either buffer is too small, returns VFW_E_BUFFER_OVERFLOW, and
- (* pcbLength) and (* pcchNameLength) contain the minimum required
- length of each buffer
- 3. The length returned by pcchNameLength includes the null-terminator
- 4. To learn the length of the name & attribute, pass in non-NULL
- pcchNameLength & pcbLength, and NULL pszAttributeName & pbAttribute
- parameters; [out] value of the non-NULL parameters will be the
- lengths of the name and attribute
- --*/
- HRESULT
- GetAttributeByIndex (
- [in] WORD wIndex,
- [in] ULONG * pulReserved,
- [out] WCHAR * pszAttributeName,
- [in, out] WORD * pcchNameLength, // includes NULL-terminator; in BYTES
- [out] STREAMBUFFER_ATTR_DATATYPE * pStreamBufferAttributeType,
- [out, size_is (* pcbLength)] BYTE * pbAttribute,
- [in, out] WORD * pcbLength
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- EnumAttributes ()
-
- 1. Returns a StreamBuffer attribute enumeration object that snapshots
- the attributes at time-of-call
- --*/
- HRESULT
- EnumAttributes (
- [out] IEnumStreamBufferRecordingAttrib ** ppIEnumStreamBufferAttrib
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IEnumStreamBufferRecordingAttrib
-
- obtained by calling IStreamBufferRecordingAttribute::EnumAttributes, or
- calling clone on this interface
---*/
-
-typedef struct {
- LPWSTR pszName ; // allocated by callee; freed by caller
- STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType ;
- BYTE * pbAttribute ; // allocated by callee; freed by caller
- WORD cbLength ;
-} STREAMBUFFER_ATTRIBUTE ;
-
-[
- object,
- uuid (C18A9162-1E82-4142-8C73-5690FA62FE33),
- pointer_default(unique)
-]
-interface IEnumStreamBufferRecordingAttrib : IUnknown
-{
- HRESULT
- Next (
- [in] ULONG cRequest,
- [in, out, size_is (cRequest)] STREAMBUFFER_ATTRIBUTE * pStreamBufferAttribute,
- [out] ULONG * pcReceived
- ) ;
-
- HRESULT
- Skip (
- [in] ULONG cRecords
- ) ;
-
- HRESULT
- Reset (
- ) ;
-
- HRESULT
- Clone (
- [out] IEnumStreamBufferRecordingAttrib ** ppIEnumStreamBufferAttrib
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferConfigure
-
---*/
-[
- object,
- uuid(ce14dfae-4098-4af7-bbf7-d6511f835414),
- pointer_default(unique)
-]
-interface IStreamBufferConfigure : IUnknown
-{
- /*++
- ------------------------------------------------------------------------
- SetStreamBufferDirectory ()
-
- 1. Sets the directory where all content is saved, ringbuffer &
- StreamBuffer;
- 2. Creates directory if necessary;
- 3. All TEMP files have hidden+system attributes
- --*/
- HRESULT
- SetDirectory (
- [in] LPCWSTR pszDirectoryName
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetStreamBufferDirectory ()
-
- 1. Retrieves previously set backing store directory, or default
- location if none was specified
- --*/
- HRESULT
- GetDirectory (
- [out] LPWSTR * ppszDirectoryName
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- SetBackingFileCount ()
-
- 1. Sets the number of backing files
- 2. valid values
-
- 4 <= min <= 100
- 6 <= max <= 102
- min max delta >= 2
- --*/
- HRESULT
- SetBackingFileCount (
- [in] DWORD dwMin,
- [in] DWORD dwMax
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetBackingFileCount ()
-
- 1. Retrieves previously set backing file counts, or defaults if none
- have have been set
- --*/
- HRESULT
- GetBackingFileCount (
- [out] DWORD * pdwMin,
- [out] DWORD * pdwMax
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- SetEachBackingFileDuration ()
-
- 1. Sets the seconds of content each backing file will hold
- 2. valid values:
-
- dwSeconds >= 15
- --*/
- HRESULT
- SetBackingFileDuration (
- [in] DWORD dwSeconds
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetEachBackingFileDuration ()
-
- 1. Retrieves previously set backing file duration, or default of none
- is set
- --*/
- HRESULT
- GetBackingFileDuration (
- [out] DWORD * pdwSeconds
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferConfigure2
-
---*/
-[
- object,
- uuid(53E037BF-3992-4282-AE34-2487B4DAE06B),
- pointer_default(unique)
-]
-interface IStreamBufferConfigure2 : IStreamBufferConfigure
-{
- /*++
- ------------------------------------------------------------------------
- SetMultiplexedPacketSize ()
-
- 1. sets the size of the target multiplexed packet size
- 2. valid values:
-
- 8192 <= cbBytesPerPacket <= 65535
-
- This is useful if low-bitrate streams are used, and the time to fill a
- multiplexed packet is excessive when the default value of 65535 bytes
- is used.
- --*/
- HRESULT
- SetMultiplexedPacketSize (
- [in] DWORD cbBytesPerPacket
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetMultiplexedPacketSize ()
-
- 1. gets the size of the target multiplexed packet size
- --*/
- HRESULT
- GetMultiplexedPacketSize (
- [out] DWORD * pcbBytesPerPacket
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- SetFFTransitionRates ()
-
- 1. sets the fast forward (FF) rates for which the Stream Buffer Engine
- transitions from FullFrame to KeyFrame to KeyFrame + Seeks.
- 2. valid values:
-
- 1 < dwMaxFullFrameRate < dwMaxNonSkippingRate
-
- FF playback transitions from full-frame play, then to all keyframes,
- then to keyframes + seekaheads. This method allows the transition
- rates to be set. By default they are 4 and 6. If the rate is in (0,4]
- all the frames are sent to the codec. If the rate is in (4,6] just
- keyframes are sent. If the rate is > 6, then only keyframes are sent,
- and a seekahead between keyframes is used that is proportionally
- aggressive to the specified rate.
- --*/
- HRESULT
- SetFFTransitionRates (
- [in] DWORD dwMaxFullFrameRate,
- [in] DWORD dwMaxNonSkippingRate
- ) ;
-
- /*++
- ------------------------------------------------------------------------
- GetFFTransitionRates ()
-
- 1. gets the fast forward (FF) rates for which the Stream Buffer Engine
- transitions from FullFrame to KeyFrame to KeyFrameWithSeeks.
- --*/
- HRESULT
- GetFFTransitionRates (
- [out] DWORD * pdwMaxFullFrameRate,
- [out] DWORD * pdwMaxNonSkippingRate
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferMediaSeeking
-
- Implemented on the StreamBufferSource filter. Used to seek and set the
- playback rate.
-
---*/
-
-[
- object,
- uuid(f61f5c26-863d-4afa-b0ba-2f81dc978596),
- pointer_default(unique)
-]
-interface IStreamBufferMediaSeeking : IMediaSeeking
-{
- // no additional methods have been added
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferMediaSeeking2
-
- Implemented on the StreamBufferSource filter. Used to seek and set the
- playback rate.
-
---*/
-
-[
- object,
- uuid(3a439ab0-155f-470a-86a6-9ea54afd6eaf),
- pointer_default(unique)
-]
-interface IStreamBufferMediaSeeking2 : IStreamBufferMediaSeeking
-{
- /*++
- -----------------------------------------------------------------------
- SetRateEx ()
-
- Allows the application to override SBE's trick mode seekahead
- computation.
-
- The specified frame rate will, on average, be correct, but may
- have some variance if averaged over short periods of time. This is
- due to the content's compression schema.
-
- The frame rate is applied to the video stream, if one exists. If no
- video stream exists, the rate call fails. The framerate parameter
- (dwFramesPerSec) is ignored when the specified abs(rate) is less than or
- equal to the maximum non-skipping rate (see IStreamBufferConfigure2::
- SetFFTransitionRates ()).
-
- Parameter Detail
- ----------------
-
- dRate rate at which the content is to be played.
- valid values are all rates, excluding the following
- range: (-0.1, 0.1)
-
- dwFramesPerSec frames per second
- cannot be 0
- SBE does not enforce this parameter with respect to
- the screen refresh rate
- ignored if the abs(dRate) value is <= max non-
- skipping rate (see IStreamBufferConfigure2::
- SetFFTransitionRates ()).
-
- Return Values
- -------------
-
- success S_OK
-
- failure error code
- --*/
- HRESULT
- SetRateEx (
- [in] double dRate,
- [in] DWORD dwFramesPerSec
- ) ;
-} ;
-
-
-/*++
- ============================================================================
- ============================================================================
- IStreamBufferDataCounters
-
- Implemented on the StreamBufferSource & StreamBufferSink filter pins. Used
- to get instantaneous traffic counters for the pin.
-
---*/
-
-typedef struct {
- ULONGLONG cDataBytes ; // total sample payload bytes
- ULONGLONG cSamplesProcessed ; // samples processed
- ULONGLONG cDiscontinuities ; // number of discontinuities
- ULONGLONG cSyncPoints ; // number of syncpoints
- ULONGLONG cTimestamps ; // number of timestamps
-} SBE_PIN_DATA ;
-
-[
- object,
- uuid(9D2A2563-31AB-402e-9A6B-ADB903489440),
- pointer_default(unique)
-]
-interface IStreamBufferDataCounters : IUnknown
-{
- // retrieves the instantaneous values in the data structure
- HRESULT
- GetData (
- [out] SBE_PIN_DATA * pPinData
- ) ;
-
- // sets all the data structure values to 0
- HRESULT
- ResetData (
- ) ;
-} ;
-
-/*++
- ============================================================================
- ============================================================================
- events
---*/
-
-// see evcode.h comment for range
-// stream buffer engine (PVR) 0x0326 - 0x0350 (sbe.idl)
-
-cpp_quote ("#define STREAMBUFFER_EC_BASE 0x0326")
-
-cpp_quote ("enum {")
-cpp_quote (" // timehole event")
-cpp_quote (" // param1 = timehole stream offset ms")
-cpp_quote (" // param1 = timehole size ms")
-cpp_quote (" STREAMBUFFER_EC_TIMEHOLE = STREAMBUFFER_EC_BASE,")
-cpp_quote (" ")
-cpp_quote (" STREAMBUFFER_EC_STALE_DATA_READ,")
-cpp_quote (" ")
-cpp_quote (" STREAMBUFFER_EC_STALE_FILE_DELETED,")
-cpp_quote (" STREAMBUFFER_EC_CONTENT_BECOMING_STALE,")
-cpp_quote (" STREAMBUFFER_EC_WRITE_FAILURE,")
-cpp_quote (" //")
-cpp_quote (" // unexpected read failure")
-cpp_quote (" // param1 = HRESULT failure")
-cpp_quote (" // param2 = undefined")
-cpp_quote (" STREAMBUFFER_EC_READ_FAILURE,")
-cpp_quote (" //")
-cpp_quote (" // playback rate change")
-cpp_quote (" // param1 = old_playback_rate * 10000 e.g. 2x is 20000")
-cpp_quote (" // param2 = new_playback_rate * 10000")
-cpp_quote (" STREAMBUFFER_EC_RATE_CHANGED,")
-cpp_quote ("} ;")
-
-/*++
- ============================================================================
- ============================================================================
- trick mode
-
- We've extended the 1.0 interfaces as follows:
-
- 1. source filter presents timestamps that monotonically increase overtime
-
- 2. flushes should have no effect over queued rate segments
-
- 3. discontinuities have no effect over queued rate segments
-
- To use the interface, continue to use AM_KSPROPSETID_TSRateChange, but use
- dwPropId that is higher
-
---*/
-
-#ifdef USE_AM_PROPERTY_TS_RATE_CHANGE_11
-cpp_quote ("typedef enum {")
-cpp_quote (" AM_RATE_UseRateVersion = AM_RATE_Step + 1,")
-cpp_quote (" AM_RATE_QueryFullFrameRate,")
-cpp_quote (" AM_RATE_QueryLastRateSegPTS")
-cpp_quote ("} AM_PROPERTY_TS_RATE_CHANGE_11 ;")
-
-// AM_RATE_QueryRate; this is the max full-frame rate; source filter can use
-// up to this; it can use less
-cpp_quote ("typedef struct {")
-cpp_quote (" LONG lMaxForwardFullFrame ; // rate * 10000")
-cpp_quote (" LONG lMaxReverseFullFrame ; // rate * 10000")
-cpp_quote ("} AM_QueryRate ;")
-#endif // USE_AM_PROPERTY_TS_RATE_CHANGE_11
-
-/*
-================================================================================
-AM_RATE_UseRateVersion
---------------------------------------------------------------------------------
-Specifies the rate change version to be used.
-
-The default behavior should be per 1.0.
-
-Use a WORD value. The high-order byte specifies the minor version (revision)
-number; the low-order byte specifies the major version number. On a
-little-endian system (e.g. x86), the WORD value version for the contents of
-this specification is 0x0101.
-
-If the specified rate version is not supported, the call should fail with
-an E_NOINTERFACE error code.
-
-================================================================================
-AM_RATE_QueryFullFrameRate
---------------------------------------------------------------------------------
-Allows a source filter to query for maximum full-frame rates the timestamp
-scaling filter is capable of. Maximum full-frame forward and reverse rates
-are queried for.
-
-Use AM_QueryRate structure. Timestamp scaling filter must set
-lMaxReverseFullFrame struct member to negative rate.
-
-The sourcing filter can still choose to set the full-frame rate to a value
-smaller than the value returned by the timestamp scaling filter. For example,
-there may be IO issues that prevent a full-frame playback, even if the timestamp
-scaling filter is capable.
-
-Non-full frame playback will consist of groups of continuous samples sent to
-the timestamp scaling filter, separated by discontinuities. The timestamps for
-each group of samples will jump across the discontinuities, but still increase
-per the RunTimePlus timeline, when compared to RenderTime, once a steady state
-runstate has been achieved.
-
-Note that Rate is used this call, vs. speed.
-
-================================================================================
-AM_RATE_QueryLastRateSegPTS
---------------------------------------------------------------------------------
-Allows a source filter to query the timestamp scaling filter for the last-set
-rate-segment's effective PTS, regardless of rate-segment position.
-
-Note that Rate is used this call, vs. speed.
-
-================================================================================
-AM_RATE_SimpleRateChange (with 1.1 semantics)
---------------------------------------------------------------------------------
-If the rate is to be set to the most forward sample, the
-AM_SimpleRateChange.StartTime member is set to value -1 by the sourcing filter.
-This has meaning to the timestamp scaling filter to set the rate to the most
-forward sample, and return that sample's presentation time via the method call's
-[out] parameter.
-
-If the specified rate segment is incompatible, all queued samples with PTS in
-rate-incompatible segment can be discarded.
-
-If the current rate is incompatible i.e. samples are being dropped by the
-timestamp scaling filter and it is not keeping an internal queued, it should
-fail the querying call (AM_SimpleRateChagne.StartTime = -1) with return error
-VFW_E_DVD_WRONG_SPEED. The sourcing filter will then set a rate with an
-effective PTS.
-
-*/
-
diff --git a/dxsdk/Include/DShowIDL/strmif.idl b/dxsdk/Include/DShowIDL/strmif.idl
deleted file mode 100644
index 87da1d8b..00000000
--- a/dxsdk/Include/DShowIDL/strmif.idl
+++ /dev/null
@@ -1,51 +0,0 @@
-//------------------------------------------------------------------------------
-// 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)")
diff --git a/dxsdk/Include/DShowIDL/tuner.idl b/dxsdk/Include/DShowIDL/tuner.idl
deleted file mode 100644
index 75f1beb4..00000000
--- a/dxsdk/Include/DShowIDL/tuner.idl
+++ /dev/null
@@ -1,2254 +0,0 @@
-//------------------------------------------------------------------------------
-// File: Tuner.idl
-//
-// Desc:
-//
-// 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")
-
-#include <olectl.h>
-#ifndef DO_NO_IMPORTS
-import "oaidl.idl";
-import "comcat.idl";
-import "strmif.idl";
-import "bdatypes.h";
-import "regbag.idl";
-#endif
-
-cpp_quote("#include <bdatypes.h>")
-
-interface ITuningSpaceContainer;
-interface ITuningSpace;
-interface IEnumTuningSpaces;
-interface ITuneRequest;
-interface ITuner;
-interface IScanningTuner;
-interface IEnumComponentTypes;
-interface IComponentTypes;
-interface IComponentType;
-interface ILanguageComponentType;
-interface IEnumComponents;
-interface IComponents;
-interface IComponent;
-interface IMPEG2ComponentType;
-interface IMPEG2Component;
-interface ILocator;
-interface IATSCLocator;
-interface IDVBSLocator;
-interface IDVBTLocator;
-interface IDVBCLocator;
-
-// tuner.idl:
-// interface ITuningSpaceContainer : IDispatch
-// interface ITuningSpace : IDispatch
-// interface ITuneRequest : IDispatch
-// interface IComponentType : IDispatch
-// interface ILanguageComponentType : IComponentType
-// interface IComponentTypes : IDispatch
-// interface IComponent : IDispatch
-// interface IComponents : IDispatch
-// interface ITVTuningSpace : ITuningSpace
-// interface IFMRadioTuningSpace : ITuningSpace
-// interface IAMRadioTuningSpace : ITuningSpace
-// interface IAnalogTVTuningSpace : ITVTuningSpace
-// interface IAnalogTVAudioComponent : IComponent
-// interface IAnalogTVDataComponent : IComponent
-// interface IChannelTuneRequest : ITuneRequest
-// interface IDVBComponent : IComponent
-// interface IDVBTuneRequest : ITuneRequest
-
-// DISPIDs for ITuningSpaces interface
-// we don't expect to inherit from this interface and consequently there's
-// no chance of collision, thus we'll allow midl to auto assign ids for this one
-
-// DISPIDs for ITuningSpace interface
-enum {
-DISPID_TUNER_TS_UNIQUENAME = 1,
-DISPID_TUNER_TS_FRIENDLYNAME = 2,
-DISPID_TUNER_TS_CLSID = 3,
-DISPID_TUNER_TS_NETWORKTYPE = 4,
-DISPID_TUNER_TS__NETWORKTYPE = 5,
-DISPID_TUNER_TS_CREATETUNEREQUEST = 6,
-DISPID_TUNER_TS_ENUMCATEGORYGUIDS = 7,
-DISPID_TUNER_TS_ENUMDEVICEMONIKERS = 8,
-DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES = 9,
-DISPID_TUNER_TS_FREQMAP = 10,
-DISPID_TUNER_TS_DEFLOCATOR = 11,
-DISPID_TUNER_TS_CLONE = 12,
-
-// DISPIDs for ITuneRequest interface
-DISPID_TUNER_TR_TUNINGSPACE = 1,
-DISPID_TUNER_TR_COMPONENTS = 2,
-DISPID_TUNER_TR_CLONE = 3,
-DISPID_TUNER_TR_LOCATOR = 4,
-
-
-// DISPID for IComponentType interface
-DISPID_TUNER_CT_CATEGORY = 1,
-DISPID_TUNER_CT_MEDIAMAJORTYPE = 2,
-DISPID_TUNER_CT__MEDIAMAJORTYPE = 3,
-DISPID_TUNER_CT_MEDIASUBTYPE = 4,
-DISPID_TUNER_CT__MEDIASUBTYPE = 5,
-DISPID_TUNER_CT_MEDIAFORMATTYPE = 6,
-DISPID_TUNER_CT__MEDIAFORMATTYPE = 7,
-DISPID_TUNER_CT_MEDIATYPE = 8,
-DISPID_TUNER_CT_CLONE = 9,
-
-
-// DISPID for ILanguageComponentType interface
-DISPID_TUNER_LCT_LANGID = 100,
-
-// DISPID for IMPEG2ComponentType interface
-DISPID_TUNER_MP2CT_TYPE = 200,
-
-// DISPID for IATSCComponentType interface
-DISPID_TUNER_ATSCCT_FLAGS = 300,
-
-// DISPID for ILocator interface
-DISPID_TUNER_L_CARRFREQ = 1,
-DISPID_TUNER_L_INNERFECMETHOD = 2,
-DISPID_TUNER_L_INNERFECRATE = 3,
-DISPID_TUNER_L_OUTERFECMETHOD = 4,
-DISPID_TUNER_L_OUTERFECRATE = 5,
-DISPID_TUNER_L_MOD = 6,
-DISPID_TUNER_L_SYMRATE = 7,
-DISPID_TUNER_L_CLONE = 8,
-
-// DISPID for IATSCLocator interface
-DISPID_TUNER_L_ATSC_PHYS_CHANNEL = 201,
-DISPID_TUNER_L_ATSC_TSID = 202,
-
-// DISPID for IDVBTLocator interface
-DISPID_TUNER_L_DVBT_BANDWIDTH = 301,
-DISPID_TUNER_L_DVBT_LPINNERFECMETHOD = 302,
-DISPID_TUNER_L_DVBT_LPINNERFECRATE = 303,
-DISPID_TUNER_L_DVBT_GUARDINTERVAL = 304,
-DISPID_TUNER_L_DVBT_HALPHA = 305,
-DISPID_TUNER_L_DVBT_TRANSMISSIONMODE = 306,
-DISPID_TUNER_L_DVBT_INUSE = 307,
-
-// DISPID for IDVBSLocator interface
-DISPID_TUNER_L_DVBS_POLARISATION = 401,
-DISPID_TUNER_L_DVBS_WEST = 402,
-DISPID_TUNER_L_DVBS_ORBITAL = 403,
-DISPID_TUNER_L_DVBS_AZIMUTH = 404,
-DISPID_TUNER_L_DVBS_ELEVATION = 405,
-
-// DISPID for IDVBCLocator interface
-
-// DISPIDs for IComponent interface
-DISPID_TUNER_C_TYPE = 1,
-DISPID_TUNER_C_STATUS = 2,
-DISPID_TUNER_C_LANGID = 3,
-DISPID_TUNER_C_DESCRIPTION = 4,
-DISPID_TUNER_C_CLONE = 5,
-
-// DISPIDs for IMPEG2Component interface
-DISPID_TUNER_C_MP2_PID = 101,
-DISPID_TUNER_C_MP2_PCRPID = 102,
-DISPID_TUNER_C_MP2_PROGNO = 103,
-
-// DISPIDs for IDVBTuningSpace interface
-DISPID_TUNER_TS_DVB_SYSTEMTYPE = 101,
-// DISPIDs for IDVBTuningSpace2 interface
-DISPID_TUNER_TS_DVB2_NETWORK_ID = 102,
-// DISPIDs for IDVBSTuningSpace interface
-DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ = 1001,
-DISPID_TUNER_TS_DVBS_HI_OSC_FREQ = 1002,
-DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ = 1003,
-DISPID_TUNER_TS_DVBS_INPUT_RANGE = 1004,
-DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION = 1005,
-
-// DISPIDs for IAnalogRadioTuningSpace interface
-DISPID_TUNER_TS_AR_MINFREQUENCY = 101,
-DISPID_TUNER_TS_AR_MAXFREQUENCY = 102,
-DISPID_TUNER_TS_AR_STEP = 103,
-
-// DISPIDs for IAnalogTVTuningSpace interface
-DISPID_TUNER_TS_ATV_MINCHANNEL = 101,
-DISPID_TUNER_TS_ATV_MAXCHANNEL = 102,
-DISPID_TUNER_TS_ATV_INPUTTYPE = 103,
-DISPID_TUNER_TS_ATV_COUNTRYCODE = 104,
-
-// DISPIDs for IATSCTuningSpace interface
-DISPID_TUNER_TS_ATSC_MINMINORCHANNEL = 201,
-DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL = 202,
-DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL = 203,
-DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL = 204,
-
-// DISPID for IAnalogTVAudioComponent interface
-DISPID_CHTUNER_ATVAC_CHANNEL = 101,
-
-// DISPIDs for IAnalogTVDataComponent interface
-DISPID_CHTUNER_ATVDC_SYSTEM = 101,
-DISPID_CHTUNER_ATVDC_CONTENT = 102,
-
-// DISPID for IChannelTuneRequest interface
-DISPID_CHTUNER_CTR_CHANNEL = 101,
-
-// DISPID IATSCChannelTuneRequest
-DISPID_CHTUNER_ACTR_MINOR_CHANNEL = 201,
-
-// DISPIDs for IDVBComponent interface
-DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID = 101,
-DISPID_DVBTUNER_DVBC_PID = 102,
-DISPID_DVBTUNER_DVBC_TAG = 103,
-DISPID_DVBTUNER_DVBC_COMPONENTTYPE = 104,
-
-// DISPIDs for IDVBTuneRequest interface
-DISPID_DVBTUNER_ONID = 101,
-DISPID_DVBTUNER_TSID = 102,
-DISPID_DVBTUNER_SID = 103,
-
-// DISPIDs for IMPEG2TuneRequest interface
-DISPID_MP2TUNER_TSID = 101,
-DISPID_MP2TUNER_PROGNO = 102,
-
-// DISPIDs for IMPEG2TuneRequestFactory interface
-DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST = 1,
-
-};
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Tuning Space Container
-//////////////////////////////////////////////////////////////////////////////////////
-// simple read-only collection of tuning spaces for enumerating subsets of the total
-// set of system tuning spaces
- [
- object,
- uuid(901284E4-33FE-4b69-8D63-634A596F3756),
- dual,
- oleautomation,
- nonextensible,
- helpstring("Tuning Space Collection Interface"),
- pointer_default(unique)
- ]
- interface ITuningSpaces : IDispatch
- {
-
- [propget, helpstring("Number of items in the collection")]
- HRESULT Count(
- [out, retval] long *Count
- );
-
- [propget, id(DISPID_NEWENUM), hidden, restricted]
- HRESULT _NewEnum(
- [out, retval] IEnumVARIANT** NewEnum
- );
-
- [id(DISPID_VALUE),
- propget,
- helpstring("Find the Tuning Space with the specified Index")]
- HRESULT Item(
- [in] VARIANT varIndex,
- [out, retval] ITuningSpace** TuningSpace
- );
-
- [propget, hidden, restricted,
- helpstring("convenience function so C++ apps don't have to unpack VARIANT")]
- HRESULT EnumTuningSpaces(
- [out, retval] IEnumTuningSpaces** NewEnum
- );
-
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Tuning Space Container
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- uuid(5B692E84-E2F1-11d2-9493-00C04F72D980),
- dual,
- oleautomation,
- hidden,
- nonextensible,
- helpstring("Tuning Space Container Interface"),
- pointer_default(unique)
- ]
- interface ITuningSpaceContainer : IDispatch
- {
-
- [propget, helpstring("Number of items in the collection")]
- HRESULT Count(
- [out, retval] long *Count
- );
-
- [propget, id(DISPID_NEWENUM), hidden, restricted]
- HRESULT _NewEnum(
- [out, retval] IEnumVARIANT** NewEnum
- );
-
- [id(DISPID_VALUE),
- propget,
- helpstring("Find the Tuning Space with the specified Index")]
- HRESULT Item(
- [in] VARIANT varIndex,
- [out, retval] ITuningSpace** TuningSpace
- );
- [id(DISPID_VALUE),
- propput,
- helpstring("Change the Tuning Space with the specified Index")]
- HRESULT Item([in] VARIANT varIndex, [in] ITuningSpace *TuningSpace);
-
- [helpstring("Returns the collection of Tuning Spaces with the same implementation")]
- HRESULT TuningSpacesForCLSID(
- [in] BSTR SpaceCLSID,
- [out, retval] ITuningSpaces** NewColl
- );
-
- [hidden, restricted,
- helpstring("Convenience Function for enumerating from C")]
- HRESULT _TuningSpacesForCLSID(
- [in] REFCLSID SpaceCLSID,
- [out, retval] ITuningSpaces** NewColl
- );
-
- [helpstring("Returns the collection of Tuning Spaces matching the name")]
- HRESULT TuningSpacesForName(
- [in] BSTR Name,
- [out, retval] ITuningSpaces** NewColl
- );
-
- [helpstring("Find Local ID Number of the specified Tuning Space")]
- HRESULT FindID(
- [in] ITuningSpace *TuningSpace,
- [out, retval] long *ID
- );
-
-
- [id(DISPID_ADDITEM),
- helpstring("Add a new Tuning Space to the collection. This tuning space will be persisted unless removed")]
- HRESULT Add(
- [in] ITuningSpace* TuningSpace,
- [out, retval] VARIANT* NewIndex
- );
-
- [propget, hidden, restricted, helpstring("Convenience Function for enumerating collection from C")]
- HRESULT EnumTuningSpaces(
- [out, retval] IEnumTuningSpaces **ppEnum
- );
-
- [id(DISPID_REMOVEITEM),
- helpstring("Remove a Tuning Space from the collection. this tuning space will be deleted from the registry")]
- HRESULT Remove(
- [in] VARIANT Index
- );
-
- [propget, helpstring("Maximum number of items allowed in the collection")]
- HRESULT MaxCount(
- [out, retval] long *MaxCount
- );
-
- // we don't allow script to set this, but we do allow c code to change it.
- [propput, hidden, restricted, helpstring("Maximum number of items allowed in the collection")]
- HRESULT MaxCount(
- [in] long MaxCount
- );
-
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Tuning Space Interfaces
-//////////////////////////////////////////////////////////////////////////////////////
-
-// note: the network type is the clsid of the tuning space implementation
- [
- object,
- uuid(061C6E30-E622-11d2-9493-00C04F72D980),
- dual,
- oleautomation,
- nonextensible,
- helpstring("Tuning Space Interface"),
- pointer_default(unique)
- ]
- interface ITuningSpace : IDispatch
- {
- [propget, id(DISPID_TUNER_TS_UNIQUENAME),
- helpstring("Unique name of the Tuning Space")]
- HRESULT UniqueName(
- [out, retval] BSTR *Name
- );
-
- [propput, id(DISPID_TUNER_TS_UNIQUENAME),
- helpstring("Unique name of the Tuning Space")]
- HRESULT UniqueName(
- [in] BSTR Name
- );
-
- [propget, id(DISPID_TUNER_TS_FRIENDLYNAME),
- helpstring("User-friendly name of the Tuning Space")]
- HRESULT FriendlyName(
- [out, retval] BSTR *Name
- );
-
- [propput, id(DISPID_TUNER_TS_FRIENDLYNAME),
- helpstring("User-friendly name of the Tuning Space")]
- HRESULT FriendlyName(
- [in] BSTR Name
- );
-
- [propget, id(DISPID_TUNER_TS_CLSID),
- helpstring("Returns the clsid of the tuning space implementation. provides script access to IPersist:GetClassID")]
- HRESULT CLSID(
- [out, retval] BSTR* SpaceCLSID
- );
-
- [propget, id(DISPID_TUNER_TS_NETWORKTYPE),
- helpstring("Network Type (Network Proivder CLSID)")]
- HRESULT NetworkType(
- [out, retval] BSTR *NetworkTypeGuid
- );
- [propput, id(DISPID_TUNER_TS_NETWORKTYPE),
- helpstring("Network Type (Network Proivder CLSID)")]
- HRESULT NetworkType(
- [in] BSTR NetworkTypeGuid
- );
-
- [propget, id(DISPID_TUNER_TS__NETWORKTYPE),
- helpstring("Network Type (Network Proivder CLSID)"), hidden, restricted]
- HRESULT _NetworkType(
- [out, retval] GUID* NetworkTypeGuid
- );
- [propput, id(DISPID_TUNER_TS__NETWORKTYPE),
- helpstring("Network Type (Network Proivder CLSID)"), hidden, restricted]
- HRESULT _NetworkType(
- [in] REFCLSID NetworkTypeGuid
- );
-
- // this method creates the "best" kind of tune request for this tuning space.
- // the tuning space may support other kinds of tune requests created via
- // other factory mechanisms(for example, see mpeg2tunerequestfactory). but,
- // this method is the preferred way to get a tune request as it always returns
- // the optimal type of tune request for this space.
- [id(DISPID_TUNER_TS_CREATETUNEREQUEST),
- helpstring("Create a Tune Request object")]
- HRESULT CreateTuneRequest(
- [out, retval] ITuneRequest **TuneRequest
- );
-
- [id(DISPID_TUNER_TS_ENUMCATEGORYGUIDS), hidden, restricted]
- HRESULT EnumCategoryGUIDs(
- [out, retval] IEnumGUID **ppEnum
- );
-
- [id(DISPID_TUNER_TS_ENUMDEVICEMONIKERS), hidden, restricted]
- HRESULT EnumDeviceMonikers(
- [out, retval] IEnumMoniker **ppEnum
- );
-
- [propget, id(DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES)]
- HRESULT DefaultPreferredComponentTypes(
- [out, retval] IComponentTypes** ComponentTypes
- );
- [propput, id(DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES)]
- HRESULT DefaultPreferredComponentTypes(
- [in] IComponentTypes* NewComponentTypes
- );
-
- // the following property is for the network providers to store frequency/channel maps, frequency/transponder maps
- // or whatever other mapping from carrier frequencies to frequency identifiers are appropriate for the tuning space
- // in question. the bstr is treated as a binary blob. it is expected to contain embedded nulls, and it may be formatted
- // internally in whatever fashion the network provider sees fit.
- [propget, id(DISPID_TUNER_TS_FREQMAP)]
- HRESULT FrequencyMapping([out, retval] BSTR *pMapping);
- [propput, id(DISPID_TUNER_TS_FREQMAP)]
- HRESULT FrequencyMapping(BSTR Mapping);
-
- // the following property provides a starting point for the initial IScanningTuner after installation
- [propget, id(DISPID_TUNER_TS_DEFLOCATOR)]
- HRESULT DefaultLocator([out, retval] ILocator **LocatorVal);
- [propput, id(DISPID_TUNER_TS_DEFLOCATOR)]
- HRESULT DefaultLocator([in]ILocator *LocatorVal);
-
- HRESULT Clone([out, retval] ITuningSpace **NewTS);
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- hidden,
- restricted,
- object,
- uuid(8B8EB248-FC2B-11d2-9D8C-00C04F72D980),
- pointer_default(unique)
- ]
- interface IEnumTuningSpaces : IUnknown
- {
- HRESULT Next(
- [in] ULONG celt,
- [out, size_is(celt), length_is(*pceltFetched)]
- ITuningSpace** rgelt,
- [out] ULONG* pceltFetched
- );
-
- HRESULT Skip(
- [in] ULONG celt
- );
-
- HRESULT Reset(void);
-
- HRESULT Clone(
- [out] IEnumTuningSpaces** ppEnum
- );
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(ADA0B268-3B19-4e5b-ACC4-49F852BE13BA),
- pointer_default(unique)
- ]
- interface IDVBTuningSpace : ITuningSpace
- {
- [propget, id(DISPID_TUNER_TS_DVB_SYSTEMTYPE),
- helpstring("Type of DVB System")
- ]
- HRESULT SystemType(
- [out, retval] DVBSystemType *SysType
- );
- [propput, id(DISPID_TUNER_TS_DVB_SYSTEMTYPE),
- helpstring("Type of DVB System")
- ]
- HRESULT SystemType(
- [in] DVBSystemType SysType
- );
-
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(843188B4-CE62-43db-966B-8145A094E040),
- pointer_default(unique)
- ]
- interface IDVBTuningSpace2 : IDVBTuningSpace
- {
- [propget, id(DISPID_TUNER_TS_DVB2_NETWORK_ID),
- helpstring("Network ID of DVB System")
- ]
- HRESULT NetworkID(
- [out, retval] long *NetworkID
- );
- [propput, id(DISPID_TUNER_TS_DVB2_NETWORK_ID),
- helpstring("Network ID of DVB System")
- ]
- HRESULT NetworkID(
- [in] long NetworkID
- );
-
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(CDF7BE60-D954-42fd-A972-78971958E470),
- pointer_default(unique)
- ]
- interface IDVBSTuningSpace : IDVBTuningSpace2
- {
-
- [propget, id(DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ),
- helpstring("Low Oscillator Frequency of DVB System in KHZ units")
- ]
- HRESULT LowOscillator(
- [out, retval] long *LowOscillator
- );
- [propput, id(DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ),
- helpstring("Low Oscillator Frequency of DVB System in KHZ units")
- ]
- HRESULT LowOscillator(
- [in] long LowOscillator
- );
- [propget, id(DISPID_TUNER_TS_DVBS_HI_OSC_FREQ),
- helpstring("High Oscillator Frequency of DVB System in KHZ units")
- ]
- HRESULT HighOscillator(
- [out, retval] long *HighOscillator
- );
- [propput, id(DISPID_TUNER_TS_DVBS_HI_OSC_FREQ),
- helpstring("High Oscillator Frequency of DVB System in KHZ units")
- ]
- HRESULT HighOscillator(
- [in] long HighOscillator
- );
- [propget, id(DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ),
- helpstring("LNB Switch Frequency of DVB System in KHZ units")
- ]
- HRESULT LNBSwitch(
- [out, retval] long *LNBSwitch
- );
- [propput, id(DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ),
- helpstring("LNB Switch Frequency of DVB System in KHZ units")
- ]
- HRESULT LNBSwitch(
- [in] long LNBSwitch
- );
- [propget, id(DISPID_TUNER_TS_DVBS_INPUT_RANGE),
- helpstring("Which Option/Switch contains the requested signal source")
- ]
- HRESULT InputRange(
- [out, retval] BSTR *InputRange
- );
- [propput, id(DISPID_TUNER_TS_DVBS_INPUT_RANGE),
- helpstring("Which Option/Switch contains the requested signal source")
- ]
- HRESULT InputRange(
- [in] BSTR InputRange
- );
- [propget, id(DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION),
- helpstring("Which Option/Switch contains the requested signal source")
- ]
- HRESULT SpectralInversion(
- [out, retval] SpectralInversion *SpectralInversionVal
- );
- [propput, id(DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION),
- helpstring("Which Option/Switch contains the requested signal source")
- ]
- HRESULT SpectralInversion(
- [in] SpectralInversion SpectralInversionVal
- );
-
-
- }
-
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(E48244B8-7E17-4f76-A763-5090FF1E2F30),
- pointer_default(unique)
- ]
- interface IAuxInTuningSpace : ITuningSpace
- {
- }
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(2A6E293C-2595-11d3-B64C-00C04F79498E),
- pointer_default(unique)
- ]
- interface IAnalogTVTuningSpace : ITuningSpace
- {
- [propget, id(DISPID_TUNER_TS_ATV_MINCHANNEL),
- helpstring("Smallest channel number ever provided by this tuning space")
- ]
- HRESULT MinChannel(
- [out, retval] long *MinChannelVal
- );
- [propput, id(DISPID_TUNER_TS_ATV_MINCHANNEL),
- helpstring("Smallest channel number ever provided by this tuning space")
- ]
- HRESULT MinChannel(
- [in] long NewMinChannelVal
- );
- [propget, id(DISPID_TUNER_TS_ATV_MAXCHANNEL),
- helpstring("Largest channel number ever provided by this tuning space")
- ]
- HRESULT MaxChannel(
- [out, retval] long *MaxChannelVal
- );
- [propput, id(DISPID_TUNER_TS_ATV_MAXCHANNEL),
- helpstring("Largest channel number ever provided by this tuning space")
- ]
- HRESULT MaxChannel(
- [in] long NewMaxChannelVal
- );
- [propget, id(DISPID_TUNER_TS_ATV_INPUTTYPE),
- helpstring("Input type for this tuning space")
- ]
- HRESULT InputType([out, retval] TunerInputType *InputTypeVal);
- [propput, id(DISPID_TUNER_TS_ATV_INPUTTYPE),
- helpstring("Input type for this tuning space")
- ]
- HRESULT InputType([in] TunerInputType NewInputTypeVal);
- [propget, id(DISPID_TUNER_TS_ATV_COUNTRYCODE),
- helpstring("International dialing prefix for country of physical broadcast source")
- ]
- HRESULT CountryCode([out, retval] long *CountryCodeVal);
- [propput, id(DISPID_TUNER_TS_ATV_COUNTRYCODE),
- helpstring("International dialing prefix for country of physical broadcast source")
- ]
- HRESULT CountryCode([in] long NewCountryCodeVal);
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(0369B4E2-45B6-11d3-B650-00C04F79498E),
- pointer_default(unique)
- ]
-// note: we inherit ATSC from analog because we need the same properties.
-// - the definition of channel is overloaded to be the major channel,
-// - input type allows us to distinguish between broadcast and cable frequencies
-// which allows us to use the atsc tuning space class for "open cable".
-// - country code will allow us to redefine physical channel frequencies
-// if any other countries adopt ATSC which may happen in Latin America in particular.
- interface IATSCTuningSpace : IAnalogTVTuningSpace
- {
- [propget, id(DISPID_TUNER_TS_ATSC_MINMINORCHANNEL),
- helpstring("Smallest minor channel number ever provided by this tuning space")
- ]
- HRESULT MinMinorChannel(
- [out, retval] long *MinMinorChannelVal
- );
- [propput, id(DISPID_TUNER_TS_ATSC_MINMINORCHANNEL),
- helpstring("Smallest minor channel number ever provided by this tuning space")
- ]
- HRESULT MinMinorChannel(
- [in] long NewMinMinorChannelVal
- );
- [propget, id(DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL),
- helpstring("Largest minor channel number ever provided by this tuning space")
- ]
- HRESULT MaxMinorChannel(
- [out, retval] long *MaxMinorChannelVal
- );
- [propput, id(DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL),
- helpstring("Largest minor channel number ever provided by this tuning space")
- ]
- HRESULT MaxMinorChannel(
- [in] long NewMaxMinorChannelVal
- );
- [propget, id(DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL),
- helpstring("Smallest physical channel number ever provided by this tuning space")
- ]
- HRESULT MinPhysicalChannel(
- [out, retval] long *MinPhysicalChannelVal
- );
- [propput, id(DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL),
- helpstring("Smallest physical channel number ever provided by this tuning space")
- ]
- HRESULT MinPhysicalChannel(
- [in] long NewMinPhysicalChannelVal
- );
- [propget, id(DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL),
- helpstring("Largest physical channel number ever provided by this tuning space")
- ]
- HRESULT MaxPhysicalChannel(
- [out, retval] long *MaxPhysicalChannelVal
- );
- [propput, id(DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL),
- helpstring("Largest physical channel number ever provided by this tuning space")
- ]
- HRESULT MaxPhysicalChannel(
- [in] long NewMaxPhysicalChannelVal
- );
-
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- dual,
- oleautomation,
- nonextensible,
- uuid(2A6E293B-2595-11d3-B64C-00C04F79498E),
- pointer_default(unique)
- ]
- interface IAnalogRadioTuningSpace : ITuningSpace {
- [propget, id(DISPID_TUNER_TS_AR_MINFREQUENCY),
- helpstring("Smallest frequency(KHz) ever used by this tuning space")
- ]
- HRESULT MinFrequency(
- [out, retval] long *MinFrequencyVal
- );
- [propput, id(DISPID_TUNER_TS_AR_MINFREQUENCY),
- helpstring("Smallest frequency(KHz) ever used by this tuning space")
- ]
- HRESULT MinFrequency(
- [in] long NewMinFrequencyVal
- );
- [propget, id(DISPID_TUNER_TS_AR_MAXFREQUENCY),
- helpstring("Largest frequency(KHz) ever used by this tuning space")
- ]
- HRESULT MaxFrequency(
- [out, retval] long *MaxFrequencyVal
- );
- [propput, id(DISPID_TUNER_TS_AR_MAXFREQUENCY),
- helpstring("Largest frequency(KHz) ever used by this tuning space")
- ]
- HRESULT MaxFrequency(
- [in] long NewMaxFrequencyVal
- );
- [propget, id(DISPID_TUNER_TS_AR_STEP),
- helpstring("Default step value(KHz) to next frequency for this tuning space")
- ]
- HRESULT Step(
- [out, retval] long *StepVal
- );
- [propput, id(DISPID_TUNER_TS_AR_STEP),
- helpstring("Default step value(KHz) to next frequency for this tuning space")
- ]
- HRESULT Step(
- [in] long NewStepVal
- );
- }
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Tune Request Interfaces
-//////////////////////////////////////////////////////////////////////////////////////
-// tune requests(of any kind) can only be obtained from tune request factories such as
-// ITuningSpace::CreateTuneRequest. one reason for this is that we always want to be
-// certain that a tune request is bound to the right tuning space. this means we don't
-// have to perform consistency checks all over the place.
- [
- object,
- nonextensible,
- uuid(07DDC146-FC3D-11d2-9D8C-00C04F72D980),
- dual,
- oleautomation,
- helpstring("Tune Request Interface"),
- pointer_default(unique)
- ]
- interface ITuneRequest : IDispatch
- {
- [propget, id(DISPID_TUNER_TR_TUNINGSPACE),
- helpstring("Tuning Space object")]
- HRESULT TuningSpace(
- [out, retval] ITuningSpace **TuningSpace
- );
- [propget, id(DISPID_TUNER_TR_COMPONENTS),
- helpstring("Components collection")]
- HRESULT Components(
- [out, retval] IComponents **Components
- );
- [id(DISPID_TUNER_TR_CLONE),
- helpstring("Create a new copy of this tune request")]
- HRESULT Clone(
- [out, retval] ITuneRequest **NewTuneRequest
- );
- [propget, id(DISPID_TUNER_TR_LOCATOR),
- helpstring("Locator Object")]
- HRESULT Locator(
- [out, retval] ILocator **Locator
- );
- [propput, id(DISPID_TUNER_TR_LOCATOR),
- helpstring("Locator Object")]
- HRESULT Locator(
- [in] ILocator *Locator
- );
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- nonextensible,
- uuid(0369B4E0-45B6-11d3-B650-00C04F79498E),
- dual,
- oleautomation,
- helpstring("Channel Tune Request Interface"),
- pointer_default(unique)
- ]
- interface IChannelTuneRequest : ITuneRequest
- {
- [propget, id(DISPID_CHTUNER_CTR_CHANNEL),
- helpstring("Channel")]
- HRESULT Channel(
- [out, retval] long *Channel
- );
- [propput, id(DISPID_CHTUNER_CTR_CHANNEL),
- helpstring("Channel")]
- HRESULT Channel(
- [in] long Channel
- );
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- nonextensible,
- uuid(0369B4E1-45B6-11d3-B650-00C04F79498E),
- dual,
- oleautomation,
- helpstring("ATSC Channel Tune Request Interface"),
- pointer_default(unique)
- ]
- interface IATSCChannelTuneRequest : IChannelTuneRequest
- {
- [propget, id(DISPID_CHTUNER_ACTR_MINOR_CHANNEL),
- helpstring("Minor Channel")]
- HRESULT MinorChannel(
- [out, retval] long *MinorChannel
- );
- [propput, id(DISPID_CHTUNER_ACTR_MINOR_CHANNEL),
- helpstring("Minor Channel")]
- HRESULT MinorChannel(
- [in] long MinorChannel
- );
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- nonextensible,
- uuid(0D6F567E-A636-42bb-83BA-CE4C1704AFA2),
- dual,
- oleautomation,
- helpstring("DVB Tune Request Interface"),
- pointer_default(unique)
- ]
- interface IDVBTuneRequest : ITuneRequest
- {
- [propget, id(DISPID_DVBTUNER_ONID),
- helpstring("Original Network ID")]
- HRESULT ONID(
- [out, retval] long *ONID
- );
- [propput, id(DISPID_DVBTUNER_ONID),
- helpstring("Original Network ID")]
- HRESULT ONID(
- [in] long ONID
- );
- [propget, id(DISPID_DVBTUNER_TSID),
- helpstring("Transport Stream ID")]
- HRESULT TSID(
- [out, retval] long *TSID
- );
- [propput, id(DISPID_DVBTUNER_TSID),
- helpstring("Transport Stream ID")]
- HRESULT TSID(
- [in] long TSID
- );
- [propget, id(DISPID_DVBTUNER_SID),
- helpstring("Service ID")]
- HRESULT SID(
- [out, retval] long *SID
- );
- [propput, id(DISPID_DVBTUNER_SID),
- helpstring("Service ID")]
- HRESULT SID(
- [in] long SID
- );
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
-/// There are times(for example, reading from a file) when its useful to be able to tune
-/// a basic mpeg2 transport stream that contains minimal tables. this requires the least
-/// common denominator mpeg2 xport stream id information
-/// the following tune request supplies these properties. it can typiclly only be obtained from
-/// an mpeg2tunerequestfactory object. no known tune request(at this time) will return this
-/// from their createtunerequest() method. in other words, this is not the "best" tune request
-/// for any of the current tuning spaces.
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- nonextensible,
- uuid(EB7D987F-8A01-42ad-B8AE-574DEEE44D1A),
- dual,
- oleautomation,
- helpstring("MPEG2 Tune Request Interface"),
- pointer_default(unique)
- ]
- interface IMPEG2TuneRequest : ITuneRequest
- {
- [propget, id(DISPID_MP2TUNER_TSID),
- helpstring("Transport Stream ID")]
- HRESULT TSID(
- [out, retval] long *TSID
- );
- [propput, id(DISPID_MP2TUNER_TSID),
- helpstring("Transport Stream ID")]
- HRESULT TSID(
- [in] long TSID
- );
- [propget, id(DISPID_MP2TUNER_PROGNO),
- helpstring("Program Number ID")]
- HRESULT ProgNo(
- [out, retval] long *ProgNo
- );
- [propput, id(DISPID_MP2TUNER_PROGNO),
- helpstring("Program Number ID")]
- HRESULT ProgNo(
- [in] long ProgNo
- );
- }
-
- [
- object,
- nonextensible,
- hidden,
- uuid(14E11ABD-EE37-4893-9EA1-6964DE933E39),
- dual,
- oleautomation,
- helpstring("MPEG2 Tune Request Factory Interface"),
- pointer_default(unique)
- ]
- interface IMPEG2TuneRequestFactory : IDispatch
- {
- [id(DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST),
- helpstring("Create MPEG2 Tune Request for specified tuning space(if possible)")]
- HRESULT CreateTuneRequest(
- [in] ITuningSpace *TuningSpace,
- [out, retval] IMPEG2TuneRequest **TuneRequest
- );
- }
-
- [
- object,
- hidden,
- restricted,
- nonextensible,
- uuid(1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF),
- helpstring("MPEG2 Tune Request Supported Interface"),
- pointer_default(unique)
- ]
- interface IMPEG2TuneRequestSupport : IUnknown
- {
- }
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Tuner Interfaces
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(28C52640-018A-11d3-9D8E-00C04F72D980),
- helpstring("Tuner Interface"),
- pointer_default(unique)
- ]
- interface ITuner : IUnknown
- {
- [propget, helpstring("Tuning Space object")]
- HRESULT TuningSpace(
- [out, retval] ITuningSpace **TuningSpace
- );
-
- [propput, helpstring("Tuning Space object")]
- HRESULT TuningSpace(
- [in] ITuningSpace *TuningSpace
- );
-
- [hidden, restricted, helpstring("Returns an enumerator for Tuning Spaces accepted by this tuner")]
- HRESULT EnumTuningSpaces(
- [out, retval] IEnumTuningSpaces **ppEnum
- );
-
- [propget, helpstring("Tune Request object")]
- HRESULT TuneRequest(
- [out, retval] ITuneRequest **TuneRequest
- );
-
- [propput, helpstring("Tune Request object")]
- HRESULT TuneRequest(
- [in] ITuneRequest *TuneRequest
- );
-
- [helpstring("Validate the tuning request without tuning")]
- HRESULT Validate(
- [in] ITuneRequest *TuneRequest
- );
-
- [propget, helpstring("Preferred Component Types collection")]
- HRESULT PreferredComponentTypes(
- [out, retval] IComponentTypes **ComponentTypes
- );
-
- [propput, helpstring("Preferred Component Types collection")]
- HRESULT PreferredComponentTypes(
- [in] IComponentTypes *ComponentTypes
- );
-
- [propget, helpstring("Signal Strength")]
- HRESULT SignalStrength(
- [out, retval] long *Strength
- );
-
- [helpstring("Trigger Signal events (interval in milliseconds; 0 turns off trigger)")]
- HRESULT TriggerSignalEvents(
- [in] long Interval
- );
- }
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(1DFD0A5C-0284-11d3-9D8E-00C04F72D980),
- helpstring("Scanning Tuner Interface"),
- pointer_default(unique)
- ]
- interface IScanningTuner : ITuner
- {
- [helpstring("Seek to the next valid selection")]
- HRESULT SeekUp(
- );
-
- [helpstring("Seek to the previous valid selection")]
- HRESULT SeekDown(
- );
-
- [helpstring("Scan for valid selections upward")]
- HRESULT ScanUp(
- [in] long MillisecondsPause
- );
-
- [helpstring("Scan for valid selections downward")]
- HRESULT ScanDown(
- [in] long MillisecondsPause
- );
-
- [helpstring("Enter the device's autoprogram mode")]
- HRESULT AutoProgram(
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Component Type Interfaces
-//////////////////////////////////////////////////////////////////////////////////////
-
- // Component Category
-
- [
- object,
- hidden,
- nonextensible,
- uuid(6A340DC0-0311-11d3-9D8E-00C04F72D980),
- dual,
- oleautomation,
- helpstring("Component Type Interface"),
- pointer_default(unique)
- ]
- interface IComponentType : IDispatch
- {
- [propget, id(DISPID_TUNER_CT_CATEGORY),
- helpstring("General category of component")]
- HRESULT Category(
- [out, retval] ComponentCategory *Category
- );
- [propput, id(DISPID_TUNER_CT_CATEGORY),
- helpstring("General category of component")]
- HRESULT Category(
- [in] ComponentCategory Category
- );
-
- [propget, id(DISPID_TUNER_CT_MEDIAMAJORTYPE),
- helpstring("DirectShow MediaType Major Type Guid")]
- HRESULT MediaMajorType(
- [out, retval] BSTR *MediaMajorType
- );
- [propput, id(DISPID_TUNER_CT_MEDIAMAJORTYPE),
- helpstring("DirectShow MediaType Major Type Guid")]
- HRESULT MediaMajorType(
- [in] BSTR MediaMajorType
- );
- [propget, id(DISPID_TUNER_CT__MEDIAMAJORTYPE),
- helpstring("DirectShow MediaType Major Type Guid"), hidden, restricted]
- HRESULT _MediaMajorType(
- [out, retval] GUID* MediaMajorTypeGuid
- );
- [propput, id(DISPID_TUNER_CT__MEDIAMAJORTYPE),
- helpstring("DirectShow MediaType Major Type Guid"), hidden, restricted]
- HRESULT _MediaMajorType(
- [in] REFCLSID MediaMajorTypeGuid
- );
- [propget, id(DISPID_TUNER_CT_MEDIASUBTYPE),
- helpstring("DirectShow MediaType Sub Type Guid")]
- HRESULT MediaSubType(
- [out, retval] BSTR *MediaSubType
- );
- [propput, id(DISPID_TUNER_CT_MEDIASUBTYPE),
- helpstring("DirectShow MediaType Sub Type Guid")]
- HRESULT MediaSubType(
- [in] BSTR MediaSubType
- );
- [propget, id(DISPID_TUNER_CT__MEDIASUBTYPE),
- helpstring("DirectShow MediaType Sub Type Guid"), hidden, restricted]
- HRESULT _MediaSubType(
- [out, retval] GUID* MediaSubTypeGuid
- );
- [propput, id(DISPID_TUNER_CT__MEDIASUBTYPE),
- helpstring("DirectShow MediaType Sub Type Guid"), hidden, restricted]
- HRESULT _MediaSubType(
- [in] REFCLSID MediaSubTypeGuid
- );
- [propget, id(DISPID_TUNER_CT_MEDIAFORMATTYPE),
- helpstring("DirectShow MediaType Format Guid")]
- HRESULT MediaFormatType(
- [out, retval] BSTR *MediaFormatType
- );
- [propput, id(DISPID_TUNER_CT_MEDIAFORMATTYPE),
- helpstring("DirectShow MediaType Format Guid")]
- HRESULT MediaFormatType(
- [in] BSTR MediaFormatType
- );
- [propget, id(DISPID_TUNER_CT__MEDIAFORMATTYPE),
- helpstring("DirectShow MediaType Format Guid"), hidden, restricted]
- HRESULT _MediaFormatType(
- [out, retval] GUID* MediaFormatTypeGuid
- );
- [propput, id(DISPID_TUNER_CT__MEDIAFORMATTYPE),
- helpstring("DirectShow MediaType Format Guid"), hidden, restricted]
- HRESULT _MediaFormatType(
- [in] REFCLSID MediaFormatTypeGuid
- );
-
- [propget, id(DISPID_TUNER_CT_MEDIATYPE), hidden, restricted,
- helpstring("DirectShow MediaType Guid, this only retrieves major, sub, format guids not the entire struct")]
- HRESULT MediaType(
- [out, retval] AM_MEDIA_TYPE *MediaType
- );
- [propput, id(DISPID_TUNER_CT_MEDIATYPE), hidden, restricted,
- helpstring("DirectShow MediaType Guid, this only retrieves major, sub, format guids not the entire struct")]
- HRESULT MediaType(
- [in] AM_MEDIA_TYPE *MediaType
- );
-
- [id(DISPID_TUNER_CT_CLONE),
- helpstring("Create a copy of this component type")]
- HRESULT Clone(
- [out, retval] IComponentType **NewCT
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(B874C8BA-0FA2-11d3-9D8E-00C04F72D980),
- dual,
- oleautomation,
- helpstring("Language Component Type Interface"),
- pointer_default(unique)
- ]
- interface ILanguageComponentType : IComponentType
- {
- [propget, id(DISPID_TUNER_LCT_LANGID),
- helpstring("Language Identifier for Substream Content Language")]
- HRESULT LangID(
- [out, retval] long *LangID
- );
-
- [propput, id(DISPID_TUNER_LCT_LANGID),
- helpstring("Language Identifier for Substream Content Language")]
- HRESULT LangID(
- [in] long LangID
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(2C073D84-B51C-48c9-AA9F-68971E1F6E38),
- dual,
- oleautomation,
- helpstring("MPEG2 Component Type Interface"),
- pointer_default(unique)
- ]
- interface IMPEG2ComponentType : ILanguageComponentType
- {
- [propget, id(DISPID_TUNER_MP2CT_TYPE),
- helpstring("MPEG2 Stream Type")]
- HRESULT StreamType(
- [out, retval] MPEG2StreamType *MP2StreamType
- );
-
- [propput, id(DISPID_TUNER_MP2CT_TYPE),
- helpstring("MPEG2 Stream Type")]
- HRESULT StreamType(
- [in] MPEG2StreamType MP2StreamType
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
-
- [
- object,
- hidden,
- nonextensible,
- uuid(FC189E4D-7BD4-4125-B3B3-3A76A332CC96),
- dual,
- oleautomation,
- helpstring("ATSC Component Type Interface"),
- pointer_default(unique)
- ]
- interface IATSCComponentType : IMPEG2ComponentType
- {
- [propget, id(DISPID_TUNER_ATSCCT_FLAGS),
- helpstring("ATSC Component Type Flags")]
- HRESULT Flags(
- [out, retval] long *Flags
- );
-
- [propput, id(DISPID_TUNER_ATSCCT_FLAGS),
- helpstring("ATSC Component Type Flags")]
- HRESULT Flags(
- [in] long flags
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- hidden, restricted,
- object,
- uuid(8A674B4A-1F63-11d3-B64C-00C04F79498E),
- pointer_default(unique)
- ]
- interface IEnumComponentTypes : IUnknown
- {
- HRESULT Next(
- [in] ULONG celt,
- [out, size_is(celt), length_is(*pceltFetched)]
- IComponentType** rgelt,
- [out] ULONG* pceltFetched
- );
-
- HRESULT Skip(
- [in] ULONG celt
- );
-
- HRESULT Reset(void);
-
- HRESULT Clone(
- [out] IEnumComponentTypes** ppEnum
- );
- }
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Component Type Container
-//////////////////////////////////////////////////////////////////////////////////////
-
- [
- object,
- hidden,
- nonextensible,
- uuid(0DC13D4A-0313-11d3-9D8E-00C04F72D980),
- dual,
- oleautomation,
- helpstring("ComponentType Collection Interface"),
- pointer_default(unique)
- ]
- interface IComponentTypes : IDispatch
- {
- [propget, helpstring("Number of items in the collection")]
- HRESULT Count(
- [out, retval] long *Count
- );
-
- [propget, id(DISPID_NEWENUM), hidden, restricted]
- HRESULT _NewEnum(
- [out, retval] IEnumVARIANT **ppNewEnum
- );
-
- [hidden, restricted, helpstring("Convenience Function for Use with C")]
- HRESULT EnumComponentTypes(
- [out, retval] IEnumComponentTypes **ppNewEnum
- );
-
- [id(DISPID_VALUE),
- propget,
- helpstring("Get the ComponentType at the specified index")]
- HRESULT Item(
- [in] VARIANT Index,
- [out, retval] IComponentType **ComponentType
- );
-
- [id(DISPID_VALUE),
- propput,
- helpstring("Get the ComponentType at the specified index")]
- HRESULT Item(
- [in] VARIANT Index,
- [in] IComponentType *ComponentType
- );
-
- [id(DISPID_ADDITEM),
- helpstring("Append the ComponentType to the collection")]
- HRESULT Add(
- [in] IComponentType *ComponentType,
- [out, retval] VARIANT *NewIndex
- );
-
- [id(DISPID_REMOVEITEM),
- helpstring("Clear the collection")]
- HRESULT Remove(
- [in] VARIANT Index
- );
-
- [helpstring("Copy the collection")]
- HRESULT Clone([out, retval] IComponentTypes **NewList);
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Component Interfaces
-//////////////////////////////////////////////////////////////////////////////////////
-
- [
- object,
- nonextensible,
- uuid(1A5576FC-0E19-11d3-9D8E-00C04F72D980),
- dual,
- oleautomation,
- helpstring("Component Interface"),
- pointer_default(unique)
- ]
- interface IComponent : IDispatch
- {
- [propget, id(DISPID_TUNER_C_TYPE),
- helpstring("Component Type")]
- HRESULT Type(
- [out, retval] IComponentType** CT
- );
-
- // only loaders initialize components
- [hidden, restricted, propput, id(DISPID_TUNER_C_TYPE),
- helpstring("Component Type")]
- HRESULT Type(
- [in] IComponentType* CT
- );
-
- // NOTE: this langid is *not* the same as the langid
- // in the componenttype(if the componenttype is a languagecomponenttype)
- // the langid in the component type is the language of the content this
- // component is describing. the following langid in the component is the
- // language of the descriptive info in the component object.
- [propget, id(DISPID_TUNER_C_LANGID),
- helpstring("Language Identifier for Description Language")]
- HRESULT DescLangID(
- [out, retval] long *LangID
- );
-
- [propput, id(DISPID_TUNER_C_LANGID),
- helpstring("Language Identifier for Description Language")]
- HRESULT DescLangID(
- [in] long LangID
- );
-
- [propget, id(DISPID_TUNER_C_STATUS),
- helpstring("Component Status")]
- HRESULT Status(
- [out, retval] ComponentStatus *Status
- );
-
- [propput, id(DISPID_TUNER_C_STATUS),
- helpstring("Component Status")]
- HRESULT Status(
- [in] ComponentStatus Status
- );
-
- [propget, id(DISPID_TUNER_C_DESCRIPTION),
- helpstring("Component Description")]
- HRESULT Description(
- [out, retval] BSTR *Description
- );
-
- // restricted: only loaders will initialize components
- [hidden, restricted, propput, id(DISPID_TUNER_C_DESCRIPTION),
- helpstring("Component Description")]
- HRESULT Description(
- [in] BSTR Description
- );
-
- [id(DISPID_TUNER_C_CLONE),
- helpstring("Copy Component")]
- HRESULT Clone(
- [out, retval] IComponent **NewComponent
- );
-
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- nonextensible,
- uuid(1493E353-1EB6-473c-802D-8E6B8EC9D2A9),
- dual,
- oleautomation,
- helpstring("MPEG2 Component Interface"),
- pointer_default(unique)
- ]
- interface IMPEG2Component : IComponent
- {
- [propget, id(DISPID_TUNER_C_MP2_PID),
- helpstring("MPEG2 Packet ID for this Substream")]
- HRESULT PID(
- [out, retval] long *PID
- );
-
- [propput, id(DISPID_TUNER_C_MP2_PID),
- helpstring("MPEG2 Packet ID for this Substream")]
- HRESULT PID(
- [in] long PID
- );
- [propget, id(DISPID_TUNER_C_MP2_PCRPID),
- helpstring("MPEG2 Packet ID for this Substream's Timestamps")]
- HRESULT PCRPID(
- [out, retval] long *PCRPID
- );
-
- [propput, id(DISPID_TUNER_C_MP2_PCRPID),
- helpstring("MPEG2 Packet ID for this Substream's Timestamps")]
- HRESULT PCRPID(
- [in] long PCRPID
- );
-
- // program number provides reverse lookup to PAT
- [propget, id(DISPID_TUNER_C_MP2_PROGNO),
- helpstring("MPEG2 Program Number")]
- HRESULT ProgramNumber(
- [out, retval] long *ProgramNumber
- );
-
- [propput, id(DISPID_TUNER_C_MP2_PROGNO),
- helpstring("MPEG2 Program Number")]
- HRESULT ProgramNumber(
- [in] long ProgramNumber
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- hidden, restricted,
- object,
- uuid(2A6E2939-2595-11d3-B64C-00C04F79498E),
- pointer_default(unique)
- ]
- interface IEnumComponents : IUnknown
- {
- HRESULT Next(
- [in] ULONG celt,
- [out, size_is(celt), length_is(*pceltFetched)]
- IComponent** rgelt,
- [out] ULONG* pceltFetched
- );
-
- HRESULT Skip(
- [in] ULONG celt
- );
-
- HRESULT Reset(void);
-
- HRESULT Clone(
- [out] IEnumComponents** ppEnum
- );
- }
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Component Container
-//////////////////////////////////////////////////////////////////////////////////////
-
- [
- object,
- nonextensible,
- uuid(FCD01846-0E19-11d3-9D8E-00C04F72D980),
- dual,
- oleautomation,
- helpstring("Component Collection Interface"),
- pointer_default(unique)
- ]
- interface IComponents : IDispatch
- {
- [propget, helpstring("Number of items in the collection")]
- HRESULT Count(
- [out, retval] long *Count
- );
-
- [propget, id(DISPID_NEWENUM), hidden, restricted]
- HRESULT _NewEnum(
- [out, retval] IEnumVARIANT **ppNewEnum
- );
-
- [hidden, restricted, helpstring("Convenience Function for Use with C")]
- HRESULT EnumComponents(
- [out, retval] IEnumComponents **ppNewEnum
- );
-
- [id(DISPID_VALUE),
- propget,
- helpstring("Get the Component at the specified index")]
- HRESULT Item(
- [in] VARIANT Index,
- [out, retval] IComponent **ppComponent
- );
-
- [id(DISPID_ADDITEM),
- helpstring("Add the Component to the collection")]
- HRESULT Add(
- [in] IComponent *Component,
- [out, retval] VARIANT *NewIndex
- );
-
- [id(DISPID_REMOVEITEM),
- helpstring("Remove the Component at the specified index")]
- HRESULT Remove(
- [in] VARIANT Index
- );
-
- [helpstring("Copy the collection")]
- HRESULT Clone([out, retval] IComponents **NewList);
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Component Container
-//////////////////////////////////////////////////////////////////////////////////////
-// this separates the what(general tune request properties) from the where
-
-
-
- [
- object,
- nonextensible,
- uuid(286D7F89-760C-4F89-80C4-66841D2507AA),
- dual,
- oleautomation,
- helpstring("Generic Locator Information"),
- pointer_default(unique)
- ]
- interface ILocator : IDispatch
- {
-
- [propget, id(DISPID_TUNER_L_CARRFREQ), helpstring("Carrier Frequency(KHz)")]
- HRESULT CarrierFrequency(
- [out, retval] long* Frequency
- );
- [propput, id(DISPID_TUNER_L_CARRFREQ), helpstring("Carrier Frequency(KHz)")]
- HRESULT CarrierFrequency(
- [in] long Frequency
- );
- [propget, id(DISPID_TUNER_L_INNERFECMETHOD), helpstring("Inner Fec Type")]
- HRESULT InnerFEC(
- [out, retval] FECMethod* FEC
- );
- [propput, id(DISPID_TUNER_L_INNERFECMETHOD), helpstring("Inner Fec Type")]
- HRESULT InnerFEC(
- [in] FECMethod FEC
- );
- [propget, id(DISPID_TUNER_L_INNERFECRATE), helpstring("Inner Fec Rate")]
- HRESULT InnerFECRate(
- [out, retval] BinaryConvolutionCodeRate* FEC
- );
- [propput, id(DISPID_TUNER_L_INNERFECRATE), helpstring("Inner Fec Rate")]
- HRESULT InnerFECRate(
- [in] BinaryConvolutionCodeRate FEC
- );
- [propget, id(DISPID_TUNER_L_OUTERFECMETHOD), helpstring("Outer Fec Type")]
- HRESULT OuterFEC(
- [out, retval] FECMethod* FEC
- );
- [propput, id(DISPID_TUNER_L_OUTERFECMETHOD), helpstring("Outer Fec Type")]
- HRESULT OuterFEC(
- [in] FECMethod FEC
- );
- [propget, id(DISPID_TUNER_L_OUTERFECRATE), helpstring("Outer Fec Rate")]
- HRESULT OuterFECRate(
- [out, retval] BinaryConvolutionCodeRate* FEC
- );
- [propput, id(DISPID_TUNER_L_OUTERFECRATE), helpstring("Outer Fec Rate")]
- HRESULT OuterFECRate(
- [in] BinaryConvolutionCodeRate FEC
- );
- [propget, id(DISPID_TUNER_L_MOD), helpstring("Modulation Type")]
- HRESULT Modulation(
- [out, retval] ModulationType* Modulation
- );
- [propput, id(DISPID_TUNER_L_MOD), helpstring("Modulation Type")]
- HRESULT Modulation(
- [in] ModulationType Modulation
- );
- [propget, id(DISPID_TUNER_L_SYMRATE), helpstring("Modulation Symbol Rate")]
- HRESULT SymbolRate(
- [out, retval] long* Rate
- );
- [propput, id(DISPID_TUNER_L_SYMRATE), helpstring("Modulation Symbol Rate")]
- HRESULT SymbolRate(
- [in] long Rate
- );
- [id(DISPID_TUNER_L_CLONE), helpstring("Copy the Locator")]
- HRESULT Clone([out, retval] ILocator **NewLocator);
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF),
- dual,
- oleautomation,
- helpstring("ATSC Locator Information"),
- pointer_default(unique)
- ]
- interface IATSCLocator : ILocator
- {
- [propget, id(DISPID_TUNER_L_ATSC_PHYS_CHANNEL),
- helpstring("Physical Channel")]
- HRESULT PhysicalChannel(
- [out, retval] long *PhysicalChannel
- );
- [propput, id(DISPID_TUNER_L_ATSC_PHYS_CHANNEL),
- helpstring("Physical Channel")]
- HRESULT PhysicalChannel(
- [in] long PhysicalChannel
- );
- [propget, id(DISPID_TUNER_L_ATSC_TSID),
- helpstring("Transport Stream ID")]
- HRESULT TSID(
- [out, retval] long *TSID
- );
- [propput, id(DISPID_TUNER_L_ATSC_TSID),
- helpstring("Transport Stream ID")]
- HRESULT TSID(
- [in] long TSID
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
-
- [
- object,
- hidden,
- nonextensible,
- uuid(8664DA16-DDA2-42ac-926A-C18F9127C302),
- dual,
- oleautomation,
- helpstring("DVB Terrestrial Locator Information"),
- pointer_default(unique)
- ]
- interface IDVBTLocator : ILocator
- {
- [propget, id(DISPID_TUNER_L_DVBT_BANDWIDTH), helpstring("Bandwidth")]
- HRESULT Bandwidth(
- [out, retval] long* BandWidthVal
- );
- [propput, id(DISPID_TUNER_L_DVBT_BANDWIDTH), helpstring("Bandwidth")]
- HRESULT Bandwidth(
- [in] long BandwidthVal
- );
-
- [propget, id(DISPID_TUNER_L_DVBT_LPINNERFECMETHOD), helpstring("Inner Fec Type for Low Priority Stream")]
- HRESULT LPInnerFEC(
- [out, retval] FECMethod* FEC
- );
- [propput, id(DISPID_TUNER_L_DVBT_LPINNERFECMETHOD), helpstring("Inner Fec Type for Low Priority Stream")]
- HRESULT LPInnerFEC(
- [in] FECMethod FEC
- );
- [propget, id(DISPID_TUNER_L_DVBT_LPINNERFECRATE), helpstring("Inner Fec Rate for Low Priority Stream")]
- HRESULT LPInnerFECRate(
- [out, retval] BinaryConvolutionCodeRate* FEC
- );
- [propput, id(DISPID_TUNER_L_DVBT_LPINNERFECRATE), helpstring("Inner Fec Rate for Low Priority Stream")]
- HRESULT LPInnerFECRate(
- [in] BinaryConvolutionCodeRate FEC
- );
- [propget, id(DISPID_TUNER_L_DVBT_HALPHA), helpstring("Hierarchical Alpha")]
- HRESULT HAlpha(
- [out, retval] HierarchyAlpha* Alpha
- );
- [propput, id(DISPID_TUNER_L_DVBT_HALPHA), helpstring("Hierarchical Alpha")]
- HRESULT HAlpha(
- [in] HierarchyAlpha Alpha
- );
- [propget, id(DISPID_TUNER_L_DVBT_GUARDINTERVAL), helpstring("Guard Interval")]
- HRESULT Guard(
- [out, retval] GuardInterval* GI
- );
- [propput, id(DISPID_TUNER_L_DVBT_GUARDINTERVAL), helpstring("Guard Interval")]
- HRESULT Guard(
- [in] GuardInterval GI
- );
- [propget, id(DISPID_TUNER_L_DVBT_TRANSMISSIONMODE), helpstring("Transmission Mode")]
- HRESULT Mode(
- [out, retval] TransmissionMode* mode
- );
- [propput, id(DISPID_TUNER_L_DVBT_TRANSMISSIONMODE), helpstring("Transmission Mode")]
- HRESULT Mode(
- [in] TransmissionMode mode
- );
- [propget, id(DISPID_TUNER_L_DVBT_INUSE), helpstring("Hierarchical Alpha")]
- HRESULT OtherFrequencyInUse(
- [out, retval] VARIANT_BOOL* OtherFrequencyInUseVal
- );
- [propput, id(DISPID_TUNER_L_DVBT_INUSE), helpstring("Hierarchical Alpha")]
- HRESULT OtherFrequencyInUse(
- [in] VARIANT_BOOL OtherFrequencyInUseVal
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(3D7C353C-0D04-45f1-A742-F97CC1188DC8),
- dual,
- oleautomation,
- helpstring("DVB Satellite Locator Information"),
- pointer_default(unique)
- ]
- interface IDVBSLocator : ILocator
- {
-
- [propget, id(DISPID_TUNER_L_DVBS_POLARISATION), helpstring("Signal Polarisation Type")]
- HRESULT SignalPolarisation(
- [out, retval] Polarisation* PolarisationVal
- );
- [propput, id(DISPID_TUNER_L_DVBS_POLARISATION), helpstring("Signal Polarisation Type")]
- HRESULT SignalPolarisation(
- [in] Polarisation PolarisationVal
- );
- [propget, id(DISPID_TUNER_L_DVBS_WEST), helpstring("VARIANT_TRUE means orbital position specifies west longitude")]
- HRESULT WestPosition(
- [out, retval] VARIANT_BOOL* WestLongitude
- );
- [propput, id(DISPID_TUNER_L_DVBS_WEST), helpstring("VARIANT_TRUE means orbital position specifies west longitude")]
- HRESULT WestPosition(
- [in] VARIANT_BOOL WestLongitude
- );
- [propget, id(DISPID_TUNER_L_DVBS_ORBITAL), helpstring("Longitude in tenths of a degree")]
- HRESULT OrbitalPosition(
- [out, retval] long* longitude
- );
- [propput, id(DISPID_TUNER_L_DVBS_ORBITAL), helpstring("Longitude in tenths of a degree")]
- HRESULT OrbitalPosition(
- [in] long longitude
- );
- [propget, id(DISPID_TUNER_L_DVBS_AZIMUTH), helpstring("Azimuth in tenths of a degree")]
- HRESULT Azimuth(
- [out, retval] long* Azimuth
- );
- [propput, id(DISPID_TUNER_L_DVBS_AZIMUTH), helpstring("Azimuth in tenths of a degree")]
- HRESULT Azimuth(
- [in] long Azimuth
- );
- [propget, id(DISPID_TUNER_L_DVBS_ELEVATION), helpstring("Elevation in tenths of a degree")]
- HRESULT Elevation(
- [out, retval] long* Elevation
- );
- [propput, id(DISPID_TUNER_L_DVBS_ELEVATION), helpstring("Elevation in tenths of a degree")]
- HRESULT Elevation(
- [in] long Elevation
- );
- };
-
-//////////////////////////////////////////////////////////////////////////////////////
- [
- object,
- hidden,
- nonextensible,
- uuid(6E42F36E-1DD2-43c4-9F78-69D25AE39034),
- dual,
- oleautomation,
- helpstring("DVB Cable Locator Information"),
- pointer_default(unique)
- ]
- interface IDVBCLocator : ILocator
- {
- };
-
-///////////////////////////////////////////////////////////////////////////////////////
-// utility interfaces
-///////////////////////////////////////////////////////////////////////////////////////
-
- [
- object,
- hidden,
- nonextensible,
- uuid(3B21263F-26E8-489d-AAC4-924F7EFD9511),
- helpstring("Broadcast Event Service Firing/Reflecting Interface"),
- pointer_default(unique)
- ]
- interface IBroadcastEvent : IUnknown
- {
- HRESULT Fire(GUID EventID);
- };
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-// TYPELIB & CoClasses
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-[
- uuid(9B085638-018E-11d3-9D8E-00C04F72D980),
- version(1.0),
- helpstring("Microsoft Tuner 1.0 Type Library")
-]
-library TunerLib
-{
- importlib("stdole2.tlb");
-
- // SystemTuningSpaces class
- [
- uuid(D02AAC50-027E-11d3-9D8E-00C04F72D980),
- helpstring("SystemTuningSpace Class")
- ]
- coclass SystemTuningSpaces
- {
- [default] interface ITuningSpaceContainer;
- };
-
- // NOTE: there is no object factory for this class. 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(5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB),
- helpstring("dummy class to expose base tuning space i/f to VB")
- ]
- coclass TuningSpace
- {
- [default] interface ITuningSpace;
- };
-
-
- [
- uuid(A2E30750-6C3D-11d3-B653-00C04F79498E),
- helpstring("ATSC Digital Broadcast Tuning Space Class")
- ]
- coclass ATSCTuningSpace
- {
- [default] interface IATSCTuningSpace;
- };
-
- [
- uuid(8A674B4C-1F63-11d3-B64C-00C04F79498E),
- helpstring("Analog Radio Tuning Space Class")
- ]
- coclass AnalogRadioTuningSpace
- {
- [default] interface IAnalogRadioTuningSpace;
- };
-
- [
- uuid(F9769A06-7ACA-4e39-9CFB-97BB35F0E77E),
- helpstring("Auxiliary Inputs Tuning Space Class")
- ]
- coclass AuxInTuningSpace
- {
- [default] interface IAuxInTuningSpace;
- };
-
- [
- uuid(8A674B4D-1F63-11d3-B64C-00C04F79498E),
- helpstring("Analog TV Tuning Space Class")
- ]
- coclass AnalogTVTuningSpace
- {
- [default] interface IAnalogTVTuningSpace;
- };
-
- [
- uuid(C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7),
- helpstring("DVB Tuning Space Class")
- ]
- coclass DVBTuningSpace
- {
- [default] interface IDVBTuningSpace2;
- interface IDVBTuningSpace;
- };
-
- [
- uuid(B64016F3-C9A2-4066-96F0-BD9563314726),
- helpstring("DVB Satellite Tuning Space Class")
- ]
- coclass DVBSTuningSpace
- {
- [default] interface IDVBSTuningSpace;
- };
-
-
- // ComponentTypes container class
- [
- uuid(A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980),
- helpstring("Component Types Collection Class")
- ]
- coclass ComponentTypes
- {
- [default] interface IComponentTypes;
- };
-
- // ComponentType class
- [
- uuid(823535A0-0318-11d3-9D8E-00C04F72D980),
- helpstring("ComponentType Class")
- ]
- coclass ComponentType
- {
- [default] interface IComponentType;
- };
-
- // Language ComponentType class
- [
- uuid(1BE49F30-0E1B-11d3-9D8E-00C04F72D980),
- helpstring("LanguageComponentType Class")
- ]
- coclass LanguageComponentType
- {
- [default] interface ILanguageComponentType;
- };
-
- // MPEG2 ComponentType class
- [
- uuid(418008F3-CF67-4668-9628-10DC52BE1D08),
- helpstring("MPEG2ComponentType Class")
- ]
- coclass MPEG2ComponentType
- {
- [default] interface IMPEG2ComponentType;
- };
-
- // ATSC ComponentType class
- [
- uuid(A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE),
- helpstring("ATSCComponentType Class")
- ]
- coclass ATSCComponentType
- {
- [default] interface IATSCComponentType;
- };
-
- // Components class
- [
- hidden, restricted,
- uuid(809B6661-94C4-49e6-B6EC-3F0F862215AA),
- helpstring("Components Collection Class")
- ]
- coclass Components
- {
- [default] interface IComponents;
- };
-
- // Component class
- // the components can only be created by network provider/tif. client apps
- // retrieve them from a filled-in tune request by either loading a persisted tune
- // request that has been filled in by a proper guide store loader or by re-getting
- // the current tune request property which will have this filled in by the network
- // provider
- [
- hidden, restricted,
- uuid(59DC47A8-116C-11d3-9D8E-00C04F72D980),
- helpstring("Component Class")
- ]
- coclass Component
- {
- [default] interface IComponent;
- };
-
- // MPEG2 Component class
- [
- hidden, restricted,
- uuid(055CB2D7-2969-45cd-914B-76890722F112),
- helpstring("MPEG2 Component Class")
- ]
- coclass MPEG2Component
- {
- [default] interface IMPEG2Component;
- };
-
-
- // NOTE: there is no object factory for this class. 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(B46E0D38-AB35-4a06-A137-70576B01B39F),
- helpstring("dummy class to expose base tune request i/f to VB")
- ]
- coclass TuneRequest
- {
- [default] interface ITuneRequest;
- };
-
-
- // NOTE: the tuning request factories should not be invoked directly.
- // instead apps should use ITuningSpace::CreateTuningRequest to obtain a correctly
- // initialized tuning request of the appropriate type for that space.
- // the object factories are provided to allow generic code to a load a previously persisted
- // tune request object.
- [
- hidden,
- restricted,
- uuid(0369B4E5-45B6-11d3-B650-00C04F79498E),
- helpstring("Channel Tune Request")
- ]
- coclass ChannelTuneRequest
- {
- [default] interface IChannelTuneRequest;
- };
-
- [
- hidden,
- restricted,
- uuid(0369B4E6-45B6-11d3-B650-00C04F79498E),
- helpstring("ATSC Channel Tune Request")
- ]
- coclass ATSCChannelTuneRequest
- {
- [default] interface IATSCChannelTuneRequest;
- };
-
- // NOTE: there is no object factory for this class. 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(0955AC62-BF2E-4cba-A2B9-A63F772D46CF),
- helpstring("dummy class to expose mpeg2 request i/f to VB")
- ]
- coclass MPEG2TuneRequest
- {
- [default] interface IMPEG2TuneRequest;
- };
-
- [
- uuid(2C63E4EB-4CEA-41b8-919C-E947EA19A77C),
- helpstring("Factory for creating IMPEG2TuneRequest")
- ]
- coclass MPEG2TuneRequestFactory
- {
- [default] interface IMPEG2TuneRequestFactory;
- };
-
-
- // NOTE: there is no object factory for this class. 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(0888C883-AC4F-4943-B516-2C38D9B34562),
- helpstring("dummy class to expose base locator i/f to VB")
- ]
- coclass Locator
- {
- [default] interface ILocator;
- };
-
- // its not intended that client apps actually create locators. the network
- // provider in combination with the transport information filter(TIF) are the
- // only modules in the system that actually know the correct values for these objects
- // however, for testing purposes, its necessary to allow these to be created.
- // instead, normally these will simply be passed around opaquely since they're a
- // property of the base tune request interface.
- [
- uuid(8872FF1B-98FA-4d7a-8D93-C9F1055F85BB),
- helpstring("ATSC Locator")
- ]
- coclass ATSCLocator
- {
- [default] interface IATSCLocator;
- };
-
- [
- uuid(9CD64701-BDF3-4d14-8E03-F12983D86664),
- helpstring("DVB-Terrestrial Locator")
- ]
- coclass DVBTLocator
- {
- [default] interface IDVBTLocator;
- };
-
- [
- uuid(1DF7D126-4050-47f0-A7CF-4C4CA9241333),
- helpstring("DVB-Satellite Locator")
- ]
- coclass DVBSLocator
- {
- [default] interface IDVBSLocator;
- };
-
- [
- uuid(C531D9FD-9685-4028-8B68-6E1232079F1E),
- helpstring("DVB-Cable Locator")
- ]
- coclass DVBCLocator
- {
- [default] interface IDVBCLocator;
- };
-
- [
- hidden,
- restricted,
- uuid(15D6504A-5494-499c-886C-973C9E53B9F1),
- helpstring("DVB Tune Request")
- ]
- coclass DVBTuneRequest
- {
- [default] interface IDVBTuneRequest;
- };
-
-// Sample tuner class definition:
-//
-// [
-// uuid(<some guid>),
-// helpstring("My Tuner object")
-// ]
-// coclass MyTuner
-// {
-// [default] interface ITuner;
-// interface IMyTunerCustomFeatureInterface;
-// };
-
-///////////////////////////////////////////////////////////////////////////////////////
-// utility objects
-///////////////////////////////////////////////////////////////////////////////////////
- [
- hidden, restricted,
- uuid(8A674B49-1F63-11d3-B64C-00C04F79498E),
- helpstring("Create property bag backed by registry")
- ]
- coclass CreatePropBagOnRegKey
- {
- interface ICreatePropBagOnRegKey;
- };
-
- [
- hidden, restricted,
- uuid(0B3FFB92-0919-4934-9D5B-619C719D0202),
- helpstring("DShow Broadcast Event Service Object")
- ]
- coclass BroadcastEventService
- {
- interface IBroadcastEvent;
- };
-
-cpp_quote("#define SID_SBroadcastEventService CLSID_BroadcastEventService")
-
-}
-
-// end of file -- tuner.idl
diff --git a/dxsdk/Include/DShowIDL/tvratings.idl b/dxsdk/Include/DShowIDL/tvratings.idl
deleted file mode 100644
index 5bf80214..00000000
--- a/dxsdk/Include/DShowIDL/tvratings.idl
+++ /dev/null
@@ -1,242 +0,0 @@
-// 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;
- };
-};
diff --git a/dxsdk/Include/DShowIDL/vidcap.idl b/dxsdk/Include/DShowIDL/vidcap.idl
deleted file mode 100644
index 523bfde3..00000000
--- a/dxsdk/Include/DShowIDL/vidcap.idl
+++ /dev/null
@@ -1,84 +0,0 @@
-//+-------------------------------------------------------------------------
-//
-// 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);
-}
-
-
-
-
diff --git a/dxsdk/Include/DShowIDL/vmr9.idl b/dxsdk/Include/DShowIDL/vmr9.idl
deleted file mode 100644
index ae9245f2..00000000
--- a/dxsdk/Include/DShowIDL/vmr9.idl
+++ /dev/null
@@ -1,1057 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// Public Interfaces for the DX9 Video Mixing Renderer DShow filter
-//
-// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
-///////////////////////////////////////////////////////////////////////////////
-
-import "unknwn.idl";
-
-
-cpp_quote("#if 0")
-// This is temporary work around to persuade
-// MIDL to allow forward declarations.
-typedef DWORD IDirect3DDevice9;
-typedef DWORD IDirect3DSurface9;
-typedef DWORD D3DFORMAT;
-typedef DWORD D3DCOLOR;
-typedef DWORD D3DPOOL;
-typedef LONGLONG REFERENCE_TIME;
-typedef DWORD* HMONITOR;
-typedef struct {DWORD dw1; DWORD dw2;} AM_MEDIA_TYPE;
-cpp_quote ("#endif")
-
-
-// public interfaces supported by the VMR9
-
-interface IVMRSurface9;
-
-interface IVMRSurfaceAllocator9;
-interface IVMRSurfaceAllocatorNotify9;
-interface IVMRImagePresenter9;
-interface IVMRImagePresenterConfig9;
-interface IVMRMonitorConfig9;
-interface IVMRWindowlessControl9;
-
-interface IVMRMixerControl9;
-interface IVMRImageCompositor9;
-interface IVMRMixerBitmap9;
-
-
-interface IVMRFilterConfig9;
-interface IVMRAspectRatioControl9;
-interface IVMRVideoStreamControl9;
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Allocator Presenter interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-
-//=====================================================================
-//
-// IVMRImagePresenter9
-//
-//=====================================================================
-typedef enum {
- VMR9Sample_SyncPoint = 0x00000001,
- VMR9Sample_Preroll = 0x00000002,
- VMR9Sample_Discontinuity = 0x00000004,
- VMR9Sample_TimeValid = 0x00000008,
- VMR9Sample_SrcDstRectsValid= 0x00000010
-} VMR9PresentationFlags;
-
-
-typedef struct _VMR9PresentationInfo {
- DWORD dwFlags;
- IDirect3DSurface9* lpSurf;
- REFERENCE_TIME rtStart;
- REFERENCE_TIME rtEnd;
- SIZE szAspectRatio;
- RECT rcSrc;
- RECT rcDst;
- DWORD dwReserved1;
- DWORD dwReserved2;
-} VMR9PresentationInfo;
-
-[
- local,
- object,
- local,
- uuid(69188c61-12a3-40f0-8ffc-342e7b433fd7),
- helpstring("IVMRImagePresenter9 Interface"),
- pointer_default(unique)
-]
-interface IVMRImagePresenter9 : IUnknown
-{
- HRESULT StartPresenting(
- [in] DWORD_PTR dwUserID
- );
-
- HRESULT StopPresenting(
- [in] DWORD_PTR dwUserID
- );
-
- HRESULT PresentImage(
- [in] DWORD_PTR dwUserID,
- [in] VMR9PresentationInfo* lpPresInfo
- );
-};
-
-
-//=====================================================================
-//
-// IVMRSurfaceAllocator
-//
-//=====================================================================
-typedef enum {
- // surface types/usage
- VMR9AllocFlag_3DRenderTarget = 0x0001,
- VMR9AllocFlag_DXVATarget = 0x0002,
-
- //
- // VMR9AllocFlag_TextureSurface can be combined with
- // DXVATarget and 3DRenderTarget
- //
- VMR9AllocFlag_TextureSurface = 0x0004,
- VMR9AllocFlag_OffscreenSurface = 0x0008,
- VMR9AllocFlag_UsageReserved = 0x00F0,
- VMR9AllocFlag_UsageMask = 0x00FF
-
- // surface
-} VMR9SurfaceAllocationFlags;
-
-
-typedef struct _VMR9AllocationInfo {
- DWORD dwFlags; // see VMR9SurfaceAllocationFlags
- DWORD dwWidth;
- DWORD dwHeight;
- D3DFORMAT Format; // 0 means use a format compatible with the display
- D3DPOOL Pool;
- DWORD MinBuffers;
- SIZE szAspectRatio;
- SIZE szNativeSize;
-} VMR9AllocationInfo;
-
-[
- local,
- object,
- local,
- uuid(8d5148ea-3f5d-46cf-9df1-d1b896eedb1f),
- helpstring("IVMRSurfaceAllocator9 Interface"),
- pointer_default(unique)
-]
-interface IVMRSurfaceAllocator9 : IUnknown
-{
- HRESULT InitializeDevice(
- [in] DWORD_PTR dwUserID,
- [in] VMR9AllocationInfo* lpAllocInfo,
- [in, out] DWORD* lpNumBuffers
- );
-
- HRESULT TerminateDevice(
- [in] DWORD_PTR dwID
- );
-
- HRESULT GetSurface(
- [in] DWORD_PTR dwUserID,
- [in] DWORD SurfaceIndex,
- [in] DWORD SurfaceFlags,
- [out] IDirect3DSurface9** lplpSurface
- );
-
- HRESULT AdviseNotify(
- [in] IVMRSurfaceAllocatorNotify9* lpIVMRSurfAllocNotify
- );
-};
-
-
-//=====================================================================
-//
-// IVMRSurfaceAllocatorNotify9
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(dca3f5df-bb3a-4d03-bd81-84614bfbfa0c),
- helpstring("IVMRSurfaceAllocatorNotify9 Interface"),
- pointer_default(unique)
-]
-interface IVMRSurfaceAllocatorNotify9 : IUnknown
-{
- HRESULT AdviseSurfaceAllocator(
- [in] DWORD_PTR dwUserID,
- [in] IVMRSurfaceAllocator9* lpIVRMSurfaceAllocator
- );
-
- HRESULT SetD3DDevice(
- [in] IDirect3DDevice9* lpD3DDevice,
- [in] HMONITOR hMonitor
- );
-
- HRESULT ChangeD3DDevice(
- [in] IDirect3DDevice9* lpD3DDevice,
- [in] HMONITOR hMonitor
- );
-
- HRESULT AllocateSurfaceHelper(
- [in] VMR9AllocationInfo* lpAllocInfo,
- [in, out] DWORD* lpNumBuffers,
- [out] IDirect3DSurface9** lplpSurface
- );
-
- HRESULT NotifyEvent(
- [in] LONG EventCode,
- [in] LONG_PTR Param1,
- [in] LONG_PTR Param2
- );
-};
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Application control and configuration interfaces
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-//=====================================================================
-//
-// IVMRWindowlessControl9
-//
-//=====================================================================
-typedef enum {
- VMR9ARMode_None,
- VMR9ARMode_LetterBox
-} VMR9AspectRatioMode;
-
-[
- local,
- object,
- local,
- uuid(8f537d09-f85e-4414-b23b-502e54c79927),
- helpstring("IVMRWindowlessControl Interface"),
- pointer_default(unique)
-]
-interface IVMRWindowlessControl9 : IUnknown
-{
- //
- //////////////////////////////////////////////////////////
- // Video size and position information
- //////////////////////////////////////////////////////////
- //
- HRESULT GetNativeVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight,
- [out] LONG* lpARWidth,
- [out] LONG* lpARHeight
- );
-
- HRESULT GetMinIdealVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight
- );
-
- HRESULT GetMaxIdealVideoSize(
- [out] LONG* lpWidth,
- [out] LONG* lpHeight
- );
-
- HRESULT SetVideoPosition(
- [in] const LPRECT lpSRCRect,
- [in] const LPRECT lpDSTRect
- );
-
- HRESULT GetVideoPosition(
- [out] LPRECT lpSRCRect,
- [out] LPRECT lpDSTRect
- );
-
- HRESULT GetAspectRatioMode(
- [out] DWORD* lpAspectRatioMode
- );
-
- HRESULT SetAspectRatioMode(
- [in] DWORD AspectRatioMode
- );
-
- //
- //////////////////////////////////////////////////////////
- // Display and clipping management
- //////////////////////////////////////////////////////////
- //
- HRESULT SetVideoClippingWindow(
- [in] HWND hwnd
- );
-
- HRESULT RepaintVideo(
- [in] HWND hwnd,
- [in] HDC hdc
- );
-
- HRESULT DisplayModeChanged();
-
-
- //
- //////////////////////////////////////////////////////////
- // GetCurrentImage
- //
- // Returns the current image being displayed. This images
- // is returned in the form of packed Windows DIB.
- //
- // GetCurrentImage can be called at any time, also
- // the caller is responsible for free the returned memory
- // by calling CoTaskMemFree.
- //
- // Excessive use of this function will degrade video
- // playback performed.
- //////////////////////////////////////////////////////////
- //
- HRESULT GetCurrentImage(
- [out] BYTE** lpDib
- );
-
- //
- //////////////////////////////////////////////////////////
- // Border Color control
- //
- // The border color is color used to fill any area of the
- // the destination rectangle that does not contain video.
- // It is typically used in two instances. When the video
- // straddles two monitors and when the VMR is trying
- // to maintain the aspect ratio of the movies by letter
- // boxing the video to fit within the specified destination
- // rectangle. See SetAspectRatioMode above.
- //////////////////////////////////////////////////////////
- //
- HRESULT SetBorderColor(
- [in] COLORREF Clr
- );
-
- HRESULT GetBorderColor(
- [out] COLORREF* lpClr
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRMixerControl9
-//
-//=====================================================================
-
-typedef enum {
- MixerPref9_NoDecimation = 0x00000001, // No decimation - full size
- MixerPref9_DecimateOutput = 0x00000002, // decimate output by 2 in x & y
- MixerPref9_ARAdjustXorY = 0x00000004, // adjust the aspect ratio in x or y
- MixerPref9_NonSquareMixing = 0x00000008, // assume AP can handle non-square mixing, avoids intermediate scales
- MixerPref9_DecimateMask = 0x0000000F,
-
- MixerPref9_BiLinearFiltering = 0x00000010, // use bi-linear filtering
- MixerPref9_PointFiltering = 0x00000020, // use point filtering
- MixerPref9_AnisotropicFiltering = 0x00000040, //
- MixerPref9_PyramidalQuadFiltering = 0x00000080, // 4-sample tent
- MixerPref9_GaussianQuadFiltering = 0x00000100, // 4-sample gaussian
- MixerPref9_FilteringReserved = 0x00000E00, // bits reserved for future use.
- MixerPref9_FilteringMask = 0x00000FF0, // OR of all above flags
-
- MixerPref9_RenderTargetRGB = 0x00001000,
- MixerPref9_RenderTargetYUV = 0x00002000, // Uses DXVA to perform mixing
- MixerPref9_RenderTargetReserved = 0x000FC000, // bits reserved for future use.
- MixerPref9_RenderTargetMask = 0x000FF000, // OR of all above flags
-
- //
- // Dynamic changes that can be performed when the VMR's mixer is
- // configured to use the YUV Render target (see MixerPref_RenderTargetYUV)
- // These preferences can be applied while the graph is running and take effect
- // when the next frame is composed by the mixer.
- //
- MixerPref9_DynamicSwitchToBOB = 0x00100000,
- MixerPref9_DynamicDecimateBy2 = 0x00200000,
-
- MixerPref9_DynamicReserved = 0x00C00000,
- MixerPref9_DynamicMask = 0x00F00000
-
-} VMR9MixerPrefs;
-
-
-//
-// Normalized relative rectangle
-// Coordinate ranges: x=[0...1) y=[0...1)
-// Where the output window goes from 0,0 (closed inclusive lower bound)
-// to 1,1 (open exclusive upper bound)
-//
-typedef struct _VMR9NormalizedRect
-{
- float left;
- float top;
- float right;
- float bottom;
-} VMR9NormalizedRect;
-
-
-
-typedef enum {
- ProcAmpControl9_Brightness = 0x00000001,
- ProcAmpControl9_Contrast = 0x00000002,
- ProcAmpControl9_Hue = 0x00000004,
- ProcAmpControl9_Saturation = 0x00000008,
- ProcAmpControl9_Mask = 0x0000000F
-} VMR9ProcAmpControlFlags;
-
-typedef struct _VMR9ProcAmpControl
-{
- DWORD dwSize;
- DWORD dwFlags;
- float Brightness;
- float Contrast;
- float Hue;
- float Saturation;
-} VMR9ProcAmpControl;
-
-typedef struct _VMR9ProcAmpControlRange
-{
- DWORD dwSize;
- VMR9ProcAmpControlFlags dwProperty; // see VMR9ProcAmpControlFlags above
- float MinValue;
- float MaxValue;
- float DefaultValue;
- float StepSize;
-} VMR9ProcAmpControlRange;
-
-
-[
- local,
- object,
- local,
- uuid(1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b),
- helpstring("IVMRMixerControl9 Interface"),
- pointer_default(unique)
-]
-interface IVMRMixerControl9 : IUnknown
-{
- HRESULT SetAlpha(
- [in] DWORD dwStreamID,
- [in] float Alpha // Source alpha premultication factor (global alpha for source)
- );
-
- HRESULT GetAlpha(
- [in] DWORD dwStreamID,
- [out] float* pAlpha
- );
-
- HRESULT SetZOrder(
- [in] DWORD dwStreamID,
- [in] DWORD dwZ
- );
-
- HRESULT GetZOrder(
- [in] DWORD dwStreamID,
- [out] DWORD* pZ
- );
-
- HRESULT SetOutputRect(
- [in] DWORD dwStreamID,
- [in] const VMR9NormalizedRect *pRect
- );
-
- HRESULT GetOutputRect(
- [in] DWORD dwStreamID,
- [out] VMR9NormalizedRect *pRect
- );
-
- HRESULT SetBackgroundClr(
- [in] COLORREF ClrBkg
- );
-
- HRESULT GetBackgroundClr(
- [in] COLORREF* lpClrBkg
- );
-
- HRESULT SetMixingPrefs(
- [in] DWORD dwMixerPrefs // a combination of VMRMixingPrefFlags
- );
-
- HRESULT GetMixingPrefs(
- [out] DWORD* pdwMixerPrefs
- );
-
- HRESULT SetProcAmpControl(
- [in] DWORD dwStreamID,
- [in] VMR9ProcAmpControl* lpClrControl
- );
-
- HRESULT GetProcAmpControl(
- [in] DWORD dwStreamID,
- [in, out] VMR9ProcAmpControl* lpClrControl
- );
-
- HRESULT GetProcAmpControlRange(
- [in] DWORD dwStreamID,
- [in, out] VMR9ProcAmpControlRange* lpClrControl
- );
-};
-
-
-//=====================================================================
-//
-// IVMRMixerBitmap9
-//
-//=====================================================================
-
-typedef struct _VMR9AlphaBitmap
-{
- DWORD dwFlags; // flags word
- HDC hdc; // DC for the bitmap to copy
- IDirect3DSurface9* pDDS; // D3D surface to copy
- RECT rSrc; // rectangle to copy from the DC/DDS
- VMR9NormalizedRect rDest; // output rectangle in composition space
- FLOAT fAlpha; // opacity of the bitmap
- COLORREF clrSrcKey; // src color key
- DWORD dwFilterMode; // See "SetMixerPrefs"
-} VMR9AlphaBitmap;
-
-
-typedef enum {
-
- // Disable the alpha bitmap for now
- VMR9AlphaBitmap_Disable = 0x00000001,
-
- // Take the bitmap from the HDC rather than the DirectDraw surface
- VMR9AlphaBitmap_hDC = 0x00000002,
-
- // Take the entire DDraw surface - rSrc is ignored
- VMR9AlphaBitmap_EntireDDS = 0x00000004,
-
- // Indicates that the clrTrans value is valid and should be
- // used when blending
- VMR9AlphaBitmap_SrcColorKey = 0x00000008,
-
- // Indicates that the rSrc rectangle is valid and specifies a
- // sub-rectangle of the of original app image to be blended.
- // Use of this parameter enables "Image Strips"
- VMR9AlphaBitmap_SrcRect = 0x00000010,
-
- // Indicates that dwFilterMode parameter is valid and should be
- // used to overide the default filtering method used by the VMR.
- // MixerPref_PointFiltering is particulaly useful for images that
- // contain text and do not need to be stretch prior to blending with
- // the video content.
- VMR9AlphaBitmap_FilterMode = 0x00000020
-} VMR9AlphaBitmapFlags;
-
-[
- object,
- local,
- uuid(ced175e5-1935-4820-81bd-ff6ad00c9108),
- helpstring("IVMRMixerBitmap Interface"),
- pointer_default(unique)
-]
-interface IVMRMixerBitmap9 : IUnknown
-{
- // Set bitmap, location to blend it, and blending value
- HRESULT SetAlphaBitmap(
- [in] const VMR9AlphaBitmap* pBmpParms
- );
-
- // Change bitmap location, size and blending value,
- // graph must be running for change to take effect.
- HRESULT UpdateAlphaBitmapParameters(
- [in] const VMR9AlphaBitmap* pBmpParms
- );
-
- // Get bitmap, location to blend it, and blending value
- HRESULT GetAlphaBitmapParameters(
- [out] VMR9AlphaBitmap* pBmpParms
- );
-};
-
-
-
-//=====================================================================
-//
-// IVMRSurface9
-//
-//=====================================================================
-[
- local,
- object,
- local,
- uuid(dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc),
- helpstring("IVMRSurface Interface"),
- pointer_default(unique)
-]
-interface IVMRSurface9 : IUnknown
-{
- HRESULT IsSurfaceLocked();
-
- HRESULT LockSurface(
- [out] BYTE** lpSurface
- );
-
- HRESULT UnlockSurface();
-
- HRESULT GetSurface(
- [out] IDirect3DSurface9** lplpSurface
- );
-};
-
-
-
-//=====================================================================
-//
-// IID_IVMRImagePresenterConfig9 - this interface allows applications
-// to configure the default Microsoft provided allocator-presenter
-// inorder to simplify the implementation of their own
-// allocator-presenter plug-in.
-//
-//=====================================================================
-typedef enum {
- RenderPrefs9_DoNotRenderBorder = 0x00000001, // app paints color keys
- RenderPrefs9_Mask = 0x00000001, // OR of all above flags
-} VMR9RenderPrefs;
-[
- local,
- object,
- local,
- uuid(45c15cab-6e22-420a-8043-ae1f0ac02c7d),
- helpstring("IVMRImagePresenterConfig9 Interface"),
- pointer_default(unique)
-]
-
-interface IVMRImagePresenterConfig9 : IUnknown
-{
-
- HRESULT SetRenderingPrefs(
- [in] DWORD dwRenderFlags // see VMRRenderPrefs for valid flags
- );
-
- HRESULT GetRenderingPrefs(
- [out] DWORD* dwRenderFlags // see VMRRenderPrefs for valid flags
- );
-
-}
-
-
-
-
-//=====================================================================
-//
-// IVMRVideoStreamControl9
-//
-//=====================================================================
-[
- object,
- local,
- uuid(d0cfe38b-93e7-4772-8957-0400c49a4485),
- helpstring("IVMRMixerStreamConfig Interface"),
- pointer_default(unique)
-]
-interface IVMRVideoStreamControl9: IUnknown
-{
-
- HRESULT SetStreamActiveState(
- [in] BOOL fActive
- );
-
- HRESULT GetStreamActiveState(
- [out] BOOL* lpfActive
- );
-};
-
-
-typedef enum {
- VMR9Mode_Windowed = 0x00000001,
- VMR9Mode_Windowless = 0x00000002,
- VMR9Mode_Renderless = 0x00000004,
-
- // not a valid value to pass to SetRenderMode
- VMR9Mode_Mask = 0x00000007, // OR of all above flags
-} VMR9Mode;
-
-[
- object,
- local,
- uuid(5a804648-4f66-4867-9c43-4f5c822cf1b8),
- helpstring("IVMRFilterConfig9 Interface"),
- pointer_default(unique)
-]
-interface IVMRFilterConfig9 : IUnknown
-{
- HRESULT SetImageCompositor(
- [in] IVMRImageCompositor9* lpVMRImgCompositor
- );
-
- HRESULT SetNumberOfStreams(
- [in] DWORD dwMaxStreams
- );
-
- HRESULT GetNumberOfStreams(
- [out] DWORD* pdwMaxStreams
- );
-
- HRESULT SetRenderingPrefs(
- [in] DWORD dwRenderFlags // a combination of VMR9RenderPrefs
- );
-
- HRESULT GetRenderingPrefs(
- [out] DWORD* pdwRenderFlags
- );
-
- HRESULT SetRenderingMode(
- [in] DWORD Mode // a combination of VMRMode
- );
-
- HRESULT GetRenderingMode(
- [out] DWORD* pMode
- );
-}
-
-//=====================================================================
-//
-// IVMRAspectRatioControl9
-//
-//=====================================================================
-[
- object,
- local,
- uuid(00d96c29-bbde-4efc-9901-bb5036392146),
- helpstring("IVMRAspectRatioControl9 Interface"),
- pointer_default(unique)
-]
-interface IVMRAspectRatioControl9 : IUnknown
-{
- HRESULT GetAspectRatioMode(
- [out] LPDWORD lpdwARMode
- );
-
- HRESULT SetAspectRatioMode(
- [in] DWORD dwARMode
- );
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// VMR Multimon configuration interface
-//
-///////////////////////////////////////////////////////////////////////////////
-#define VMR9DEVICENAMELEN 32
-#define VMR9DEVICEDESCRIPTIONLEN 512
-
-typedef struct _VMR9MonitorInfo {
- UINT uDevID;
- RECT rcMonitor;
- HMONITOR hMon;
- DWORD dwFlags; // described in MONITORINFOEX, currently only MONITORINFOF_PRIMARY
- wchar_t szDevice[VMR9DEVICENAMELEN];
- wchar_t szDescription[VMR9DEVICEDESCRIPTIONLEN];
- LARGE_INTEGER liDriverVersion;
- DWORD dwVendorId;
- DWORD dwDeviceId;
- DWORD dwSubSysId;
- DWORD dwRevision;
- //
-} VMR9MonitorInfo;
-
-[
- object,
- local,
- uuid(46c2e457-8ba0-4eef-b80b-0680f0978749),
- helpstring("IVMRMonitorConfig9 Interface"),
- pointer_default(unique)
-]
-interface IVMRMonitorConfig9 : IUnknown
-{
- // Use this method on a Multi-Monitor system to specify to the
- // mixer filter which Direct Draw driver should be used when connecting
- // to an upstream decoder filter.
- //
- HRESULT SetMonitor(
- [in] UINT uDev
- );
-
- // Use this method to determine the direct draw object that will be used when
- // connecting the mixer filter to an upstream decoder filter.
- //
- HRESULT GetMonitor(
- [out] UINT *puDev
- );
-
- // Use this method on a multi-monitor system to specify to the
- // mixer filter the default Direct Draw device to use when
- // connecting to an upstream filter. The default direct draw device
- // can be overriden for a particular connection by SetMonitor method
- // described above.
- //
- HRESULT SetDefaultMonitor(
- [in] UINT uDev
- );
-
- // Use this method on a multi-monitor system to determine which
- // is the default direct draw device the overlay mixer filter
- // will use when connecting to an upstream filter.
- //
- HRESULT GetDefaultMonitor(
- [out] UINT* puDev
- );
-
- // Use this method to get a list of Direct Draw device GUIDs and thier
- // associated monitor information that the mixer can use when
- // connecting to an upstream decoder filter. Passing down a NULL pInfo
- // parameter allows the app to determine the required array size (returned
- // in pdwNumDevices). Otherwise, dwNumDevices returns the actual
- // number of devices retrieved.
- //
- HRESULT GetAvailableMonitors(
- [out, size_is(dwMaxInfoArraySize)] VMR9MonitorInfo* pInfo,
- [in] DWORD dwMaxInfoArraySize, // in array members
- [out] DWORD* pdwNumDevices // actual number of devices retrieved
- );
-};
-
-
-//=====================================================================
-//
-// IVMRDeinterlaceControl
-//
-// New interfaced introduced into the WindowsXP SP1 release of the VMR.
-// This interface allows applications to control the DX-VA deinterlacing
-// support provided by the VMR.
-//
-// The VMR needs to be set into "mixing" mode for this interface to work.
-//
-// SetDeinterlaceMode is only effective for new connections made to the
-// VMR. It should be noted that the graphics device driver may refuse
-// to use the specified deinterlace mode, in which case 3 fallback
-// policies are offered by the VMR, these being:
-//
-// 1. Fallback to the next best mode offered by the driver.
-// 2. Fallback to the BOB deinterlace mode.
-// 3. Fallback to the WEAVE deinterlace mode (ie. turn deinterlacing off).
-//
-//=====================================================================
-
-typedef enum {
- DeinterlacePref9_NextBest = 0x01,
- DeinterlacePref9_BOB = 0x02,
- DeinterlacePref9_Weave = 0x04,
- DeinterlacePref9_Mask = 0x07
-} VMR9DeinterlacePrefs;
-
-typedef enum {
-
- // the algorithm is unknown or proprietary
- DeinterlaceTech9_Unknown = 0x0000,
-
- // the algorithm creates the missing lines by repeating
- // the line either above or below it - this method will look very jaggy and
- // isn't recommended
- DeinterlaceTech9_BOBLineReplicate = 0x0001,
-
-
- // the algorithm creates the missing lines by vertically stretching each
- // video field by a factor of two, for example by averaging two lines or
- // using a [-1, 9, 9, -1]/16 filter across four lines.
- // Slight vertical adjustments are made to ensure that the resulting image
- // does not "bob" up and down.
- DeinterlaceTech9_BOBVerticalStretch = 0x0002,
-
- // the pixels in the missing line are recreated by a median filtering operation
- DeinterlaceTech9_MedianFiltering = 0x0004,
-
- // the pixels in the missing line are recreated by an edge filter.
- // In this process, spatial directional filters are applied to determine
- // the orientation of edges in the picture content, and missing
- // pixels are created by filtering along (rather than across) the
- // detected edges.
- DeinterlaceTech9_EdgeFiltering = 0x0010,
-
- // the pixels in the missing line are recreated by switching on a field by
- // field basis between using either spatial or temporal interpolation
- // depending on the amount of motion.
- DeinterlaceTech9_FieldAdaptive = 0x0020,
-
- // the pixels in the missing line are recreated by switching on a pixel by pixel
- // basis between using either spatial or temporal interpolation depending on
- // the amount of motion..
- DeinterlaceTech9_PixelAdaptive = 0x0040,
-
- // Motion Vector Steering identifies objects within a sequence of video
- // fields. The missing pixels are recreated after first aligning the
- // movement axes of the individual objects in the scene to make them
- // parallel with the time axis.
- DeinterlaceTech9_MotionVectorSteered = 0x0080
-
-} VMR9DeinterlaceTech;
-
-typedef struct _VMR9Frequency {
- DWORD dwNumerator;
- DWORD dwDenominator;
-} VMR9Frequency;
-
-typedef enum _VMR9_SampleFormat {
- VMR9_SampleReserved = 1,
- VMR9_SampleProgressiveFrame = 2,
- VMR9_SampleFieldInterleavedEvenFirst = 3,
- VMR9_SampleFieldInterleavedOddFirst = 4,
- VMR9_SampleFieldSingleEven = 5,
- VMR9_SampleFieldSingleOdd = 6,
-} VMR9_SampleFormat;
-
-typedef struct _VMR9VideoDesc {
- DWORD dwSize;
- DWORD dwSampleWidth;
- DWORD dwSampleHeight;
- VMR9_SampleFormat SampleFormat;
- DWORD dwFourCC;
- VMR9Frequency InputSampleFreq;
- VMR9Frequency OutputFrameFreq;
-} VMR9VideoDesc;
-
-
-typedef struct _VMR9DeinterlaceCaps {
- DWORD dwSize;
- DWORD dwNumPreviousOutputFrames;
- DWORD dwNumForwardRefSamples;
- DWORD dwNumBackwardRefSamples;
- VMR9DeinterlaceTech DeinterlaceTechnology;
-} VMR9DeinterlaceCaps;
-
-[
- object,
- local,
- uuid(a215fb8d-13c2-4f7f-993c-003d6271a459),
- helpstring("IVMRDeinterlaceControl9 Interface"),
- pointer_default(unique)
-]
-interface IVMRDeinterlaceControl9 : IUnknown
-{
- //
- // For the specified video description returns the
- // number of deinterlacing modes available to the VMR.
- // The deinterlacing modes are returned in descending
- // quality order ie. the best quality mode is at
- // lpdwNumDeinterlaceModes[0], the next best at
- // lpdwNumDeinterlaceModes[1] and so on.
- //
- // To determine how big an array of guids to pass to the
- // GetNumberOfDeinterlaceModes method call
- // GetNumberOfDeinterlaceModes(lpVideoDescription, &dwNumModes, NULL);
- //
- HRESULT GetNumberOfDeinterlaceModes(
- [in] VMR9VideoDesc* lpVideoDescription,
- [in] [out] LPDWORD lpdwNumDeinterlaceModes,
- [out] LPGUID lpDeinterlaceModes
- );
-
- //
- // For the given video description get the capabilities of the
- // specified de-interlace mode.
- //
- HRESULT GetDeinterlaceModeCaps(
- [in] LPGUID lpDeinterlaceMode,
- [in] VMR9VideoDesc* lpVideoDescription,
- [out] VMR9DeinterlaceCaps* lpDeinterlaceCaps
- );
-
- //
- // Get/Set the deinterlace mode that you would like the
- // VMR to use when de-interlacing the specified stream.
- // It should be noted that the VMR may not actually be able
- // to use the requested deinterlace mode, in which case the
- // the VMR will fall back to other de-interlace modes as specified
- // by the de-interlace preferences (see SetDeinterlacePrefs below).
- //
- HRESULT GetDeinterlaceMode(
- [in] DWORD dwStreamID,
- [out] LPGUID lpDeinterlaceMode // returns GUID_NULL if SetDeinterlaceMode
- ); // has not been called yet.
-
- HRESULT SetDeinterlaceMode(
- [in] DWORD dwStreamID, // use 0xFFFFFFFF to set mode for all streams
- [in] LPGUID lpDeinterlaceMode // GUID_NULL == turn deinterlacing off
- );
-
-
- HRESULT GetDeinterlacePrefs(
- [out] LPDWORD lpdwDeinterlacePrefs
- );
-
- HRESULT SetDeinterlacePrefs(
- [in] DWORD dwDeinterlacePrefs
- );
-
- //
- // Get the DeinterlaceMode currently in use for the specified
- // video stream (ie. pin). The returned GUID will be NULL if
- // the de-interlacing h/w has not been created by the VMR at the
- // time the function is called, or if the VMR determines that
- // this stream should not or can be de-interlaced.
- //
- HRESULT GetActualDeinterlaceMode(
- [in] DWORD dwStreamID,
- [out] LPGUID lpDeinterlaceMode
- );
-};
-
-
-//=====================================================================
-//
-// IVMRImageCompositor9
-//
-//=====================================================================
-
-typedef struct _VMR9VideoStreamInfo {
- IDirect3DSurface9* pddsVideoSurface;
- DWORD dwWidth, dwHeight;
- DWORD dwStrmID;
- FLOAT fAlpha;
- VMR9NormalizedRect rNormal;
- REFERENCE_TIME rtStart;
- REFERENCE_TIME rtEnd;
- VMR9_SampleFormat SampleFormat;
-} VMR9VideoStreamInfo;
-[
- local,
- object,
- local,
- uuid(4a5c89eb-df51-4654-ac2a-e48e02bbabf6),
- helpstring("IVMRImageCompositor9 Interface"),
- pointer_default(unique)
-]
-interface IVMRImageCompositor9 : IUnknown
-{
- HRESULT InitCompositionDevice(
- [in] IUnknown* pD3DDevice
- );
-
- HRESULT TermCompositionDevice(
- [in] IUnknown* pD3DDevice
- );
-
- HRESULT SetStreamMediaType(
- [in] DWORD dwStrmID,
- [in] AM_MEDIA_TYPE* pmt,
- [in] BOOL fTexture
- );
-
- HRESULT CompositeImage(
- [in] IUnknown* pD3DDevice,
- [in] IDirect3DSurface9* pddsRenderTarget,
- [in] AM_MEDIA_TYPE* pmtRenderTarget,
- [in] REFERENCE_TIME rtStart,
- [in] REFERENCE_TIME rtEnd,
- [in] D3DCOLOR dwClrBkGnd,
- [in] VMR9VideoStreamInfo* pVideoStreamInfo,
- [in] UINT cStreams
- );
-};