master
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__
23typedef interface IMFMediaError IMFMediaError;
24#ifdef __cplusplus
25interface IMFMediaError;
26#endif /* __cplusplus */
27#endif
28
29#ifndef __IMFMediaEngineSrcElements_FWD_DEFINED__
30#define __IMFMediaEngineSrcElements_FWD_DEFINED__
31typedef interface IMFMediaEngineSrcElements IMFMediaEngineSrcElements;
32#ifdef __cplusplus
33interface IMFMediaEngineSrcElements;
34#endif /* __cplusplus */
35#endif
36
37#ifndef __IMFMediaTimeRange_FWD_DEFINED__
38#define __IMFMediaTimeRange_FWD_DEFINED__
39typedef interface IMFMediaTimeRange IMFMediaTimeRange;
40#ifdef __cplusplus
41interface IMFMediaTimeRange;
42#endif /* __cplusplus */
43#endif
44
45#ifndef __IMFMediaEngine_FWD_DEFINED__
46#define __IMFMediaEngine_FWD_DEFINED__
47typedef interface IMFMediaEngine IMFMediaEngine;
48#ifdef __cplusplus
49interface IMFMediaEngine;
50#endif /* __cplusplus */
51#endif
52
53#ifndef __IMFMediaEngineEx_FWD_DEFINED__
54#define __IMFMediaEngineEx_FWD_DEFINED__
55typedef interface IMFMediaEngineEx IMFMediaEngineEx;
56#ifdef __cplusplus
57interface IMFMediaEngineEx;
58#endif /* __cplusplus */
59#endif
60
61#ifndef __IMFMediaEngineClassFactory_FWD_DEFINED__
62#define __IMFMediaEngineClassFactory_FWD_DEFINED__
63typedef interface IMFMediaEngineClassFactory IMFMediaEngineClassFactory;
64#ifdef __cplusplus
65interface IMFMediaEngineClassFactory;
66#endif /* __cplusplus */
67#endif
68
69#ifndef __IMFMediaEngineNotify_FWD_DEFINED__
70#define __IMFMediaEngineNotify_FWD_DEFINED__
71typedef interface IMFMediaEngineNotify IMFMediaEngineNotify;
72#ifdef __cplusplus
73interface IMFMediaEngineNotify;
74#endif /* __cplusplus */
75#endif
76
77#ifndef __IMFMediaEngineAudioEndpointId_FWD_DEFINED__
78#define __IMFMediaEngineAudioEndpointId_FWD_DEFINED__
79typedef interface IMFMediaEngineAudioEndpointId IMFMediaEngineAudioEndpointId;
80#ifdef __cplusplus
81interface IMFMediaEngineAudioEndpointId;
82#endif /* __cplusplus */
83#endif
84
85#ifndef __IMFMediaEngineExtension_FWD_DEFINED__
86#define __IMFMediaEngineExtension_FWD_DEFINED__
87typedef interface IMFMediaEngineExtension IMFMediaEngineExtension;
88#ifdef __cplusplus
89interface IMFMediaEngineExtension;
90#endif /* __cplusplus */
91#endif
92
93/* Headers for imported files */
94
95#include <mfidl.h>
96
97#ifdef __cplusplus
98extern "C" {
99#endif
100
101EXTERN_GUID(CLSID_MFMediaEngineClassFactory, 0xb44392da, 0x499b, 0x446b, 0xa4, 0xcb, 0x00, 0x5f, 0xea, 0xd0, 0xe6, 0xd5);
102EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_CATEGORY, 0xc8d4c51d, 0x350e, 0x41f2, 0xba, 0x46, 0xfa, 0xeb, 0xbb, 0x08, 0x57, 0xf6);
103EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE, 0xd2cb93d1, 0x116a, 0x44f2, 0x93, 0x85, 0xf7, 0xd0, 0xfd, 0xa2, 0xfb, 0x46);
104EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE, 0x4e0212e2, 0xe18f, 0x41e1, 0x95, 0xe5, 0xc0, 0xe7, 0xe9, 0x23, 0x5b, 0xc3);
105EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE9, 0x052c2d39, 0x40c0, 0x4188, 0xab, 0x86, 0xf8, 0x28, 0x27, 0x3b, 0x75, 0x22);
106EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE10, 0x11a47afd, 0x6589, 0x4124, 0xb3, 0x12, 0x61, 0x58, 0xec, 0x51, 0x7f, 0xc3);
107EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE11, 0x1cf1315f, 0xce3f, 0x4035, 0x93, 0x91, 0x16, 0x14, 0x2f, 0x77, 0x51, 0x89);
108EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE_EDGE, 0xa6f3e465, 0x3aca, 0x442c, 0xa3, 0xf0, 0xad, 0x6d, 0xda, 0xd8, 0x39, 0xae);
109EXTERN_GUID(MF_MEDIA_ENGINE_CALLBACK, 0xc60381b8, 0x83a4, 0x41f8, 0xa3, 0xd0, 0xde, 0x05, 0x07, 0x68, 0x49, 0xa9);
110EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE, 0x3ef26ad4, 0xdc54, 0x45de, 0xb9, 0xaf, 0x76, 0xc8, 0xc6, 0x6b, 0xfa, 0x8e);
111EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WIN10, 0x5b25e089, 0x6ca7, 0x4139, 0xa2, 0xcb, 0xfc, 0xaa, 0xb3, 0x95, 0x52, 0xa3);
112EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WWA_EDGE, 0x15b29098, 0x9f01, 0x4e4d, 0xb6, 0x5a, 0xc0, 0x6c, 0x6c, 0x89, 0xda, 0x2a);
113EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS, 0xe0350223, 0x5aaf, 0x4d76, 0xa7, 0xc3, 0x06, 0xde, 0x70, 0x89, 0x4d, 0xb4);
114EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER, 0xfdd6dfaa, 0xbd85, 0x4af3, 0x9e, 0x0f, 0xa0, 0x1d, 0x53, 0x9d, 0x87, 0x6a);
115EXTERN_GUID(MF_MEDIA_ENGINE_CONTINUE_ON_CODEC_ERROR, 0xdbcdb7f9, 0x48e4, 0x4295, 0xb7, 0x0d, 0xd5, 0x18, 0x23, 0x4e, 0xeb, 0x38);
116EXTERN_GUID(MF_MEDIA_ENGINE_COREWINDOW, 0xfccae4dc, 0x0b7f, 0x41c2, 0x9f, 0x96, 0x46, 0x59, 0x94, 0x8a, 0xcd, 0xdc);
117EXTERN_GUID(MF_MEDIA_ENGINE_DXGI_MANAGER, 0x065702da, 0x1094, 0x486d, 0x86, 0x17, 0xee, 0x7c, 0xc4, 0xee, 0x46, 0x48);
118EXTERN_GUID(MF_MEDIA_ENGINE_EME_CALLBACK, 0x494553a7, 0xa481, 0x4cb7, 0xbe, 0xc5, 0x38, 0x09, 0x03, 0x51, 0x37, 0x31);
119EXTERN_GUID(MF_MEDIA_ENGINE_EXTENSION, 0x3109fd46, 0x060d, 0x4b62, 0x8d, 0xcf, 0xfa, 0xff, 0x81, 0x13, 0x18, 0xd2);
120EXTERN_GUID(MF_MEDIA_ENGINE_MEDIA_PLAYER_MODE, 0x3ddd8d45, 0x5aa1, 0x4112, 0x82, 0xe5, 0x36, 0xf6, 0xa2, 0x19, 0x7e, 0x6e);
121EXTERN_GUID(MF_MEDIA_ENGINE_NEEDKEY_CALLBACK, 0x7ea80843, 0xb6e4, 0x432c, 0x8e, 0xa4, 0x78, 0x48, 0xff, 0xe4, 0x22, 0x0e);
122EXTERN_GUID(MF_MEDIA_ENGINE_OPM_HWND, 0xa0be8ee7, 0x0572, 0x4f2c, 0xa8, 0x01, 0x2a, 0x15, 0x1b, 0xd3, 0xe7, 0x26);
123EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_HWND, 0xd988879b, 0x67c9, 0x4d92, 0xba, 0xa7, 0x6e, 0xad, 0xd4, 0x46, 0x03, 0x9d);
124EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, 0x6debd26f, 0x6ab9, 0x4d7e, 0xb0, 0xee, 0xc6, 0x1a, 0x73, 0xff, 0xad, 0x15);
125EXTERN_GUID(MF_MEDIA_ENGINE_SOURCE_RESOLVER_CONFIG_STORE, 0x0ac0c497, 0xb3c4, 0x48c9, 0x9c, 0xde, 0xbb, 0x8c, 0xa2, 0x44, 0x2c, 0xa3);
126EXTERN_GUID(MF_MEDIA_ENGINE_STREAM_CONTAINS_ALPHA_CHANNEL, 0x5cbfaf44, 0xd2b2, 0x4cfb, 0x80, 0xa7, 0xd4, 0x29, 0xc7, 0x4c, 0x78, 0x9d);
127EXTERN_GUID(MF_MEDIA_ENGINE_SYNCHRONOUS_CLOSE, 0xc3c2e12f, 0x7e0e, 0x4e43, 0xb9, 0x1c, 0xdc, 0x99, 0x2c, 0xcd, 0xfa, 0x5e);
128EXTERN_GUID(MF_MEDIA_ENGINE_TELEMETRY_APPLICATION_ID, 0x1e7b273b, 0xa7e4, 0x402a, 0x8f, 0x51, 0xc4, 0x8e, 0x88, 0xa2, 0xca, 0xbc);
129EXTERN_GUID(MF_MEDIA_ENGINE_TRACK_ID, 0x65bea312, 0x4043, 0x4815, 0x8e, 0xab, 0x44, 0xdc, 0xe2, 0xef, 0x8f, 0x2a);
130EXTERN_GUID(MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT, 0x5066893c, 0x8cf9, 0x42bc, 0x8b, 0x8a, 0x47, 0x22, 0x12, 0xe5, 0x27, 0x26);
131typedef 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;
137typedef 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;
145typedef 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;
152typedef 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_
159typedef struct MFVideoNormalizedRect {
160 float left;
161 float top;
162 float right;
163 float bottom;
164} MFVideoNormalizedRect;
165#endif
166typedef 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;
174typedef 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;
215typedef 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
228DEFINE_GUID(IID_IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c);
229#if defined(__cplusplus) && !defined(CINTERFACE)
230MIDL_INTERFACE("fc0e10d2-ab2a-4501-a951-06bb1075184c")
231IMFMediaError : 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
250typedef 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
283interface 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 ***/
300static inline HRESULT IMFMediaError_QueryInterface(IMFMediaError* This,REFIID riid,void **ppvObject) {
301 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
302}
303static inline ULONG IMFMediaError_AddRef(IMFMediaError* This) {
304 return This->lpVtbl->AddRef(This);
305}
306static inline ULONG IMFMediaError_Release(IMFMediaError* This) {
307 return This->lpVtbl->Release(This);
308}
309/*** IMFMediaError methods ***/
310static inline USHORT IMFMediaError_GetErrorCode(IMFMediaError* This) {
311 return This->lpVtbl->GetErrorCode(This);
312}
313static inline HRESULT IMFMediaError_GetExtendedErrorCode(IMFMediaError* This) {
314 return This->lpVtbl->GetExtendedErrorCode(This);
315}
316static inline HRESULT IMFMediaError_SetErrorCode(IMFMediaError* This,MF_MEDIA_ENGINE_ERR error) {
317 return This->lpVtbl->SetErrorCode(This,error);
318}
319static 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
336DEFINE_GUID(IID_IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea);
337#if defined(__cplusplus) && !defined(CINTERFACE)
338MIDL_INTERFACE("7a5e5354-b114-4c72-b991-3131d75032ea")
339IMFMediaEngineSrcElements : 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
369typedef 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
415interface 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 ***/
434static inline HRESULT IMFMediaEngineSrcElements_QueryInterface(IMFMediaEngineSrcElements* This,REFIID riid,void **ppvObject) {
435 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
436}
437static inline ULONG IMFMediaEngineSrcElements_AddRef(IMFMediaEngineSrcElements* This) {
438 return This->lpVtbl->AddRef(This);
439}
440static inline ULONG IMFMediaEngineSrcElements_Release(IMFMediaEngineSrcElements* This) {
441 return This->lpVtbl->Release(This);
442}
443/*** IMFMediaEngineSrcElements methods ***/
444static inline DWORD IMFMediaEngineSrcElements_GetLength(IMFMediaEngineSrcElements* This) {
445 return This->lpVtbl->GetLength(This);
446}
447static inline HRESULT IMFMediaEngineSrcElements_GetURL(IMFMediaEngineSrcElements* This,DWORD index,BSTR *url) {
448 return This->lpVtbl->GetURL(This,index,url);
449}
450static inline HRESULT IMFMediaEngineSrcElements_GetType(IMFMediaEngineSrcElements* This,DWORD index,BSTR *type) {
451 return This->lpVtbl->GetType(This,index,type);
452}
453static inline HRESULT IMFMediaEngineSrcElements_GetMedia(IMFMediaEngineSrcElements* This,DWORD index,BSTR *media) {
454 return This->lpVtbl->GetMedia(This,index,media);
455}
456static inline HRESULT IMFMediaEngineSrcElements_AddElement(IMFMediaEngineSrcElements* This,BSTR url,BSTR type,BSTR media) {
457 return This->lpVtbl->AddElement(This,url,type,media);
458}
459static 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
476DEFINE_GUID(IID_IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c);
477#if defined(__cplusplus) && !defined(CINTERFACE)
478MIDL_INTERFACE("db71a2fc-078a-414e-9df9-8c2531b0aa6c")
479IMFMediaTimeRange : 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
507typedef 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
551interface 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 ***/
570static inline HRESULT IMFMediaTimeRange_QueryInterface(IMFMediaTimeRange* This,REFIID riid,void **ppvObject) {
571 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
572}
573static inline ULONG IMFMediaTimeRange_AddRef(IMFMediaTimeRange* This) {
574 return This->lpVtbl->AddRef(This);
575}
576static inline ULONG IMFMediaTimeRange_Release(IMFMediaTimeRange* This) {
577 return This->lpVtbl->Release(This);
578}
579/*** IMFMediaTimeRange methods ***/
580static inline DWORD IMFMediaTimeRange_GetLength(IMFMediaTimeRange* This) {
581 return This->lpVtbl->GetLength(This);
582}
583static inline HRESULT IMFMediaTimeRange_GetStart(IMFMediaTimeRange* This,DWORD index,double *start) {
584 return This->lpVtbl->GetStart(This,index,start);
585}
586static inline HRESULT IMFMediaTimeRange_GetEnd(IMFMediaTimeRange* This,DWORD index,double *end) {
587 return This->lpVtbl->GetEnd(This,index,end);
588}
589static inline WINBOOL IMFMediaTimeRange_ContainsTime(IMFMediaTimeRange* This,double time) {
590 return This->lpVtbl->ContainsTime(This,time);
591}
592static inline HRESULT IMFMediaTimeRange_AddRange(IMFMediaTimeRange* This,double start,double end) {
593 return This->lpVtbl->AddRange(This,start,end);
594}
595static 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
613DEFINE_GUID(IID_IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93);
614#if defined(__cplusplus) && !defined(CINTERFACE)
615MIDL_INTERFACE("98a1b0bb-03eb-4935-ae7c-93c1fa0e1c93")
616IMFMediaEngine : 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
755typedef 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
927interface 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 ***/
982static inline HRESULT IMFMediaEngine_QueryInterface(IMFMediaEngine* This,REFIID riid,void **ppvObject) {
983 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
984}
985static inline ULONG IMFMediaEngine_AddRef(IMFMediaEngine* This) {
986 return This->lpVtbl->AddRef(This);
987}
988static inline ULONG IMFMediaEngine_Release(IMFMediaEngine* This) {
989 return This->lpVtbl->Release(This);
990}
991/*** IMFMediaEngine methods ***/
992static inline HRESULT IMFMediaEngine_GetError(IMFMediaEngine* This,IMFMediaError **error) {
993 return This->lpVtbl->GetError(This,error);
994}
995static inline HRESULT IMFMediaEngine_SetErrorCode(IMFMediaEngine* This,MF_MEDIA_ENGINE_ERR error) {
996 return This->lpVtbl->SetErrorCode(This,error);
997}
998static inline HRESULT IMFMediaEngine_SetSourceElements(IMFMediaEngine* This,IMFMediaEngineSrcElements *elements) {
999 return This->lpVtbl->SetSourceElements(This,elements);
1000}
1001static inline HRESULT IMFMediaEngine_SetSource(IMFMediaEngine* This,BSTR url) {
1002 return This->lpVtbl->SetSource(This,url);
1003}
1004static inline HRESULT IMFMediaEngine_GetCurrentSource(IMFMediaEngine* This,BSTR *url) {
1005 return This->lpVtbl->GetCurrentSource(This,url);
1006}
1007static inline USHORT IMFMediaEngine_GetNetworkState(IMFMediaEngine* This) {
1008 return This->lpVtbl->GetNetworkState(This);
1009}
1010static inline MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine_GetPreload(IMFMediaEngine* This) {
1011 return This->lpVtbl->GetPreload(This);
1012}
1013static inline HRESULT IMFMediaEngine_SetPreload(IMFMediaEngine* This,MF_MEDIA_ENGINE_PRELOAD preload) {
1014 return This->lpVtbl->SetPreload(This,preload);
1015}
1016static inline HRESULT IMFMediaEngine_GetBuffered(IMFMediaEngine* This,IMFMediaTimeRange **buffered) {
1017 return This->lpVtbl->GetBuffered(This,buffered);
1018}
1019static inline HRESULT IMFMediaEngine_Load(IMFMediaEngine* This) {
1020 return This->lpVtbl->Load(This);
1021}
1022static inline HRESULT IMFMediaEngine_CanPlayType(IMFMediaEngine* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) {
1023 return This->lpVtbl->CanPlayType(This,type,answer);
1024}
1025static inline USHORT IMFMediaEngine_GetReadyState(IMFMediaEngine* This) {
1026 return This->lpVtbl->GetReadyState(This);
1027}
1028static inline WINBOOL IMFMediaEngine_IsSeeking(IMFMediaEngine* This) {
1029 return This->lpVtbl->IsSeeking(This);
1030}
1031static inline double IMFMediaEngine_GetCurrentTime(IMFMediaEngine* This) {
1032 return This->lpVtbl->GetCurrentTime(This);
1033}
1034static inline HRESULT IMFMediaEngine_SetCurrentTime(IMFMediaEngine* This,double time) {
1035 return This->lpVtbl->SetCurrentTime(This,time);
1036}
1037static inline double IMFMediaEngine_GetStartTime(IMFMediaEngine* This) {
1038 return This->lpVtbl->GetStartTime(This);
1039}
1040static inline double IMFMediaEngine_GetDuration(IMFMediaEngine* This) {
1041 return This->lpVtbl->GetDuration(This);
1042}
1043static inline WINBOOL IMFMediaEngine_IsPaused(IMFMediaEngine* This) {
1044 return This->lpVtbl->IsPaused(This);
1045}
1046static inline double IMFMediaEngine_GetDefaultPlaybackRate(IMFMediaEngine* This) {
1047 return This->lpVtbl->GetDefaultPlaybackRate(This);
1048}
1049static inline HRESULT IMFMediaEngine_SetDefaultPlaybackRate(IMFMediaEngine* This,double rate) {
1050 return This->lpVtbl->SetDefaultPlaybackRate(This,rate);
1051}
1052static inline double IMFMediaEngine_GetPlaybackRate(IMFMediaEngine* This) {
1053 return This->lpVtbl->GetPlaybackRate(This);
1054}
1055static inline HRESULT IMFMediaEngine_SetPlaybackRate(IMFMediaEngine* This,double rate) {
1056 return This->lpVtbl->SetPlaybackRate(This,rate);
1057}
1058static inline HRESULT IMFMediaEngine_GetPlayed(IMFMediaEngine* This,IMFMediaTimeRange **played) {
1059 return This->lpVtbl->GetPlayed(This,played);
1060}
1061static inline HRESULT IMFMediaEngine_GetSeekable(IMFMediaEngine* This,IMFMediaTimeRange **seekable) {
1062 return This->lpVtbl->GetSeekable(This,seekable);
1063}
1064static inline WINBOOL IMFMediaEngine_IsEnded(IMFMediaEngine* This) {
1065 return This->lpVtbl->IsEnded(This);
1066}
1067static inline WINBOOL IMFMediaEngine_GetAutoPlay(IMFMediaEngine* This) {
1068 return This->lpVtbl->GetAutoPlay(This);
1069}
1070static inline HRESULT IMFMediaEngine_SetAutoPlay(IMFMediaEngine* This,WINBOOL autoplay) {
1071 return This->lpVtbl->SetAutoPlay(This,autoplay);
1072}
1073static inline WINBOOL IMFMediaEngine_GetLoop(IMFMediaEngine* This) {
1074 return This->lpVtbl->GetLoop(This);
1075}
1076static inline HRESULT IMFMediaEngine_SetLoop(IMFMediaEngine* This,WINBOOL loop) {
1077 return This->lpVtbl->SetLoop(This,loop);
1078}
1079static inline HRESULT IMFMediaEngine_Play(IMFMediaEngine* This) {
1080 return This->lpVtbl->Play(This);
1081}
1082static inline HRESULT IMFMediaEngine_Pause(IMFMediaEngine* This) {
1083 return This->lpVtbl->Pause(This);
1084}
1085static inline WINBOOL IMFMediaEngine_GetMuted(IMFMediaEngine* This) {
1086 return This->lpVtbl->GetMuted(This);
1087}
1088static inline HRESULT IMFMediaEngine_SetMuted(IMFMediaEngine* This,WINBOOL muted) {
1089 return This->lpVtbl->SetMuted(This,muted);
1090}
1091static inline double IMFMediaEngine_GetVolume(IMFMediaEngine* This) {
1092 return This->lpVtbl->GetVolume(This);
1093}
1094static inline HRESULT IMFMediaEngine_SetVolume(IMFMediaEngine* This,double volume) {
1095 return This->lpVtbl->SetVolume(This,volume);
1096}
1097static inline WINBOOL IMFMediaEngine_HasVideo(IMFMediaEngine* This) {
1098 return This->lpVtbl->HasVideo(This);
1099}
1100static inline WINBOOL IMFMediaEngine_HasAudio(IMFMediaEngine* This) {
1101 return This->lpVtbl->HasAudio(This);
1102}
1103static inline HRESULT IMFMediaEngine_GetNativeVideoSize(IMFMediaEngine* This,DWORD *cx,DWORD *cy) {
1104 return This->lpVtbl->GetNativeVideoSize(This,cx,cy);
1105}
1106static inline HRESULT IMFMediaEngine_GetVideoAspectRatio(IMFMediaEngine* This,DWORD *cx,DWORD *cy) {
1107 return This->lpVtbl->GetVideoAspectRatio(This,cx,cy);
1108}
1109static inline HRESULT IMFMediaEngine_Shutdown(IMFMediaEngine* This) {
1110 return This->lpVtbl->Shutdown(This);
1111}
1112static 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}
1115static 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
1126typedef 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;
1136typedef 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;
1141typedef 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
1151DEFINE_GUID(IID_IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1);
1152#if defined(__cplusplus) && !defined(CINTERFACE)
1153MIDL_INTERFACE("83015ead-b1e6-40d0-a98a-37145ffe1ad1")
1154IMFMediaEngineEx : 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
1284typedef 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
1612interface 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 ***/
1705static inline HRESULT IMFMediaEngineEx_QueryInterface(IMFMediaEngineEx* This,REFIID riid,void **ppvObject) {
1706 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1707}
1708static inline ULONG IMFMediaEngineEx_AddRef(IMFMediaEngineEx* This) {
1709 return This->lpVtbl->AddRef(This);
1710}
1711static inline ULONG IMFMediaEngineEx_Release(IMFMediaEngineEx* This) {
1712 return This->lpVtbl->Release(This);
1713}
1714/*** IMFMediaEngine methods ***/
1715static inline HRESULT IMFMediaEngineEx_GetError(IMFMediaEngineEx* This,IMFMediaError **error) {
1716 return This->lpVtbl->GetError(This,error);
1717}
1718static inline HRESULT IMFMediaEngineEx_SetErrorCode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_ERR error) {
1719 return This->lpVtbl->SetErrorCode(This,error);
1720}
1721static inline HRESULT IMFMediaEngineEx_SetSourceElements(IMFMediaEngineEx* This,IMFMediaEngineSrcElements *elements) {
1722 return This->lpVtbl->SetSourceElements(This,elements);
1723}
1724static inline HRESULT IMFMediaEngineEx_SetSource(IMFMediaEngineEx* This,BSTR url) {
1725 return This->lpVtbl->SetSource(This,url);
1726}
1727static inline HRESULT IMFMediaEngineEx_GetCurrentSource(IMFMediaEngineEx* This,BSTR *url) {
1728 return This->lpVtbl->GetCurrentSource(This,url);
1729}
1730static inline USHORT IMFMediaEngineEx_GetNetworkState(IMFMediaEngineEx* This) {
1731 return This->lpVtbl->GetNetworkState(This);
1732}
1733static inline MF_MEDIA_ENGINE_PRELOAD IMFMediaEngineEx_GetPreload(IMFMediaEngineEx* This) {
1734 return This->lpVtbl->GetPreload(This);
1735}
1736static inline HRESULT IMFMediaEngineEx_SetPreload(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_PRELOAD preload) {
1737 return This->lpVtbl->SetPreload(This,preload);
1738}
1739static inline HRESULT IMFMediaEngineEx_GetBuffered(IMFMediaEngineEx* This,IMFMediaTimeRange **buffered) {
1740 return This->lpVtbl->GetBuffered(This,buffered);
1741}
1742static inline HRESULT IMFMediaEngineEx_Load(IMFMediaEngineEx* This) {
1743 return This->lpVtbl->Load(This);
1744}
1745static inline HRESULT IMFMediaEngineEx_CanPlayType(IMFMediaEngineEx* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) {
1746 return This->lpVtbl->CanPlayType(This,type,answer);
1747}
1748static inline USHORT IMFMediaEngineEx_GetReadyState(IMFMediaEngineEx* This) {
1749 return This->lpVtbl->GetReadyState(This);
1750}
1751static inline WINBOOL IMFMediaEngineEx_IsSeeking(IMFMediaEngineEx* This) {
1752 return This->lpVtbl->IsSeeking(This);
1753}
1754static inline double IMFMediaEngineEx_GetCurrentTime(IMFMediaEngineEx* This) {
1755 return This->lpVtbl->GetCurrentTime(This);
1756}
1757static inline HRESULT IMFMediaEngineEx_SetCurrentTime(IMFMediaEngineEx* This,double time) {
1758 return This->lpVtbl->SetCurrentTime(This,time);
1759}
1760static inline double IMFMediaEngineEx_GetStartTime(IMFMediaEngineEx* This) {
1761 return This->lpVtbl->GetStartTime(This);
1762}
1763static inline double IMFMediaEngineEx_GetDuration(IMFMediaEngineEx* This) {
1764 return This->lpVtbl->GetDuration(This);
1765}
1766static inline WINBOOL IMFMediaEngineEx_IsPaused(IMFMediaEngineEx* This) {
1767 return This->lpVtbl->IsPaused(This);
1768}
1769static inline double IMFMediaEngineEx_GetDefaultPlaybackRate(IMFMediaEngineEx* This) {
1770 return This->lpVtbl->GetDefaultPlaybackRate(This);
1771}
1772static inline HRESULT IMFMediaEngineEx_SetDefaultPlaybackRate(IMFMediaEngineEx* This,double rate) {
1773 return This->lpVtbl->SetDefaultPlaybackRate(This,rate);
1774}
1775static inline double IMFMediaEngineEx_GetPlaybackRate(IMFMediaEngineEx* This) {
1776 return This->lpVtbl->GetPlaybackRate(This);
1777}
1778static inline HRESULT IMFMediaEngineEx_SetPlaybackRate(IMFMediaEngineEx* This,double rate) {
1779 return This->lpVtbl->SetPlaybackRate(This,rate);
1780}
1781static inline HRESULT IMFMediaEngineEx_GetPlayed(IMFMediaEngineEx* This,IMFMediaTimeRange **played) {
1782 return This->lpVtbl->GetPlayed(This,played);
1783}
1784static inline HRESULT IMFMediaEngineEx_GetSeekable(IMFMediaEngineEx* This,IMFMediaTimeRange **seekable) {
1785 return This->lpVtbl->GetSeekable(This,seekable);
1786}
1787static inline WINBOOL IMFMediaEngineEx_IsEnded(IMFMediaEngineEx* This) {
1788 return This->lpVtbl->IsEnded(This);
1789}
1790static inline WINBOOL IMFMediaEngineEx_GetAutoPlay(IMFMediaEngineEx* This) {
1791 return This->lpVtbl->GetAutoPlay(This);
1792}
1793static inline HRESULT IMFMediaEngineEx_SetAutoPlay(IMFMediaEngineEx* This,WINBOOL autoplay) {
1794 return This->lpVtbl->SetAutoPlay(This,autoplay);
1795}
1796static inline WINBOOL IMFMediaEngineEx_GetLoop(IMFMediaEngineEx* This) {
1797 return This->lpVtbl->GetLoop(This);
1798}
1799static inline HRESULT IMFMediaEngineEx_SetLoop(IMFMediaEngineEx* This,WINBOOL loop) {
1800 return This->lpVtbl->SetLoop(This,loop);
1801}
1802static inline HRESULT IMFMediaEngineEx_Play(IMFMediaEngineEx* This) {
1803 return This->lpVtbl->Play(This);
1804}
1805static inline HRESULT IMFMediaEngineEx_Pause(IMFMediaEngineEx* This) {
1806 return This->lpVtbl->Pause(This);
1807}
1808static inline WINBOOL IMFMediaEngineEx_GetMuted(IMFMediaEngineEx* This) {
1809 return This->lpVtbl->GetMuted(This);
1810}
1811static inline HRESULT IMFMediaEngineEx_SetMuted(IMFMediaEngineEx* This,WINBOOL muted) {
1812 return This->lpVtbl->SetMuted(This,muted);
1813}
1814static inline double IMFMediaEngineEx_GetVolume(IMFMediaEngineEx* This) {
1815 return This->lpVtbl->GetVolume(This);
1816}
1817static inline HRESULT IMFMediaEngineEx_SetVolume(IMFMediaEngineEx* This,double volume) {
1818 return This->lpVtbl->SetVolume(This,volume);
1819}
1820static inline WINBOOL IMFMediaEngineEx_HasVideo(IMFMediaEngineEx* This) {
1821 return This->lpVtbl->HasVideo(This);
1822}
1823static inline WINBOOL IMFMediaEngineEx_HasAudio(IMFMediaEngineEx* This) {
1824 return This->lpVtbl->HasAudio(This);
1825}
1826static inline HRESULT IMFMediaEngineEx_GetNativeVideoSize(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) {
1827 return This->lpVtbl->GetNativeVideoSize(This,cx,cy);
1828}
1829static inline HRESULT IMFMediaEngineEx_GetVideoAspectRatio(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) {
1830 return This->lpVtbl->GetVideoAspectRatio(This,cx,cy);
1831}
1832static inline HRESULT IMFMediaEngineEx_Shutdown(IMFMediaEngineEx* This) {
1833 return This->lpVtbl->Shutdown(This);
1834}
1835static 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}
1838static inline HRESULT IMFMediaEngineEx_OnVideoStreamTick(IMFMediaEngineEx* This,LONGLONG *time) {
1839 return This->lpVtbl->OnVideoStreamTick(This,time);
1840}
1841/*** IMFMediaEngineEx methods ***/
1842static inline HRESULT IMFMediaEngineEx_SetSourceFromByteStream(IMFMediaEngineEx* This,IMFByteStream *bytestream,BSTR url) {
1843 return This->lpVtbl->SetSourceFromByteStream(This,bytestream,url);
1844}
1845static inline HRESULT IMFMediaEngineEx_GetStatistics(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_STATISTIC stat_id,PROPVARIANT *stat) {
1846 return This->lpVtbl->GetStatistics(This,stat_id,stat);
1847}
1848static 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}
1851static inline double IMFMediaEngineEx_GetBalance(IMFMediaEngineEx* This) {
1852 return This->lpVtbl->GetBalance(This);
1853}
1854static inline HRESULT IMFMediaEngineEx_SetBalance(IMFMediaEngineEx* This,double balance) {
1855 return This->lpVtbl->SetBalance(This,balance);
1856}
1857static inline WINBOOL IMFMediaEngineEx_IsPlaybackRateSupported(IMFMediaEngineEx* This,double rate) {
1858 return This->lpVtbl->IsPlaybackRateSupported(This,rate);
1859}
1860static inline HRESULT IMFMediaEngineEx_FrameStep(IMFMediaEngineEx* This,WINBOOL forward) {
1861 return This->lpVtbl->FrameStep(This,forward);
1862}
1863static inline HRESULT IMFMediaEngineEx_GetResourceCharacteristics(IMFMediaEngineEx* This,DWORD *flags) {
1864 return This->lpVtbl->GetResourceCharacteristics(This,flags);
1865}
1866static inline HRESULT IMFMediaEngineEx_GetPresentationAttribute(IMFMediaEngineEx* This,REFGUID attribute,PROPVARIANT *value) {
1867 return This->lpVtbl->GetPresentationAttribute(This,attribute,value);
1868}
1869static inline HRESULT IMFMediaEngineEx_GetNumberOfStreams(IMFMediaEngineEx* This,DWORD *stream_count) {
1870 return This->lpVtbl->GetNumberOfStreams(This,stream_count);
1871}
1872static inline HRESULT IMFMediaEngineEx_GetStreamAttribute(IMFMediaEngineEx* This,DWORD stream_index,REFGUID attribute,PROPVARIANT *value) {
1873 return This->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value);
1874}
1875static inline HRESULT IMFMediaEngineEx_GetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL *enabled) {
1876 return This->lpVtbl->GetStreamSelection(This,stream_index,enabled);
1877}
1878static inline HRESULT IMFMediaEngineEx_SetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL enabled) {
1879 return This->lpVtbl->SetStreamSelection(This,stream_index,enabled);
1880}
1881static inline HRESULT IMFMediaEngineEx_ApplyStreamSelections(IMFMediaEngineEx* This) {
1882 return This->lpVtbl->ApplyStreamSelections(This);
1883}
1884static inline HRESULT IMFMediaEngineEx_IsProtected(IMFMediaEngineEx* This,WINBOOL *is_protected) {
1885 return This->lpVtbl->IsProtected(This,is_protected);
1886}
1887static inline HRESULT IMFMediaEngineEx_InsertVideoEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) {
1888 return This->lpVtbl->InsertVideoEffect(This,effect,is_optional);
1889}
1890static inline HRESULT IMFMediaEngineEx_InsertAudioEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) {
1891 return This->lpVtbl->InsertAudioEffect(This,effect,is_optional);
1892}
1893static inline HRESULT IMFMediaEngineEx_RemoveAllEffects(IMFMediaEngineEx* This) {
1894 return This->lpVtbl->RemoveAllEffects(This);
1895}
1896static inline HRESULT IMFMediaEngineEx_SetTimelineMarkerTimer(IMFMediaEngineEx* This,double timeout) {
1897 return This->lpVtbl->SetTimelineMarkerTimer(This,timeout);
1898}
1899static inline HRESULT IMFMediaEngineEx_GetTimelineMarkerTimer(IMFMediaEngineEx* This,double *timeout) {
1900 return This->lpVtbl->GetTimelineMarkerTimer(This,timeout);
1901}
1902static inline HRESULT IMFMediaEngineEx_CancelTimelineMarkerTimer(IMFMediaEngineEx* This) {
1903 return This->lpVtbl->CancelTimelineMarkerTimer(This);
1904}
1905static inline WINBOOL IMFMediaEngineEx_IsStereo3D(IMFMediaEngineEx* This) {
1906 return This->lpVtbl->IsStereo3D(This);
1907}
1908static inline HRESULT IMFMediaEngineEx_GetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) {
1909 return This->lpVtbl->GetStereo3DFramePackingMode(This,mode);
1910}
1911static inline HRESULT IMFMediaEngineEx_SetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) {
1912 return This->lpVtbl->SetStereo3DFramePackingMode(This,mode);
1913}
1914static inline HRESULT IMFMediaEngineEx_GetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType *output_type) {
1915 return This->lpVtbl->GetStereo3DRenderMode(This,output_type);
1916}
1917static inline HRESULT IMFMediaEngineEx_SetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType output_type) {
1918 return This->lpVtbl->SetStereo3DRenderMode(This,output_type);
1919}
1920static inline HRESULT IMFMediaEngineEx_EnableWindowlessSwapchainMode(IMFMediaEngineEx* This,WINBOOL enable) {
1921 return This->lpVtbl->EnableWindowlessSwapchainMode(This,enable);
1922}
1923static inline HRESULT IMFMediaEngineEx_GetVideoSwapchainHandle(IMFMediaEngineEx* This,HANDLE *swapchain) {
1924 return This->lpVtbl->GetVideoSwapchainHandle(This,swapchain);
1925}
1926static inline HRESULT IMFMediaEngineEx_EnableHorizontalMirrorMode(IMFMediaEngineEx* This,WINBOOL enable) {
1927 return This->lpVtbl->EnableHorizontalMirrorMode(This,enable);
1928}
1929static inline HRESULT IMFMediaEngineEx_GetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 *category) {
1930 return This->lpVtbl->GetAudioStreamCategory(This,category);
1931}
1932static inline HRESULT IMFMediaEngineEx_SetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 category) {
1933 return This->lpVtbl->SetAudioStreamCategory(This,category);
1934}
1935static inline HRESULT IMFMediaEngineEx_GetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 *role) {
1936 return This->lpVtbl->GetAudioEndpointRole(This,role);
1937}
1938static inline HRESULT IMFMediaEngineEx_SetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 role) {
1939 return This->lpVtbl->SetAudioEndpointRole(This,role);
1940}
1941static inline HRESULT IMFMediaEngineEx_GetRealTimeMode(IMFMediaEngineEx* This,WINBOOL *enabled) {
1942 return This->lpVtbl->GetRealTimeMode(This,enabled);
1943}
1944static inline HRESULT IMFMediaEngineEx_SetRealTimeMode(IMFMediaEngineEx* This,WINBOOL enable) {
1945 return This->lpVtbl->SetRealTimeMode(This,enable);
1946}
1947static inline HRESULT IMFMediaEngineEx_SetCurrentTimeEx(IMFMediaEngineEx* This,double seektime,MF_MEDIA_ENGINE_SEEK_MODE mode) {
1948 return This->lpVtbl->SetCurrentTimeEx(This,seektime,mode);
1949}
1950static 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
1967DEFINE_GUID(IID_IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93);
1968#if defined(__cplusplus) && !defined(CINTERFACE)
1969MIDL_INTERFACE("4d645ace-26aa-4688-9be1-df3516990b93")
1970IMFMediaEngineClassFactory : 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
1988typedef 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
2021interface 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 ***/
2037static inline HRESULT IMFMediaEngineClassFactory_QueryInterface(IMFMediaEngineClassFactory* This,REFIID riid,void **ppvObject) {
2038 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2039}
2040static inline ULONG IMFMediaEngineClassFactory_AddRef(IMFMediaEngineClassFactory* This) {
2041 return This->lpVtbl->AddRef(This);
2042}
2043static inline ULONG IMFMediaEngineClassFactory_Release(IMFMediaEngineClassFactory* This) {
2044 return This->lpVtbl->Release(This);
2045}
2046/*** IMFMediaEngineClassFactory methods ***/
2047static inline HRESULT IMFMediaEngineClassFactory_CreateInstance(IMFMediaEngineClassFactory* This,DWORD flags,IMFAttributes *attributes,IMFMediaEngine **engine) {
2048 return This->lpVtbl->CreateInstance(This,flags,attributes,engine);
2049}
2050static inline HRESULT IMFMediaEngineClassFactory_CreateTimeRange(IMFMediaEngineClassFactory* This,IMFMediaTimeRange **range) {
2051 return This->lpVtbl->CreateTimeRange(This,range);
2052}
2053static 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
2070DEFINE_GUID(IID_IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5);
2071#if defined(__cplusplus) && !defined(CINTERFACE)
2072MIDL_INTERFACE("fee7c112-e776-42b5-9bbf-0048524e2bd5")
2073IMFMediaEngineNotify : 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
2085typedef 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
2110interface 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 ***/
2124static inline HRESULT IMFMediaEngineNotify_QueryInterface(IMFMediaEngineNotify* This,REFIID riid,void **ppvObject) {
2125 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2126}
2127static inline ULONG IMFMediaEngineNotify_AddRef(IMFMediaEngineNotify* This) {
2128 return This->lpVtbl->AddRef(This);
2129}
2130static inline ULONG IMFMediaEngineNotify_Release(IMFMediaEngineNotify* This) {
2131 return This->lpVtbl->Release(This);
2132}
2133/*** IMFMediaEngineNotify methods ***/
2134static 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
2151DEFINE_GUID(IID_IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2);
2152#if defined(__cplusplus) && !defined(CINTERFACE)
2153MIDL_INTERFACE("7a3bac98-0e76-49fb-8c20-8a86fd98eaf2")
2154IMFMediaEngineAudioEndpointId : 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
2167typedef 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
2194interface 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 ***/
2209static inline HRESULT IMFMediaEngineAudioEndpointId_QueryInterface(IMFMediaEngineAudioEndpointId* This,REFIID riid,void **ppvObject) {
2210 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2211}
2212static inline ULONG IMFMediaEngineAudioEndpointId_AddRef(IMFMediaEngineAudioEndpointId* This) {
2213 return This->lpVtbl->AddRef(This);
2214}
2215static inline ULONG IMFMediaEngineAudioEndpointId_Release(IMFMediaEngineAudioEndpointId* This) {
2216 return This->lpVtbl->Release(This);
2217}
2218/*** IMFMediaEngineAudioEndpointId methods ***/
2219static inline HRESULT IMFMediaEngineAudioEndpointId_SetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPCWSTR id) {
2220 return This->lpVtbl->SetAudioEndpointId(This,id);
2221}
2222static 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
2239DEFINE_GUID(IID_IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e);
2240#if defined(__cplusplus) && !defined(CINTERFACE)
2241MIDL_INTERFACE("2f69d622-20b5-41e9-afdf-89ced1dda04e")
2242IMFMediaEngineExtension : 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
2269typedef 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
2312interface 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 ***/
2329static inline HRESULT IMFMediaEngineExtension_QueryInterface(IMFMediaEngineExtension* This,REFIID riid,void **ppvObject) {
2330 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2331}
2332static inline ULONG IMFMediaEngineExtension_AddRef(IMFMediaEngineExtension* This) {
2333 return This->lpVtbl->AddRef(This);
2334}
2335static inline ULONG IMFMediaEngineExtension_Release(IMFMediaEngineExtension* This) {
2336 return This->lpVtbl->Release(This);
2337}
2338/*** IMFMediaEngineExtension methods ***/
2339static 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}
2342static 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}
2345static inline HRESULT IMFMediaEngineExtension_CancelObjectCreation(IMFMediaEngineExtension* This,IUnknown *cancel_cookie) {
2346 return This->lpVtbl->CancelObjectCreation(This,cancel_cookie);
2347}
2348static 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__ */