diff options
Diffstat (limited to 'dxsdk/Include/DShowIDL')
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 - ); -}; |