headers: Import mfmediaengine.idl from wine. Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am index d93a0cc..b7ffd19 100644 --- a/mingw-w64-headers/Makefile.am +++ b/mingw-w64-headers/Makefile.am
@@ -172,6 +172,7 @@ include/mfd3d12.idl \ include/mfidl.idl \ include/mfmediacapture.idl \ + include/mfmediaengine.idl \ include/mfobjects.idl \ include/mfplay.idl \ include/mfreadwrite.idl \
diff --git a/mingw-w64-headers/include/mfmediaengine.h b/mingw-w64-headers/include/mfmediaengine.h new file mode 100644 index 0000000..21ae5f4 --- /dev/null +++ b/mingw-w64-headers/include/mfmediaengine.h
@@ -0,0 +1,2376 @@ +/*** Autogenerated by WIDL 8.21 from include/mfmediaengine.idl - Do not edit ***/ + +#ifdef _WIN32 +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif +#include <rpc.h> +#include <rpcndr.h> +#endif + +#ifndef COM_NO_WINDOWS_H +#include <windows.h> +#include <ole2.h> +#endif + +#ifndef __mfmediaengine_h__ +#define __mfmediaengine_h__ + +#ifndef __WIDL_INLINE +#if defined(__cplusplus) || defined(_MSC_VER) +#define __WIDL_INLINE inline +#elif defined(__GNUC__) +#define __WIDL_INLINE __inline__ +#endif +#endif + +/* Forward declarations */ + +#ifndef __IMFMediaError_FWD_DEFINED__ +#define __IMFMediaError_FWD_DEFINED__ +typedef interface IMFMediaError IMFMediaError; +#ifdef __cplusplus +interface IMFMediaError; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngineSrcElements_FWD_DEFINED__ +#define __IMFMediaEngineSrcElements_FWD_DEFINED__ +typedef interface IMFMediaEngineSrcElements IMFMediaEngineSrcElements; +#ifdef __cplusplus +interface IMFMediaEngineSrcElements; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaTimeRange_FWD_DEFINED__ +#define __IMFMediaTimeRange_FWD_DEFINED__ +typedef interface IMFMediaTimeRange IMFMediaTimeRange; +#ifdef __cplusplus +interface IMFMediaTimeRange; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngine_FWD_DEFINED__ +#define __IMFMediaEngine_FWD_DEFINED__ +typedef interface IMFMediaEngine IMFMediaEngine; +#ifdef __cplusplus +interface IMFMediaEngine; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngineEx_FWD_DEFINED__ +#define __IMFMediaEngineEx_FWD_DEFINED__ +typedef interface IMFMediaEngineEx IMFMediaEngineEx; +#ifdef __cplusplus +interface IMFMediaEngineEx; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngineClassFactory_FWD_DEFINED__ +#define __IMFMediaEngineClassFactory_FWD_DEFINED__ +typedef interface IMFMediaEngineClassFactory IMFMediaEngineClassFactory; +#ifdef __cplusplus +interface IMFMediaEngineClassFactory; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngineNotify_FWD_DEFINED__ +#define __IMFMediaEngineNotify_FWD_DEFINED__ +typedef interface IMFMediaEngineNotify IMFMediaEngineNotify; +#ifdef __cplusplus +interface IMFMediaEngineNotify; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngineAudioEndpointId_FWD_DEFINED__ +#define __IMFMediaEngineAudioEndpointId_FWD_DEFINED__ +typedef interface IMFMediaEngineAudioEndpointId IMFMediaEngineAudioEndpointId; +#ifdef __cplusplus +interface IMFMediaEngineAudioEndpointId; +#endif /* __cplusplus */ +#endif + +#ifndef __IMFMediaEngineExtension_FWD_DEFINED__ +#define __IMFMediaEngineExtension_FWD_DEFINED__ +typedef interface IMFMediaEngineExtension IMFMediaEngineExtension; +#ifdef __cplusplus +interface IMFMediaEngineExtension; +#endif /* __cplusplus */ +#endif + +/* Headers for imported files */ + +#include <mfidl.h> + +#ifdef __cplusplus +extern "C" { +#endif + +EXTERN_GUID(CLSID_MFMediaEngineClassFactory, 0xb44392da, 0x499b, 0x446b, 0xa4, 0xcb, 0x00, 0x5f, 0xea, 0xd0, 0xe6, 0xd5); +EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_CATEGORY, 0xc8d4c51d, 0x350e, 0x41f2, 0xba, 0x46, 0xfa, 0xeb, 0xbb, 0x08, 0x57, 0xf6); +EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE, 0xd2cb93d1, 0x116a, 0x44f2, 0x93, 0x85, 0xf7, 0xd0, 0xfd, 0xa2, 0xfb, 0x46); +EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE, 0x4e0212e2, 0xe18f, 0x41e1, 0x95, 0xe5, 0xc0, 0xe7, 0xe9, 0x23, 0x5b, 0xc3); +EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE9, 0x052c2d39, 0x40c0, 0x4188, 0xab, 0x86, 0xf8, 0x28, 0x27, 0x3b, 0x75, 0x22); +EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE10, 0x11a47afd, 0x6589, 0x4124, 0xb3, 0x12, 0x61, 0x58, 0xec, 0x51, 0x7f, 0xc3); +EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE11, 0x1cf1315f, 0xce3f, 0x4035, 0x93, 0x91, 0x16, 0x14, 0x2f, 0x77, 0x51, 0x89); +EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE_EDGE, 0xa6f3e465, 0x3aca, 0x442c, 0xa3, 0xf0, 0xad, 0x6d, 0xda, 0xd8, 0x39, 0xae); +EXTERN_GUID(MF_MEDIA_ENGINE_CALLBACK, 0xc60381b8, 0x83a4, 0x41f8, 0xa3, 0xd0, 0xde, 0x05, 0x07, 0x68, 0x49, 0xa9); +EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE, 0x3ef26ad4, 0xdc54, 0x45de, 0xb9, 0xaf, 0x76, 0xc8, 0xc6, 0x6b, 0xfa, 0x8e); +EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WIN10, 0x5b25e089, 0x6ca7, 0x4139, 0xa2, 0xcb, 0xfc, 0xaa, 0xb3, 0x95, 0x52, 0xa3); +EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WWA_EDGE, 0x15b29098, 0x9f01, 0x4e4d, 0xb6, 0x5a, 0xc0, 0x6c, 0x6c, 0x89, 0xda, 0x2a); +EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS, 0xe0350223, 0x5aaf, 0x4d76, 0xa7, 0xc3, 0x06, 0xde, 0x70, 0x89, 0x4d, 0xb4); +EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER, 0xfdd6dfaa, 0xbd85, 0x4af3, 0x9e, 0x0f, 0xa0, 0x1d, 0x53, 0x9d, 0x87, 0x6a); +EXTERN_GUID(MF_MEDIA_ENGINE_CONTINUE_ON_CODEC_ERROR, 0xdbcdb7f9, 0x48e4, 0x4295, 0xb7, 0x0d, 0xd5, 0x18, 0x23, 0x4e, 0xeb, 0x38); +EXTERN_GUID(MF_MEDIA_ENGINE_COREWINDOW, 0xfccae4dc, 0x0b7f, 0x41c2, 0x9f, 0x96, 0x46, 0x59, 0x94, 0x8a, 0xcd, 0xdc); +EXTERN_GUID(MF_MEDIA_ENGINE_DXGI_MANAGER, 0x065702da, 0x1094, 0x486d, 0x86, 0x17, 0xee, 0x7c, 0xc4, 0xee, 0x46, 0x48); +EXTERN_GUID(MF_MEDIA_ENGINE_EME_CALLBACK, 0x494553a7, 0xa481, 0x4cb7, 0xbe, 0xc5, 0x38, 0x09, 0x03, 0x51, 0x37, 0x31); +EXTERN_GUID(MF_MEDIA_ENGINE_EXTENSION, 0x3109fd46, 0x060d, 0x4b62, 0x8d, 0xcf, 0xfa, 0xff, 0x81, 0x13, 0x18, 0xd2); +EXTERN_GUID(MF_MEDIA_ENGINE_MEDIA_PLAYER_MODE, 0x3ddd8d45, 0x5aa1, 0x4112, 0x82, 0xe5, 0x36, 0xf6, 0xa2, 0x19, 0x7e, 0x6e); +EXTERN_GUID(MF_MEDIA_ENGINE_NEEDKEY_CALLBACK, 0x7ea80843, 0xb6e4, 0x432c, 0x8e, 0xa4, 0x78, 0x48, 0xff, 0xe4, 0x22, 0x0e); +EXTERN_GUID(MF_MEDIA_ENGINE_OPM_HWND, 0xa0be8ee7, 0x0572, 0x4f2c, 0xa8, 0x01, 0x2a, 0x15, 0x1b, 0xd3, 0xe7, 0x26); +EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_HWND, 0xd988879b, 0x67c9, 0x4d92, 0xba, 0xa7, 0x6e, 0xad, 0xd4, 0x46, 0x03, 0x9d); +EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, 0x6debd26f, 0x6ab9, 0x4d7e, 0xb0, 0xee, 0xc6, 0x1a, 0x73, 0xff, 0xad, 0x15); +EXTERN_GUID(MF_MEDIA_ENGINE_SOURCE_RESOLVER_CONFIG_STORE, 0x0ac0c497, 0xb3c4, 0x48c9, 0x9c, 0xde, 0xbb, 0x8c, 0xa2, 0x44, 0x2c, 0xa3); +EXTERN_GUID(MF_MEDIA_ENGINE_STREAM_CONTAINS_ALPHA_CHANNEL, 0x5cbfaf44, 0xd2b2, 0x4cfb, 0x80, 0xa7, 0xd4, 0x29, 0xc7, 0x4c, 0x78, 0x9d); +EXTERN_GUID(MF_MEDIA_ENGINE_SYNCHRONOUS_CLOSE, 0xc3c2e12f, 0x7e0e, 0x4e43, 0xb9, 0x1c, 0xdc, 0x99, 0x2c, 0xcd, 0xfa, 0x5e); +EXTERN_GUID(MF_MEDIA_ENGINE_TELEMETRY_APPLICATION_ID, 0x1e7b273b, 0xa7e4, 0x402a, 0x8f, 0x51, 0xc4, 0x8e, 0x88, 0xa2, 0xca, 0xbc); +EXTERN_GUID(MF_MEDIA_ENGINE_TRACK_ID, 0x65bea312, 0x4043, 0x4815, 0x8e, 0xab, 0x44, 0xdc, 0xe2, 0xef, 0x8f, 0x2a); +EXTERN_GUID(MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT, 0x5066893c, 0x8cf9, 0x42bc, 0x8b, 0x8a, 0x47, 0x22, 0x12, 0xe5, 0x27, 0x26); +typedef enum MF_MEDIA_ENGINE_NETWORK { + MF_MEDIA_ENGINE_NETWORK_EMPTY = 0, + MF_MEDIA_ENGINE_NETWORK_IDLE = 1, + MF_MEDIA_ENGINE_NETWORK_LOADING = 2, + MF_MEDIA_ENGINE_NETWORK_NO_SOURCE = 3 +} MF_MEDIA_ENGINE_NETWORK; +typedef enum MF_MEDIA_ENGINE_ERR { + MF_MEDIA_ENGINE_ERR_NOERROR = 0, + MF_MEDIA_ENGINE_ERR_ABORTED = 1, + MF_MEDIA_ENGINE_ERR_NETWORK = 2, + MF_MEDIA_ENGINE_ERR_DECODE = 3, + MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED = 4, + MF_MEDIA_ENGINE_ERR_ENCRYPTED = 5 +} MF_MEDIA_ENGINE_ERR; +typedef enum MF_MEDIA_ENGINE_PRELOAD { + MF_MEDIA_ENGINE_PRELOAD_MISSING = 0, + MF_MEDIA_ENGINE_PRELOAD_EMPTY = 1, + MF_MEDIA_ENGINE_PRELOAD_NONE = 2, + MF_MEDIA_ENGINE_PRELOAD_METADATA = 3, + MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC = 4 +} MF_MEDIA_ENGINE_PRELOAD; +typedef enum MF_MEDIA_ENGINE_CANPLAY { + MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED = 0, + MF_MEDIA_ENGINE_CANPLAY_MAYBE = 1, + MF_MEDIA_ENGINE_CANPLAY_PROBABLY = 2 +} MF_MEDIA_ENGINE_CANPLAY; +#ifndef _MFVideoNormalizedRect_ +#define _MFVideoNormalizedRect_ +typedef struct MFVideoNormalizedRect { + float left; + float top; + float right; + float bottom; +} MFVideoNormalizedRect; +#endif +typedef enum MF_MEDIA_ENGINE_CREATEFLAGS { + MF_MEDIA_ENGINE_AUDIOONLY = 0x1, + MF_MEDIA_ENGINE_WAITFORSTABLE_STATE = 0x2, + MF_MEDIA_ENGINE_FORCEMUTE = 0x4, + MF_MEDIA_ENGINE_REAL_TIME_MODE = 0x8, + MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS = 0x10, + MF_MEDIA_ENGINE_CREATEFLAGS_MASK = 0x1f +} MF_MEDIA_ENGINE_CREATEFLAGS; +typedef enum MF_MEDIA_ENGINE_EVENT { + MF_MEDIA_ENGINE_EVENT_LOADSTART = 1, + MF_MEDIA_ENGINE_EVENT_PROGRESS = 2, + MF_MEDIA_ENGINE_EVENT_SUSPEND = 3, + MF_MEDIA_ENGINE_EVENT_ABORT = 4, + MF_MEDIA_ENGINE_EVENT_ERROR = 5, + MF_MEDIA_ENGINE_EVENT_EMPTIED = 6, + MF_MEDIA_ENGINE_EVENT_STALLED = 7, + MF_MEDIA_ENGINE_EVENT_PLAY = 8, + MF_MEDIA_ENGINE_EVENT_PAUSE = 9, + MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA = 10, + MF_MEDIA_ENGINE_EVENT_LOADEDDATA = 11, + MF_MEDIA_ENGINE_EVENT_WAITING = 12, + MF_MEDIA_ENGINE_EVENT_PLAYING = 13, + MF_MEDIA_ENGINE_EVENT_CANPLAY = 14, + MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH = 15, + MF_MEDIA_ENGINE_EVENT_SEEKING = 16, + MF_MEDIA_ENGINE_EVENT_SEEKED = 17, + MF_MEDIA_ENGINE_EVENT_TIMEUPDATE = 18, + MF_MEDIA_ENGINE_EVENT_ENDED = 19, + MF_MEDIA_ENGINE_EVENT_RATECHANGE = 20, + MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE = 21, + MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE = 22, + MF_MEDIA_ENGINE_EVENT_FORMATCHANGE = 1000, + MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS = 1001, + MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER = 1002, + MF_MEDIA_ENGINE_EVENT_BALANCECHANGE = 1003, + MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE = 1004, + MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED = 1005, + MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED = 1006, + MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED = 1007, + MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE = 1008, + MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY = 1009, + MF_MEDIA_ENGINE_EVENT_TRACKSCHANGE = 1010, + MF_MEDIA_ENGINE_EVENT_OPMINFO = 1011, + MF_MEDIA_ENGINE_EVENT_RESOURCELOST = 1012, + MF_MEDIA_ENGINE_EVENT_DELAYLOADEVENT_CHANGED = 1013, + MF_MEDIA_ENGINE_EVENT_STREAMRENDERINGERROR = 1014, + MF_MEDIA_ENGINE_EVENT_SUPPORTEDRATES_CHANGED = 1015, + MF_MEDIA_ENGINE_EVENT_AUDIOENDPOINTCHANGE = 1016 +} MF_MEDIA_ENGINE_EVENT; +typedef enum MF_MEDIA_ENGINE_READY { + MF_MEDIA_ENGINE_READY_HAVE_NOTHING = 0, + MF_MEDIA_ENGINE_READY_HAVE_METADATA = 1, + MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA = 2, + MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA = 3, + MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA = 4 +} MF_MEDIA_ENGINE_READY; +/***************************************************************************** + * IMFMediaError interface + */ +#ifndef __IMFMediaError_INTERFACE_DEFINED__ +#define __IMFMediaError_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("fc0e10d2-ab2a-4501-a951-06bb1075184c") +IMFMediaError : public IUnknown +{ + virtual USHORT STDMETHODCALLTYPE GetErrorCode( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetExtendedErrorCode( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetErrorCode( + MF_MEDIA_ENGINE_ERR error) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetExtendedErrorCode( + HRESULT error) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c) +#endif +#else +typedef struct IMFMediaErrorVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaError *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaError *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaError *This); + + /*** IMFMediaError methods ***/ + USHORT (STDMETHODCALLTYPE *GetErrorCode)( + IMFMediaError *This); + + HRESULT (STDMETHODCALLTYPE *GetExtendedErrorCode)( + IMFMediaError *This); + + HRESULT (STDMETHODCALLTYPE *SetErrorCode)( + IMFMediaError *This, + MF_MEDIA_ENGINE_ERR error); + + HRESULT (STDMETHODCALLTYPE *SetExtendedErrorCode)( + IMFMediaError *This, + HRESULT error); + + END_INTERFACE +} IMFMediaErrorVtbl; + +interface IMFMediaError { + CONST_VTBL IMFMediaErrorVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaError_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaError_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaError methods ***/ +#define IMFMediaError_GetErrorCode(This) (This)->lpVtbl->GetErrorCode(This) +#define IMFMediaError_GetExtendedErrorCode(This) (This)->lpVtbl->GetExtendedErrorCode(This) +#define IMFMediaError_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error) +#define IMFMediaError_SetExtendedErrorCode(This,error) (This)->lpVtbl->SetExtendedErrorCode(This,error) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaError_QueryInterface(IMFMediaError* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaError_AddRef(IMFMediaError* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaError_Release(IMFMediaError* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaError methods ***/ +static __WIDL_INLINE USHORT IMFMediaError_GetErrorCode(IMFMediaError* This) { + return This->lpVtbl->GetErrorCode(This); +} +static __WIDL_INLINE HRESULT IMFMediaError_GetExtendedErrorCode(IMFMediaError* This) { + return This->lpVtbl->GetExtendedErrorCode(This); +} +static __WIDL_INLINE HRESULT IMFMediaError_SetErrorCode(IMFMediaError* This,MF_MEDIA_ENGINE_ERR error) { + return This->lpVtbl->SetErrorCode(This,error); +} +static __WIDL_INLINE HRESULT IMFMediaError_SetExtendedErrorCode(IMFMediaError* This,HRESULT error) { + return This->lpVtbl->SetExtendedErrorCode(This,error); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaError_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaEngineSrcElements interface + */ +#ifndef __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ +#define __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("7a5e5354-b114-4c72-b991-3131d75032ea") +IMFMediaEngineSrcElements : public IUnknown +{ + virtual DWORD STDMETHODCALLTYPE GetLength( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetURL( + DWORD index, + BSTR *url) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetType( + DWORD index, + BSTR *type) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMedia( + DWORD index, + BSTR *media) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddElement( + BSTR url, + BSTR type, + BSTR media) = 0; + + virtual HRESULT STDMETHODCALLTYPE RemoveAllElements( + ) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea) +#endif +#else +typedef struct IMFMediaEngineSrcElementsVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngineSrcElements *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngineSrcElements *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngineSrcElements *This); + + /*** IMFMediaEngineSrcElements methods ***/ + DWORD (STDMETHODCALLTYPE *GetLength)( + IMFMediaEngineSrcElements *This); + + HRESULT (STDMETHODCALLTYPE *GetURL)( + IMFMediaEngineSrcElements *This, + DWORD index, + BSTR *url); + + HRESULT (STDMETHODCALLTYPE *GetType)( + IMFMediaEngineSrcElements *This, + DWORD index, + BSTR *type); + + HRESULT (STDMETHODCALLTYPE *GetMedia)( + IMFMediaEngineSrcElements *This, + DWORD index, + BSTR *media); + + HRESULT (STDMETHODCALLTYPE *AddElement)( + IMFMediaEngineSrcElements *This, + BSTR url, + BSTR type, + BSTR media); + + HRESULT (STDMETHODCALLTYPE *RemoveAllElements)( + IMFMediaEngineSrcElements *This); + + END_INTERFACE +} IMFMediaEngineSrcElementsVtbl; + +interface IMFMediaEngineSrcElements { + CONST_VTBL IMFMediaEngineSrcElementsVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngineSrcElements_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngineSrcElements_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngineSrcElements_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngineSrcElements methods ***/ +#define IMFMediaEngineSrcElements_GetLength(This) (This)->lpVtbl->GetLength(This) +#define IMFMediaEngineSrcElements_GetURL(This,index,url) (This)->lpVtbl->GetURL(This,index,url) +#define IMFMediaEngineSrcElements_GetType(This,index,type) (This)->lpVtbl->GetType(This,index,type) +#define IMFMediaEngineSrcElements_GetMedia(This,index,media) (This)->lpVtbl->GetMedia(This,index,media) +#define IMFMediaEngineSrcElements_AddElement(This,url,type,media) (This)->lpVtbl->AddElement(This,url,type,media) +#define IMFMediaEngineSrcElements_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineSrcElements_QueryInterface(IMFMediaEngineSrcElements* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngineSrcElements_AddRef(IMFMediaEngineSrcElements* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngineSrcElements_Release(IMFMediaEngineSrcElements* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngineSrcElements methods ***/ +static __WIDL_INLINE DWORD IMFMediaEngineSrcElements_GetLength(IMFMediaEngineSrcElements* This) { + return This->lpVtbl->GetLength(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineSrcElements_GetURL(IMFMediaEngineSrcElements* This,DWORD index,BSTR *url) { + return This->lpVtbl->GetURL(This,index,url); +} +static __WIDL_INLINE HRESULT IMFMediaEngineSrcElements_GetType(IMFMediaEngineSrcElements* This,DWORD index,BSTR *type) { + return This->lpVtbl->GetType(This,index,type); +} +static __WIDL_INLINE HRESULT IMFMediaEngineSrcElements_GetMedia(IMFMediaEngineSrcElements* This,DWORD index,BSTR *media) { + return This->lpVtbl->GetMedia(This,index,media); +} +static __WIDL_INLINE HRESULT IMFMediaEngineSrcElements_AddElement(IMFMediaEngineSrcElements* This,BSTR url,BSTR type,BSTR media) { + return This->lpVtbl->AddElement(This,url,type,media); +} +static __WIDL_INLINE HRESULT IMFMediaEngineSrcElements_RemoveAllElements(IMFMediaEngineSrcElements* This) { + return This->lpVtbl->RemoveAllElements(This); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaTimeRange interface + */ +#ifndef __IMFMediaTimeRange_INTERFACE_DEFINED__ +#define __IMFMediaTimeRange_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("db71a2fc-078a-414e-9df9-8c2531b0aa6c") +IMFMediaTimeRange : public IUnknown +{ + virtual DWORD STDMETHODCALLTYPE GetLength( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStart( + DWORD index, + double *start) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEnd( + DWORD index, + double *end) = 0; + + virtual WINBOOL STDMETHODCALLTYPE ContainsTime( + double time) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddRange( + double start, + double end) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clear( + ) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c) +#endif +#else +typedef struct IMFMediaTimeRangeVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaTimeRange *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaTimeRange *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaTimeRange *This); + + /*** IMFMediaTimeRange methods ***/ + DWORD (STDMETHODCALLTYPE *GetLength)( + IMFMediaTimeRange *This); + + HRESULT (STDMETHODCALLTYPE *GetStart)( + IMFMediaTimeRange *This, + DWORD index, + double *start); + + HRESULT (STDMETHODCALLTYPE *GetEnd)( + IMFMediaTimeRange *This, + DWORD index, + double *end); + + WINBOOL (STDMETHODCALLTYPE *ContainsTime)( + IMFMediaTimeRange *This, + double time); + + HRESULT (STDMETHODCALLTYPE *AddRange)( + IMFMediaTimeRange *This, + double start, + double end); + + HRESULT (STDMETHODCALLTYPE *Clear)( + IMFMediaTimeRange *This); + + END_INTERFACE +} IMFMediaTimeRangeVtbl; + +interface IMFMediaTimeRange { + CONST_VTBL IMFMediaTimeRangeVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaTimeRange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaTimeRange_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaTimeRange_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaTimeRange methods ***/ +#define IMFMediaTimeRange_GetLength(This) (This)->lpVtbl->GetLength(This) +#define IMFMediaTimeRange_GetStart(This,index,start) (This)->lpVtbl->GetStart(This,index,start) +#define IMFMediaTimeRange_GetEnd(This,index,end) (This)->lpVtbl->GetEnd(This,index,end) +#define IMFMediaTimeRange_ContainsTime(This,time) (This)->lpVtbl->ContainsTime(This,time) +#define IMFMediaTimeRange_AddRange(This,start,end) (This)->lpVtbl->AddRange(This,start,end) +#define IMFMediaTimeRange_Clear(This) (This)->lpVtbl->Clear(This) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaTimeRange_QueryInterface(IMFMediaTimeRange* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaTimeRange_AddRef(IMFMediaTimeRange* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaTimeRange_Release(IMFMediaTimeRange* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaTimeRange methods ***/ +static __WIDL_INLINE DWORD IMFMediaTimeRange_GetLength(IMFMediaTimeRange* This) { + return This->lpVtbl->GetLength(This); +} +static __WIDL_INLINE HRESULT IMFMediaTimeRange_GetStart(IMFMediaTimeRange* This,DWORD index,double *start) { + return This->lpVtbl->GetStart(This,index,start); +} +static __WIDL_INLINE HRESULT IMFMediaTimeRange_GetEnd(IMFMediaTimeRange* This,DWORD index,double *end) { + return This->lpVtbl->GetEnd(This,index,end); +} +static __WIDL_INLINE WINBOOL IMFMediaTimeRange_ContainsTime(IMFMediaTimeRange* This,double time) { + return This->lpVtbl->ContainsTime(This,time); +} +static __WIDL_INLINE HRESULT IMFMediaTimeRange_AddRange(IMFMediaTimeRange* This,double start,double end) { + return This->lpVtbl->AddRange(This,start,end); +} +static __WIDL_INLINE HRESULT IMFMediaTimeRange_Clear(IMFMediaTimeRange* This) { + return This->lpVtbl->Clear(This); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaTimeRange_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaEngine interface + */ +#ifndef __IMFMediaEngine_INTERFACE_DEFINED__ +#define __IMFMediaEngine_INTERFACE_DEFINED__ + +#undef GetCurrentTime +DEFINE_GUID(IID_IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("98a1b0bb-03eb-4935-ae7c-93c1fa0e1c93") +IMFMediaEngine : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetError( + IMFMediaError **error) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetErrorCode( + MF_MEDIA_ENGINE_ERR error) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSourceElements( + IMFMediaEngineSrcElements *elements) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSource( + BSTR url) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentSource( + BSTR *url) = 0; + + virtual USHORT STDMETHODCALLTYPE GetNetworkState( + ) = 0; + + virtual MF_MEDIA_ENGINE_PRELOAD STDMETHODCALLTYPE GetPreload( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPreload( + MF_MEDIA_ENGINE_PRELOAD preload) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBuffered( + IMFMediaTimeRange **buffered) = 0; + + virtual HRESULT STDMETHODCALLTYPE Load( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE CanPlayType( + BSTR type, + MF_MEDIA_ENGINE_CANPLAY *answer) = 0; + + virtual USHORT STDMETHODCALLTYPE GetReadyState( + ) = 0; + + virtual WINBOOL STDMETHODCALLTYPE IsSeeking( + ) = 0; + + virtual double STDMETHODCALLTYPE GetCurrentTime( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCurrentTime( + double time) = 0; + + virtual double STDMETHODCALLTYPE GetStartTime( + ) = 0; + + virtual double STDMETHODCALLTYPE GetDuration( + ) = 0; + + virtual WINBOOL STDMETHODCALLTYPE IsPaused( + ) = 0; + + virtual double STDMETHODCALLTYPE GetDefaultPlaybackRate( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultPlaybackRate( + double rate) = 0; + + virtual double STDMETHODCALLTYPE GetPlaybackRate( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPlaybackRate( + double rate) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPlayed( + IMFMediaTimeRange **played) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSeekable( + IMFMediaTimeRange **seekable) = 0; + + virtual WINBOOL STDMETHODCALLTYPE IsEnded( + ) = 0; + + virtual WINBOOL STDMETHODCALLTYPE GetAutoPlay( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAutoPlay( + WINBOOL autoplay) = 0; + + virtual WINBOOL STDMETHODCALLTYPE GetLoop( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetLoop( + WINBOOL loop) = 0; + + virtual HRESULT STDMETHODCALLTYPE Play( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Pause( + ) = 0; + + virtual WINBOOL STDMETHODCALLTYPE GetMuted( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMuted( + WINBOOL muted) = 0; + + virtual double STDMETHODCALLTYPE GetVolume( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVolume( + double volume) = 0; + + virtual WINBOOL STDMETHODCALLTYPE HasVideo( + ) = 0; + + virtual WINBOOL STDMETHODCALLTYPE HasAudio( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize( + DWORD *cx, + DWORD *cy) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoAspectRatio( + DWORD *cx, + DWORD *cy) = 0; + + virtual HRESULT STDMETHODCALLTYPE Shutdown( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE TransferVideoFrame( + IUnknown *surface, + const MFVideoNormalizedRect *src, + const RECT *dst, + const MFARGB *color) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnVideoStreamTick( + LONGLONG *time) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93) +#endif +#else +typedef struct IMFMediaEngineVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngine *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngine *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngine *This); + + /*** IMFMediaEngine methods ***/ + HRESULT (STDMETHODCALLTYPE *GetError)( + IMFMediaEngine *This, + IMFMediaError **error); + + HRESULT (STDMETHODCALLTYPE *SetErrorCode)( + IMFMediaEngine *This, + MF_MEDIA_ENGINE_ERR error); + + HRESULT (STDMETHODCALLTYPE *SetSourceElements)( + IMFMediaEngine *This, + IMFMediaEngineSrcElements *elements); + + HRESULT (STDMETHODCALLTYPE *SetSource)( + IMFMediaEngine *This, + BSTR url); + + HRESULT (STDMETHODCALLTYPE *GetCurrentSource)( + IMFMediaEngine *This, + BSTR *url); + + USHORT (STDMETHODCALLTYPE *GetNetworkState)( + IMFMediaEngine *This); + + MF_MEDIA_ENGINE_PRELOAD (STDMETHODCALLTYPE *GetPreload)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetPreload)( + IMFMediaEngine *This, + MF_MEDIA_ENGINE_PRELOAD preload); + + HRESULT (STDMETHODCALLTYPE *GetBuffered)( + IMFMediaEngine *This, + IMFMediaTimeRange **buffered); + + HRESULT (STDMETHODCALLTYPE *Load)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *CanPlayType)( + IMFMediaEngine *This, + BSTR type, + MF_MEDIA_ENGINE_CANPLAY *answer); + + USHORT (STDMETHODCALLTYPE *GetReadyState)( + IMFMediaEngine *This); + + WINBOOL (STDMETHODCALLTYPE *IsSeeking)( + IMFMediaEngine *This); + + double (STDMETHODCALLTYPE *GetCurrentTime)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetCurrentTime)( + IMFMediaEngine *This, + double time); + + double (STDMETHODCALLTYPE *GetStartTime)( + IMFMediaEngine *This); + + double (STDMETHODCALLTYPE *GetDuration)( + IMFMediaEngine *This); + + WINBOOL (STDMETHODCALLTYPE *IsPaused)( + IMFMediaEngine *This); + + double (STDMETHODCALLTYPE *GetDefaultPlaybackRate)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetDefaultPlaybackRate)( + IMFMediaEngine *This, + double rate); + + double (STDMETHODCALLTYPE *GetPlaybackRate)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetPlaybackRate)( + IMFMediaEngine *This, + double rate); + + HRESULT (STDMETHODCALLTYPE *GetPlayed)( + IMFMediaEngine *This, + IMFMediaTimeRange **played); + + HRESULT (STDMETHODCALLTYPE *GetSeekable)( + IMFMediaEngine *This, + IMFMediaTimeRange **seekable); + + WINBOOL (STDMETHODCALLTYPE *IsEnded)( + IMFMediaEngine *This); + + WINBOOL (STDMETHODCALLTYPE *GetAutoPlay)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetAutoPlay)( + IMFMediaEngine *This, + WINBOOL autoplay); + + WINBOOL (STDMETHODCALLTYPE *GetLoop)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetLoop)( + IMFMediaEngine *This, + WINBOOL loop); + + HRESULT (STDMETHODCALLTYPE *Play)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *Pause)( + IMFMediaEngine *This); + + WINBOOL (STDMETHODCALLTYPE *GetMuted)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetMuted)( + IMFMediaEngine *This, + WINBOOL muted); + + double (STDMETHODCALLTYPE *GetVolume)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *SetVolume)( + IMFMediaEngine *This, + double volume); + + WINBOOL (STDMETHODCALLTYPE *HasVideo)( + IMFMediaEngine *This); + + WINBOOL (STDMETHODCALLTYPE *HasAudio)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)( + IMFMediaEngine *This, + DWORD *cx, + DWORD *cy); + + HRESULT (STDMETHODCALLTYPE *GetVideoAspectRatio)( + IMFMediaEngine *This, + DWORD *cx, + DWORD *cy); + + HRESULT (STDMETHODCALLTYPE *Shutdown)( + IMFMediaEngine *This); + + HRESULT (STDMETHODCALLTYPE *TransferVideoFrame)( + IMFMediaEngine *This, + IUnknown *surface, + const MFVideoNormalizedRect *src, + const RECT *dst, + const MFARGB *color); + + HRESULT (STDMETHODCALLTYPE *OnVideoStreamTick)( + IMFMediaEngine *This, + LONGLONG *time); + + END_INTERFACE +} IMFMediaEngineVtbl; + +interface IMFMediaEngine { + CONST_VTBL IMFMediaEngineVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngine_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngine_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngine_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngine methods ***/ +#define IMFMediaEngine_GetError(This,error) (This)->lpVtbl->GetError(This,error) +#define IMFMediaEngine_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error) +#define IMFMediaEngine_SetSourceElements(This,elements) (This)->lpVtbl->SetSourceElements(This,elements) +#define IMFMediaEngine_SetSource(This,url) (This)->lpVtbl->SetSource(This,url) +#define IMFMediaEngine_GetCurrentSource(This,url) (This)->lpVtbl->GetCurrentSource(This,url) +#define IMFMediaEngine_GetNetworkState(This) (This)->lpVtbl->GetNetworkState(This) +#define IMFMediaEngine_GetPreload(This) (This)->lpVtbl->GetPreload(This) +#define IMFMediaEngine_SetPreload(This,preload) (This)->lpVtbl->SetPreload(This,preload) +#define IMFMediaEngine_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered) +#define IMFMediaEngine_Load(This) (This)->lpVtbl->Load(This) +#define IMFMediaEngine_CanPlayType(This,type,answer) (This)->lpVtbl->CanPlayType(This,type,answer) +#define IMFMediaEngine_GetReadyState(This) (This)->lpVtbl->GetReadyState(This) +#define IMFMediaEngine_IsSeeking(This) (This)->lpVtbl->IsSeeking(This) +#define IMFMediaEngine_GetCurrentTime(This) (This)->lpVtbl->GetCurrentTime(This) +#define IMFMediaEngine_SetCurrentTime(This,time) (This)->lpVtbl->SetCurrentTime(This,time) +#define IMFMediaEngine_GetStartTime(This) (This)->lpVtbl->GetStartTime(This) +#define IMFMediaEngine_GetDuration(This) (This)->lpVtbl->GetDuration(This) +#define IMFMediaEngine_IsPaused(This) (This)->lpVtbl->IsPaused(This) +#define IMFMediaEngine_GetDefaultPlaybackRate(This) (This)->lpVtbl->GetDefaultPlaybackRate(This) +#define IMFMediaEngine_SetDefaultPlaybackRate(This,rate) (This)->lpVtbl->SetDefaultPlaybackRate(This,rate) +#define IMFMediaEngine_GetPlaybackRate(This) (This)->lpVtbl->GetPlaybackRate(This) +#define IMFMediaEngine_SetPlaybackRate(This,rate) (This)->lpVtbl->SetPlaybackRate(This,rate) +#define IMFMediaEngine_GetPlayed(This,played) (This)->lpVtbl->GetPlayed(This,played) +#define IMFMediaEngine_GetSeekable(This,seekable) (This)->lpVtbl->GetSeekable(This,seekable) +#define IMFMediaEngine_IsEnded(This) (This)->lpVtbl->IsEnded(This) +#define IMFMediaEngine_GetAutoPlay(This) (This)->lpVtbl->GetAutoPlay(This) +#define IMFMediaEngine_SetAutoPlay(This,autoplay) (This)->lpVtbl->SetAutoPlay(This,autoplay) +#define IMFMediaEngine_GetLoop(This) (This)->lpVtbl->GetLoop(This) +#define IMFMediaEngine_SetLoop(This,loop) (This)->lpVtbl->SetLoop(This,loop) +#define IMFMediaEngine_Play(This) (This)->lpVtbl->Play(This) +#define IMFMediaEngine_Pause(This) (This)->lpVtbl->Pause(This) +#define IMFMediaEngine_GetMuted(This) (This)->lpVtbl->GetMuted(This) +#define IMFMediaEngine_SetMuted(This,muted) (This)->lpVtbl->SetMuted(This,muted) +#define IMFMediaEngine_GetVolume(This) (This)->lpVtbl->GetVolume(This) +#define IMFMediaEngine_SetVolume(This,volume) (This)->lpVtbl->SetVolume(This,volume) +#define IMFMediaEngine_HasVideo(This) (This)->lpVtbl->HasVideo(This) +#define IMFMediaEngine_HasAudio(This) (This)->lpVtbl->HasAudio(This) +#define IMFMediaEngine_GetNativeVideoSize(This,cx,cy) (This)->lpVtbl->GetNativeVideoSize(This,cx,cy) +#define IMFMediaEngine_GetVideoAspectRatio(This,cx,cy) (This)->lpVtbl->GetVideoAspectRatio(This,cx,cy) +#define IMFMediaEngine_Shutdown(This) (This)->lpVtbl->Shutdown(This) +#define IMFMediaEngine_TransferVideoFrame(This,surface,src,dst,color) (This)->lpVtbl->TransferVideoFrame(This,surface,src,dst,color) +#define IMFMediaEngine_OnVideoStreamTick(This,time) (This)->lpVtbl->OnVideoStreamTick(This,time) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngine_QueryInterface(IMFMediaEngine* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngine_AddRef(IMFMediaEngine* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngine_Release(IMFMediaEngine* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngine methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngine_GetError(IMFMediaEngine* This,IMFMediaError **error) { + return This->lpVtbl->GetError(This,error); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetErrorCode(IMFMediaEngine* This,MF_MEDIA_ENGINE_ERR error) { + return This->lpVtbl->SetErrorCode(This,error); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetSourceElements(IMFMediaEngine* This,IMFMediaEngineSrcElements *elements) { + return This->lpVtbl->SetSourceElements(This,elements); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetSource(IMFMediaEngine* This,BSTR url) { + return This->lpVtbl->SetSource(This,url); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_GetCurrentSource(IMFMediaEngine* This,BSTR *url) { + return This->lpVtbl->GetCurrentSource(This,url); +} +static __WIDL_INLINE USHORT IMFMediaEngine_GetNetworkState(IMFMediaEngine* This) { + return This->lpVtbl->GetNetworkState(This); +} +static __WIDL_INLINE MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine_GetPreload(IMFMediaEngine* This) { + return This->lpVtbl->GetPreload(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetPreload(IMFMediaEngine* This,MF_MEDIA_ENGINE_PRELOAD preload) { + return This->lpVtbl->SetPreload(This,preload); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_GetBuffered(IMFMediaEngine* This,IMFMediaTimeRange **buffered) { + return This->lpVtbl->GetBuffered(This,buffered); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_Load(IMFMediaEngine* This) { + return This->lpVtbl->Load(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_CanPlayType(IMFMediaEngine* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) { + return This->lpVtbl->CanPlayType(This,type,answer); +} +static __WIDL_INLINE USHORT IMFMediaEngine_GetReadyState(IMFMediaEngine* This) { + return This->lpVtbl->GetReadyState(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_IsSeeking(IMFMediaEngine* This) { + return This->lpVtbl->IsSeeking(This); +} +static __WIDL_INLINE double IMFMediaEngine_GetCurrentTime(IMFMediaEngine* This) { + return This->lpVtbl->GetCurrentTime(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetCurrentTime(IMFMediaEngine* This,double time) { + return This->lpVtbl->SetCurrentTime(This,time); +} +static __WIDL_INLINE double IMFMediaEngine_GetStartTime(IMFMediaEngine* This) { + return This->lpVtbl->GetStartTime(This); +} +static __WIDL_INLINE double IMFMediaEngine_GetDuration(IMFMediaEngine* This) { + return This->lpVtbl->GetDuration(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_IsPaused(IMFMediaEngine* This) { + return This->lpVtbl->IsPaused(This); +} +static __WIDL_INLINE double IMFMediaEngine_GetDefaultPlaybackRate(IMFMediaEngine* This) { + return This->lpVtbl->GetDefaultPlaybackRate(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetDefaultPlaybackRate(IMFMediaEngine* This,double rate) { + return This->lpVtbl->SetDefaultPlaybackRate(This,rate); +} +static __WIDL_INLINE double IMFMediaEngine_GetPlaybackRate(IMFMediaEngine* This) { + return This->lpVtbl->GetPlaybackRate(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetPlaybackRate(IMFMediaEngine* This,double rate) { + return This->lpVtbl->SetPlaybackRate(This,rate); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_GetPlayed(IMFMediaEngine* This,IMFMediaTimeRange **played) { + return This->lpVtbl->GetPlayed(This,played); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_GetSeekable(IMFMediaEngine* This,IMFMediaTimeRange **seekable) { + return This->lpVtbl->GetSeekable(This,seekable); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_IsEnded(IMFMediaEngine* This) { + return This->lpVtbl->IsEnded(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_GetAutoPlay(IMFMediaEngine* This) { + return This->lpVtbl->GetAutoPlay(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetAutoPlay(IMFMediaEngine* This,WINBOOL autoplay) { + return This->lpVtbl->SetAutoPlay(This,autoplay); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_GetLoop(IMFMediaEngine* This) { + return This->lpVtbl->GetLoop(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetLoop(IMFMediaEngine* This,WINBOOL loop) { + return This->lpVtbl->SetLoop(This,loop); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_Play(IMFMediaEngine* This) { + return This->lpVtbl->Play(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_Pause(IMFMediaEngine* This) { + return This->lpVtbl->Pause(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_GetMuted(IMFMediaEngine* This) { + return This->lpVtbl->GetMuted(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetMuted(IMFMediaEngine* This,WINBOOL muted) { + return This->lpVtbl->SetMuted(This,muted); +} +static __WIDL_INLINE double IMFMediaEngine_GetVolume(IMFMediaEngine* This) { + return This->lpVtbl->GetVolume(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_SetVolume(IMFMediaEngine* This,double volume) { + return This->lpVtbl->SetVolume(This,volume); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_HasVideo(IMFMediaEngine* This) { + return This->lpVtbl->HasVideo(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngine_HasAudio(IMFMediaEngine* This) { + return This->lpVtbl->HasAudio(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_GetNativeVideoSize(IMFMediaEngine* This,DWORD *cx,DWORD *cy) { + return This->lpVtbl->GetNativeVideoSize(This,cx,cy); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_GetVideoAspectRatio(IMFMediaEngine* This,DWORD *cx,DWORD *cy) { + return This->lpVtbl->GetVideoAspectRatio(This,cx,cy); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_Shutdown(IMFMediaEngine* This) { + return This->lpVtbl->Shutdown(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_TransferVideoFrame(IMFMediaEngine* This,IUnknown *surface,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *color) { + return This->lpVtbl->TransferVideoFrame(This,surface,src,dst,color); +} +static __WIDL_INLINE HRESULT IMFMediaEngine_OnVideoStreamTick(IMFMediaEngine* This,LONGLONG *time) { + return This->lpVtbl->OnVideoStreamTick(This,time); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngine_INTERFACE_DEFINED__ */ + +typedef enum MF_MEDIA_ENGINE_STATISTIC { + MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED = 0, + MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED = 1, + MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED = 2, + MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS = 3, + MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND = 4, + MF_MEDIA_ENGINE_STATISTIC_PLAYBACK_JITTER = 5, + MF_MEDIA_ENGINE_STATISTIC_FRAMES_CORRUPTED = 6, + MF_MEDIA_ENGINE_STATISTIC_TOTAL_FRAME_DELAY = 7 +} MF_MEDIA_ENGINE_STATISTIC; +typedef enum MF_MEDIA_ENGINE_S3D_PACKING_MODE { + MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE = 0, + MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE = 1, + MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM = 2 +} MF_MEDIA_ENGINE_S3D_PACKING_MODE; +typedef enum MF_MEDIA_ENGINE_SEEK_MODE { + MF_MEDIA_ENGINE_SEEK_MODE_NORMAL = 0, + MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE = 1 +} MF_MEDIA_ENGINE_SEEK_MODE; +/***************************************************************************** + * IMFMediaEngineEx interface + */ +#ifndef __IMFMediaEngineEx_INTERFACE_DEFINED__ +#define __IMFMediaEngineEx_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("83015ead-b1e6-40d0-a98a-37145ffe1ad1") +IMFMediaEngineEx : public IMFMediaEngine +{ + virtual HRESULT STDMETHODCALLTYPE SetSourceFromByteStream( + IMFByteStream *bytestream, + BSTR url) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStatistics( + MF_MEDIA_ENGINE_STATISTIC stat_id, + PROPVARIANT *stat) = 0; + + virtual HRESULT STDMETHODCALLTYPE UpdateVideoStream( + const MFVideoNormalizedRect *src, + const RECT *dst, + const MFARGB *border_color) = 0; + + virtual double STDMETHODCALLTYPE GetBalance( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBalance( + double balance) = 0; + + virtual WINBOOL STDMETHODCALLTYPE IsPlaybackRateSupported( + double rate) = 0; + + virtual HRESULT STDMETHODCALLTYPE FrameStep( + WINBOOL forward) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetResourceCharacteristics( + DWORD *flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPresentationAttribute( + REFGUID attribute, + PROPVARIANT *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( + DWORD *stream_count) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStreamAttribute( + DWORD stream_index, + REFGUID attribute, + PROPVARIANT *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStreamSelection( + DWORD stream_index, + WINBOOL *enabled) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStreamSelection( + DWORD stream_index, + WINBOOL enabled) = 0; + + virtual HRESULT STDMETHODCALLTYPE ApplyStreamSelections( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsProtected( + WINBOOL *protected) = 0; + + virtual HRESULT STDMETHODCALLTYPE InsertVideoEffect( + IUnknown *effect, + WINBOOL is_optional) = 0; + + virtual HRESULT STDMETHODCALLTYPE InsertAudioEffect( + IUnknown *effect, + WINBOOL is_optional) = 0; + + virtual HRESULT STDMETHODCALLTYPE RemoveAllEffects( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimelineMarkerTimer( + double timeout) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimelineMarkerTimer( + double *timeout) = 0; + + virtual HRESULT STDMETHODCALLTYPE CancelTimelineMarkerTimer( + ) = 0; + + virtual WINBOOL STDMETHODCALLTYPE IsStereo3D( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStereo3DFramePackingMode( + MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStereo3DFramePackingMode( + MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStereo3DRenderMode( + MF3DVideoOutputType *output_type) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStereo3DRenderMode( + MF3DVideoOutputType output_type) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableWindowlessSwapchainMode( + WINBOOL enable) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoSwapchainHandle( + HANDLE *swapchain) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableHorizontalMirrorMode( + WINBOOL enable) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAudioStreamCategory( + UINT32 *category) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioStreamCategory( + UINT32 category) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAudioEndpointRole( + UINT32 *role) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioEndpointRole( + UINT32 role) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRealTimeMode( + WINBOOL *enabled) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRealTimeMode( + WINBOOL enable) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCurrentTimeEx( + double seektime, + MF_MEDIA_ENGINE_SEEK_MODE mode) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableTimeUpdateTimer( + WINBOOL enable) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1) +#endif +#else +typedef struct IMFMediaEngineExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngineEx *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngineEx *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngineEx *This); + + /*** IMFMediaEngine methods ***/ + HRESULT (STDMETHODCALLTYPE *GetError)( + IMFMediaEngineEx *This, + IMFMediaError **error); + + HRESULT (STDMETHODCALLTYPE *SetErrorCode)( + IMFMediaEngineEx *This, + MF_MEDIA_ENGINE_ERR error); + + HRESULT (STDMETHODCALLTYPE *SetSourceElements)( + IMFMediaEngineEx *This, + IMFMediaEngineSrcElements *elements); + + HRESULT (STDMETHODCALLTYPE *SetSource)( + IMFMediaEngineEx *This, + BSTR url); + + HRESULT (STDMETHODCALLTYPE *GetCurrentSource)( + IMFMediaEngineEx *This, + BSTR *url); + + USHORT (STDMETHODCALLTYPE *GetNetworkState)( + IMFMediaEngineEx *This); + + MF_MEDIA_ENGINE_PRELOAD (STDMETHODCALLTYPE *GetPreload)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetPreload)( + IMFMediaEngineEx *This, + MF_MEDIA_ENGINE_PRELOAD preload); + + HRESULT (STDMETHODCALLTYPE *GetBuffered)( + IMFMediaEngineEx *This, + IMFMediaTimeRange **buffered); + + HRESULT (STDMETHODCALLTYPE *Load)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *CanPlayType)( + IMFMediaEngineEx *This, + BSTR type, + MF_MEDIA_ENGINE_CANPLAY *answer); + + USHORT (STDMETHODCALLTYPE *GetReadyState)( + IMFMediaEngineEx *This); + + WINBOOL (STDMETHODCALLTYPE *IsSeeking)( + IMFMediaEngineEx *This); + + double (STDMETHODCALLTYPE *GetCurrentTime)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetCurrentTime)( + IMFMediaEngineEx *This, + double time); + + double (STDMETHODCALLTYPE *GetStartTime)( + IMFMediaEngineEx *This); + + double (STDMETHODCALLTYPE *GetDuration)( + IMFMediaEngineEx *This); + + WINBOOL (STDMETHODCALLTYPE *IsPaused)( + IMFMediaEngineEx *This); + + double (STDMETHODCALLTYPE *GetDefaultPlaybackRate)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetDefaultPlaybackRate)( + IMFMediaEngineEx *This, + double rate); + + double (STDMETHODCALLTYPE *GetPlaybackRate)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetPlaybackRate)( + IMFMediaEngineEx *This, + double rate); + + HRESULT (STDMETHODCALLTYPE *GetPlayed)( + IMFMediaEngineEx *This, + IMFMediaTimeRange **played); + + HRESULT (STDMETHODCALLTYPE *GetSeekable)( + IMFMediaEngineEx *This, + IMFMediaTimeRange **seekable); + + WINBOOL (STDMETHODCALLTYPE *IsEnded)( + IMFMediaEngineEx *This); + + WINBOOL (STDMETHODCALLTYPE *GetAutoPlay)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetAutoPlay)( + IMFMediaEngineEx *This, + WINBOOL autoplay); + + WINBOOL (STDMETHODCALLTYPE *GetLoop)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetLoop)( + IMFMediaEngineEx *This, + WINBOOL loop); + + HRESULT (STDMETHODCALLTYPE *Play)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *Pause)( + IMFMediaEngineEx *This); + + WINBOOL (STDMETHODCALLTYPE *GetMuted)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetMuted)( + IMFMediaEngineEx *This, + WINBOOL muted); + + double (STDMETHODCALLTYPE *GetVolume)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetVolume)( + IMFMediaEngineEx *This, + double volume); + + WINBOOL (STDMETHODCALLTYPE *HasVideo)( + IMFMediaEngineEx *This); + + WINBOOL (STDMETHODCALLTYPE *HasAudio)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)( + IMFMediaEngineEx *This, + DWORD *cx, + DWORD *cy); + + HRESULT (STDMETHODCALLTYPE *GetVideoAspectRatio)( + IMFMediaEngineEx *This, + DWORD *cx, + DWORD *cy); + + HRESULT (STDMETHODCALLTYPE *Shutdown)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *TransferVideoFrame)( + IMFMediaEngineEx *This, + IUnknown *surface, + const MFVideoNormalizedRect *src, + const RECT *dst, + const MFARGB *color); + + HRESULT (STDMETHODCALLTYPE *OnVideoStreamTick)( + IMFMediaEngineEx *This, + LONGLONG *time); + + /*** IMFMediaEngineEx methods ***/ + HRESULT (STDMETHODCALLTYPE *SetSourceFromByteStream)( + IMFMediaEngineEx *This, + IMFByteStream *bytestream, + BSTR url); + + HRESULT (STDMETHODCALLTYPE *GetStatistics)( + IMFMediaEngineEx *This, + MF_MEDIA_ENGINE_STATISTIC stat_id, + PROPVARIANT *stat); + + HRESULT (STDMETHODCALLTYPE *UpdateVideoStream)( + IMFMediaEngineEx *This, + const MFVideoNormalizedRect *src, + const RECT *dst, + const MFARGB *border_color); + + double (STDMETHODCALLTYPE *GetBalance)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetBalance)( + IMFMediaEngineEx *This, + double balance); + + WINBOOL (STDMETHODCALLTYPE *IsPlaybackRateSupported)( + IMFMediaEngineEx *This, + double rate); + + HRESULT (STDMETHODCALLTYPE *FrameStep)( + IMFMediaEngineEx *This, + WINBOOL forward); + + HRESULT (STDMETHODCALLTYPE *GetResourceCharacteristics)( + IMFMediaEngineEx *This, + DWORD *flags); + + HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)( + IMFMediaEngineEx *This, + REFGUID attribute, + PROPVARIANT *value); + + HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)( + IMFMediaEngineEx *This, + DWORD *stream_count); + + HRESULT (STDMETHODCALLTYPE *GetStreamAttribute)( + IMFMediaEngineEx *This, + DWORD stream_index, + REFGUID attribute, + PROPVARIANT *value); + + HRESULT (STDMETHODCALLTYPE *GetStreamSelection)( + IMFMediaEngineEx *This, + DWORD stream_index, + WINBOOL *enabled); + + HRESULT (STDMETHODCALLTYPE *SetStreamSelection)( + IMFMediaEngineEx *This, + DWORD stream_index, + WINBOOL enabled); + + HRESULT (STDMETHODCALLTYPE *ApplyStreamSelections)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *IsProtected)( + IMFMediaEngineEx *This, + WINBOOL *protected); + + HRESULT (STDMETHODCALLTYPE *InsertVideoEffect)( + IMFMediaEngineEx *This, + IUnknown *effect, + WINBOOL is_optional); + + HRESULT (STDMETHODCALLTYPE *InsertAudioEffect)( + IMFMediaEngineEx *This, + IUnknown *effect, + WINBOOL is_optional); + + HRESULT (STDMETHODCALLTYPE *RemoveAllEffects)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *SetTimelineMarkerTimer)( + IMFMediaEngineEx *This, + double timeout); + + HRESULT (STDMETHODCALLTYPE *GetTimelineMarkerTimer)( + IMFMediaEngineEx *This, + double *timeout); + + HRESULT (STDMETHODCALLTYPE *CancelTimelineMarkerTimer)( + IMFMediaEngineEx *This); + + WINBOOL (STDMETHODCALLTYPE *IsStereo3D)( + IMFMediaEngineEx *This); + + HRESULT (STDMETHODCALLTYPE *GetStereo3DFramePackingMode)( + IMFMediaEngineEx *This, + MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode); + + HRESULT (STDMETHODCALLTYPE *SetStereo3DFramePackingMode)( + IMFMediaEngineEx *This, + MF_MEDIA_ENGINE_S3D_PACKING_MODE mode); + + HRESULT (STDMETHODCALLTYPE *GetStereo3DRenderMode)( + IMFMediaEngineEx *This, + MF3DVideoOutputType *output_type); + + HRESULT (STDMETHODCALLTYPE *SetStereo3DRenderMode)( + IMFMediaEngineEx *This, + MF3DVideoOutputType output_type); + + HRESULT (STDMETHODCALLTYPE *EnableWindowlessSwapchainMode)( + IMFMediaEngineEx *This, + WINBOOL enable); + + HRESULT (STDMETHODCALLTYPE *GetVideoSwapchainHandle)( + IMFMediaEngineEx *This, + HANDLE *swapchain); + + HRESULT (STDMETHODCALLTYPE *EnableHorizontalMirrorMode)( + IMFMediaEngineEx *This, + WINBOOL enable); + + HRESULT (STDMETHODCALLTYPE *GetAudioStreamCategory)( + IMFMediaEngineEx *This, + UINT32 *category); + + HRESULT (STDMETHODCALLTYPE *SetAudioStreamCategory)( + IMFMediaEngineEx *This, + UINT32 category); + + HRESULT (STDMETHODCALLTYPE *GetAudioEndpointRole)( + IMFMediaEngineEx *This, + UINT32 *role); + + HRESULT (STDMETHODCALLTYPE *SetAudioEndpointRole)( + IMFMediaEngineEx *This, + UINT32 role); + + HRESULT (STDMETHODCALLTYPE *GetRealTimeMode)( + IMFMediaEngineEx *This, + WINBOOL *enabled); + + HRESULT (STDMETHODCALLTYPE *SetRealTimeMode)( + IMFMediaEngineEx *This, + WINBOOL enable); + + HRESULT (STDMETHODCALLTYPE *SetCurrentTimeEx)( + IMFMediaEngineEx *This, + double seektime, + MF_MEDIA_ENGINE_SEEK_MODE mode); + + HRESULT (STDMETHODCALLTYPE *EnableTimeUpdateTimer)( + IMFMediaEngineEx *This, + WINBOOL enable); + + END_INTERFACE +} IMFMediaEngineExVtbl; + +interface IMFMediaEngineEx { + CONST_VTBL IMFMediaEngineExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngineEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngineEx_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngineEx_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngine methods ***/ +#define IMFMediaEngineEx_GetError(This,error) (This)->lpVtbl->GetError(This,error) +#define IMFMediaEngineEx_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error) +#define IMFMediaEngineEx_SetSourceElements(This,elements) (This)->lpVtbl->SetSourceElements(This,elements) +#define IMFMediaEngineEx_SetSource(This,url) (This)->lpVtbl->SetSource(This,url) +#define IMFMediaEngineEx_GetCurrentSource(This,url) (This)->lpVtbl->GetCurrentSource(This,url) +#define IMFMediaEngineEx_GetNetworkState(This) (This)->lpVtbl->GetNetworkState(This) +#define IMFMediaEngineEx_GetPreload(This) (This)->lpVtbl->GetPreload(This) +#define IMFMediaEngineEx_SetPreload(This,preload) (This)->lpVtbl->SetPreload(This,preload) +#define IMFMediaEngineEx_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered) +#define IMFMediaEngineEx_Load(This) (This)->lpVtbl->Load(This) +#define IMFMediaEngineEx_CanPlayType(This,type,answer) (This)->lpVtbl->CanPlayType(This,type,answer) +#define IMFMediaEngineEx_GetReadyState(This) (This)->lpVtbl->GetReadyState(This) +#define IMFMediaEngineEx_IsSeeking(This) (This)->lpVtbl->IsSeeking(This) +#define IMFMediaEngineEx_GetCurrentTime(This) (This)->lpVtbl->GetCurrentTime(This) +#define IMFMediaEngineEx_SetCurrentTime(This,time) (This)->lpVtbl->SetCurrentTime(This,time) +#define IMFMediaEngineEx_GetStartTime(This) (This)->lpVtbl->GetStartTime(This) +#define IMFMediaEngineEx_GetDuration(This) (This)->lpVtbl->GetDuration(This) +#define IMFMediaEngineEx_IsPaused(This) (This)->lpVtbl->IsPaused(This) +#define IMFMediaEngineEx_GetDefaultPlaybackRate(This) (This)->lpVtbl->GetDefaultPlaybackRate(This) +#define IMFMediaEngineEx_SetDefaultPlaybackRate(This,rate) (This)->lpVtbl->SetDefaultPlaybackRate(This,rate) +#define IMFMediaEngineEx_GetPlaybackRate(This) (This)->lpVtbl->GetPlaybackRate(This) +#define IMFMediaEngineEx_SetPlaybackRate(This,rate) (This)->lpVtbl->SetPlaybackRate(This,rate) +#define IMFMediaEngineEx_GetPlayed(This,played) (This)->lpVtbl->GetPlayed(This,played) +#define IMFMediaEngineEx_GetSeekable(This,seekable) (This)->lpVtbl->GetSeekable(This,seekable) +#define IMFMediaEngineEx_IsEnded(This) (This)->lpVtbl->IsEnded(This) +#define IMFMediaEngineEx_GetAutoPlay(This) (This)->lpVtbl->GetAutoPlay(This) +#define IMFMediaEngineEx_SetAutoPlay(This,autoplay) (This)->lpVtbl->SetAutoPlay(This,autoplay) +#define IMFMediaEngineEx_GetLoop(This) (This)->lpVtbl->GetLoop(This) +#define IMFMediaEngineEx_SetLoop(This,loop) (This)->lpVtbl->SetLoop(This,loop) +#define IMFMediaEngineEx_Play(This) (This)->lpVtbl->Play(This) +#define IMFMediaEngineEx_Pause(This) (This)->lpVtbl->Pause(This) +#define IMFMediaEngineEx_GetMuted(This) (This)->lpVtbl->GetMuted(This) +#define IMFMediaEngineEx_SetMuted(This,muted) (This)->lpVtbl->SetMuted(This,muted) +#define IMFMediaEngineEx_GetVolume(This) (This)->lpVtbl->GetVolume(This) +#define IMFMediaEngineEx_SetVolume(This,volume) (This)->lpVtbl->SetVolume(This,volume) +#define IMFMediaEngineEx_HasVideo(This) (This)->lpVtbl->HasVideo(This) +#define IMFMediaEngineEx_HasAudio(This) (This)->lpVtbl->HasAudio(This) +#define IMFMediaEngineEx_GetNativeVideoSize(This,cx,cy) (This)->lpVtbl->GetNativeVideoSize(This,cx,cy) +#define IMFMediaEngineEx_GetVideoAspectRatio(This,cx,cy) (This)->lpVtbl->GetVideoAspectRatio(This,cx,cy) +#define IMFMediaEngineEx_Shutdown(This) (This)->lpVtbl->Shutdown(This) +#define IMFMediaEngineEx_TransferVideoFrame(This,surface,src,dst,color) (This)->lpVtbl->TransferVideoFrame(This,surface,src,dst,color) +#define IMFMediaEngineEx_OnVideoStreamTick(This,time) (This)->lpVtbl->OnVideoStreamTick(This,time) +/*** IMFMediaEngineEx methods ***/ +#define IMFMediaEngineEx_SetSourceFromByteStream(This,bytestream,url) (This)->lpVtbl->SetSourceFromByteStream(This,bytestream,url) +#define IMFMediaEngineEx_GetStatistics(This,stat_id,stat) (This)->lpVtbl->GetStatistics(This,stat_id,stat) +#define IMFMediaEngineEx_UpdateVideoStream(This,src,dst,border_color) (This)->lpVtbl->UpdateVideoStream(This,src,dst,border_color) +#define IMFMediaEngineEx_GetBalance(This) (This)->lpVtbl->GetBalance(This) +#define IMFMediaEngineEx_SetBalance(This,balance) (This)->lpVtbl->SetBalance(This,balance) +#define IMFMediaEngineEx_IsPlaybackRateSupported(This,rate) (This)->lpVtbl->IsPlaybackRateSupported(This,rate) +#define IMFMediaEngineEx_FrameStep(This,forward) (This)->lpVtbl->FrameStep(This,forward) +#define IMFMediaEngineEx_GetResourceCharacteristics(This,flags) (This)->lpVtbl->GetResourceCharacteristics(This,flags) +#define IMFMediaEngineEx_GetPresentationAttribute(This,attribute,value) (This)->lpVtbl->GetPresentationAttribute(This,attribute,value) +#define IMFMediaEngineEx_GetNumberOfStreams(This,stream_count) (This)->lpVtbl->GetNumberOfStreams(This,stream_count) +#define IMFMediaEngineEx_GetStreamAttribute(This,stream_index,attribute,value) (This)->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value) +#define IMFMediaEngineEx_GetStreamSelection(This,stream_index,enabled) (This)->lpVtbl->GetStreamSelection(This,stream_index,enabled) +#define IMFMediaEngineEx_SetStreamSelection(This,stream_index,enabled) (This)->lpVtbl->SetStreamSelection(This,stream_index,enabled) +#define IMFMediaEngineEx_ApplyStreamSelections(This) (This)->lpVtbl->ApplyStreamSelections(This) +#define IMFMediaEngineEx_IsProtected(This,protected) (This)->lpVtbl->IsProtected(This,protected) +#define IMFMediaEngineEx_InsertVideoEffect(This,effect,is_optional) (This)->lpVtbl->InsertVideoEffect(This,effect,is_optional) +#define IMFMediaEngineEx_InsertAudioEffect(This,effect,is_optional) (This)->lpVtbl->InsertAudioEffect(This,effect,is_optional) +#define IMFMediaEngineEx_RemoveAllEffects(This) (This)->lpVtbl->RemoveAllEffects(This) +#define IMFMediaEngineEx_SetTimelineMarkerTimer(This,timeout) (This)->lpVtbl->SetTimelineMarkerTimer(This,timeout) +#define IMFMediaEngineEx_GetTimelineMarkerTimer(This,timeout) (This)->lpVtbl->GetTimelineMarkerTimer(This,timeout) +#define IMFMediaEngineEx_CancelTimelineMarkerTimer(This) (This)->lpVtbl->CancelTimelineMarkerTimer(This) +#define IMFMediaEngineEx_IsStereo3D(This) (This)->lpVtbl->IsStereo3D(This) +#define IMFMediaEngineEx_GetStereo3DFramePackingMode(This,mode) (This)->lpVtbl->GetStereo3DFramePackingMode(This,mode) +#define IMFMediaEngineEx_SetStereo3DFramePackingMode(This,mode) (This)->lpVtbl->SetStereo3DFramePackingMode(This,mode) +#define IMFMediaEngineEx_GetStereo3DRenderMode(This,output_type) (This)->lpVtbl->GetStereo3DRenderMode(This,output_type) +#define IMFMediaEngineEx_SetStereo3DRenderMode(This,output_type) (This)->lpVtbl->SetStereo3DRenderMode(This,output_type) +#define IMFMediaEngineEx_EnableWindowlessSwapchainMode(This,enable) (This)->lpVtbl->EnableWindowlessSwapchainMode(This,enable) +#define IMFMediaEngineEx_GetVideoSwapchainHandle(This,swapchain) (This)->lpVtbl->GetVideoSwapchainHandle(This,swapchain) +#define IMFMediaEngineEx_EnableHorizontalMirrorMode(This,enable) (This)->lpVtbl->EnableHorizontalMirrorMode(This,enable) +#define IMFMediaEngineEx_GetAudioStreamCategory(This,category) (This)->lpVtbl->GetAudioStreamCategory(This,category) +#define IMFMediaEngineEx_SetAudioStreamCategory(This,category) (This)->lpVtbl->SetAudioStreamCategory(This,category) +#define IMFMediaEngineEx_GetAudioEndpointRole(This,role) (This)->lpVtbl->GetAudioEndpointRole(This,role) +#define IMFMediaEngineEx_SetAudioEndpointRole(This,role) (This)->lpVtbl->SetAudioEndpointRole(This,role) +#define IMFMediaEngineEx_GetRealTimeMode(This,enabled) (This)->lpVtbl->GetRealTimeMode(This,enabled) +#define IMFMediaEngineEx_SetRealTimeMode(This,enable) (This)->lpVtbl->SetRealTimeMode(This,enable) +#define IMFMediaEngineEx_SetCurrentTimeEx(This,seektime,mode) (This)->lpVtbl->SetCurrentTimeEx(This,seektime,mode) +#define IMFMediaEngineEx_EnableTimeUpdateTimer(This,enable) (This)->lpVtbl->EnableTimeUpdateTimer(This,enable) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineEx_QueryInterface(IMFMediaEngineEx* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngineEx_AddRef(IMFMediaEngineEx* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngineEx_Release(IMFMediaEngineEx* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngine methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetError(IMFMediaEngineEx* This,IMFMediaError **error) { + return This->lpVtbl->GetError(This,error); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetErrorCode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_ERR error) { + return This->lpVtbl->SetErrorCode(This,error); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetSourceElements(IMFMediaEngineEx* This,IMFMediaEngineSrcElements *elements) { + return This->lpVtbl->SetSourceElements(This,elements); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetSource(IMFMediaEngineEx* This,BSTR url) { + return This->lpVtbl->SetSource(This,url); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetCurrentSource(IMFMediaEngineEx* This,BSTR *url) { + return This->lpVtbl->GetCurrentSource(This,url); +} +static __WIDL_INLINE USHORT IMFMediaEngineEx_GetNetworkState(IMFMediaEngineEx* This) { + return This->lpVtbl->GetNetworkState(This); +} +static __WIDL_INLINE MF_MEDIA_ENGINE_PRELOAD IMFMediaEngineEx_GetPreload(IMFMediaEngineEx* This) { + return This->lpVtbl->GetPreload(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetPreload(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_PRELOAD preload) { + return This->lpVtbl->SetPreload(This,preload); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetBuffered(IMFMediaEngineEx* This,IMFMediaTimeRange **buffered) { + return This->lpVtbl->GetBuffered(This,buffered); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_Load(IMFMediaEngineEx* This) { + return This->lpVtbl->Load(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_CanPlayType(IMFMediaEngineEx* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) { + return This->lpVtbl->CanPlayType(This,type,answer); +} +static __WIDL_INLINE USHORT IMFMediaEngineEx_GetReadyState(IMFMediaEngineEx* This) { + return This->lpVtbl->GetReadyState(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_IsSeeking(IMFMediaEngineEx* This) { + return This->lpVtbl->IsSeeking(This); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetCurrentTime(IMFMediaEngineEx* This) { + return This->lpVtbl->GetCurrentTime(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetCurrentTime(IMFMediaEngineEx* This,double time) { + return This->lpVtbl->SetCurrentTime(This,time); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetStartTime(IMFMediaEngineEx* This) { + return This->lpVtbl->GetStartTime(This); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetDuration(IMFMediaEngineEx* This) { + return This->lpVtbl->GetDuration(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_IsPaused(IMFMediaEngineEx* This) { + return This->lpVtbl->IsPaused(This); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetDefaultPlaybackRate(IMFMediaEngineEx* This) { + return This->lpVtbl->GetDefaultPlaybackRate(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetDefaultPlaybackRate(IMFMediaEngineEx* This,double rate) { + return This->lpVtbl->SetDefaultPlaybackRate(This,rate); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetPlaybackRate(IMFMediaEngineEx* This) { + return This->lpVtbl->GetPlaybackRate(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetPlaybackRate(IMFMediaEngineEx* This,double rate) { + return This->lpVtbl->SetPlaybackRate(This,rate); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetPlayed(IMFMediaEngineEx* This,IMFMediaTimeRange **played) { + return This->lpVtbl->GetPlayed(This,played); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetSeekable(IMFMediaEngineEx* This,IMFMediaTimeRange **seekable) { + return This->lpVtbl->GetSeekable(This,seekable); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_IsEnded(IMFMediaEngineEx* This) { + return This->lpVtbl->IsEnded(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_GetAutoPlay(IMFMediaEngineEx* This) { + return This->lpVtbl->GetAutoPlay(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetAutoPlay(IMFMediaEngineEx* This,WINBOOL autoplay) { + return This->lpVtbl->SetAutoPlay(This,autoplay); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_GetLoop(IMFMediaEngineEx* This) { + return This->lpVtbl->GetLoop(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetLoop(IMFMediaEngineEx* This,WINBOOL loop) { + return This->lpVtbl->SetLoop(This,loop); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_Play(IMFMediaEngineEx* This) { + return This->lpVtbl->Play(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_Pause(IMFMediaEngineEx* This) { + return This->lpVtbl->Pause(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_GetMuted(IMFMediaEngineEx* This) { + return This->lpVtbl->GetMuted(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetMuted(IMFMediaEngineEx* This,WINBOOL muted) { + return This->lpVtbl->SetMuted(This,muted); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetVolume(IMFMediaEngineEx* This) { + return This->lpVtbl->GetVolume(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetVolume(IMFMediaEngineEx* This,double volume) { + return This->lpVtbl->SetVolume(This,volume); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_HasVideo(IMFMediaEngineEx* This) { + return This->lpVtbl->HasVideo(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_HasAudio(IMFMediaEngineEx* This) { + return This->lpVtbl->HasAudio(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetNativeVideoSize(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) { + return This->lpVtbl->GetNativeVideoSize(This,cx,cy); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetVideoAspectRatio(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) { + return This->lpVtbl->GetVideoAspectRatio(This,cx,cy); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_Shutdown(IMFMediaEngineEx* This) { + return This->lpVtbl->Shutdown(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_TransferVideoFrame(IMFMediaEngineEx* This,IUnknown *surface,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *color) { + return This->lpVtbl->TransferVideoFrame(This,surface,src,dst,color); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_OnVideoStreamTick(IMFMediaEngineEx* This,LONGLONG *time) { + return This->lpVtbl->OnVideoStreamTick(This,time); +} +/*** IMFMediaEngineEx methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetSourceFromByteStream(IMFMediaEngineEx* This,IMFByteStream *bytestream,BSTR url) { + return This->lpVtbl->SetSourceFromByteStream(This,bytestream,url); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetStatistics(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_STATISTIC stat_id,PROPVARIANT *stat) { + return This->lpVtbl->GetStatistics(This,stat_id,stat); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_UpdateVideoStream(IMFMediaEngineEx* This,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *border_color) { + return This->lpVtbl->UpdateVideoStream(This,src,dst,border_color); +} +static __WIDL_INLINE double IMFMediaEngineEx_GetBalance(IMFMediaEngineEx* This) { + return This->lpVtbl->GetBalance(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetBalance(IMFMediaEngineEx* This,double balance) { + return This->lpVtbl->SetBalance(This,balance); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_IsPlaybackRateSupported(IMFMediaEngineEx* This,double rate) { + return This->lpVtbl->IsPlaybackRateSupported(This,rate); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_FrameStep(IMFMediaEngineEx* This,WINBOOL forward) { + return This->lpVtbl->FrameStep(This,forward); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetResourceCharacteristics(IMFMediaEngineEx* This,DWORD *flags) { + return This->lpVtbl->GetResourceCharacteristics(This,flags); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetPresentationAttribute(IMFMediaEngineEx* This,REFGUID attribute,PROPVARIANT *value) { + return This->lpVtbl->GetPresentationAttribute(This,attribute,value); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetNumberOfStreams(IMFMediaEngineEx* This,DWORD *stream_count) { + return This->lpVtbl->GetNumberOfStreams(This,stream_count); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetStreamAttribute(IMFMediaEngineEx* This,DWORD stream_index,REFGUID attribute,PROPVARIANT *value) { + return This->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL *enabled) { + return This->lpVtbl->GetStreamSelection(This,stream_index,enabled); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL enabled) { + return This->lpVtbl->SetStreamSelection(This,stream_index,enabled); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_ApplyStreamSelections(IMFMediaEngineEx* This) { + return This->lpVtbl->ApplyStreamSelections(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_IsProtected(IMFMediaEngineEx* This,WINBOOL *protected) { + return This->lpVtbl->IsProtected(This,protected); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_InsertVideoEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) { + return This->lpVtbl->InsertVideoEffect(This,effect,is_optional); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_InsertAudioEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) { + return This->lpVtbl->InsertAudioEffect(This,effect,is_optional); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_RemoveAllEffects(IMFMediaEngineEx* This) { + return This->lpVtbl->RemoveAllEffects(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetTimelineMarkerTimer(IMFMediaEngineEx* This,double timeout) { + return This->lpVtbl->SetTimelineMarkerTimer(This,timeout); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetTimelineMarkerTimer(IMFMediaEngineEx* This,double *timeout) { + return This->lpVtbl->GetTimelineMarkerTimer(This,timeout); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_CancelTimelineMarkerTimer(IMFMediaEngineEx* This) { + return This->lpVtbl->CancelTimelineMarkerTimer(This); +} +static __WIDL_INLINE WINBOOL IMFMediaEngineEx_IsStereo3D(IMFMediaEngineEx* This) { + return This->lpVtbl->IsStereo3D(This); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) { + return This->lpVtbl->GetStereo3DFramePackingMode(This,mode); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) { + return This->lpVtbl->SetStereo3DFramePackingMode(This,mode); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType *output_type) { + return This->lpVtbl->GetStereo3DRenderMode(This,output_type); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType output_type) { + return This->lpVtbl->SetStereo3DRenderMode(This,output_type); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_EnableWindowlessSwapchainMode(IMFMediaEngineEx* This,WINBOOL enable) { + return This->lpVtbl->EnableWindowlessSwapchainMode(This,enable); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetVideoSwapchainHandle(IMFMediaEngineEx* This,HANDLE *swapchain) { + return This->lpVtbl->GetVideoSwapchainHandle(This,swapchain); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_EnableHorizontalMirrorMode(IMFMediaEngineEx* This,WINBOOL enable) { + return This->lpVtbl->EnableHorizontalMirrorMode(This,enable); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 *category) { + return This->lpVtbl->GetAudioStreamCategory(This,category); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 category) { + return This->lpVtbl->SetAudioStreamCategory(This,category); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 *role) { + return This->lpVtbl->GetAudioEndpointRole(This,role); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 role) { + return This->lpVtbl->SetAudioEndpointRole(This,role); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_GetRealTimeMode(IMFMediaEngineEx* This,WINBOOL *enabled) { + return This->lpVtbl->GetRealTimeMode(This,enabled); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetRealTimeMode(IMFMediaEngineEx* This,WINBOOL enable) { + return This->lpVtbl->SetRealTimeMode(This,enable); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_SetCurrentTimeEx(IMFMediaEngineEx* This,double seektime,MF_MEDIA_ENGINE_SEEK_MODE mode) { + return This->lpVtbl->SetCurrentTimeEx(This,seektime,mode); +} +static __WIDL_INLINE HRESULT IMFMediaEngineEx_EnableTimeUpdateTimer(IMFMediaEngineEx* This,WINBOOL enable) { + return This->lpVtbl->EnableTimeUpdateTimer(This,enable); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngineEx_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaEngineClassFactory interface + */ +#ifndef __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ +#define __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("4d645ace-26aa-4688-9be1-df3516990b93") +IMFMediaEngineClassFactory : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE CreateInstance( + DWORD flags, + IMFAttributes *attributes, + IMFMediaEngine **engine) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateTimeRange( + IMFMediaTimeRange **range) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateError( + IMFMediaError **error) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93) +#endif +#else +typedef struct IMFMediaEngineClassFactoryVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngineClassFactory *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngineClassFactory *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngineClassFactory *This); + + /*** IMFMediaEngineClassFactory methods ***/ + HRESULT (STDMETHODCALLTYPE *CreateInstance)( + IMFMediaEngineClassFactory *This, + DWORD flags, + IMFAttributes *attributes, + IMFMediaEngine **engine); + + HRESULT (STDMETHODCALLTYPE *CreateTimeRange)( + IMFMediaEngineClassFactory *This, + IMFMediaTimeRange **range); + + HRESULT (STDMETHODCALLTYPE *CreateError)( + IMFMediaEngineClassFactory *This, + IMFMediaError **error); + + END_INTERFACE +} IMFMediaEngineClassFactoryVtbl; + +interface IMFMediaEngineClassFactory { + CONST_VTBL IMFMediaEngineClassFactoryVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngineClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngineClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngineClassFactory_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngineClassFactory methods ***/ +#define IMFMediaEngineClassFactory_CreateInstance(This,flags,attributes,engine) (This)->lpVtbl->CreateInstance(This,flags,attributes,engine) +#define IMFMediaEngineClassFactory_CreateTimeRange(This,range) (This)->lpVtbl->CreateTimeRange(This,range) +#define IMFMediaEngineClassFactory_CreateError(This,error) (This)->lpVtbl->CreateError(This,error) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineClassFactory_QueryInterface(IMFMediaEngineClassFactory* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngineClassFactory_AddRef(IMFMediaEngineClassFactory* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngineClassFactory_Release(IMFMediaEngineClassFactory* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngineClassFactory methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineClassFactory_CreateInstance(IMFMediaEngineClassFactory* This,DWORD flags,IMFAttributes *attributes,IMFMediaEngine **engine) { + return This->lpVtbl->CreateInstance(This,flags,attributes,engine); +} +static __WIDL_INLINE HRESULT IMFMediaEngineClassFactory_CreateTimeRange(IMFMediaEngineClassFactory* This,IMFMediaTimeRange **range) { + return This->lpVtbl->CreateTimeRange(This,range); +} +static __WIDL_INLINE HRESULT IMFMediaEngineClassFactory_CreateError(IMFMediaEngineClassFactory* This,IMFMediaError **error) { + return This->lpVtbl->CreateError(This,error); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaEngineNotify interface + */ +#ifndef __IMFMediaEngineNotify_INTERFACE_DEFINED__ +#define __IMFMediaEngineNotify_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("fee7c112-e776-42b5-9bbf-0048524e2bd5") +IMFMediaEngineNotify : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE EventNotify( + DWORD event, + DWORD_PTR param1, + DWORD param2) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5) +#endif +#else +typedef struct IMFMediaEngineNotifyVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngineNotify *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngineNotify *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngineNotify *This); + + /*** IMFMediaEngineNotify methods ***/ + HRESULT (STDMETHODCALLTYPE *EventNotify)( + IMFMediaEngineNotify *This, + DWORD event, + DWORD_PTR param1, + DWORD param2); + + END_INTERFACE +} IMFMediaEngineNotifyVtbl; + +interface IMFMediaEngineNotify { + CONST_VTBL IMFMediaEngineNotifyVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngineNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngineNotify_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngineNotify_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngineNotify methods ***/ +#define IMFMediaEngineNotify_EventNotify(This,event,param1,param2) (This)->lpVtbl->EventNotify(This,event,param1,param2) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineNotify_QueryInterface(IMFMediaEngineNotify* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngineNotify_AddRef(IMFMediaEngineNotify* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngineNotify_Release(IMFMediaEngineNotify* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngineNotify methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineNotify_EventNotify(IMFMediaEngineNotify* This,DWORD event,DWORD_PTR param1,DWORD param2) { + return This->lpVtbl->EventNotify(This,event,param1,param2); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngineNotify_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaEngineAudioEndpointId interface + */ +#ifndef __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ +#define __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("7a3bac98-0e76-49fb-8c20-8a86fd98eaf2") +IMFMediaEngineAudioEndpointId : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetAudioEndpointId( + LPCWSTR id) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAudioEndpointId( + LPWSTR *id) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2) +#endif +#else +typedef struct IMFMediaEngineAudioEndpointIdVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngineAudioEndpointId *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngineAudioEndpointId *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngineAudioEndpointId *This); + + /*** IMFMediaEngineAudioEndpointId methods ***/ + HRESULT (STDMETHODCALLTYPE *SetAudioEndpointId)( + IMFMediaEngineAudioEndpointId *This, + LPCWSTR id); + + HRESULT (STDMETHODCALLTYPE *GetAudioEndpointId)( + IMFMediaEngineAudioEndpointId *This, + LPWSTR *id); + + END_INTERFACE +} IMFMediaEngineAudioEndpointIdVtbl; + +interface IMFMediaEngineAudioEndpointId { + CONST_VTBL IMFMediaEngineAudioEndpointIdVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngineAudioEndpointId_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngineAudioEndpointId_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngineAudioEndpointId_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngineAudioEndpointId methods ***/ +#define IMFMediaEngineAudioEndpointId_SetAudioEndpointId(This,id) (This)->lpVtbl->SetAudioEndpointId(This,id) +#define IMFMediaEngineAudioEndpointId_GetAudioEndpointId(This,id) (This)->lpVtbl->GetAudioEndpointId(This,id) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineAudioEndpointId_QueryInterface(IMFMediaEngineAudioEndpointId* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngineAudioEndpointId_AddRef(IMFMediaEngineAudioEndpointId* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngineAudioEndpointId_Release(IMFMediaEngineAudioEndpointId* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngineAudioEndpointId methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineAudioEndpointId_SetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPCWSTR id) { + return This->lpVtbl->SetAudioEndpointId(This,id); +} +static __WIDL_INLINE HRESULT IMFMediaEngineAudioEndpointId_GetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPWSTR *id) { + return This->lpVtbl->GetAudioEndpointId(This,id); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMFMediaEngineExtension interface + */ +#ifndef __IMFMediaEngineExtension_INTERFACE_DEFINED__ +#define __IMFMediaEngineExtension_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("2f69d622-20b5-41e9-afdf-89ced1dda04e") +IMFMediaEngineExtension : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE CanPlayType( + WINBOOL audio_only, + BSTR mime_type, + MF_MEDIA_ENGINE_CANPLAY *answer) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginCreateObject( + BSTR url, + IMFByteStream *bytestream, + MF_OBJECT_TYPE type, + IUnknown **cancel_cookie, + IMFAsyncCallback *callback, + IUnknown *state) = 0; + + virtual HRESULT STDMETHODCALLTYPE CancelObjectCreation( + IUnknown *cancel_cookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndCreateObject( + IMFAsyncResult *result, + IUnknown **object) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e) +#endif +#else +typedef struct IMFMediaEngineExtensionVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMFMediaEngineExtension *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMFMediaEngineExtension *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMFMediaEngineExtension *This); + + /*** IMFMediaEngineExtension methods ***/ + HRESULT (STDMETHODCALLTYPE *CanPlayType)( + IMFMediaEngineExtension *This, + WINBOOL audio_only, + BSTR mime_type, + MF_MEDIA_ENGINE_CANPLAY *answer); + + HRESULT (STDMETHODCALLTYPE *BeginCreateObject)( + IMFMediaEngineExtension *This, + BSTR url, + IMFByteStream *bytestream, + MF_OBJECT_TYPE type, + IUnknown **cancel_cookie, + IMFAsyncCallback *callback, + IUnknown *state); + + HRESULT (STDMETHODCALLTYPE *CancelObjectCreation)( + IMFMediaEngineExtension *This, + IUnknown *cancel_cookie); + + HRESULT (STDMETHODCALLTYPE *EndCreateObject)( + IMFMediaEngineExtension *This, + IMFAsyncResult *result, + IUnknown **object); + + END_INTERFACE +} IMFMediaEngineExtensionVtbl; + +interface IMFMediaEngineExtension { + CONST_VTBL IMFMediaEngineExtensionVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IMFMediaEngineExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMFMediaEngineExtension_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMFMediaEngineExtension_Release(This) (This)->lpVtbl->Release(This) +/*** IMFMediaEngineExtension methods ***/ +#define IMFMediaEngineExtension_CanPlayType(This,audio_only,mime_type,answer) (This)->lpVtbl->CanPlayType(This,audio_only,mime_type,answer) +#define IMFMediaEngineExtension_BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state) (This)->lpVtbl->BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state) +#define IMFMediaEngineExtension_CancelObjectCreation(This,cancel_cookie) (This)->lpVtbl->CancelObjectCreation(This,cancel_cookie) +#define IMFMediaEngineExtension_EndCreateObject(This,result,object) (This)->lpVtbl->EndCreateObject(This,result,object) +#else +/*** IUnknown methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineExtension_QueryInterface(IMFMediaEngineExtension* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static __WIDL_INLINE ULONG IMFMediaEngineExtension_AddRef(IMFMediaEngineExtension* This) { + return This->lpVtbl->AddRef(This); +} +static __WIDL_INLINE ULONG IMFMediaEngineExtension_Release(IMFMediaEngineExtension* This) { + return This->lpVtbl->Release(This); +} +/*** IMFMediaEngineExtension methods ***/ +static __WIDL_INLINE HRESULT IMFMediaEngineExtension_CanPlayType(IMFMediaEngineExtension* This,WINBOOL audio_only,BSTR mime_type,MF_MEDIA_ENGINE_CANPLAY *answer) { + return This->lpVtbl->CanPlayType(This,audio_only,mime_type,answer); +} +static __WIDL_INLINE HRESULT IMFMediaEngineExtension_BeginCreateObject(IMFMediaEngineExtension* This,BSTR url,IMFByteStream *bytestream,MF_OBJECT_TYPE type,IUnknown **cancel_cookie,IMFAsyncCallback *callback,IUnknown *state) { + return This->lpVtbl->BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state); +} +static __WIDL_INLINE HRESULT IMFMediaEngineExtension_CancelObjectCreation(IMFMediaEngineExtension* This,IUnknown *cancel_cookie) { + return This->lpVtbl->CancelObjectCreation(This,cancel_cookie); +} +static __WIDL_INLINE HRESULT IMFMediaEngineExtension_EndCreateObject(IMFMediaEngineExtension* This,IMFAsyncResult *result,IUnknown **object) { + return This->lpVtbl->EndCreateObject(This,result,object); +} +#endif +#endif + +#endif + + +#endif /* __IMFMediaEngineExtension_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __mfmediaengine_h__ */
diff --git a/mingw-w64-headers/include/mfmediaengine.idl b/mingw-w64-headers/include/mfmediaengine.idl new file mode 100644 index 0000000..6547ef8 --- /dev/null +++ b/mingw-w64-headers/include/mfmediaengine.idl
@@ -0,0 +1,382 @@ +/* + * Copyright 2019 Jactry Zeng for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "mfidl.idl"; + +cpp_quote("EXTERN_GUID(CLSID_MFMediaEngineClassFactory, 0xb44392da, 0x499b, 0x446b, 0xa4, 0xcb, 0x00, 0x5f, 0xea, 0xd0, 0xe6, 0xd5);") + +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_CATEGORY, 0xc8d4c51d, 0x350e, 0x41f2, 0xba, 0x46, 0xfa, 0xeb, 0xbb, 0x08, 0x57, 0xf6);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE, 0xd2cb93d1, 0x116a, 0x44f2, 0x93, 0x85, 0xf7, 0xd0, 0xfd, 0xa2, 0xfb, 0x46);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE, 0x4e0212e2, 0xe18f, 0x41e1, 0x95, 0xe5, 0xc0, 0xe7, 0xe9, 0x23, 0x5b, 0xc3);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE9, 0x052c2d39, 0x40c0, 0x4188, 0xab, 0x86, 0xf8, 0x28, 0x27, 0x3b, 0x75, 0x22);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE10, 0x11a47afd, 0x6589, 0x4124, 0xb3, 0x12, 0x61, 0x58, 0xec, 0x51, 0x7f, 0xc3);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE11, 0x1cf1315f, 0xce3f, 0x4035, 0x93, 0x91, 0x16, 0x14, 0x2f, 0x77, 0x51, 0x89);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE_EDGE, 0xa6f3e465, 0x3aca, 0x442c, 0xa3, 0xf0, 0xad, 0x6d, 0xda, 0xd8, 0x39, 0xae);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_CALLBACK, 0xc60381b8, 0x83a4, 0x41f8, 0xa3, 0xd0, 0xde, 0x05, 0x07, 0x68, 0x49, 0xa9);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE, 0x3ef26ad4, 0xdc54, 0x45de, 0xb9, 0xaf, 0x76, 0xc8, 0xc6, 0x6b, 0xfa, 0x8e);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WIN10, 0x5b25e089, 0x6ca7, 0x4139, 0xa2, 0xcb, 0xfc, 0xaa, 0xb3, 0x95, 0x52, 0xa3);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WWA_EDGE, 0x15b29098, 0x9f01, 0x4e4d, 0xb6, 0x5a, 0xc0, 0x6c, 0x6c, 0x89, 0xda, 0x2a);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS, 0xe0350223, 0x5aaf, 0x4d76, 0xa7, 0xc3, 0x06, 0xde, 0x70, 0x89, 0x4d, 0xb4);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER, 0xfdd6dfaa, 0xbd85, 0x4af3, 0x9e, 0x0f, 0xa0, 0x1d, 0x53, 0x9d, 0x87, 0x6a);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_CONTINUE_ON_CODEC_ERROR, 0xdbcdb7f9, 0x48e4, 0x4295, 0xb7, 0x0d, 0xd5, 0x18, 0x23, 0x4e, 0xeb, 0x38);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_COREWINDOW, 0xfccae4dc, 0x0b7f, 0x41c2, 0x9f, 0x96, 0x46, 0x59, 0x94, 0x8a, 0xcd, 0xdc);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_DXGI_MANAGER, 0x065702da, 0x1094, 0x486d, 0x86, 0x17, 0xee, 0x7c, 0xc4, 0xee, 0x46, 0x48);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_EME_CALLBACK, 0x494553a7, 0xa481, 0x4cb7, 0xbe, 0xc5, 0x38, 0x09, 0x03, 0x51, 0x37, 0x31);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_EXTENSION, 0x3109fd46, 0x060d, 0x4b62, 0x8d, 0xcf, 0xfa, 0xff, 0x81, 0x13, 0x18, 0xd2);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_MEDIA_PLAYER_MODE, 0x3ddd8d45, 0x5aa1, 0x4112, 0x82, 0xe5, 0x36, 0xf6, 0xa2, 0x19, 0x7e, 0x6e);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_NEEDKEY_CALLBACK, 0x7ea80843, 0xb6e4, 0x432c, 0x8e, 0xa4, 0x78, 0x48, 0xff, 0xe4, 0x22, 0x0e);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_OPM_HWND, 0xa0be8ee7, 0x0572, 0x4f2c, 0xa8, 0x01, 0x2a, 0x15, 0x1b, 0xd3, 0xe7, 0x26);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_HWND, 0xd988879b, 0x67c9, 0x4d92, 0xba, 0xa7, 0x6e, 0xad, 0xd4, 0x46, 0x03, 0x9d);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, 0x6debd26f, 0x6ab9, 0x4d7e, 0xb0, 0xee, 0xc6, 0x1a, 0x73, 0xff, 0xad, 0x15);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_SOURCE_RESOLVER_CONFIG_STORE, 0x0ac0c497, 0xb3c4, 0x48c9, 0x9c, 0xde, 0xbb, 0x8c, 0xa2, 0x44, 0x2c, 0xa3);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_STREAM_CONTAINS_ALPHA_CHANNEL, 0x5cbfaf44, 0xd2b2, 0x4cfb, 0x80, 0xa7, 0xd4, 0x29, 0xc7, 0x4c, 0x78, 0x9d);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_SYNCHRONOUS_CLOSE, 0xc3c2e12f, 0x7e0e, 0x4e43, 0xb9, 0x1c, 0xdc, 0x99, 0x2c, 0xcd, 0xfa, 0x5e);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_TELEMETRY_APPLICATION_ID, 0x1e7b273b, 0xa7e4, 0x402a, 0x8f, 0x51, 0xc4, 0x8e, 0x88, 0xa2, 0xca, 0xbc);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_TRACK_ID, 0x65bea312, 0x4043, 0x4815, 0x8e, 0xab, 0x44, 0xdc, 0xe2, 0xef, 0x8f, 0x2a);") +cpp_quote("EXTERN_GUID(MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT, 0x5066893c, 0x8cf9, 0x42bc, 0x8b, 0x8a, 0x47, 0x22, 0x12, 0xe5, 0x27, 0x26);") + +typedef enum MF_MEDIA_ENGINE_NETWORK +{ + MF_MEDIA_ENGINE_NETWORK_EMPTY, + MF_MEDIA_ENGINE_NETWORK_IDLE, + MF_MEDIA_ENGINE_NETWORK_LOADING, + MF_MEDIA_ENGINE_NETWORK_NO_SOURCE +} MF_MEDIA_ENGINE_NETWORK; + +typedef enum MF_MEDIA_ENGINE_ERR +{ + MF_MEDIA_ENGINE_ERR_NOERROR, + MF_MEDIA_ENGINE_ERR_ABORTED, + MF_MEDIA_ENGINE_ERR_NETWORK, + MF_MEDIA_ENGINE_ERR_DECODE, + MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED, + MF_MEDIA_ENGINE_ERR_ENCRYPTED +} MF_MEDIA_ENGINE_ERR; + +typedef enum MF_MEDIA_ENGINE_PRELOAD +{ + MF_MEDIA_ENGINE_PRELOAD_MISSING, + MF_MEDIA_ENGINE_PRELOAD_EMPTY, + MF_MEDIA_ENGINE_PRELOAD_NONE, + MF_MEDIA_ENGINE_PRELOAD_METADATA, + MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC +} MF_MEDIA_ENGINE_PRELOAD; + +typedef enum MF_MEDIA_ENGINE_CANPLAY +{ + MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED, + MF_MEDIA_ENGINE_CANPLAY_MAYBE, + MF_MEDIA_ENGINE_CANPLAY_PROBABLY, +} MF_MEDIA_ENGINE_CANPLAY; + +cpp_quote("#ifndef _MFVideoNormalizedRect_") +cpp_quote("#define _MFVideoNormalizedRect_") +typedef struct MFVideoNormalizedRect +{ + float left; + float top; + float right; + float bottom; +} MFVideoNormalizedRect; +cpp_quote("#endif") + +typedef enum MF_MEDIA_ENGINE_CREATEFLAGS +{ + MF_MEDIA_ENGINE_AUDIOONLY = 0x1, + MF_MEDIA_ENGINE_WAITFORSTABLE_STATE = 0x2, + MF_MEDIA_ENGINE_FORCEMUTE = 0x4, + MF_MEDIA_ENGINE_REAL_TIME_MODE = 0x8, + MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS = 0x10, + MF_MEDIA_ENGINE_CREATEFLAGS_MASK = 0x1f +} MF_MEDIA_ENGINE_CREATEFLAGS; + +typedef enum MF_MEDIA_ENGINE_EVENT +{ + MF_MEDIA_ENGINE_EVENT_LOADSTART = 1, + MF_MEDIA_ENGINE_EVENT_PROGRESS = 2, + MF_MEDIA_ENGINE_EVENT_SUSPEND = 3, + MF_MEDIA_ENGINE_EVENT_ABORT = 4, + MF_MEDIA_ENGINE_EVENT_ERROR = 5, + MF_MEDIA_ENGINE_EVENT_EMPTIED = 6, + MF_MEDIA_ENGINE_EVENT_STALLED = 7, + MF_MEDIA_ENGINE_EVENT_PLAY = 8, + MF_MEDIA_ENGINE_EVENT_PAUSE = 9, + MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA = 10, + MF_MEDIA_ENGINE_EVENT_LOADEDDATA = 11, + MF_MEDIA_ENGINE_EVENT_WAITING = 12, + MF_MEDIA_ENGINE_EVENT_PLAYING = 13, + MF_MEDIA_ENGINE_EVENT_CANPLAY = 14, + MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH = 15, + MF_MEDIA_ENGINE_EVENT_SEEKING = 16, + MF_MEDIA_ENGINE_EVENT_SEEKED = 17, + MF_MEDIA_ENGINE_EVENT_TIMEUPDATE = 18, + MF_MEDIA_ENGINE_EVENT_ENDED = 19, + MF_MEDIA_ENGINE_EVENT_RATECHANGE = 20, + MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE = 21, + MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE = 22, + MF_MEDIA_ENGINE_EVENT_FORMATCHANGE = 1000, + MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS = 1001, + MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER = 1002, + MF_MEDIA_ENGINE_EVENT_BALANCECHANGE = 1003, + MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE = 1004, + MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED = 1005, + MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED = 1006, + MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED = 1007, + MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE = 1008, + MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY = 1009, + MF_MEDIA_ENGINE_EVENT_TRACKSCHANGE = 1010, + MF_MEDIA_ENGINE_EVENT_OPMINFO = 1011, + MF_MEDIA_ENGINE_EVENT_RESOURCELOST = 1012, + MF_MEDIA_ENGINE_EVENT_DELAYLOADEVENT_CHANGED = 1013, + MF_MEDIA_ENGINE_EVENT_STREAMRENDERINGERROR = 1014, + MF_MEDIA_ENGINE_EVENT_SUPPORTEDRATES_CHANGED = 1015, + MF_MEDIA_ENGINE_EVENT_AUDIOENDPOINTCHANGE = 1016, +} MF_MEDIA_ENGINE_EVENT; + +typedef enum MF_MEDIA_ENGINE_READY +{ + MF_MEDIA_ENGINE_READY_HAVE_NOTHING, + MF_MEDIA_ENGINE_READY_HAVE_METADATA, + MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA, + MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA, + MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA, +} MF_MEDIA_ENGINE_READY; + +[ + object, + uuid(fc0e10d2-ab2a-4501-a951-06bb1075184c), + local, + pointer_default(unique) +] +interface IMFMediaError : IUnknown +{ + USHORT GetErrorCode(); + HRESULT GetExtendedErrorCode(); + HRESULT SetErrorCode([in] MF_MEDIA_ENGINE_ERR error); + HRESULT SetExtendedErrorCode([in] HRESULT error); +} + +[ + object, + uuid(7a5e5354-b114-4c72-b991-3131d75032ea), + local, + pointer_default(unique) +] +interface IMFMediaEngineSrcElements : IUnknown +{ + DWORD GetLength(); + HRESULT GetURL([in] DWORD index, [out] BSTR *url); + HRESULT GetType([in] DWORD index, [out] BSTR *type); + HRESULT GetMedia([in] DWORD index, [out] BSTR *media); + HRESULT AddElement([in] BSTR url, [in] BSTR type, [in] BSTR media); + HRESULT RemoveAllElements(); +} + +[ + object, + uuid(db71a2fc-078a-414e-9df9-8c2531b0aa6c), + local, + pointer_default(unique) +] +interface IMFMediaTimeRange : IUnknown +{ + DWORD GetLength(); + HRESULT GetStart([in] DWORD index, [out] double *start); + HRESULT GetEnd([in] DWORD index, [out] double *end); + BOOL ContainsTime([in] double time); + HRESULT AddRange([in] double start, [in] double end); + HRESULT Clear(); +} + +[ + object, + uuid(98a1b0bb-03eb-4935-ae7c-93c1fa0e1c93), + local, + pointer_default(unique) +] +interface IMFMediaEngine : IUnknown +{ + HRESULT GetError([out] IMFMediaError **error); + HRESULT SetErrorCode([in] MF_MEDIA_ENGINE_ERR error); + HRESULT SetSourceElements([in] IMFMediaEngineSrcElements *elements); + HRESULT SetSource([in] BSTR url); + HRESULT GetCurrentSource([out] BSTR *url); + USHORT GetNetworkState(); + MF_MEDIA_ENGINE_PRELOAD GetPreload(); + HRESULT SetPreload([in] MF_MEDIA_ENGINE_PRELOAD preload); + HRESULT GetBuffered([out] IMFMediaTimeRange **buffered); + HRESULT Load(); + HRESULT CanPlayType([in] BSTR type, [out] MF_MEDIA_ENGINE_CANPLAY *answer); + USHORT GetReadyState(); + BOOL IsSeeking(); + cpp_quote("#undef GetCurrentTime") + double GetCurrentTime(); + HRESULT SetCurrentTime([in] double time); + double GetStartTime(); + double GetDuration(); + BOOL IsPaused(); + double GetDefaultPlaybackRate(); + HRESULT SetDefaultPlaybackRate([in] double rate); + double GetPlaybackRate(); + HRESULT SetPlaybackRate([in] double rate); + HRESULT GetPlayed([out] IMFMediaTimeRange **played); + HRESULT GetSeekable([out] IMFMediaTimeRange **seekable); + BOOL IsEnded(); + BOOL GetAutoPlay(); + HRESULT SetAutoPlay([in] BOOL autoplay); + BOOL GetLoop(); + HRESULT SetLoop([in] BOOL loop); + HRESULT Play(); + HRESULT Pause(); + BOOL GetMuted(); + HRESULT SetMuted([in] BOOL muted); + double GetVolume(); + HRESULT SetVolume([in] double volume); + BOOL HasVideo(); + BOOL HasAudio(); + HRESULT GetNativeVideoSize([out] DWORD *cx, [out] DWORD *cy); + HRESULT GetVideoAspectRatio([out] DWORD *cx, [out] DWORD *cy); + HRESULT Shutdown(); + HRESULT TransferVideoFrame([in] IUnknown *surface, [in] const MFVideoNormalizedRect *src, + [in] const RECT *dst, [in] const MFARGB *color); + HRESULT OnVideoStreamTick([out] LONGLONG *time); +} + +typedef enum MF_MEDIA_ENGINE_STATISTIC +{ + MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED, + MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED, + MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED, + MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS, + MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND, + MF_MEDIA_ENGINE_STATISTIC_PLAYBACK_JITTER, + MF_MEDIA_ENGINE_STATISTIC_FRAMES_CORRUPTED, + MF_MEDIA_ENGINE_STATISTIC_TOTAL_FRAME_DELAY, +} MF_MEDIA_ENGINE_STATISTIC; + +typedef enum MF_MEDIA_ENGINE_S3D_PACKING_MODE +{ + MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE, + MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE, + MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM +} MF_MEDIA_ENGINE_S3D_PACKING_MODE; + +typedef enum MF_MEDIA_ENGINE_SEEK_MODE +{ + MF_MEDIA_ENGINE_SEEK_MODE_NORMAL, + MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE, +} MF_MEDIA_ENGINE_SEEK_MODE; + +[ + object, + uuid(83015ead-b1e6-40d0-a98a-37145ffe1ad1), + local, + pointer_default(unique) +] +interface IMFMediaEngineEx : IMFMediaEngine +{ + HRESULT SetSourceFromByteStream([in] IMFByteStream *bytestream, [in] BSTR url); + HRESULT GetStatistics([in] MF_MEDIA_ENGINE_STATISTIC stat_id, [out] PROPVARIANT *stat); + HRESULT UpdateVideoStream([in] const MFVideoNormalizedRect *src, + [in] const RECT *dst, [in] const MFARGB *border_color); + double GetBalance(); + HRESULT SetBalance([in] double balance); + BOOL IsPlaybackRateSupported([in] double rate); + HRESULT FrameStep([in] BOOL forward); + HRESULT GetResourceCharacteristics([out] DWORD *flags); + HRESULT GetPresentationAttribute([in] REFGUID attribute, [out] PROPVARIANT *value); + HRESULT GetNumberOfStreams([out] DWORD *stream_count); + HRESULT GetStreamAttribute([in] DWORD stream_index, [in] REFGUID attribute, [out] PROPVARIANT *value); + HRESULT GetStreamSelection([in] DWORD stream_index, [out] BOOL *enabled); + HRESULT SetStreamSelection([in] DWORD stream_index, [in] BOOL enabled); + HRESULT ApplyStreamSelections(); + HRESULT IsProtected([out] BOOL *protected); + HRESULT InsertVideoEffect([in] IUnknown *effect, [in] BOOL is_optional); + HRESULT InsertAudioEffect([in] IUnknown *effect, [in] BOOL is_optional); + HRESULT RemoveAllEffects(); + HRESULT SetTimelineMarkerTimer([in] double timeout); + HRESULT GetTimelineMarkerTimer([out] double *timeout); + HRESULT CancelTimelineMarkerTimer(); + BOOL IsStereo3D(); + HRESULT GetStereo3DFramePackingMode([out] MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode); + HRESULT SetStereo3DFramePackingMode([in] MF_MEDIA_ENGINE_S3D_PACKING_MODE mode); + HRESULT GetStereo3DRenderMode([out] MF3DVideoOutputType *output_type); + HRESULT SetStereo3DRenderMode([in] MF3DVideoOutputType output_type); + HRESULT EnableWindowlessSwapchainMode([in] BOOL enable); + HRESULT GetVideoSwapchainHandle([out] HANDLE *swapchain); + HRESULT EnableHorizontalMirrorMode([in] BOOL enable); + HRESULT GetAudioStreamCategory([out] UINT32 *category); + HRESULT SetAudioStreamCategory([in] UINT32 category); + HRESULT GetAudioEndpointRole([out] UINT32 *role); + HRESULT SetAudioEndpointRole([in] UINT32 role); + HRESULT GetRealTimeMode([out] BOOL *enabled); + HRESULT SetRealTimeMode([in] BOOL enable); + HRESULT SetCurrentTimeEx([in] double seektime, [in] MF_MEDIA_ENGINE_SEEK_MODE mode); + HRESULT EnableTimeUpdateTimer([in] BOOL enable); +} + +[ + object, + uuid(4d645ace-26aa-4688-9be1-df3516990b93), + local, + pointer_default(unique) +] +interface IMFMediaEngineClassFactory : IUnknown +{ + HRESULT CreateInstance([in] DWORD flags, [in] IMFAttributes *attributes, [out] IMFMediaEngine **engine); + HRESULT CreateTimeRange([out] IMFMediaTimeRange **range); + HRESULT CreateError([out] IMFMediaError **error); +} + +[ + object, + uuid(fee7c112-e776-42b5-9bbf-0048524e2bd5), + local, + pointer_default(unique) +] +interface IMFMediaEngineNotify : IUnknown +{ + HRESULT EventNotify([in] DWORD event, [in] DWORD_PTR param1, [in] DWORD param2); +} + +[ + object, + uuid(7a3bac98-0e76-49fb-8c20-8a86fd98eaf2), + local, + pointer_default(unique) +] +interface IMFMediaEngineAudioEndpointId : IUnknown +{ + HRESULT SetAudioEndpointId([in] LPCWSTR id); + HRESULT GetAudioEndpointId([out] LPWSTR *id); +} + +[ + object, + uuid(2f69d622-20b5-41e9-afdf-89ced1dda04e), + local, + pointer_default(unique) +] +interface IMFMediaEngineExtension : IUnknown +{ + HRESULT CanPlayType([in] BOOL audio_only, [in] BSTR mime_type, [out] MF_MEDIA_ENGINE_CANPLAY *answer); + HRESULT BeginCreateObject([in] BSTR url, [in] IMFByteStream *bytestream, [in] MF_OBJECT_TYPE type, + [out] IUnknown **cancel_cookie, [in] IMFAsyncCallback *callback, [in] IUnknown *state); + HRESULT CancelObjectCreation([in] IUnknown *cancel_cookie); + HRESULT EndCreateObject([in] IMFAsyncResult *result, [out] IUnknown **object); +}
diff --git a/mingw-w64-headers/wine-import.sh b/mingw-w64-headers/wine-import.sh index 71fef43..206a94d 100755 --- a/mingw-w64-headers/wine-import.sh +++ b/mingw-w64-headers/wine-import.sh
@@ -189,6 +189,7 @@ icftypes \ ivectorchangedeventargs \ mediaobj \ + mfmediaengine \ mfreadwrite \ mftransform \ mmdeviceapi \