mfmediaengine.h (92911B) - Raw
1 /*** Autogenerated by WIDL 10.4 from include/mfmediaengine.idl - Do not edit ***/ 2 3 #ifdef _WIN32 4 #ifndef __REQUIRED_RPCNDR_H_VERSION__ 5 #define __REQUIRED_RPCNDR_H_VERSION__ 475 6 #endif 7 #include <rpc.h> 8 #include <rpcndr.h> 9 #endif 10 11 #ifndef COM_NO_WINDOWS_H 12 #include <windows.h> 13 #include <ole2.h> 14 #endif 15 16 #ifndef __mfmediaengine_h__ 17 #define __mfmediaengine_h__ 18 19 /* Forward declarations */ 20 21 #ifndef __IMFMediaError_FWD_DEFINED__ 22 #define __IMFMediaError_FWD_DEFINED__ 23 typedef interface IMFMediaError IMFMediaError; 24 #ifdef __cplusplus 25 interface IMFMediaError; 26 #endif /* __cplusplus */ 27 #endif 28 29 #ifndef __IMFMediaEngineSrcElements_FWD_DEFINED__ 30 #define __IMFMediaEngineSrcElements_FWD_DEFINED__ 31 typedef interface IMFMediaEngineSrcElements IMFMediaEngineSrcElements; 32 #ifdef __cplusplus 33 interface IMFMediaEngineSrcElements; 34 #endif /* __cplusplus */ 35 #endif 36 37 #ifndef __IMFMediaTimeRange_FWD_DEFINED__ 38 #define __IMFMediaTimeRange_FWD_DEFINED__ 39 typedef interface IMFMediaTimeRange IMFMediaTimeRange; 40 #ifdef __cplusplus 41 interface IMFMediaTimeRange; 42 #endif /* __cplusplus */ 43 #endif 44 45 #ifndef __IMFMediaEngine_FWD_DEFINED__ 46 #define __IMFMediaEngine_FWD_DEFINED__ 47 typedef interface IMFMediaEngine IMFMediaEngine; 48 #ifdef __cplusplus 49 interface IMFMediaEngine; 50 #endif /* __cplusplus */ 51 #endif 52 53 #ifndef __IMFMediaEngineEx_FWD_DEFINED__ 54 #define __IMFMediaEngineEx_FWD_DEFINED__ 55 typedef interface IMFMediaEngineEx IMFMediaEngineEx; 56 #ifdef __cplusplus 57 interface IMFMediaEngineEx; 58 #endif /* __cplusplus */ 59 #endif 60 61 #ifndef __IMFMediaEngineClassFactory_FWD_DEFINED__ 62 #define __IMFMediaEngineClassFactory_FWD_DEFINED__ 63 typedef interface IMFMediaEngineClassFactory IMFMediaEngineClassFactory; 64 #ifdef __cplusplus 65 interface IMFMediaEngineClassFactory; 66 #endif /* __cplusplus */ 67 #endif 68 69 #ifndef __IMFMediaEngineNotify_FWD_DEFINED__ 70 #define __IMFMediaEngineNotify_FWD_DEFINED__ 71 typedef interface IMFMediaEngineNotify IMFMediaEngineNotify; 72 #ifdef __cplusplus 73 interface IMFMediaEngineNotify; 74 #endif /* __cplusplus */ 75 #endif 76 77 #ifndef __IMFMediaEngineAudioEndpointId_FWD_DEFINED__ 78 #define __IMFMediaEngineAudioEndpointId_FWD_DEFINED__ 79 typedef interface IMFMediaEngineAudioEndpointId IMFMediaEngineAudioEndpointId; 80 #ifdef __cplusplus 81 interface IMFMediaEngineAudioEndpointId; 82 #endif /* __cplusplus */ 83 #endif 84 85 #ifndef __IMFMediaEngineExtension_FWD_DEFINED__ 86 #define __IMFMediaEngineExtension_FWD_DEFINED__ 87 typedef interface IMFMediaEngineExtension IMFMediaEngineExtension; 88 #ifdef __cplusplus 89 interface IMFMediaEngineExtension; 90 #endif /* __cplusplus */ 91 #endif 92 93 /* Headers for imported files */ 94 95 #include <mfidl.h> 96 97 #ifdef __cplusplus 98 extern "C" { 99 #endif 100 101 EXTERN_GUID(CLSID_MFMediaEngineClassFactory, 0xb44392da, 0x499b, 0x446b, 0xa4, 0xcb, 0x00, 0x5f, 0xea, 0xd0, 0xe6, 0xd5); 102 EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_CATEGORY, 0xc8d4c51d, 0x350e, 0x41f2, 0xba, 0x46, 0xfa, 0xeb, 0xbb, 0x08, 0x57, 0xf6); 103 EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE, 0xd2cb93d1, 0x116a, 0x44f2, 0x93, 0x85, 0xf7, 0xd0, 0xfd, 0xa2, 0xfb, 0x46); 104 EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE, 0x4e0212e2, 0xe18f, 0x41e1, 0x95, 0xe5, 0xc0, 0xe7, 0xe9, 0x23, 0x5b, 0xc3); 105 EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE9, 0x052c2d39, 0x40c0, 0x4188, 0xab, 0x86, 0xf8, 0x28, 0x27, 0x3b, 0x75, 0x22); 106 EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE10, 0x11a47afd, 0x6589, 0x4124, 0xb3, 0x12, 0x61, 0x58, 0xec, 0x51, 0x7f, 0xc3); 107 EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE11, 0x1cf1315f, 0xce3f, 0x4035, 0x93, 0x91, 0x16, 0x14, 0x2f, 0x77, 0x51, 0x89); 108 EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE_EDGE, 0xa6f3e465, 0x3aca, 0x442c, 0xa3, 0xf0, 0xad, 0x6d, 0xda, 0xd8, 0x39, 0xae); 109 EXTERN_GUID(MF_MEDIA_ENGINE_CALLBACK, 0xc60381b8, 0x83a4, 0x41f8, 0xa3, 0xd0, 0xde, 0x05, 0x07, 0x68, 0x49, 0xa9); 110 EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE, 0x3ef26ad4, 0xdc54, 0x45de, 0xb9, 0xaf, 0x76, 0xc8, 0xc6, 0x6b, 0xfa, 0x8e); 111 EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WIN10, 0x5b25e089, 0x6ca7, 0x4139, 0xa2, 0xcb, 0xfc, 0xaa, 0xb3, 0x95, 0x52, 0xa3); 112 EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WWA_EDGE, 0x15b29098, 0x9f01, 0x4e4d, 0xb6, 0x5a, 0xc0, 0x6c, 0x6c, 0x89, 0xda, 0x2a); 113 EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS, 0xe0350223, 0x5aaf, 0x4d76, 0xa7, 0xc3, 0x06, 0xde, 0x70, 0x89, 0x4d, 0xb4); 114 EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER, 0xfdd6dfaa, 0xbd85, 0x4af3, 0x9e, 0x0f, 0xa0, 0x1d, 0x53, 0x9d, 0x87, 0x6a); 115 EXTERN_GUID(MF_MEDIA_ENGINE_CONTINUE_ON_CODEC_ERROR, 0xdbcdb7f9, 0x48e4, 0x4295, 0xb7, 0x0d, 0xd5, 0x18, 0x23, 0x4e, 0xeb, 0x38); 116 EXTERN_GUID(MF_MEDIA_ENGINE_COREWINDOW, 0xfccae4dc, 0x0b7f, 0x41c2, 0x9f, 0x96, 0x46, 0x59, 0x94, 0x8a, 0xcd, 0xdc); 117 EXTERN_GUID(MF_MEDIA_ENGINE_DXGI_MANAGER, 0x065702da, 0x1094, 0x486d, 0x86, 0x17, 0xee, 0x7c, 0xc4, 0xee, 0x46, 0x48); 118 EXTERN_GUID(MF_MEDIA_ENGINE_EME_CALLBACK, 0x494553a7, 0xa481, 0x4cb7, 0xbe, 0xc5, 0x38, 0x09, 0x03, 0x51, 0x37, 0x31); 119 EXTERN_GUID(MF_MEDIA_ENGINE_EXTENSION, 0x3109fd46, 0x060d, 0x4b62, 0x8d, 0xcf, 0xfa, 0xff, 0x81, 0x13, 0x18, 0xd2); 120 EXTERN_GUID(MF_MEDIA_ENGINE_MEDIA_PLAYER_MODE, 0x3ddd8d45, 0x5aa1, 0x4112, 0x82, 0xe5, 0x36, 0xf6, 0xa2, 0x19, 0x7e, 0x6e); 121 EXTERN_GUID(MF_MEDIA_ENGINE_NEEDKEY_CALLBACK, 0x7ea80843, 0xb6e4, 0x432c, 0x8e, 0xa4, 0x78, 0x48, 0xff, 0xe4, 0x22, 0x0e); 122 EXTERN_GUID(MF_MEDIA_ENGINE_OPM_HWND, 0xa0be8ee7, 0x0572, 0x4f2c, 0xa8, 0x01, 0x2a, 0x15, 0x1b, 0xd3, 0xe7, 0x26); 123 EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_HWND, 0xd988879b, 0x67c9, 0x4d92, 0xba, 0xa7, 0x6e, 0xad, 0xd4, 0x46, 0x03, 0x9d); 124 EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, 0x6debd26f, 0x6ab9, 0x4d7e, 0xb0, 0xee, 0xc6, 0x1a, 0x73, 0xff, 0xad, 0x15); 125 EXTERN_GUID(MF_MEDIA_ENGINE_SOURCE_RESOLVER_CONFIG_STORE, 0x0ac0c497, 0xb3c4, 0x48c9, 0x9c, 0xde, 0xbb, 0x8c, 0xa2, 0x44, 0x2c, 0xa3); 126 EXTERN_GUID(MF_MEDIA_ENGINE_STREAM_CONTAINS_ALPHA_CHANNEL, 0x5cbfaf44, 0xd2b2, 0x4cfb, 0x80, 0xa7, 0xd4, 0x29, 0xc7, 0x4c, 0x78, 0x9d); 127 EXTERN_GUID(MF_MEDIA_ENGINE_SYNCHRONOUS_CLOSE, 0xc3c2e12f, 0x7e0e, 0x4e43, 0xb9, 0x1c, 0xdc, 0x99, 0x2c, 0xcd, 0xfa, 0x5e); 128 EXTERN_GUID(MF_MEDIA_ENGINE_TELEMETRY_APPLICATION_ID, 0x1e7b273b, 0xa7e4, 0x402a, 0x8f, 0x51, 0xc4, 0x8e, 0x88, 0xa2, 0xca, 0xbc); 129 EXTERN_GUID(MF_MEDIA_ENGINE_TRACK_ID, 0x65bea312, 0x4043, 0x4815, 0x8e, 0xab, 0x44, 0xdc, 0xe2, 0xef, 0x8f, 0x2a); 130 EXTERN_GUID(MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT, 0x5066893c, 0x8cf9, 0x42bc, 0x8b, 0x8a, 0x47, 0x22, 0x12, 0xe5, 0x27, 0x26); 131 typedef enum MF_MEDIA_ENGINE_NETWORK { 132 MF_MEDIA_ENGINE_NETWORK_EMPTY = 0, 133 MF_MEDIA_ENGINE_NETWORK_IDLE = 1, 134 MF_MEDIA_ENGINE_NETWORK_LOADING = 2, 135 MF_MEDIA_ENGINE_NETWORK_NO_SOURCE = 3 136 } MF_MEDIA_ENGINE_NETWORK; 137 typedef enum MF_MEDIA_ENGINE_ERR { 138 MF_MEDIA_ENGINE_ERR_NOERROR = 0, 139 MF_MEDIA_ENGINE_ERR_ABORTED = 1, 140 MF_MEDIA_ENGINE_ERR_NETWORK = 2, 141 MF_MEDIA_ENGINE_ERR_DECODE = 3, 142 MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED = 4, 143 MF_MEDIA_ENGINE_ERR_ENCRYPTED = 5 144 } MF_MEDIA_ENGINE_ERR; 145 typedef enum MF_MEDIA_ENGINE_PRELOAD { 146 MF_MEDIA_ENGINE_PRELOAD_MISSING = 0, 147 MF_MEDIA_ENGINE_PRELOAD_EMPTY = 1, 148 MF_MEDIA_ENGINE_PRELOAD_NONE = 2, 149 MF_MEDIA_ENGINE_PRELOAD_METADATA = 3, 150 MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC = 4 151 } MF_MEDIA_ENGINE_PRELOAD; 152 typedef enum MF_MEDIA_ENGINE_CANPLAY { 153 MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED = 0, 154 MF_MEDIA_ENGINE_CANPLAY_MAYBE = 1, 155 MF_MEDIA_ENGINE_CANPLAY_PROBABLY = 2 156 } MF_MEDIA_ENGINE_CANPLAY; 157 #ifndef _MFVideoNormalizedRect_ 158 #define _MFVideoNormalizedRect_ 159 typedef struct MFVideoNormalizedRect { 160 float left; 161 float top; 162 float right; 163 float bottom; 164 } MFVideoNormalizedRect; 165 #endif 166 typedef enum MF_MEDIA_ENGINE_CREATEFLAGS { 167 MF_MEDIA_ENGINE_AUDIOONLY = 0x1, 168 MF_MEDIA_ENGINE_WAITFORSTABLE_STATE = 0x2, 169 MF_MEDIA_ENGINE_FORCEMUTE = 0x4, 170 MF_MEDIA_ENGINE_REAL_TIME_MODE = 0x8, 171 MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS = 0x10, 172 MF_MEDIA_ENGINE_CREATEFLAGS_MASK = 0x1f 173 } MF_MEDIA_ENGINE_CREATEFLAGS; 174 typedef enum MF_MEDIA_ENGINE_EVENT { 175 MF_MEDIA_ENGINE_EVENT_LOADSTART = 1, 176 MF_MEDIA_ENGINE_EVENT_PROGRESS = 2, 177 MF_MEDIA_ENGINE_EVENT_SUSPEND = 3, 178 MF_MEDIA_ENGINE_EVENT_ABORT = 4, 179 MF_MEDIA_ENGINE_EVENT_ERROR = 5, 180 MF_MEDIA_ENGINE_EVENT_EMPTIED = 6, 181 MF_MEDIA_ENGINE_EVENT_STALLED = 7, 182 MF_MEDIA_ENGINE_EVENT_PLAY = 8, 183 MF_MEDIA_ENGINE_EVENT_PAUSE = 9, 184 MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA = 10, 185 MF_MEDIA_ENGINE_EVENT_LOADEDDATA = 11, 186 MF_MEDIA_ENGINE_EVENT_WAITING = 12, 187 MF_MEDIA_ENGINE_EVENT_PLAYING = 13, 188 MF_MEDIA_ENGINE_EVENT_CANPLAY = 14, 189 MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH = 15, 190 MF_MEDIA_ENGINE_EVENT_SEEKING = 16, 191 MF_MEDIA_ENGINE_EVENT_SEEKED = 17, 192 MF_MEDIA_ENGINE_EVENT_TIMEUPDATE = 18, 193 MF_MEDIA_ENGINE_EVENT_ENDED = 19, 194 MF_MEDIA_ENGINE_EVENT_RATECHANGE = 20, 195 MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE = 21, 196 MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE = 22, 197 MF_MEDIA_ENGINE_EVENT_FORMATCHANGE = 1000, 198 MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS = 1001, 199 MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER = 1002, 200 MF_MEDIA_ENGINE_EVENT_BALANCECHANGE = 1003, 201 MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE = 1004, 202 MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED = 1005, 203 MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED = 1006, 204 MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED = 1007, 205 MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE = 1008, 206 MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY = 1009, 207 MF_MEDIA_ENGINE_EVENT_TRACKSCHANGE = 1010, 208 MF_MEDIA_ENGINE_EVENT_OPMINFO = 1011, 209 MF_MEDIA_ENGINE_EVENT_RESOURCELOST = 1012, 210 MF_MEDIA_ENGINE_EVENT_DELAYLOADEVENT_CHANGED = 1013, 211 MF_MEDIA_ENGINE_EVENT_STREAMRENDERINGERROR = 1014, 212 MF_MEDIA_ENGINE_EVENT_SUPPORTEDRATES_CHANGED = 1015, 213 MF_MEDIA_ENGINE_EVENT_AUDIOENDPOINTCHANGE = 1016 214 } MF_MEDIA_ENGINE_EVENT; 215 typedef enum MF_MEDIA_ENGINE_READY { 216 MF_MEDIA_ENGINE_READY_HAVE_NOTHING = 0, 217 MF_MEDIA_ENGINE_READY_HAVE_METADATA = 1, 218 MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA = 2, 219 MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA = 3, 220 MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA = 4 221 } MF_MEDIA_ENGINE_READY; 222 /***************************************************************************** 223 * IMFMediaError interface 224 */ 225 #ifndef __IMFMediaError_INTERFACE_DEFINED__ 226 #define __IMFMediaError_INTERFACE_DEFINED__ 227 228 DEFINE_GUID(IID_IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c); 229 #if defined(__cplusplus) && !defined(CINTERFACE) 230 MIDL_INTERFACE("fc0e10d2-ab2a-4501-a951-06bb1075184c") 231 IMFMediaError : public IUnknown 232 { 233 virtual USHORT STDMETHODCALLTYPE GetErrorCode( 234 ) = 0; 235 236 virtual HRESULT STDMETHODCALLTYPE GetExtendedErrorCode( 237 ) = 0; 238 239 virtual HRESULT STDMETHODCALLTYPE SetErrorCode( 240 MF_MEDIA_ENGINE_ERR error) = 0; 241 242 virtual HRESULT STDMETHODCALLTYPE SetExtendedErrorCode( 243 HRESULT error) = 0; 244 245 }; 246 #ifdef __CRT_UUID_DECL 247 __CRT_UUID_DECL(IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c) 248 #endif 249 #else 250 typedef struct IMFMediaErrorVtbl { 251 BEGIN_INTERFACE 252 253 /*** IUnknown methods ***/ 254 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 255 IMFMediaError *This, 256 REFIID riid, 257 void **ppvObject); 258 259 ULONG (STDMETHODCALLTYPE *AddRef)( 260 IMFMediaError *This); 261 262 ULONG (STDMETHODCALLTYPE *Release)( 263 IMFMediaError *This); 264 265 /*** IMFMediaError methods ***/ 266 USHORT (STDMETHODCALLTYPE *GetErrorCode)( 267 IMFMediaError *This); 268 269 HRESULT (STDMETHODCALLTYPE *GetExtendedErrorCode)( 270 IMFMediaError *This); 271 272 HRESULT (STDMETHODCALLTYPE *SetErrorCode)( 273 IMFMediaError *This, 274 MF_MEDIA_ENGINE_ERR error); 275 276 HRESULT (STDMETHODCALLTYPE *SetExtendedErrorCode)( 277 IMFMediaError *This, 278 HRESULT error); 279 280 END_INTERFACE 281 } IMFMediaErrorVtbl; 282 283 interface IMFMediaError { 284 CONST_VTBL IMFMediaErrorVtbl* lpVtbl; 285 }; 286 287 #ifdef COBJMACROS 288 #ifndef WIDL_C_INLINE_WRAPPERS 289 /*** IUnknown methods ***/ 290 #define IMFMediaError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 291 #define IMFMediaError_AddRef(This) (This)->lpVtbl->AddRef(This) 292 #define IMFMediaError_Release(This) (This)->lpVtbl->Release(This) 293 /*** IMFMediaError methods ***/ 294 #define IMFMediaError_GetErrorCode(This) (This)->lpVtbl->GetErrorCode(This) 295 #define IMFMediaError_GetExtendedErrorCode(This) (This)->lpVtbl->GetExtendedErrorCode(This) 296 #define IMFMediaError_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error) 297 #define IMFMediaError_SetExtendedErrorCode(This,error) (This)->lpVtbl->SetExtendedErrorCode(This,error) 298 #else 299 /*** IUnknown methods ***/ 300 static inline HRESULT IMFMediaError_QueryInterface(IMFMediaError* This,REFIID riid,void **ppvObject) { 301 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 302 } 303 static inline ULONG IMFMediaError_AddRef(IMFMediaError* This) { 304 return This->lpVtbl->AddRef(This); 305 } 306 static inline ULONG IMFMediaError_Release(IMFMediaError* This) { 307 return This->lpVtbl->Release(This); 308 } 309 /*** IMFMediaError methods ***/ 310 static inline USHORT IMFMediaError_GetErrorCode(IMFMediaError* This) { 311 return This->lpVtbl->GetErrorCode(This); 312 } 313 static inline HRESULT IMFMediaError_GetExtendedErrorCode(IMFMediaError* This) { 314 return This->lpVtbl->GetExtendedErrorCode(This); 315 } 316 static inline HRESULT IMFMediaError_SetErrorCode(IMFMediaError* This,MF_MEDIA_ENGINE_ERR error) { 317 return This->lpVtbl->SetErrorCode(This,error); 318 } 319 static inline HRESULT IMFMediaError_SetExtendedErrorCode(IMFMediaError* This,HRESULT error) { 320 return This->lpVtbl->SetExtendedErrorCode(This,error); 321 } 322 #endif 323 #endif 324 325 #endif 326 327 328 #endif /* __IMFMediaError_INTERFACE_DEFINED__ */ 329 330 /***************************************************************************** 331 * IMFMediaEngineSrcElements interface 332 */ 333 #ifndef __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ 334 #define __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ 335 336 DEFINE_GUID(IID_IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea); 337 #if defined(__cplusplus) && !defined(CINTERFACE) 338 MIDL_INTERFACE("7a5e5354-b114-4c72-b991-3131d75032ea") 339 IMFMediaEngineSrcElements : public IUnknown 340 { 341 virtual DWORD STDMETHODCALLTYPE GetLength( 342 ) = 0; 343 344 virtual HRESULT STDMETHODCALLTYPE GetURL( 345 DWORD index, 346 BSTR *url) = 0; 347 348 virtual HRESULT STDMETHODCALLTYPE GetType( 349 DWORD index, 350 BSTR *type) = 0; 351 352 virtual HRESULT STDMETHODCALLTYPE GetMedia( 353 DWORD index, 354 BSTR *media) = 0; 355 356 virtual HRESULT STDMETHODCALLTYPE AddElement( 357 BSTR url, 358 BSTR type, 359 BSTR media) = 0; 360 361 virtual HRESULT STDMETHODCALLTYPE RemoveAllElements( 362 ) = 0; 363 364 }; 365 #ifdef __CRT_UUID_DECL 366 __CRT_UUID_DECL(IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea) 367 #endif 368 #else 369 typedef struct IMFMediaEngineSrcElementsVtbl { 370 BEGIN_INTERFACE 371 372 /*** IUnknown methods ***/ 373 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 374 IMFMediaEngineSrcElements *This, 375 REFIID riid, 376 void **ppvObject); 377 378 ULONG (STDMETHODCALLTYPE *AddRef)( 379 IMFMediaEngineSrcElements *This); 380 381 ULONG (STDMETHODCALLTYPE *Release)( 382 IMFMediaEngineSrcElements *This); 383 384 /*** IMFMediaEngineSrcElements methods ***/ 385 DWORD (STDMETHODCALLTYPE *GetLength)( 386 IMFMediaEngineSrcElements *This); 387 388 HRESULT (STDMETHODCALLTYPE *GetURL)( 389 IMFMediaEngineSrcElements *This, 390 DWORD index, 391 BSTR *url); 392 393 HRESULT (STDMETHODCALLTYPE *GetType)( 394 IMFMediaEngineSrcElements *This, 395 DWORD index, 396 BSTR *type); 397 398 HRESULT (STDMETHODCALLTYPE *GetMedia)( 399 IMFMediaEngineSrcElements *This, 400 DWORD index, 401 BSTR *media); 402 403 HRESULT (STDMETHODCALLTYPE *AddElement)( 404 IMFMediaEngineSrcElements *This, 405 BSTR url, 406 BSTR type, 407 BSTR media); 408 409 HRESULT (STDMETHODCALLTYPE *RemoveAllElements)( 410 IMFMediaEngineSrcElements *This); 411 412 END_INTERFACE 413 } IMFMediaEngineSrcElementsVtbl; 414 415 interface IMFMediaEngineSrcElements { 416 CONST_VTBL IMFMediaEngineSrcElementsVtbl* lpVtbl; 417 }; 418 419 #ifdef COBJMACROS 420 #ifndef WIDL_C_INLINE_WRAPPERS 421 /*** IUnknown methods ***/ 422 #define IMFMediaEngineSrcElements_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 423 #define IMFMediaEngineSrcElements_AddRef(This) (This)->lpVtbl->AddRef(This) 424 #define IMFMediaEngineSrcElements_Release(This) (This)->lpVtbl->Release(This) 425 /*** IMFMediaEngineSrcElements methods ***/ 426 #define IMFMediaEngineSrcElements_GetLength(This) (This)->lpVtbl->GetLength(This) 427 #define IMFMediaEngineSrcElements_GetURL(This,index,url) (This)->lpVtbl->GetURL(This,index,url) 428 #define IMFMediaEngineSrcElements_GetType(This,index,type) (This)->lpVtbl->GetType(This,index,type) 429 #define IMFMediaEngineSrcElements_GetMedia(This,index,media) (This)->lpVtbl->GetMedia(This,index,media) 430 #define IMFMediaEngineSrcElements_AddElement(This,url,type,media) (This)->lpVtbl->AddElement(This,url,type,media) 431 #define IMFMediaEngineSrcElements_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This) 432 #else 433 /*** IUnknown methods ***/ 434 static inline HRESULT IMFMediaEngineSrcElements_QueryInterface(IMFMediaEngineSrcElements* This,REFIID riid,void **ppvObject) { 435 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 436 } 437 static inline ULONG IMFMediaEngineSrcElements_AddRef(IMFMediaEngineSrcElements* This) { 438 return This->lpVtbl->AddRef(This); 439 } 440 static inline ULONG IMFMediaEngineSrcElements_Release(IMFMediaEngineSrcElements* This) { 441 return This->lpVtbl->Release(This); 442 } 443 /*** IMFMediaEngineSrcElements methods ***/ 444 static inline DWORD IMFMediaEngineSrcElements_GetLength(IMFMediaEngineSrcElements* This) { 445 return This->lpVtbl->GetLength(This); 446 } 447 static inline HRESULT IMFMediaEngineSrcElements_GetURL(IMFMediaEngineSrcElements* This,DWORD index,BSTR *url) { 448 return This->lpVtbl->GetURL(This,index,url); 449 } 450 static inline HRESULT IMFMediaEngineSrcElements_GetType(IMFMediaEngineSrcElements* This,DWORD index,BSTR *type) { 451 return This->lpVtbl->GetType(This,index,type); 452 } 453 static inline HRESULT IMFMediaEngineSrcElements_GetMedia(IMFMediaEngineSrcElements* This,DWORD index,BSTR *media) { 454 return This->lpVtbl->GetMedia(This,index,media); 455 } 456 static inline HRESULT IMFMediaEngineSrcElements_AddElement(IMFMediaEngineSrcElements* This,BSTR url,BSTR type,BSTR media) { 457 return This->lpVtbl->AddElement(This,url,type,media); 458 } 459 static inline HRESULT IMFMediaEngineSrcElements_RemoveAllElements(IMFMediaEngineSrcElements* This) { 460 return This->lpVtbl->RemoveAllElements(This); 461 } 462 #endif 463 #endif 464 465 #endif 466 467 468 #endif /* __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ */ 469 470 /***************************************************************************** 471 * IMFMediaTimeRange interface 472 */ 473 #ifndef __IMFMediaTimeRange_INTERFACE_DEFINED__ 474 #define __IMFMediaTimeRange_INTERFACE_DEFINED__ 475 476 DEFINE_GUID(IID_IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c); 477 #if defined(__cplusplus) && !defined(CINTERFACE) 478 MIDL_INTERFACE("db71a2fc-078a-414e-9df9-8c2531b0aa6c") 479 IMFMediaTimeRange : public IUnknown 480 { 481 virtual DWORD STDMETHODCALLTYPE GetLength( 482 ) = 0; 483 484 virtual HRESULT STDMETHODCALLTYPE GetStart( 485 DWORD index, 486 double *start) = 0; 487 488 virtual HRESULT STDMETHODCALLTYPE GetEnd( 489 DWORD index, 490 double *end) = 0; 491 492 virtual WINBOOL STDMETHODCALLTYPE ContainsTime( 493 double time) = 0; 494 495 virtual HRESULT STDMETHODCALLTYPE AddRange( 496 double start, 497 double end) = 0; 498 499 virtual HRESULT STDMETHODCALLTYPE Clear( 500 ) = 0; 501 502 }; 503 #ifdef __CRT_UUID_DECL 504 __CRT_UUID_DECL(IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c) 505 #endif 506 #else 507 typedef struct IMFMediaTimeRangeVtbl { 508 BEGIN_INTERFACE 509 510 /*** IUnknown methods ***/ 511 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 512 IMFMediaTimeRange *This, 513 REFIID riid, 514 void **ppvObject); 515 516 ULONG (STDMETHODCALLTYPE *AddRef)( 517 IMFMediaTimeRange *This); 518 519 ULONG (STDMETHODCALLTYPE *Release)( 520 IMFMediaTimeRange *This); 521 522 /*** IMFMediaTimeRange methods ***/ 523 DWORD (STDMETHODCALLTYPE *GetLength)( 524 IMFMediaTimeRange *This); 525 526 HRESULT (STDMETHODCALLTYPE *GetStart)( 527 IMFMediaTimeRange *This, 528 DWORD index, 529 double *start); 530 531 HRESULT (STDMETHODCALLTYPE *GetEnd)( 532 IMFMediaTimeRange *This, 533 DWORD index, 534 double *end); 535 536 WINBOOL (STDMETHODCALLTYPE *ContainsTime)( 537 IMFMediaTimeRange *This, 538 double time); 539 540 HRESULT (STDMETHODCALLTYPE *AddRange)( 541 IMFMediaTimeRange *This, 542 double start, 543 double end); 544 545 HRESULT (STDMETHODCALLTYPE *Clear)( 546 IMFMediaTimeRange *This); 547 548 END_INTERFACE 549 } IMFMediaTimeRangeVtbl; 550 551 interface IMFMediaTimeRange { 552 CONST_VTBL IMFMediaTimeRangeVtbl* lpVtbl; 553 }; 554 555 #ifdef COBJMACROS 556 #ifndef WIDL_C_INLINE_WRAPPERS 557 /*** IUnknown methods ***/ 558 #define IMFMediaTimeRange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 559 #define IMFMediaTimeRange_AddRef(This) (This)->lpVtbl->AddRef(This) 560 #define IMFMediaTimeRange_Release(This) (This)->lpVtbl->Release(This) 561 /*** IMFMediaTimeRange methods ***/ 562 #define IMFMediaTimeRange_GetLength(This) (This)->lpVtbl->GetLength(This) 563 #define IMFMediaTimeRange_GetStart(This,index,start) (This)->lpVtbl->GetStart(This,index,start) 564 #define IMFMediaTimeRange_GetEnd(This,index,end) (This)->lpVtbl->GetEnd(This,index,end) 565 #define IMFMediaTimeRange_ContainsTime(This,time) (This)->lpVtbl->ContainsTime(This,time) 566 #define IMFMediaTimeRange_AddRange(This,start,end) (This)->lpVtbl->AddRange(This,start,end) 567 #define IMFMediaTimeRange_Clear(This) (This)->lpVtbl->Clear(This) 568 #else 569 /*** IUnknown methods ***/ 570 static inline HRESULT IMFMediaTimeRange_QueryInterface(IMFMediaTimeRange* This,REFIID riid,void **ppvObject) { 571 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 572 } 573 static inline ULONG IMFMediaTimeRange_AddRef(IMFMediaTimeRange* This) { 574 return This->lpVtbl->AddRef(This); 575 } 576 static inline ULONG IMFMediaTimeRange_Release(IMFMediaTimeRange* This) { 577 return This->lpVtbl->Release(This); 578 } 579 /*** IMFMediaTimeRange methods ***/ 580 static inline DWORD IMFMediaTimeRange_GetLength(IMFMediaTimeRange* This) { 581 return This->lpVtbl->GetLength(This); 582 } 583 static inline HRESULT IMFMediaTimeRange_GetStart(IMFMediaTimeRange* This,DWORD index,double *start) { 584 return This->lpVtbl->GetStart(This,index,start); 585 } 586 static inline HRESULT IMFMediaTimeRange_GetEnd(IMFMediaTimeRange* This,DWORD index,double *end) { 587 return This->lpVtbl->GetEnd(This,index,end); 588 } 589 static inline WINBOOL IMFMediaTimeRange_ContainsTime(IMFMediaTimeRange* This,double time) { 590 return This->lpVtbl->ContainsTime(This,time); 591 } 592 static inline HRESULT IMFMediaTimeRange_AddRange(IMFMediaTimeRange* This,double start,double end) { 593 return This->lpVtbl->AddRange(This,start,end); 594 } 595 static inline HRESULT IMFMediaTimeRange_Clear(IMFMediaTimeRange* This) { 596 return This->lpVtbl->Clear(This); 597 } 598 #endif 599 #endif 600 601 #endif 602 603 604 #endif /* __IMFMediaTimeRange_INTERFACE_DEFINED__ */ 605 606 /***************************************************************************** 607 * IMFMediaEngine interface 608 */ 609 #ifndef __IMFMediaEngine_INTERFACE_DEFINED__ 610 #define __IMFMediaEngine_INTERFACE_DEFINED__ 611 612 #undef GetCurrentTime 613 DEFINE_GUID(IID_IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93); 614 #if defined(__cplusplus) && !defined(CINTERFACE) 615 MIDL_INTERFACE("98a1b0bb-03eb-4935-ae7c-93c1fa0e1c93") 616 IMFMediaEngine : public IUnknown 617 { 618 virtual HRESULT STDMETHODCALLTYPE GetError( 619 IMFMediaError **error) = 0; 620 621 virtual HRESULT STDMETHODCALLTYPE SetErrorCode( 622 MF_MEDIA_ENGINE_ERR error) = 0; 623 624 virtual HRESULT STDMETHODCALLTYPE SetSourceElements( 625 IMFMediaEngineSrcElements *elements) = 0; 626 627 virtual HRESULT STDMETHODCALLTYPE SetSource( 628 BSTR url) = 0; 629 630 virtual HRESULT STDMETHODCALLTYPE GetCurrentSource( 631 BSTR *url) = 0; 632 633 virtual USHORT STDMETHODCALLTYPE GetNetworkState( 634 ) = 0; 635 636 virtual MF_MEDIA_ENGINE_PRELOAD STDMETHODCALLTYPE GetPreload( 637 ) = 0; 638 639 virtual HRESULT STDMETHODCALLTYPE SetPreload( 640 MF_MEDIA_ENGINE_PRELOAD preload) = 0; 641 642 virtual HRESULT STDMETHODCALLTYPE GetBuffered( 643 IMFMediaTimeRange **buffered) = 0; 644 645 virtual HRESULT STDMETHODCALLTYPE Load( 646 ) = 0; 647 648 virtual HRESULT STDMETHODCALLTYPE CanPlayType( 649 BSTR type, 650 MF_MEDIA_ENGINE_CANPLAY *answer) = 0; 651 652 virtual USHORT STDMETHODCALLTYPE GetReadyState( 653 ) = 0; 654 655 virtual WINBOOL STDMETHODCALLTYPE IsSeeking( 656 ) = 0; 657 658 virtual double STDMETHODCALLTYPE GetCurrentTime( 659 ) = 0; 660 661 virtual HRESULT STDMETHODCALLTYPE SetCurrentTime( 662 double time) = 0; 663 664 virtual double STDMETHODCALLTYPE GetStartTime( 665 ) = 0; 666 667 virtual double STDMETHODCALLTYPE GetDuration( 668 ) = 0; 669 670 virtual WINBOOL STDMETHODCALLTYPE IsPaused( 671 ) = 0; 672 673 virtual double STDMETHODCALLTYPE GetDefaultPlaybackRate( 674 ) = 0; 675 676 virtual HRESULT STDMETHODCALLTYPE SetDefaultPlaybackRate( 677 double rate) = 0; 678 679 virtual double STDMETHODCALLTYPE GetPlaybackRate( 680 ) = 0; 681 682 virtual HRESULT STDMETHODCALLTYPE SetPlaybackRate( 683 double rate) = 0; 684 685 virtual HRESULT STDMETHODCALLTYPE GetPlayed( 686 IMFMediaTimeRange **played) = 0; 687 688 virtual HRESULT STDMETHODCALLTYPE GetSeekable( 689 IMFMediaTimeRange **seekable) = 0; 690 691 virtual WINBOOL STDMETHODCALLTYPE IsEnded( 692 ) = 0; 693 694 virtual WINBOOL STDMETHODCALLTYPE GetAutoPlay( 695 ) = 0; 696 697 virtual HRESULT STDMETHODCALLTYPE SetAutoPlay( 698 WINBOOL autoplay) = 0; 699 700 virtual WINBOOL STDMETHODCALLTYPE GetLoop( 701 ) = 0; 702 703 virtual HRESULT STDMETHODCALLTYPE SetLoop( 704 WINBOOL loop) = 0; 705 706 virtual HRESULT STDMETHODCALLTYPE Play( 707 ) = 0; 708 709 virtual HRESULT STDMETHODCALLTYPE Pause( 710 ) = 0; 711 712 virtual WINBOOL STDMETHODCALLTYPE GetMuted( 713 ) = 0; 714 715 virtual HRESULT STDMETHODCALLTYPE SetMuted( 716 WINBOOL muted) = 0; 717 718 virtual double STDMETHODCALLTYPE GetVolume( 719 ) = 0; 720 721 virtual HRESULT STDMETHODCALLTYPE SetVolume( 722 double volume) = 0; 723 724 virtual WINBOOL STDMETHODCALLTYPE HasVideo( 725 ) = 0; 726 727 virtual WINBOOL STDMETHODCALLTYPE HasAudio( 728 ) = 0; 729 730 virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize( 731 DWORD *cx, 732 DWORD *cy) = 0; 733 734 virtual HRESULT STDMETHODCALLTYPE GetVideoAspectRatio( 735 DWORD *cx, 736 DWORD *cy) = 0; 737 738 virtual HRESULT STDMETHODCALLTYPE Shutdown( 739 ) = 0; 740 741 virtual HRESULT STDMETHODCALLTYPE TransferVideoFrame( 742 IUnknown *surface, 743 const MFVideoNormalizedRect *src, 744 const RECT *dst, 745 const MFARGB *color) = 0; 746 747 virtual HRESULT STDMETHODCALLTYPE OnVideoStreamTick( 748 LONGLONG *time) = 0; 749 750 }; 751 #ifdef __CRT_UUID_DECL 752 __CRT_UUID_DECL(IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93) 753 #endif 754 #else 755 typedef struct IMFMediaEngineVtbl { 756 BEGIN_INTERFACE 757 758 /*** IUnknown methods ***/ 759 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 760 IMFMediaEngine *This, 761 REFIID riid, 762 void **ppvObject); 763 764 ULONG (STDMETHODCALLTYPE *AddRef)( 765 IMFMediaEngine *This); 766 767 ULONG (STDMETHODCALLTYPE *Release)( 768 IMFMediaEngine *This); 769 770 /*** IMFMediaEngine methods ***/ 771 HRESULT (STDMETHODCALLTYPE *GetError)( 772 IMFMediaEngine *This, 773 IMFMediaError **error); 774 775 HRESULT (STDMETHODCALLTYPE *SetErrorCode)( 776 IMFMediaEngine *This, 777 MF_MEDIA_ENGINE_ERR error); 778 779 HRESULT (STDMETHODCALLTYPE *SetSourceElements)( 780 IMFMediaEngine *This, 781 IMFMediaEngineSrcElements *elements); 782 783 HRESULT (STDMETHODCALLTYPE *SetSource)( 784 IMFMediaEngine *This, 785 BSTR url); 786 787 HRESULT (STDMETHODCALLTYPE *GetCurrentSource)( 788 IMFMediaEngine *This, 789 BSTR *url); 790 791 USHORT (STDMETHODCALLTYPE *GetNetworkState)( 792 IMFMediaEngine *This); 793 794 MF_MEDIA_ENGINE_PRELOAD (STDMETHODCALLTYPE *GetPreload)( 795 IMFMediaEngine *This); 796 797 HRESULT (STDMETHODCALLTYPE *SetPreload)( 798 IMFMediaEngine *This, 799 MF_MEDIA_ENGINE_PRELOAD preload); 800 801 HRESULT (STDMETHODCALLTYPE *GetBuffered)( 802 IMFMediaEngine *This, 803 IMFMediaTimeRange **buffered); 804 805 HRESULT (STDMETHODCALLTYPE *Load)( 806 IMFMediaEngine *This); 807 808 HRESULT (STDMETHODCALLTYPE *CanPlayType)( 809 IMFMediaEngine *This, 810 BSTR type, 811 MF_MEDIA_ENGINE_CANPLAY *answer); 812 813 USHORT (STDMETHODCALLTYPE *GetReadyState)( 814 IMFMediaEngine *This); 815 816 WINBOOL (STDMETHODCALLTYPE *IsSeeking)( 817 IMFMediaEngine *This); 818 819 double (STDMETHODCALLTYPE *GetCurrentTime)( 820 IMFMediaEngine *This); 821 822 HRESULT (STDMETHODCALLTYPE *SetCurrentTime)( 823 IMFMediaEngine *This, 824 double time); 825 826 double (STDMETHODCALLTYPE *GetStartTime)( 827 IMFMediaEngine *This); 828 829 double (STDMETHODCALLTYPE *GetDuration)( 830 IMFMediaEngine *This); 831 832 WINBOOL (STDMETHODCALLTYPE *IsPaused)( 833 IMFMediaEngine *This); 834 835 double (STDMETHODCALLTYPE *GetDefaultPlaybackRate)( 836 IMFMediaEngine *This); 837 838 HRESULT (STDMETHODCALLTYPE *SetDefaultPlaybackRate)( 839 IMFMediaEngine *This, 840 double rate); 841 842 double (STDMETHODCALLTYPE *GetPlaybackRate)( 843 IMFMediaEngine *This); 844 845 HRESULT (STDMETHODCALLTYPE *SetPlaybackRate)( 846 IMFMediaEngine *This, 847 double rate); 848 849 HRESULT (STDMETHODCALLTYPE *GetPlayed)( 850 IMFMediaEngine *This, 851 IMFMediaTimeRange **played); 852 853 HRESULT (STDMETHODCALLTYPE *GetSeekable)( 854 IMFMediaEngine *This, 855 IMFMediaTimeRange **seekable); 856 857 WINBOOL (STDMETHODCALLTYPE *IsEnded)( 858 IMFMediaEngine *This); 859 860 WINBOOL (STDMETHODCALLTYPE *GetAutoPlay)( 861 IMFMediaEngine *This); 862 863 HRESULT (STDMETHODCALLTYPE *SetAutoPlay)( 864 IMFMediaEngine *This, 865 WINBOOL autoplay); 866 867 WINBOOL (STDMETHODCALLTYPE *GetLoop)( 868 IMFMediaEngine *This); 869 870 HRESULT (STDMETHODCALLTYPE *SetLoop)( 871 IMFMediaEngine *This, 872 WINBOOL loop); 873 874 HRESULT (STDMETHODCALLTYPE *Play)( 875 IMFMediaEngine *This); 876 877 HRESULT (STDMETHODCALLTYPE *Pause)( 878 IMFMediaEngine *This); 879 880 WINBOOL (STDMETHODCALLTYPE *GetMuted)( 881 IMFMediaEngine *This); 882 883 HRESULT (STDMETHODCALLTYPE *SetMuted)( 884 IMFMediaEngine *This, 885 WINBOOL muted); 886 887 double (STDMETHODCALLTYPE *GetVolume)( 888 IMFMediaEngine *This); 889 890 HRESULT (STDMETHODCALLTYPE *SetVolume)( 891 IMFMediaEngine *This, 892 double volume); 893 894 WINBOOL (STDMETHODCALLTYPE *HasVideo)( 895 IMFMediaEngine *This); 896 897 WINBOOL (STDMETHODCALLTYPE *HasAudio)( 898 IMFMediaEngine *This); 899 900 HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)( 901 IMFMediaEngine *This, 902 DWORD *cx, 903 DWORD *cy); 904 905 HRESULT (STDMETHODCALLTYPE *GetVideoAspectRatio)( 906 IMFMediaEngine *This, 907 DWORD *cx, 908 DWORD *cy); 909 910 HRESULT (STDMETHODCALLTYPE *Shutdown)( 911 IMFMediaEngine *This); 912 913 HRESULT (STDMETHODCALLTYPE *TransferVideoFrame)( 914 IMFMediaEngine *This, 915 IUnknown *surface, 916 const MFVideoNormalizedRect *src, 917 const RECT *dst, 918 const MFARGB *color); 919 920 HRESULT (STDMETHODCALLTYPE *OnVideoStreamTick)( 921 IMFMediaEngine *This, 922 LONGLONG *time); 923 924 END_INTERFACE 925 } IMFMediaEngineVtbl; 926 927 interface IMFMediaEngine { 928 CONST_VTBL IMFMediaEngineVtbl* lpVtbl; 929 }; 930 931 #ifdef COBJMACROS 932 #ifndef WIDL_C_INLINE_WRAPPERS 933 /*** IUnknown methods ***/ 934 #define IMFMediaEngine_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 935 #define IMFMediaEngine_AddRef(This) (This)->lpVtbl->AddRef(This) 936 #define IMFMediaEngine_Release(This) (This)->lpVtbl->Release(This) 937 /*** IMFMediaEngine methods ***/ 938 #define IMFMediaEngine_GetError(This,error) (This)->lpVtbl->GetError(This,error) 939 #define IMFMediaEngine_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error) 940 #define IMFMediaEngine_SetSourceElements(This,elements) (This)->lpVtbl->SetSourceElements(This,elements) 941 #define IMFMediaEngine_SetSource(This,url) (This)->lpVtbl->SetSource(This,url) 942 #define IMFMediaEngine_GetCurrentSource(This,url) (This)->lpVtbl->GetCurrentSource(This,url) 943 #define IMFMediaEngine_GetNetworkState(This) (This)->lpVtbl->GetNetworkState(This) 944 #define IMFMediaEngine_GetPreload(This) (This)->lpVtbl->GetPreload(This) 945 #define IMFMediaEngine_SetPreload(This,preload) (This)->lpVtbl->SetPreload(This,preload) 946 #define IMFMediaEngine_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered) 947 #define IMFMediaEngine_Load(This) (This)->lpVtbl->Load(This) 948 #define IMFMediaEngine_CanPlayType(This,type,answer) (This)->lpVtbl->CanPlayType(This,type,answer) 949 #define IMFMediaEngine_GetReadyState(This) (This)->lpVtbl->GetReadyState(This) 950 #define IMFMediaEngine_IsSeeking(This) (This)->lpVtbl->IsSeeking(This) 951 #define IMFMediaEngine_GetCurrentTime(This) (This)->lpVtbl->GetCurrentTime(This) 952 #define IMFMediaEngine_SetCurrentTime(This,time) (This)->lpVtbl->SetCurrentTime(This,time) 953 #define IMFMediaEngine_GetStartTime(This) (This)->lpVtbl->GetStartTime(This) 954 #define IMFMediaEngine_GetDuration(This) (This)->lpVtbl->GetDuration(This) 955 #define IMFMediaEngine_IsPaused(This) (This)->lpVtbl->IsPaused(This) 956 #define IMFMediaEngine_GetDefaultPlaybackRate(This) (This)->lpVtbl->GetDefaultPlaybackRate(This) 957 #define IMFMediaEngine_SetDefaultPlaybackRate(This,rate) (This)->lpVtbl->SetDefaultPlaybackRate(This,rate) 958 #define IMFMediaEngine_GetPlaybackRate(This) (This)->lpVtbl->GetPlaybackRate(This) 959 #define IMFMediaEngine_SetPlaybackRate(This,rate) (This)->lpVtbl->SetPlaybackRate(This,rate) 960 #define IMFMediaEngine_GetPlayed(This,played) (This)->lpVtbl->GetPlayed(This,played) 961 #define IMFMediaEngine_GetSeekable(This,seekable) (This)->lpVtbl->GetSeekable(This,seekable) 962 #define IMFMediaEngine_IsEnded(This) (This)->lpVtbl->IsEnded(This) 963 #define IMFMediaEngine_GetAutoPlay(This) (This)->lpVtbl->GetAutoPlay(This) 964 #define IMFMediaEngine_SetAutoPlay(This,autoplay) (This)->lpVtbl->SetAutoPlay(This,autoplay) 965 #define IMFMediaEngine_GetLoop(This) (This)->lpVtbl->GetLoop(This) 966 #define IMFMediaEngine_SetLoop(This,loop) (This)->lpVtbl->SetLoop(This,loop) 967 #define IMFMediaEngine_Play(This) (This)->lpVtbl->Play(This) 968 #define IMFMediaEngine_Pause(This) (This)->lpVtbl->Pause(This) 969 #define IMFMediaEngine_GetMuted(This) (This)->lpVtbl->GetMuted(This) 970 #define IMFMediaEngine_SetMuted(This,muted) (This)->lpVtbl->SetMuted(This,muted) 971 #define IMFMediaEngine_GetVolume(This) (This)->lpVtbl->GetVolume(This) 972 #define IMFMediaEngine_SetVolume(This,volume) (This)->lpVtbl->SetVolume(This,volume) 973 #define IMFMediaEngine_HasVideo(This) (This)->lpVtbl->HasVideo(This) 974 #define IMFMediaEngine_HasAudio(This) (This)->lpVtbl->HasAudio(This) 975 #define IMFMediaEngine_GetNativeVideoSize(This,cx,cy) (This)->lpVtbl->GetNativeVideoSize(This,cx,cy) 976 #define IMFMediaEngine_GetVideoAspectRatio(This,cx,cy) (This)->lpVtbl->GetVideoAspectRatio(This,cx,cy) 977 #define IMFMediaEngine_Shutdown(This) (This)->lpVtbl->Shutdown(This) 978 #define IMFMediaEngine_TransferVideoFrame(This,surface,src,dst,color) (This)->lpVtbl->TransferVideoFrame(This,surface,src,dst,color) 979 #define IMFMediaEngine_OnVideoStreamTick(This,time) (This)->lpVtbl->OnVideoStreamTick(This,time) 980 #else 981 /*** IUnknown methods ***/ 982 static inline HRESULT IMFMediaEngine_QueryInterface(IMFMediaEngine* This,REFIID riid,void **ppvObject) { 983 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 984 } 985 static inline ULONG IMFMediaEngine_AddRef(IMFMediaEngine* This) { 986 return This->lpVtbl->AddRef(This); 987 } 988 static inline ULONG IMFMediaEngine_Release(IMFMediaEngine* This) { 989 return This->lpVtbl->Release(This); 990 } 991 /*** IMFMediaEngine methods ***/ 992 static inline HRESULT IMFMediaEngine_GetError(IMFMediaEngine* This,IMFMediaError **error) { 993 return This->lpVtbl->GetError(This,error); 994 } 995 static inline HRESULT IMFMediaEngine_SetErrorCode(IMFMediaEngine* This,MF_MEDIA_ENGINE_ERR error) { 996 return This->lpVtbl->SetErrorCode(This,error); 997 } 998 static inline HRESULT IMFMediaEngine_SetSourceElements(IMFMediaEngine* This,IMFMediaEngineSrcElements *elements) { 999 return This->lpVtbl->SetSourceElements(This,elements); 1000 } 1001 static inline HRESULT IMFMediaEngine_SetSource(IMFMediaEngine* This,BSTR url) { 1002 return This->lpVtbl->SetSource(This,url); 1003 } 1004 static inline HRESULT IMFMediaEngine_GetCurrentSource(IMFMediaEngine* This,BSTR *url) { 1005 return This->lpVtbl->GetCurrentSource(This,url); 1006 } 1007 static inline USHORT IMFMediaEngine_GetNetworkState(IMFMediaEngine* This) { 1008 return This->lpVtbl->GetNetworkState(This); 1009 } 1010 static inline MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine_GetPreload(IMFMediaEngine* This) { 1011 return This->lpVtbl->GetPreload(This); 1012 } 1013 static inline HRESULT IMFMediaEngine_SetPreload(IMFMediaEngine* This,MF_MEDIA_ENGINE_PRELOAD preload) { 1014 return This->lpVtbl->SetPreload(This,preload); 1015 } 1016 static inline HRESULT IMFMediaEngine_GetBuffered(IMFMediaEngine* This,IMFMediaTimeRange **buffered) { 1017 return This->lpVtbl->GetBuffered(This,buffered); 1018 } 1019 static inline HRESULT IMFMediaEngine_Load(IMFMediaEngine* This) { 1020 return This->lpVtbl->Load(This); 1021 } 1022 static inline HRESULT IMFMediaEngine_CanPlayType(IMFMediaEngine* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) { 1023 return This->lpVtbl->CanPlayType(This,type,answer); 1024 } 1025 static inline USHORT IMFMediaEngine_GetReadyState(IMFMediaEngine* This) { 1026 return This->lpVtbl->GetReadyState(This); 1027 } 1028 static inline WINBOOL IMFMediaEngine_IsSeeking(IMFMediaEngine* This) { 1029 return This->lpVtbl->IsSeeking(This); 1030 } 1031 static inline double IMFMediaEngine_GetCurrentTime(IMFMediaEngine* This) { 1032 return This->lpVtbl->GetCurrentTime(This); 1033 } 1034 static inline HRESULT IMFMediaEngine_SetCurrentTime(IMFMediaEngine* This,double time) { 1035 return This->lpVtbl->SetCurrentTime(This,time); 1036 } 1037 static inline double IMFMediaEngine_GetStartTime(IMFMediaEngine* This) { 1038 return This->lpVtbl->GetStartTime(This); 1039 } 1040 static inline double IMFMediaEngine_GetDuration(IMFMediaEngine* This) { 1041 return This->lpVtbl->GetDuration(This); 1042 } 1043 static inline WINBOOL IMFMediaEngine_IsPaused(IMFMediaEngine* This) { 1044 return This->lpVtbl->IsPaused(This); 1045 } 1046 static inline double IMFMediaEngine_GetDefaultPlaybackRate(IMFMediaEngine* This) { 1047 return This->lpVtbl->GetDefaultPlaybackRate(This); 1048 } 1049 static inline HRESULT IMFMediaEngine_SetDefaultPlaybackRate(IMFMediaEngine* This,double rate) { 1050 return This->lpVtbl->SetDefaultPlaybackRate(This,rate); 1051 } 1052 static inline double IMFMediaEngine_GetPlaybackRate(IMFMediaEngine* This) { 1053 return This->lpVtbl->GetPlaybackRate(This); 1054 } 1055 static inline HRESULT IMFMediaEngine_SetPlaybackRate(IMFMediaEngine* This,double rate) { 1056 return This->lpVtbl->SetPlaybackRate(This,rate); 1057 } 1058 static inline HRESULT IMFMediaEngine_GetPlayed(IMFMediaEngine* This,IMFMediaTimeRange **played) { 1059 return This->lpVtbl->GetPlayed(This,played); 1060 } 1061 static inline HRESULT IMFMediaEngine_GetSeekable(IMFMediaEngine* This,IMFMediaTimeRange **seekable) { 1062 return This->lpVtbl->GetSeekable(This,seekable); 1063 } 1064 static inline WINBOOL IMFMediaEngine_IsEnded(IMFMediaEngine* This) { 1065 return This->lpVtbl->IsEnded(This); 1066 } 1067 static inline WINBOOL IMFMediaEngine_GetAutoPlay(IMFMediaEngine* This) { 1068 return This->lpVtbl->GetAutoPlay(This); 1069 } 1070 static inline HRESULT IMFMediaEngine_SetAutoPlay(IMFMediaEngine* This,WINBOOL autoplay) { 1071 return This->lpVtbl->SetAutoPlay(This,autoplay); 1072 } 1073 static inline WINBOOL IMFMediaEngine_GetLoop(IMFMediaEngine* This) { 1074 return This->lpVtbl->GetLoop(This); 1075 } 1076 static inline HRESULT IMFMediaEngine_SetLoop(IMFMediaEngine* This,WINBOOL loop) { 1077 return This->lpVtbl->SetLoop(This,loop); 1078 } 1079 static inline HRESULT IMFMediaEngine_Play(IMFMediaEngine* This) { 1080 return This->lpVtbl->Play(This); 1081 } 1082 static inline HRESULT IMFMediaEngine_Pause(IMFMediaEngine* This) { 1083 return This->lpVtbl->Pause(This); 1084 } 1085 static inline WINBOOL IMFMediaEngine_GetMuted(IMFMediaEngine* This) { 1086 return This->lpVtbl->GetMuted(This); 1087 } 1088 static inline HRESULT IMFMediaEngine_SetMuted(IMFMediaEngine* This,WINBOOL muted) { 1089 return This->lpVtbl->SetMuted(This,muted); 1090 } 1091 static inline double IMFMediaEngine_GetVolume(IMFMediaEngine* This) { 1092 return This->lpVtbl->GetVolume(This); 1093 } 1094 static inline HRESULT IMFMediaEngine_SetVolume(IMFMediaEngine* This,double volume) { 1095 return This->lpVtbl->SetVolume(This,volume); 1096 } 1097 static inline WINBOOL IMFMediaEngine_HasVideo(IMFMediaEngine* This) { 1098 return This->lpVtbl->HasVideo(This); 1099 } 1100 static inline WINBOOL IMFMediaEngine_HasAudio(IMFMediaEngine* This) { 1101 return This->lpVtbl->HasAudio(This); 1102 } 1103 static inline HRESULT IMFMediaEngine_GetNativeVideoSize(IMFMediaEngine* This,DWORD *cx,DWORD *cy) { 1104 return This->lpVtbl->GetNativeVideoSize(This,cx,cy); 1105 } 1106 static inline HRESULT IMFMediaEngine_GetVideoAspectRatio(IMFMediaEngine* This,DWORD *cx,DWORD *cy) { 1107 return This->lpVtbl->GetVideoAspectRatio(This,cx,cy); 1108 } 1109 static inline HRESULT IMFMediaEngine_Shutdown(IMFMediaEngine* This) { 1110 return This->lpVtbl->Shutdown(This); 1111 } 1112 static inline HRESULT IMFMediaEngine_TransferVideoFrame(IMFMediaEngine* This,IUnknown *surface,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *color) { 1113 return This->lpVtbl->TransferVideoFrame(This,surface,src,dst,color); 1114 } 1115 static inline HRESULT IMFMediaEngine_OnVideoStreamTick(IMFMediaEngine* This,LONGLONG *time) { 1116 return This->lpVtbl->OnVideoStreamTick(This,time); 1117 } 1118 #endif 1119 #endif 1120 1121 #endif 1122 1123 1124 #endif /* __IMFMediaEngine_INTERFACE_DEFINED__ */ 1125 1126 typedef enum MF_MEDIA_ENGINE_STATISTIC { 1127 MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED = 0, 1128 MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED = 1, 1129 MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED = 2, 1130 MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS = 3, 1131 MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND = 4, 1132 MF_MEDIA_ENGINE_STATISTIC_PLAYBACK_JITTER = 5, 1133 MF_MEDIA_ENGINE_STATISTIC_FRAMES_CORRUPTED = 6, 1134 MF_MEDIA_ENGINE_STATISTIC_TOTAL_FRAME_DELAY = 7 1135 } MF_MEDIA_ENGINE_STATISTIC; 1136 typedef enum MF_MEDIA_ENGINE_S3D_PACKING_MODE { 1137 MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE = 0, 1138 MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE = 1, 1139 MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM = 2 1140 } MF_MEDIA_ENGINE_S3D_PACKING_MODE; 1141 typedef enum MF_MEDIA_ENGINE_SEEK_MODE { 1142 MF_MEDIA_ENGINE_SEEK_MODE_NORMAL = 0, 1143 MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE = 1 1144 } MF_MEDIA_ENGINE_SEEK_MODE; 1145 /***************************************************************************** 1146 * IMFMediaEngineEx interface 1147 */ 1148 #ifndef __IMFMediaEngineEx_INTERFACE_DEFINED__ 1149 #define __IMFMediaEngineEx_INTERFACE_DEFINED__ 1150 1151 DEFINE_GUID(IID_IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1); 1152 #if defined(__cplusplus) && !defined(CINTERFACE) 1153 MIDL_INTERFACE("83015ead-b1e6-40d0-a98a-37145ffe1ad1") 1154 IMFMediaEngineEx : public IMFMediaEngine 1155 { 1156 virtual HRESULT STDMETHODCALLTYPE SetSourceFromByteStream( 1157 IMFByteStream *bytestream, 1158 BSTR url) = 0; 1159 1160 virtual HRESULT STDMETHODCALLTYPE GetStatistics( 1161 MF_MEDIA_ENGINE_STATISTIC stat_id, 1162 PROPVARIANT *stat) = 0; 1163 1164 virtual HRESULT STDMETHODCALLTYPE UpdateVideoStream( 1165 const MFVideoNormalizedRect *src, 1166 const RECT *dst, 1167 const MFARGB *border_color) = 0; 1168 1169 virtual double STDMETHODCALLTYPE GetBalance( 1170 ) = 0; 1171 1172 virtual HRESULT STDMETHODCALLTYPE SetBalance( 1173 double balance) = 0; 1174 1175 virtual WINBOOL STDMETHODCALLTYPE IsPlaybackRateSupported( 1176 double rate) = 0; 1177 1178 virtual HRESULT STDMETHODCALLTYPE FrameStep( 1179 WINBOOL forward) = 0; 1180 1181 virtual HRESULT STDMETHODCALLTYPE GetResourceCharacteristics( 1182 DWORD *flags) = 0; 1183 1184 virtual HRESULT STDMETHODCALLTYPE GetPresentationAttribute( 1185 REFGUID attribute, 1186 PROPVARIANT *value) = 0; 1187 1188 virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams( 1189 DWORD *stream_count) = 0; 1190 1191 virtual HRESULT STDMETHODCALLTYPE GetStreamAttribute( 1192 DWORD stream_index, 1193 REFGUID attribute, 1194 PROPVARIANT *value) = 0; 1195 1196 virtual HRESULT STDMETHODCALLTYPE GetStreamSelection( 1197 DWORD stream_index, 1198 WINBOOL *enabled) = 0; 1199 1200 virtual HRESULT STDMETHODCALLTYPE SetStreamSelection( 1201 DWORD stream_index, 1202 WINBOOL enabled) = 0; 1203 1204 virtual HRESULT STDMETHODCALLTYPE ApplyStreamSelections( 1205 ) = 0; 1206 1207 virtual HRESULT STDMETHODCALLTYPE IsProtected( 1208 WINBOOL *is_protected) = 0; 1209 1210 virtual HRESULT STDMETHODCALLTYPE InsertVideoEffect( 1211 IUnknown *effect, 1212 WINBOOL is_optional) = 0; 1213 1214 virtual HRESULT STDMETHODCALLTYPE InsertAudioEffect( 1215 IUnknown *effect, 1216 WINBOOL is_optional) = 0; 1217 1218 virtual HRESULT STDMETHODCALLTYPE RemoveAllEffects( 1219 ) = 0; 1220 1221 virtual HRESULT STDMETHODCALLTYPE SetTimelineMarkerTimer( 1222 double timeout) = 0; 1223 1224 virtual HRESULT STDMETHODCALLTYPE GetTimelineMarkerTimer( 1225 double *timeout) = 0; 1226 1227 virtual HRESULT STDMETHODCALLTYPE CancelTimelineMarkerTimer( 1228 ) = 0; 1229 1230 virtual WINBOOL STDMETHODCALLTYPE IsStereo3D( 1231 ) = 0; 1232 1233 virtual HRESULT STDMETHODCALLTYPE GetStereo3DFramePackingMode( 1234 MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) = 0; 1235 1236 virtual HRESULT STDMETHODCALLTYPE SetStereo3DFramePackingMode( 1237 MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) = 0; 1238 1239 virtual HRESULT STDMETHODCALLTYPE GetStereo3DRenderMode( 1240 MF3DVideoOutputType *output_type) = 0; 1241 1242 virtual HRESULT STDMETHODCALLTYPE SetStereo3DRenderMode( 1243 MF3DVideoOutputType output_type) = 0; 1244 1245 virtual HRESULT STDMETHODCALLTYPE EnableWindowlessSwapchainMode( 1246 WINBOOL enable) = 0; 1247 1248 virtual HRESULT STDMETHODCALLTYPE GetVideoSwapchainHandle( 1249 HANDLE *swapchain) = 0; 1250 1251 virtual HRESULT STDMETHODCALLTYPE EnableHorizontalMirrorMode( 1252 WINBOOL enable) = 0; 1253 1254 virtual HRESULT STDMETHODCALLTYPE GetAudioStreamCategory( 1255 UINT32 *category) = 0; 1256 1257 virtual HRESULT STDMETHODCALLTYPE SetAudioStreamCategory( 1258 UINT32 category) = 0; 1259 1260 virtual HRESULT STDMETHODCALLTYPE GetAudioEndpointRole( 1261 UINT32 *role) = 0; 1262 1263 virtual HRESULT STDMETHODCALLTYPE SetAudioEndpointRole( 1264 UINT32 role) = 0; 1265 1266 virtual HRESULT STDMETHODCALLTYPE GetRealTimeMode( 1267 WINBOOL *enabled) = 0; 1268 1269 virtual HRESULT STDMETHODCALLTYPE SetRealTimeMode( 1270 WINBOOL enable) = 0; 1271 1272 virtual HRESULT STDMETHODCALLTYPE SetCurrentTimeEx( 1273 double seektime, 1274 MF_MEDIA_ENGINE_SEEK_MODE mode) = 0; 1275 1276 virtual HRESULT STDMETHODCALLTYPE EnableTimeUpdateTimer( 1277 WINBOOL enable) = 0; 1278 1279 }; 1280 #ifdef __CRT_UUID_DECL 1281 __CRT_UUID_DECL(IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1) 1282 #endif 1283 #else 1284 typedef struct IMFMediaEngineExVtbl { 1285 BEGIN_INTERFACE 1286 1287 /*** IUnknown methods ***/ 1288 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1289 IMFMediaEngineEx *This, 1290 REFIID riid, 1291 void **ppvObject); 1292 1293 ULONG (STDMETHODCALLTYPE *AddRef)( 1294 IMFMediaEngineEx *This); 1295 1296 ULONG (STDMETHODCALLTYPE *Release)( 1297 IMFMediaEngineEx *This); 1298 1299 /*** IMFMediaEngine methods ***/ 1300 HRESULT (STDMETHODCALLTYPE *GetError)( 1301 IMFMediaEngineEx *This, 1302 IMFMediaError **error); 1303 1304 HRESULT (STDMETHODCALLTYPE *SetErrorCode)( 1305 IMFMediaEngineEx *This, 1306 MF_MEDIA_ENGINE_ERR error); 1307 1308 HRESULT (STDMETHODCALLTYPE *SetSourceElements)( 1309 IMFMediaEngineEx *This, 1310 IMFMediaEngineSrcElements *elements); 1311 1312 HRESULT (STDMETHODCALLTYPE *SetSource)( 1313 IMFMediaEngineEx *This, 1314 BSTR url); 1315 1316 HRESULT (STDMETHODCALLTYPE *GetCurrentSource)( 1317 IMFMediaEngineEx *This, 1318 BSTR *url); 1319 1320 USHORT (STDMETHODCALLTYPE *GetNetworkState)( 1321 IMFMediaEngineEx *This); 1322 1323 MF_MEDIA_ENGINE_PRELOAD (STDMETHODCALLTYPE *GetPreload)( 1324 IMFMediaEngineEx *This); 1325 1326 HRESULT (STDMETHODCALLTYPE *SetPreload)( 1327 IMFMediaEngineEx *This, 1328 MF_MEDIA_ENGINE_PRELOAD preload); 1329 1330 HRESULT (STDMETHODCALLTYPE *GetBuffered)( 1331 IMFMediaEngineEx *This, 1332 IMFMediaTimeRange **buffered); 1333 1334 HRESULT (STDMETHODCALLTYPE *Load)( 1335 IMFMediaEngineEx *This); 1336 1337 HRESULT (STDMETHODCALLTYPE *CanPlayType)( 1338 IMFMediaEngineEx *This, 1339 BSTR type, 1340 MF_MEDIA_ENGINE_CANPLAY *answer); 1341 1342 USHORT (STDMETHODCALLTYPE *GetReadyState)( 1343 IMFMediaEngineEx *This); 1344 1345 WINBOOL (STDMETHODCALLTYPE *IsSeeking)( 1346 IMFMediaEngineEx *This); 1347 1348 double (STDMETHODCALLTYPE *GetCurrentTime)( 1349 IMFMediaEngineEx *This); 1350 1351 HRESULT (STDMETHODCALLTYPE *SetCurrentTime)( 1352 IMFMediaEngineEx *This, 1353 double time); 1354 1355 double (STDMETHODCALLTYPE *GetStartTime)( 1356 IMFMediaEngineEx *This); 1357 1358 double (STDMETHODCALLTYPE *GetDuration)( 1359 IMFMediaEngineEx *This); 1360 1361 WINBOOL (STDMETHODCALLTYPE *IsPaused)( 1362 IMFMediaEngineEx *This); 1363 1364 double (STDMETHODCALLTYPE *GetDefaultPlaybackRate)( 1365 IMFMediaEngineEx *This); 1366 1367 HRESULT (STDMETHODCALLTYPE *SetDefaultPlaybackRate)( 1368 IMFMediaEngineEx *This, 1369 double rate); 1370 1371 double (STDMETHODCALLTYPE *GetPlaybackRate)( 1372 IMFMediaEngineEx *This); 1373 1374 HRESULT (STDMETHODCALLTYPE *SetPlaybackRate)( 1375 IMFMediaEngineEx *This, 1376 double rate); 1377 1378 HRESULT (STDMETHODCALLTYPE *GetPlayed)( 1379 IMFMediaEngineEx *This, 1380 IMFMediaTimeRange **played); 1381 1382 HRESULT (STDMETHODCALLTYPE *GetSeekable)( 1383 IMFMediaEngineEx *This, 1384 IMFMediaTimeRange **seekable); 1385 1386 WINBOOL (STDMETHODCALLTYPE *IsEnded)( 1387 IMFMediaEngineEx *This); 1388 1389 WINBOOL (STDMETHODCALLTYPE *GetAutoPlay)( 1390 IMFMediaEngineEx *This); 1391 1392 HRESULT (STDMETHODCALLTYPE *SetAutoPlay)( 1393 IMFMediaEngineEx *This, 1394 WINBOOL autoplay); 1395 1396 WINBOOL (STDMETHODCALLTYPE *GetLoop)( 1397 IMFMediaEngineEx *This); 1398 1399 HRESULT (STDMETHODCALLTYPE *SetLoop)( 1400 IMFMediaEngineEx *This, 1401 WINBOOL loop); 1402 1403 HRESULT (STDMETHODCALLTYPE *Play)( 1404 IMFMediaEngineEx *This); 1405 1406 HRESULT (STDMETHODCALLTYPE *Pause)( 1407 IMFMediaEngineEx *This); 1408 1409 WINBOOL (STDMETHODCALLTYPE *GetMuted)( 1410 IMFMediaEngineEx *This); 1411 1412 HRESULT (STDMETHODCALLTYPE *SetMuted)( 1413 IMFMediaEngineEx *This, 1414 WINBOOL muted); 1415 1416 double (STDMETHODCALLTYPE *GetVolume)( 1417 IMFMediaEngineEx *This); 1418 1419 HRESULT (STDMETHODCALLTYPE *SetVolume)( 1420 IMFMediaEngineEx *This, 1421 double volume); 1422 1423 WINBOOL (STDMETHODCALLTYPE *HasVideo)( 1424 IMFMediaEngineEx *This); 1425 1426 WINBOOL (STDMETHODCALLTYPE *HasAudio)( 1427 IMFMediaEngineEx *This); 1428 1429 HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)( 1430 IMFMediaEngineEx *This, 1431 DWORD *cx, 1432 DWORD *cy); 1433 1434 HRESULT (STDMETHODCALLTYPE *GetVideoAspectRatio)( 1435 IMFMediaEngineEx *This, 1436 DWORD *cx, 1437 DWORD *cy); 1438 1439 HRESULT (STDMETHODCALLTYPE *Shutdown)( 1440 IMFMediaEngineEx *This); 1441 1442 HRESULT (STDMETHODCALLTYPE *TransferVideoFrame)( 1443 IMFMediaEngineEx *This, 1444 IUnknown *surface, 1445 const MFVideoNormalizedRect *src, 1446 const RECT *dst, 1447 const MFARGB *color); 1448 1449 HRESULT (STDMETHODCALLTYPE *OnVideoStreamTick)( 1450 IMFMediaEngineEx *This, 1451 LONGLONG *time); 1452 1453 /*** IMFMediaEngineEx methods ***/ 1454 HRESULT (STDMETHODCALLTYPE *SetSourceFromByteStream)( 1455 IMFMediaEngineEx *This, 1456 IMFByteStream *bytestream, 1457 BSTR url); 1458 1459 HRESULT (STDMETHODCALLTYPE *GetStatistics)( 1460 IMFMediaEngineEx *This, 1461 MF_MEDIA_ENGINE_STATISTIC stat_id, 1462 PROPVARIANT *stat); 1463 1464 HRESULT (STDMETHODCALLTYPE *UpdateVideoStream)( 1465 IMFMediaEngineEx *This, 1466 const MFVideoNormalizedRect *src, 1467 const RECT *dst, 1468 const MFARGB *border_color); 1469 1470 double (STDMETHODCALLTYPE *GetBalance)( 1471 IMFMediaEngineEx *This); 1472 1473 HRESULT (STDMETHODCALLTYPE *SetBalance)( 1474 IMFMediaEngineEx *This, 1475 double balance); 1476 1477 WINBOOL (STDMETHODCALLTYPE *IsPlaybackRateSupported)( 1478 IMFMediaEngineEx *This, 1479 double rate); 1480 1481 HRESULT (STDMETHODCALLTYPE *FrameStep)( 1482 IMFMediaEngineEx *This, 1483 WINBOOL forward); 1484 1485 HRESULT (STDMETHODCALLTYPE *GetResourceCharacteristics)( 1486 IMFMediaEngineEx *This, 1487 DWORD *flags); 1488 1489 HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)( 1490 IMFMediaEngineEx *This, 1491 REFGUID attribute, 1492 PROPVARIANT *value); 1493 1494 HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)( 1495 IMFMediaEngineEx *This, 1496 DWORD *stream_count); 1497 1498 HRESULT (STDMETHODCALLTYPE *GetStreamAttribute)( 1499 IMFMediaEngineEx *This, 1500 DWORD stream_index, 1501 REFGUID attribute, 1502 PROPVARIANT *value); 1503 1504 HRESULT (STDMETHODCALLTYPE *GetStreamSelection)( 1505 IMFMediaEngineEx *This, 1506 DWORD stream_index, 1507 WINBOOL *enabled); 1508 1509 HRESULT (STDMETHODCALLTYPE *SetStreamSelection)( 1510 IMFMediaEngineEx *This, 1511 DWORD stream_index, 1512 WINBOOL enabled); 1513 1514 HRESULT (STDMETHODCALLTYPE *ApplyStreamSelections)( 1515 IMFMediaEngineEx *This); 1516 1517 HRESULT (STDMETHODCALLTYPE *IsProtected)( 1518 IMFMediaEngineEx *This, 1519 WINBOOL *is_protected); 1520 1521 HRESULT (STDMETHODCALLTYPE *InsertVideoEffect)( 1522 IMFMediaEngineEx *This, 1523 IUnknown *effect, 1524 WINBOOL is_optional); 1525 1526 HRESULT (STDMETHODCALLTYPE *InsertAudioEffect)( 1527 IMFMediaEngineEx *This, 1528 IUnknown *effect, 1529 WINBOOL is_optional); 1530 1531 HRESULT (STDMETHODCALLTYPE *RemoveAllEffects)( 1532 IMFMediaEngineEx *This); 1533 1534 HRESULT (STDMETHODCALLTYPE *SetTimelineMarkerTimer)( 1535 IMFMediaEngineEx *This, 1536 double timeout); 1537 1538 HRESULT (STDMETHODCALLTYPE *GetTimelineMarkerTimer)( 1539 IMFMediaEngineEx *This, 1540 double *timeout); 1541 1542 HRESULT (STDMETHODCALLTYPE *CancelTimelineMarkerTimer)( 1543 IMFMediaEngineEx *This); 1544 1545 WINBOOL (STDMETHODCALLTYPE *IsStereo3D)( 1546 IMFMediaEngineEx *This); 1547 1548 HRESULT (STDMETHODCALLTYPE *GetStereo3DFramePackingMode)( 1549 IMFMediaEngineEx *This, 1550 MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode); 1551 1552 HRESULT (STDMETHODCALLTYPE *SetStereo3DFramePackingMode)( 1553 IMFMediaEngineEx *This, 1554 MF_MEDIA_ENGINE_S3D_PACKING_MODE mode); 1555 1556 HRESULT (STDMETHODCALLTYPE *GetStereo3DRenderMode)( 1557 IMFMediaEngineEx *This, 1558 MF3DVideoOutputType *output_type); 1559 1560 HRESULT (STDMETHODCALLTYPE *SetStereo3DRenderMode)( 1561 IMFMediaEngineEx *This, 1562 MF3DVideoOutputType output_type); 1563 1564 HRESULT (STDMETHODCALLTYPE *EnableWindowlessSwapchainMode)( 1565 IMFMediaEngineEx *This, 1566 WINBOOL enable); 1567 1568 HRESULT (STDMETHODCALLTYPE *GetVideoSwapchainHandle)( 1569 IMFMediaEngineEx *This, 1570 HANDLE *swapchain); 1571 1572 HRESULT (STDMETHODCALLTYPE *EnableHorizontalMirrorMode)( 1573 IMFMediaEngineEx *This, 1574 WINBOOL enable); 1575 1576 HRESULT (STDMETHODCALLTYPE *GetAudioStreamCategory)( 1577 IMFMediaEngineEx *This, 1578 UINT32 *category); 1579 1580 HRESULT (STDMETHODCALLTYPE *SetAudioStreamCategory)( 1581 IMFMediaEngineEx *This, 1582 UINT32 category); 1583 1584 HRESULT (STDMETHODCALLTYPE *GetAudioEndpointRole)( 1585 IMFMediaEngineEx *This, 1586 UINT32 *role); 1587 1588 HRESULT (STDMETHODCALLTYPE *SetAudioEndpointRole)( 1589 IMFMediaEngineEx *This, 1590 UINT32 role); 1591 1592 HRESULT (STDMETHODCALLTYPE *GetRealTimeMode)( 1593 IMFMediaEngineEx *This, 1594 WINBOOL *enabled); 1595 1596 HRESULT (STDMETHODCALLTYPE *SetRealTimeMode)( 1597 IMFMediaEngineEx *This, 1598 WINBOOL enable); 1599 1600 HRESULT (STDMETHODCALLTYPE *SetCurrentTimeEx)( 1601 IMFMediaEngineEx *This, 1602 double seektime, 1603 MF_MEDIA_ENGINE_SEEK_MODE mode); 1604 1605 HRESULT (STDMETHODCALLTYPE *EnableTimeUpdateTimer)( 1606 IMFMediaEngineEx *This, 1607 WINBOOL enable); 1608 1609 END_INTERFACE 1610 } IMFMediaEngineExVtbl; 1611 1612 interface IMFMediaEngineEx { 1613 CONST_VTBL IMFMediaEngineExVtbl* lpVtbl; 1614 }; 1615 1616 #ifdef COBJMACROS 1617 #ifndef WIDL_C_INLINE_WRAPPERS 1618 /*** IUnknown methods ***/ 1619 #define IMFMediaEngineEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1620 #define IMFMediaEngineEx_AddRef(This) (This)->lpVtbl->AddRef(This) 1621 #define IMFMediaEngineEx_Release(This) (This)->lpVtbl->Release(This) 1622 /*** IMFMediaEngine methods ***/ 1623 #define IMFMediaEngineEx_GetError(This,error) (This)->lpVtbl->GetError(This,error) 1624 #define IMFMediaEngineEx_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error) 1625 #define IMFMediaEngineEx_SetSourceElements(This,elements) (This)->lpVtbl->SetSourceElements(This,elements) 1626 #define IMFMediaEngineEx_SetSource(This,url) (This)->lpVtbl->SetSource(This,url) 1627 #define IMFMediaEngineEx_GetCurrentSource(This,url) (This)->lpVtbl->GetCurrentSource(This,url) 1628 #define IMFMediaEngineEx_GetNetworkState(This) (This)->lpVtbl->GetNetworkState(This) 1629 #define IMFMediaEngineEx_GetPreload(This) (This)->lpVtbl->GetPreload(This) 1630 #define IMFMediaEngineEx_SetPreload(This,preload) (This)->lpVtbl->SetPreload(This,preload) 1631 #define IMFMediaEngineEx_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered) 1632 #define IMFMediaEngineEx_Load(This) (This)->lpVtbl->Load(This) 1633 #define IMFMediaEngineEx_CanPlayType(This,type,answer) (This)->lpVtbl->CanPlayType(This,type,answer) 1634 #define IMFMediaEngineEx_GetReadyState(This) (This)->lpVtbl->GetReadyState(This) 1635 #define IMFMediaEngineEx_IsSeeking(This) (This)->lpVtbl->IsSeeking(This) 1636 #define IMFMediaEngineEx_GetCurrentTime(This) (This)->lpVtbl->GetCurrentTime(This) 1637 #define IMFMediaEngineEx_SetCurrentTime(This,time) (This)->lpVtbl->SetCurrentTime(This,time) 1638 #define IMFMediaEngineEx_GetStartTime(This) (This)->lpVtbl->GetStartTime(This) 1639 #define IMFMediaEngineEx_GetDuration(This) (This)->lpVtbl->GetDuration(This) 1640 #define IMFMediaEngineEx_IsPaused(This) (This)->lpVtbl->IsPaused(This) 1641 #define IMFMediaEngineEx_GetDefaultPlaybackRate(This) (This)->lpVtbl->GetDefaultPlaybackRate(This) 1642 #define IMFMediaEngineEx_SetDefaultPlaybackRate(This,rate) (This)->lpVtbl->SetDefaultPlaybackRate(This,rate) 1643 #define IMFMediaEngineEx_GetPlaybackRate(This) (This)->lpVtbl->GetPlaybackRate(This) 1644 #define IMFMediaEngineEx_SetPlaybackRate(This,rate) (This)->lpVtbl->SetPlaybackRate(This,rate) 1645 #define IMFMediaEngineEx_GetPlayed(This,played) (This)->lpVtbl->GetPlayed(This,played) 1646 #define IMFMediaEngineEx_GetSeekable(This,seekable) (This)->lpVtbl->GetSeekable(This,seekable) 1647 #define IMFMediaEngineEx_IsEnded(This) (This)->lpVtbl->IsEnded(This) 1648 #define IMFMediaEngineEx_GetAutoPlay(This) (This)->lpVtbl->GetAutoPlay(This) 1649 #define IMFMediaEngineEx_SetAutoPlay(This,autoplay) (This)->lpVtbl->SetAutoPlay(This,autoplay) 1650 #define IMFMediaEngineEx_GetLoop(This) (This)->lpVtbl->GetLoop(This) 1651 #define IMFMediaEngineEx_SetLoop(This,loop) (This)->lpVtbl->SetLoop(This,loop) 1652 #define IMFMediaEngineEx_Play(This) (This)->lpVtbl->Play(This) 1653 #define IMFMediaEngineEx_Pause(This) (This)->lpVtbl->Pause(This) 1654 #define IMFMediaEngineEx_GetMuted(This) (This)->lpVtbl->GetMuted(This) 1655 #define IMFMediaEngineEx_SetMuted(This,muted) (This)->lpVtbl->SetMuted(This,muted) 1656 #define IMFMediaEngineEx_GetVolume(This) (This)->lpVtbl->GetVolume(This) 1657 #define IMFMediaEngineEx_SetVolume(This,volume) (This)->lpVtbl->SetVolume(This,volume) 1658 #define IMFMediaEngineEx_HasVideo(This) (This)->lpVtbl->HasVideo(This) 1659 #define IMFMediaEngineEx_HasAudio(This) (This)->lpVtbl->HasAudio(This) 1660 #define IMFMediaEngineEx_GetNativeVideoSize(This,cx,cy) (This)->lpVtbl->GetNativeVideoSize(This,cx,cy) 1661 #define IMFMediaEngineEx_GetVideoAspectRatio(This,cx,cy) (This)->lpVtbl->GetVideoAspectRatio(This,cx,cy) 1662 #define IMFMediaEngineEx_Shutdown(This) (This)->lpVtbl->Shutdown(This) 1663 #define IMFMediaEngineEx_TransferVideoFrame(This,surface,src,dst,color) (This)->lpVtbl->TransferVideoFrame(This,surface,src,dst,color) 1664 #define IMFMediaEngineEx_OnVideoStreamTick(This,time) (This)->lpVtbl->OnVideoStreamTick(This,time) 1665 /*** IMFMediaEngineEx methods ***/ 1666 #define IMFMediaEngineEx_SetSourceFromByteStream(This,bytestream,url) (This)->lpVtbl->SetSourceFromByteStream(This,bytestream,url) 1667 #define IMFMediaEngineEx_GetStatistics(This,stat_id,stat) (This)->lpVtbl->GetStatistics(This,stat_id,stat) 1668 #define IMFMediaEngineEx_UpdateVideoStream(This,src,dst,border_color) (This)->lpVtbl->UpdateVideoStream(This,src,dst,border_color) 1669 #define IMFMediaEngineEx_GetBalance(This) (This)->lpVtbl->GetBalance(This) 1670 #define IMFMediaEngineEx_SetBalance(This,balance) (This)->lpVtbl->SetBalance(This,balance) 1671 #define IMFMediaEngineEx_IsPlaybackRateSupported(This,rate) (This)->lpVtbl->IsPlaybackRateSupported(This,rate) 1672 #define IMFMediaEngineEx_FrameStep(This,forward) (This)->lpVtbl->FrameStep(This,forward) 1673 #define IMFMediaEngineEx_GetResourceCharacteristics(This,flags) (This)->lpVtbl->GetResourceCharacteristics(This,flags) 1674 #define IMFMediaEngineEx_GetPresentationAttribute(This,attribute,value) (This)->lpVtbl->GetPresentationAttribute(This,attribute,value) 1675 #define IMFMediaEngineEx_GetNumberOfStreams(This,stream_count) (This)->lpVtbl->GetNumberOfStreams(This,stream_count) 1676 #define IMFMediaEngineEx_GetStreamAttribute(This,stream_index,attribute,value) (This)->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value) 1677 #define IMFMediaEngineEx_GetStreamSelection(This,stream_index,enabled) (This)->lpVtbl->GetStreamSelection(This,stream_index,enabled) 1678 #define IMFMediaEngineEx_SetStreamSelection(This,stream_index,enabled) (This)->lpVtbl->SetStreamSelection(This,stream_index,enabled) 1679 #define IMFMediaEngineEx_ApplyStreamSelections(This) (This)->lpVtbl->ApplyStreamSelections(This) 1680 #define IMFMediaEngineEx_IsProtected(This,is_protected) (This)->lpVtbl->IsProtected(This,is_protected) 1681 #define IMFMediaEngineEx_InsertVideoEffect(This,effect,is_optional) (This)->lpVtbl->InsertVideoEffect(This,effect,is_optional) 1682 #define IMFMediaEngineEx_InsertAudioEffect(This,effect,is_optional) (This)->lpVtbl->InsertAudioEffect(This,effect,is_optional) 1683 #define IMFMediaEngineEx_RemoveAllEffects(This) (This)->lpVtbl->RemoveAllEffects(This) 1684 #define IMFMediaEngineEx_SetTimelineMarkerTimer(This,timeout) (This)->lpVtbl->SetTimelineMarkerTimer(This,timeout) 1685 #define IMFMediaEngineEx_GetTimelineMarkerTimer(This,timeout) (This)->lpVtbl->GetTimelineMarkerTimer(This,timeout) 1686 #define IMFMediaEngineEx_CancelTimelineMarkerTimer(This) (This)->lpVtbl->CancelTimelineMarkerTimer(This) 1687 #define IMFMediaEngineEx_IsStereo3D(This) (This)->lpVtbl->IsStereo3D(This) 1688 #define IMFMediaEngineEx_GetStereo3DFramePackingMode(This,mode) (This)->lpVtbl->GetStereo3DFramePackingMode(This,mode) 1689 #define IMFMediaEngineEx_SetStereo3DFramePackingMode(This,mode) (This)->lpVtbl->SetStereo3DFramePackingMode(This,mode) 1690 #define IMFMediaEngineEx_GetStereo3DRenderMode(This,output_type) (This)->lpVtbl->GetStereo3DRenderMode(This,output_type) 1691 #define IMFMediaEngineEx_SetStereo3DRenderMode(This,output_type) (This)->lpVtbl->SetStereo3DRenderMode(This,output_type) 1692 #define IMFMediaEngineEx_EnableWindowlessSwapchainMode(This,enable) (This)->lpVtbl->EnableWindowlessSwapchainMode(This,enable) 1693 #define IMFMediaEngineEx_GetVideoSwapchainHandle(This,swapchain) (This)->lpVtbl->GetVideoSwapchainHandle(This,swapchain) 1694 #define IMFMediaEngineEx_EnableHorizontalMirrorMode(This,enable) (This)->lpVtbl->EnableHorizontalMirrorMode(This,enable) 1695 #define IMFMediaEngineEx_GetAudioStreamCategory(This,category) (This)->lpVtbl->GetAudioStreamCategory(This,category) 1696 #define IMFMediaEngineEx_SetAudioStreamCategory(This,category) (This)->lpVtbl->SetAudioStreamCategory(This,category) 1697 #define IMFMediaEngineEx_GetAudioEndpointRole(This,role) (This)->lpVtbl->GetAudioEndpointRole(This,role) 1698 #define IMFMediaEngineEx_SetAudioEndpointRole(This,role) (This)->lpVtbl->SetAudioEndpointRole(This,role) 1699 #define IMFMediaEngineEx_GetRealTimeMode(This,enabled) (This)->lpVtbl->GetRealTimeMode(This,enabled) 1700 #define IMFMediaEngineEx_SetRealTimeMode(This,enable) (This)->lpVtbl->SetRealTimeMode(This,enable) 1701 #define IMFMediaEngineEx_SetCurrentTimeEx(This,seektime,mode) (This)->lpVtbl->SetCurrentTimeEx(This,seektime,mode) 1702 #define IMFMediaEngineEx_EnableTimeUpdateTimer(This,enable) (This)->lpVtbl->EnableTimeUpdateTimer(This,enable) 1703 #else 1704 /*** IUnknown methods ***/ 1705 static inline HRESULT IMFMediaEngineEx_QueryInterface(IMFMediaEngineEx* This,REFIID riid,void **ppvObject) { 1706 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1707 } 1708 static inline ULONG IMFMediaEngineEx_AddRef(IMFMediaEngineEx* This) { 1709 return This->lpVtbl->AddRef(This); 1710 } 1711 static inline ULONG IMFMediaEngineEx_Release(IMFMediaEngineEx* This) { 1712 return This->lpVtbl->Release(This); 1713 } 1714 /*** IMFMediaEngine methods ***/ 1715 static inline HRESULT IMFMediaEngineEx_GetError(IMFMediaEngineEx* This,IMFMediaError **error) { 1716 return This->lpVtbl->GetError(This,error); 1717 } 1718 static inline HRESULT IMFMediaEngineEx_SetErrorCode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_ERR error) { 1719 return This->lpVtbl->SetErrorCode(This,error); 1720 } 1721 static inline HRESULT IMFMediaEngineEx_SetSourceElements(IMFMediaEngineEx* This,IMFMediaEngineSrcElements *elements) { 1722 return This->lpVtbl->SetSourceElements(This,elements); 1723 } 1724 static inline HRESULT IMFMediaEngineEx_SetSource(IMFMediaEngineEx* This,BSTR url) { 1725 return This->lpVtbl->SetSource(This,url); 1726 } 1727 static inline HRESULT IMFMediaEngineEx_GetCurrentSource(IMFMediaEngineEx* This,BSTR *url) { 1728 return This->lpVtbl->GetCurrentSource(This,url); 1729 } 1730 static inline USHORT IMFMediaEngineEx_GetNetworkState(IMFMediaEngineEx* This) { 1731 return This->lpVtbl->GetNetworkState(This); 1732 } 1733 static inline MF_MEDIA_ENGINE_PRELOAD IMFMediaEngineEx_GetPreload(IMFMediaEngineEx* This) { 1734 return This->lpVtbl->GetPreload(This); 1735 } 1736 static inline HRESULT IMFMediaEngineEx_SetPreload(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_PRELOAD preload) { 1737 return This->lpVtbl->SetPreload(This,preload); 1738 } 1739 static inline HRESULT IMFMediaEngineEx_GetBuffered(IMFMediaEngineEx* This,IMFMediaTimeRange **buffered) { 1740 return This->lpVtbl->GetBuffered(This,buffered); 1741 } 1742 static inline HRESULT IMFMediaEngineEx_Load(IMFMediaEngineEx* This) { 1743 return This->lpVtbl->Load(This); 1744 } 1745 static inline HRESULT IMFMediaEngineEx_CanPlayType(IMFMediaEngineEx* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) { 1746 return This->lpVtbl->CanPlayType(This,type,answer); 1747 } 1748 static inline USHORT IMFMediaEngineEx_GetReadyState(IMFMediaEngineEx* This) { 1749 return This->lpVtbl->GetReadyState(This); 1750 } 1751 static inline WINBOOL IMFMediaEngineEx_IsSeeking(IMFMediaEngineEx* This) { 1752 return This->lpVtbl->IsSeeking(This); 1753 } 1754 static inline double IMFMediaEngineEx_GetCurrentTime(IMFMediaEngineEx* This) { 1755 return This->lpVtbl->GetCurrentTime(This); 1756 } 1757 static inline HRESULT IMFMediaEngineEx_SetCurrentTime(IMFMediaEngineEx* This,double time) { 1758 return This->lpVtbl->SetCurrentTime(This,time); 1759 } 1760 static inline double IMFMediaEngineEx_GetStartTime(IMFMediaEngineEx* This) { 1761 return This->lpVtbl->GetStartTime(This); 1762 } 1763 static inline double IMFMediaEngineEx_GetDuration(IMFMediaEngineEx* This) { 1764 return This->lpVtbl->GetDuration(This); 1765 } 1766 static inline WINBOOL IMFMediaEngineEx_IsPaused(IMFMediaEngineEx* This) { 1767 return This->lpVtbl->IsPaused(This); 1768 } 1769 static inline double IMFMediaEngineEx_GetDefaultPlaybackRate(IMFMediaEngineEx* This) { 1770 return This->lpVtbl->GetDefaultPlaybackRate(This); 1771 } 1772 static inline HRESULT IMFMediaEngineEx_SetDefaultPlaybackRate(IMFMediaEngineEx* This,double rate) { 1773 return This->lpVtbl->SetDefaultPlaybackRate(This,rate); 1774 } 1775 static inline double IMFMediaEngineEx_GetPlaybackRate(IMFMediaEngineEx* This) { 1776 return This->lpVtbl->GetPlaybackRate(This); 1777 } 1778 static inline HRESULT IMFMediaEngineEx_SetPlaybackRate(IMFMediaEngineEx* This,double rate) { 1779 return This->lpVtbl->SetPlaybackRate(This,rate); 1780 } 1781 static inline HRESULT IMFMediaEngineEx_GetPlayed(IMFMediaEngineEx* This,IMFMediaTimeRange **played) { 1782 return This->lpVtbl->GetPlayed(This,played); 1783 } 1784 static inline HRESULT IMFMediaEngineEx_GetSeekable(IMFMediaEngineEx* This,IMFMediaTimeRange **seekable) { 1785 return This->lpVtbl->GetSeekable(This,seekable); 1786 } 1787 static inline WINBOOL IMFMediaEngineEx_IsEnded(IMFMediaEngineEx* This) { 1788 return This->lpVtbl->IsEnded(This); 1789 } 1790 static inline WINBOOL IMFMediaEngineEx_GetAutoPlay(IMFMediaEngineEx* This) { 1791 return This->lpVtbl->GetAutoPlay(This); 1792 } 1793 static inline HRESULT IMFMediaEngineEx_SetAutoPlay(IMFMediaEngineEx* This,WINBOOL autoplay) { 1794 return This->lpVtbl->SetAutoPlay(This,autoplay); 1795 } 1796 static inline WINBOOL IMFMediaEngineEx_GetLoop(IMFMediaEngineEx* This) { 1797 return This->lpVtbl->GetLoop(This); 1798 } 1799 static inline HRESULT IMFMediaEngineEx_SetLoop(IMFMediaEngineEx* This,WINBOOL loop) { 1800 return This->lpVtbl->SetLoop(This,loop); 1801 } 1802 static inline HRESULT IMFMediaEngineEx_Play(IMFMediaEngineEx* This) { 1803 return This->lpVtbl->Play(This); 1804 } 1805 static inline HRESULT IMFMediaEngineEx_Pause(IMFMediaEngineEx* This) { 1806 return This->lpVtbl->Pause(This); 1807 } 1808 static inline WINBOOL IMFMediaEngineEx_GetMuted(IMFMediaEngineEx* This) { 1809 return This->lpVtbl->GetMuted(This); 1810 } 1811 static inline HRESULT IMFMediaEngineEx_SetMuted(IMFMediaEngineEx* This,WINBOOL muted) { 1812 return This->lpVtbl->SetMuted(This,muted); 1813 } 1814 static inline double IMFMediaEngineEx_GetVolume(IMFMediaEngineEx* This) { 1815 return This->lpVtbl->GetVolume(This); 1816 } 1817 static inline HRESULT IMFMediaEngineEx_SetVolume(IMFMediaEngineEx* This,double volume) { 1818 return This->lpVtbl->SetVolume(This,volume); 1819 } 1820 static inline WINBOOL IMFMediaEngineEx_HasVideo(IMFMediaEngineEx* This) { 1821 return This->lpVtbl->HasVideo(This); 1822 } 1823 static inline WINBOOL IMFMediaEngineEx_HasAudio(IMFMediaEngineEx* This) { 1824 return This->lpVtbl->HasAudio(This); 1825 } 1826 static inline HRESULT IMFMediaEngineEx_GetNativeVideoSize(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) { 1827 return This->lpVtbl->GetNativeVideoSize(This,cx,cy); 1828 } 1829 static inline HRESULT IMFMediaEngineEx_GetVideoAspectRatio(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) { 1830 return This->lpVtbl->GetVideoAspectRatio(This,cx,cy); 1831 } 1832 static inline HRESULT IMFMediaEngineEx_Shutdown(IMFMediaEngineEx* This) { 1833 return This->lpVtbl->Shutdown(This); 1834 } 1835 static inline HRESULT IMFMediaEngineEx_TransferVideoFrame(IMFMediaEngineEx* This,IUnknown *surface,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *color) { 1836 return This->lpVtbl->TransferVideoFrame(This,surface,src,dst,color); 1837 } 1838 static inline HRESULT IMFMediaEngineEx_OnVideoStreamTick(IMFMediaEngineEx* This,LONGLONG *time) { 1839 return This->lpVtbl->OnVideoStreamTick(This,time); 1840 } 1841 /*** IMFMediaEngineEx methods ***/ 1842 static inline HRESULT IMFMediaEngineEx_SetSourceFromByteStream(IMFMediaEngineEx* This,IMFByteStream *bytestream,BSTR url) { 1843 return This->lpVtbl->SetSourceFromByteStream(This,bytestream,url); 1844 } 1845 static inline HRESULT IMFMediaEngineEx_GetStatistics(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_STATISTIC stat_id,PROPVARIANT *stat) { 1846 return This->lpVtbl->GetStatistics(This,stat_id,stat); 1847 } 1848 static inline HRESULT IMFMediaEngineEx_UpdateVideoStream(IMFMediaEngineEx* This,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *border_color) { 1849 return This->lpVtbl->UpdateVideoStream(This,src,dst,border_color); 1850 } 1851 static inline double IMFMediaEngineEx_GetBalance(IMFMediaEngineEx* This) { 1852 return This->lpVtbl->GetBalance(This); 1853 } 1854 static inline HRESULT IMFMediaEngineEx_SetBalance(IMFMediaEngineEx* This,double balance) { 1855 return This->lpVtbl->SetBalance(This,balance); 1856 } 1857 static inline WINBOOL IMFMediaEngineEx_IsPlaybackRateSupported(IMFMediaEngineEx* This,double rate) { 1858 return This->lpVtbl->IsPlaybackRateSupported(This,rate); 1859 } 1860 static inline HRESULT IMFMediaEngineEx_FrameStep(IMFMediaEngineEx* This,WINBOOL forward) { 1861 return This->lpVtbl->FrameStep(This,forward); 1862 } 1863 static inline HRESULT IMFMediaEngineEx_GetResourceCharacteristics(IMFMediaEngineEx* This,DWORD *flags) { 1864 return This->lpVtbl->GetResourceCharacteristics(This,flags); 1865 } 1866 static inline HRESULT IMFMediaEngineEx_GetPresentationAttribute(IMFMediaEngineEx* This,REFGUID attribute,PROPVARIANT *value) { 1867 return This->lpVtbl->GetPresentationAttribute(This,attribute,value); 1868 } 1869 static inline HRESULT IMFMediaEngineEx_GetNumberOfStreams(IMFMediaEngineEx* This,DWORD *stream_count) { 1870 return This->lpVtbl->GetNumberOfStreams(This,stream_count); 1871 } 1872 static inline HRESULT IMFMediaEngineEx_GetStreamAttribute(IMFMediaEngineEx* This,DWORD stream_index,REFGUID attribute,PROPVARIANT *value) { 1873 return This->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value); 1874 } 1875 static inline HRESULT IMFMediaEngineEx_GetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL *enabled) { 1876 return This->lpVtbl->GetStreamSelection(This,stream_index,enabled); 1877 } 1878 static inline HRESULT IMFMediaEngineEx_SetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL enabled) { 1879 return This->lpVtbl->SetStreamSelection(This,stream_index,enabled); 1880 } 1881 static inline HRESULT IMFMediaEngineEx_ApplyStreamSelections(IMFMediaEngineEx* This) { 1882 return This->lpVtbl->ApplyStreamSelections(This); 1883 } 1884 static inline HRESULT IMFMediaEngineEx_IsProtected(IMFMediaEngineEx* This,WINBOOL *is_protected) { 1885 return This->lpVtbl->IsProtected(This,is_protected); 1886 } 1887 static inline HRESULT IMFMediaEngineEx_InsertVideoEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) { 1888 return This->lpVtbl->InsertVideoEffect(This,effect,is_optional); 1889 } 1890 static inline HRESULT IMFMediaEngineEx_InsertAudioEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) { 1891 return This->lpVtbl->InsertAudioEffect(This,effect,is_optional); 1892 } 1893 static inline HRESULT IMFMediaEngineEx_RemoveAllEffects(IMFMediaEngineEx* This) { 1894 return This->lpVtbl->RemoveAllEffects(This); 1895 } 1896 static inline HRESULT IMFMediaEngineEx_SetTimelineMarkerTimer(IMFMediaEngineEx* This,double timeout) { 1897 return This->lpVtbl->SetTimelineMarkerTimer(This,timeout); 1898 } 1899 static inline HRESULT IMFMediaEngineEx_GetTimelineMarkerTimer(IMFMediaEngineEx* This,double *timeout) { 1900 return This->lpVtbl->GetTimelineMarkerTimer(This,timeout); 1901 } 1902 static inline HRESULT IMFMediaEngineEx_CancelTimelineMarkerTimer(IMFMediaEngineEx* This) { 1903 return This->lpVtbl->CancelTimelineMarkerTimer(This); 1904 } 1905 static inline WINBOOL IMFMediaEngineEx_IsStereo3D(IMFMediaEngineEx* This) { 1906 return This->lpVtbl->IsStereo3D(This); 1907 } 1908 static inline HRESULT IMFMediaEngineEx_GetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) { 1909 return This->lpVtbl->GetStereo3DFramePackingMode(This,mode); 1910 } 1911 static inline HRESULT IMFMediaEngineEx_SetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) { 1912 return This->lpVtbl->SetStereo3DFramePackingMode(This,mode); 1913 } 1914 static inline HRESULT IMFMediaEngineEx_GetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType *output_type) { 1915 return This->lpVtbl->GetStereo3DRenderMode(This,output_type); 1916 } 1917 static inline HRESULT IMFMediaEngineEx_SetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType output_type) { 1918 return This->lpVtbl->SetStereo3DRenderMode(This,output_type); 1919 } 1920 static inline HRESULT IMFMediaEngineEx_EnableWindowlessSwapchainMode(IMFMediaEngineEx* This,WINBOOL enable) { 1921 return This->lpVtbl->EnableWindowlessSwapchainMode(This,enable); 1922 } 1923 static inline HRESULT IMFMediaEngineEx_GetVideoSwapchainHandle(IMFMediaEngineEx* This,HANDLE *swapchain) { 1924 return This->lpVtbl->GetVideoSwapchainHandle(This,swapchain); 1925 } 1926 static inline HRESULT IMFMediaEngineEx_EnableHorizontalMirrorMode(IMFMediaEngineEx* This,WINBOOL enable) { 1927 return This->lpVtbl->EnableHorizontalMirrorMode(This,enable); 1928 } 1929 static inline HRESULT IMFMediaEngineEx_GetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 *category) { 1930 return This->lpVtbl->GetAudioStreamCategory(This,category); 1931 } 1932 static inline HRESULT IMFMediaEngineEx_SetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 category) { 1933 return This->lpVtbl->SetAudioStreamCategory(This,category); 1934 } 1935 static inline HRESULT IMFMediaEngineEx_GetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 *role) { 1936 return This->lpVtbl->GetAudioEndpointRole(This,role); 1937 } 1938 static inline HRESULT IMFMediaEngineEx_SetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 role) { 1939 return This->lpVtbl->SetAudioEndpointRole(This,role); 1940 } 1941 static inline HRESULT IMFMediaEngineEx_GetRealTimeMode(IMFMediaEngineEx* This,WINBOOL *enabled) { 1942 return This->lpVtbl->GetRealTimeMode(This,enabled); 1943 } 1944 static inline HRESULT IMFMediaEngineEx_SetRealTimeMode(IMFMediaEngineEx* This,WINBOOL enable) { 1945 return This->lpVtbl->SetRealTimeMode(This,enable); 1946 } 1947 static inline HRESULT IMFMediaEngineEx_SetCurrentTimeEx(IMFMediaEngineEx* This,double seektime,MF_MEDIA_ENGINE_SEEK_MODE mode) { 1948 return This->lpVtbl->SetCurrentTimeEx(This,seektime,mode); 1949 } 1950 static inline HRESULT IMFMediaEngineEx_EnableTimeUpdateTimer(IMFMediaEngineEx* This,WINBOOL enable) { 1951 return This->lpVtbl->EnableTimeUpdateTimer(This,enable); 1952 } 1953 #endif 1954 #endif 1955 1956 #endif 1957 1958 1959 #endif /* __IMFMediaEngineEx_INTERFACE_DEFINED__ */ 1960 1961 /***************************************************************************** 1962 * IMFMediaEngineClassFactory interface 1963 */ 1964 #ifndef __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ 1965 #define __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ 1966 1967 DEFINE_GUID(IID_IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93); 1968 #if defined(__cplusplus) && !defined(CINTERFACE) 1969 MIDL_INTERFACE("4d645ace-26aa-4688-9be1-df3516990b93") 1970 IMFMediaEngineClassFactory : public IUnknown 1971 { 1972 virtual HRESULT STDMETHODCALLTYPE CreateInstance( 1973 DWORD flags, 1974 IMFAttributes *attributes, 1975 IMFMediaEngine **engine) = 0; 1976 1977 virtual HRESULT STDMETHODCALLTYPE CreateTimeRange( 1978 IMFMediaTimeRange **range) = 0; 1979 1980 virtual HRESULT STDMETHODCALLTYPE CreateError( 1981 IMFMediaError **error) = 0; 1982 1983 }; 1984 #ifdef __CRT_UUID_DECL 1985 __CRT_UUID_DECL(IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93) 1986 #endif 1987 #else 1988 typedef struct IMFMediaEngineClassFactoryVtbl { 1989 BEGIN_INTERFACE 1990 1991 /*** IUnknown methods ***/ 1992 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1993 IMFMediaEngineClassFactory *This, 1994 REFIID riid, 1995 void **ppvObject); 1996 1997 ULONG (STDMETHODCALLTYPE *AddRef)( 1998 IMFMediaEngineClassFactory *This); 1999 2000 ULONG (STDMETHODCALLTYPE *Release)( 2001 IMFMediaEngineClassFactory *This); 2002 2003 /*** IMFMediaEngineClassFactory methods ***/ 2004 HRESULT (STDMETHODCALLTYPE *CreateInstance)( 2005 IMFMediaEngineClassFactory *This, 2006 DWORD flags, 2007 IMFAttributes *attributes, 2008 IMFMediaEngine **engine); 2009 2010 HRESULT (STDMETHODCALLTYPE *CreateTimeRange)( 2011 IMFMediaEngineClassFactory *This, 2012 IMFMediaTimeRange **range); 2013 2014 HRESULT (STDMETHODCALLTYPE *CreateError)( 2015 IMFMediaEngineClassFactory *This, 2016 IMFMediaError **error); 2017 2018 END_INTERFACE 2019 } IMFMediaEngineClassFactoryVtbl; 2020 2021 interface IMFMediaEngineClassFactory { 2022 CONST_VTBL IMFMediaEngineClassFactoryVtbl* lpVtbl; 2023 }; 2024 2025 #ifdef COBJMACROS 2026 #ifndef WIDL_C_INLINE_WRAPPERS 2027 /*** IUnknown methods ***/ 2028 #define IMFMediaEngineClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2029 #define IMFMediaEngineClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This) 2030 #define IMFMediaEngineClassFactory_Release(This) (This)->lpVtbl->Release(This) 2031 /*** IMFMediaEngineClassFactory methods ***/ 2032 #define IMFMediaEngineClassFactory_CreateInstance(This,flags,attributes,engine) (This)->lpVtbl->CreateInstance(This,flags,attributes,engine) 2033 #define IMFMediaEngineClassFactory_CreateTimeRange(This,range) (This)->lpVtbl->CreateTimeRange(This,range) 2034 #define IMFMediaEngineClassFactory_CreateError(This,error) (This)->lpVtbl->CreateError(This,error) 2035 #else 2036 /*** IUnknown methods ***/ 2037 static inline HRESULT IMFMediaEngineClassFactory_QueryInterface(IMFMediaEngineClassFactory* This,REFIID riid,void **ppvObject) { 2038 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2039 } 2040 static inline ULONG IMFMediaEngineClassFactory_AddRef(IMFMediaEngineClassFactory* This) { 2041 return This->lpVtbl->AddRef(This); 2042 } 2043 static inline ULONG IMFMediaEngineClassFactory_Release(IMFMediaEngineClassFactory* This) { 2044 return This->lpVtbl->Release(This); 2045 } 2046 /*** IMFMediaEngineClassFactory methods ***/ 2047 static inline HRESULT IMFMediaEngineClassFactory_CreateInstance(IMFMediaEngineClassFactory* This,DWORD flags,IMFAttributes *attributes,IMFMediaEngine **engine) { 2048 return This->lpVtbl->CreateInstance(This,flags,attributes,engine); 2049 } 2050 static inline HRESULT IMFMediaEngineClassFactory_CreateTimeRange(IMFMediaEngineClassFactory* This,IMFMediaTimeRange **range) { 2051 return This->lpVtbl->CreateTimeRange(This,range); 2052 } 2053 static inline HRESULT IMFMediaEngineClassFactory_CreateError(IMFMediaEngineClassFactory* This,IMFMediaError **error) { 2054 return This->lpVtbl->CreateError(This,error); 2055 } 2056 #endif 2057 #endif 2058 2059 #endif 2060 2061 2062 #endif /* __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ */ 2063 2064 /***************************************************************************** 2065 * IMFMediaEngineNotify interface 2066 */ 2067 #ifndef __IMFMediaEngineNotify_INTERFACE_DEFINED__ 2068 #define __IMFMediaEngineNotify_INTERFACE_DEFINED__ 2069 2070 DEFINE_GUID(IID_IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5); 2071 #if defined(__cplusplus) && !defined(CINTERFACE) 2072 MIDL_INTERFACE("fee7c112-e776-42b5-9bbf-0048524e2bd5") 2073 IMFMediaEngineNotify : public IUnknown 2074 { 2075 virtual HRESULT STDMETHODCALLTYPE EventNotify( 2076 DWORD event, 2077 DWORD_PTR param1, 2078 DWORD param2) = 0; 2079 2080 }; 2081 #ifdef __CRT_UUID_DECL 2082 __CRT_UUID_DECL(IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5) 2083 #endif 2084 #else 2085 typedef struct IMFMediaEngineNotifyVtbl { 2086 BEGIN_INTERFACE 2087 2088 /*** IUnknown methods ***/ 2089 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2090 IMFMediaEngineNotify *This, 2091 REFIID riid, 2092 void **ppvObject); 2093 2094 ULONG (STDMETHODCALLTYPE *AddRef)( 2095 IMFMediaEngineNotify *This); 2096 2097 ULONG (STDMETHODCALLTYPE *Release)( 2098 IMFMediaEngineNotify *This); 2099 2100 /*** IMFMediaEngineNotify methods ***/ 2101 HRESULT (STDMETHODCALLTYPE *EventNotify)( 2102 IMFMediaEngineNotify *This, 2103 DWORD event, 2104 DWORD_PTR param1, 2105 DWORD param2); 2106 2107 END_INTERFACE 2108 } IMFMediaEngineNotifyVtbl; 2109 2110 interface IMFMediaEngineNotify { 2111 CONST_VTBL IMFMediaEngineNotifyVtbl* lpVtbl; 2112 }; 2113 2114 #ifdef COBJMACROS 2115 #ifndef WIDL_C_INLINE_WRAPPERS 2116 /*** IUnknown methods ***/ 2117 #define IMFMediaEngineNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2118 #define IMFMediaEngineNotify_AddRef(This) (This)->lpVtbl->AddRef(This) 2119 #define IMFMediaEngineNotify_Release(This) (This)->lpVtbl->Release(This) 2120 /*** IMFMediaEngineNotify methods ***/ 2121 #define IMFMediaEngineNotify_EventNotify(This,event,param1,param2) (This)->lpVtbl->EventNotify(This,event,param1,param2) 2122 #else 2123 /*** IUnknown methods ***/ 2124 static inline HRESULT IMFMediaEngineNotify_QueryInterface(IMFMediaEngineNotify* This,REFIID riid,void **ppvObject) { 2125 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2126 } 2127 static inline ULONG IMFMediaEngineNotify_AddRef(IMFMediaEngineNotify* This) { 2128 return This->lpVtbl->AddRef(This); 2129 } 2130 static inline ULONG IMFMediaEngineNotify_Release(IMFMediaEngineNotify* This) { 2131 return This->lpVtbl->Release(This); 2132 } 2133 /*** IMFMediaEngineNotify methods ***/ 2134 static inline HRESULT IMFMediaEngineNotify_EventNotify(IMFMediaEngineNotify* This,DWORD event,DWORD_PTR param1,DWORD param2) { 2135 return This->lpVtbl->EventNotify(This,event,param1,param2); 2136 } 2137 #endif 2138 #endif 2139 2140 #endif 2141 2142 2143 #endif /* __IMFMediaEngineNotify_INTERFACE_DEFINED__ */ 2144 2145 /***************************************************************************** 2146 * IMFMediaEngineAudioEndpointId interface 2147 */ 2148 #ifndef __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ 2149 #define __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ 2150 2151 DEFINE_GUID(IID_IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2); 2152 #if defined(__cplusplus) && !defined(CINTERFACE) 2153 MIDL_INTERFACE("7a3bac98-0e76-49fb-8c20-8a86fd98eaf2") 2154 IMFMediaEngineAudioEndpointId : public IUnknown 2155 { 2156 virtual HRESULT STDMETHODCALLTYPE SetAudioEndpointId( 2157 LPCWSTR id) = 0; 2158 2159 virtual HRESULT STDMETHODCALLTYPE GetAudioEndpointId( 2160 LPWSTR *id) = 0; 2161 2162 }; 2163 #ifdef __CRT_UUID_DECL 2164 __CRT_UUID_DECL(IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2) 2165 #endif 2166 #else 2167 typedef struct IMFMediaEngineAudioEndpointIdVtbl { 2168 BEGIN_INTERFACE 2169 2170 /*** IUnknown methods ***/ 2171 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2172 IMFMediaEngineAudioEndpointId *This, 2173 REFIID riid, 2174 void **ppvObject); 2175 2176 ULONG (STDMETHODCALLTYPE *AddRef)( 2177 IMFMediaEngineAudioEndpointId *This); 2178 2179 ULONG (STDMETHODCALLTYPE *Release)( 2180 IMFMediaEngineAudioEndpointId *This); 2181 2182 /*** IMFMediaEngineAudioEndpointId methods ***/ 2183 HRESULT (STDMETHODCALLTYPE *SetAudioEndpointId)( 2184 IMFMediaEngineAudioEndpointId *This, 2185 LPCWSTR id); 2186 2187 HRESULT (STDMETHODCALLTYPE *GetAudioEndpointId)( 2188 IMFMediaEngineAudioEndpointId *This, 2189 LPWSTR *id); 2190 2191 END_INTERFACE 2192 } IMFMediaEngineAudioEndpointIdVtbl; 2193 2194 interface IMFMediaEngineAudioEndpointId { 2195 CONST_VTBL IMFMediaEngineAudioEndpointIdVtbl* lpVtbl; 2196 }; 2197 2198 #ifdef COBJMACROS 2199 #ifndef WIDL_C_INLINE_WRAPPERS 2200 /*** IUnknown methods ***/ 2201 #define IMFMediaEngineAudioEndpointId_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2202 #define IMFMediaEngineAudioEndpointId_AddRef(This) (This)->lpVtbl->AddRef(This) 2203 #define IMFMediaEngineAudioEndpointId_Release(This) (This)->lpVtbl->Release(This) 2204 /*** IMFMediaEngineAudioEndpointId methods ***/ 2205 #define IMFMediaEngineAudioEndpointId_SetAudioEndpointId(This,id) (This)->lpVtbl->SetAudioEndpointId(This,id) 2206 #define IMFMediaEngineAudioEndpointId_GetAudioEndpointId(This,id) (This)->lpVtbl->GetAudioEndpointId(This,id) 2207 #else 2208 /*** IUnknown methods ***/ 2209 static inline HRESULT IMFMediaEngineAudioEndpointId_QueryInterface(IMFMediaEngineAudioEndpointId* This,REFIID riid,void **ppvObject) { 2210 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2211 } 2212 static inline ULONG IMFMediaEngineAudioEndpointId_AddRef(IMFMediaEngineAudioEndpointId* This) { 2213 return This->lpVtbl->AddRef(This); 2214 } 2215 static inline ULONG IMFMediaEngineAudioEndpointId_Release(IMFMediaEngineAudioEndpointId* This) { 2216 return This->lpVtbl->Release(This); 2217 } 2218 /*** IMFMediaEngineAudioEndpointId methods ***/ 2219 static inline HRESULT IMFMediaEngineAudioEndpointId_SetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPCWSTR id) { 2220 return This->lpVtbl->SetAudioEndpointId(This,id); 2221 } 2222 static inline HRESULT IMFMediaEngineAudioEndpointId_GetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPWSTR *id) { 2223 return This->lpVtbl->GetAudioEndpointId(This,id); 2224 } 2225 #endif 2226 #endif 2227 2228 #endif 2229 2230 2231 #endif /* __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ */ 2232 2233 /***************************************************************************** 2234 * IMFMediaEngineExtension interface 2235 */ 2236 #ifndef __IMFMediaEngineExtension_INTERFACE_DEFINED__ 2237 #define __IMFMediaEngineExtension_INTERFACE_DEFINED__ 2238 2239 DEFINE_GUID(IID_IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e); 2240 #if defined(__cplusplus) && !defined(CINTERFACE) 2241 MIDL_INTERFACE("2f69d622-20b5-41e9-afdf-89ced1dda04e") 2242 IMFMediaEngineExtension : public IUnknown 2243 { 2244 virtual HRESULT STDMETHODCALLTYPE CanPlayType( 2245 WINBOOL audio_only, 2246 BSTR mime_type, 2247 MF_MEDIA_ENGINE_CANPLAY *answer) = 0; 2248 2249 virtual HRESULT STDMETHODCALLTYPE BeginCreateObject( 2250 BSTR url, 2251 IMFByteStream *bytestream, 2252 MF_OBJECT_TYPE type, 2253 IUnknown **cancel_cookie, 2254 IMFAsyncCallback *callback, 2255 IUnknown *state) = 0; 2256 2257 virtual HRESULT STDMETHODCALLTYPE CancelObjectCreation( 2258 IUnknown *cancel_cookie) = 0; 2259 2260 virtual HRESULT STDMETHODCALLTYPE EndCreateObject( 2261 IMFAsyncResult *result, 2262 IUnknown **object) = 0; 2263 2264 }; 2265 #ifdef __CRT_UUID_DECL 2266 __CRT_UUID_DECL(IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e) 2267 #endif 2268 #else 2269 typedef struct IMFMediaEngineExtensionVtbl { 2270 BEGIN_INTERFACE 2271 2272 /*** IUnknown methods ***/ 2273 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2274 IMFMediaEngineExtension *This, 2275 REFIID riid, 2276 void **ppvObject); 2277 2278 ULONG (STDMETHODCALLTYPE *AddRef)( 2279 IMFMediaEngineExtension *This); 2280 2281 ULONG (STDMETHODCALLTYPE *Release)( 2282 IMFMediaEngineExtension *This); 2283 2284 /*** IMFMediaEngineExtension methods ***/ 2285 HRESULT (STDMETHODCALLTYPE *CanPlayType)( 2286 IMFMediaEngineExtension *This, 2287 WINBOOL audio_only, 2288 BSTR mime_type, 2289 MF_MEDIA_ENGINE_CANPLAY *answer); 2290 2291 HRESULT (STDMETHODCALLTYPE *BeginCreateObject)( 2292 IMFMediaEngineExtension *This, 2293 BSTR url, 2294 IMFByteStream *bytestream, 2295 MF_OBJECT_TYPE type, 2296 IUnknown **cancel_cookie, 2297 IMFAsyncCallback *callback, 2298 IUnknown *state); 2299 2300 HRESULT (STDMETHODCALLTYPE *CancelObjectCreation)( 2301 IMFMediaEngineExtension *This, 2302 IUnknown *cancel_cookie); 2303 2304 HRESULT (STDMETHODCALLTYPE *EndCreateObject)( 2305 IMFMediaEngineExtension *This, 2306 IMFAsyncResult *result, 2307 IUnknown **object); 2308 2309 END_INTERFACE 2310 } IMFMediaEngineExtensionVtbl; 2311 2312 interface IMFMediaEngineExtension { 2313 CONST_VTBL IMFMediaEngineExtensionVtbl* lpVtbl; 2314 }; 2315 2316 #ifdef COBJMACROS 2317 #ifndef WIDL_C_INLINE_WRAPPERS 2318 /*** IUnknown methods ***/ 2319 #define IMFMediaEngineExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2320 #define IMFMediaEngineExtension_AddRef(This) (This)->lpVtbl->AddRef(This) 2321 #define IMFMediaEngineExtension_Release(This) (This)->lpVtbl->Release(This) 2322 /*** IMFMediaEngineExtension methods ***/ 2323 #define IMFMediaEngineExtension_CanPlayType(This,audio_only,mime_type,answer) (This)->lpVtbl->CanPlayType(This,audio_only,mime_type,answer) 2324 #define IMFMediaEngineExtension_BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state) (This)->lpVtbl->BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state) 2325 #define IMFMediaEngineExtension_CancelObjectCreation(This,cancel_cookie) (This)->lpVtbl->CancelObjectCreation(This,cancel_cookie) 2326 #define IMFMediaEngineExtension_EndCreateObject(This,result,object) (This)->lpVtbl->EndCreateObject(This,result,object) 2327 #else 2328 /*** IUnknown methods ***/ 2329 static inline HRESULT IMFMediaEngineExtension_QueryInterface(IMFMediaEngineExtension* This,REFIID riid,void **ppvObject) { 2330 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2331 } 2332 static inline ULONG IMFMediaEngineExtension_AddRef(IMFMediaEngineExtension* This) { 2333 return This->lpVtbl->AddRef(This); 2334 } 2335 static inline ULONG IMFMediaEngineExtension_Release(IMFMediaEngineExtension* This) { 2336 return This->lpVtbl->Release(This); 2337 } 2338 /*** IMFMediaEngineExtension methods ***/ 2339 static inline HRESULT IMFMediaEngineExtension_CanPlayType(IMFMediaEngineExtension* This,WINBOOL audio_only,BSTR mime_type,MF_MEDIA_ENGINE_CANPLAY *answer) { 2340 return This->lpVtbl->CanPlayType(This,audio_only,mime_type,answer); 2341 } 2342 static inline HRESULT IMFMediaEngineExtension_BeginCreateObject(IMFMediaEngineExtension* This,BSTR url,IMFByteStream *bytestream,MF_OBJECT_TYPE type,IUnknown **cancel_cookie,IMFAsyncCallback *callback,IUnknown *state) { 2343 return This->lpVtbl->BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state); 2344 } 2345 static inline HRESULT IMFMediaEngineExtension_CancelObjectCreation(IMFMediaEngineExtension* This,IUnknown *cancel_cookie) { 2346 return This->lpVtbl->CancelObjectCreation(This,cancel_cookie); 2347 } 2348 static inline HRESULT IMFMediaEngineExtension_EndCreateObject(IMFMediaEngineExtension* This,IMFAsyncResult *result,IUnknown **object) { 2349 return This->lpVtbl->EndCreateObject(This,result,object); 2350 } 2351 #endif 2352 #endif 2353 2354 #endif 2355 2356 2357 #endif /* __IMFMediaEngineExtension_INTERFACE_DEFINED__ */ 2358 2359 /* Begin additional prototypes for all interfaces */ 2360 2361 2362 /* End additional prototypes */ 2363 2364 #ifdef __cplusplus 2365 } 2366 #endif 2367 2368 #endif /* __mfmediaengine_h__ */