xpmgr/BuildTools/Include/dshowasf.idl

180 lines
6.7 KiB
Plaintext

//*@@@+++@@@@******************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//*@@@---@@@@******************************************************************
//
cpp_quote( "//=========================================================================" )
cpp_quote( "//" )
cpp_quote( "// Microsoft Windows Media Technologies" )
cpp_quote( "// Copyright (C) Microsoft Corporation. All Rights Reserved." )
cpp_quote( "//" )
cpp_quote( "//=========================================================================" )
import "unknwn.idl";
import "objidl.idl";
import "strmif.idl"; // for media type and time definitions
import "wmsdkidl.idl";
cpp_quote( "EXTERN_GUID( IID_IConfigAsfWriter2,0x7989ccaa, 0x53f0, 0x44f0, 0x88, 0x4a, 0xf3, 0xb0, 0x3f, 0x6a, 0xe0, 0x66 );" )
cpp_quote( "EXTERN_GUID( IID_IConfigAsfWriter,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B );" )
cpp_quote( "EXTERN_GUID( IID_IAMWMBufferPass,0x6dd816d7, 0xe740, 0x4123, 0x9e, 0x24, 0x24, 0x44, 0x41, 0x26, 0x44, 0xd8 );" )
cpp_quote( "EXTERN_GUID( IID_IAMWMBufferPassCallback,0xb25b8372, 0xd2d2, 0x44b2, 0x86, 0x53, 0x1b, 0x8d, 0xae, 0x33, 0x24, 0x89 );" )
cpp_quote( "#ifndef EC_PREPROCESS_COMPLETE" )
cpp_quote( "#define EC_PREPROCESS_COMPLETE 0x56" )
cpp_quote( "#endif" )
interface IConfigAsfWriter;
interface IConfigAsfWriter2;
interface IAMWMBufferPass;
interface IAMWMBufferPassCallback;
interface IWMProfile;
interface IWMProfile;
// Interface used to setup callback for app to set/get properties on WindowsMedia buffers that
// are passed by the ASF reader and writer filters
[
object,
uuid(6DD816D7-E740-4123-9E24-2444412644D8),
pointer_default(unique)
]
interface IAMWMBufferPass : IUnknown
{
//
// set the interface to use for callback notification
//
HRESULT SetNotify( [in] IAMWMBufferPassCallback *pCallback );
}
// Callback interface used to notify that a WindowMedia buffer is being passed. Typically implemented
// by the app and called by the ASF writer and reader filters.
[
object,
uuid(B25B8372-D2D2-44b2-8653-1B8DAE332489),
pointer_default(unique)
]
interface IAMWMBufferPassCallback : IUnknown
{
//
// give the callback receiver a chance to examine
// (and act on) the INSSBuffer3 before passing on
//
HRESULT Notify( [in] INSSBuffer3 *pNSSBuffer3
, [in] IPin * pPin
, [in] REFERENCE_TIME *prtStart
, [in] REFERENCE_TIME *prtEnd );
}
// ASF Writer filter paramaters for IConfigAsfWriter2 interface
enum _AM_ASFWRITERCONFIG_PARAM {
AM_CONFIGASFWRITER_PARAM_AUTOINDEX = 1, // dynamic indexing, lParam1 boolean, lParam2
AM_CONFIGASFWRITER_PARAM_MULTIPASS, // multipass encoding, app should be able
// to handle EC_PREPROCESS_COMPLETE events
AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS // configure writer to take audio and video input data
// as-is, without any recompression, useful for repackaging
// content in the ASF container
};
// Interface to control the ASF writer (version 2)
[
object,
uuid(7989CCAA-53F0-44f0-884A-F3B03F6AE066),
pointer_default(unique)
]
interface IConfigAsfWriter2 : IConfigAsfWriter
{
//
// Helper method to allow caller to pass in a pin pointer and get back the associated
// stream number. This is helpful when using WMF SDK interfaces directly to work with
// stream-specific properties.
//
HRESULT StreamNumFromPin( [in] IPin *pPin, [out] WORD *pwStreamNum );
// Set value corresponding to the passed in parameter id
HRESULT SetParam(
[in] DWORD dwParam,
[in] DWORD dwParam1,
[in] DWORD dwParam2 // not used, must be 0
);
// Get value corresponding to the passed in parameter id
HRESULT GetParam(
[in] DWORD dwParam,
[out] DWORD *pdwParam1,
[out] DWORD *pdwParam2 // not used, must be 0
);
//
// Multipass encoding
//
HRESULT ResetMultiPassState( void );
}
// 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: The following 2 XXXProfileId methods are obsolete and their use is not recommended.
// Once the WMF SDK added the notion of profile versions, their behavior became ambiguous.
// At the time of this release (Corona) the methods will assume use of the default profile
// version number and make no attempt to override that. For instance, in the Corona release
// version 9 profiles are assumed.
//
// Instead, it is recommended that apps use the XXXProfile methods which take the IWMProfile*
// directly or the ProfileGuid methods which take a profile GUID.
//
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 );
}
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// Windows Media Filters compatibility option flags" )
cpp_quote( "//" )
cpp_quote( "static DWORD EXCLUDE_SCRIPT_STREAM_DELIVERY_SYNCHRONIZATION = 0x00000001;" )
cpp_quote( "" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// ATOM strings to match compatibility option flags above for certain applications that don't want to (or not allowed to) update registry entries" )
cpp_quote( "// These need to be setup by the application using the WM filters to enable the particular functionality" )
cpp_quote( "//" )
cpp_quote( "static const WCHAR* g_wszExcludeScriptStreamDeliverySynchronization = L\"ExcludeScriptStreamDeliverySynchronization\";" )
cpp_quote( "" )