1/*** Autogenerated by WIDL 11.6 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 __IMFMediaSourceExtensionNotify_FWD_DEFINED__
70#define __IMFMediaSourceExtensionNotify_FWD_DEFINED__
71typedef interface IMFMediaSourceExtensionNotify IMFMediaSourceExtensionNotify;
72#ifdef __cplusplus
73interface IMFMediaSourceExtensionNotify;
74#endif /* __cplusplus */
75#endif
76
77#ifndef __IMFSourceBufferNotify_FWD_DEFINED__
78#define __IMFSourceBufferNotify_FWD_DEFINED__
79typedef interface IMFSourceBufferNotify IMFSourceBufferNotify;
80#ifdef __cplusplus
81interface IMFSourceBufferNotify;
82#endif /* __cplusplus */
83#endif
84
85#ifndef __IMFSourceBuffer_FWD_DEFINED__
86#define __IMFSourceBuffer_FWD_DEFINED__
87typedef interface IMFSourceBuffer IMFSourceBuffer;
88#ifdef __cplusplus
89interface IMFSourceBuffer;
90#endif /* __cplusplus */
91#endif
92
93#ifndef __IMFSourceBufferList_FWD_DEFINED__
94#define __IMFSourceBufferList_FWD_DEFINED__
95typedef interface IMFSourceBufferList IMFSourceBufferList;
96#ifdef __cplusplus
97interface IMFSourceBufferList;
98#endif /* __cplusplus */
99#endif
100
101#ifndef __IMFMediaSourceExtension_FWD_DEFINED__
102#define __IMFMediaSourceExtension_FWD_DEFINED__
103typedef interface IMFMediaSourceExtension IMFMediaSourceExtension;
104#ifdef __cplusplus
105interface IMFMediaSourceExtension;
106#endif /* __cplusplus */
107#endif
108
109#ifndef __IMFMediaEngineNotify_FWD_DEFINED__
110#define __IMFMediaEngineNotify_FWD_DEFINED__
111typedef interface IMFMediaEngineNotify IMFMediaEngineNotify;
112#ifdef __cplusplus
113interface IMFMediaEngineNotify;
114#endif /* __cplusplus */
115#endif
116
117#ifndef __IMFMediaEngineAudioEndpointId_FWD_DEFINED__
118#define __IMFMediaEngineAudioEndpointId_FWD_DEFINED__
119typedef interface IMFMediaEngineAudioEndpointId IMFMediaEngineAudioEndpointId;
120#ifdef __cplusplus
121interface IMFMediaEngineAudioEndpointId;
122#endif /* __cplusplus */
123#endif
124
125#ifndef __IMFMediaEngineExtension_FWD_DEFINED__
126#define __IMFMediaEngineExtension_FWD_DEFINED__
127typedef interface IMFMediaEngineExtension IMFMediaEngineExtension;
128#ifdef __cplusplus
129interface IMFMediaEngineExtension;
130#endif /* __cplusplus */
131#endif
132
133#ifndef __IMFMediaKeySessionNotify_FWD_DEFINED__
134#define __IMFMediaKeySessionNotify_FWD_DEFINED__
135typedef interface IMFMediaKeySessionNotify IMFMediaKeySessionNotify;
136#ifdef __cplusplus
137interface IMFMediaKeySessionNotify;
138#endif /* __cplusplus */
139#endif
140
141#ifndef __IMFMediaKeySession_FWD_DEFINED__
142#define __IMFMediaKeySession_FWD_DEFINED__
143typedef interface IMFMediaKeySession IMFMediaKeySession;
144#ifdef __cplusplus
145interface IMFMediaKeySession;
146#endif /* __cplusplus */
147#endif
148
149#ifndef __IMFCdmSuspendNotify_FWD_DEFINED__
150#define __IMFCdmSuspendNotify_FWD_DEFINED__
151typedef interface IMFCdmSuspendNotify IMFCdmSuspendNotify;
152#ifdef __cplusplus
153interface IMFCdmSuspendNotify;
154#endif /* __cplusplus */
155#endif
156
157#ifndef __IMFMediaKeys_FWD_DEFINED__
158#define __IMFMediaKeys_FWD_DEFINED__
159typedef interface IMFMediaKeys IMFMediaKeys;
160#ifdef __cplusplus
161interface IMFMediaKeys;
162#endif /* __cplusplus */
163#endif
164
165#ifndef __IMFMediaEngineClassFactoryEx_FWD_DEFINED__
166#define __IMFMediaEngineClassFactoryEx_FWD_DEFINED__
167typedef interface IMFMediaEngineClassFactoryEx IMFMediaEngineClassFactoryEx;
168#ifdef __cplusplus
169interface IMFMediaEngineClassFactoryEx;
170#endif /* __cplusplus */
171#endif
172
173#ifndef __IMFMediaEngineClassFactory2_FWD_DEFINED__
174#define __IMFMediaEngineClassFactory2_FWD_DEFINED__
175typedef interface IMFMediaEngineClassFactory2 IMFMediaEngineClassFactory2;
176#ifdef __cplusplus
177interface IMFMediaEngineClassFactory2;
178#endif /* __cplusplus */
179#endif
180
181/* Headers for imported files */
182
183#include <mfidl.h>
184
185#ifdef __cplusplus
186extern "C" {
187#endif
188
189EXTERN_GUID(CLSID_MFMediaEngineClassFactory, 0xb44392da, 0x499b, 0x446b, 0xa4, 0xcb, 0x00, 0x5f, 0xea, 0xd0, 0xe6, 0xd5);
190EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_CATEGORY, 0xc8d4c51d, 0x350e, 0x41f2, 0xba, 0x46, 0xfa, 0xeb, 0xbb, 0x08, 0x57, 0xf6);
191EXTERN_GUID(MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE, 0xd2cb93d1, 0x116a, 0x44f2, 0x93, 0x85, 0xf7, 0xd0, 0xfd, 0xa2, 0xfb, 0x46);
192EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE, 0x4e0212e2, 0xe18f, 0x41e1, 0x95, 0xe5, 0xc0, 0xe7, 0xe9, 0x23, 0x5b, 0xc3);
193EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE9, 0x052c2d39, 0x40c0, 0x4188, 0xab, 0x86, 0xf8, 0x28, 0x27, 0x3b, 0x75, 0x22);
194EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE10, 0x11a47afd, 0x6589, 0x4124, 0xb3, 0x12, 0x61, 0x58, 0xec, 0x51, 0x7f, 0xc3);
195EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE11, 0x1cf1315f, 0xce3f, 0x4035, 0x93, 0x91, 0x16, 0x14, 0x2f, 0x77, 0x51, 0x89);
196EXTERN_GUID(MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE_EDGE, 0xa6f3e465, 0x3aca, 0x442c, 0xa3, 0xf0, 0xad, 0x6d, 0xda, 0xd8, 0x39, 0xae);
197EXTERN_GUID(MF_MEDIA_ENGINE_CALLBACK, 0xc60381b8, 0x83a4, 0x41f8, 0xa3, 0xd0, 0xde, 0x05, 0x07, 0x68, 0x49, 0xa9);
198EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE, 0x3ef26ad4, 0xdc54, 0x45de, 0xb9, 0xaf, 0x76, 0xc8, 0xc6, 0x6b, 0xfa, 0x8e);
199EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WIN10, 0x5b25e089, 0x6ca7, 0x4139, 0xa2, 0xcb, 0xfc, 0xaa, 0xb3, 0x95, 0x52, 0xa3);
200EXTERN_GUID(MF_MEDIA_ENGINE_COMPATIBILITY_MODE_WWA_EDGE, 0x15b29098, 0x9f01, 0x4e4d, 0xb6, 0x5a, 0xc0, 0x6c, 0x6c, 0x89, 0xda, 0x2a);
201EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS, 0xe0350223, 0x5aaf, 0x4d76, 0xa7, 0xc3, 0x06, 0xde, 0x70, 0x89, 0x4d, 0xb4);
202EXTERN_GUID(MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER, 0xfdd6dfaa, 0xbd85, 0x4af3, 0x9e, 0x0f, 0xa0, 0x1d, 0x53, 0x9d, 0x87, 0x6a);
203EXTERN_GUID(MF_MEDIA_ENGINE_CONTINUE_ON_CODEC_ERROR, 0xdbcdb7f9, 0x48e4, 0x4295, 0xb7, 0x0d, 0xd5, 0x18, 0x23, 0x4e, 0xeb, 0x38);
204EXTERN_GUID(MF_MEDIA_ENGINE_COREWINDOW, 0xfccae4dc, 0x0b7f, 0x41c2, 0x9f, 0x96, 0x46, 0x59, 0x94, 0x8a, 0xcd, 0xdc);
205EXTERN_GUID(MF_MEDIA_ENGINE_DXGI_MANAGER, 0x065702da, 0x1094, 0x486d, 0x86, 0x17, 0xee, 0x7c, 0xc4, 0xee, 0x46, 0x48);
206EXTERN_GUID(MF_MEDIA_ENGINE_EME_CALLBACK, 0x494553a7, 0xa481, 0x4cb7, 0xbe, 0xc5, 0x38, 0x09, 0x03, 0x51, 0x37, 0x31);
207EXTERN_GUID(MF_MEDIA_ENGINE_EXTENSION, 0x3109fd46, 0x060d, 0x4b62, 0x8d, 0xcf, 0xfa, 0xff, 0x81, 0x13, 0x18, 0xd2);
208EXTERN_GUID(MF_MEDIA_ENGINE_MEDIA_PLAYER_MODE, 0x3ddd8d45, 0x5aa1, 0x4112, 0x82, 0xe5, 0x36, 0xf6, 0xa2, 0x19, 0x7e, 0x6e);
209EXTERN_GUID(MF_MEDIA_ENGINE_NEEDKEY_CALLBACK, 0x7ea80843, 0xb6e4, 0x432c, 0x8e, 0xa4, 0x78, 0x48, 0xff, 0xe4, 0x22, 0x0e);
210EXTERN_GUID(MF_MEDIA_ENGINE_OPM_HWND, 0xa0be8ee7, 0x0572, 0x4f2c, 0xa8, 0x01, 0x2a, 0x15, 0x1b, 0xd3, 0xe7, 0x26);
211EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_HWND, 0xd988879b, 0x67c9, 0x4d92, 0xba, 0xa7, 0x6e, 0xad, 0xd4, 0x46, 0x03, 0x9d);
212EXTERN_GUID(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, 0x6debd26f, 0x6ab9, 0x4d7e, 0xb0, 0xee, 0xc6, 0x1a, 0x73, 0xff, 0xad, 0x15);
213EXTERN_GUID(MF_MEDIA_ENGINE_SOURCE_RESOLVER_CONFIG_STORE, 0x0ac0c497, 0xb3c4, 0x48c9, 0x9c, 0xde, 0xbb, 0x8c, 0xa2, 0x44, 0x2c, 0xa3);
214EXTERN_GUID(MF_MEDIA_ENGINE_STREAM_CONTAINS_ALPHA_CHANNEL, 0x5cbfaf44, 0xd2b2, 0x4cfb, 0x80, 0xa7, 0xd4, 0x29, 0xc7, 0x4c, 0x78, 0x9d);
215EXTERN_GUID(MF_MEDIA_ENGINE_SYNCHRONOUS_CLOSE, 0xc3c2e12f, 0x7e0e, 0x4e43, 0xb9, 0x1c, 0xdc, 0x99, 0x2c, 0xcd, 0xfa, 0x5e);
216EXTERN_GUID(MF_MEDIA_ENGINE_TELEMETRY_APPLICATION_ID, 0x1e7b273b, 0xa7e4, 0x402a, 0x8f, 0x51, 0xc4, 0x8e, 0x88, 0xa2, 0xca, 0xbc);
217EXTERN_GUID(MF_MEDIA_ENGINE_TRACK_ID, 0x65bea312, 0x4043, 0x4815, 0x8e, 0xab, 0x44, 0xdc, 0xe2, 0xef, 0x8f, 0x2a);
218EXTERN_GUID(MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT, 0x5066893c, 0x8cf9, 0x42bc, 0x8b, 0x8a, 0x47, 0x22, 0x12, 0xe5, 0x27, 0x26);
219typedef enum MF_MEDIA_ENGINE_NETWORK {
220 MF_MEDIA_ENGINE_NETWORK_EMPTY = 0,
221 MF_MEDIA_ENGINE_NETWORK_IDLE = 1,
222 MF_MEDIA_ENGINE_NETWORK_LOADING = 2,
223 MF_MEDIA_ENGINE_NETWORK_NO_SOURCE = 3
224} MF_MEDIA_ENGINE_NETWORK;
225typedef enum MF_MEDIA_ENGINE_ERR {
226 MF_MEDIA_ENGINE_ERR_NOERROR = 0,
227 MF_MEDIA_ENGINE_ERR_ABORTED = 1,
228 MF_MEDIA_ENGINE_ERR_NETWORK = 2,
229 MF_MEDIA_ENGINE_ERR_DECODE = 3,
230 MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED = 4,
231 MF_MEDIA_ENGINE_ERR_ENCRYPTED = 5
232} MF_MEDIA_ENGINE_ERR;
233typedef enum MF_MEDIA_ENGINE_PRELOAD {
234 MF_MEDIA_ENGINE_PRELOAD_MISSING = 0,
235 MF_MEDIA_ENGINE_PRELOAD_EMPTY = 1,
236 MF_MEDIA_ENGINE_PRELOAD_NONE = 2,
237 MF_MEDIA_ENGINE_PRELOAD_METADATA = 3,
238 MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC = 4
239} MF_MEDIA_ENGINE_PRELOAD;
240typedef enum MF_MEDIA_ENGINE_CANPLAY {
241 MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED = 0,
242 MF_MEDIA_ENGINE_CANPLAY_MAYBE = 1,
243 MF_MEDIA_ENGINE_CANPLAY_PROBABLY = 2
244} MF_MEDIA_ENGINE_CANPLAY;
245#ifndef _MFVideoNormalizedRect_
246#define _MFVideoNormalizedRect_
247typedef struct MFVideoNormalizedRect {
248 float left;
249 float top;
250 float right;
251 float bottom;
252} MFVideoNormalizedRect;
253#endif
254typedef enum MF_MEDIA_ENGINE_CREATEFLAGS {
255 MF_MEDIA_ENGINE_AUDIOONLY = 0x1,
256 MF_MEDIA_ENGINE_WAITFORSTABLE_STATE = 0x2,
257 MF_MEDIA_ENGINE_FORCEMUTE = 0x4,
258 MF_MEDIA_ENGINE_REAL_TIME_MODE = 0x8,
259 MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS = 0x10,
260 MF_MEDIA_ENGINE_CREATEFLAGS_MASK = 0x1f
261} MF_MEDIA_ENGINE_CREATEFLAGS;
262typedef enum MF_MEDIA_ENGINE_EVENT {
263 MF_MEDIA_ENGINE_EVENT_LOADSTART = 1,
264 MF_MEDIA_ENGINE_EVENT_PROGRESS = 2,
265 MF_MEDIA_ENGINE_EVENT_SUSPEND = 3,
266 MF_MEDIA_ENGINE_EVENT_ABORT = 4,
267 MF_MEDIA_ENGINE_EVENT_ERROR = 5,
268 MF_MEDIA_ENGINE_EVENT_EMPTIED = 6,
269 MF_MEDIA_ENGINE_EVENT_STALLED = 7,
270 MF_MEDIA_ENGINE_EVENT_PLAY = 8,
271 MF_MEDIA_ENGINE_EVENT_PAUSE = 9,
272 MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA = 10,
273 MF_MEDIA_ENGINE_EVENT_LOADEDDATA = 11,
274 MF_MEDIA_ENGINE_EVENT_WAITING = 12,
275 MF_MEDIA_ENGINE_EVENT_PLAYING = 13,
276 MF_MEDIA_ENGINE_EVENT_CANPLAY = 14,
277 MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH = 15,
278 MF_MEDIA_ENGINE_EVENT_SEEKING = 16,
279 MF_MEDIA_ENGINE_EVENT_SEEKED = 17,
280 MF_MEDIA_ENGINE_EVENT_TIMEUPDATE = 18,
281 MF_MEDIA_ENGINE_EVENT_ENDED = 19,
282 MF_MEDIA_ENGINE_EVENT_RATECHANGE = 20,
283 MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE = 21,
284 MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE = 22,
285 MF_MEDIA_ENGINE_EVENT_FORMATCHANGE = 1000,
286 MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS = 1001,
287 MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER = 1002,
288 MF_MEDIA_ENGINE_EVENT_BALANCECHANGE = 1003,
289 MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE = 1004,
290 MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED = 1005,
291 MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED = 1006,
292 MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED = 1007,
293 MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE = 1008,
294 MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY = 1009,
295 MF_MEDIA_ENGINE_EVENT_TRACKSCHANGE = 1010,
296 MF_MEDIA_ENGINE_EVENT_OPMINFO = 1011,
297 MF_MEDIA_ENGINE_EVENT_RESOURCELOST = 1012,
298 MF_MEDIA_ENGINE_EVENT_DELAYLOADEVENT_CHANGED = 1013,
299 MF_MEDIA_ENGINE_EVENT_STREAMRENDERINGERROR = 1014,
300 MF_MEDIA_ENGINE_EVENT_SUPPORTEDRATES_CHANGED = 1015,
301 MF_MEDIA_ENGINE_EVENT_AUDIOENDPOINTCHANGE = 1016
302} MF_MEDIA_ENGINE_EVENT;
303typedef enum MF_MEDIA_ENGINE_READY {
304 MF_MEDIA_ENGINE_READY_HAVE_NOTHING = 0,
305 MF_MEDIA_ENGINE_READY_HAVE_METADATA = 1,
306 MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA = 2,
307 MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA = 3,
308 MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA = 4
309} MF_MEDIA_ENGINE_READY;
310/*****************************************************************************
311 * IMFMediaError interface
312 */
313#ifndef __IMFMediaError_INTERFACE_DEFINED__
314#define __IMFMediaError_INTERFACE_DEFINED__
315
316DEFINE_GUID(IID_IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c);
317#if defined(__cplusplus) && !defined(CINTERFACE)
318MIDL_INTERFACE("fc0e10d2-ab2a-4501-a951-06bb1075184c")
319IMFMediaError : public IUnknown
320{
321 virtual USHORT STDMETHODCALLTYPE GetErrorCode(
322 ) = 0;
323
324 virtual HRESULT STDMETHODCALLTYPE GetExtendedErrorCode(
325 ) = 0;
326
327 virtual HRESULT STDMETHODCALLTYPE SetErrorCode(
328 MF_MEDIA_ENGINE_ERR error) = 0;
329
330 virtual HRESULT STDMETHODCALLTYPE SetExtendedErrorCode(
331 HRESULT error) = 0;
332
333};
334#ifdef __CRT_UUID_DECL
335__CRT_UUID_DECL(IMFMediaError, 0xfc0e10d2, 0xab2a, 0x4501, 0xa9,0x51, 0x06,0xbb,0x10,0x75,0x18,0x4c)
336#endif
337#else
338typedef struct IMFMediaErrorVtbl {
339 BEGIN_INTERFACE
340
341 /*** IUnknown methods ***/
342 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
343 IMFMediaError *This,
344 REFIID riid,
345 void **ppvObject);
346
347 ULONG (STDMETHODCALLTYPE *AddRef)(
348 IMFMediaError *This);
349
350 ULONG (STDMETHODCALLTYPE *Release)(
351 IMFMediaError *This);
352
353 /*** IMFMediaError methods ***/
354 USHORT (STDMETHODCALLTYPE *GetErrorCode)(
355 IMFMediaError *This);
356
357 HRESULT (STDMETHODCALLTYPE *GetExtendedErrorCode)(
358 IMFMediaError *This);
359
360 HRESULT (STDMETHODCALLTYPE *SetErrorCode)(
361 IMFMediaError *This,
362 MF_MEDIA_ENGINE_ERR error);
363
364 HRESULT (STDMETHODCALLTYPE *SetExtendedErrorCode)(
365 IMFMediaError *This,
366 HRESULT error);
367
368 END_INTERFACE
369} IMFMediaErrorVtbl;
370
371interface IMFMediaError {
372 CONST_VTBL IMFMediaErrorVtbl* lpVtbl;
373};
374
375#ifdef COBJMACROS
376#ifndef WIDL_C_INLINE_WRAPPERS
377/*** IUnknown methods ***/
378#define IMFMediaError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
379#define IMFMediaError_AddRef(This) (This)->lpVtbl->AddRef(This)
380#define IMFMediaError_Release(This) (This)->lpVtbl->Release(This)
381/*** IMFMediaError methods ***/
382#define IMFMediaError_GetErrorCode(This) (This)->lpVtbl->GetErrorCode(This)
383#define IMFMediaError_GetExtendedErrorCode(This) (This)->lpVtbl->GetExtendedErrorCode(This)
384#define IMFMediaError_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error)
385#define IMFMediaError_SetExtendedErrorCode(This,error) (This)->lpVtbl->SetExtendedErrorCode(This,error)
386#else
387/*** IUnknown methods ***/
388static inline HRESULT IMFMediaError_QueryInterface(IMFMediaError* This,REFIID riid,void **ppvObject) {
389 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
390}
391static inline ULONG IMFMediaError_AddRef(IMFMediaError* This) {
392 return This->lpVtbl->AddRef(This);
393}
394static inline ULONG IMFMediaError_Release(IMFMediaError* This) {
395 return This->lpVtbl->Release(This);
396}
397/*** IMFMediaError methods ***/
398static inline USHORT IMFMediaError_GetErrorCode(IMFMediaError* This) {
399 return This->lpVtbl->GetErrorCode(This);
400}
401static inline HRESULT IMFMediaError_GetExtendedErrorCode(IMFMediaError* This) {
402 return This->lpVtbl->GetExtendedErrorCode(This);
403}
404static inline HRESULT IMFMediaError_SetErrorCode(IMFMediaError* This,MF_MEDIA_ENGINE_ERR error) {
405 return This->lpVtbl->SetErrorCode(This,error);
406}
407static inline HRESULT IMFMediaError_SetExtendedErrorCode(IMFMediaError* This,HRESULT error) {
408 return This->lpVtbl->SetExtendedErrorCode(This,error);
409}
410#endif
411#endif
412
413#endif
414
415
416#endif /* __IMFMediaError_INTERFACE_DEFINED__ */
417
418/*****************************************************************************
419 * IMFMediaEngineSrcElements interface
420 */
421#ifndef __IMFMediaEngineSrcElements_INTERFACE_DEFINED__
422#define __IMFMediaEngineSrcElements_INTERFACE_DEFINED__
423
424DEFINE_GUID(IID_IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea);
425#if defined(__cplusplus) && !defined(CINTERFACE)
426MIDL_INTERFACE("7a5e5354-b114-4c72-b991-3131d75032ea")
427IMFMediaEngineSrcElements : public IUnknown
428{
429 virtual DWORD STDMETHODCALLTYPE GetLength(
430 ) = 0;
431
432 virtual HRESULT STDMETHODCALLTYPE GetURL(
433 DWORD index,
434 BSTR *url) = 0;
435
436 virtual HRESULT STDMETHODCALLTYPE GetType(
437 DWORD index,
438 BSTR *type) = 0;
439
440 virtual HRESULT STDMETHODCALLTYPE GetMedia(
441 DWORD index,
442 BSTR *media) = 0;
443
444 virtual HRESULT STDMETHODCALLTYPE AddElement(
445 BSTR url,
446 BSTR type,
447 BSTR media) = 0;
448
449 virtual HRESULT STDMETHODCALLTYPE RemoveAllElements(
450 ) = 0;
451
452};
453#ifdef __CRT_UUID_DECL
454__CRT_UUID_DECL(IMFMediaEngineSrcElements, 0x7a5e5354, 0xb114, 0x4c72, 0xb9,0x91, 0x31,0x31,0xd7,0x50,0x32,0xea)
455#endif
456#else
457typedef struct IMFMediaEngineSrcElementsVtbl {
458 BEGIN_INTERFACE
459
460 /*** IUnknown methods ***/
461 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
462 IMFMediaEngineSrcElements *This,
463 REFIID riid,
464 void **ppvObject);
465
466 ULONG (STDMETHODCALLTYPE *AddRef)(
467 IMFMediaEngineSrcElements *This);
468
469 ULONG (STDMETHODCALLTYPE *Release)(
470 IMFMediaEngineSrcElements *This);
471
472 /*** IMFMediaEngineSrcElements methods ***/
473 DWORD (STDMETHODCALLTYPE *GetLength)(
474 IMFMediaEngineSrcElements *This);
475
476 HRESULT (STDMETHODCALLTYPE *GetURL)(
477 IMFMediaEngineSrcElements *This,
478 DWORD index,
479 BSTR *url);
480
481 HRESULT (STDMETHODCALLTYPE *GetType)(
482 IMFMediaEngineSrcElements *This,
483 DWORD index,
484 BSTR *type);
485
486 HRESULT (STDMETHODCALLTYPE *GetMedia)(
487 IMFMediaEngineSrcElements *This,
488 DWORD index,
489 BSTR *media);
490
491 HRESULT (STDMETHODCALLTYPE *AddElement)(
492 IMFMediaEngineSrcElements *This,
493 BSTR url,
494 BSTR type,
495 BSTR media);
496
497 HRESULT (STDMETHODCALLTYPE *RemoveAllElements)(
498 IMFMediaEngineSrcElements *This);
499
500 END_INTERFACE
501} IMFMediaEngineSrcElementsVtbl;
502
503interface IMFMediaEngineSrcElements {
504 CONST_VTBL IMFMediaEngineSrcElementsVtbl* lpVtbl;
505};
506
507#ifdef COBJMACROS
508#ifndef WIDL_C_INLINE_WRAPPERS
509/*** IUnknown methods ***/
510#define IMFMediaEngineSrcElements_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
511#define IMFMediaEngineSrcElements_AddRef(This) (This)->lpVtbl->AddRef(This)
512#define IMFMediaEngineSrcElements_Release(This) (This)->lpVtbl->Release(This)
513/*** IMFMediaEngineSrcElements methods ***/
514#define IMFMediaEngineSrcElements_GetLength(This) (This)->lpVtbl->GetLength(This)
515#define IMFMediaEngineSrcElements_GetURL(This,index,url) (This)->lpVtbl->GetURL(This,index,url)
516#define IMFMediaEngineSrcElements_GetType(This,index,type) (This)->lpVtbl->GetType(This,index,type)
517#define IMFMediaEngineSrcElements_GetMedia(This,index,media) (This)->lpVtbl->GetMedia(This,index,media)
518#define IMFMediaEngineSrcElements_AddElement(This,url,type,media) (This)->lpVtbl->AddElement(This,url,type,media)
519#define IMFMediaEngineSrcElements_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This)
520#else
521/*** IUnknown methods ***/
522static inline HRESULT IMFMediaEngineSrcElements_QueryInterface(IMFMediaEngineSrcElements* This,REFIID riid,void **ppvObject) {
523 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
524}
525static inline ULONG IMFMediaEngineSrcElements_AddRef(IMFMediaEngineSrcElements* This) {
526 return This->lpVtbl->AddRef(This);
527}
528static inline ULONG IMFMediaEngineSrcElements_Release(IMFMediaEngineSrcElements* This) {
529 return This->lpVtbl->Release(This);
530}
531/*** IMFMediaEngineSrcElements methods ***/
532static inline DWORD IMFMediaEngineSrcElements_GetLength(IMFMediaEngineSrcElements* This) {
533 return This->lpVtbl->GetLength(This);
534}
535static inline HRESULT IMFMediaEngineSrcElements_GetURL(IMFMediaEngineSrcElements* This,DWORD index,BSTR *url) {
536 return This->lpVtbl->GetURL(This,index,url);
537}
538static inline HRESULT IMFMediaEngineSrcElements_GetType(IMFMediaEngineSrcElements* This,DWORD index,BSTR *type) {
539 return This->lpVtbl->GetType(This,index,type);
540}
541static inline HRESULT IMFMediaEngineSrcElements_GetMedia(IMFMediaEngineSrcElements* This,DWORD index,BSTR *media) {
542 return This->lpVtbl->GetMedia(This,index,media);
543}
544static inline HRESULT IMFMediaEngineSrcElements_AddElement(IMFMediaEngineSrcElements* This,BSTR url,BSTR type,BSTR media) {
545 return This->lpVtbl->AddElement(This,url,type,media);
546}
547static inline HRESULT IMFMediaEngineSrcElements_RemoveAllElements(IMFMediaEngineSrcElements* This) {
548 return This->lpVtbl->RemoveAllElements(This);
549}
550#endif
551#endif
552
553#endif
554
555
556#endif /* __IMFMediaEngineSrcElements_INTERFACE_DEFINED__ */
557
558/*****************************************************************************
559 * IMFMediaTimeRange interface
560 */
561#ifndef __IMFMediaTimeRange_INTERFACE_DEFINED__
562#define __IMFMediaTimeRange_INTERFACE_DEFINED__
563
564DEFINE_GUID(IID_IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c);
565#if defined(__cplusplus) && !defined(CINTERFACE)
566MIDL_INTERFACE("db71a2fc-078a-414e-9df9-8c2531b0aa6c")
567IMFMediaTimeRange : public IUnknown
568{
569 virtual DWORD STDMETHODCALLTYPE GetLength(
570 ) = 0;
571
572 virtual HRESULT STDMETHODCALLTYPE GetStart(
573 DWORD index,
574 double *start) = 0;
575
576 virtual HRESULT STDMETHODCALLTYPE GetEnd(
577 DWORD index,
578 double *end) = 0;
579
580 virtual WINBOOL STDMETHODCALLTYPE ContainsTime(
581 double time) = 0;
582
583 virtual HRESULT STDMETHODCALLTYPE AddRange(
584 double start,
585 double end) = 0;
586
587 virtual HRESULT STDMETHODCALLTYPE Clear(
588 ) = 0;
589
590};
591#ifdef __CRT_UUID_DECL
592__CRT_UUID_DECL(IMFMediaTimeRange, 0xdb71a2fc, 0x078a, 0x414e, 0x9d,0xf9, 0x8c,0x25,0x31,0xb0,0xaa,0x6c)
593#endif
594#else
595typedef struct IMFMediaTimeRangeVtbl {
596 BEGIN_INTERFACE
597
598 /*** IUnknown methods ***/
599 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
600 IMFMediaTimeRange *This,
601 REFIID riid,
602 void **ppvObject);
603
604 ULONG (STDMETHODCALLTYPE *AddRef)(
605 IMFMediaTimeRange *This);
606
607 ULONG (STDMETHODCALLTYPE *Release)(
608 IMFMediaTimeRange *This);
609
610 /*** IMFMediaTimeRange methods ***/
611 DWORD (STDMETHODCALLTYPE *GetLength)(
612 IMFMediaTimeRange *This);
613
614 HRESULT (STDMETHODCALLTYPE *GetStart)(
615 IMFMediaTimeRange *This,
616 DWORD index,
617 double *start);
618
619 HRESULT (STDMETHODCALLTYPE *GetEnd)(
620 IMFMediaTimeRange *This,
621 DWORD index,
622 double *end);
623
624 WINBOOL (STDMETHODCALLTYPE *ContainsTime)(
625 IMFMediaTimeRange *This,
626 double time);
627
628 HRESULT (STDMETHODCALLTYPE *AddRange)(
629 IMFMediaTimeRange *This,
630 double start,
631 double end);
632
633 HRESULT (STDMETHODCALLTYPE *Clear)(
634 IMFMediaTimeRange *This);
635
636 END_INTERFACE
637} IMFMediaTimeRangeVtbl;
638
639interface IMFMediaTimeRange {
640 CONST_VTBL IMFMediaTimeRangeVtbl* lpVtbl;
641};
642
643#ifdef COBJMACROS
644#ifndef WIDL_C_INLINE_WRAPPERS
645/*** IUnknown methods ***/
646#define IMFMediaTimeRange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
647#define IMFMediaTimeRange_AddRef(This) (This)->lpVtbl->AddRef(This)
648#define IMFMediaTimeRange_Release(This) (This)->lpVtbl->Release(This)
649/*** IMFMediaTimeRange methods ***/
650#define IMFMediaTimeRange_GetLength(This) (This)->lpVtbl->GetLength(This)
651#define IMFMediaTimeRange_GetStart(This,index,start) (This)->lpVtbl->GetStart(This,index,start)
652#define IMFMediaTimeRange_GetEnd(This,index,end) (This)->lpVtbl->GetEnd(This,index,end)
653#define IMFMediaTimeRange_ContainsTime(This,time) (This)->lpVtbl->ContainsTime(This,time)
654#define IMFMediaTimeRange_AddRange(This,start,end) (This)->lpVtbl->AddRange(This,start,end)
655#define IMFMediaTimeRange_Clear(This) (This)->lpVtbl->Clear(This)
656#else
657/*** IUnknown methods ***/
658static inline HRESULT IMFMediaTimeRange_QueryInterface(IMFMediaTimeRange* This,REFIID riid,void **ppvObject) {
659 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
660}
661static inline ULONG IMFMediaTimeRange_AddRef(IMFMediaTimeRange* This) {
662 return This->lpVtbl->AddRef(This);
663}
664static inline ULONG IMFMediaTimeRange_Release(IMFMediaTimeRange* This) {
665 return This->lpVtbl->Release(This);
666}
667/*** IMFMediaTimeRange methods ***/
668static inline DWORD IMFMediaTimeRange_GetLength(IMFMediaTimeRange* This) {
669 return This->lpVtbl->GetLength(This);
670}
671static inline HRESULT IMFMediaTimeRange_GetStart(IMFMediaTimeRange* This,DWORD index,double *start) {
672 return This->lpVtbl->GetStart(This,index,start);
673}
674static inline HRESULT IMFMediaTimeRange_GetEnd(IMFMediaTimeRange* This,DWORD index,double *end) {
675 return This->lpVtbl->GetEnd(This,index,end);
676}
677static inline WINBOOL IMFMediaTimeRange_ContainsTime(IMFMediaTimeRange* This,double time) {
678 return This->lpVtbl->ContainsTime(This,time);
679}
680static inline HRESULT IMFMediaTimeRange_AddRange(IMFMediaTimeRange* This,double start,double end) {
681 return This->lpVtbl->AddRange(This,start,end);
682}
683static inline HRESULT IMFMediaTimeRange_Clear(IMFMediaTimeRange* This) {
684 return This->lpVtbl->Clear(This);
685}
686#endif
687#endif
688
689#endif
690
691
692#endif /* __IMFMediaTimeRange_INTERFACE_DEFINED__ */
693
694/*****************************************************************************
695 * IMFMediaEngine interface
696 */
697#ifndef __IMFMediaEngine_INTERFACE_DEFINED__
698#define __IMFMediaEngine_INTERFACE_DEFINED__
699
700#undef GetCurrentTime
701DEFINE_GUID(IID_IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93);
702#if defined(__cplusplus) && !defined(CINTERFACE)
703MIDL_INTERFACE("98a1b0bb-03eb-4935-ae7c-93c1fa0e1c93")
704IMFMediaEngine : public IUnknown
705{
706 virtual HRESULT STDMETHODCALLTYPE GetError(
707 IMFMediaError **error) = 0;
708
709 virtual HRESULT STDMETHODCALLTYPE SetErrorCode(
710 MF_MEDIA_ENGINE_ERR error) = 0;
711
712 virtual HRESULT STDMETHODCALLTYPE SetSourceElements(
713 IMFMediaEngineSrcElements *elements) = 0;
714
715 virtual HRESULT STDMETHODCALLTYPE SetSource(
716 BSTR url) = 0;
717
718 virtual HRESULT STDMETHODCALLTYPE GetCurrentSource(
719 BSTR *url) = 0;
720
721 virtual USHORT STDMETHODCALLTYPE GetNetworkState(
722 ) = 0;
723
724 virtual MF_MEDIA_ENGINE_PRELOAD STDMETHODCALLTYPE GetPreload(
725 ) = 0;
726
727 virtual HRESULT STDMETHODCALLTYPE SetPreload(
728 MF_MEDIA_ENGINE_PRELOAD preload) = 0;
729
730 virtual HRESULT STDMETHODCALLTYPE GetBuffered(
731 IMFMediaTimeRange **buffered) = 0;
732
733 virtual HRESULT STDMETHODCALLTYPE Load(
734 ) = 0;
735
736 virtual HRESULT STDMETHODCALLTYPE CanPlayType(
737 BSTR type,
738 MF_MEDIA_ENGINE_CANPLAY *answer) = 0;
739
740 virtual USHORT STDMETHODCALLTYPE GetReadyState(
741 ) = 0;
742
743 virtual WINBOOL STDMETHODCALLTYPE IsSeeking(
744 ) = 0;
745
746 virtual double STDMETHODCALLTYPE GetCurrentTime(
747 ) = 0;
748
749 virtual HRESULT STDMETHODCALLTYPE SetCurrentTime(
750 double time) = 0;
751
752 virtual double STDMETHODCALLTYPE GetStartTime(
753 ) = 0;
754
755 virtual double STDMETHODCALLTYPE GetDuration(
756 ) = 0;
757
758 virtual WINBOOL STDMETHODCALLTYPE IsPaused(
759 ) = 0;
760
761 virtual double STDMETHODCALLTYPE GetDefaultPlaybackRate(
762 ) = 0;
763
764 virtual HRESULT STDMETHODCALLTYPE SetDefaultPlaybackRate(
765 double rate) = 0;
766
767 virtual double STDMETHODCALLTYPE GetPlaybackRate(
768 ) = 0;
769
770 virtual HRESULT STDMETHODCALLTYPE SetPlaybackRate(
771 double rate) = 0;
772
773 virtual HRESULT STDMETHODCALLTYPE GetPlayed(
774 IMFMediaTimeRange **played) = 0;
775
776 virtual HRESULT STDMETHODCALLTYPE GetSeekable(
777 IMFMediaTimeRange **seekable) = 0;
778
779 virtual WINBOOL STDMETHODCALLTYPE IsEnded(
780 ) = 0;
781
782 virtual WINBOOL STDMETHODCALLTYPE GetAutoPlay(
783 ) = 0;
784
785 virtual HRESULT STDMETHODCALLTYPE SetAutoPlay(
786 WINBOOL autoplay) = 0;
787
788 virtual WINBOOL STDMETHODCALLTYPE GetLoop(
789 ) = 0;
790
791 virtual HRESULT STDMETHODCALLTYPE SetLoop(
792 WINBOOL loop) = 0;
793
794 virtual HRESULT STDMETHODCALLTYPE Play(
795 ) = 0;
796
797 virtual HRESULT STDMETHODCALLTYPE Pause(
798 ) = 0;
799
800 virtual WINBOOL STDMETHODCALLTYPE GetMuted(
801 ) = 0;
802
803 virtual HRESULT STDMETHODCALLTYPE SetMuted(
804 WINBOOL muted) = 0;
805
806 virtual double STDMETHODCALLTYPE GetVolume(
807 ) = 0;
808
809 virtual HRESULT STDMETHODCALLTYPE SetVolume(
810 double volume) = 0;
811
812 virtual WINBOOL STDMETHODCALLTYPE HasVideo(
813 ) = 0;
814
815 virtual WINBOOL STDMETHODCALLTYPE HasAudio(
816 ) = 0;
817
818 virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize(
819 DWORD *cx,
820 DWORD *cy) = 0;
821
822 virtual HRESULT STDMETHODCALLTYPE GetVideoAspectRatio(
823 DWORD *cx,
824 DWORD *cy) = 0;
825
826 virtual HRESULT STDMETHODCALLTYPE Shutdown(
827 ) = 0;
828
829 virtual HRESULT STDMETHODCALLTYPE TransferVideoFrame(
830 IUnknown *surface,
831 const MFVideoNormalizedRect *src,
832 const RECT *dst,
833 const MFARGB *color) = 0;
834
835 virtual HRESULT STDMETHODCALLTYPE OnVideoStreamTick(
836 LONGLONG *time) = 0;
837
838};
839#ifdef __CRT_UUID_DECL
840__CRT_UUID_DECL(IMFMediaEngine, 0x98a1b0bb, 0x03eb, 0x4935, 0xae,0x7c, 0x93,0xc1,0xfa,0x0e,0x1c,0x93)
841#endif
842#else
843typedef struct IMFMediaEngineVtbl {
844 BEGIN_INTERFACE
845
846 /*** IUnknown methods ***/
847 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
848 IMFMediaEngine *This,
849 REFIID riid,
850 void **ppvObject);
851
852 ULONG (STDMETHODCALLTYPE *AddRef)(
853 IMFMediaEngine *This);
854
855 ULONG (STDMETHODCALLTYPE *Release)(
856 IMFMediaEngine *This);
857
858 /*** IMFMediaEngine methods ***/
859 HRESULT (STDMETHODCALLTYPE *GetError)(
860 IMFMediaEngine *This,
861 IMFMediaError **error);
862
863 HRESULT (STDMETHODCALLTYPE *SetErrorCode)(
864 IMFMediaEngine *This,
865 MF_MEDIA_ENGINE_ERR error);
866
867 HRESULT (STDMETHODCALLTYPE *SetSourceElements)(
868 IMFMediaEngine *This,
869 IMFMediaEngineSrcElements *elements);
870
871 HRESULT (STDMETHODCALLTYPE *SetSource)(
872 IMFMediaEngine *This,
873 BSTR url);
874
875 HRESULT (STDMETHODCALLTYPE *GetCurrentSource)(
876 IMFMediaEngine *This,
877 BSTR *url);
878
879 USHORT (STDMETHODCALLTYPE *GetNetworkState)(
880 IMFMediaEngine *This);
881
882 MF_MEDIA_ENGINE_PRELOAD (STDMETHODCALLTYPE *GetPreload)(
883 IMFMediaEngine *This);
884
885 HRESULT (STDMETHODCALLTYPE *SetPreload)(
886 IMFMediaEngine *This,
887 MF_MEDIA_ENGINE_PRELOAD preload);
888
889 HRESULT (STDMETHODCALLTYPE *GetBuffered)(
890 IMFMediaEngine *This,
891 IMFMediaTimeRange **buffered);
892
893 HRESULT (STDMETHODCALLTYPE *Load)(
894 IMFMediaEngine *This);
895
896 HRESULT (STDMETHODCALLTYPE *CanPlayType)(
897 IMFMediaEngine *This,
898 BSTR type,
899 MF_MEDIA_ENGINE_CANPLAY *answer);
900
901 USHORT (STDMETHODCALLTYPE *GetReadyState)(
902 IMFMediaEngine *This);
903
904 WINBOOL (STDMETHODCALLTYPE *IsSeeking)(
905 IMFMediaEngine *This);
906
907 double (STDMETHODCALLTYPE *GetCurrentTime)(
908 IMFMediaEngine *This);
909
910 HRESULT (STDMETHODCALLTYPE *SetCurrentTime)(
911 IMFMediaEngine *This,
912 double time);
913
914 double (STDMETHODCALLTYPE *GetStartTime)(
915 IMFMediaEngine *This);
916
917 double (STDMETHODCALLTYPE *GetDuration)(
918 IMFMediaEngine *This);
919
920 WINBOOL (STDMETHODCALLTYPE *IsPaused)(
921 IMFMediaEngine *This);
922
923 double (STDMETHODCALLTYPE *GetDefaultPlaybackRate)(
924 IMFMediaEngine *This);
925
926 HRESULT (STDMETHODCALLTYPE *SetDefaultPlaybackRate)(
927 IMFMediaEngine *This,
928 double rate);
929
930 double (STDMETHODCALLTYPE *GetPlaybackRate)(
931 IMFMediaEngine *This);
932
933 HRESULT (STDMETHODCALLTYPE *SetPlaybackRate)(
934 IMFMediaEngine *This,
935 double rate);
936
937 HRESULT (STDMETHODCALLTYPE *GetPlayed)(
938 IMFMediaEngine *This,
939 IMFMediaTimeRange **played);
940
941 HRESULT (STDMETHODCALLTYPE *GetSeekable)(
942 IMFMediaEngine *This,
943 IMFMediaTimeRange **seekable);
944
945 WINBOOL (STDMETHODCALLTYPE *IsEnded)(
946 IMFMediaEngine *This);
947
948 WINBOOL (STDMETHODCALLTYPE *GetAutoPlay)(
949 IMFMediaEngine *This);
950
951 HRESULT (STDMETHODCALLTYPE *SetAutoPlay)(
952 IMFMediaEngine *This,
953 WINBOOL autoplay);
954
955 WINBOOL (STDMETHODCALLTYPE *GetLoop)(
956 IMFMediaEngine *This);
957
958 HRESULT (STDMETHODCALLTYPE *SetLoop)(
959 IMFMediaEngine *This,
960 WINBOOL loop);
961
962 HRESULT (STDMETHODCALLTYPE *Play)(
963 IMFMediaEngine *This);
964
965 HRESULT (STDMETHODCALLTYPE *Pause)(
966 IMFMediaEngine *This);
967
968 WINBOOL (STDMETHODCALLTYPE *GetMuted)(
969 IMFMediaEngine *This);
970
971 HRESULT (STDMETHODCALLTYPE *SetMuted)(
972 IMFMediaEngine *This,
973 WINBOOL muted);
974
975 double (STDMETHODCALLTYPE *GetVolume)(
976 IMFMediaEngine *This);
977
978 HRESULT (STDMETHODCALLTYPE *SetVolume)(
979 IMFMediaEngine *This,
980 double volume);
981
982 WINBOOL (STDMETHODCALLTYPE *HasVideo)(
983 IMFMediaEngine *This);
984
985 WINBOOL (STDMETHODCALLTYPE *HasAudio)(
986 IMFMediaEngine *This);
987
988 HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)(
989 IMFMediaEngine *This,
990 DWORD *cx,
991 DWORD *cy);
992
993 HRESULT (STDMETHODCALLTYPE *GetVideoAspectRatio)(
994 IMFMediaEngine *This,
995 DWORD *cx,
996 DWORD *cy);
997
998 HRESULT (STDMETHODCALLTYPE *Shutdown)(
999 IMFMediaEngine *This);
1000
1001 HRESULT (STDMETHODCALLTYPE *TransferVideoFrame)(
1002 IMFMediaEngine *This,
1003 IUnknown *surface,
1004 const MFVideoNormalizedRect *src,
1005 const RECT *dst,
1006 const MFARGB *color);
1007
1008 HRESULT (STDMETHODCALLTYPE *OnVideoStreamTick)(
1009 IMFMediaEngine *This,
1010 LONGLONG *time);
1011
1012 END_INTERFACE
1013} IMFMediaEngineVtbl;
1014
1015interface IMFMediaEngine {
1016 CONST_VTBL IMFMediaEngineVtbl* lpVtbl;
1017};
1018
1019#ifdef COBJMACROS
1020#ifndef WIDL_C_INLINE_WRAPPERS
1021/*** IUnknown methods ***/
1022#define IMFMediaEngine_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1023#define IMFMediaEngine_AddRef(This) (This)->lpVtbl->AddRef(This)
1024#define IMFMediaEngine_Release(This) (This)->lpVtbl->Release(This)
1025/*** IMFMediaEngine methods ***/
1026#define IMFMediaEngine_GetError(This,error) (This)->lpVtbl->GetError(This,error)
1027#define IMFMediaEngine_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error)
1028#define IMFMediaEngine_SetSourceElements(This,elements) (This)->lpVtbl->SetSourceElements(This,elements)
1029#define IMFMediaEngine_SetSource(This,url) (This)->lpVtbl->SetSource(This,url)
1030#define IMFMediaEngine_GetCurrentSource(This,url) (This)->lpVtbl->GetCurrentSource(This,url)
1031#define IMFMediaEngine_GetNetworkState(This) (This)->lpVtbl->GetNetworkState(This)
1032#define IMFMediaEngine_GetPreload(This) (This)->lpVtbl->GetPreload(This)
1033#define IMFMediaEngine_SetPreload(This,preload) (This)->lpVtbl->SetPreload(This,preload)
1034#define IMFMediaEngine_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered)
1035#define IMFMediaEngine_Load(This) (This)->lpVtbl->Load(This)
1036#define IMFMediaEngine_CanPlayType(This,type,answer) (This)->lpVtbl->CanPlayType(This,type,answer)
1037#define IMFMediaEngine_GetReadyState(This) (This)->lpVtbl->GetReadyState(This)
1038#define IMFMediaEngine_IsSeeking(This) (This)->lpVtbl->IsSeeking(This)
1039#define IMFMediaEngine_GetCurrentTime(This) (This)->lpVtbl->GetCurrentTime(This)
1040#define IMFMediaEngine_SetCurrentTime(This,time) (This)->lpVtbl->SetCurrentTime(This,time)
1041#define IMFMediaEngine_GetStartTime(This) (This)->lpVtbl->GetStartTime(This)
1042#define IMFMediaEngine_GetDuration(This) (This)->lpVtbl->GetDuration(This)
1043#define IMFMediaEngine_IsPaused(This) (This)->lpVtbl->IsPaused(This)
1044#define IMFMediaEngine_GetDefaultPlaybackRate(This) (This)->lpVtbl->GetDefaultPlaybackRate(This)
1045#define IMFMediaEngine_SetDefaultPlaybackRate(This,rate) (This)->lpVtbl->SetDefaultPlaybackRate(This,rate)
1046#define IMFMediaEngine_GetPlaybackRate(This) (This)->lpVtbl->GetPlaybackRate(This)
1047#define IMFMediaEngine_SetPlaybackRate(This,rate) (This)->lpVtbl->SetPlaybackRate(This,rate)
1048#define IMFMediaEngine_GetPlayed(This,played) (This)->lpVtbl->GetPlayed(This,played)
1049#define IMFMediaEngine_GetSeekable(This,seekable) (This)->lpVtbl->GetSeekable(This,seekable)
1050#define IMFMediaEngine_IsEnded(This) (This)->lpVtbl->IsEnded(This)
1051#define IMFMediaEngine_GetAutoPlay(This) (This)->lpVtbl->GetAutoPlay(This)
1052#define IMFMediaEngine_SetAutoPlay(This,autoplay) (This)->lpVtbl->SetAutoPlay(This,autoplay)
1053#define IMFMediaEngine_GetLoop(This) (This)->lpVtbl->GetLoop(This)
1054#define IMFMediaEngine_SetLoop(This,loop) (This)->lpVtbl->SetLoop(This,loop)
1055#define IMFMediaEngine_Play(This) (This)->lpVtbl->Play(This)
1056#define IMFMediaEngine_Pause(This) (This)->lpVtbl->Pause(This)
1057#define IMFMediaEngine_GetMuted(This) (This)->lpVtbl->GetMuted(This)
1058#define IMFMediaEngine_SetMuted(This,muted) (This)->lpVtbl->SetMuted(This,muted)
1059#define IMFMediaEngine_GetVolume(This) (This)->lpVtbl->GetVolume(This)
1060#define IMFMediaEngine_SetVolume(This,volume) (This)->lpVtbl->SetVolume(This,volume)
1061#define IMFMediaEngine_HasVideo(This) (This)->lpVtbl->HasVideo(This)
1062#define IMFMediaEngine_HasAudio(This) (This)->lpVtbl->HasAudio(This)
1063#define IMFMediaEngine_GetNativeVideoSize(This,cx,cy) (This)->lpVtbl->GetNativeVideoSize(This,cx,cy)
1064#define IMFMediaEngine_GetVideoAspectRatio(This,cx,cy) (This)->lpVtbl->GetVideoAspectRatio(This,cx,cy)
1065#define IMFMediaEngine_Shutdown(This) (This)->lpVtbl->Shutdown(This)
1066#define IMFMediaEngine_TransferVideoFrame(This,surface,src,dst,color) (This)->lpVtbl->TransferVideoFrame(This,surface,src,dst,color)
1067#define IMFMediaEngine_OnVideoStreamTick(This,time) (This)->lpVtbl->OnVideoStreamTick(This,time)
1068#else
1069/*** IUnknown methods ***/
1070static inline HRESULT IMFMediaEngine_QueryInterface(IMFMediaEngine* This,REFIID riid,void **ppvObject) {
1071 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1072}
1073static inline ULONG IMFMediaEngine_AddRef(IMFMediaEngine* This) {
1074 return This->lpVtbl->AddRef(This);
1075}
1076static inline ULONG IMFMediaEngine_Release(IMFMediaEngine* This) {
1077 return This->lpVtbl->Release(This);
1078}
1079/*** IMFMediaEngine methods ***/
1080static inline HRESULT IMFMediaEngine_GetError(IMFMediaEngine* This,IMFMediaError **error) {
1081 return This->lpVtbl->GetError(This,error);
1082}
1083static inline HRESULT IMFMediaEngine_SetErrorCode(IMFMediaEngine* This,MF_MEDIA_ENGINE_ERR error) {
1084 return This->lpVtbl->SetErrorCode(This,error);
1085}
1086static inline HRESULT IMFMediaEngine_SetSourceElements(IMFMediaEngine* This,IMFMediaEngineSrcElements *elements) {
1087 return This->lpVtbl->SetSourceElements(This,elements);
1088}
1089static inline HRESULT IMFMediaEngine_SetSource(IMFMediaEngine* This,BSTR url) {
1090 return This->lpVtbl->SetSource(This,url);
1091}
1092static inline HRESULT IMFMediaEngine_GetCurrentSource(IMFMediaEngine* This,BSTR *url) {
1093 return This->lpVtbl->GetCurrentSource(This,url);
1094}
1095static inline USHORT IMFMediaEngine_GetNetworkState(IMFMediaEngine* This) {
1096 return This->lpVtbl->GetNetworkState(This);
1097}
1098static inline MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine_GetPreload(IMFMediaEngine* This) {
1099 return This->lpVtbl->GetPreload(This);
1100}
1101static inline HRESULT IMFMediaEngine_SetPreload(IMFMediaEngine* This,MF_MEDIA_ENGINE_PRELOAD preload) {
1102 return This->lpVtbl->SetPreload(This,preload);
1103}
1104static inline HRESULT IMFMediaEngine_GetBuffered(IMFMediaEngine* This,IMFMediaTimeRange **buffered) {
1105 return This->lpVtbl->GetBuffered(This,buffered);
1106}
1107static inline HRESULT IMFMediaEngine_Load(IMFMediaEngine* This) {
1108 return This->lpVtbl->Load(This);
1109}
1110static inline HRESULT IMFMediaEngine_CanPlayType(IMFMediaEngine* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) {
1111 return This->lpVtbl->CanPlayType(This,type,answer);
1112}
1113static inline USHORT IMFMediaEngine_GetReadyState(IMFMediaEngine* This) {
1114 return This->lpVtbl->GetReadyState(This);
1115}
1116static inline WINBOOL IMFMediaEngine_IsSeeking(IMFMediaEngine* This) {
1117 return This->lpVtbl->IsSeeking(This);
1118}
1119static inline double IMFMediaEngine_GetCurrentTime(IMFMediaEngine* This) {
1120 return This->lpVtbl->GetCurrentTime(This);
1121}
1122static inline HRESULT IMFMediaEngine_SetCurrentTime(IMFMediaEngine* This,double time) {
1123 return This->lpVtbl->SetCurrentTime(This,time);
1124}
1125static inline double IMFMediaEngine_GetStartTime(IMFMediaEngine* This) {
1126 return This->lpVtbl->GetStartTime(This);
1127}
1128static inline double IMFMediaEngine_GetDuration(IMFMediaEngine* This) {
1129 return This->lpVtbl->GetDuration(This);
1130}
1131static inline WINBOOL IMFMediaEngine_IsPaused(IMFMediaEngine* This) {
1132 return This->lpVtbl->IsPaused(This);
1133}
1134static inline double IMFMediaEngine_GetDefaultPlaybackRate(IMFMediaEngine* This) {
1135 return This->lpVtbl->GetDefaultPlaybackRate(This);
1136}
1137static inline HRESULT IMFMediaEngine_SetDefaultPlaybackRate(IMFMediaEngine* This,double rate) {
1138 return This->lpVtbl->SetDefaultPlaybackRate(This,rate);
1139}
1140static inline double IMFMediaEngine_GetPlaybackRate(IMFMediaEngine* This) {
1141 return This->lpVtbl->GetPlaybackRate(This);
1142}
1143static inline HRESULT IMFMediaEngine_SetPlaybackRate(IMFMediaEngine* This,double rate) {
1144 return This->lpVtbl->SetPlaybackRate(This,rate);
1145}
1146static inline HRESULT IMFMediaEngine_GetPlayed(IMFMediaEngine* This,IMFMediaTimeRange **played) {
1147 return This->lpVtbl->GetPlayed(This,played);
1148}
1149static inline HRESULT IMFMediaEngine_GetSeekable(IMFMediaEngine* This,IMFMediaTimeRange **seekable) {
1150 return This->lpVtbl->GetSeekable(This,seekable);
1151}
1152static inline WINBOOL IMFMediaEngine_IsEnded(IMFMediaEngine* This) {
1153 return This->lpVtbl->IsEnded(This);
1154}
1155static inline WINBOOL IMFMediaEngine_GetAutoPlay(IMFMediaEngine* This) {
1156 return This->lpVtbl->GetAutoPlay(This);
1157}
1158static inline HRESULT IMFMediaEngine_SetAutoPlay(IMFMediaEngine* This,WINBOOL autoplay) {
1159 return This->lpVtbl->SetAutoPlay(This,autoplay);
1160}
1161static inline WINBOOL IMFMediaEngine_GetLoop(IMFMediaEngine* This) {
1162 return This->lpVtbl->GetLoop(This);
1163}
1164static inline HRESULT IMFMediaEngine_SetLoop(IMFMediaEngine* This,WINBOOL loop) {
1165 return This->lpVtbl->SetLoop(This,loop);
1166}
1167static inline HRESULT IMFMediaEngine_Play(IMFMediaEngine* This) {
1168 return This->lpVtbl->Play(This);
1169}
1170static inline HRESULT IMFMediaEngine_Pause(IMFMediaEngine* This) {
1171 return This->lpVtbl->Pause(This);
1172}
1173static inline WINBOOL IMFMediaEngine_GetMuted(IMFMediaEngine* This) {
1174 return This->lpVtbl->GetMuted(This);
1175}
1176static inline HRESULT IMFMediaEngine_SetMuted(IMFMediaEngine* This,WINBOOL muted) {
1177 return This->lpVtbl->SetMuted(This,muted);
1178}
1179static inline double IMFMediaEngine_GetVolume(IMFMediaEngine* This) {
1180 return This->lpVtbl->GetVolume(This);
1181}
1182static inline HRESULT IMFMediaEngine_SetVolume(IMFMediaEngine* This,double volume) {
1183 return This->lpVtbl->SetVolume(This,volume);
1184}
1185static inline WINBOOL IMFMediaEngine_HasVideo(IMFMediaEngine* This) {
1186 return This->lpVtbl->HasVideo(This);
1187}
1188static inline WINBOOL IMFMediaEngine_HasAudio(IMFMediaEngine* This) {
1189 return This->lpVtbl->HasAudio(This);
1190}
1191static inline HRESULT IMFMediaEngine_GetNativeVideoSize(IMFMediaEngine* This,DWORD *cx,DWORD *cy) {
1192 return This->lpVtbl->GetNativeVideoSize(This,cx,cy);
1193}
1194static inline HRESULT IMFMediaEngine_GetVideoAspectRatio(IMFMediaEngine* This,DWORD *cx,DWORD *cy) {
1195 return This->lpVtbl->GetVideoAspectRatio(This,cx,cy);
1196}
1197static inline HRESULT IMFMediaEngine_Shutdown(IMFMediaEngine* This) {
1198 return This->lpVtbl->Shutdown(This);
1199}
1200static inline HRESULT IMFMediaEngine_TransferVideoFrame(IMFMediaEngine* This,IUnknown *surface,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *color) {
1201 return This->lpVtbl->TransferVideoFrame(This,surface,src,dst,color);
1202}
1203static inline HRESULT IMFMediaEngine_OnVideoStreamTick(IMFMediaEngine* This,LONGLONG *time) {
1204 return This->lpVtbl->OnVideoStreamTick(This,time);
1205}
1206#endif
1207#endif
1208
1209#endif
1210
1211
1212#endif /* __IMFMediaEngine_INTERFACE_DEFINED__ */
1213
1214typedef enum MF_MEDIA_ENGINE_STATISTIC {
1215 MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED = 0,
1216 MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED = 1,
1217 MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED = 2,
1218 MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS = 3,
1219 MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND = 4,
1220 MF_MEDIA_ENGINE_STATISTIC_PLAYBACK_JITTER = 5,
1221 MF_MEDIA_ENGINE_STATISTIC_FRAMES_CORRUPTED = 6,
1222 MF_MEDIA_ENGINE_STATISTIC_TOTAL_FRAME_DELAY = 7
1223} MF_MEDIA_ENGINE_STATISTIC;
1224typedef enum MF_MEDIA_ENGINE_S3D_PACKING_MODE {
1225 MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE = 0,
1226 MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE = 1,
1227 MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM = 2
1228} MF_MEDIA_ENGINE_S3D_PACKING_MODE;
1229typedef enum MF_MEDIA_ENGINE_SEEK_MODE {
1230 MF_MEDIA_ENGINE_SEEK_MODE_NORMAL = 0,
1231 MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE = 1
1232} MF_MEDIA_ENGINE_SEEK_MODE;
1233/*****************************************************************************
1234 * IMFMediaEngineEx interface
1235 */
1236#ifndef __IMFMediaEngineEx_INTERFACE_DEFINED__
1237#define __IMFMediaEngineEx_INTERFACE_DEFINED__
1238
1239DEFINE_GUID(IID_IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1);
1240#if defined(__cplusplus) && !defined(CINTERFACE)
1241MIDL_INTERFACE("83015ead-b1e6-40d0-a98a-37145ffe1ad1")
1242IMFMediaEngineEx : public IMFMediaEngine
1243{
1244 virtual HRESULT STDMETHODCALLTYPE SetSourceFromByteStream(
1245 IMFByteStream *bytestream,
1246 BSTR url) = 0;
1247
1248 virtual HRESULT STDMETHODCALLTYPE GetStatistics(
1249 MF_MEDIA_ENGINE_STATISTIC stat_id,
1250 PROPVARIANT *stat) = 0;
1251
1252 virtual HRESULT STDMETHODCALLTYPE UpdateVideoStream(
1253 const MFVideoNormalizedRect *src,
1254 const RECT *dst,
1255 const MFARGB *border_color) = 0;
1256
1257 virtual double STDMETHODCALLTYPE GetBalance(
1258 ) = 0;
1259
1260 virtual HRESULT STDMETHODCALLTYPE SetBalance(
1261 double balance) = 0;
1262
1263 virtual WINBOOL STDMETHODCALLTYPE IsPlaybackRateSupported(
1264 double rate) = 0;
1265
1266 virtual HRESULT STDMETHODCALLTYPE FrameStep(
1267 WINBOOL forward) = 0;
1268
1269 virtual HRESULT STDMETHODCALLTYPE GetResourceCharacteristics(
1270 DWORD *flags) = 0;
1271
1272 virtual HRESULT STDMETHODCALLTYPE GetPresentationAttribute(
1273 REFGUID attribute,
1274 PROPVARIANT *value) = 0;
1275
1276 virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams(
1277 DWORD *stream_count) = 0;
1278
1279 virtual HRESULT STDMETHODCALLTYPE GetStreamAttribute(
1280 DWORD stream_index,
1281 REFGUID attribute,
1282 PROPVARIANT *value) = 0;
1283
1284 virtual HRESULT STDMETHODCALLTYPE GetStreamSelection(
1285 DWORD stream_index,
1286 WINBOOL *enabled) = 0;
1287
1288 virtual HRESULT STDMETHODCALLTYPE SetStreamSelection(
1289 DWORD stream_index,
1290 WINBOOL enabled) = 0;
1291
1292 virtual HRESULT STDMETHODCALLTYPE ApplyStreamSelections(
1293 ) = 0;
1294
1295 virtual HRESULT STDMETHODCALLTYPE IsProtected(
1296 WINBOOL *is_protected) = 0;
1297
1298 virtual HRESULT STDMETHODCALLTYPE InsertVideoEffect(
1299 IUnknown *effect,
1300 WINBOOL is_optional) = 0;
1301
1302 virtual HRESULT STDMETHODCALLTYPE InsertAudioEffect(
1303 IUnknown *effect,
1304 WINBOOL is_optional) = 0;
1305
1306 virtual HRESULT STDMETHODCALLTYPE RemoveAllEffects(
1307 ) = 0;
1308
1309 virtual HRESULT STDMETHODCALLTYPE SetTimelineMarkerTimer(
1310 double timeout) = 0;
1311
1312 virtual HRESULT STDMETHODCALLTYPE GetTimelineMarkerTimer(
1313 double *timeout) = 0;
1314
1315 virtual HRESULT STDMETHODCALLTYPE CancelTimelineMarkerTimer(
1316 ) = 0;
1317
1318 virtual WINBOOL STDMETHODCALLTYPE IsStereo3D(
1319 ) = 0;
1320
1321 virtual HRESULT STDMETHODCALLTYPE GetStereo3DFramePackingMode(
1322 MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) = 0;
1323
1324 virtual HRESULT STDMETHODCALLTYPE SetStereo3DFramePackingMode(
1325 MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) = 0;
1326
1327 virtual HRESULT STDMETHODCALLTYPE GetStereo3DRenderMode(
1328 MF3DVideoOutputType *output_type) = 0;
1329
1330 virtual HRESULT STDMETHODCALLTYPE SetStereo3DRenderMode(
1331 MF3DVideoOutputType output_type) = 0;
1332
1333 virtual HRESULT STDMETHODCALLTYPE EnableWindowlessSwapchainMode(
1334 WINBOOL enable) = 0;
1335
1336 virtual HRESULT STDMETHODCALLTYPE GetVideoSwapchainHandle(
1337 HANDLE *swapchain) = 0;
1338
1339 virtual HRESULT STDMETHODCALLTYPE EnableHorizontalMirrorMode(
1340 WINBOOL enable) = 0;
1341
1342 virtual HRESULT STDMETHODCALLTYPE GetAudioStreamCategory(
1343 UINT32 *category) = 0;
1344
1345 virtual HRESULT STDMETHODCALLTYPE SetAudioStreamCategory(
1346 UINT32 category) = 0;
1347
1348 virtual HRESULT STDMETHODCALLTYPE GetAudioEndpointRole(
1349 UINT32 *role) = 0;
1350
1351 virtual HRESULT STDMETHODCALLTYPE SetAudioEndpointRole(
1352 UINT32 role) = 0;
1353
1354 virtual HRESULT STDMETHODCALLTYPE GetRealTimeMode(
1355 WINBOOL *enabled) = 0;
1356
1357 virtual HRESULT STDMETHODCALLTYPE SetRealTimeMode(
1358 WINBOOL enable) = 0;
1359
1360 virtual HRESULT STDMETHODCALLTYPE SetCurrentTimeEx(
1361 double seektime,
1362 MF_MEDIA_ENGINE_SEEK_MODE mode) = 0;
1363
1364 virtual HRESULT STDMETHODCALLTYPE EnableTimeUpdateTimer(
1365 WINBOOL enable) = 0;
1366
1367};
1368#ifdef __CRT_UUID_DECL
1369__CRT_UUID_DECL(IMFMediaEngineEx, 0x83015ead, 0xb1e6, 0x40d0, 0xa9,0x8a, 0x37,0x14,0x5f,0xfe,0x1a,0xd1)
1370#endif
1371#else
1372typedef struct IMFMediaEngineExVtbl {
1373 BEGIN_INTERFACE
1374
1375 /*** IUnknown methods ***/
1376 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1377 IMFMediaEngineEx *This,
1378 REFIID riid,
1379 void **ppvObject);
1380
1381 ULONG (STDMETHODCALLTYPE *AddRef)(
1382 IMFMediaEngineEx *This);
1383
1384 ULONG (STDMETHODCALLTYPE *Release)(
1385 IMFMediaEngineEx *This);
1386
1387 /*** IMFMediaEngine methods ***/
1388 HRESULT (STDMETHODCALLTYPE *GetError)(
1389 IMFMediaEngineEx *This,
1390 IMFMediaError **error);
1391
1392 HRESULT (STDMETHODCALLTYPE *SetErrorCode)(
1393 IMFMediaEngineEx *This,
1394 MF_MEDIA_ENGINE_ERR error);
1395
1396 HRESULT (STDMETHODCALLTYPE *SetSourceElements)(
1397 IMFMediaEngineEx *This,
1398 IMFMediaEngineSrcElements *elements);
1399
1400 HRESULT (STDMETHODCALLTYPE *SetSource)(
1401 IMFMediaEngineEx *This,
1402 BSTR url);
1403
1404 HRESULT (STDMETHODCALLTYPE *GetCurrentSource)(
1405 IMFMediaEngineEx *This,
1406 BSTR *url);
1407
1408 USHORT (STDMETHODCALLTYPE *GetNetworkState)(
1409 IMFMediaEngineEx *This);
1410
1411 MF_MEDIA_ENGINE_PRELOAD (STDMETHODCALLTYPE *GetPreload)(
1412 IMFMediaEngineEx *This);
1413
1414 HRESULT (STDMETHODCALLTYPE *SetPreload)(
1415 IMFMediaEngineEx *This,
1416 MF_MEDIA_ENGINE_PRELOAD preload);
1417
1418 HRESULT (STDMETHODCALLTYPE *GetBuffered)(
1419 IMFMediaEngineEx *This,
1420 IMFMediaTimeRange **buffered);
1421
1422 HRESULT (STDMETHODCALLTYPE *Load)(
1423 IMFMediaEngineEx *This);
1424
1425 HRESULT (STDMETHODCALLTYPE *CanPlayType)(
1426 IMFMediaEngineEx *This,
1427 BSTR type,
1428 MF_MEDIA_ENGINE_CANPLAY *answer);
1429
1430 USHORT (STDMETHODCALLTYPE *GetReadyState)(
1431 IMFMediaEngineEx *This);
1432
1433 WINBOOL (STDMETHODCALLTYPE *IsSeeking)(
1434 IMFMediaEngineEx *This);
1435
1436 double (STDMETHODCALLTYPE *GetCurrentTime)(
1437 IMFMediaEngineEx *This);
1438
1439 HRESULT (STDMETHODCALLTYPE *SetCurrentTime)(
1440 IMFMediaEngineEx *This,
1441 double time);
1442
1443 double (STDMETHODCALLTYPE *GetStartTime)(
1444 IMFMediaEngineEx *This);
1445
1446 double (STDMETHODCALLTYPE *GetDuration)(
1447 IMFMediaEngineEx *This);
1448
1449 WINBOOL (STDMETHODCALLTYPE *IsPaused)(
1450 IMFMediaEngineEx *This);
1451
1452 double (STDMETHODCALLTYPE *GetDefaultPlaybackRate)(
1453 IMFMediaEngineEx *This);
1454
1455 HRESULT (STDMETHODCALLTYPE *SetDefaultPlaybackRate)(
1456 IMFMediaEngineEx *This,
1457 double rate);
1458
1459 double (STDMETHODCALLTYPE *GetPlaybackRate)(
1460 IMFMediaEngineEx *This);
1461
1462 HRESULT (STDMETHODCALLTYPE *SetPlaybackRate)(
1463 IMFMediaEngineEx *This,
1464 double rate);
1465
1466 HRESULT (STDMETHODCALLTYPE *GetPlayed)(
1467 IMFMediaEngineEx *This,
1468 IMFMediaTimeRange **played);
1469
1470 HRESULT (STDMETHODCALLTYPE *GetSeekable)(
1471 IMFMediaEngineEx *This,
1472 IMFMediaTimeRange **seekable);
1473
1474 WINBOOL (STDMETHODCALLTYPE *IsEnded)(
1475 IMFMediaEngineEx *This);
1476
1477 WINBOOL (STDMETHODCALLTYPE *GetAutoPlay)(
1478 IMFMediaEngineEx *This);
1479
1480 HRESULT (STDMETHODCALLTYPE *SetAutoPlay)(
1481 IMFMediaEngineEx *This,
1482 WINBOOL autoplay);
1483
1484 WINBOOL (STDMETHODCALLTYPE *GetLoop)(
1485 IMFMediaEngineEx *This);
1486
1487 HRESULT (STDMETHODCALLTYPE *SetLoop)(
1488 IMFMediaEngineEx *This,
1489 WINBOOL loop);
1490
1491 HRESULT (STDMETHODCALLTYPE *Play)(
1492 IMFMediaEngineEx *This);
1493
1494 HRESULT (STDMETHODCALLTYPE *Pause)(
1495 IMFMediaEngineEx *This);
1496
1497 WINBOOL (STDMETHODCALLTYPE *GetMuted)(
1498 IMFMediaEngineEx *This);
1499
1500 HRESULT (STDMETHODCALLTYPE *SetMuted)(
1501 IMFMediaEngineEx *This,
1502 WINBOOL muted);
1503
1504 double (STDMETHODCALLTYPE *GetVolume)(
1505 IMFMediaEngineEx *This);
1506
1507 HRESULT (STDMETHODCALLTYPE *SetVolume)(
1508 IMFMediaEngineEx *This,
1509 double volume);
1510
1511 WINBOOL (STDMETHODCALLTYPE *HasVideo)(
1512 IMFMediaEngineEx *This);
1513
1514 WINBOOL (STDMETHODCALLTYPE *HasAudio)(
1515 IMFMediaEngineEx *This);
1516
1517 HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)(
1518 IMFMediaEngineEx *This,
1519 DWORD *cx,
1520 DWORD *cy);
1521
1522 HRESULT (STDMETHODCALLTYPE *GetVideoAspectRatio)(
1523 IMFMediaEngineEx *This,
1524 DWORD *cx,
1525 DWORD *cy);
1526
1527 HRESULT (STDMETHODCALLTYPE *Shutdown)(
1528 IMFMediaEngineEx *This);
1529
1530 HRESULT (STDMETHODCALLTYPE *TransferVideoFrame)(
1531 IMFMediaEngineEx *This,
1532 IUnknown *surface,
1533 const MFVideoNormalizedRect *src,
1534 const RECT *dst,
1535 const MFARGB *color);
1536
1537 HRESULT (STDMETHODCALLTYPE *OnVideoStreamTick)(
1538 IMFMediaEngineEx *This,
1539 LONGLONG *time);
1540
1541 /*** IMFMediaEngineEx methods ***/
1542 HRESULT (STDMETHODCALLTYPE *SetSourceFromByteStream)(
1543 IMFMediaEngineEx *This,
1544 IMFByteStream *bytestream,
1545 BSTR url);
1546
1547 HRESULT (STDMETHODCALLTYPE *GetStatistics)(
1548 IMFMediaEngineEx *This,
1549 MF_MEDIA_ENGINE_STATISTIC stat_id,
1550 PROPVARIANT *stat);
1551
1552 HRESULT (STDMETHODCALLTYPE *UpdateVideoStream)(
1553 IMFMediaEngineEx *This,
1554 const MFVideoNormalizedRect *src,
1555 const RECT *dst,
1556 const MFARGB *border_color);
1557
1558 double (STDMETHODCALLTYPE *GetBalance)(
1559 IMFMediaEngineEx *This);
1560
1561 HRESULT (STDMETHODCALLTYPE *SetBalance)(
1562 IMFMediaEngineEx *This,
1563 double balance);
1564
1565 WINBOOL (STDMETHODCALLTYPE *IsPlaybackRateSupported)(
1566 IMFMediaEngineEx *This,
1567 double rate);
1568
1569 HRESULT (STDMETHODCALLTYPE *FrameStep)(
1570 IMFMediaEngineEx *This,
1571 WINBOOL forward);
1572
1573 HRESULT (STDMETHODCALLTYPE *GetResourceCharacteristics)(
1574 IMFMediaEngineEx *This,
1575 DWORD *flags);
1576
1577 HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)(
1578 IMFMediaEngineEx *This,
1579 REFGUID attribute,
1580 PROPVARIANT *value);
1581
1582 HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)(
1583 IMFMediaEngineEx *This,
1584 DWORD *stream_count);
1585
1586 HRESULT (STDMETHODCALLTYPE *GetStreamAttribute)(
1587 IMFMediaEngineEx *This,
1588 DWORD stream_index,
1589 REFGUID attribute,
1590 PROPVARIANT *value);
1591
1592 HRESULT (STDMETHODCALLTYPE *GetStreamSelection)(
1593 IMFMediaEngineEx *This,
1594 DWORD stream_index,
1595 WINBOOL *enabled);
1596
1597 HRESULT (STDMETHODCALLTYPE *SetStreamSelection)(
1598 IMFMediaEngineEx *This,
1599 DWORD stream_index,
1600 WINBOOL enabled);
1601
1602 HRESULT (STDMETHODCALLTYPE *ApplyStreamSelections)(
1603 IMFMediaEngineEx *This);
1604
1605 HRESULT (STDMETHODCALLTYPE *IsProtected)(
1606 IMFMediaEngineEx *This,
1607 WINBOOL *is_protected);
1608
1609 HRESULT (STDMETHODCALLTYPE *InsertVideoEffect)(
1610 IMFMediaEngineEx *This,
1611 IUnknown *effect,
1612 WINBOOL is_optional);
1613
1614 HRESULT (STDMETHODCALLTYPE *InsertAudioEffect)(
1615 IMFMediaEngineEx *This,
1616 IUnknown *effect,
1617 WINBOOL is_optional);
1618
1619 HRESULT (STDMETHODCALLTYPE *RemoveAllEffects)(
1620 IMFMediaEngineEx *This);
1621
1622 HRESULT (STDMETHODCALLTYPE *SetTimelineMarkerTimer)(
1623 IMFMediaEngineEx *This,
1624 double timeout);
1625
1626 HRESULT (STDMETHODCALLTYPE *GetTimelineMarkerTimer)(
1627 IMFMediaEngineEx *This,
1628 double *timeout);
1629
1630 HRESULT (STDMETHODCALLTYPE *CancelTimelineMarkerTimer)(
1631 IMFMediaEngineEx *This);
1632
1633 WINBOOL (STDMETHODCALLTYPE *IsStereo3D)(
1634 IMFMediaEngineEx *This);
1635
1636 HRESULT (STDMETHODCALLTYPE *GetStereo3DFramePackingMode)(
1637 IMFMediaEngineEx *This,
1638 MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode);
1639
1640 HRESULT (STDMETHODCALLTYPE *SetStereo3DFramePackingMode)(
1641 IMFMediaEngineEx *This,
1642 MF_MEDIA_ENGINE_S3D_PACKING_MODE mode);
1643
1644 HRESULT (STDMETHODCALLTYPE *GetStereo3DRenderMode)(
1645 IMFMediaEngineEx *This,
1646 MF3DVideoOutputType *output_type);
1647
1648 HRESULT (STDMETHODCALLTYPE *SetStereo3DRenderMode)(
1649 IMFMediaEngineEx *This,
1650 MF3DVideoOutputType output_type);
1651
1652 HRESULT (STDMETHODCALLTYPE *EnableWindowlessSwapchainMode)(
1653 IMFMediaEngineEx *This,
1654 WINBOOL enable);
1655
1656 HRESULT (STDMETHODCALLTYPE *GetVideoSwapchainHandle)(
1657 IMFMediaEngineEx *This,
1658 HANDLE *swapchain);
1659
1660 HRESULT (STDMETHODCALLTYPE *EnableHorizontalMirrorMode)(
1661 IMFMediaEngineEx *This,
1662 WINBOOL enable);
1663
1664 HRESULT (STDMETHODCALLTYPE *GetAudioStreamCategory)(
1665 IMFMediaEngineEx *This,
1666 UINT32 *category);
1667
1668 HRESULT (STDMETHODCALLTYPE *SetAudioStreamCategory)(
1669 IMFMediaEngineEx *This,
1670 UINT32 category);
1671
1672 HRESULT (STDMETHODCALLTYPE *GetAudioEndpointRole)(
1673 IMFMediaEngineEx *This,
1674 UINT32 *role);
1675
1676 HRESULT (STDMETHODCALLTYPE *SetAudioEndpointRole)(
1677 IMFMediaEngineEx *This,
1678 UINT32 role);
1679
1680 HRESULT (STDMETHODCALLTYPE *GetRealTimeMode)(
1681 IMFMediaEngineEx *This,
1682 WINBOOL *enabled);
1683
1684 HRESULT (STDMETHODCALLTYPE *SetRealTimeMode)(
1685 IMFMediaEngineEx *This,
1686 WINBOOL enable);
1687
1688 HRESULT (STDMETHODCALLTYPE *SetCurrentTimeEx)(
1689 IMFMediaEngineEx *This,
1690 double seektime,
1691 MF_MEDIA_ENGINE_SEEK_MODE mode);
1692
1693 HRESULT (STDMETHODCALLTYPE *EnableTimeUpdateTimer)(
1694 IMFMediaEngineEx *This,
1695 WINBOOL enable);
1696
1697 END_INTERFACE
1698} IMFMediaEngineExVtbl;
1699
1700interface IMFMediaEngineEx {
1701 CONST_VTBL IMFMediaEngineExVtbl* lpVtbl;
1702};
1703
1704#ifdef COBJMACROS
1705#ifndef WIDL_C_INLINE_WRAPPERS
1706/*** IUnknown methods ***/
1707#define IMFMediaEngineEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1708#define IMFMediaEngineEx_AddRef(This) (This)->lpVtbl->AddRef(This)
1709#define IMFMediaEngineEx_Release(This) (This)->lpVtbl->Release(This)
1710/*** IMFMediaEngine methods ***/
1711#define IMFMediaEngineEx_GetError(This,error) (This)->lpVtbl->GetError(This,error)
1712#define IMFMediaEngineEx_SetErrorCode(This,error) (This)->lpVtbl->SetErrorCode(This,error)
1713#define IMFMediaEngineEx_SetSourceElements(This,elements) (This)->lpVtbl->SetSourceElements(This,elements)
1714#define IMFMediaEngineEx_SetSource(This,url) (This)->lpVtbl->SetSource(This,url)
1715#define IMFMediaEngineEx_GetCurrentSource(This,url) (This)->lpVtbl->GetCurrentSource(This,url)
1716#define IMFMediaEngineEx_GetNetworkState(This) (This)->lpVtbl->GetNetworkState(This)
1717#define IMFMediaEngineEx_GetPreload(This) (This)->lpVtbl->GetPreload(This)
1718#define IMFMediaEngineEx_SetPreload(This,preload) (This)->lpVtbl->SetPreload(This,preload)
1719#define IMFMediaEngineEx_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered)
1720#define IMFMediaEngineEx_Load(This) (This)->lpVtbl->Load(This)
1721#define IMFMediaEngineEx_CanPlayType(This,type,answer) (This)->lpVtbl->CanPlayType(This,type,answer)
1722#define IMFMediaEngineEx_GetReadyState(This) (This)->lpVtbl->GetReadyState(This)
1723#define IMFMediaEngineEx_IsSeeking(This) (This)->lpVtbl->IsSeeking(This)
1724#define IMFMediaEngineEx_GetCurrentTime(This) (This)->lpVtbl->GetCurrentTime(This)
1725#define IMFMediaEngineEx_SetCurrentTime(This,time) (This)->lpVtbl->SetCurrentTime(This,time)
1726#define IMFMediaEngineEx_GetStartTime(This) (This)->lpVtbl->GetStartTime(This)
1727#define IMFMediaEngineEx_GetDuration(This) (This)->lpVtbl->GetDuration(This)
1728#define IMFMediaEngineEx_IsPaused(This) (This)->lpVtbl->IsPaused(This)
1729#define IMFMediaEngineEx_GetDefaultPlaybackRate(This) (This)->lpVtbl->GetDefaultPlaybackRate(This)
1730#define IMFMediaEngineEx_SetDefaultPlaybackRate(This,rate) (This)->lpVtbl->SetDefaultPlaybackRate(This,rate)
1731#define IMFMediaEngineEx_GetPlaybackRate(This) (This)->lpVtbl->GetPlaybackRate(This)
1732#define IMFMediaEngineEx_SetPlaybackRate(This,rate) (This)->lpVtbl->SetPlaybackRate(This,rate)
1733#define IMFMediaEngineEx_GetPlayed(This,played) (This)->lpVtbl->GetPlayed(This,played)
1734#define IMFMediaEngineEx_GetSeekable(This,seekable) (This)->lpVtbl->GetSeekable(This,seekable)
1735#define IMFMediaEngineEx_IsEnded(This) (This)->lpVtbl->IsEnded(This)
1736#define IMFMediaEngineEx_GetAutoPlay(This) (This)->lpVtbl->GetAutoPlay(This)
1737#define IMFMediaEngineEx_SetAutoPlay(This,autoplay) (This)->lpVtbl->SetAutoPlay(This,autoplay)
1738#define IMFMediaEngineEx_GetLoop(This) (This)->lpVtbl->GetLoop(This)
1739#define IMFMediaEngineEx_SetLoop(This,loop) (This)->lpVtbl->SetLoop(This,loop)
1740#define IMFMediaEngineEx_Play(This) (This)->lpVtbl->Play(This)
1741#define IMFMediaEngineEx_Pause(This) (This)->lpVtbl->Pause(This)
1742#define IMFMediaEngineEx_GetMuted(This) (This)->lpVtbl->GetMuted(This)
1743#define IMFMediaEngineEx_SetMuted(This,muted) (This)->lpVtbl->SetMuted(This,muted)
1744#define IMFMediaEngineEx_GetVolume(This) (This)->lpVtbl->GetVolume(This)
1745#define IMFMediaEngineEx_SetVolume(This,volume) (This)->lpVtbl->SetVolume(This,volume)
1746#define IMFMediaEngineEx_HasVideo(This) (This)->lpVtbl->HasVideo(This)
1747#define IMFMediaEngineEx_HasAudio(This) (This)->lpVtbl->HasAudio(This)
1748#define IMFMediaEngineEx_GetNativeVideoSize(This,cx,cy) (This)->lpVtbl->GetNativeVideoSize(This,cx,cy)
1749#define IMFMediaEngineEx_GetVideoAspectRatio(This,cx,cy) (This)->lpVtbl->GetVideoAspectRatio(This,cx,cy)
1750#define IMFMediaEngineEx_Shutdown(This) (This)->lpVtbl->Shutdown(This)
1751#define IMFMediaEngineEx_TransferVideoFrame(This,surface,src,dst,color) (This)->lpVtbl->TransferVideoFrame(This,surface,src,dst,color)
1752#define IMFMediaEngineEx_OnVideoStreamTick(This,time) (This)->lpVtbl->OnVideoStreamTick(This,time)
1753/*** IMFMediaEngineEx methods ***/
1754#define IMFMediaEngineEx_SetSourceFromByteStream(This,bytestream,url) (This)->lpVtbl->SetSourceFromByteStream(This,bytestream,url)
1755#define IMFMediaEngineEx_GetStatistics(This,stat_id,stat) (This)->lpVtbl->GetStatistics(This,stat_id,stat)
1756#define IMFMediaEngineEx_UpdateVideoStream(This,src,dst,border_color) (This)->lpVtbl->UpdateVideoStream(This,src,dst,border_color)
1757#define IMFMediaEngineEx_GetBalance(This) (This)->lpVtbl->GetBalance(This)
1758#define IMFMediaEngineEx_SetBalance(This,balance) (This)->lpVtbl->SetBalance(This,balance)
1759#define IMFMediaEngineEx_IsPlaybackRateSupported(This,rate) (This)->lpVtbl->IsPlaybackRateSupported(This,rate)
1760#define IMFMediaEngineEx_FrameStep(This,forward) (This)->lpVtbl->FrameStep(This,forward)
1761#define IMFMediaEngineEx_GetResourceCharacteristics(This,flags) (This)->lpVtbl->GetResourceCharacteristics(This,flags)
1762#define IMFMediaEngineEx_GetPresentationAttribute(This,attribute,value) (This)->lpVtbl->GetPresentationAttribute(This,attribute,value)
1763#define IMFMediaEngineEx_GetNumberOfStreams(This,stream_count) (This)->lpVtbl->GetNumberOfStreams(This,stream_count)
1764#define IMFMediaEngineEx_GetStreamAttribute(This,stream_index,attribute,value) (This)->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value)
1765#define IMFMediaEngineEx_GetStreamSelection(This,stream_index,enabled) (This)->lpVtbl->GetStreamSelection(This,stream_index,enabled)
1766#define IMFMediaEngineEx_SetStreamSelection(This,stream_index,enabled) (This)->lpVtbl->SetStreamSelection(This,stream_index,enabled)
1767#define IMFMediaEngineEx_ApplyStreamSelections(This) (This)->lpVtbl->ApplyStreamSelections(This)
1768#define IMFMediaEngineEx_IsProtected(This,is_protected) (This)->lpVtbl->IsProtected(This,is_protected)
1769#define IMFMediaEngineEx_InsertVideoEffect(This,effect,is_optional) (This)->lpVtbl->InsertVideoEffect(This,effect,is_optional)
1770#define IMFMediaEngineEx_InsertAudioEffect(This,effect,is_optional) (This)->lpVtbl->InsertAudioEffect(This,effect,is_optional)
1771#define IMFMediaEngineEx_RemoveAllEffects(This) (This)->lpVtbl->RemoveAllEffects(This)
1772#define IMFMediaEngineEx_SetTimelineMarkerTimer(This,timeout) (This)->lpVtbl->SetTimelineMarkerTimer(This,timeout)
1773#define IMFMediaEngineEx_GetTimelineMarkerTimer(This,timeout) (This)->lpVtbl->GetTimelineMarkerTimer(This,timeout)
1774#define IMFMediaEngineEx_CancelTimelineMarkerTimer(This) (This)->lpVtbl->CancelTimelineMarkerTimer(This)
1775#define IMFMediaEngineEx_IsStereo3D(This) (This)->lpVtbl->IsStereo3D(This)
1776#define IMFMediaEngineEx_GetStereo3DFramePackingMode(This,mode) (This)->lpVtbl->GetStereo3DFramePackingMode(This,mode)
1777#define IMFMediaEngineEx_SetStereo3DFramePackingMode(This,mode) (This)->lpVtbl->SetStereo3DFramePackingMode(This,mode)
1778#define IMFMediaEngineEx_GetStereo3DRenderMode(This,output_type) (This)->lpVtbl->GetStereo3DRenderMode(This,output_type)
1779#define IMFMediaEngineEx_SetStereo3DRenderMode(This,output_type) (This)->lpVtbl->SetStereo3DRenderMode(This,output_type)
1780#define IMFMediaEngineEx_EnableWindowlessSwapchainMode(This,enable) (This)->lpVtbl->EnableWindowlessSwapchainMode(This,enable)
1781#define IMFMediaEngineEx_GetVideoSwapchainHandle(This,swapchain) (This)->lpVtbl->GetVideoSwapchainHandle(This,swapchain)
1782#define IMFMediaEngineEx_EnableHorizontalMirrorMode(This,enable) (This)->lpVtbl->EnableHorizontalMirrorMode(This,enable)
1783#define IMFMediaEngineEx_GetAudioStreamCategory(This,category) (This)->lpVtbl->GetAudioStreamCategory(This,category)
1784#define IMFMediaEngineEx_SetAudioStreamCategory(This,category) (This)->lpVtbl->SetAudioStreamCategory(This,category)
1785#define IMFMediaEngineEx_GetAudioEndpointRole(This,role) (This)->lpVtbl->GetAudioEndpointRole(This,role)
1786#define IMFMediaEngineEx_SetAudioEndpointRole(This,role) (This)->lpVtbl->SetAudioEndpointRole(This,role)
1787#define IMFMediaEngineEx_GetRealTimeMode(This,enabled) (This)->lpVtbl->GetRealTimeMode(This,enabled)
1788#define IMFMediaEngineEx_SetRealTimeMode(This,enable) (This)->lpVtbl->SetRealTimeMode(This,enable)
1789#define IMFMediaEngineEx_SetCurrentTimeEx(This,seektime,mode) (This)->lpVtbl->SetCurrentTimeEx(This,seektime,mode)
1790#define IMFMediaEngineEx_EnableTimeUpdateTimer(This,enable) (This)->lpVtbl->EnableTimeUpdateTimer(This,enable)
1791#else
1792/*** IUnknown methods ***/
1793static inline HRESULT IMFMediaEngineEx_QueryInterface(IMFMediaEngineEx* This,REFIID riid,void **ppvObject) {
1794 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1795}
1796static inline ULONG IMFMediaEngineEx_AddRef(IMFMediaEngineEx* This) {
1797 return This->lpVtbl->AddRef(This);
1798}
1799static inline ULONG IMFMediaEngineEx_Release(IMFMediaEngineEx* This) {
1800 return This->lpVtbl->Release(This);
1801}
1802/*** IMFMediaEngine methods ***/
1803static inline HRESULT IMFMediaEngineEx_GetError(IMFMediaEngineEx* This,IMFMediaError **error) {
1804 return This->lpVtbl->GetError(This,error);
1805}
1806static inline HRESULT IMFMediaEngineEx_SetErrorCode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_ERR error) {
1807 return This->lpVtbl->SetErrorCode(This,error);
1808}
1809static inline HRESULT IMFMediaEngineEx_SetSourceElements(IMFMediaEngineEx* This,IMFMediaEngineSrcElements *elements) {
1810 return This->lpVtbl->SetSourceElements(This,elements);
1811}
1812static inline HRESULT IMFMediaEngineEx_SetSource(IMFMediaEngineEx* This,BSTR url) {
1813 return This->lpVtbl->SetSource(This,url);
1814}
1815static inline HRESULT IMFMediaEngineEx_GetCurrentSource(IMFMediaEngineEx* This,BSTR *url) {
1816 return This->lpVtbl->GetCurrentSource(This,url);
1817}
1818static inline USHORT IMFMediaEngineEx_GetNetworkState(IMFMediaEngineEx* This) {
1819 return This->lpVtbl->GetNetworkState(This);
1820}
1821static inline MF_MEDIA_ENGINE_PRELOAD IMFMediaEngineEx_GetPreload(IMFMediaEngineEx* This) {
1822 return This->lpVtbl->GetPreload(This);
1823}
1824static inline HRESULT IMFMediaEngineEx_SetPreload(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_PRELOAD preload) {
1825 return This->lpVtbl->SetPreload(This,preload);
1826}
1827static inline HRESULT IMFMediaEngineEx_GetBuffered(IMFMediaEngineEx* This,IMFMediaTimeRange **buffered) {
1828 return This->lpVtbl->GetBuffered(This,buffered);
1829}
1830static inline HRESULT IMFMediaEngineEx_Load(IMFMediaEngineEx* This) {
1831 return This->lpVtbl->Load(This);
1832}
1833static inline HRESULT IMFMediaEngineEx_CanPlayType(IMFMediaEngineEx* This,BSTR type,MF_MEDIA_ENGINE_CANPLAY *answer) {
1834 return This->lpVtbl->CanPlayType(This,type,answer);
1835}
1836static inline USHORT IMFMediaEngineEx_GetReadyState(IMFMediaEngineEx* This) {
1837 return This->lpVtbl->GetReadyState(This);
1838}
1839static inline WINBOOL IMFMediaEngineEx_IsSeeking(IMFMediaEngineEx* This) {
1840 return This->lpVtbl->IsSeeking(This);
1841}
1842static inline double IMFMediaEngineEx_GetCurrentTime(IMFMediaEngineEx* This) {
1843 return This->lpVtbl->GetCurrentTime(This);
1844}
1845static inline HRESULT IMFMediaEngineEx_SetCurrentTime(IMFMediaEngineEx* This,double time) {
1846 return This->lpVtbl->SetCurrentTime(This,time);
1847}
1848static inline double IMFMediaEngineEx_GetStartTime(IMFMediaEngineEx* This) {
1849 return This->lpVtbl->GetStartTime(This);
1850}
1851static inline double IMFMediaEngineEx_GetDuration(IMFMediaEngineEx* This) {
1852 return This->lpVtbl->GetDuration(This);
1853}
1854static inline WINBOOL IMFMediaEngineEx_IsPaused(IMFMediaEngineEx* This) {
1855 return This->lpVtbl->IsPaused(This);
1856}
1857static inline double IMFMediaEngineEx_GetDefaultPlaybackRate(IMFMediaEngineEx* This) {
1858 return This->lpVtbl->GetDefaultPlaybackRate(This);
1859}
1860static inline HRESULT IMFMediaEngineEx_SetDefaultPlaybackRate(IMFMediaEngineEx* This,double rate) {
1861 return This->lpVtbl->SetDefaultPlaybackRate(This,rate);
1862}
1863static inline double IMFMediaEngineEx_GetPlaybackRate(IMFMediaEngineEx* This) {
1864 return This->lpVtbl->GetPlaybackRate(This);
1865}
1866static inline HRESULT IMFMediaEngineEx_SetPlaybackRate(IMFMediaEngineEx* This,double rate) {
1867 return This->lpVtbl->SetPlaybackRate(This,rate);
1868}
1869static inline HRESULT IMFMediaEngineEx_GetPlayed(IMFMediaEngineEx* This,IMFMediaTimeRange **played) {
1870 return This->lpVtbl->GetPlayed(This,played);
1871}
1872static inline HRESULT IMFMediaEngineEx_GetSeekable(IMFMediaEngineEx* This,IMFMediaTimeRange **seekable) {
1873 return This->lpVtbl->GetSeekable(This,seekable);
1874}
1875static inline WINBOOL IMFMediaEngineEx_IsEnded(IMFMediaEngineEx* This) {
1876 return This->lpVtbl->IsEnded(This);
1877}
1878static inline WINBOOL IMFMediaEngineEx_GetAutoPlay(IMFMediaEngineEx* This) {
1879 return This->lpVtbl->GetAutoPlay(This);
1880}
1881static inline HRESULT IMFMediaEngineEx_SetAutoPlay(IMFMediaEngineEx* This,WINBOOL autoplay) {
1882 return This->lpVtbl->SetAutoPlay(This,autoplay);
1883}
1884static inline WINBOOL IMFMediaEngineEx_GetLoop(IMFMediaEngineEx* This) {
1885 return This->lpVtbl->GetLoop(This);
1886}
1887static inline HRESULT IMFMediaEngineEx_SetLoop(IMFMediaEngineEx* This,WINBOOL loop) {
1888 return This->lpVtbl->SetLoop(This,loop);
1889}
1890static inline HRESULT IMFMediaEngineEx_Play(IMFMediaEngineEx* This) {
1891 return This->lpVtbl->Play(This);
1892}
1893static inline HRESULT IMFMediaEngineEx_Pause(IMFMediaEngineEx* This) {
1894 return This->lpVtbl->Pause(This);
1895}
1896static inline WINBOOL IMFMediaEngineEx_GetMuted(IMFMediaEngineEx* This) {
1897 return This->lpVtbl->GetMuted(This);
1898}
1899static inline HRESULT IMFMediaEngineEx_SetMuted(IMFMediaEngineEx* This,WINBOOL muted) {
1900 return This->lpVtbl->SetMuted(This,muted);
1901}
1902static inline double IMFMediaEngineEx_GetVolume(IMFMediaEngineEx* This) {
1903 return This->lpVtbl->GetVolume(This);
1904}
1905static inline HRESULT IMFMediaEngineEx_SetVolume(IMFMediaEngineEx* This,double volume) {
1906 return This->lpVtbl->SetVolume(This,volume);
1907}
1908static inline WINBOOL IMFMediaEngineEx_HasVideo(IMFMediaEngineEx* This) {
1909 return This->lpVtbl->HasVideo(This);
1910}
1911static inline WINBOOL IMFMediaEngineEx_HasAudio(IMFMediaEngineEx* This) {
1912 return This->lpVtbl->HasAudio(This);
1913}
1914static inline HRESULT IMFMediaEngineEx_GetNativeVideoSize(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) {
1915 return This->lpVtbl->GetNativeVideoSize(This,cx,cy);
1916}
1917static inline HRESULT IMFMediaEngineEx_GetVideoAspectRatio(IMFMediaEngineEx* This,DWORD *cx,DWORD *cy) {
1918 return This->lpVtbl->GetVideoAspectRatio(This,cx,cy);
1919}
1920static inline HRESULT IMFMediaEngineEx_Shutdown(IMFMediaEngineEx* This) {
1921 return This->lpVtbl->Shutdown(This);
1922}
1923static inline HRESULT IMFMediaEngineEx_TransferVideoFrame(IMFMediaEngineEx* This,IUnknown *surface,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *color) {
1924 return This->lpVtbl->TransferVideoFrame(This,surface,src,dst,color);
1925}
1926static inline HRESULT IMFMediaEngineEx_OnVideoStreamTick(IMFMediaEngineEx* This,LONGLONG *time) {
1927 return This->lpVtbl->OnVideoStreamTick(This,time);
1928}
1929/*** IMFMediaEngineEx methods ***/
1930static inline HRESULT IMFMediaEngineEx_SetSourceFromByteStream(IMFMediaEngineEx* This,IMFByteStream *bytestream,BSTR url) {
1931 return This->lpVtbl->SetSourceFromByteStream(This,bytestream,url);
1932}
1933static inline HRESULT IMFMediaEngineEx_GetStatistics(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_STATISTIC stat_id,PROPVARIANT *stat) {
1934 return This->lpVtbl->GetStatistics(This,stat_id,stat);
1935}
1936static inline HRESULT IMFMediaEngineEx_UpdateVideoStream(IMFMediaEngineEx* This,const MFVideoNormalizedRect *src,const RECT *dst,const MFARGB *border_color) {
1937 return This->lpVtbl->UpdateVideoStream(This,src,dst,border_color);
1938}
1939static inline double IMFMediaEngineEx_GetBalance(IMFMediaEngineEx* This) {
1940 return This->lpVtbl->GetBalance(This);
1941}
1942static inline HRESULT IMFMediaEngineEx_SetBalance(IMFMediaEngineEx* This,double balance) {
1943 return This->lpVtbl->SetBalance(This,balance);
1944}
1945static inline WINBOOL IMFMediaEngineEx_IsPlaybackRateSupported(IMFMediaEngineEx* This,double rate) {
1946 return This->lpVtbl->IsPlaybackRateSupported(This,rate);
1947}
1948static inline HRESULT IMFMediaEngineEx_FrameStep(IMFMediaEngineEx* This,WINBOOL forward) {
1949 return This->lpVtbl->FrameStep(This,forward);
1950}
1951static inline HRESULT IMFMediaEngineEx_GetResourceCharacteristics(IMFMediaEngineEx* This,DWORD *flags) {
1952 return This->lpVtbl->GetResourceCharacteristics(This,flags);
1953}
1954static inline HRESULT IMFMediaEngineEx_GetPresentationAttribute(IMFMediaEngineEx* This,REFGUID attribute,PROPVARIANT *value) {
1955 return This->lpVtbl->GetPresentationAttribute(This,attribute,value);
1956}
1957static inline HRESULT IMFMediaEngineEx_GetNumberOfStreams(IMFMediaEngineEx* This,DWORD *stream_count) {
1958 return This->lpVtbl->GetNumberOfStreams(This,stream_count);
1959}
1960static inline HRESULT IMFMediaEngineEx_GetStreamAttribute(IMFMediaEngineEx* This,DWORD stream_index,REFGUID attribute,PROPVARIANT *value) {
1961 return This->lpVtbl->GetStreamAttribute(This,stream_index,attribute,value);
1962}
1963static inline HRESULT IMFMediaEngineEx_GetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL *enabled) {
1964 return This->lpVtbl->GetStreamSelection(This,stream_index,enabled);
1965}
1966static inline HRESULT IMFMediaEngineEx_SetStreamSelection(IMFMediaEngineEx* This,DWORD stream_index,WINBOOL enabled) {
1967 return This->lpVtbl->SetStreamSelection(This,stream_index,enabled);
1968}
1969static inline HRESULT IMFMediaEngineEx_ApplyStreamSelections(IMFMediaEngineEx* This) {
1970 return This->lpVtbl->ApplyStreamSelections(This);
1971}
1972static inline HRESULT IMFMediaEngineEx_IsProtected(IMFMediaEngineEx* This,WINBOOL *is_protected) {
1973 return This->lpVtbl->IsProtected(This,is_protected);
1974}
1975static inline HRESULT IMFMediaEngineEx_InsertVideoEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) {
1976 return This->lpVtbl->InsertVideoEffect(This,effect,is_optional);
1977}
1978static inline HRESULT IMFMediaEngineEx_InsertAudioEffect(IMFMediaEngineEx* This,IUnknown *effect,WINBOOL is_optional) {
1979 return This->lpVtbl->InsertAudioEffect(This,effect,is_optional);
1980}
1981static inline HRESULT IMFMediaEngineEx_RemoveAllEffects(IMFMediaEngineEx* This) {
1982 return This->lpVtbl->RemoveAllEffects(This);
1983}
1984static inline HRESULT IMFMediaEngineEx_SetTimelineMarkerTimer(IMFMediaEngineEx* This,double timeout) {
1985 return This->lpVtbl->SetTimelineMarkerTimer(This,timeout);
1986}
1987static inline HRESULT IMFMediaEngineEx_GetTimelineMarkerTimer(IMFMediaEngineEx* This,double *timeout) {
1988 return This->lpVtbl->GetTimelineMarkerTimer(This,timeout);
1989}
1990static inline HRESULT IMFMediaEngineEx_CancelTimelineMarkerTimer(IMFMediaEngineEx* This) {
1991 return This->lpVtbl->CancelTimelineMarkerTimer(This);
1992}
1993static inline WINBOOL IMFMediaEngineEx_IsStereo3D(IMFMediaEngineEx* This) {
1994 return This->lpVtbl->IsStereo3D(This);
1995}
1996static inline HRESULT IMFMediaEngineEx_GetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE *mode) {
1997 return This->lpVtbl->GetStereo3DFramePackingMode(This,mode);
1998}
1999static inline HRESULT IMFMediaEngineEx_SetStereo3DFramePackingMode(IMFMediaEngineEx* This,MF_MEDIA_ENGINE_S3D_PACKING_MODE mode) {
2000 return This->lpVtbl->SetStereo3DFramePackingMode(This,mode);
2001}
2002static inline HRESULT IMFMediaEngineEx_GetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType *output_type) {
2003 return This->lpVtbl->GetStereo3DRenderMode(This,output_type);
2004}
2005static inline HRESULT IMFMediaEngineEx_SetStereo3DRenderMode(IMFMediaEngineEx* This,MF3DVideoOutputType output_type) {
2006 return This->lpVtbl->SetStereo3DRenderMode(This,output_type);
2007}
2008static inline HRESULT IMFMediaEngineEx_EnableWindowlessSwapchainMode(IMFMediaEngineEx* This,WINBOOL enable) {
2009 return This->lpVtbl->EnableWindowlessSwapchainMode(This,enable);
2010}
2011static inline HRESULT IMFMediaEngineEx_GetVideoSwapchainHandle(IMFMediaEngineEx* This,HANDLE *swapchain) {
2012 return This->lpVtbl->GetVideoSwapchainHandle(This,swapchain);
2013}
2014static inline HRESULT IMFMediaEngineEx_EnableHorizontalMirrorMode(IMFMediaEngineEx* This,WINBOOL enable) {
2015 return This->lpVtbl->EnableHorizontalMirrorMode(This,enable);
2016}
2017static inline HRESULT IMFMediaEngineEx_GetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 *category) {
2018 return This->lpVtbl->GetAudioStreamCategory(This,category);
2019}
2020static inline HRESULT IMFMediaEngineEx_SetAudioStreamCategory(IMFMediaEngineEx* This,UINT32 category) {
2021 return This->lpVtbl->SetAudioStreamCategory(This,category);
2022}
2023static inline HRESULT IMFMediaEngineEx_GetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 *role) {
2024 return This->lpVtbl->GetAudioEndpointRole(This,role);
2025}
2026static inline HRESULT IMFMediaEngineEx_SetAudioEndpointRole(IMFMediaEngineEx* This,UINT32 role) {
2027 return This->lpVtbl->SetAudioEndpointRole(This,role);
2028}
2029static inline HRESULT IMFMediaEngineEx_GetRealTimeMode(IMFMediaEngineEx* This,WINBOOL *enabled) {
2030 return This->lpVtbl->GetRealTimeMode(This,enabled);
2031}
2032static inline HRESULT IMFMediaEngineEx_SetRealTimeMode(IMFMediaEngineEx* This,WINBOOL enable) {
2033 return This->lpVtbl->SetRealTimeMode(This,enable);
2034}
2035static inline HRESULT IMFMediaEngineEx_SetCurrentTimeEx(IMFMediaEngineEx* This,double seektime,MF_MEDIA_ENGINE_SEEK_MODE mode) {
2036 return This->lpVtbl->SetCurrentTimeEx(This,seektime,mode);
2037}
2038static inline HRESULT IMFMediaEngineEx_EnableTimeUpdateTimer(IMFMediaEngineEx* This,WINBOOL enable) {
2039 return This->lpVtbl->EnableTimeUpdateTimer(This,enable);
2040}
2041#endif
2042#endif
2043
2044#endif
2045
2046
2047#endif /* __IMFMediaEngineEx_INTERFACE_DEFINED__ */
2048
2049/*****************************************************************************
2050 * IMFMediaEngineClassFactory interface
2051 */
2052#ifndef __IMFMediaEngineClassFactory_INTERFACE_DEFINED__
2053#define __IMFMediaEngineClassFactory_INTERFACE_DEFINED__
2054
2055DEFINE_GUID(IID_IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93);
2056#if defined(__cplusplus) && !defined(CINTERFACE)
2057MIDL_INTERFACE("4d645ace-26aa-4688-9be1-df3516990b93")
2058IMFMediaEngineClassFactory : public IUnknown
2059{
2060 virtual HRESULT STDMETHODCALLTYPE CreateInstance(
2061 DWORD flags,
2062 IMFAttributes *attributes,
2063 IMFMediaEngine **engine) = 0;
2064
2065 virtual HRESULT STDMETHODCALLTYPE CreateTimeRange(
2066 IMFMediaTimeRange **range) = 0;
2067
2068 virtual HRESULT STDMETHODCALLTYPE CreateError(
2069 IMFMediaError **error) = 0;
2070
2071};
2072#ifdef __CRT_UUID_DECL
2073__CRT_UUID_DECL(IMFMediaEngineClassFactory, 0x4d645ace, 0x26aa, 0x4688, 0x9b,0xe1, 0xdf,0x35,0x16,0x99,0x0b,0x93)
2074#endif
2075#else
2076typedef struct IMFMediaEngineClassFactoryVtbl {
2077 BEGIN_INTERFACE
2078
2079 /*** IUnknown methods ***/
2080 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2081 IMFMediaEngineClassFactory *This,
2082 REFIID riid,
2083 void **ppvObject);
2084
2085 ULONG (STDMETHODCALLTYPE *AddRef)(
2086 IMFMediaEngineClassFactory *This);
2087
2088 ULONG (STDMETHODCALLTYPE *Release)(
2089 IMFMediaEngineClassFactory *This);
2090
2091 /*** IMFMediaEngineClassFactory methods ***/
2092 HRESULT (STDMETHODCALLTYPE *CreateInstance)(
2093 IMFMediaEngineClassFactory *This,
2094 DWORD flags,
2095 IMFAttributes *attributes,
2096 IMFMediaEngine **engine);
2097
2098 HRESULT (STDMETHODCALLTYPE *CreateTimeRange)(
2099 IMFMediaEngineClassFactory *This,
2100 IMFMediaTimeRange **range);
2101
2102 HRESULT (STDMETHODCALLTYPE *CreateError)(
2103 IMFMediaEngineClassFactory *This,
2104 IMFMediaError **error);
2105
2106 END_INTERFACE
2107} IMFMediaEngineClassFactoryVtbl;
2108
2109interface IMFMediaEngineClassFactory {
2110 CONST_VTBL IMFMediaEngineClassFactoryVtbl* lpVtbl;
2111};
2112
2113#ifdef COBJMACROS
2114#ifndef WIDL_C_INLINE_WRAPPERS
2115/*** IUnknown methods ***/
2116#define IMFMediaEngineClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2117#define IMFMediaEngineClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
2118#define IMFMediaEngineClassFactory_Release(This) (This)->lpVtbl->Release(This)
2119/*** IMFMediaEngineClassFactory methods ***/
2120#define IMFMediaEngineClassFactory_CreateInstance(This,flags,attributes,engine) (This)->lpVtbl->CreateInstance(This,flags,attributes,engine)
2121#define IMFMediaEngineClassFactory_CreateTimeRange(This,range) (This)->lpVtbl->CreateTimeRange(This,range)
2122#define IMFMediaEngineClassFactory_CreateError(This,error) (This)->lpVtbl->CreateError(This,error)
2123#else
2124/*** IUnknown methods ***/
2125static inline HRESULT IMFMediaEngineClassFactory_QueryInterface(IMFMediaEngineClassFactory* This,REFIID riid,void **ppvObject) {
2126 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2127}
2128static inline ULONG IMFMediaEngineClassFactory_AddRef(IMFMediaEngineClassFactory* This) {
2129 return This->lpVtbl->AddRef(This);
2130}
2131static inline ULONG IMFMediaEngineClassFactory_Release(IMFMediaEngineClassFactory* This) {
2132 return This->lpVtbl->Release(This);
2133}
2134/*** IMFMediaEngineClassFactory methods ***/
2135static inline HRESULT IMFMediaEngineClassFactory_CreateInstance(IMFMediaEngineClassFactory* This,DWORD flags,IMFAttributes *attributes,IMFMediaEngine **engine) {
2136 return This->lpVtbl->CreateInstance(This,flags,attributes,engine);
2137}
2138static inline HRESULT IMFMediaEngineClassFactory_CreateTimeRange(IMFMediaEngineClassFactory* This,IMFMediaTimeRange **range) {
2139 return This->lpVtbl->CreateTimeRange(This,range);
2140}
2141static inline HRESULT IMFMediaEngineClassFactory_CreateError(IMFMediaEngineClassFactory* This,IMFMediaError **error) {
2142 return This->lpVtbl->CreateError(This,error);
2143}
2144#endif
2145#endif
2146
2147#endif
2148
2149
2150#endif /* __IMFMediaEngineClassFactory_INTERFACE_DEFINED__ */
2151
2152/*****************************************************************************
2153 * IMFMediaSourceExtensionNotify interface
2154 */
2155#ifndef __IMFMediaSourceExtensionNotify_INTERFACE_DEFINED__
2156#define __IMFMediaSourceExtensionNotify_INTERFACE_DEFINED__
2157
2158DEFINE_GUID(IID_IMFMediaSourceExtensionNotify, 0xa7901327, 0x05dd, 0x4469, 0xa7,0xb7, 0x0e,0x01,0x97,0x9e,0x36,0x1d);
2159#if defined(__cplusplus) && !defined(CINTERFACE)
2160MIDL_INTERFACE("a7901327-05dd-4469-a7b7-0e01979e361d")
2161IMFMediaSourceExtensionNotify : public IUnknown
2162{
2163 virtual void STDMETHODCALLTYPE OnSourceOpen(
2164 ) = 0;
2165
2166 virtual void STDMETHODCALLTYPE OnSourceEnded(
2167 ) = 0;
2168
2169 virtual void STDMETHODCALLTYPE OnSourceClose(
2170 ) = 0;
2171
2172};
2173#ifdef __CRT_UUID_DECL
2174__CRT_UUID_DECL(IMFMediaSourceExtensionNotify, 0xa7901327, 0x05dd, 0x4469, 0xa7,0xb7, 0x0e,0x01,0x97,0x9e,0x36,0x1d)
2175#endif
2176#else
2177typedef struct IMFMediaSourceExtensionNotifyVtbl {
2178 BEGIN_INTERFACE
2179
2180 /*** IUnknown methods ***/
2181 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2182 IMFMediaSourceExtensionNotify *This,
2183 REFIID riid,
2184 void **ppvObject);
2185
2186 ULONG (STDMETHODCALLTYPE *AddRef)(
2187 IMFMediaSourceExtensionNotify *This);
2188
2189 ULONG (STDMETHODCALLTYPE *Release)(
2190 IMFMediaSourceExtensionNotify *This);
2191
2192 /*** IMFMediaSourceExtensionNotify methods ***/
2193 void (STDMETHODCALLTYPE *OnSourceOpen)(
2194 IMFMediaSourceExtensionNotify *This);
2195
2196 void (STDMETHODCALLTYPE *OnSourceEnded)(
2197 IMFMediaSourceExtensionNotify *This);
2198
2199 void (STDMETHODCALLTYPE *OnSourceClose)(
2200 IMFMediaSourceExtensionNotify *This);
2201
2202 END_INTERFACE
2203} IMFMediaSourceExtensionNotifyVtbl;
2204
2205interface IMFMediaSourceExtensionNotify {
2206 CONST_VTBL IMFMediaSourceExtensionNotifyVtbl* lpVtbl;
2207};
2208
2209#ifdef COBJMACROS
2210#ifndef WIDL_C_INLINE_WRAPPERS
2211/*** IUnknown methods ***/
2212#define IMFMediaSourceExtensionNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2213#define IMFMediaSourceExtensionNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
2214#define IMFMediaSourceExtensionNotify_Release(This) (This)->lpVtbl->Release(This)
2215/*** IMFMediaSourceExtensionNotify methods ***/
2216#define IMFMediaSourceExtensionNotify_OnSourceOpen(This) (This)->lpVtbl->OnSourceOpen(This)
2217#define IMFMediaSourceExtensionNotify_OnSourceEnded(This) (This)->lpVtbl->OnSourceEnded(This)
2218#define IMFMediaSourceExtensionNotify_OnSourceClose(This) (This)->lpVtbl->OnSourceClose(This)
2219#else
2220/*** IUnknown methods ***/
2221static inline HRESULT IMFMediaSourceExtensionNotify_QueryInterface(IMFMediaSourceExtensionNotify* This,REFIID riid,void **ppvObject) {
2222 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2223}
2224static inline ULONG IMFMediaSourceExtensionNotify_AddRef(IMFMediaSourceExtensionNotify* This) {
2225 return This->lpVtbl->AddRef(This);
2226}
2227static inline ULONG IMFMediaSourceExtensionNotify_Release(IMFMediaSourceExtensionNotify* This) {
2228 return This->lpVtbl->Release(This);
2229}
2230/*** IMFMediaSourceExtensionNotify methods ***/
2231static inline void IMFMediaSourceExtensionNotify_OnSourceOpen(IMFMediaSourceExtensionNotify* This) {
2232 This->lpVtbl->OnSourceOpen(This);
2233}
2234static inline void IMFMediaSourceExtensionNotify_OnSourceEnded(IMFMediaSourceExtensionNotify* This) {
2235 This->lpVtbl->OnSourceEnded(This);
2236}
2237static inline void IMFMediaSourceExtensionNotify_OnSourceClose(IMFMediaSourceExtensionNotify* This) {
2238 This->lpVtbl->OnSourceClose(This);
2239}
2240#endif
2241#endif
2242
2243#endif
2244
2245
2246#endif /* __IMFMediaSourceExtensionNotify_INTERFACE_DEFINED__ */
2247
2248/*****************************************************************************
2249 * IMFSourceBufferNotify interface
2250 */
2251#ifndef __IMFSourceBufferNotify_INTERFACE_DEFINED__
2252#define __IMFSourceBufferNotify_INTERFACE_DEFINED__
2253
2254DEFINE_GUID(IID_IMFSourceBufferNotify, 0x87e47623, 0x2ceb, 0x45d6, 0x9b,0x88, 0xd8,0x52,0x0c,0x4d,0xcb,0xbc);
2255#if defined(__cplusplus) && !defined(CINTERFACE)
2256MIDL_INTERFACE("87e47623-2ceb-45d6-9b88-d8520c4dcbbc")
2257IMFSourceBufferNotify : public IUnknown
2258{
2259 virtual void STDMETHODCALLTYPE OnUpdateStart(
2260 ) = 0;
2261
2262 virtual void STDMETHODCALLTYPE OnAbort(
2263 ) = 0;
2264
2265 virtual void STDMETHODCALLTYPE OnError(
2266 HRESULT hr) = 0;
2267
2268 virtual void STDMETHODCALLTYPE OnUpdate(
2269 ) = 0;
2270
2271 virtual void STDMETHODCALLTYPE OnUpdateEnd(
2272 ) = 0;
2273
2274};
2275#ifdef __CRT_UUID_DECL
2276__CRT_UUID_DECL(IMFSourceBufferNotify, 0x87e47623, 0x2ceb, 0x45d6, 0x9b,0x88, 0xd8,0x52,0x0c,0x4d,0xcb,0xbc)
2277#endif
2278#else
2279typedef struct IMFSourceBufferNotifyVtbl {
2280 BEGIN_INTERFACE
2281
2282 /*** IUnknown methods ***/
2283 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2284 IMFSourceBufferNotify *This,
2285 REFIID riid,
2286 void **ppvObject);
2287
2288 ULONG (STDMETHODCALLTYPE *AddRef)(
2289 IMFSourceBufferNotify *This);
2290
2291 ULONG (STDMETHODCALLTYPE *Release)(
2292 IMFSourceBufferNotify *This);
2293
2294 /*** IMFSourceBufferNotify methods ***/
2295 void (STDMETHODCALLTYPE *OnUpdateStart)(
2296 IMFSourceBufferNotify *This);
2297
2298 void (STDMETHODCALLTYPE *OnAbort)(
2299 IMFSourceBufferNotify *This);
2300
2301 void (STDMETHODCALLTYPE *OnError)(
2302 IMFSourceBufferNotify *This,
2303 HRESULT hr);
2304
2305 void (STDMETHODCALLTYPE *OnUpdate)(
2306 IMFSourceBufferNotify *This);
2307
2308 void (STDMETHODCALLTYPE *OnUpdateEnd)(
2309 IMFSourceBufferNotify *This);
2310
2311 END_INTERFACE
2312} IMFSourceBufferNotifyVtbl;
2313
2314interface IMFSourceBufferNotify {
2315 CONST_VTBL IMFSourceBufferNotifyVtbl* lpVtbl;
2316};
2317
2318#ifdef COBJMACROS
2319#ifndef WIDL_C_INLINE_WRAPPERS
2320/*** IUnknown methods ***/
2321#define IMFSourceBufferNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2322#define IMFSourceBufferNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
2323#define IMFSourceBufferNotify_Release(This) (This)->lpVtbl->Release(This)
2324/*** IMFSourceBufferNotify methods ***/
2325#define IMFSourceBufferNotify_OnUpdateStart(This) (This)->lpVtbl->OnUpdateStart(This)
2326#define IMFSourceBufferNotify_OnAbort(This) (This)->lpVtbl->OnAbort(This)
2327#define IMFSourceBufferNotify_OnError(This,hr) (This)->lpVtbl->OnError(This,hr)
2328#define IMFSourceBufferNotify_OnUpdate(This) (This)->lpVtbl->OnUpdate(This)
2329#define IMFSourceBufferNotify_OnUpdateEnd(This) (This)->lpVtbl->OnUpdateEnd(This)
2330#else
2331/*** IUnknown methods ***/
2332static inline HRESULT IMFSourceBufferNotify_QueryInterface(IMFSourceBufferNotify* This,REFIID riid,void **ppvObject) {
2333 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2334}
2335static inline ULONG IMFSourceBufferNotify_AddRef(IMFSourceBufferNotify* This) {
2336 return This->lpVtbl->AddRef(This);
2337}
2338static inline ULONG IMFSourceBufferNotify_Release(IMFSourceBufferNotify* This) {
2339 return This->lpVtbl->Release(This);
2340}
2341/*** IMFSourceBufferNotify methods ***/
2342static inline void IMFSourceBufferNotify_OnUpdateStart(IMFSourceBufferNotify* This) {
2343 This->lpVtbl->OnUpdateStart(This);
2344}
2345static inline void IMFSourceBufferNotify_OnAbort(IMFSourceBufferNotify* This) {
2346 This->lpVtbl->OnAbort(This);
2347}
2348static inline void IMFSourceBufferNotify_OnError(IMFSourceBufferNotify* This,HRESULT hr) {
2349 This->lpVtbl->OnError(This,hr);
2350}
2351static inline void IMFSourceBufferNotify_OnUpdate(IMFSourceBufferNotify* This) {
2352 This->lpVtbl->OnUpdate(This);
2353}
2354static inline void IMFSourceBufferNotify_OnUpdateEnd(IMFSourceBufferNotify* This) {
2355 This->lpVtbl->OnUpdateEnd(This);
2356}
2357#endif
2358#endif
2359
2360#endif
2361
2362
2363#endif /* __IMFSourceBufferNotify_INTERFACE_DEFINED__ */
2364
2365/*****************************************************************************
2366 * IMFSourceBuffer interface
2367 */
2368#ifndef __IMFSourceBuffer_INTERFACE_DEFINED__
2369#define __IMFSourceBuffer_INTERFACE_DEFINED__
2370
2371DEFINE_GUID(IID_IMFSourceBuffer, 0xe2cd3a4b, 0xaf25, 0x4d3d, 0x91,0x10, 0xda,0x0e,0x6f,0x8e,0xe8,0x77);
2372#if defined(__cplusplus) && !defined(CINTERFACE)
2373MIDL_INTERFACE("e2cd3a4b-af25-4d3d-9110-da0e6f8ee877")
2374IMFSourceBuffer : public IUnknown
2375{
2376 virtual WINBOOL STDMETHODCALLTYPE GetUpdating(
2377 ) = 0;
2378
2379 virtual HRESULT STDMETHODCALLTYPE GetBuffered(
2380 IMFMediaTimeRange **buffered) = 0;
2381
2382 virtual double STDMETHODCALLTYPE GetTimeStampOffset(
2383 ) = 0;
2384
2385 virtual HRESULT STDMETHODCALLTYPE SetTimeStampOffset(
2386 double offset) = 0;
2387
2388 virtual double STDMETHODCALLTYPE GetAppendWindowStart(
2389 ) = 0;
2390
2391 virtual HRESULT STDMETHODCALLTYPE SetAppendWindowStart(
2392 double time) = 0;
2393
2394 virtual double STDMETHODCALLTYPE GetAppendWindowEnd(
2395 ) = 0;
2396
2397 virtual HRESULT STDMETHODCALLTYPE SetAppendWindowEnd(
2398 double time) = 0;
2399
2400 virtual HRESULT STDMETHODCALLTYPE Append(
2401 const BYTE *data,
2402 DWORD len) = 0;
2403
2404 virtual HRESULT STDMETHODCALLTYPE AppendByteStream(
2405 IMFByteStream *stream,
2406 DWORDLONG *max_len) = 0;
2407
2408 virtual HRESULT STDMETHODCALLTYPE Abort(
2409 ) = 0;
2410
2411 virtual HRESULT STDMETHODCALLTYPE Remove(
2412 double start,
2413 double end) = 0;
2414
2415};
2416#ifdef __CRT_UUID_DECL
2417__CRT_UUID_DECL(IMFSourceBuffer, 0xe2cd3a4b, 0xaf25, 0x4d3d, 0x91,0x10, 0xda,0x0e,0x6f,0x8e,0xe8,0x77)
2418#endif
2419#else
2420typedef struct IMFSourceBufferVtbl {
2421 BEGIN_INTERFACE
2422
2423 /*** IUnknown methods ***/
2424 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2425 IMFSourceBuffer *This,
2426 REFIID riid,
2427 void **ppvObject);
2428
2429 ULONG (STDMETHODCALLTYPE *AddRef)(
2430 IMFSourceBuffer *This);
2431
2432 ULONG (STDMETHODCALLTYPE *Release)(
2433 IMFSourceBuffer *This);
2434
2435 /*** IMFSourceBuffer methods ***/
2436 WINBOOL (STDMETHODCALLTYPE *GetUpdating)(
2437 IMFSourceBuffer *This);
2438
2439 HRESULT (STDMETHODCALLTYPE *GetBuffered)(
2440 IMFSourceBuffer *This,
2441 IMFMediaTimeRange **buffered);
2442
2443 double (STDMETHODCALLTYPE *GetTimeStampOffset)(
2444 IMFSourceBuffer *This);
2445
2446 HRESULT (STDMETHODCALLTYPE *SetTimeStampOffset)(
2447 IMFSourceBuffer *This,
2448 double offset);
2449
2450 double (STDMETHODCALLTYPE *GetAppendWindowStart)(
2451 IMFSourceBuffer *This);
2452
2453 HRESULT (STDMETHODCALLTYPE *SetAppendWindowStart)(
2454 IMFSourceBuffer *This,
2455 double time);
2456
2457 double (STDMETHODCALLTYPE *GetAppendWindowEnd)(
2458 IMFSourceBuffer *This);
2459
2460 HRESULT (STDMETHODCALLTYPE *SetAppendWindowEnd)(
2461 IMFSourceBuffer *This,
2462 double time);
2463
2464 HRESULT (STDMETHODCALLTYPE *Append)(
2465 IMFSourceBuffer *This,
2466 const BYTE *data,
2467 DWORD len);
2468
2469 HRESULT (STDMETHODCALLTYPE *AppendByteStream)(
2470 IMFSourceBuffer *This,
2471 IMFByteStream *stream,
2472 DWORDLONG *max_len);
2473
2474 HRESULT (STDMETHODCALLTYPE *Abort)(
2475 IMFSourceBuffer *This);
2476
2477 HRESULT (STDMETHODCALLTYPE *Remove)(
2478 IMFSourceBuffer *This,
2479 double start,
2480 double end);
2481
2482 END_INTERFACE
2483} IMFSourceBufferVtbl;
2484
2485interface IMFSourceBuffer {
2486 CONST_VTBL IMFSourceBufferVtbl* lpVtbl;
2487};
2488
2489#ifdef COBJMACROS
2490#ifndef WIDL_C_INLINE_WRAPPERS
2491/*** IUnknown methods ***/
2492#define IMFSourceBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2493#define IMFSourceBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
2494#define IMFSourceBuffer_Release(This) (This)->lpVtbl->Release(This)
2495/*** IMFSourceBuffer methods ***/
2496#define IMFSourceBuffer_GetUpdating(This) (This)->lpVtbl->GetUpdating(This)
2497#define IMFSourceBuffer_GetBuffered(This,buffered) (This)->lpVtbl->GetBuffered(This,buffered)
2498#define IMFSourceBuffer_GetTimeStampOffset(This) (This)->lpVtbl->GetTimeStampOffset(This)
2499#define IMFSourceBuffer_SetTimeStampOffset(This,offset) (This)->lpVtbl->SetTimeStampOffset(This,offset)
2500#define IMFSourceBuffer_GetAppendWindowStart(This) (This)->lpVtbl->GetAppendWindowStart(This)
2501#define IMFSourceBuffer_SetAppendWindowStart(This,time) (This)->lpVtbl->SetAppendWindowStart(This,time)
2502#define IMFSourceBuffer_GetAppendWindowEnd(This) (This)->lpVtbl->GetAppendWindowEnd(This)
2503#define IMFSourceBuffer_SetAppendWindowEnd(This,time) (This)->lpVtbl->SetAppendWindowEnd(This,time)
2504#define IMFSourceBuffer_Append(This,data,len) (This)->lpVtbl->Append(This,data,len)
2505#define IMFSourceBuffer_AppendByteStream(This,stream,max_len) (This)->lpVtbl->AppendByteStream(This,stream,max_len)
2506#define IMFSourceBuffer_Abort(This) (This)->lpVtbl->Abort(This)
2507#define IMFSourceBuffer_Remove(This,start,end) (This)->lpVtbl->Remove(This,start,end)
2508#else
2509/*** IUnknown methods ***/
2510static inline HRESULT IMFSourceBuffer_QueryInterface(IMFSourceBuffer* This,REFIID riid,void **ppvObject) {
2511 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2512}
2513static inline ULONG IMFSourceBuffer_AddRef(IMFSourceBuffer* This) {
2514 return This->lpVtbl->AddRef(This);
2515}
2516static inline ULONG IMFSourceBuffer_Release(IMFSourceBuffer* This) {
2517 return This->lpVtbl->Release(This);
2518}
2519/*** IMFSourceBuffer methods ***/
2520static inline WINBOOL IMFSourceBuffer_GetUpdating(IMFSourceBuffer* This) {
2521 return This->lpVtbl->GetUpdating(This);
2522}
2523static inline HRESULT IMFSourceBuffer_GetBuffered(IMFSourceBuffer* This,IMFMediaTimeRange **buffered) {
2524 return This->lpVtbl->GetBuffered(This,buffered);
2525}
2526static inline double IMFSourceBuffer_GetTimeStampOffset(IMFSourceBuffer* This) {
2527 return This->lpVtbl->GetTimeStampOffset(This);
2528}
2529static inline HRESULT IMFSourceBuffer_SetTimeStampOffset(IMFSourceBuffer* This,double offset) {
2530 return This->lpVtbl->SetTimeStampOffset(This,offset);
2531}
2532static inline double IMFSourceBuffer_GetAppendWindowStart(IMFSourceBuffer* This) {
2533 return This->lpVtbl->GetAppendWindowStart(This);
2534}
2535static inline HRESULT IMFSourceBuffer_SetAppendWindowStart(IMFSourceBuffer* This,double time) {
2536 return This->lpVtbl->SetAppendWindowStart(This,time);
2537}
2538static inline double IMFSourceBuffer_GetAppendWindowEnd(IMFSourceBuffer* This) {
2539 return This->lpVtbl->GetAppendWindowEnd(This);
2540}
2541static inline HRESULT IMFSourceBuffer_SetAppendWindowEnd(IMFSourceBuffer* This,double time) {
2542 return This->lpVtbl->SetAppendWindowEnd(This,time);
2543}
2544static inline HRESULT IMFSourceBuffer_Append(IMFSourceBuffer* This,const BYTE *data,DWORD len) {
2545 return This->lpVtbl->Append(This,data,len);
2546}
2547static inline HRESULT IMFSourceBuffer_AppendByteStream(IMFSourceBuffer* This,IMFByteStream *stream,DWORDLONG *max_len) {
2548 return This->lpVtbl->AppendByteStream(This,stream,max_len);
2549}
2550static inline HRESULT IMFSourceBuffer_Abort(IMFSourceBuffer* This) {
2551 return This->lpVtbl->Abort(This);
2552}
2553static inline HRESULT IMFSourceBuffer_Remove(IMFSourceBuffer* This,double start,double end) {
2554 return This->lpVtbl->Remove(This,start,end);
2555}
2556#endif
2557#endif
2558
2559#endif
2560
2561
2562#endif /* __IMFSourceBuffer_INTERFACE_DEFINED__ */
2563
2564/*****************************************************************************
2565 * IMFSourceBufferList interface
2566 */
2567#ifndef __IMFSourceBufferList_INTERFACE_DEFINED__
2568#define __IMFSourceBufferList_INTERFACE_DEFINED__
2569
2570DEFINE_GUID(IID_IMFSourceBufferList, 0x249981f8, 0x8325, 0x41f3, 0xb8,0x0c, 0x3b,0x9e,0x3a,0xad,0x0c,0xbe);
2571#if defined(__cplusplus) && !defined(CINTERFACE)
2572MIDL_INTERFACE("249981f8-8325-41f3-b80c-3b9e3aad0cbe")
2573IMFSourceBufferList : public IUnknown
2574{
2575 virtual DWORD STDMETHODCALLTYPE GetLength(
2576 ) = 0;
2577
2578 virtual IMFSourceBuffer * STDMETHODCALLTYPE GetSourceBuffer(
2579 DWORD index) = 0;
2580
2581};
2582#ifdef __CRT_UUID_DECL
2583__CRT_UUID_DECL(IMFSourceBufferList, 0x249981f8, 0x8325, 0x41f3, 0xb8,0x0c, 0x3b,0x9e,0x3a,0xad,0x0c,0xbe)
2584#endif
2585#else
2586typedef struct IMFSourceBufferListVtbl {
2587 BEGIN_INTERFACE
2588
2589 /*** IUnknown methods ***/
2590 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2591 IMFSourceBufferList *This,
2592 REFIID riid,
2593 void **ppvObject);
2594
2595 ULONG (STDMETHODCALLTYPE *AddRef)(
2596 IMFSourceBufferList *This);
2597
2598 ULONG (STDMETHODCALLTYPE *Release)(
2599 IMFSourceBufferList *This);
2600
2601 /*** IMFSourceBufferList methods ***/
2602 DWORD (STDMETHODCALLTYPE *GetLength)(
2603 IMFSourceBufferList *This);
2604
2605 IMFSourceBuffer * (STDMETHODCALLTYPE *GetSourceBuffer)(
2606 IMFSourceBufferList *This,
2607 DWORD index);
2608
2609 END_INTERFACE
2610} IMFSourceBufferListVtbl;
2611
2612interface IMFSourceBufferList {
2613 CONST_VTBL IMFSourceBufferListVtbl* lpVtbl;
2614};
2615
2616#ifdef COBJMACROS
2617#ifndef WIDL_C_INLINE_WRAPPERS
2618/*** IUnknown methods ***/
2619#define IMFSourceBufferList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2620#define IMFSourceBufferList_AddRef(This) (This)->lpVtbl->AddRef(This)
2621#define IMFSourceBufferList_Release(This) (This)->lpVtbl->Release(This)
2622/*** IMFSourceBufferList methods ***/
2623#define IMFSourceBufferList_GetLength(This) (This)->lpVtbl->GetLength(This)
2624#define IMFSourceBufferList_GetSourceBuffer(This,index) (This)->lpVtbl->GetSourceBuffer(This,index)
2625#else
2626/*** IUnknown methods ***/
2627static inline HRESULT IMFSourceBufferList_QueryInterface(IMFSourceBufferList* This,REFIID riid,void **ppvObject) {
2628 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2629}
2630static inline ULONG IMFSourceBufferList_AddRef(IMFSourceBufferList* This) {
2631 return This->lpVtbl->AddRef(This);
2632}
2633static inline ULONG IMFSourceBufferList_Release(IMFSourceBufferList* This) {
2634 return This->lpVtbl->Release(This);
2635}
2636/*** IMFSourceBufferList methods ***/
2637static inline DWORD IMFSourceBufferList_GetLength(IMFSourceBufferList* This) {
2638 return This->lpVtbl->GetLength(This);
2639}
2640static inline IMFSourceBuffer * IMFSourceBufferList_GetSourceBuffer(IMFSourceBufferList* This,DWORD index) {
2641 return This->lpVtbl->GetSourceBuffer(This,index);
2642}
2643#endif
2644#endif
2645
2646#endif
2647
2648
2649#endif /* __IMFSourceBufferList_INTERFACE_DEFINED__ */
2650
2651typedef enum MF_MSE_READY {
2652 MF_MSE_READY_CLOSED = 1,
2653 MF_MSE_READY_OPEN = 2,
2654 MF_MSE_READY_ENDED = 3
2655} MF_MSE_READY;
2656typedef enum MF_MSE_ERROR {
2657 MF_MSE_ERROR_NOERROR = 0,
2658 MF_MSE_ERROR_NETWORK = 1,
2659 MF_MSE_ERROR_DECODE = 2,
2660 MF_MSE_ERROR_UNKNOWN_ERROR = 3
2661} MF_MSE_ERROR;
2662/*****************************************************************************
2663 * IMFMediaSourceExtension interface
2664 */
2665#ifndef __IMFMediaSourceExtension_INTERFACE_DEFINED__
2666#define __IMFMediaSourceExtension_INTERFACE_DEFINED__
2667
2668DEFINE_GUID(IID_IMFMediaSourceExtension, 0xe467b94e, 0xa713, 0x4562, 0xa8,0x02, 0x81,0x6a,0x42,0xe9,0x00,0x8a);
2669#if defined(__cplusplus) && !defined(CINTERFACE)
2670MIDL_INTERFACE("e467b94e-a713-4562-a802-816a42e9008a")
2671IMFMediaSourceExtension : public IUnknown
2672{
2673 virtual IMFSourceBufferList * STDMETHODCALLTYPE GetSourceBuffers(
2674 ) = 0;
2675
2676 virtual IMFSourceBufferList * STDMETHODCALLTYPE GetActiveSourceBuffers(
2677 ) = 0;
2678
2679 virtual MF_MSE_READY STDMETHODCALLTYPE GetReadyState(
2680 ) = 0;
2681
2682 virtual double STDMETHODCALLTYPE GetDuration(
2683 ) = 0;
2684
2685 virtual HRESULT STDMETHODCALLTYPE SetDuration(
2686 double duration) = 0;
2687
2688 virtual HRESULT STDMETHODCALLTYPE AddSourceBuffer(
2689 BSTR type,
2690 IMFSourceBufferNotify *notify,
2691 IMFSourceBuffer **source_buffer) = 0;
2692
2693 virtual HRESULT STDMETHODCALLTYPE RemoveSourceBuffer(
2694 IMFSourceBuffer *source_buffer) = 0;
2695
2696 virtual HRESULT STDMETHODCALLTYPE SetEndOfStream(
2697 MF_MSE_ERROR error) = 0;
2698
2699 virtual WINBOOL STDMETHODCALLTYPE IsTypeSupported(
2700 BSTR type) = 0;
2701
2702 virtual IMFSourceBuffer * STDMETHODCALLTYPE GetSourceBuffer(
2703 DWORD stream_index) = 0;
2704
2705};
2706#ifdef __CRT_UUID_DECL
2707__CRT_UUID_DECL(IMFMediaSourceExtension, 0xe467b94e, 0xa713, 0x4562, 0xa8,0x02, 0x81,0x6a,0x42,0xe9,0x00,0x8a)
2708#endif
2709#else
2710typedef struct IMFMediaSourceExtensionVtbl {
2711 BEGIN_INTERFACE
2712
2713 /*** IUnknown methods ***/
2714 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2715 IMFMediaSourceExtension *This,
2716 REFIID riid,
2717 void **ppvObject);
2718
2719 ULONG (STDMETHODCALLTYPE *AddRef)(
2720 IMFMediaSourceExtension *This);
2721
2722 ULONG (STDMETHODCALLTYPE *Release)(
2723 IMFMediaSourceExtension *This);
2724
2725 /*** IMFMediaSourceExtension methods ***/
2726 IMFSourceBufferList * (STDMETHODCALLTYPE *GetSourceBuffers)(
2727 IMFMediaSourceExtension *This);
2728
2729 IMFSourceBufferList * (STDMETHODCALLTYPE *GetActiveSourceBuffers)(
2730 IMFMediaSourceExtension *This);
2731
2732 MF_MSE_READY (STDMETHODCALLTYPE *GetReadyState)(
2733 IMFMediaSourceExtension *This);
2734
2735 double (STDMETHODCALLTYPE *GetDuration)(
2736 IMFMediaSourceExtension *This);
2737
2738 HRESULT (STDMETHODCALLTYPE *SetDuration)(
2739 IMFMediaSourceExtension *This,
2740 double duration);
2741
2742 HRESULT (STDMETHODCALLTYPE *AddSourceBuffer)(
2743 IMFMediaSourceExtension *This,
2744 BSTR type,
2745 IMFSourceBufferNotify *notify,
2746 IMFSourceBuffer **source_buffer);
2747
2748 HRESULT (STDMETHODCALLTYPE *RemoveSourceBuffer)(
2749 IMFMediaSourceExtension *This,
2750 IMFSourceBuffer *source_buffer);
2751
2752 HRESULT (STDMETHODCALLTYPE *SetEndOfStream)(
2753 IMFMediaSourceExtension *This,
2754 MF_MSE_ERROR error);
2755
2756 WINBOOL (STDMETHODCALLTYPE *IsTypeSupported)(
2757 IMFMediaSourceExtension *This,
2758 BSTR type);
2759
2760 IMFSourceBuffer * (STDMETHODCALLTYPE *GetSourceBuffer)(
2761 IMFMediaSourceExtension *This,
2762 DWORD stream_index);
2763
2764 END_INTERFACE
2765} IMFMediaSourceExtensionVtbl;
2766
2767interface IMFMediaSourceExtension {
2768 CONST_VTBL IMFMediaSourceExtensionVtbl* lpVtbl;
2769};
2770
2771#ifdef COBJMACROS
2772#ifndef WIDL_C_INLINE_WRAPPERS
2773/*** IUnknown methods ***/
2774#define IMFMediaSourceExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2775#define IMFMediaSourceExtension_AddRef(This) (This)->lpVtbl->AddRef(This)
2776#define IMFMediaSourceExtension_Release(This) (This)->lpVtbl->Release(This)
2777/*** IMFMediaSourceExtension methods ***/
2778#define IMFMediaSourceExtension_GetSourceBuffers(This) (This)->lpVtbl->GetSourceBuffers(This)
2779#define IMFMediaSourceExtension_GetActiveSourceBuffers(This) (This)->lpVtbl->GetActiveSourceBuffers(This)
2780#define IMFMediaSourceExtension_GetReadyState(This) (This)->lpVtbl->GetReadyState(This)
2781#define IMFMediaSourceExtension_GetDuration(This) (This)->lpVtbl->GetDuration(This)
2782#define IMFMediaSourceExtension_SetDuration(This,duration) (This)->lpVtbl->SetDuration(This,duration)
2783#define IMFMediaSourceExtension_AddSourceBuffer(This,type,notify,source_buffer) (This)->lpVtbl->AddSourceBuffer(This,type,notify,source_buffer)
2784#define IMFMediaSourceExtension_RemoveSourceBuffer(This,source_buffer) (This)->lpVtbl->RemoveSourceBuffer(This,source_buffer)
2785#define IMFMediaSourceExtension_SetEndOfStream(This,error) (This)->lpVtbl->SetEndOfStream(This,error)
2786#define IMFMediaSourceExtension_IsTypeSupported(This,type) (This)->lpVtbl->IsTypeSupported(This,type)
2787#define IMFMediaSourceExtension_GetSourceBuffer(This,stream_index) (This)->lpVtbl->GetSourceBuffer(This,stream_index)
2788#else
2789/*** IUnknown methods ***/
2790static inline HRESULT IMFMediaSourceExtension_QueryInterface(IMFMediaSourceExtension* This,REFIID riid,void **ppvObject) {
2791 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2792}
2793static inline ULONG IMFMediaSourceExtension_AddRef(IMFMediaSourceExtension* This) {
2794 return This->lpVtbl->AddRef(This);
2795}
2796static inline ULONG IMFMediaSourceExtension_Release(IMFMediaSourceExtension* This) {
2797 return This->lpVtbl->Release(This);
2798}
2799/*** IMFMediaSourceExtension methods ***/
2800static inline IMFSourceBufferList * IMFMediaSourceExtension_GetSourceBuffers(IMFMediaSourceExtension* This) {
2801 return This->lpVtbl->GetSourceBuffers(This);
2802}
2803static inline IMFSourceBufferList * IMFMediaSourceExtension_GetActiveSourceBuffers(IMFMediaSourceExtension* This) {
2804 return This->lpVtbl->GetActiveSourceBuffers(This);
2805}
2806static inline MF_MSE_READY IMFMediaSourceExtension_GetReadyState(IMFMediaSourceExtension* This) {
2807 return This->lpVtbl->GetReadyState(This);
2808}
2809static inline double IMFMediaSourceExtension_GetDuration(IMFMediaSourceExtension* This) {
2810 return This->lpVtbl->GetDuration(This);
2811}
2812static inline HRESULT IMFMediaSourceExtension_SetDuration(IMFMediaSourceExtension* This,double duration) {
2813 return This->lpVtbl->SetDuration(This,duration);
2814}
2815static inline HRESULT IMFMediaSourceExtension_AddSourceBuffer(IMFMediaSourceExtension* This,BSTR type,IMFSourceBufferNotify *notify,IMFSourceBuffer **source_buffer) {
2816 return This->lpVtbl->AddSourceBuffer(This,type,notify,source_buffer);
2817}
2818static inline HRESULT IMFMediaSourceExtension_RemoveSourceBuffer(IMFMediaSourceExtension* This,IMFSourceBuffer *source_buffer) {
2819 return This->lpVtbl->RemoveSourceBuffer(This,source_buffer);
2820}
2821static inline HRESULT IMFMediaSourceExtension_SetEndOfStream(IMFMediaSourceExtension* This,MF_MSE_ERROR error) {
2822 return This->lpVtbl->SetEndOfStream(This,error);
2823}
2824static inline WINBOOL IMFMediaSourceExtension_IsTypeSupported(IMFMediaSourceExtension* This,BSTR type) {
2825 return This->lpVtbl->IsTypeSupported(This,type);
2826}
2827static inline IMFSourceBuffer * IMFMediaSourceExtension_GetSourceBuffer(IMFMediaSourceExtension* This,DWORD stream_index) {
2828 return This->lpVtbl->GetSourceBuffer(This,stream_index);
2829}
2830#endif
2831#endif
2832
2833#endif
2834
2835
2836#endif /* __IMFMediaSourceExtension_INTERFACE_DEFINED__ */
2837
2838/*****************************************************************************
2839 * IMFMediaEngineNotify interface
2840 */
2841#ifndef __IMFMediaEngineNotify_INTERFACE_DEFINED__
2842#define __IMFMediaEngineNotify_INTERFACE_DEFINED__
2843
2844DEFINE_GUID(IID_IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5);
2845#if defined(__cplusplus) && !defined(CINTERFACE)
2846MIDL_INTERFACE("fee7c112-e776-42b5-9bbf-0048524e2bd5")
2847IMFMediaEngineNotify : public IUnknown
2848{
2849 virtual HRESULT STDMETHODCALLTYPE EventNotify(
2850 DWORD event,
2851 DWORD_PTR param1,
2852 DWORD param2) = 0;
2853
2854};
2855#ifdef __CRT_UUID_DECL
2856__CRT_UUID_DECL(IMFMediaEngineNotify, 0xfee7c112, 0xe776, 0x42b5, 0x9b,0xbf, 0x00,0x48,0x52,0x4e,0x2b,0xd5)
2857#endif
2858#else
2859typedef struct IMFMediaEngineNotifyVtbl {
2860 BEGIN_INTERFACE
2861
2862 /*** IUnknown methods ***/
2863 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2864 IMFMediaEngineNotify *This,
2865 REFIID riid,
2866 void **ppvObject);
2867
2868 ULONG (STDMETHODCALLTYPE *AddRef)(
2869 IMFMediaEngineNotify *This);
2870
2871 ULONG (STDMETHODCALLTYPE *Release)(
2872 IMFMediaEngineNotify *This);
2873
2874 /*** IMFMediaEngineNotify methods ***/
2875 HRESULT (STDMETHODCALLTYPE *EventNotify)(
2876 IMFMediaEngineNotify *This,
2877 DWORD event,
2878 DWORD_PTR param1,
2879 DWORD param2);
2880
2881 END_INTERFACE
2882} IMFMediaEngineNotifyVtbl;
2883
2884interface IMFMediaEngineNotify {
2885 CONST_VTBL IMFMediaEngineNotifyVtbl* lpVtbl;
2886};
2887
2888#ifdef COBJMACROS
2889#ifndef WIDL_C_INLINE_WRAPPERS
2890/*** IUnknown methods ***/
2891#define IMFMediaEngineNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2892#define IMFMediaEngineNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
2893#define IMFMediaEngineNotify_Release(This) (This)->lpVtbl->Release(This)
2894/*** IMFMediaEngineNotify methods ***/
2895#define IMFMediaEngineNotify_EventNotify(This,event,param1,param2) (This)->lpVtbl->EventNotify(This,event,param1,param2)
2896#else
2897/*** IUnknown methods ***/
2898static inline HRESULT IMFMediaEngineNotify_QueryInterface(IMFMediaEngineNotify* This,REFIID riid,void **ppvObject) {
2899 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2900}
2901static inline ULONG IMFMediaEngineNotify_AddRef(IMFMediaEngineNotify* This) {
2902 return This->lpVtbl->AddRef(This);
2903}
2904static inline ULONG IMFMediaEngineNotify_Release(IMFMediaEngineNotify* This) {
2905 return This->lpVtbl->Release(This);
2906}
2907/*** IMFMediaEngineNotify methods ***/
2908static inline HRESULT IMFMediaEngineNotify_EventNotify(IMFMediaEngineNotify* This,DWORD event,DWORD_PTR param1,DWORD param2) {
2909 return This->lpVtbl->EventNotify(This,event,param1,param2);
2910}
2911#endif
2912#endif
2913
2914#endif
2915
2916
2917#endif /* __IMFMediaEngineNotify_INTERFACE_DEFINED__ */
2918
2919/*****************************************************************************
2920 * IMFMediaEngineAudioEndpointId interface
2921 */
2922#ifndef __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__
2923#define __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__
2924
2925DEFINE_GUID(IID_IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2);
2926#if defined(__cplusplus) && !defined(CINTERFACE)
2927MIDL_INTERFACE("7a3bac98-0e76-49fb-8c20-8a86fd98eaf2")
2928IMFMediaEngineAudioEndpointId : public IUnknown
2929{
2930 virtual HRESULT STDMETHODCALLTYPE SetAudioEndpointId(
2931 LPCWSTR id) = 0;
2932
2933 virtual HRESULT STDMETHODCALLTYPE GetAudioEndpointId(
2934 LPWSTR *id) = 0;
2935
2936};
2937#ifdef __CRT_UUID_DECL
2938__CRT_UUID_DECL(IMFMediaEngineAudioEndpointId, 0x7a3bac98, 0x0e76, 0x49fb, 0x8c,0x20, 0x8a,0x86,0xfd,0x98,0xea,0xf2)
2939#endif
2940#else
2941typedef struct IMFMediaEngineAudioEndpointIdVtbl {
2942 BEGIN_INTERFACE
2943
2944 /*** IUnknown methods ***/
2945 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2946 IMFMediaEngineAudioEndpointId *This,
2947 REFIID riid,
2948 void **ppvObject);
2949
2950 ULONG (STDMETHODCALLTYPE *AddRef)(
2951 IMFMediaEngineAudioEndpointId *This);
2952
2953 ULONG (STDMETHODCALLTYPE *Release)(
2954 IMFMediaEngineAudioEndpointId *This);
2955
2956 /*** IMFMediaEngineAudioEndpointId methods ***/
2957 HRESULT (STDMETHODCALLTYPE *SetAudioEndpointId)(
2958 IMFMediaEngineAudioEndpointId *This,
2959 LPCWSTR id);
2960
2961 HRESULT (STDMETHODCALLTYPE *GetAudioEndpointId)(
2962 IMFMediaEngineAudioEndpointId *This,
2963 LPWSTR *id);
2964
2965 END_INTERFACE
2966} IMFMediaEngineAudioEndpointIdVtbl;
2967
2968interface IMFMediaEngineAudioEndpointId {
2969 CONST_VTBL IMFMediaEngineAudioEndpointIdVtbl* lpVtbl;
2970};
2971
2972#ifdef COBJMACROS
2973#ifndef WIDL_C_INLINE_WRAPPERS
2974/*** IUnknown methods ***/
2975#define IMFMediaEngineAudioEndpointId_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2976#define IMFMediaEngineAudioEndpointId_AddRef(This) (This)->lpVtbl->AddRef(This)
2977#define IMFMediaEngineAudioEndpointId_Release(This) (This)->lpVtbl->Release(This)
2978/*** IMFMediaEngineAudioEndpointId methods ***/
2979#define IMFMediaEngineAudioEndpointId_SetAudioEndpointId(This,id) (This)->lpVtbl->SetAudioEndpointId(This,id)
2980#define IMFMediaEngineAudioEndpointId_GetAudioEndpointId(This,id) (This)->lpVtbl->GetAudioEndpointId(This,id)
2981#else
2982/*** IUnknown methods ***/
2983static inline HRESULT IMFMediaEngineAudioEndpointId_QueryInterface(IMFMediaEngineAudioEndpointId* This,REFIID riid,void **ppvObject) {
2984 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2985}
2986static inline ULONG IMFMediaEngineAudioEndpointId_AddRef(IMFMediaEngineAudioEndpointId* This) {
2987 return This->lpVtbl->AddRef(This);
2988}
2989static inline ULONG IMFMediaEngineAudioEndpointId_Release(IMFMediaEngineAudioEndpointId* This) {
2990 return This->lpVtbl->Release(This);
2991}
2992/*** IMFMediaEngineAudioEndpointId methods ***/
2993static inline HRESULT IMFMediaEngineAudioEndpointId_SetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPCWSTR id) {
2994 return This->lpVtbl->SetAudioEndpointId(This,id);
2995}
2996static inline HRESULT IMFMediaEngineAudioEndpointId_GetAudioEndpointId(IMFMediaEngineAudioEndpointId* This,LPWSTR *id) {
2997 return This->lpVtbl->GetAudioEndpointId(This,id);
2998}
2999#endif
3000#endif
3001
3002#endif
3003
3004
3005#endif /* __IMFMediaEngineAudioEndpointId_INTERFACE_DEFINED__ */
3006
3007/*****************************************************************************
3008 * IMFMediaEngineExtension interface
3009 */
3010#ifndef __IMFMediaEngineExtension_INTERFACE_DEFINED__
3011#define __IMFMediaEngineExtension_INTERFACE_DEFINED__
3012
3013DEFINE_GUID(IID_IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e);
3014#if defined(__cplusplus) && !defined(CINTERFACE)
3015MIDL_INTERFACE("2f69d622-20b5-41e9-afdf-89ced1dda04e")
3016IMFMediaEngineExtension : public IUnknown
3017{
3018 virtual HRESULT STDMETHODCALLTYPE CanPlayType(
3019 WINBOOL audio_only,
3020 BSTR mime_type,
3021 MF_MEDIA_ENGINE_CANPLAY *answer) = 0;
3022
3023 virtual HRESULT STDMETHODCALLTYPE BeginCreateObject(
3024 BSTR url,
3025 IMFByteStream *bytestream,
3026 MF_OBJECT_TYPE type,
3027 IUnknown **cancel_cookie,
3028 IMFAsyncCallback *callback,
3029 IUnknown *state) = 0;
3030
3031 virtual HRESULT STDMETHODCALLTYPE CancelObjectCreation(
3032 IUnknown *cancel_cookie) = 0;
3033
3034 virtual HRESULT STDMETHODCALLTYPE EndCreateObject(
3035 IMFAsyncResult *result,
3036 IUnknown **object) = 0;
3037
3038};
3039#ifdef __CRT_UUID_DECL
3040__CRT_UUID_DECL(IMFMediaEngineExtension, 0x2f69d622, 0x20b5, 0x41e9, 0xaf,0xdf, 0x89,0xce,0xd1,0xdd,0xa0,0x4e)
3041#endif
3042#else
3043typedef struct IMFMediaEngineExtensionVtbl {
3044 BEGIN_INTERFACE
3045
3046 /*** IUnknown methods ***/
3047 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3048 IMFMediaEngineExtension *This,
3049 REFIID riid,
3050 void **ppvObject);
3051
3052 ULONG (STDMETHODCALLTYPE *AddRef)(
3053 IMFMediaEngineExtension *This);
3054
3055 ULONG (STDMETHODCALLTYPE *Release)(
3056 IMFMediaEngineExtension *This);
3057
3058 /*** IMFMediaEngineExtension methods ***/
3059 HRESULT (STDMETHODCALLTYPE *CanPlayType)(
3060 IMFMediaEngineExtension *This,
3061 WINBOOL audio_only,
3062 BSTR mime_type,
3063 MF_MEDIA_ENGINE_CANPLAY *answer);
3064
3065 HRESULT (STDMETHODCALLTYPE *BeginCreateObject)(
3066 IMFMediaEngineExtension *This,
3067 BSTR url,
3068 IMFByteStream *bytestream,
3069 MF_OBJECT_TYPE type,
3070 IUnknown **cancel_cookie,
3071 IMFAsyncCallback *callback,
3072 IUnknown *state);
3073
3074 HRESULT (STDMETHODCALLTYPE *CancelObjectCreation)(
3075 IMFMediaEngineExtension *This,
3076 IUnknown *cancel_cookie);
3077
3078 HRESULT (STDMETHODCALLTYPE *EndCreateObject)(
3079 IMFMediaEngineExtension *This,
3080 IMFAsyncResult *result,
3081 IUnknown **object);
3082
3083 END_INTERFACE
3084} IMFMediaEngineExtensionVtbl;
3085
3086interface IMFMediaEngineExtension {
3087 CONST_VTBL IMFMediaEngineExtensionVtbl* lpVtbl;
3088};
3089
3090#ifdef COBJMACROS
3091#ifndef WIDL_C_INLINE_WRAPPERS
3092/*** IUnknown methods ***/
3093#define IMFMediaEngineExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3094#define IMFMediaEngineExtension_AddRef(This) (This)->lpVtbl->AddRef(This)
3095#define IMFMediaEngineExtension_Release(This) (This)->lpVtbl->Release(This)
3096/*** IMFMediaEngineExtension methods ***/
3097#define IMFMediaEngineExtension_CanPlayType(This,audio_only,mime_type,answer) (This)->lpVtbl->CanPlayType(This,audio_only,mime_type,answer)
3098#define IMFMediaEngineExtension_BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state) (This)->lpVtbl->BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state)
3099#define IMFMediaEngineExtension_CancelObjectCreation(This,cancel_cookie) (This)->lpVtbl->CancelObjectCreation(This,cancel_cookie)
3100#define IMFMediaEngineExtension_EndCreateObject(This,result,object) (This)->lpVtbl->EndCreateObject(This,result,object)
3101#else
3102/*** IUnknown methods ***/
3103static inline HRESULT IMFMediaEngineExtension_QueryInterface(IMFMediaEngineExtension* This,REFIID riid,void **ppvObject) {
3104 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3105}
3106static inline ULONG IMFMediaEngineExtension_AddRef(IMFMediaEngineExtension* This) {
3107 return This->lpVtbl->AddRef(This);
3108}
3109static inline ULONG IMFMediaEngineExtension_Release(IMFMediaEngineExtension* This) {
3110 return This->lpVtbl->Release(This);
3111}
3112/*** IMFMediaEngineExtension methods ***/
3113static inline HRESULT IMFMediaEngineExtension_CanPlayType(IMFMediaEngineExtension* This,WINBOOL audio_only,BSTR mime_type,MF_MEDIA_ENGINE_CANPLAY *answer) {
3114 return This->lpVtbl->CanPlayType(This,audio_only,mime_type,answer);
3115}
3116static inline HRESULT IMFMediaEngineExtension_BeginCreateObject(IMFMediaEngineExtension* This,BSTR url,IMFByteStream *bytestream,MF_OBJECT_TYPE type,IUnknown **cancel_cookie,IMFAsyncCallback *callback,IUnknown *state) {
3117 return This->lpVtbl->BeginCreateObject(This,url,bytestream,type,cancel_cookie,callback,state);
3118}
3119static inline HRESULT IMFMediaEngineExtension_CancelObjectCreation(IMFMediaEngineExtension* This,IUnknown *cancel_cookie) {
3120 return This->lpVtbl->CancelObjectCreation(This,cancel_cookie);
3121}
3122static inline HRESULT IMFMediaEngineExtension_EndCreateObject(IMFMediaEngineExtension* This,IMFAsyncResult *result,IUnknown **object) {
3123 return This->lpVtbl->EndCreateObject(This,result,object);
3124}
3125#endif
3126#endif
3127
3128#endif
3129
3130
3131#endif /* __IMFMediaEngineExtension_INTERFACE_DEFINED__ */
3132
3133/*****************************************************************************
3134 * IMFMediaKeySessionNotify interface
3135 */
3136#ifndef __IMFMediaKeySessionNotify_INTERFACE_DEFINED__
3137#define __IMFMediaKeySessionNotify_INTERFACE_DEFINED__
3138
3139DEFINE_GUID(IID_IMFMediaKeySessionNotify, 0x6a0083f9, 0x8947, 0x4c1d, 0x9c,0xe0, 0xcd,0xee,0x22,0xb2,0x31,0x35);
3140#if defined(__cplusplus) && !defined(CINTERFACE)
3141MIDL_INTERFACE("6a0083f9-8947-4c1d-9ce0-cdee22b23135")
3142IMFMediaKeySessionNotify : public IUnknown
3143{
3144 virtual void STDMETHODCALLTYPE KeyMessage(
3145 BSTR destination_url,
3146 const BYTE *message,
3147 DWORD message_len) = 0;
3148
3149 virtual void STDMETHODCALLTYPE KeyAdded(
3150 ) = 0;
3151
3152 virtual void STDMETHODCALLTYPE KeyError(
3153 USHORT code,
3154 DWORD system_code) = 0;
3155
3156};
3157#ifdef __CRT_UUID_DECL
3158__CRT_UUID_DECL(IMFMediaKeySessionNotify, 0x6a0083f9, 0x8947, 0x4c1d, 0x9c,0xe0, 0xcd,0xee,0x22,0xb2,0x31,0x35)
3159#endif
3160#else
3161typedef struct IMFMediaKeySessionNotifyVtbl {
3162 BEGIN_INTERFACE
3163
3164 /*** IUnknown methods ***/
3165 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3166 IMFMediaKeySessionNotify *This,
3167 REFIID riid,
3168 void **ppvObject);
3169
3170 ULONG (STDMETHODCALLTYPE *AddRef)(
3171 IMFMediaKeySessionNotify *This);
3172
3173 ULONG (STDMETHODCALLTYPE *Release)(
3174 IMFMediaKeySessionNotify *This);
3175
3176 /*** IMFMediaKeySessionNotify methods ***/
3177 void (STDMETHODCALLTYPE *KeyMessage)(
3178 IMFMediaKeySessionNotify *This,
3179 BSTR destination_url,
3180 const BYTE *message,
3181 DWORD message_len);
3182
3183 void (STDMETHODCALLTYPE *KeyAdded)(
3184 IMFMediaKeySessionNotify *This);
3185
3186 void (STDMETHODCALLTYPE *KeyError)(
3187 IMFMediaKeySessionNotify *This,
3188 USHORT code,
3189 DWORD system_code);
3190
3191 END_INTERFACE
3192} IMFMediaKeySessionNotifyVtbl;
3193
3194interface IMFMediaKeySessionNotify {
3195 CONST_VTBL IMFMediaKeySessionNotifyVtbl* lpVtbl;
3196};
3197
3198#ifdef COBJMACROS
3199#ifndef WIDL_C_INLINE_WRAPPERS
3200/*** IUnknown methods ***/
3201#define IMFMediaKeySessionNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3202#define IMFMediaKeySessionNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
3203#define IMFMediaKeySessionNotify_Release(This) (This)->lpVtbl->Release(This)
3204/*** IMFMediaKeySessionNotify methods ***/
3205#define IMFMediaKeySessionNotify_KeyMessage(This,destination_url,message,message_len) (This)->lpVtbl->KeyMessage(This,destination_url,message,message_len)
3206#define IMFMediaKeySessionNotify_KeyAdded(This) (This)->lpVtbl->KeyAdded(This)
3207#define IMFMediaKeySessionNotify_KeyError(This,code,system_code) (This)->lpVtbl->KeyError(This,code,system_code)
3208#else
3209/*** IUnknown methods ***/
3210static inline HRESULT IMFMediaKeySessionNotify_QueryInterface(IMFMediaKeySessionNotify* This,REFIID riid,void **ppvObject) {
3211 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3212}
3213static inline ULONG IMFMediaKeySessionNotify_AddRef(IMFMediaKeySessionNotify* This) {
3214 return This->lpVtbl->AddRef(This);
3215}
3216static inline ULONG IMFMediaKeySessionNotify_Release(IMFMediaKeySessionNotify* This) {
3217 return This->lpVtbl->Release(This);
3218}
3219/*** IMFMediaKeySessionNotify methods ***/
3220static inline void IMFMediaKeySessionNotify_KeyMessage(IMFMediaKeySessionNotify* This,BSTR destination_url,const BYTE *message,DWORD message_len) {
3221 This->lpVtbl->KeyMessage(This,destination_url,message,message_len);
3222}
3223static inline void IMFMediaKeySessionNotify_KeyAdded(IMFMediaKeySessionNotify* This) {
3224 This->lpVtbl->KeyAdded(This);
3225}
3226static inline void IMFMediaKeySessionNotify_KeyError(IMFMediaKeySessionNotify* This,USHORT code,DWORD system_code) {
3227 This->lpVtbl->KeyError(This,code,system_code);
3228}
3229#endif
3230#endif
3231
3232#endif
3233
3234
3235#endif /* __IMFMediaKeySessionNotify_INTERFACE_DEFINED__ */
3236
3237/*****************************************************************************
3238 * IMFMediaKeySession interface
3239 */
3240#ifndef __IMFMediaKeySession_INTERFACE_DEFINED__
3241#define __IMFMediaKeySession_INTERFACE_DEFINED__
3242
3243DEFINE_GUID(IID_IMFMediaKeySession, 0x24fa67d5, 0xd1d0, 0x4dc5, 0x99,0x5c, 0xc0,0xef,0xdc,0x19,0x1f,0xb5);
3244#if defined(__cplusplus) && !defined(CINTERFACE)
3245MIDL_INTERFACE("24fa67d5-d1d0-4dc5-995c-c0efdc191fb5")
3246IMFMediaKeySession : public IUnknown
3247{
3248 virtual HRESULT STDMETHODCALLTYPE GetError(
3249 USHORT *code,
3250 DWORD *system_code) = 0;
3251
3252 virtual HRESULT STDMETHODCALLTYPE get_KeySystem(
3253 BSTR *key_system) = 0;
3254
3255 virtual HRESULT STDMETHODCALLTYPE get_SessionId(
3256 BSTR *session_id) = 0;
3257
3258 virtual HRESULT STDMETHODCALLTYPE Update(
3259 const BYTE *key,
3260 DWORD key_len) = 0;
3261
3262 virtual HRESULT STDMETHODCALLTYPE Close(
3263 ) = 0;
3264
3265};
3266#ifdef __CRT_UUID_DECL
3267__CRT_UUID_DECL(IMFMediaKeySession, 0x24fa67d5, 0xd1d0, 0x4dc5, 0x99,0x5c, 0xc0,0xef,0xdc,0x19,0x1f,0xb5)
3268#endif
3269#else
3270typedef struct IMFMediaKeySessionVtbl {
3271 BEGIN_INTERFACE
3272
3273 /*** IUnknown methods ***/
3274 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3275 IMFMediaKeySession *This,
3276 REFIID riid,
3277 void **ppvObject);
3278
3279 ULONG (STDMETHODCALLTYPE *AddRef)(
3280 IMFMediaKeySession *This);
3281
3282 ULONG (STDMETHODCALLTYPE *Release)(
3283 IMFMediaKeySession *This);
3284
3285 /*** IMFMediaKeySession methods ***/
3286 HRESULT (STDMETHODCALLTYPE *GetError)(
3287 IMFMediaKeySession *This,
3288 USHORT *code,
3289 DWORD *system_code);
3290
3291 HRESULT (STDMETHODCALLTYPE *get_KeySystem)(
3292 IMFMediaKeySession *This,
3293 BSTR *key_system);
3294
3295 HRESULT (STDMETHODCALLTYPE *get_SessionId)(
3296 IMFMediaKeySession *This,
3297 BSTR *session_id);
3298
3299 HRESULT (STDMETHODCALLTYPE *Update)(
3300 IMFMediaKeySession *This,
3301 const BYTE *key,
3302 DWORD key_len);
3303
3304 HRESULT (STDMETHODCALLTYPE *Close)(
3305 IMFMediaKeySession *This);
3306
3307 END_INTERFACE
3308} IMFMediaKeySessionVtbl;
3309
3310interface IMFMediaKeySession {
3311 CONST_VTBL IMFMediaKeySessionVtbl* lpVtbl;
3312};
3313
3314#ifdef COBJMACROS
3315#ifndef WIDL_C_INLINE_WRAPPERS
3316/*** IUnknown methods ***/
3317#define IMFMediaKeySession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3318#define IMFMediaKeySession_AddRef(This) (This)->lpVtbl->AddRef(This)
3319#define IMFMediaKeySession_Release(This) (This)->lpVtbl->Release(This)
3320/*** IMFMediaKeySession methods ***/
3321#define IMFMediaKeySession_GetError(This,code,system_code) (This)->lpVtbl->GetError(This,code,system_code)
3322#define IMFMediaKeySession_get_KeySystem(This,key_system) (This)->lpVtbl->get_KeySystem(This,key_system)
3323#define IMFMediaKeySession_get_SessionId(This,session_id) (This)->lpVtbl->get_SessionId(This,session_id)
3324#define IMFMediaKeySession_Update(This,key,key_len) (This)->lpVtbl->Update(This,key,key_len)
3325#define IMFMediaKeySession_Close(This) (This)->lpVtbl->Close(This)
3326#else
3327/*** IUnknown methods ***/
3328static inline HRESULT IMFMediaKeySession_QueryInterface(IMFMediaKeySession* This,REFIID riid,void **ppvObject) {
3329 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3330}
3331static inline ULONG IMFMediaKeySession_AddRef(IMFMediaKeySession* This) {
3332 return This->lpVtbl->AddRef(This);
3333}
3334static inline ULONG IMFMediaKeySession_Release(IMFMediaKeySession* This) {
3335 return This->lpVtbl->Release(This);
3336}
3337/*** IMFMediaKeySession methods ***/
3338static inline HRESULT IMFMediaKeySession_GetError(IMFMediaKeySession* This,USHORT *code,DWORD *system_code) {
3339 return This->lpVtbl->GetError(This,code,system_code);
3340}
3341static inline HRESULT IMFMediaKeySession_get_KeySystem(IMFMediaKeySession* This,BSTR *key_system) {
3342 return This->lpVtbl->get_KeySystem(This,key_system);
3343}
3344static inline HRESULT IMFMediaKeySession_get_SessionId(IMFMediaKeySession* This,BSTR *session_id) {
3345 return This->lpVtbl->get_SessionId(This,session_id);
3346}
3347static inline HRESULT IMFMediaKeySession_Update(IMFMediaKeySession* This,const BYTE *key,DWORD key_len) {
3348 return This->lpVtbl->Update(This,key,key_len);
3349}
3350static inline HRESULT IMFMediaKeySession_Close(IMFMediaKeySession* This) {
3351 return This->lpVtbl->Close(This);
3352}
3353#endif
3354#endif
3355
3356#endif
3357
3358
3359#endif /* __IMFMediaKeySession_INTERFACE_DEFINED__ */
3360
3361/*****************************************************************************
3362 * IMFCdmSuspendNotify interface
3363 */
3364#ifndef __IMFCdmSuspendNotify_INTERFACE_DEFINED__
3365#define __IMFCdmSuspendNotify_INTERFACE_DEFINED__
3366
3367DEFINE_GUID(IID_IMFCdmSuspendNotify, 0x7a5645d2, 0x43bd, 0x47fd, 0x87,0xb7, 0xdc,0xd2,0x4c,0xc7,0xd6,0x92);
3368#if defined(__cplusplus) && !defined(CINTERFACE)
3369MIDL_INTERFACE("7a5645d2-43bd-47fd-87b7-dcd24cc7d692")
3370IMFCdmSuspendNotify : public IUnknown
3371{
3372 virtual HRESULT STDMETHODCALLTYPE Begin(
3373 ) = 0;
3374
3375 virtual HRESULT STDMETHODCALLTYPE End(
3376 ) = 0;
3377
3378};
3379#ifdef __CRT_UUID_DECL
3380__CRT_UUID_DECL(IMFCdmSuspendNotify, 0x7a5645d2, 0x43bd, 0x47fd, 0x87,0xb7, 0xdc,0xd2,0x4c,0xc7,0xd6,0x92)
3381#endif
3382#else
3383typedef struct IMFCdmSuspendNotifyVtbl {
3384 BEGIN_INTERFACE
3385
3386 /*** IUnknown methods ***/
3387 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3388 IMFCdmSuspendNotify *This,
3389 REFIID riid,
3390 void **ppvObject);
3391
3392 ULONG (STDMETHODCALLTYPE *AddRef)(
3393 IMFCdmSuspendNotify *This);
3394
3395 ULONG (STDMETHODCALLTYPE *Release)(
3396 IMFCdmSuspendNotify *This);
3397
3398 /*** IMFCdmSuspendNotify methods ***/
3399 HRESULT (STDMETHODCALLTYPE *Begin)(
3400 IMFCdmSuspendNotify *This);
3401
3402 HRESULT (STDMETHODCALLTYPE *End)(
3403 IMFCdmSuspendNotify *This);
3404
3405 END_INTERFACE
3406} IMFCdmSuspendNotifyVtbl;
3407
3408interface IMFCdmSuspendNotify {
3409 CONST_VTBL IMFCdmSuspendNotifyVtbl* lpVtbl;
3410};
3411
3412#ifdef COBJMACROS
3413#ifndef WIDL_C_INLINE_WRAPPERS
3414/*** IUnknown methods ***/
3415#define IMFCdmSuspendNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3416#define IMFCdmSuspendNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
3417#define IMFCdmSuspendNotify_Release(This) (This)->lpVtbl->Release(This)
3418/*** IMFCdmSuspendNotify methods ***/
3419#define IMFCdmSuspendNotify_Begin(This) (This)->lpVtbl->Begin(This)
3420#define IMFCdmSuspendNotify_End(This) (This)->lpVtbl->End(This)
3421#else
3422/*** IUnknown methods ***/
3423static inline HRESULT IMFCdmSuspendNotify_QueryInterface(IMFCdmSuspendNotify* This,REFIID riid,void **ppvObject) {
3424 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3425}
3426static inline ULONG IMFCdmSuspendNotify_AddRef(IMFCdmSuspendNotify* This) {
3427 return This->lpVtbl->AddRef(This);
3428}
3429static inline ULONG IMFCdmSuspendNotify_Release(IMFCdmSuspendNotify* This) {
3430 return This->lpVtbl->Release(This);
3431}
3432/*** IMFCdmSuspendNotify methods ***/
3433static inline HRESULT IMFCdmSuspendNotify_Begin(IMFCdmSuspendNotify* This) {
3434 return This->lpVtbl->Begin(This);
3435}
3436static inline HRESULT IMFCdmSuspendNotify_End(IMFCdmSuspendNotify* This) {
3437 return This->lpVtbl->End(This);
3438}
3439#endif
3440#endif
3441
3442#endif
3443
3444
3445#endif /* __IMFCdmSuspendNotify_INTERFACE_DEFINED__ */
3446
3447/*****************************************************************************
3448 * IMFMediaKeys interface
3449 */
3450#ifndef __IMFMediaKeys_INTERFACE_DEFINED__
3451#define __IMFMediaKeys_INTERFACE_DEFINED__
3452
3453DEFINE_GUID(IID_IMFMediaKeys, 0x5cb31c05, 0x61ff, 0x418f, 0xaf,0xda, 0xca,0xaf,0x41,0x42,0x1a,0x38);
3454#if defined(__cplusplus) && !defined(CINTERFACE)
3455MIDL_INTERFACE("5cb31c05-61ff-418f-afda-caaf41421a38")
3456IMFMediaKeys : public IUnknown
3457{
3458 virtual HRESULT STDMETHODCALLTYPE CreateSession(
3459 BSTR mime_type,
3460 const BYTE *init_data,
3461 DWORD init_data_len,
3462 const BYTE *custom_data,
3463 DWORD custom_data_len,
3464 IMFMediaKeySessionNotify *notify,
3465 IMFMediaKeySession **session) = 0;
3466
3467 virtual HRESULT STDMETHODCALLTYPE get_KeySystem(
3468 BSTR *key_system) = 0;
3469
3470 virtual HRESULT STDMETHODCALLTYPE Shutdown(
3471 ) = 0;
3472
3473 virtual HRESULT STDMETHODCALLTYPE GetSuspendNotify(
3474 IMFCdmSuspendNotify **notify) = 0;
3475
3476};
3477#ifdef __CRT_UUID_DECL
3478__CRT_UUID_DECL(IMFMediaKeys, 0x5cb31c05, 0x61ff, 0x418f, 0xaf,0xda, 0xca,0xaf,0x41,0x42,0x1a,0x38)
3479#endif
3480#else
3481typedef struct IMFMediaKeysVtbl {
3482 BEGIN_INTERFACE
3483
3484 /*** IUnknown methods ***/
3485 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3486 IMFMediaKeys *This,
3487 REFIID riid,
3488 void **ppvObject);
3489
3490 ULONG (STDMETHODCALLTYPE *AddRef)(
3491 IMFMediaKeys *This);
3492
3493 ULONG (STDMETHODCALLTYPE *Release)(
3494 IMFMediaKeys *This);
3495
3496 /*** IMFMediaKeys methods ***/
3497 HRESULT (STDMETHODCALLTYPE *CreateSession)(
3498 IMFMediaKeys *This,
3499 BSTR mime_type,
3500 const BYTE *init_data,
3501 DWORD init_data_len,
3502 const BYTE *custom_data,
3503 DWORD custom_data_len,
3504 IMFMediaKeySessionNotify *notify,
3505 IMFMediaKeySession **session);
3506
3507 HRESULT (STDMETHODCALLTYPE *get_KeySystem)(
3508 IMFMediaKeys *This,
3509 BSTR *key_system);
3510
3511 HRESULT (STDMETHODCALLTYPE *Shutdown)(
3512 IMFMediaKeys *This);
3513
3514 HRESULT (STDMETHODCALLTYPE *GetSuspendNotify)(
3515 IMFMediaKeys *This,
3516 IMFCdmSuspendNotify **notify);
3517
3518 END_INTERFACE
3519} IMFMediaKeysVtbl;
3520
3521interface IMFMediaKeys {
3522 CONST_VTBL IMFMediaKeysVtbl* lpVtbl;
3523};
3524
3525#ifdef COBJMACROS
3526#ifndef WIDL_C_INLINE_WRAPPERS
3527/*** IUnknown methods ***/
3528#define IMFMediaKeys_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3529#define IMFMediaKeys_AddRef(This) (This)->lpVtbl->AddRef(This)
3530#define IMFMediaKeys_Release(This) (This)->lpVtbl->Release(This)
3531/*** IMFMediaKeys methods ***/
3532#define IMFMediaKeys_CreateSession(This,mime_type,init_data,init_data_len,custom_data,custom_data_len,notify,session) (This)->lpVtbl->CreateSession(This,mime_type,init_data,init_data_len,custom_data,custom_data_len,notify,session)
3533#define IMFMediaKeys_get_KeySystem(This,key_system) (This)->lpVtbl->get_KeySystem(This,key_system)
3534#define IMFMediaKeys_Shutdown(This) (This)->lpVtbl->Shutdown(This)
3535#define IMFMediaKeys_GetSuspendNotify(This,notify) (This)->lpVtbl->GetSuspendNotify(This,notify)
3536#else
3537/*** IUnknown methods ***/
3538static inline HRESULT IMFMediaKeys_QueryInterface(IMFMediaKeys* This,REFIID riid,void **ppvObject) {
3539 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3540}
3541static inline ULONG IMFMediaKeys_AddRef(IMFMediaKeys* This) {
3542 return This->lpVtbl->AddRef(This);
3543}
3544static inline ULONG IMFMediaKeys_Release(IMFMediaKeys* This) {
3545 return This->lpVtbl->Release(This);
3546}
3547/*** IMFMediaKeys methods ***/
3548static inline HRESULT IMFMediaKeys_CreateSession(IMFMediaKeys* This,BSTR mime_type,const BYTE *init_data,DWORD init_data_len,const BYTE *custom_data,DWORD custom_data_len,IMFMediaKeySessionNotify *notify,IMFMediaKeySession **session) {
3549 return This->lpVtbl->CreateSession(This,mime_type,init_data,init_data_len,custom_data,custom_data_len,notify,session);
3550}
3551static inline HRESULT IMFMediaKeys_get_KeySystem(IMFMediaKeys* This,BSTR *key_system) {
3552 return This->lpVtbl->get_KeySystem(This,key_system);
3553}
3554static inline HRESULT IMFMediaKeys_Shutdown(IMFMediaKeys* This) {
3555 return This->lpVtbl->Shutdown(This);
3556}
3557static inline HRESULT IMFMediaKeys_GetSuspendNotify(IMFMediaKeys* This,IMFCdmSuspendNotify **notify) {
3558 return This->lpVtbl->GetSuspendNotify(This,notify);
3559}
3560#endif
3561#endif
3562
3563#endif
3564
3565
3566#endif /* __IMFMediaKeys_INTERFACE_DEFINED__ */
3567
3568/*****************************************************************************
3569 * IMFMediaEngineClassFactoryEx interface
3570 */
3571#ifndef __IMFMediaEngineClassFactoryEx_INTERFACE_DEFINED__
3572#define __IMFMediaEngineClassFactoryEx_INTERFACE_DEFINED__
3573
3574DEFINE_GUID(IID_IMFMediaEngineClassFactoryEx, 0xc56156c6, 0xea5b, 0x48a5, 0x9d,0xf8, 0xfb,0xe0,0x35,0xd0,0x92,0x9e);
3575#if defined(__cplusplus) && !defined(CINTERFACE)
3576MIDL_INTERFACE("c56156c6-ea5b-48a5-9df8-fbe035d0929e")
3577IMFMediaEngineClassFactoryEx : public IMFMediaEngineClassFactory
3578{
3579 virtual HRESULT STDMETHODCALLTYPE CreateMediaSourceExtension(
3580 DWORD flags,
3581 IMFAttributes *attr,
3582 IMFMediaSourceExtension **mse) = 0;
3583
3584 virtual HRESULT STDMETHODCALLTYPE CreateMediaKeys(
3585 BSTR key_system,
3586 BSTR cdm_store_path,
3587 IMFMediaKeys **keys) = 0;
3588
3589 virtual HRESULT STDMETHODCALLTYPE IsTypeSupported(
3590 BSTR type,
3591 BSTR key_system,
3592 WINBOOL *is_supported) = 0;
3593
3594};
3595#ifdef __CRT_UUID_DECL
3596__CRT_UUID_DECL(IMFMediaEngineClassFactoryEx, 0xc56156c6, 0xea5b, 0x48a5, 0x9d,0xf8, 0xfb,0xe0,0x35,0xd0,0x92,0x9e)
3597#endif
3598#else
3599typedef struct IMFMediaEngineClassFactoryExVtbl {
3600 BEGIN_INTERFACE
3601
3602 /*** IUnknown methods ***/
3603 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3604 IMFMediaEngineClassFactoryEx *This,
3605 REFIID riid,
3606 void **ppvObject);
3607
3608 ULONG (STDMETHODCALLTYPE *AddRef)(
3609 IMFMediaEngineClassFactoryEx *This);
3610
3611 ULONG (STDMETHODCALLTYPE *Release)(
3612 IMFMediaEngineClassFactoryEx *This);
3613
3614 /*** IMFMediaEngineClassFactory methods ***/
3615 HRESULT (STDMETHODCALLTYPE *CreateInstance)(
3616 IMFMediaEngineClassFactoryEx *This,
3617 DWORD flags,
3618 IMFAttributes *attributes,
3619 IMFMediaEngine **engine);
3620
3621 HRESULT (STDMETHODCALLTYPE *CreateTimeRange)(
3622 IMFMediaEngineClassFactoryEx *This,
3623 IMFMediaTimeRange **range);
3624
3625 HRESULT (STDMETHODCALLTYPE *CreateError)(
3626 IMFMediaEngineClassFactoryEx *This,
3627 IMFMediaError **error);
3628
3629 /*** IMFMediaEngineClassFactoryEx methods ***/
3630 HRESULT (STDMETHODCALLTYPE *CreateMediaSourceExtension)(
3631 IMFMediaEngineClassFactoryEx *This,
3632 DWORD flags,
3633 IMFAttributes *attr,
3634 IMFMediaSourceExtension **mse);
3635
3636 HRESULT (STDMETHODCALLTYPE *CreateMediaKeys)(
3637 IMFMediaEngineClassFactoryEx *This,
3638 BSTR key_system,
3639 BSTR cdm_store_path,
3640 IMFMediaKeys **keys);
3641
3642 HRESULT (STDMETHODCALLTYPE *IsTypeSupported)(
3643 IMFMediaEngineClassFactoryEx *This,
3644 BSTR type,
3645 BSTR key_system,
3646 WINBOOL *is_supported);
3647
3648 END_INTERFACE
3649} IMFMediaEngineClassFactoryExVtbl;
3650
3651interface IMFMediaEngineClassFactoryEx {
3652 CONST_VTBL IMFMediaEngineClassFactoryExVtbl* lpVtbl;
3653};
3654
3655#ifdef COBJMACROS
3656#ifndef WIDL_C_INLINE_WRAPPERS
3657/*** IUnknown methods ***/
3658#define IMFMediaEngineClassFactoryEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3659#define IMFMediaEngineClassFactoryEx_AddRef(This) (This)->lpVtbl->AddRef(This)
3660#define IMFMediaEngineClassFactoryEx_Release(This) (This)->lpVtbl->Release(This)
3661/*** IMFMediaEngineClassFactory methods ***/
3662#define IMFMediaEngineClassFactoryEx_CreateInstance(This,flags,attributes,engine) (This)->lpVtbl->CreateInstance(This,flags,attributes,engine)
3663#define IMFMediaEngineClassFactoryEx_CreateTimeRange(This,range) (This)->lpVtbl->CreateTimeRange(This,range)
3664#define IMFMediaEngineClassFactoryEx_CreateError(This,error) (This)->lpVtbl->CreateError(This,error)
3665/*** IMFMediaEngineClassFactoryEx methods ***/
3666#define IMFMediaEngineClassFactoryEx_CreateMediaSourceExtension(This,flags,attr,mse) (This)->lpVtbl->CreateMediaSourceExtension(This,flags,attr,mse)
3667#define IMFMediaEngineClassFactoryEx_CreateMediaKeys(This,key_system,cdm_store_path,keys) (This)->lpVtbl->CreateMediaKeys(This,key_system,cdm_store_path,keys)
3668#define IMFMediaEngineClassFactoryEx_IsTypeSupported(This,type,key_system,is_supported) (This)->lpVtbl->IsTypeSupported(This,type,key_system,is_supported)
3669#else
3670/*** IUnknown methods ***/
3671static inline HRESULT IMFMediaEngineClassFactoryEx_QueryInterface(IMFMediaEngineClassFactoryEx* This,REFIID riid,void **ppvObject) {
3672 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3673}
3674static inline ULONG IMFMediaEngineClassFactoryEx_AddRef(IMFMediaEngineClassFactoryEx* This) {
3675 return This->lpVtbl->AddRef(This);
3676}
3677static inline ULONG IMFMediaEngineClassFactoryEx_Release(IMFMediaEngineClassFactoryEx* This) {
3678 return This->lpVtbl->Release(This);
3679}
3680/*** IMFMediaEngineClassFactory methods ***/
3681static inline HRESULT IMFMediaEngineClassFactoryEx_CreateInstance(IMFMediaEngineClassFactoryEx* This,DWORD flags,IMFAttributes *attributes,IMFMediaEngine **engine) {
3682 return This->lpVtbl->CreateInstance(This,flags,attributes,engine);
3683}
3684static inline HRESULT IMFMediaEngineClassFactoryEx_CreateTimeRange(IMFMediaEngineClassFactoryEx* This,IMFMediaTimeRange **range) {
3685 return This->lpVtbl->CreateTimeRange(This,range);
3686}
3687static inline HRESULT IMFMediaEngineClassFactoryEx_CreateError(IMFMediaEngineClassFactoryEx* This,IMFMediaError **error) {
3688 return This->lpVtbl->CreateError(This,error);
3689}
3690/*** IMFMediaEngineClassFactoryEx methods ***/
3691static inline HRESULT IMFMediaEngineClassFactoryEx_CreateMediaSourceExtension(IMFMediaEngineClassFactoryEx* This,DWORD flags,IMFAttributes *attr,IMFMediaSourceExtension **mse) {
3692 return This->lpVtbl->CreateMediaSourceExtension(This,flags,attr,mse);
3693}
3694static inline HRESULT IMFMediaEngineClassFactoryEx_CreateMediaKeys(IMFMediaEngineClassFactoryEx* This,BSTR key_system,BSTR cdm_store_path,IMFMediaKeys **keys) {
3695 return This->lpVtbl->CreateMediaKeys(This,key_system,cdm_store_path,keys);
3696}
3697static inline HRESULT IMFMediaEngineClassFactoryEx_IsTypeSupported(IMFMediaEngineClassFactoryEx* This,BSTR type,BSTR key_system,WINBOOL *is_supported) {
3698 return This->lpVtbl->IsTypeSupported(This,type,key_system,is_supported);
3699}
3700#endif
3701#endif
3702
3703#endif
3704
3705
3706#endif /* __IMFMediaEngineClassFactoryEx_INTERFACE_DEFINED__ */
3707
3708/*****************************************************************************
3709 * IMFMediaEngineClassFactory2 interface
3710 */
3711#ifndef __IMFMediaEngineClassFactory2_INTERFACE_DEFINED__
3712#define __IMFMediaEngineClassFactory2_INTERFACE_DEFINED__
3713
3714DEFINE_GUID(IID_IMFMediaEngineClassFactory2, 0x09083cef, 0x867f, 0x4bf6, 0x87,0x76, 0xde,0xe3,0xa7,0xb4,0x2f,0xca);
3715#if defined(__cplusplus) && !defined(CINTERFACE)
3716MIDL_INTERFACE("09083cef-867f-4bf6-8776-dee3a7b42fca")
3717IMFMediaEngineClassFactory2 : public IUnknown
3718{
3719 virtual HRESULT STDMETHODCALLTYPE CreateMediaKeys2(
3720 BSTR key_system,
3721 BSTR default_cdm_store_path,
3722 BSTR inprivate_cdm_store_path,
3723 IMFMediaKeys **keys) = 0;
3724
3725};
3726#ifdef __CRT_UUID_DECL
3727__CRT_UUID_DECL(IMFMediaEngineClassFactory2, 0x09083cef, 0x867f, 0x4bf6, 0x87,0x76, 0xde,0xe3,0xa7,0xb4,0x2f,0xca)
3728#endif
3729#else
3730typedef struct IMFMediaEngineClassFactory2Vtbl {
3731 BEGIN_INTERFACE
3732
3733 /*** IUnknown methods ***/
3734 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3735 IMFMediaEngineClassFactory2 *This,
3736 REFIID riid,
3737 void **ppvObject);
3738
3739 ULONG (STDMETHODCALLTYPE *AddRef)(
3740 IMFMediaEngineClassFactory2 *This);
3741
3742 ULONG (STDMETHODCALLTYPE *Release)(
3743 IMFMediaEngineClassFactory2 *This);
3744
3745 /*** IMFMediaEngineClassFactory2 methods ***/
3746 HRESULT (STDMETHODCALLTYPE *CreateMediaKeys2)(
3747 IMFMediaEngineClassFactory2 *This,
3748 BSTR key_system,
3749 BSTR default_cdm_store_path,
3750 BSTR inprivate_cdm_store_path,
3751 IMFMediaKeys **keys);
3752
3753 END_INTERFACE
3754} IMFMediaEngineClassFactory2Vtbl;
3755
3756interface IMFMediaEngineClassFactory2 {
3757 CONST_VTBL IMFMediaEngineClassFactory2Vtbl* lpVtbl;
3758};
3759
3760#ifdef COBJMACROS
3761#ifndef WIDL_C_INLINE_WRAPPERS
3762/*** IUnknown methods ***/
3763#define IMFMediaEngineClassFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3764#define IMFMediaEngineClassFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
3765#define IMFMediaEngineClassFactory2_Release(This) (This)->lpVtbl->Release(This)
3766/*** IMFMediaEngineClassFactory2 methods ***/
3767#define IMFMediaEngineClassFactory2_CreateMediaKeys2(This,key_system,default_cdm_store_path,inprivate_cdm_store_path,keys) (This)->lpVtbl->CreateMediaKeys2(This,key_system,default_cdm_store_path,inprivate_cdm_store_path,keys)
3768#else
3769/*** IUnknown methods ***/
3770static inline HRESULT IMFMediaEngineClassFactory2_QueryInterface(IMFMediaEngineClassFactory2* This,REFIID riid,void **ppvObject) {
3771 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3772}
3773static inline ULONG IMFMediaEngineClassFactory2_AddRef(IMFMediaEngineClassFactory2* This) {
3774 return This->lpVtbl->AddRef(This);
3775}
3776static inline ULONG IMFMediaEngineClassFactory2_Release(IMFMediaEngineClassFactory2* This) {
3777 return This->lpVtbl->Release(This);
3778}
3779/*** IMFMediaEngineClassFactory2 methods ***/
3780static inline HRESULT IMFMediaEngineClassFactory2_CreateMediaKeys2(IMFMediaEngineClassFactory2* This,BSTR key_system,BSTR default_cdm_store_path,BSTR inprivate_cdm_store_path,IMFMediaKeys **keys) {
3781 return This->lpVtbl->CreateMediaKeys2(This,key_system,default_cdm_store_path,inprivate_cdm_store_path,keys);
3782}
3783#endif
3784#endif
3785
3786#endif
3787
3788
3789#endif /* __IMFMediaEngineClassFactory2_INTERFACE_DEFINED__ */
3790
3791/* Begin additional prototypes for all interfaces */
3792
3793
3794/* End additional prototypes */
3795
3796#ifdef __cplusplus
3797}
3798#endif
3799
3800#endif /* __mfmediaengine_h__ */