• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*** Autogenerated by WIDL 4.12.1 from include/mfobjects.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 __mfobjects_h__
17 #define __mfobjects_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IMFAttributes_FWD_DEFINED__
22 #define __IMFAttributes_FWD_DEFINED__
23 typedef interface IMFAttributes IMFAttributes;
24 #ifdef __cplusplus
25 interface IMFAttributes;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IMFMediaBuffer_FWD_DEFINED__
30 #define __IMFMediaBuffer_FWD_DEFINED__
31 typedef interface IMFMediaBuffer IMFMediaBuffer;
32 #ifdef __cplusplus
33 interface IMFMediaBuffer;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IMFSample_FWD_DEFINED__
38 #define __IMFSample_FWD_DEFINED__
39 typedef interface IMFSample IMFSample;
40 #ifdef __cplusplus
41 interface IMFSample;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IMF2DBuffer_FWD_DEFINED__
46 #define __IMF2DBuffer_FWD_DEFINED__
47 typedef interface IMF2DBuffer IMF2DBuffer;
48 #ifdef __cplusplus
49 interface IMF2DBuffer;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IMF2DBuffer2_FWD_DEFINED__
54 #define __IMF2DBuffer2_FWD_DEFINED__
55 typedef interface IMF2DBuffer2 IMF2DBuffer2;
56 #ifdef __cplusplus
57 interface IMF2DBuffer2;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IMFDXGIBuffer_FWD_DEFINED__
62 #define __IMFDXGIBuffer_FWD_DEFINED__
63 typedef interface IMFDXGIBuffer IMFDXGIBuffer;
64 #ifdef __cplusplus
65 interface IMFDXGIBuffer;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IMFMediaType_FWD_DEFINED__
70 #define __IMFMediaType_FWD_DEFINED__
71 typedef interface IMFMediaType IMFMediaType;
72 #ifdef __cplusplus
73 interface IMFMediaType;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IMFAudioMediaType_FWD_DEFINED__
78 #define __IMFAudioMediaType_FWD_DEFINED__
79 typedef interface IMFAudioMediaType IMFAudioMediaType;
80 #ifdef __cplusplus
81 interface IMFAudioMediaType;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __IMFVideoMediaType_FWD_DEFINED__
86 #define __IMFVideoMediaType_FWD_DEFINED__
87 typedef interface IMFVideoMediaType IMFVideoMediaType;
88 #ifdef __cplusplus
89 interface IMFVideoMediaType;
90 #endif /* __cplusplus */
91 #endif
92 
93 #ifndef __IMFAsyncResult_FWD_DEFINED__
94 #define __IMFAsyncResult_FWD_DEFINED__
95 typedef interface IMFAsyncResult IMFAsyncResult;
96 #ifdef __cplusplus
97 interface IMFAsyncResult;
98 #endif /* __cplusplus */
99 #endif
100 
101 #ifndef __IMFAsyncCallback_FWD_DEFINED__
102 #define __IMFAsyncCallback_FWD_DEFINED__
103 typedef interface IMFAsyncCallback IMFAsyncCallback;
104 #ifdef __cplusplus
105 interface IMFAsyncCallback;
106 #endif /* __cplusplus */
107 #endif
108 
109 #ifndef __IMFAsyncCallbackLogging_FWD_DEFINED__
110 #define __IMFAsyncCallbackLogging_FWD_DEFINED__
111 typedef interface IMFAsyncCallbackLogging IMFAsyncCallbackLogging;
112 #ifdef __cplusplus
113 interface IMFAsyncCallbackLogging;
114 #endif /* __cplusplus */
115 #endif
116 
117 #ifndef __IMFMediaEvent_FWD_DEFINED__
118 #define __IMFMediaEvent_FWD_DEFINED__
119 typedef interface IMFMediaEvent IMFMediaEvent;
120 #ifdef __cplusplus
121 interface IMFMediaEvent;
122 #endif /* __cplusplus */
123 #endif
124 
125 #ifndef __IMFMediaEventGenerator_FWD_DEFINED__
126 #define __IMFMediaEventGenerator_FWD_DEFINED__
127 typedef interface IMFMediaEventGenerator IMFMediaEventGenerator;
128 #ifdef __cplusplus
129 interface IMFMediaEventGenerator;
130 #endif /* __cplusplus */
131 #endif
132 
133 #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
134 #define __IMFRemoteAsyncCallback_FWD_DEFINED__
135 typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
136 #ifdef __cplusplus
137 interface IMFRemoteAsyncCallback;
138 #endif /* __cplusplus */
139 #endif
140 
141 #ifndef __IMFByteStream_FWD_DEFINED__
142 #define __IMFByteStream_FWD_DEFINED__
143 typedef interface IMFByteStream IMFByteStream;
144 #ifdef __cplusplus
145 interface IMFByteStream;
146 #endif /* __cplusplus */
147 #endif
148 
149 #ifndef __IMFByteStreamProxyClassFactory_FWD_DEFINED__
150 #define __IMFByteStreamProxyClassFactory_FWD_DEFINED__
151 typedef interface IMFByteStreamProxyClassFactory IMFByteStreamProxyClassFactory;
152 #ifdef __cplusplus
153 interface IMFByteStreamProxyClassFactory;
154 #endif /* __cplusplus */
155 #endif
156 
157 #ifndef __IMFSampleOutputStream_FWD_DEFINED__
158 #define __IMFSampleOutputStream_FWD_DEFINED__
159 typedef interface IMFSampleOutputStream IMFSampleOutputStream;
160 #ifdef __cplusplus
161 interface IMFSampleOutputStream;
162 #endif /* __cplusplus */
163 #endif
164 
165 #ifndef __IMFCollection_FWD_DEFINED__
166 #define __IMFCollection_FWD_DEFINED__
167 typedef interface IMFCollection IMFCollection;
168 #ifdef __cplusplus
169 interface IMFCollection;
170 #endif /* __cplusplus */
171 #endif
172 
173 #ifndef __IMFMediaEventQueue_FWD_DEFINED__
174 #define __IMFMediaEventQueue_FWD_DEFINED__
175 typedef interface IMFMediaEventQueue IMFMediaEventQueue;
176 #ifdef __cplusplus
177 interface IMFMediaEventQueue;
178 #endif /* __cplusplus */
179 #endif
180 
181 #ifndef __IMFActivate_FWD_DEFINED__
182 #define __IMFActivate_FWD_DEFINED__
183 typedef interface IMFActivate IMFActivate;
184 #ifdef __cplusplus
185 interface IMFActivate;
186 #endif /* __cplusplus */
187 #endif
188 
189 #ifndef __IMFPluginControl_FWD_DEFINED__
190 #define __IMFPluginControl_FWD_DEFINED__
191 typedef interface IMFPluginControl IMFPluginControl;
192 #ifdef __cplusplus
193 interface IMFPluginControl;
194 #endif /* __cplusplus */
195 #endif
196 
197 #ifndef __IMFPluginControl2_FWD_DEFINED__
198 #define __IMFPluginControl2_FWD_DEFINED__
199 typedef interface IMFPluginControl2 IMFPluginControl2;
200 #ifdef __cplusplus
201 interface IMFPluginControl2;
202 #endif /* __cplusplus */
203 #endif
204 
205 #ifndef __IMFDXGIDeviceManager_FWD_DEFINED__
206 #define __IMFDXGIDeviceManager_FWD_DEFINED__
207 typedef interface IMFDXGIDeviceManager IMFDXGIDeviceManager;
208 #ifdef __cplusplus
209 interface IMFDXGIDeviceManager;
210 #endif /* __cplusplus */
211 #endif
212 
213 /* Headers for imported files */
214 
215 #include <unknwn.h>
216 #include <propsys.h>
217 #include <mediaobj.h>
218 
219 #ifdef __cplusplus
220 extern "C" {
221 #endif
222 
223 /**
224  * This file is part of the mingw-w64 runtime package.
225  * No warranty is given; refer to the file DISCLAIMER within this package.
226  */
227 
228 #include <winapifamily.h>
229 
230 
231 typedef ULONGLONG QWORD;
232 
233 #include <mmreg.h>
234 #if 0
235 typedef struct tWAVEFORMATEX {
236     WORD wFormatTag;
237     WORD nChannels;
238     DWORD nSamplesPerSec;
239     DWORD nAvgBytesPerSec;
240     WORD nBlockAlign;
241     WORD wBitsPerSample;
242     WORD cbSize;
243     BYTE pExtraBytes[1];
244 } WAVEFORMATEX;
245 typedef struct tWAVEFORMATEX *PWAVEFORMATEX;
246 typedef struct tWAVEFORMATEX *NPWAVEFORMATEX;
247 typedef struct tWAVEFORMATEX *LPWAVEFORMATEX;
248 typedef struct __WIDL_mfobjects_generated_name_00000013 {
249     WORD wFormatTag;
250     WORD nChannels;
251     DWORD nSamplesPerSec;
252     DWORD nAvgBytesPerSec;
253     WORD nBlockAlign;
254     WORD wBitsPerSample;
255     WORD cbSize;
256     WORD wValidBitsPerSample;
257     DWORD dwChannelMask;
258     GUID SubFormat;
259 } WAVEFORMATEXTENSIBLE;
260 typedef struct __WIDL_mfobjects_generated_name_00000013 *PWAVEFORMATEXTENSIBLE;
261 #endif
262 
263 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
264 typedef enum _MF_ATTRIBUTE_TYPE {
265     MF_ATTRIBUTE_UINT32 = VT_UI4,
266     MF_ATTRIBUTE_UINT64 = VT_UI8,
267     MF_ATTRIBUTE_DOUBLE = VT_R8,
268     MF_ATTRIBUTE_GUID = VT_CLSID,
269     MF_ATTRIBUTE_STRING = VT_LPWSTR,
270     MF_ATTRIBUTE_BLOB = VT_VECTOR | VT_UI1,
271     MF_ATTRIBUTE_IUNKNOWN = VT_UNKNOWN
272 } MF_ATTRIBUTE_TYPE;
273 
274 typedef enum _MF_ATTRIBUTES_MATCH_TYPE {
275     MF_ATTRIBUTES_MATCH_OUR_ITEMS = 0,
276     MF_ATTRIBUTES_MATCH_THEIR_ITEMS = 1,
277     MF_ATTRIBUTES_MATCH_ALL_ITEMS = 2,
278     MF_ATTRIBUTES_MATCH_INTERSECTION = 3,
279     MF_ATTRIBUTES_MATCH_SMALLER = 4
280 } MF_ATTRIBUTES_MATCH_TYPE;
281 
282 /*****************************************************************************
283  * IMFAttributes interface
284  */
285 #ifndef __IMFAttributes_INTERFACE_DEFINED__
286 #define __IMFAttributes_INTERFACE_DEFINED__
287 
288 DEFINE_GUID(IID_IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3);
289 #if defined(__cplusplus) && !defined(CINTERFACE)
290 MIDL_INTERFACE("2cd2d921-c447-44a7-a13c-4adabfc247e3")
291 IMFAttributes : public IUnknown
292 {
293     virtual HRESULT STDMETHODCALLTYPE GetItem(
294         REFGUID guidKey,
295         PROPVARIANT *pValue) = 0;
296 
297     virtual HRESULT STDMETHODCALLTYPE GetItemType(
298         REFGUID guidKey,
299         MF_ATTRIBUTE_TYPE *pType) = 0;
300 
301     virtual HRESULT STDMETHODCALLTYPE CompareItem(
302         REFGUID guidKey,
303         REFPROPVARIANT Value,
304         WINBOOL *pbResult) = 0;
305 
306     virtual HRESULT STDMETHODCALLTYPE Compare(
307         IMFAttributes *pTheirs,
308         MF_ATTRIBUTES_MATCH_TYPE MatchType,
309         WINBOOL *pbResult) = 0;
310 
311     virtual HRESULT STDMETHODCALLTYPE GetUINT32(
312         REFGUID guidKey,
313         UINT32 *punValue) = 0;
314 
315     virtual HRESULT STDMETHODCALLTYPE GetUINT64(
316         REFGUID guidKey,
317         UINT64 *punValue) = 0;
318 
319     virtual HRESULT STDMETHODCALLTYPE GetDouble(
320         REFGUID guidKey,
321         double *pfValue) = 0;
322 
323     virtual HRESULT STDMETHODCALLTYPE GetGUID(
324         REFGUID guidKey,
325         GUID *pguidValue) = 0;
326 
327     virtual HRESULT STDMETHODCALLTYPE GetStringLength(
328         REFGUID guidKey,
329         UINT32 *pcchLength) = 0;
330 
331     virtual HRESULT STDMETHODCALLTYPE GetString(
332         REFGUID guidKey,
333         LPWSTR pwszValue,
334         UINT32 cchBufSize,
335         UINT32 *pcchLength) = 0;
336 
337     virtual HRESULT STDMETHODCALLTYPE GetAllocatedString(
338         REFGUID guidKey,
339         LPWSTR *ppwszValue,
340         UINT32 *pcchLength) = 0;
341 
342     virtual HRESULT STDMETHODCALLTYPE GetBlobSize(
343         REFGUID guidKey,
344         UINT32 *pcbBlobSize) = 0;
345 
346     virtual HRESULT STDMETHODCALLTYPE GetBlob(
347         REFGUID guidKey,
348         UINT8 *pBuf,
349         UINT32 cbBufSize,
350         UINT32 *pcbBlobSize) = 0;
351 
352     virtual HRESULT STDMETHODCALLTYPE GetAllocatedBlob(
353         REFGUID guidKey,
354         UINT8 **ppBuf,
355         UINT32 *pcbSize) = 0;
356 
357     virtual HRESULT STDMETHODCALLTYPE GetUnknown(
358         REFGUID guidKey,
359         REFIID riid,
360         LPVOID *ppv) = 0;
361 
362     virtual HRESULT STDMETHODCALLTYPE SetItem(
363         REFGUID guidKey,
364         REFPROPVARIANT Value) = 0;
365 
366     virtual HRESULT STDMETHODCALLTYPE DeleteItem(
367         REFGUID guidKey) = 0;
368 
369     virtual HRESULT STDMETHODCALLTYPE DeleteAllItems(
370         ) = 0;
371 
372     virtual HRESULT STDMETHODCALLTYPE SetUINT32(
373         REFGUID guidKey,
374         UINT32 unValue) = 0;
375 
376     virtual HRESULT STDMETHODCALLTYPE SetUINT64(
377         REFGUID guidKey,
378         UINT64 unValue) = 0;
379 
380     virtual HRESULT STDMETHODCALLTYPE SetDouble(
381         REFGUID guidKey,
382         double fValue) = 0;
383 
384     virtual HRESULT STDMETHODCALLTYPE SetGUID(
385         REFGUID guidKey,
386         REFGUID guidValue) = 0;
387 
388     virtual HRESULT STDMETHODCALLTYPE SetString(
389         REFGUID guidKey,
390         LPCWSTR wszValue) = 0;
391 
392     virtual HRESULT STDMETHODCALLTYPE SetBlob(
393         REFGUID guidKey,
394         const UINT8 *pBuf,
395         UINT32 cbBufSize) = 0;
396 
397     virtual HRESULT STDMETHODCALLTYPE SetUnknown(
398         REFGUID guidKey,
399         IUnknown *pUnknown) = 0;
400 
401     virtual HRESULT STDMETHODCALLTYPE LockStore(
402         ) = 0;
403 
404     virtual HRESULT STDMETHODCALLTYPE UnlockStore(
405         ) = 0;
406 
407     virtual HRESULT STDMETHODCALLTYPE GetCount(
408         UINT32 *pcItems) = 0;
409 
410     virtual HRESULT STDMETHODCALLTYPE GetItemByIndex(
411         UINT32 unIndex,
412         GUID *pguidKey,
413         PROPVARIANT *pValue) = 0;
414 
415     virtual HRESULT STDMETHODCALLTYPE CopyAllItems(
416         IMFAttributes *pDest) = 0;
417 
418 };
419 #ifdef __CRT_UUID_DECL
420 __CRT_UUID_DECL(IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3)
421 #endif
422 #else
423 typedef struct IMFAttributesVtbl {
424     BEGIN_INTERFACE
425 
426     /*** IUnknown methods ***/
427     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
428         IMFAttributes *This,
429         REFIID riid,
430         void **ppvObject);
431 
432     ULONG (STDMETHODCALLTYPE *AddRef)(
433         IMFAttributes *This);
434 
435     ULONG (STDMETHODCALLTYPE *Release)(
436         IMFAttributes *This);
437 
438     /*** IMFAttributes methods ***/
439     HRESULT (STDMETHODCALLTYPE *GetItem)(
440         IMFAttributes *This,
441         REFGUID guidKey,
442         PROPVARIANT *pValue);
443 
444     HRESULT (STDMETHODCALLTYPE *GetItemType)(
445         IMFAttributes *This,
446         REFGUID guidKey,
447         MF_ATTRIBUTE_TYPE *pType);
448 
449     HRESULT (STDMETHODCALLTYPE *CompareItem)(
450         IMFAttributes *This,
451         REFGUID guidKey,
452         REFPROPVARIANT Value,
453         WINBOOL *pbResult);
454 
455     HRESULT (STDMETHODCALLTYPE *Compare)(
456         IMFAttributes *This,
457         IMFAttributes *pTheirs,
458         MF_ATTRIBUTES_MATCH_TYPE MatchType,
459         WINBOOL *pbResult);
460 
461     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
462         IMFAttributes *This,
463         REFGUID guidKey,
464         UINT32 *punValue);
465 
466     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
467         IMFAttributes *This,
468         REFGUID guidKey,
469         UINT64 *punValue);
470 
471     HRESULT (STDMETHODCALLTYPE *GetDouble)(
472         IMFAttributes *This,
473         REFGUID guidKey,
474         double *pfValue);
475 
476     HRESULT (STDMETHODCALLTYPE *GetGUID)(
477         IMFAttributes *This,
478         REFGUID guidKey,
479         GUID *pguidValue);
480 
481     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
482         IMFAttributes *This,
483         REFGUID guidKey,
484         UINT32 *pcchLength);
485 
486     HRESULT (STDMETHODCALLTYPE *GetString)(
487         IMFAttributes *This,
488         REFGUID guidKey,
489         LPWSTR pwszValue,
490         UINT32 cchBufSize,
491         UINT32 *pcchLength);
492 
493     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
494         IMFAttributes *This,
495         REFGUID guidKey,
496         LPWSTR *ppwszValue,
497         UINT32 *pcchLength);
498 
499     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
500         IMFAttributes *This,
501         REFGUID guidKey,
502         UINT32 *pcbBlobSize);
503 
504     HRESULT (STDMETHODCALLTYPE *GetBlob)(
505         IMFAttributes *This,
506         REFGUID guidKey,
507         UINT8 *pBuf,
508         UINT32 cbBufSize,
509         UINT32 *pcbBlobSize);
510 
511     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
512         IMFAttributes *This,
513         REFGUID guidKey,
514         UINT8 **ppBuf,
515         UINT32 *pcbSize);
516 
517     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
518         IMFAttributes *This,
519         REFGUID guidKey,
520         REFIID riid,
521         LPVOID *ppv);
522 
523     HRESULT (STDMETHODCALLTYPE *SetItem)(
524         IMFAttributes *This,
525         REFGUID guidKey,
526         REFPROPVARIANT Value);
527 
528     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
529         IMFAttributes *This,
530         REFGUID guidKey);
531 
532     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
533         IMFAttributes *This);
534 
535     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
536         IMFAttributes *This,
537         REFGUID guidKey,
538         UINT32 unValue);
539 
540     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
541         IMFAttributes *This,
542         REFGUID guidKey,
543         UINT64 unValue);
544 
545     HRESULT (STDMETHODCALLTYPE *SetDouble)(
546         IMFAttributes *This,
547         REFGUID guidKey,
548         double fValue);
549 
550     HRESULT (STDMETHODCALLTYPE *SetGUID)(
551         IMFAttributes *This,
552         REFGUID guidKey,
553         REFGUID guidValue);
554 
555     HRESULT (STDMETHODCALLTYPE *SetString)(
556         IMFAttributes *This,
557         REFGUID guidKey,
558         LPCWSTR wszValue);
559 
560     HRESULT (STDMETHODCALLTYPE *SetBlob)(
561         IMFAttributes *This,
562         REFGUID guidKey,
563         const UINT8 *pBuf,
564         UINT32 cbBufSize);
565 
566     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
567         IMFAttributes *This,
568         REFGUID guidKey,
569         IUnknown *pUnknown);
570 
571     HRESULT (STDMETHODCALLTYPE *LockStore)(
572         IMFAttributes *This);
573 
574     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
575         IMFAttributes *This);
576 
577     HRESULT (STDMETHODCALLTYPE *GetCount)(
578         IMFAttributes *This,
579         UINT32 *pcItems);
580 
581     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
582         IMFAttributes *This,
583         UINT32 unIndex,
584         GUID *pguidKey,
585         PROPVARIANT *pValue);
586 
587     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
588         IMFAttributes *This,
589         IMFAttributes *pDest);
590 
591     END_INTERFACE
592 } IMFAttributesVtbl;
593 
594 interface IMFAttributes {
595     CONST_VTBL IMFAttributesVtbl* lpVtbl;
596 };
597 
598 #ifdef COBJMACROS
599 #ifndef WIDL_C_INLINE_WRAPPERS
600 /*** IUnknown methods ***/
601 #define IMFAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
602 #define IMFAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
603 #define IMFAttributes_Release(This) (This)->lpVtbl->Release(This)
604 /*** IMFAttributes methods ***/
605 #define IMFAttributes_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
606 #define IMFAttributes_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
607 #define IMFAttributes_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
608 #define IMFAttributes_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
609 #define IMFAttributes_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
610 #define IMFAttributes_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
611 #define IMFAttributes_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
612 #define IMFAttributes_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
613 #define IMFAttributes_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
614 #define IMFAttributes_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
615 #define IMFAttributes_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
616 #define IMFAttributes_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
617 #define IMFAttributes_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
618 #define IMFAttributes_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
619 #define IMFAttributes_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
620 #define IMFAttributes_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
621 #define IMFAttributes_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
622 #define IMFAttributes_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
623 #define IMFAttributes_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
624 #define IMFAttributes_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
625 #define IMFAttributes_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
626 #define IMFAttributes_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
627 #define IMFAttributes_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
628 #define IMFAttributes_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
629 #define IMFAttributes_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
630 #define IMFAttributes_LockStore(This) (This)->lpVtbl->LockStore(This)
631 #define IMFAttributes_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
632 #define IMFAttributes_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
633 #define IMFAttributes_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
634 #define IMFAttributes_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
635 #else
636 /*** IUnknown methods ***/
637 static FORCEINLINE HRESULT IMFAttributes_QueryInterface(IMFAttributes* This,REFIID riid,void **ppvObject) {
638     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
639 }
640 static FORCEINLINE ULONG IMFAttributes_AddRef(IMFAttributes* This) {
641     return This->lpVtbl->AddRef(This);
642 }
643 static FORCEINLINE ULONG IMFAttributes_Release(IMFAttributes* This) {
644     return This->lpVtbl->Release(This);
645 }
646 /*** IMFAttributes methods ***/
647 static FORCEINLINE HRESULT IMFAttributes_GetItem(IMFAttributes* This,REFGUID guidKey,PROPVARIANT *pValue) {
648     return This->lpVtbl->GetItem(This,guidKey,pValue);
649 }
650 static FORCEINLINE HRESULT IMFAttributes_GetItemType(IMFAttributes* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
651     return This->lpVtbl->GetItemType(This,guidKey,pType);
652 }
653 static FORCEINLINE HRESULT IMFAttributes_CompareItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
654     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
655 }
656 static FORCEINLINE HRESULT IMFAttributes_Compare(IMFAttributes* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
657     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
658 }
659 static FORCEINLINE HRESULT IMFAttributes_GetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 *punValue) {
660     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
661 }
662 static FORCEINLINE HRESULT IMFAttributes_GetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 *punValue) {
663     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
664 }
665 static FORCEINLINE HRESULT IMFAttributes_GetDouble(IMFAttributes* This,REFGUID guidKey,double *pfValue) {
666     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
667 }
668 static FORCEINLINE HRESULT IMFAttributes_GetGUID(IMFAttributes* This,REFGUID guidKey,GUID *pguidValue) {
669     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
670 }
671 static FORCEINLINE HRESULT IMFAttributes_GetStringLength(IMFAttributes* This,REFGUID guidKey,UINT32 *pcchLength) {
672     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
673 }
674 static FORCEINLINE HRESULT IMFAttributes_GetString(IMFAttributes* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
675     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
676 }
677 static FORCEINLINE HRESULT IMFAttributes_GetAllocatedString(IMFAttributes* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
678     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
679 }
680 static FORCEINLINE HRESULT IMFAttributes_GetBlobSize(IMFAttributes* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
681     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
682 }
683 static FORCEINLINE HRESULT IMFAttributes_GetBlob(IMFAttributes* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
684     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
685 }
686 static FORCEINLINE HRESULT IMFAttributes_GetAllocatedBlob(IMFAttributes* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
687     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
688 }
689 static FORCEINLINE HRESULT IMFAttributes_GetUnknown(IMFAttributes* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
690     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
691 }
692 static FORCEINLINE HRESULT IMFAttributes_SetItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value) {
693     return This->lpVtbl->SetItem(This,guidKey,Value);
694 }
695 static FORCEINLINE HRESULT IMFAttributes_DeleteItem(IMFAttributes* This,REFGUID guidKey) {
696     return This->lpVtbl->DeleteItem(This,guidKey);
697 }
698 static FORCEINLINE HRESULT IMFAttributes_DeleteAllItems(IMFAttributes* This) {
699     return This->lpVtbl->DeleteAllItems(This);
700 }
701 static FORCEINLINE HRESULT IMFAttributes_SetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 unValue) {
702     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
703 }
704 static FORCEINLINE HRESULT IMFAttributes_SetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 unValue) {
705     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
706 }
707 static FORCEINLINE HRESULT IMFAttributes_SetDouble(IMFAttributes* This,REFGUID guidKey,double fValue) {
708     return This->lpVtbl->SetDouble(This,guidKey,fValue);
709 }
710 static FORCEINLINE HRESULT IMFAttributes_SetGUID(IMFAttributes* This,REFGUID guidKey,REFGUID guidValue) {
711     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
712 }
713 static FORCEINLINE HRESULT IMFAttributes_SetString(IMFAttributes* This,REFGUID guidKey,LPCWSTR wszValue) {
714     return This->lpVtbl->SetString(This,guidKey,wszValue);
715 }
716 static FORCEINLINE HRESULT IMFAttributes_SetBlob(IMFAttributes* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
717     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
718 }
719 static FORCEINLINE HRESULT IMFAttributes_SetUnknown(IMFAttributes* This,REFGUID guidKey,IUnknown *pUnknown) {
720     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
721 }
722 static FORCEINLINE HRESULT IMFAttributes_LockStore(IMFAttributes* This) {
723     return This->lpVtbl->LockStore(This);
724 }
725 static FORCEINLINE HRESULT IMFAttributes_UnlockStore(IMFAttributes* This) {
726     return This->lpVtbl->UnlockStore(This);
727 }
728 static FORCEINLINE HRESULT IMFAttributes_GetCount(IMFAttributes* This,UINT32 *pcItems) {
729     return This->lpVtbl->GetCount(This,pcItems);
730 }
731 static FORCEINLINE HRESULT IMFAttributes_GetItemByIndex(IMFAttributes* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
732     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
733 }
734 static FORCEINLINE HRESULT IMFAttributes_CopyAllItems(IMFAttributes* This,IMFAttributes *pDest) {
735     return This->lpVtbl->CopyAllItems(This,pDest);
736 }
737 #endif
738 #endif
739 
740 #endif
741 
742 
743 #endif  /* __IMFAttributes_INTERFACE_DEFINED__ */
744 
745 
746 enum MF_ATTRIBUTE_SERIALIZE_OPTIONS {
747     MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF = 0x1
748 };
749 
750 STDAPI MFSerializeAttributesToStream(IMFAttributes *pAttr, DWORD dwOptions, IStream *pStm);
751 STDAPI MFDeserializeAttributesFromStream(IMFAttributes *pAttr, DWORD dwOptions, IStream *pStm);
752 
753 /*****************************************************************************
754  * IMFMediaBuffer interface
755  */
756 #ifndef __IMFMediaBuffer_INTERFACE_DEFINED__
757 #define __IMFMediaBuffer_INTERFACE_DEFINED__
758 
759 DEFINE_GUID(IID_IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07);
760 #if defined(__cplusplus) && !defined(CINTERFACE)
761 MIDL_INTERFACE("045fa593-8799-42b8-bc8d-8968c6453507")
762 IMFMediaBuffer : public IUnknown
763 {
764     virtual HRESULT STDMETHODCALLTYPE Lock(
765         BYTE **ppbBuffer,
766         DWORD *pcbMaxLength,
767         DWORD *pcbCurrentLength) = 0;
768 
769     virtual HRESULT STDMETHODCALLTYPE Unlock(
770         ) = 0;
771 
772     virtual HRESULT STDMETHODCALLTYPE GetCurrentLength(
773         DWORD *pcbCurrentLength) = 0;
774 
775     virtual HRESULT STDMETHODCALLTYPE SetCurrentLength(
776         DWORD cbCurrentLength) = 0;
777 
778     virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
779         DWORD *pcbMaxLength) = 0;
780 
781 };
782 #ifdef __CRT_UUID_DECL
783 __CRT_UUID_DECL(IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07)
784 #endif
785 #else
786 typedef struct IMFMediaBufferVtbl {
787     BEGIN_INTERFACE
788 
789     /*** IUnknown methods ***/
790     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
791         IMFMediaBuffer *This,
792         REFIID riid,
793         void **ppvObject);
794 
795     ULONG (STDMETHODCALLTYPE *AddRef)(
796         IMFMediaBuffer *This);
797 
798     ULONG (STDMETHODCALLTYPE *Release)(
799         IMFMediaBuffer *This);
800 
801     /*** IMFMediaBuffer methods ***/
802     HRESULT (STDMETHODCALLTYPE *Lock)(
803         IMFMediaBuffer *This,
804         BYTE **ppbBuffer,
805         DWORD *pcbMaxLength,
806         DWORD *pcbCurrentLength);
807 
808     HRESULT (STDMETHODCALLTYPE *Unlock)(
809         IMFMediaBuffer *This);
810 
811     HRESULT (STDMETHODCALLTYPE *GetCurrentLength)(
812         IMFMediaBuffer *This,
813         DWORD *pcbCurrentLength);
814 
815     HRESULT (STDMETHODCALLTYPE *SetCurrentLength)(
816         IMFMediaBuffer *This,
817         DWORD cbCurrentLength);
818 
819     HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
820         IMFMediaBuffer *This,
821         DWORD *pcbMaxLength);
822 
823     END_INTERFACE
824 } IMFMediaBufferVtbl;
825 
826 interface IMFMediaBuffer {
827     CONST_VTBL IMFMediaBufferVtbl* lpVtbl;
828 };
829 
830 #ifdef COBJMACROS
831 #ifndef WIDL_C_INLINE_WRAPPERS
832 /*** IUnknown methods ***/
833 #define IMFMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
834 #define IMFMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
835 #define IMFMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
836 /*** IMFMediaBuffer methods ***/
837 #define IMFMediaBuffer_Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength) (This)->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength)
838 #define IMFMediaBuffer_Unlock(This) (This)->lpVtbl->Unlock(This)
839 #define IMFMediaBuffer_GetCurrentLength(This,pcbCurrentLength) (This)->lpVtbl->GetCurrentLength(This,pcbCurrentLength)
840 #define IMFMediaBuffer_SetCurrentLength(This,cbCurrentLength) (This)->lpVtbl->SetCurrentLength(This,cbCurrentLength)
841 #define IMFMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
842 #else
843 /*** IUnknown methods ***/
844 static FORCEINLINE HRESULT IMFMediaBuffer_QueryInterface(IMFMediaBuffer* This,REFIID riid,void **ppvObject) {
845     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
846 }
847 static FORCEINLINE ULONG IMFMediaBuffer_AddRef(IMFMediaBuffer* This) {
848     return This->lpVtbl->AddRef(This);
849 }
850 static FORCEINLINE ULONG IMFMediaBuffer_Release(IMFMediaBuffer* This) {
851     return This->lpVtbl->Release(This);
852 }
853 /*** IMFMediaBuffer methods ***/
854 static FORCEINLINE HRESULT IMFMediaBuffer_Lock(IMFMediaBuffer* This,BYTE **ppbBuffer,DWORD *pcbMaxLength,DWORD *pcbCurrentLength) {
855     return This->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength);
856 }
857 static FORCEINLINE HRESULT IMFMediaBuffer_Unlock(IMFMediaBuffer* This) {
858     return This->lpVtbl->Unlock(This);
859 }
860 static FORCEINLINE HRESULT IMFMediaBuffer_GetCurrentLength(IMFMediaBuffer* This,DWORD *pcbCurrentLength) {
861     return This->lpVtbl->GetCurrentLength(This,pcbCurrentLength);
862 }
863 static FORCEINLINE HRESULT IMFMediaBuffer_SetCurrentLength(IMFMediaBuffer* This,DWORD cbCurrentLength) {
864     return This->lpVtbl->SetCurrentLength(This,cbCurrentLength);
865 }
866 static FORCEINLINE HRESULT IMFMediaBuffer_GetMaxLength(IMFMediaBuffer* This,DWORD *pcbMaxLength) {
867     return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
868 }
869 #endif
870 #endif
871 
872 #endif
873 
874 
875 #endif  /* __IMFMediaBuffer_INTERFACE_DEFINED__ */
876 
877 
878 /*****************************************************************************
879  * IMFSample interface
880  */
881 #ifndef __IMFSample_INTERFACE_DEFINED__
882 #define __IMFSample_INTERFACE_DEFINED__
883 
884 DEFINE_GUID(IID_IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4);
885 #if defined(__cplusplus) && !defined(CINTERFACE)
886 MIDL_INTERFACE("c40a00f2-b93a-4d80-ae8c-5a1c634f58e4")
887 IMFSample : public IMFAttributes
888 {
889     virtual HRESULT STDMETHODCALLTYPE GetSampleFlags(
890         DWORD *pdwSampleFlags) = 0;
891 
892     virtual HRESULT STDMETHODCALLTYPE SetSampleFlags(
893         DWORD dwSampleFlags) = 0;
894 
895     virtual HRESULT STDMETHODCALLTYPE GetSampleTime(
896         LONGLONG *phnsSampleTime) = 0;
897 
898     virtual HRESULT STDMETHODCALLTYPE SetSampleTime(
899         LONGLONG hnsSampleTime) = 0;
900 
901     virtual HRESULT STDMETHODCALLTYPE GetSampleDuration(
902         LONGLONG *phnsSampleDuration) = 0;
903 
904     virtual HRESULT STDMETHODCALLTYPE SetSampleDuration(
905         LONGLONG hnsSampleDuration) = 0;
906 
907     virtual HRESULT STDMETHODCALLTYPE GetBufferCount(
908         DWORD *pdwBufferCount) = 0;
909 
910     virtual HRESULT STDMETHODCALLTYPE GetBufferByIndex(
911         DWORD dwIndex,
912         IMFMediaBuffer **ppBuffer) = 0;
913 
914     virtual HRESULT STDMETHODCALLTYPE ConvertToContiguousBuffer(
915         IMFMediaBuffer **ppBuffer) = 0;
916 
917     virtual HRESULT STDMETHODCALLTYPE AddBuffer(
918         IMFMediaBuffer *pBuffer) = 0;
919 
920     virtual HRESULT STDMETHODCALLTYPE RemoveBufferByIndex(
921         DWORD dwIndex) = 0;
922 
923     virtual HRESULT STDMETHODCALLTYPE RemoveAllBuffers(
924         ) = 0;
925 
926     virtual HRESULT STDMETHODCALLTYPE GetTotalLength(
927         DWORD *pcbTotalLength) = 0;
928 
929     virtual HRESULT STDMETHODCALLTYPE CopyToBuffer(
930         IMFMediaBuffer *pBuffer) = 0;
931 
932 };
933 #ifdef __CRT_UUID_DECL
934 __CRT_UUID_DECL(IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4)
935 #endif
936 #else
937 typedef struct IMFSampleVtbl {
938     BEGIN_INTERFACE
939 
940     /*** IUnknown methods ***/
941     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
942         IMFSample *This,
943         REFIID riid,
944         void **ppvObject);
945 
946     ULONG (STDMETHODCALLTYPE *AddRef)(
947         IMFSample *This);
948 
949     ULONG (STDMETHODCALLTYPE *Release)(
950         IMFSample *This);
951 
952     /*** IMFAttributes methods ***/
953     HRESULT (STDMETHODCALLTYPE *GetItem)(
954         IMFSample *This,
955         REFGUID guidKey,
956         PROPVARIANT *pValue);
957 
958     HRESULT (STDMETHODCALLTYPE *GetItemType)(
959         IMFSample *This,
960         REFGUID guidKey,
961         MF_ATTRIBUTE_TYPE *pType);
962 
963     HRESULT (STDMETHODCALLTYPE *CompareItem)(
964         IMFSample *This,
965         REFGUID guidKey,
966         REFPROPVARIANT Value,
967         WINBOOL *pbResult);
968 
969     HRESULT (STDMETHODCALLTYPE *Compare)(
970         IMFSample *This,
971         IMFAttributes *pTheirs,
972         MF_ATTRIBUTES_MATCH_TYPE MatchType,
973         WINBOOL *pbResult);
974 
975     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
976         IMFSample *This,
977         REFGUID guidKey,
978         UINT32 *punValue);
979 
980     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
981         IMFSample *This,
982         REFGUID guidKey,
983         UINT64 *punValue);
984 
985     HRESULT (STDMETHODCALLTYPE *GetDouble)(
986         IMFSample *This,
987         REFGUID guidKey,
988         double *pfValue);
989 
990     HRESULT (STDMETHODCALLTYPE *GetGUID)(
991         IMFSample *This,
992         REFGUID guidKey,
993         GUID *pguidValue);
994 
995     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
996         IMFSample *This,
997         REFGUID guidKey,
998         UINT32 *pcchLength);
999 
1000     HRESULT (STDMETHODCALLTYPE *GetString)(
1001         IMFSample *This,
1002         REFGUID guidKey,
1003         LPWSTR pwszValue,
1004         UINT32 cchBufSize,
1005         UINT32 *pcchLength);
1006 
1007     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
1008         IMFSample *This,
1009         REFGUID guidKey,
1010         LPWSTR *ppwszValue,
1011         UINT32 *pcchLength);
1012 
1013     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
1014         IMFSample *This,
1015         REFGUID guidKey,
1016         UINT32 *pcbBlobSize);
1017 
1018     HRESULT (STDMETHODCALLTYPE *GetBlob)(
1019         IMFSample *This,
1020         REFGUID guidKey,
1021         UINT8 *pBuf,
1022         UINT32 cbBufSize,
1023         UINT32 *pcbBlobSize);
1024 
1025     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
1026         IMFSample *This,
1027         REFGUID guidKey,
1028         UINT8 **ppBuf,
1029         UINT32 *pcbSize);
1030 
1031     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
1032         IMFSample *This,
1033         REFGUID guidKey,
1034         REFIID riid,
1035         LPVOID *ppv);
1036 
1037     HRESULT (STDMETHODCALLTYPE *SetItem)(
1038         IMFSample *This,
1039         REFGUID guidKey,
1040         REFPROPVARIANT Value);
1041 
1042     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
1043         IMFSample *This,
1044         REFGUID guidKey);
1045 
1046     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
1047         IMFSample *This);
1048 
1049     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
1050         IMFSample *This,
1051         REFGUID guidKey,
1052         UINT32 unValue);
1053 
1054     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
1055         IMFSample *This,
1056         REFGUID guidKey,
1057         UINT64 unValue);
1058 
1059     HRESULT (STDMETHODCALLTYPE *SetDouble)(
1060         IMFSample *This,
1061         REFGUID guidKey,
1062         double fValue);
1063 
1064     HRESULT (STDMETHODCALLTYPE *SetGUID)(
1065         IMFSample *This,
1066         REFGUID guidKey,
1067         REFGUID guidValue);
1068 
1069     HRESULT (STDMETHODCALLTYPE *SetString)(
1070         IMFSample *This,
1071         REFGUID guidKey,
1072         LPCWSTR wszValue);
1073 
1074     HRESULT (STDMETHODCALLTYPE *SetBlob)(
1075         IMFSample *This,
1076         REFGUID guidKey,
1077         const UINT8 *pBuf,
1078         UINT32 cbBufSize);
1079 
1080     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
1081         IMFSample *This,
1082         REFGUID guidKey,
1083         IUnknown *pUnknown);
1084 
1085     HRESULT (STDMETHODCALLTYPE *LockStore)(
1086         IMFSample *This);
1087 
1088     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
1089         IMFSample *This);
1090 
1091     HRESULT (STDMETHODCALLTYPE *GetCount)(
1092         IMFSample *This,
1093         UINT32 *pcItems);
1094 
1095     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
1096         IMFSample *This,
1097         UINT32 unIndex,
1098         GUID *pguidKey,
1099         PROPVARIANT *pValue);
1100 
1101     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
1102         IMFSample *This,
1103         IMFAttributes *pDest);
1104 
1105     /*** IMFSample methods ***/
1106     HRESULT (STDMETHODCALLTYPE *GetSampleFlags)(
1107         IMFSample *This,
1108         DWORD *pdwSampleFlags);
1109 
1110     HRESULT (STDMETHODCALLTYPE *SetSampleFlags)(
1111         IMFSample *This,
1112         DWORD dwSampleFlags);
1113 
1114     HRESULT (STDMETHODCALLTYPE *GetSampleTime)(
1115         IMFSample *This,
1116         LONGLONG *phnsSampleTime);
1117 
1118     HRESULT (STDMETHODCALLTYPE *SetSampleTime)(
1119         IMFSample *This,
1120         LONGLONG hnsSampleTime);
1121 
1122     HRESULT (STDMETHODCALLTYPE *GetSampleDuration)(
1123         IMFSample *This,
1124         LONGLONG *phnsSampleDuration);
1125 
1126     HRESULT (STDMETHODCALLTYPE *SetSampleDuration)(
1127         IMFSample *This,
1128         LONGLONG hnsSampleDuration);
1129 
1130     HRESULT (STDMETHODCALLTYPE *GetBufferCount)(
1131         IMFSample *This,
1132         DWORD *pdwBufferCount);
1133 
1134     HRESULT (STDMETHODCALLTYPE *GetBufferByIndex)(
1135         IMFSample *This,
1136         DWORD dwIndex,
1137         IMFMediaBuffer **ppBuffer);
1138 
1139     HRESULT (STDMETHODCALLTYPE *ConvertToContiguousBuffer)(
1140         IMFSample *This,
1141         IMFMediaBuffer **ppBuffer);
1142 
1143     HRESULT (STDMETHODCALLTYPE *AddBuffer)(
1144         IMFSample *This,
1145         IMFMediaBuffer *pBuffer);
1146 
1147     HRESULT (STDMETHODCALLTYPE *RemoveBufferByIndex)(
1148         IMFSample *This,
1149         DWORD dwIndex);
1150 
1151     HRESULT (STDMETHODCALLTYPE *RemoveAllBuffers)(
1152         IMFSample *This);
1153 
1154     HRESULT (STDMETHODCALLTYPE *GetTotalLength)(
1155         IMFSample *This,
1156         DWORD *pcbTotalLength);
1157 
1158     HRESULT (STDMETHODCALLTYPE *CopyToBuffer)(
1159         IMFSample *This,
1160         IMFMediaBuffer *pBuffer);
1161 
1162     END_INTERFACE
1163 } IMFSampleVtbl;
1164 
1165 interface IMFSample {
1166     CONST_VTBL IMFSampleVtbl* lpVtbl;
1167 };
1168 
1169 #ifdef COBJMACROS
1170 #ifndef WIDL_C_INLINE_WRAPPERS
1171 /*** IUnknown methods ***/
1172 #define IMFSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1173 #define IMFSample_AddRef(This) (This)->lpVtbl->AddRef(This)
1174 #define IMFSample_Release(This) (This)->lpVtbl->Release(This)
1175 /*** IMFAttributes methods ***/
1176 #define IMFSample_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
1177 #define IMFSample_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
1178 #define IMFSample_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
1179 #define IMFSample_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
1180 #define IMFSample_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
1181 #define IMFSample_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
1182 #define IMFSample_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
1183 #define IMFSample_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
1184 #define IMFSample_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
1185 #define IMFSample_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
1186 #define IMFSample_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
1187 #define IMFSample_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
1188 #define IMFSample_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
1189 #define IMFSample_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
1190 #define IMFSample_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
1191 #define IMFSample_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
1192 #define IMFSample_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
1193 #define IMFSample_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
1194 #define IMFSample_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
1195 #define IMFSample_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
1196 #define IMFSample_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
1197 #define IMFSample_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
1198 #define IMFSample_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
1199 #define IMFSample_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
1200 #define IMFSample_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
1201 #define IMFSample_LockStore(This) (This)->lpVtbl->LockStore(This)
1202 #define IMFSample_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
1203 #define IMFSample_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
1204 #define IMFSample_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
1205 #define IMFSample_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
1206 /*** IMFSample methods ***/
1207 #define IMFSample_GetSampleFlags(This,pdwSampleFlags) (This)->lpVtbl->GetSampleFlags(This,pdwSampleFlags)
1208 #define IMFSample_SetSampleFlags(This,dwSampleFlags) (This)->lpVtbl->SetSampleFlags(This,dwSampleFlags)
1209 #define IMFSample_GetSampleTime(This,phnsSampleTime) (This)->lpVtbl->GetSampleTime(This,phnsSampleTime)
1210 #define IMFSample_SetSampleTime(This,hnsSampleTime) (This)->lpVtbl->SetSampleTime(This,hnsSampleTime)
1211 #define IMFSample_GetSampleDuration(This,phnsSampleDuration) (This)->lpVtbl->GetSampleDuration(This,phnsSampleDuration)
1212 #define IMFSample_SetSampleDuration(This,hnsSampleDuration) (This)->lpVtbl->SetSampleDuration(This,hnsSampleDuration)
1213 #define IMFSample_GetBufferCount(This,pdwBufferCount) (This)->lpVtbl->GetBufferCount(This,pdwBufferCount)
1214 #define IMFSample_GetBufferByIndex(This,dwIndex,ppBuffer) (This)->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer)
1215 #define IMFSample_ConvertToContiguousBuffer(This,ppBuffer) (This)->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer)
1216 #define IMFSample_AddBuffer(This,pBuffer) (This)->lpVtbl->AddBuffer(This,pBuffer)
1217 #define IMFSample_RemoveBufferByIndex(This,dwIndex) (This)->lpVtbl->RemoveBufferByIndex(This,dwIndex)
1218 #define IMFSample_RemoveAllBuffers(This) (This)->lpVtbl->RemoveAllBuffers(This)
1219 #define IMFSample_GetTotalLength(This,pcbTotalLength) (This)->lpVtbl->GetTotalLength(This,pcbTotalLength)
1220 #define IMFSample_CopyToBuffer(This,pBuffer) (This)->lpVtbl->CopyToBuffer(This,pBuffer)
1221 #else
1222 /*** IUnknown methods ***/
1223 static FORCEINLINE HRESULT IMFSample_QueryInterface(IMFSample* This,REFIID riid,void **ppvObject) {
1224     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1225 }
1226 static FORCEINLINE ULONG IMFSample_AddRef(IMFSample* This) {
1227     return This->lpVtbl->AddRef(This);
1228 }
1229 static FORCEINLINE ULONG IMFSample_Release(IMFSample* This) {
1230     return This->lpVtbl->Release(This);
1231 }
1232 /*** IMFAttributes methods ***/
1233 static FORCEINLINE HRESULT IMFSample_GetItem(IMFSample* This,REFGUID guidKey,PROPVARIANT *pValue) {
1234     return This->lpVtbl->GetItem(This,guidKey,pValue);
1235 }
1236 static FORCEINLINE HRESULT IMFSample_GetItemType(IMFSample* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
1237     return This->lpVtbl->GetItemType(This,guidKey,pType);
1238 }
1239 static FORCEINLINE HRESULT IMFSample_CompareItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
1240     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
1241 }
1242 static FORCEINLINE HRESULT IMFSample_Compare(IMFSample* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
1243     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
1244 }
1245 static FORCEINLINE HRESULT IMFSample_GetUINT32(IMFSample* This,REFGUID guidKey,UINT32 *punValue) {
1246     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
1247 }
1248 static FORCEINLINE HRESULT IMFSample_GetUINT64(IMFSample* This,REFGUID guidKey,UINT64 *punValue) {
1249     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
1250 }
1251 static FORCEINLINE HRESULT IMFSample_GetDouble(IMFSample* This,REFGUID guidKey,double *pfValue) {
1252     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
1253 }
1254 static FORCEINLINE HRESULT IMFSample_GetGUID(IMFSample* This,REFGUID guidKey,GUID *pguidValue) {
1255     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
1256 }
1257 static FORCEINLINE HRESULT IMFSample_GetStringLength(IMFSample* This,REFGUID guidKey,UINT32 *pcchLength) {
1258     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
1259 }
1260 static FORCEINLINE HRESULT IMFSample_GetString(IMFSample* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
1261     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
1262 }
1263 static FORCEINLINE HRESULT IMFSample_GetAllocatedString(IMFSample* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
1264     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
1265 }
1266 static FORCEINLINE HRESULT IMFSample_GetBlobSize(IMFSample* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
1267     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
1268 }
1269 static FORCEINLINE HRESULT IMFSample_GetBlob(IMFSample* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
1270     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
1271 }
1272 static FORCEINLINE HRESULT IMFSample_GetAllocatedBlob(IMFSample* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
1273     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
1274 }
1275 static FORCEINLINE HRESULT IMFSample_GetUnknown(IMFSample* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
1276     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
1277 }
1278 static FORCEINLINE HRESULT IMFSample_SetItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value) {
1279     return This->lpVtbl->SetItem(This,guidKey,Value);
1280 }
1281 static FORCEINLINE HRESULT IMFSample_DeleteItem(IMFSample* This,REFGUID guidKey) {
1282     return This->lpVtbl->DeleteItem(This,guidKey);
1283 }
1284 static FORCEINLINE HRESULT IMFSample_DeleteAllItems(IMFSample* This) {
1285     return This->lpVtbl->DeleteAllItems(This);
1286 }
1287 static FORCEINLINE HRESULT IMFSample_SetUINT32(IMFSample* This,REFGUID guidKey,UINT32 unValue) {
1288     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
1289 }
1290 static FORCEINLINE HRESULT IMFSample_SetUINT64(IMFSample* This,REFGUID guidKey,UINT64 unValue) {
1291     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
1292 }
1293 static FORCEINLINE HRESULT IMFSample_SetDouble(IMFSample* This,REFGUID guidKey,double fValue) {
1294     return This->lpVtbl->SetDouble(This,guidKey,fValue);
1295 }
1296 static FORCEINLINE HRESULT IMFSample_SetGUID(IMFSample* This,REFGUID guidKey,REFGUID guidValue) {
1297     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
1298 }
1299 static FORCEINLINE HRESULT IMFSample_SetString(IMFSample* This,REFGUID guidKey,LPCWSTR wszValue) {
1300     return This->lpVtbl->SetString(This,guidKey,wszValue);
1301 }
1302 static FORCEINLINE HRESULT IMFSample_SetBlob(IMFSample* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
1303     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
1304 }
1305 static FORCEINLINE HRESULT IMFSample_SetUnknown(IMFSample* This,REFGUID guidKey,IUnknown *pUnknown) {
1306     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
1307 }
1308 static FORCEINLINE HRESULT IMFSample_LockStore(IMFSample* This) {
1309     return This->lpVtbl->LockStore(This);
1310 }
1311 static FORCEINLINE HRESULT IMFSample_UnlockStore(IMFSample* This) {
1312     return This->lpVtbl->UnlockStore(This);
1313 }
1314 static FORCEINLINE HRESULT IMFSample_GetCount(IMFSample* This,UINT32 *pcItems) {
1315     return This->lpVtbl->GetCount(This,pcItems);
1316 }
1317 static FORCEINLINE HRESULT IMFSample_GetItemByIndex(IMFSample* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
1318     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
1319 }
1320 static FORCEINLINE HRESULT IMFSample_CopyAllItems(IMFSample* This,IMFAttributes *pDest) {
1321     return This->lpVtbl->CopyAllItems(This,pDest);
1322 }
1323 /*** IMFSample methods ***/
1324 static FORCEINLINE HRESULT IMFSample_GetSampleFlags(IMFSample* This,DWORD *pdwSampleFlags) {
1325     return This->lpVtbl->GetSampleFlags(This,pdwSampleFlags);
1326 }
1327 static FORCEINLINE HRESULT IMFSample_SetSampleFlags(IMFSample* This,DWORD dwSampleFlags) {
1328     return This->lpVtbl->SetSampleFlags(This,dwSampleFlags);
1329 }
1330 static FORCEINLINE HRESULT IMFSample_GetSampleTime(IMFSample* This,LONGLONG *phnsSampleTime) {
1331     return This->lpVtbl->GetSampleTime(This,phnsSampleTime);
1332 }
1333 static FORCEINLINE HRESULT IMFSample_SetSampleTime(IMFSample* This,LONGLONG hnsSampleTime) {
1334     return This->lpVtbl->SetSampleTime(This,hnsSampleTime);
1335 }
1336 static FORCEINLINE HRESULT IMFSample_GetSampleDuration(IMFSample* This,LONGLONG *phnsSampleDuration) {
1337     return This->lpVtbl->GetSampleDuration(This,phnsSampleDuration);
1338 }
1339 static FORCEINLINE HRESULT IMFSample_SetSampleDuration(IMFSample* This,LONGLONG hnsSampleDuration) {
1340     return This->lpVtbl->SetSampleDuration(This,hnsSampleDuration);
1341 }
1342 static FORCEINLINE HRESULT IMFSample_GetBufferCount(IMFSample* This,DWORD *pdwBufferCount) {
1343     return This->lpVtbl->GetBufferCount(This,pdwBufferCount);
1344 }
1345 static FORCEINLINE HRESULT IMFSample_GetBufferByIndex(IMFSample* This,DWORD dwIndex,IMFMediaBuffer **ppBuffer) {
1346     return This->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer);
1347 }
1348 static FORCEINLINE HRESULT IMFSample_ConvertToContiguousBuffer(IMFSample* This,IMFMediaBuffer **ppBuffer) {
1349     return This->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer);
1350 }
1351 static FORCEINLINE HRESULT IMFSample_AddBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
1352     return This->lpVtbl->AddBuffer(This,pBuffer);
1353 }
1354 static FORCEINLINE HRESULT IMFSample_RemoveBufferByIndex(IMFSample* This,DWORD dwIndex) {
1355     return This->lpVtbl->RemoveBufferByIndex(This,dwIndex);
1356 }
1357 static FORCEINLINE HRESULT IMFSample_RemoveAllBuffers(IMFSample* This) {
1358     return This->lpVtbl->RemoveAllBuffers(This);
1359 }
1360 static FORCEINLINE HRESULT IMFSample_GetTotalLength(IMFSample* This,DWORD *pcbTotalLength) {
1361     return This->lpVtbl->GetTotalLength(This,pcbTotalLength);
1362 }
1363 static FORCEINLINE HRESULT IMFSample_CopyToBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
1364     return This->lpVtbl->CopyToBuffer(This,pBuffer);
1365 }
1366 #endif
1367 #endif
1368 
1369 #endif
1370 
1371 
1372 #endif  /* __IMFSample_INTERFACE_DEFINED__ */
1373 
1374 
1375 /*****************************************************************************
1376  * IMF2DBuffer interface
1377  */
1378 #ifndef __IMF2DBuffer_INTERFACE_DEFINED__
1379 #define __IMF2DBuffer_INTERFACE_DEFINED__
1380 
1381 DEFINE_GUID(IID_IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb);
1382 #if defined(__cplusplus) && !defined(CINTERFACE)
1383 MIDL_INTERFACE("7dc9d5f9-9ed9-44ec-9bbf-0600bb589fbb")
1384 IMF2DBuffer : public IUnknown
1385 {
1386     virtual HRESULT STDMETHODCALLTYPE Lock2D(
1387         BYTE **ppbScanline0,
1388         LONG *plPitch) = 0;
1389 
1390     virtual HRESULT STDMETHODCALLTYPE Unlock2D(
1391         ) = 0;
1392 
1393     virtual HRESULT STDMETHODCALLTYPE GetScanline0AndPitch(
1394         BYTE **pbScanline0,
1395         LONG *plPitch) = 0;
1396 
1397     virtual HRESULT STDMETHODCALLTYPE IsContiguousFormat(
1398         WINBOOL *pfIsContiguous) = 0;
1399 
1400     virtual HRESULT STDMETHODCALLTYPE GetContiguousLength(
1401         DWORD *pcbLength) = 0;
1402 
1403     virtual HRESULT STDMETHODCALLTYPE ContiguousCopyTo(
1404         BYTE *pbDestBuffer,
1405         DWORD cbDestBuffer) = 0;
1406 
1407     virtual HRESULT STDMETHODCALLTYPE ContiguousCopyFrom(
1408         const BYTE *pbSrcBuffer,
1409         DWORD cbSrcBuffer) = 0;
1410 
1411 };
1412 #ifdef __CRT_UUID_DECL
1413 __CRT_UUID_DECL(IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb)
1414 #endif
1415 #else
1416 typedef struct IMF2DBufferVtbl {
1417     BEGIN_INTERFACE
1418 
1419     /*** IUnknown methods ***/
1420     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1421         IMF2DBuffer *This,
1422         REFIID riid,
1423         void **ppvObject);
1424 
1425     ULONG (STDMETHODCALLTYPE *AddRef)(
1426         IMF2DBuffer *This);
1427 
1428     ULONG (STDMETHODCALLTYPE *Release)(
1429         IMF2DBuffer *This);
1430 
1431     /*** IMF2DBuffer methods ***/
1432     HRESULT (STDMETHODCALLTYPE *Lock2D)(
1433         IMF2DBuffer *This,
1434         BYTE **ppbScanline0,
1435         LONG *plPitch);
1436 
1437     HRESULT (STDMETHODCALLTYPE *Unlock2D)(
1438         IMF2DBuffer *This);
1439 
1440     HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
1441         IMF2DBuffer *This,
1442         BYTE **pbScanline0,
1443         LONG *plPitch);
1444 
1445     HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
1446         IMF2DBuffer *This,
1447         WINBOOL *pfIsContiguous);
1448 
1449     HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
1450         IMF2DBuffer *This,
1451         DWORD *pcbLength);
1452 
1453     HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
1454         IMF2DBuffer *This,
1455         BYTE *pbDestBuffer,
1456         DWORD cbDestBuffer);
1457 
1458     HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
1459         IMF2DBuffer *This,
1460         const BYTE *pbSrcBuffer,
1461         DWORD cbSrcBuffer);
1462 
1463     END_INTERFACE
1464 } IMF2DBufferVtbl;
1465 
1466 interface IMF2DBuffer {
1467     CONST_VTBL IMF2DBufferVtbl* lpVtbl;
1468 };
1469 
1470 #ifdef COBJMACROS
1471 #ifndef WIDL_C_INLINE_WRAPPERS
1472 /*** IUnknown methods ***/
1473 #define IMF2DBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1474 #define IMF2DBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
1475 #define IMF2DBuffer_Release(This) (This)->lpVtbl->Release(This)
1476 /*** IMF2DBuffer methods ***/
1477 #define IMF2DBuffer_Lock2D(This,ppbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,ppbScanline0,plPitch)
1478 #define IMF2DBuffer_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
1479 #define IMF2DBuffer_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
1480 #define IMF2DBuffer_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
1481 #define IMF2DBuffer_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
1482 #define IMF2DBuffer_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
1483 #define IMF2DBuffer_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
1484 #else
1485 /*** IUnknown methods ***/
1486 static FORCEINLINE HRESULT IMF2DBuffer_QueryInterface(IMF2DBuffer* This,REFIID riid,void **ppvObject) {
1487     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1488 }
1489 static FORCEINLINE ULONG IMF2DBuffer_AddRef(IMF2DBuffer* This) {
1490     return This->lpVtbl->AddRef(This);
1491 }
1492 static FORCEINLINE ULONG IMF2DBuffer_Release(IMF2DBuffer* This) {
1493     return This->lpVtbl->Release(This);
1494 }
1495 /*** IMF2DBuffer methods ***/
1496 static FORCEINLINE HRESULT IMF2DBuffer_Lock2D(IMF2DBuffer* This,BYTE **ppbScanline0,LONG *plPitch) {
1497     return This->lpVtbl->Lock2D(This,ppbScanline0,plPitch);
1498 }
1499 static FORCEINLINE HRESULT IMF2DBuffer_Unlock2D(IMF2DBuffer* This) {
1500     return This->lpVtbl->Unlock2D(This);
1501 }
1502 static FORCEINLINE HRESULT IMF2DBuffer_GetScanline0AndPitch(IMF2DBuffer* This,BYTE **pbScanline0,LONG *plPitch) {
1503     return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
1504 }
1505 static FORCEINLINE HRESULT IMF2DBuffer_IsContiguousFormat(IMF2DBuffer* This,WINBOOL *pfIsContiguous) {
1506     return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
1507 }
1508 static FORCEINLINE HRESULT IMF2DBuffer_GetContiguousLength(IMF2DBuffer* This,DWORD *pcbLength) {
1509     return This->lpVtbl->GetContiguousLength(This,pcbLength);
1510 }
1511 static FORCEINLINE HRESULT IMF2DBuffer_ContiguousCopyTo(IMF2DBuffer* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
1512     return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
1513 }
1514 static FORCEINLINE HRESULT IMF2DBuffer_ContiguousCopyFrom(IMF2DBuffer* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
1515     return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
1516 }
1517 #endif
1518 #endif
1519 
1520 #endif
1521 
1522 
1523 #endif  /* __IMF2DBuffer_INTERFACE_DEFINED__ */
1524 
1525 
1526 typedef enum _MF2DBuffer_LockFlags {
1527     MF2DBuffer_LockFlags_LockTypeMask = (0x1 | 0x2) | 0x3,
1528     MF2DBuffer_LockFlags_Read = 0x1,
1529     MF2DBuffer_LockFlags_Write = 0x2,
1530     MF2DBuffer_LockFlags_ReadWrite = 0x3,
1531     MF2DBuffer_LockFlags_ForceDWORD = 0x7fffffff
1532 } MF2DBuffer_LockFlags;
1533 
1534 /*****************************************************************************
1535  * IMF2DBuffer2 interface
1536  */
1537 #ifndef __IMF2DBuffer2_INTERFACE_DEFINED__
1538 #define __IMF2DBuffer2_INTERFACE_DEFINED__
1539 
1540 DEFINE_GUID(IID_IMF2DBuffer2, 0x33ae5ea6, 0x4316, 0x436f, 0x8d,0xdd, 0xd7,0x3d,0x22,0xf8,0x29,0xec);
1541 #if defined(__cplusplus) && !defined(CINTERFACE)
1542 MIDL_INTERFACE("33ae5ea6-4316-436f-8ddd-d73d22f829ec")
1543 IMF2DBuffer2 : public IMF2DBuffer
1544 {
1545     virtual HRESULT STDMETHODCALLTYPE Lock2DSize(
1546         MF2DBuffer_LockFlags lockFlags,
1547         BYTE **ppbScanline0,
1548         LONG *plPitch,
1549         BYTE **ppbBufferStart,
1550         DWORD *pcbBufferLength) = 0;
1551 
1552     virtual HRESULT STDMETHODCALLTYPE Copy2DTo(
1553         IMF2DBuffer2 *pDestBuffer) = 0;
1554 
1555 };
1556 #ifdef __CRT_UUID_DECL
1557 __CRT_UUID_DECL(IMF2DBuffer2, 0x33ae5ea6, 0x4316, 0x436f, 0x8d,0xdd, 0xd7,0x3d,0x22,0xf8,0x29,0xec)
1558 #endif
1559 #else
1560 typedef struct IMF2DBuffer2Vtbl {
1561     BEGIN_INTERFACE
1562 
1563     /*** IUnknown methods ***/
1564     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1565         IMF2DBuffer2 *This,
1566         REFIID riid,
1567         void **ppvObject);
1568 
1569     ULONG (STDMETHODCALLTYPE *AddRef)(
1570         IMF2DBuffer2 *This);
1571 
1572     ULONG (STDMETHODCALLTYPE *Release)(
1573         IMF2DBuffer2 *This);
1574 
1575     /*** IMF2DBuffer methods ***/
1576     HRESULT (STDMETHODCALLTYPE *Lock2D)(
1577         IMF2DBuffer2 *This,
1578         BYTE **ppbScanline0,
1579         LONG *plPitch);
1580 
1581     HRESULT (STDMETHODCALLTYPE *Unlock2D)(
1582         IMF2DBuffer2 *This);
1583 
1584     HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
1585         IMF2DBuffer2 *This,
1586         BYTE **pbScanline0,
1587         LONG *plPitch);
1588 
1589     HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
1590         IMF2DBuffer2 *This,
1591         WINBOOL *pfIsContiguous);
1592 
1593     HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
1594         IMF2DBuffer2 *This,
1595         DWORD *pcbLength);
1596 
1597     HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
1598         IMF2DBuffer2 *This,
1599         BYTE *pbDestBuffer,
1600         DWORD cbDestBuffer);
1601 
1602     HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
1603         IMF2DBuffer2 *This,
1604         const BYTE *pbSrcBuffer,
1605         DWORD cbSrcBuffer);
1606 
1607     /*** IMF2DBuffer2 methods ***/
1608     HRESULT (STDMETHODCALLTYPE *Lock2DSize)(
1609         IMF2DBuffer2 *This,
1610         MF2DBuffer_LockFlags lockFlags,
1611         BYTE **ppbScanline0,
1612         LONG *plPitch,
1613         BYTE **ppbBufferStart,
1614         DWORD *pcbBufferLength);
1615 
1616     HRESULT (STDMETHODCALLTYPE *Copy2DTo)(
1617         IMF2DBuffer2 *This,
1618         IMF2DBuffer2 *pDestBuffer);
1619 
1620     END_INTERFACE
1621 } IMF2DBuffer2Vtbl;
1622 
1623 interface IMF2DBuffer2 {
1624     CONST_VTBL IMF2DBuffer2Vtbl* lpVtbl;
1625 };
1626 
1627 #ifdef COBJMACROS
1628 #ifndef WIDL_C_INLINE_WRAPPERS
1629 /*** IUnknown methods ***/
1630 #define IMF2DBuffer2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1631 #define IMF2DBuffer2_AddRef(This) (This)->lpVtbl->AddRef(This)
1632 #define IMF2DBuffer2_Release(This) (This)->lpVtbl->Release(This)
1633 /*** IMF2DBuffer methods ***/
1634 #define IMF2DBuffer2_Lock2D(This,ppbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,ppbScanline0,plPitch)
1635 #define IMF2DBuffer2_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
1636 #define IMF2DBuffer2_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
1637 #define IMF2DBuffer2_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
1638 #define IMF2DBuffer2_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
1639 #define IMF2DBuffer2_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
1640 #define IMF2DBuffer2_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
1641 /*** IMF2DBuffer2 methods ***/
1642 #define IMF2DBuffer2_Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength) (This)->lpVtbl->Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength)
1643 #define IMF2DBuffer2_Copy2DTo(This,pDestBuffer) (This)->lpVtbl->Copy2DTo(This,pDestBuffer)
1644 #else
1645 /*** IUnknown methods ***/
1646 static FORCEINLINE HRESULT IMF2DBuffer2_QueryInterface(IMF2DBuffer2* This,REFIID riid,void **ppvObject) {
1647     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1648 }
1649 static FORCEINLINE ULONG IMF2DBuffer2_AddRef(IMF2DBuffer2* This) {
1650     return This->lpVtbl->AddRef(This);
1651 }
1652 static FORCEINLINE ULONG IMF2DBuffer2_Release(IMF2DBuffer2* This) {
1653     return This->lpVtbl->Release(This);
1654 }
1655 /*** IMF2DBuffer methods ***/
1656 static FORCEINLINE HRESULT IMF2DBuffer2_Lock2D(IMF2DBuffer2* This,BYTE **ppbScanline0,LONG *plPitch) {
1657     return This->lpVtbl->Lock2D(This,ppbScanline0,plPitch);
1658 }
1659 static FORCEINLINE HRESULT IMF2DBuffer2_Unlock2D(IMF2DBuffer2* This) {
1660     return This->lpVtbl->Unlock2D(This);
1661 }
1662 static FORCEINLINE HRESULT IMF2DBuffer2_GetScanline0AndPitch(IMF2DBuffer2* This,BYTE **pbScanline0,LONG *plPitch) {
1663     return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
1664 }
1665 static FORCEINLINE HRESULT IMF2DBuffer2_IsContiguousFormat(IMF2DBuffer2* This,WINBOOL *pfIsContiguous) {
1666     return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
1667 }
1668 static FORCEINLINE HRESULT IMF2DBuffer2_GetContiguousLength(IMF2DBuffer2* This,DWORD *pcbLength) {
1669     return This->lpVtbl->GetContiguousLength(This,pcbLength);
1670 }
1671 static FORCEINLINE HRESULT IMF2DBuffer2_ContiguousCopyTo(IMF2DBuffer2* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
1672     return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
1673 }
1674 static FORCEINLINE HRESULT IMF2DBuffer2_ContiguousCopyFrom(IMF2DBuffer2* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
1675     return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
1676 }
1677 /*** IMF2DBuffer2 methods ***/
1678 static FORCEINLINE HRESULT IMF2DBuffer2_Lock2DSize(IMF2DBuffer2* This,MF2DBuffer_LockFlags lockFlags,BYTE **ppbScanline0,LONG *plPitch,BYTE **ppbBufferStart,DWORD *pcbBufferLength) {
1679     return This->lpVtbl->Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength);
1680 }
1681 static FORCEINLINE HRESULT IMF2DBuffer2_Copy2DTo(IMF2DBuffer2* This,IMF2DBuffer2 *pDestBuffer) {
1682     return This->lpVtbl->Copy2DTo(This,pDestBuffer);
1683 }
1684 #endif
1685 #endif
1686 
1687 #endif
1688 
1689 
1690 #endif  /* __IMF2DBuffer2_INTERFACE_DEFINED__ */
1691 
1692 
1693 /*****************************************************************************
1694  * IMFDXGIBuffer interface
1695  */
1696 #ifndef __IMFDXGIBuffer_INTERFACE_DEFINED__
1697 #define __IMFDXGIBuffer_INTERFACE_DEFINED__
1698 
1699 DEFINE_GUID(IID_IMFDXGIBuffer, 0xe7174cfa, 0x1c9e, 0x48b1, 0x88,0x66, 0x62,0x62,0x26,0xbf,0xc2,0x58);
1700 #if defined(__cplusplus) && !defined(CINTERFACE)
1701 MIDL_INTERFACE("e7174cfa-1c9e-48b1-8866-626226bfc258")
1702 IMFDXGIBuffer : public IUnknown
1703 {
1704     virtual HRESULT STDMETHODCALLTYPE GetResource(
1705         REFIID riid,
1706         LPVOID *ppvObject) = 0;
1707 
1708     virtual HRESULT STDMETHODCALLTYPE GetSubresourceIndex(
1709         UINT *puSubresource) = 0;
1710 
1711     virtual HRESULT STDMETHODCALLTYPE GetUnknown(
1712         REFIID guid,
1713         REFIID riid,
1714         LPVOID *ppvObject) = 0;
1715 
1716     virtual HRESULT STDMETHODCALLTYPE SetUnknown(
1717         REFIID guid,
1718         IUnknown *pUnkData) = 0;
1719 
1720 };
1721 #ifdef __CRT_UUID_DECL
1722 __CRT_UUID_DECL(IMFDXGIBuffer, 0xe7174cfa, 0x1c9e, 0x48b1, 0x88,0x66, 0x62,0x62,0x26,0xbf,0xc2,0x58)
1723 #endif
1724 #else
1725 typedef struct IMFDXGIBufferVtbl {
1726     BEGIN_INTERFACE
1727 
1728     /*** IUnknown methods ***/
1729     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1730         IMFDXGIBuffer *This,
1731         REFIID riid,
1732         void **ppvObject);
1733 
1734     ULONG (STDMETHODCALLTYPE *AddRef)(
1735         IMFDXGIBuffer *This);
1736 
1737     ULONG (STDMETHODCALLTYPE *Release)(
1738         IMFDXGIBuffer *This);
1739 
1740     /*** IMFDXGIBuffer methods ***/
1741     HRESULT (STDMETHODCALLTYPE *GetResource)(
1742         IMFDXGIBuffer *This,
1743         REFIID riid,
1744         LPVOID *ppvObject);
1745 
1746     HRESULT (STDMETHODCALLTYPE *GetSubresourceIndex)(
1747         IMFDXGIBuffer *This,
1748         UINT *puSubresource);
1749 
1750     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
1751         IMFDXGIBuffer *This,
1752         REFIID guid,
1753         REFIID riid,
1754         LPVOID *ppvObject);
1755 
1756     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
1757         IMFDXGIBuffer *This,
1758         REFIID guid,
1759         IUnknown *pUnkData);
1760 
1761     END_INTERFACE
1762 } IMFDXGIBufferVtbl;
1763 
1764 interface IMFDXGIBuffer {
1765     CONST_VTBL IMFDXGIBufferVtbl* lpVtbl;
1766 };
1767 
1768 #ifdef COBJMACROS
1769 #ifndef WIDL_C_INLINE_WRAPPERS
1770 /*** IUnknown methods ***/
1771 #define IMFDXGIBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1772 #define IMFDXGIBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
1773 #define IMFDXGIBuffer_Release(This) (This)->lpVtbl->Release(This)
1774 /*** IMFDXGIBuffer methods ***/
1775 #define IMFDXGIBuffer_GetResource(This,riid,ppvObject) (This)->lpVtbl->GetResource(This,riid,ppvObject)
1776 #define IMFDXGIBuffer_GetSubresourceIndex(This,puSubresource) (This)->lpVtbl->GetSubresourceIndex(This,puSubresource)
1777 #define IMFDXGIBuffer_GetUnknown(This,guid,riid,ppvObject) (This)->lpVtbl->GetUnknown(This,guid,riid,ppvObject)
1778 #define IMFDXGIBuffer_SetUnknown(This,guid,pUnkData) (This)->lpVtbl->SetUnknown(This,guid,pUnkData)
1779 #else
1780 /*** IUnknown methods ***/
1781 static FORCEINLINE HRESULT IMFDXGIBuffer_QueryInterface(IMFDXGIBuffer* This,REFIID riid,void **ppvObject) {
1782     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1783 }
1784 static FORCEINLINE ULONG IMFDXGIBuffer_AddRef(IMFDXGIBuffer* This) {
1785     return This->lpVtbl->AddRef(This);
1786 }
1787 static FORCEINLINE ULONG IMFDXGIBuffer_Release(IMFDXGIBuffer* This) {
1788     return This->lpVtbl->Release(This);
1789 }
1790 /*** IMFDXGIBuffer methods ***/
1791 static FORCEINLINE HRESULT IMFDXGIBuffer_GetResource(IMFDXGIBuffer* This,REFIID riid,LPVOID *ppvObject) {
1792     return This->lpVtbl->GetResource(This,riid,ppvObject);
1793 }
1794 static FORCEINLINE HRESULT IMFDXGIBuffer_GetSubresourceIndex(IMFDXGIBuffer* This,UINT *puSubresource) {
1795     return This->lpVtbl->GetSubresourceIndex(This,puSubresource);
1796 }
1797 static FORCEINLINE HRESULT IMFDXGIBuffer_GetUnknown(IMFDXGIBuffer* This,REFIID guid,REFIID riid,LPVOID *ppvObject) {
1798     return This->lpVtbl->GetUnknown(This,guid,riid,ppvObject);
1799 }
1800 static FORCEINLINE HRESULT IMFDXGIBuffer_SetUnknown(IMFDXGIBuffer* This,REFIID guid,IUnknown *pUnkData) {
1801     return This->lpVtbl->SetUnknown(This,guid,pUnkData);
1802 }
1803 #endif
1804 #endif
1805 
1806 #endif
1807 
1808 
1809 #endif  /* __IMFDXGIBuffer_INTERFACE_DEFINED__ */
1810 
1811 
1812 /*****************************************************************************
1813  * IMFMediaType interface
1814  */
1815 #ifndef __IMFMediaType_INTERFACE_DEFINED__
1816 #define __IMFMediaType_INTERFACE_DEFINED__
1817 
1818 DEFINE_GUID(IID_IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55);
1819 #if defined(__cplusplus) && !defined(CINTERFACE)
1820 MIDL_INTERFACE("44ae0fa8-ea31-4109-8d2e-4cae4997c555")
1821 IMFMediaType : public IMFAttributes
1822 {
1823     virtual HRESULT STDMETHODCALLTYPE GetMajorType(
1824         GUID *pguidMajorType) = 0;
1825 
1826     virtual HRESULT STDMETHODCALLTYPE IsCompressedFormat(
1827         WINBOOL *pfCompressed) = 0;
1828 
1829     virtual HRESULT STDMETHODCALLTYPE IsEqual(
1830         IMFMediaType *pIMediaType,
1831         DWORD *pdwFlags) = 0;
1832 
1833     virtual HRESULT STDMETHODCALLTYPE GetRepresentation(
1834         GUID guidRepresentation,
1835         LPVOID *ppvRepresentation) = 0;
1836 
1837     virtual HRESULT STDMETHODCALLTYPE FreeRepresentation(
1838         GUID guidRepresentation,
1839         LPVOID pvRepresentation) = 0;
1840 
1841 };
1842 #ifdef __CRT_UUID_DECL
1843 __CRT_UUID_DECL(IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55)
1844 #endif
1845 #else
1846 typedef struct IMFMediaTypeVtbl {
1847     BEGIN_INTERFACE
1848 
1849     /*** IUnknown methods ***/
1850     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1851         IMFMediaType *This,
1852         REFIID riid,
1853         void **ppvObject);
1854 
1855     ULONG (STDMETHODCALLTYPE *AddRef)(
1856         IMFMediaType *This);
1857 
1858     ULONG (STDMETHODCALLTYPE *Release)(
1859         IMFMediaType *This);
1860 
1861     /*** IMFAttributes methods ***/
1862     HRESULT (STDMETHODCALLTYPE *GetItem)(
1863         IMFMediaType *This,
1864         REFGUID guidKey,
1865         PROPVARIANT *pValue);
1866 
1867     HRESULT (STDMETHODCALLTYPE *GetItemType)(
1868         IMFMediaType *This,
1869         REFGUID guidKey,
1870         MF_ATTRIBUTE_TYPE *pType);
1871 
1872     HRESULT (STDMETHODCALLTYPE *CompareItem)(
1873         IMFMediaType *This,
1874         REFGUID guidKey,
1875         REFPROPVARIANT Value,
1876         WINBOOL *pbResult);
1877 
1878     HRESULT (STDMETHODCALLTYPE *Compare)(
1879         IMFMediaType *This,
1880         IMFAttributes *pTheirs,
1881         MF_ATTRIBUTES_MATCH_TYPE MatchType,
1882         WINBOOL *pbResult);
1883 
1884     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
1885         IMFMediaType *This,
1886         REFGUID guidKey,
1887         UINT32 *punValue);
1888 
1889     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
1890         IMFMediaType *This,
1891         REFGUID guidKey,
1892         UINT64 *punValue);
1893 
1894     HRESULT (STDMETHODCALLTYPE *GetDouble)(
1895         IMFMediaType *This,
1896         REFGUID guidKey,
1897         double *pfValue);
1898 
1899     HRESULT (STDMETHODCALLTYPE *GetGUID)(
1900         IMFMediaType *This,
1901         REFGUID guidKey,
1902         GUID *pguidValue);
1903 
1904     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
1905         IMFMediaType *This,
1906         REFGUID guidKey,
1907         UINT32 *pcchLength);
1908 
1909     HRESULT (STDMETHODCALLTYPE *GetString)(
1910         IMFMediaType *This,
1911         REFGUID guidKey,
1912         LPWSTR pwszValue,
1913         UINT32 cchBufSize,
1914         UINT32 *pcchLength);
1915 
1916     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
1917         IMFMediaType *This,
1918         REFGUID guidKey,
1919         LPWSTR *ppwszValue,
1920         UINT32 *pcchLength);
1921 
1922     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
1923         IMFMediaType *This,
1924         REFGUID guidKey,
1925         UINT32 *pcbBlobSize);
1926 
1927     HRESULT (STDMETHODCALLTYPE *GetBlob)(
1928         IMFMediaType *This,
1929         REFGUID guidKey,
1930         UINT8 *pBuf,
1931         UINT32 cbBufSize,
1932         UINT32 *pcbBlobSize);
1933 
1934     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
1935         IMFMediaType *This,
1936         REFGUID guidKey,
1937         UINT8 **ppBuf,
1938         UINT32 *pcbSize);
1939 
1940     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
1941         IMFMediaType *This,
1942         REFGUID guidKey,
1943         REFIID riid,
1944         LPVOID *ppv);
1945 
1946     HRESULT (STDMETHODCALLTYPE *SetItem)(
1947         IMFMediaType *This,
1948         REFGUID guidKey,
1949         REFPROPVARIANT Value);
1950 
1951     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
1952         IMFMediaType *This,
1953         REFGUID guidKey);
1954 
1955     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
1956         IMFMediaType *This);
1957 
1958     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
1959         IMFMediaType *This,
1960         REFGUID guidKey,
1961         UINT32 unValue);
1962 
1963     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
1964         IMFMediaType *This,
1965         REFGUID guidKey,
1966         UINT64 unValue);
1967 
1968     HRESULT (STDMETHODCALLTYPE *SetDouble)(
1969         IMFMediaType *This,
1970         REFGUID guidKey,
1971         double fValue);
1972 
1973     HRESULT (STDMETHODCALLTYPE *SetGUID)(
1974         IMFMediaType *This,
1975         REFGUID guidKey,
1976         REFGUID guidValue);
1977 
1978     HRESULT (STDMETHODCALLTYPE *SetString)(
1979         IMFMediaType *This,
1980         REFGUID guidKey,
1981         LPCWSTR wszValue);
1982 
1983     HRESULT (STDMETHODCALLTYPE *SetBlob)(
1984         IMFMediaType *This,
1985         REFGUID guidKey,
1986         const UINT8 *pBuf,
1987         UINT32 cbBufSize);
1988 
1989     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
1990         IMFMediaType *This,
1991         REFGUID guidKey,
1992         IUnknown *pUnknown);
1993 
1994     HRESULT (STDMETHODCALLTYPE *LockStore)(
1995         IMFMediaType *This);
1996 
1997     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
1998         IMFMediaType *This);
1999 
2000     HRESULT (STDMETHODCALLTYPE *GetCount)(
2001         IMFMediaType *This,
2002         UINT32 *pcItems);
2003 
2004     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2005         IMFMediaType *This,
2006         UINT32 unIndex,
2007         GUID *pguidKey,
2008         PROPVARIANT *pValue);
2009 
2010     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2011         IMFMediaType *This,
2012         IMFAttributes *pDest);
2013 
2014     /*** IMFMediaType methods ***/
2015     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
2016         IMFMediaType *This,
2017         GUID *pguidMajorType);
2018 
2019     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
2020         IMFMediaType *This,
2021         WINBOOL *pfCompressed);
2022 
2023     HRESULT (STDMETHODCALLTYPE *IsEqual)(
2024         IMFMediaType *This,
2025         IMFMediaType *pIMediaType,
2026         DWORD *pdwFlags);
2027 
2028     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
2029         IMFMediaType *This,
2030         GUID guidRepresentation,
2031         LPVOID *ppvRepresentation);
2032 
2033     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
2034         IMFMediaType *This,
2035         GUID guidRepresentation,
2036         LPVOID pvRepresentation);
2037 
2038     END_INTERFACE
2039 } IMFMediaTypeVtbl;
2040 
2041 interface IMFMediaType {
2042     CONST_VTBL IMFMediaTypeVtbl* lpVtbl;
2043 };
2044 
2045 #ifdef COBJMACROS
2046 #ifndef WIDL_C_INLINE_WRAPPERS
2047 /*** IUnknown methods ***/
2048 #define IMFMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2049 #define IMFMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
2050 #define IMFMediaType_Release(This) (This)->lpVtbl->Release(This)
2051 /*** IMFAttributes methods ***/
2052 #define IMFMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2053 #define IMFMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2054 #define IMFMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2055 #define IMFMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2056 #define IMFMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2057 #define IMFMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2058 #define IMFMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2059 #define IMFMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2060 #define IMFMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2061 #define IMFMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2062 #define IMFMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2063 #define IMFMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2064 #define IMFMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2065 #define IMFMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2066 #define IMFMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2067 #define IMFMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2068 #define IMFMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2069 #define IMFMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2070 #define IMFMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2071 #define IMFMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2072 #define IMFMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2073 #define IMFMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2074 #define IMFMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2075 #define IMFMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2076 #define IMFMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2077 #define IMFMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
2078 #define IMFMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2079 #define IMFMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2080 #define IMFMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2081 #define IMFMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2082 /*** IMFMediaType methods ***/
2083 #define IMFMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
2084 #define IMFMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
2085 #define IMFMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
2086 #define IMFMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
2087 #define IMFMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
2088 #else
2089 /*** IUnknown methods ***/
2090 static FORCEINLINE HRESULT IMFMediaType_QueryInterface(IMFMediaType* This,REFIID riid,void **ppvObject) {
2091     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2092 }
2093 static FORCEINLINE ULONG IMFMediaType_AddRef(IMFMediaType* This) {
2094     return This->lpVtbl->AddRef(This);
2095 }
2096 static FORCEINLINE ULONG IMFMediaType_Release(IMFMediaType* This) {
2097     return This->lpVtbl->Release(This);
2098 }
2099 /*** IMFAttributes methods ***/
2100 static FORCEINLINE HRESULT IMFMediaType_GetItem(IMFMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
2101     return This->lpVtbl->GetItem(This,guidKey,pValue);
2102 }
2103 static FORCEINLINE HRESULT IMFMediaType_GetItemType(IMFMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2104     return This->lpVtbl->GetItemType(This,guidKey,pType);
2105 }
2106 static FORCEINLINE HRESULT IMFMediaType_CompareItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2107     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2108 }
2109 static FORCEINLINE HRESULT IMFMediaType_Compare(IMFMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2110     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2111 }
2112 static FORCEINLINE HRESULT IMFMediaType_GetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 *punValue) {
2113     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2114 }
2115 static FORCEINLINE HRESULT IMFMediaType_GetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 *punValue) {
2116     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2117 }
2118 static FORCEINLINE HRESULT IMFMediaType_GetDouble(IMFMediaType* This,REFGUID guidKey,double *pfValue) {
2119     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2120 }
2121 static FORCEINLINE HRESULT IMFMediaType_GetGUID(IMFMediaType* This,REFGUID guidKey,GUID *pguidValue) {
2122     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2123 }
2124 static FORCEINLINE HRESULT IMFMediaType_GetStringLength(IMFMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
2125     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2126 }
2127 static FORCEINLINE HRESULT IMFMediaType_GetString(IMFMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2128     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2129 }
2130 static FORCEINLINE HRESULT IMFMediaType_GetAllocatedString(IMFMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2131     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2132 }
2133 static FORCEINLINE HRESULT IMFMediaType_GetBlobSize(IMFMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2134     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2135 }
2136 static FORCEINLINE HRESULT IMFMediaType_GetBlob(IMFMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2137     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2138 }
2139 static FORCEINLINE HRESULT IMFMediaType_GetAllocatedBlob(IMFMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2140     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2141 }
2142 static FORCEINLINE HRESULT IMFMediaType_GetUnknown(IMFMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2143     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2144 }
2145 static FORCEINLINE HRESULT IMFMediaType_SetItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
2146     return This->lpVtbl->SetItem(This,guidKey,Value);
2147 }
2148 static FORCEINLINE HRESULT IMFMediaType_DeleteItem(IMFMediaType* This,REFGUID guidKey) {
2149     return This->lpVtbl->DeleteItem(This,guidKey);
2150 }
2151 static FORCEINLINE HRESULT IMFMediaType_DeleteAllItems(IMFMediaType* This) {
2152     return This->lpVtbl->DeleteAllItems(This);
2153 }
2154 static FORCEINLINE HRESULT IMFMediaType_SetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 unValue) {
2155     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2156 }
2157 static FORCEINLINE HRESULT IMFMediaType_SetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 unValue) {
2158     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2159 }
2160 static FORCEINLINE HRESULT IMFMediaType_SetDouble(IMFMediaType* This,REFGUID guidKey,double fValue) {
2161     return This->lpVtbl->SetDouble(This,guidKey,fValue);
2162 }
2163 static FORCEINLINE HRESULT IMFMediaType_SetGUID(IMFMediaType* This,REFGUID guidKey,REFGUID guidValue) {
2164     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2165 }
2166 static FORCEINLINE HRESULT IMFMediaType_SetString(IMFMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
2167     return This->lpVtbl->SetString(This,guidKey,wszValue);
2168 }
2169 static FORCEINLINE HRESULT IMFMediaType_SetBlob(IMFMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2170     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2171 }
2172 static FORCEINLINE HRESULT IMFMediaType_SetUnknown(IMFMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
2173     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2174 }
2175 static FORCEINLINE HRESULT IMFMediaType_LockStore(IMFMediaType* This) {
2176     return This->lpVtbl->LockStore(This);
2177 }
2178 static FORCEINLINE HRESULT IMFMediaType_UnlockStore(IMFMediaType* This) {
2179     return This->lpVtbl->UnlockStore(This);
2180 }
2181 static FORCEINLINE HRESULT IMFMediaType_GetCount(IMFMediaType* This,UINT32 *pcItems) {
2182     return This->lpVtbl->GetCount(This,pcItems);
2183 }
2184 static FORCEINLINE HRESULT IMFMediaType_GetItemByIndex(IMFMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2185     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2186 }
2187 static FORCEINLINE HRESULT IMFMediaType_CopyAllItems(IMFMediaType* This,IMFAttributes *pDest) {
2188     return This->lpVtbl->CopyAllItems(This,pDest);
2189 }
2190 /*** IMFMediaType methods ***/
2191 static FORCEINLINE HRESULT IMFMediaType_GetMajorType(IMFMediaType* This,GUID *pguidMajorType) {
2192     return This->lpVtbl->GetMajorType(This,pguidMajorType);
2193 }
2194 static FORCEINLINE HRESULT IMFMediaType_IsCompressedFormat(IMFMediaType* This,WINBOOL *pfCompressed) {
2195     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
2196 }
2197 static FORCEINLINE HRESULT IMFMediaType_IsEqual(IMFMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
2198     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
2199 }
2200 static FORCEINLINE HRESULT IMFMediaType_GetRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
2201     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
2202 }
2203 static FORCEINLINE HRESULT IMFMediaType_FreeRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
2204     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
2205 }
2206 #endif
2207 #endif
2208 
2209 #endif
2210 
2211 
2212 #endif  /* __IMFMediaType_INTERFACE_DEFINED__ */
2213 
2214 
2215 #define MF_MEDIATYPE_EQUAL_MAJOR_TYPES 0x00000001
2216 #define MF_MEDIATYPE_EQUAL_FORMAT_TYPES 0x00000002
2217 #define MF_MEDIATYPE_EQUAL_FORMAT_DATA 0x00000004
2218 #define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA 0x00000008
2219 #endif
2220 
2221 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2222 /*****************************************************************************
2223  * IMFAudioMediaType interface
2224  */
2225 #ifndef __IMFAudioMediaType_INTERFACE_DEFINED__
2226 #define __IMFAudioMediaType_INTERFACE_DEFINED__
2227 
2228 DEFINE_GUID(IID_IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf);
2229 #if defined(__cplusplus) && !defined(CINTERFACE)
2230 MIDL_INTERFACE("26a0adc3-ce26-4672-9304-69552edd3faf")
2231 IMFAudioMediaType : public IMFMediaType
2232 {
2233     virtual const WAVEFORMATEX * STDMETHODCALLTYPE GetAudioFormat(
2234         ) = 0;
2235 
2236 };
2237 #ifdef __CRT_UUID_DECL
2238 __CRT_UUID_DECL(IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf)
2239 #endif
2240 #else
2241 typedef struct IMFAudioMediaTypeVtbl {
2242     BEGIN_INTERFACE
2243 
2244     /*** IUnknown methods ***/
2245     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2246         IMFAudioMediaType *This,
2247         REFIID riid,
2248         void **ppvObject);
2249 
2250     ULONG (STDMETHODCALLTYPE *AddRef)(
2251         IMFAudioMediaType *This);
2252 
2253     ULONG (STDMETHODCALLTYPE *Release)(
2254         IMFAudioMediaType *This);
2255 
2256     /*** IMFAttributes methods ***/
2257     HRESULT (STDMETHODCALLTYPE *GetItem)(
2258         IMFAudioMediaType *This,
2259         REFGUID guidKey,
2260         PROPVARIANT *pValue);
2261 
2262     HRESULT (STDMETHODCALLTYPE *GetItemType)(
2263         IMFAudioMediaType *This,
2264         REFGUID guidKey,
2265         MF_ATTRIBUTE_TYPE *pType);
2266 
2267     HRESULT (STDMETHODCALLTYPE *CompareItem)(
2268         IMFAudioMediaType *This,
2269         REFGUID guidKey,
2270         REFPROPVARIANT Value,
2271         WINBOOL *pbResult);
2272 
2273     HRESULT (STDMETHODCALLTYPE *Compare)(
2274         IMFAudioMediaType *This,
2275         IMFAttributes *pTheirs,
2276         MF_ATTRIBUTES_MATCH_TYPE MatchType,
2277         WINBOOL *pbResult);
2278 
2279     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
2280         IMFAudioMediaType *This,
2281         REFGUID guidKey,
2282         UINT32 *punValue);
2283 
2284     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
2285         IMFAudioMediaType *This,
2286         REFGUID guidKey,
2287         UINT64 *punValue);
2288 
2289     HRESULT (STDMETHODCALLTYPE *GetDouble)(
2290         IMFAudioMediaType *This,
2291         REFGUID guidKey,
2292         double *pfValue);
2293 
2294     HRESULT (STDMETHODCALLTYPE *GetGUID)(
2295         IMFAudioMediaType *This,
2296         REFGUID guidKey,
2297         GUID *pguidValue);
2298 
2299     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2300         IMFAudioMediaType *This,
2301         REFGUID guidKey,
2302         UINT32 *pcchLength);
2303 
2304     HRESULT (STDMETHODCALLTYPE *GetString)(
2305         IMFAudioMediaType *This,
2306         REFGUID guidKey,
2307         LPWSTR pwszValue,
2308         UINT32 cchBufSize,
2309         UINT32 *pcchLength);
2310 
2311     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2312         IMFAudioMediaType *This,
2313         REFGUID guidKey,
2314         LPWSTR *ppwszValue,
2315         UINT32 *pcchLength);
2316 
2317     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2318         IMFAudioMediaType *This,
2319         REFGUID guidKey,
2320         UINT32 *pcbBlobSize);
2321 
2322     HRESULT (STDMETHODCALLTYPE *GetBlob)(
2323         IMFAudioMediaType *This,
2324         REFGUID guidKey,
2325         UINT8 *pBuf,
2326         UINT32 cbBufSize,
2327         UINT32 *pcbBlobSize);
2328 
2329     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2330         IMFAudioMediaType *This,
2331         REFGUID guidKey,
2332         UINT8 **ppBuf,
2333         UINT32 *pcbSize);
2334 
2335     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2336         IMFAudioMediaType *This,
2337         REFGUID guidKey,
2338         REFIID riid,
2339         LPVOID *ppv);
2340 
2341     HRESULT (STDMETHODCALLTYPE *SetItem)(
2342         IMFAudioMediaType *This,
2343         REFGUID guidKey,
2344         REFPROPVARIANT Value);
2345 
2346     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2347         IMFAudioMediaType *This,
2348         REFGUID guidKey);
2349 
2350     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2351         IMFAudioMediaType *This);
2352 
2353     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2354         IMFAudioMediaType *This,
2355         REFGUID guidKey,
2356         UINT32 unValue);
2357 
2358     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2359         IMFAudioMediaType *This,
2360         REFGUID guidKey,
2361         UINT64 unValue);
2362 
2363     HRESULT (STDMETHODCALLTYPE *SetDouble)(
2364         IMFAudioMediaType *This,
2365         REFGUID guidKey,
2366         double fValue);
2367 
2368     HRESULT (STDMETHODCALLTYPE *SetGUID)(
2369         IMFAudioMediaType *This,
2370         REFGUID guidKey,
2371         REFGUID guidValue);
2372 
2373     HRESULT (STDMETHODCALLTYPE *SetString)(
2374         IMFAudioMediaType *This,
2375         REFGUID guidKey,
2376         LPCWSTR wszValue);
2377 
2378     HRESULT (STDMETHODCALLTYPE *SetBlob)(
2379         IMFAudioMediaType *This,
2380         REFGUID guidKey,
2381         const UINT8 *pBuf,
2382         UINT32 cbBufSize);
2383 
2384     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2385         IMFAudioMediaType *This,
2386         REFGUID guidKey,
2387         IUnknown *pUnknown);
2388 
2389     HRESULT (STDMETHODCALLTYPE *LockStore)(
2390         IMFAudioMediaType *This);
2391 
2392     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2393         IMFAudioMediaType *This);
2394 
2395     HRESULT (STDMETHODCALLTYPE *GetCount)(
2396         IMFAudioMediaType *This,
2397         UINT32 *pcItems);
2398 
2399     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2400         IMFAudioMediaType *This,
2401         UINT32 unIndex,
2402         GUID *pguidKey,
2403         PROPVARIANT *pValue);
2404 
2405     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2406         IMFAudioMediaType *This,
2407         IMFAttributes *pDest);
2408 
2409     /*** IMFMediaType methods ***/
2410     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
2411         IMFAudioMediaType *This,
2412         GUID *pguidMajorType);
2413 
2414     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
2415         IMFAudioMediaType *This,
2416         WINBOOL *pfCompressed);
2417 
2418     HRESULT (STDMETHODCALLTYPE *IsEqual)(
2419         IMFAudioMediaType *This,
2420         IMFMediaType *pIMediaType,
2421         DWORD *pdwFlags);
2422 
2423     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
2424         IMFAudioMediaType *This,
2425         GUID guidRepresentation,
2426         LPVOID *ppvRepresentation);
2427 
2428     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
2429         IMFAudioMediaType *This,
2430         GUID guidRepresentation,
2431         LPVOID pvRepresentation);
2432 
2433     /*** IMFAudioMediaType methods ***/
2434     const WAVEFORMATEX * (STDMETHODCALLTYPE *GetAudioFormat)(
2435         IMFAudioMediaType *This);
2436 
2437     END_INTERFACE
2438 } IMFAudioMediaTypeVtbl;
2439 
2440 interface IMFAudioMediaType {
2441     CONST_VTBL IMFAudioMediaTypeVtbl* lpVtbl;
2442 };
2443 
2444 #ifdef COBJMACROS
2445 #ifndef WIDL_C_INLINE_WRAPPERS
2446 /*** IUnknown methods ***/
2447 #define IMFAudioMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2448 #define IMFAudioMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
2449 #define IMFAudioMediaType_Release(This) (This)->lpVtbl->Release(This)
2450 /*** IMFAttributes methods ***/
2451 #define IMFAudioMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2452 #define IMFAudioMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2453 #define IMFAudioMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2454 #define IMFAudioMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2455 #define IMFAudioMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2456 #define IMFAudioMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2457 #define IMFAudioMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2458 #define IMFAudioMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2459 #define IMFAudioMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2460 #define IMFAudioMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2461 #define IMFAudioMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2462 #define IMFAudioMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2463 #define IMFAudioMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2464 #define IMFAudioMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2465 #define IMFAudioMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2466 #define IMFAudioMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2467 #define IMFAudioMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2468 #define IMFAudioMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2469 #define IMFAudioMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2470 #define IMFAudioMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2471 #define IMFAudioMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2472 #define IMFAudioMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2473 #define IMFAudioMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2474 #define IMFAudioMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2475 #define IMFAudioMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2476 #define IMFAudioMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
2477 #define IMFAudioMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2478 #define IMFAudioMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2479 #define IMFAudioMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2480 #define IMFAudioMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2481 /*** IMFMediaType methods ***/
2482 #define IMFAudioMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
2483 #define IMFAudioMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
2484 #define IMFAudioMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
2485 #define IMFAudioMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
2486 #define IMFAudioMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
2487 /*** IMFAudioMediaType methods ***/
2488 #define IMFAudioMediaType_GetAudioFormat(This) (This)->lpVtbl->GetAudioFormat(This)
2489 #else
2490 /*** IUnknown methods ***/
2491 static FORCEINLINE HRESULT IMFAudioMediaType_QueryInterface(IMFAudioMediaType* This,REFIID riid,void **ppvObject) {
2492     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2493 }
2494 static FORCEINLINE ULONG IMFAudioMediaType_AddRef(IMFAudioMediaType* This) {
2495     return This->lpVtbl->AddRef(This);
2496 }
2497 static FORCEINLINE ULONG IMFAudioMediaType_Release(IMFAudioMediaType* This) {
2498     return This->lpVtbl->Release(This);
2499 }
2500 /*** IMFAttributes methods ***/
2501 static FORCEINLINE HRESULT IMFAudioMediaType_GetItem(IMFAudioMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
2502     return This->lpVtbl->GetItem(This,guidKey,pValue);
2503 }
2504 static FORCEINLINE HRESULT IMFAudioMediaType_GetItemType(IMFAudioMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2505     return This->lpVtbl->GetItemType(This,guidKey,pType);
2506 }
2507 static FORCEINLINE HRESULT IMFAudioMediaType_CompareItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2508     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2509 }
2510 static FORCEINLINE HRESULT IMFAudioMediaType_Compare(IMFAudioMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2511     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2512 }
2513 static FORCEINLINE HRESULT IMFAudioMediaType_GetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *punValue) {
2514     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2515 }
2516 static FORCEINLINE HRESULT IMFAudioMediaType_GetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 *punValue) {
2517     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2518 }
2519 static FORCEINLINE HRESULT IMFAudioMediaType_GetDouble(IMFAudioMediaType* This,REFGUID guidKey,double *pfValue) {
2520     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2521 }
2522 static FORCEINLINE HRESULT IMFAudioMediaType_GetGUID(IMFAudioMediaType* This,REFGUID guidKey,GUID *pguidValue) {
2523     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2524 }
2525 static FORCEINLINE HRESULT IMFAudioMediaType_GetStringLength(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
2526     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2527 }
2528 static FORCEINLINE HRESULT IMFAudioMediaType_GetString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2529     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2530 }
2531 static FORCEINLINE HRESULT IMFAudioMediaType_GetAllocatedString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2532     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2533 }
2534 static FORCEINLINE HRESULT IMFAudioMediaType_GetBlobSize(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2535     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2536 }
2537 static FORCEINLINE HRESULT IMFAudioMediaType_GetBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2538     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2539 }
2540 static FORCEINLINE HRESULT IMFAudioMediaType_GetAllocatedBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2541     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2542 }
2543 static FORCEINLINE HRESULT IMFAudioMediaType_GetUnknown(IMFAudioMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2544     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2545 }
2546 static FORCEINLINE HRESULT IMFAudioMediaType_SetItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
2547     return This->lpVtbl->SetItem(This,guidKey,Value);
2548 }
2549 static FORCEINLINE HRESULT IMFAudioMediaType_DeleteItem(IMFAudioMediaType* This,REFGUID guidKey) {
2550     return This->lpVtbl->DeleteItem(This,guidKey);
2551 }
2552 static FORCEINLINE HRESULT IMFAudioMediaType_DeleteAllItems(IMFAudioMediaType* This) {
2553     return This->lpVtbl->DeleteAllItems(This);
2554 }
2555 static FORCEINLINE HRESULT IMFAudioMediaType_SetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 unValue) {
2556     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2557 }
2558 static FORCEINLINE HRESULT IMFAudioMediaType_SetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 unValue) {
2559     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2560 }
2561 static FORCEINLINE HRESULT IMFAudioMediaType_SetDouble(IMFAudioMediaType* This,REFGUID guidKey,double fValue) {
2562     return This->lpVtbl->SetDouble(This,guidKey,fValue);
2563 }
2564 static FORCEINLINE HRESULT IMFAudioMediaType_SetGUID(IMFAudioMediaType* This,REFGUID guidKey,REFGUID guidValue) {
2565     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2566 }
2567 static FORCEINLINE HRESULT IMFAudioMediaType_SetString(IMFAudioMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
2568     return This->lpVtbl->SetString(This,guidKey,wszValue);
2569 }
2570 static FORCEINLINE HRESULT IMFAudioMediaType_SetBlob(IMFAudioMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2571     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2572 }
2573 static FORCEINLINE HRESULT IMFAudioMediaType_SetUnknown(IMFAudioMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
2574     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2575 }
2576 static FORCEINLINE HRESULT IMFAudioMediaType_LockStore(IMFAudioMediaType* This) {
2577     return This->lpVtbl->LockStore(This);
2578 }
2579 static FORCEINLINE HRESULT IMFAudioMediaType_UnlockStore(IMFAudioMediaType* This) {
2580     return This->lpVtbl->UnlockStore(This);
2581 }
2582 static FORCEINLINE HRESULT IMFAudioMediaType_GetCount(IMFAudioMediaType* This,UINT32 *pcItems) {
2583     return This->lpVtbl->GetCount(This,pcItems);
2584 }
2585 static FORCEINLINE HRESULT IMFAudioMediaType_GetItemByIndex(IMFAudioMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2586     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2587 }
2588 static FORCEINLINE HRESULT IMFAudioMediaType_CopyAllItems(IMFAudioMediaType* This,IMFAttributes *pDest) {
2589     return This->lpVtbl->CopyAllItems(This,pDest);
2590 }
2591 /*** IMFMediaType methods ***/
2592 static FORCEINLINE HRESULT IMFAudioMediaType_GetMajorType(IMFAudioMediaType* This,GUID *pguidMajorType) {
2593     return This->lpVtbl->GetMajorType(This,pguidMajorType);
2594 }
2595 static FORCEINLINE HRESULT IMFAudioMediaType_IsCompressedFormat(IMFAudioMediaType* This,WINBOOL *pfCompressed) {
2596     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
2597 }
2598 static FORCEINLINE HRESULT IMFAudioMediaType_IsEqual(IMFAudioMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
2599     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
2600 }
2601 static FORCEINLINE HRESULT IMFAudioMediaType_GetRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
2602     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
2603 }
2604 static FORCEINLINE HRESULT IMFAudioMediaType_FreeRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
2605     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
2606 }
2607 /*** IMFAudioMediaType methods ***/
2608 static FORCEINLINE const WAVEFORMATEX * IMFAudioMediaType_GetAudioFormat(IMFAudioMediaType* This) {
2609     return This->lpVtbl->GetAudioFormat(This);
2610 }
2611 #endif
2612 #endif
2613 
2614 #endif
2615 
2616 
2617 #endif  /* __IMFAudioMediaType_INTERFACE_DEFINED__ */
2618 
2619 
2620 #ifndef _WINGDI_
2621 typedef DWORD RGBQUAD;
2622 
2623 typedef struct __WIDL_mfobjects_generated_name_00000014 {
2624     DWORD biSize;
2625     LONG biWidth;
2626     LONG biHeight;
2627     WORD biPlanes;
2628     WORD biBitCount;
2629     DWORD biCompression;
2630     DWORD biSizeImage;
2631     LONG biXPelsPerMeter;
2632     LONG biYPelsPerMeter;
2633     DWORD biClrUsed;
2634     DWORD biClrImportant;
2635 } BITMAPINFOHEADER;
2636 
2637 typedef struct __WIDL_mfobjects_generated_name_00000015 {
2638     BITMAPINFOHEADER bmiHeader;
2639     RGBQUAD bmiColors[1];
2640 } BITMAPINFO;
2641 #endif
2642 
2643 typedef struct __WIDL_mfobjects_generated_name_00000016 {
2644     GUID guidMajorType;
2645     GUID guidSubtype;
2646 } MFT_REGISTER_TYPE_INFO;
2647 #endif
2648 #ifndef _MFVIDEOFORMAT_
2649 #define _MFVIDEOFORMAT_
2650 
2651 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2652 typedef enum _MFVideoInterlaceMode {
2653     MFVideoInterlace_Unknown = 0,
2654     MFVideoInterlace_Progressive = 2,
2655     MFVideoInterlace_FieldInterleavedUpperFirst = 3,
2656     MFVideoInterlace_FieldInterleavedLowerFirst = 4,
2657     MFVideoInterlace_FieldSingleUpper = 5,
2658     MFVideoInterlace_FieldSingleLower = 6,
2659     MFVideoInterlace_MixedInterlaceOrProgressive = 7,
2660     MFVideoInterlace_Last = 8,
2661     MFVideoInterlace_ForceDWORD = 0x7fffffff
2662 } MFVideoInterlaceMode;
2663 
2664 #define MFVideoInterlace_FieldSingleUpperFirst MFVideoInterlace_FieldSingleUpper
2665 #define MFVideoInterlace_FieldSingleLowerFirst MFVideoInterlace_FieldSingleLower
2666 
2667 typedef enum _MFVideoTransferFunction {
2668     MFVideoTransFunc_Unknown = 0,
2669     MFVideoTransFunc_10 = 1,
2670     MFVideoTransFunc_18 = 2,
2671     MFVideoTransFunc_20 = 3,
2672     MFVideoTransFunc_22 = 4,
2673     MFVideoTransFunc_709 = 5,
2674     MFVideoTransFunc_240M = 6,
2675     MFVideoTransFunc_sRGB = 7,
2676     MFVideoTransFunc_28 = 8,
2677     MFVideoTransFunc_Last = 9,
2678     MFVideoTransFunc_ForceDWORD = 0x7fffffff
2679 } MFVideoTransferFunction;
2680 
2681 typedef enum _MFVideoPrimaries {
2682     MFVideoPrimaries_Unknown = 0,
2683     MFVideoPrimaries_reserved = 1,
2684     MFVideoPrimaries_BT709 = 2,
2685     MFVideoPrimaries_BT470_2_SysM = 3,
2686     MFVideoPrimaries_BT470_2_SysBG = 4,
2687     MFVideoPrimaries_SMPTE170M = 5,
2688     MFVideoPrimaries_SMPTE240M = 6,
2689     MFVideoPrimaries_EBU3213 = 7,
2690     MFVideoPrimaries_SMPTE_C = 8,
2691     MFVideoPrimaries_Last = 9,
2692     MFVideoPrimaries_ForceDWORD = 0x7fffffff
2693 } MFVideoPrimaries;
2694 
2695 typedef enum _MFVideoLighting {
2696     MFVideoLighting_Unknown = 0,
2697     MFVideoLighting_bright = 1,
2698     MFVideoLighting_office = 2,
2699     MFVideoLighting_dim = 3,
2700     MFVideoLighting_dark = 4,
2701     MFVideoLighting_Last = 5,
2702     MFVideoLighting_ForceDWORD = 0x7fffffff
2703 } MFVideoLighting;
2704 
2705 typedef enum _MFVideoTransferMatrix {
2706     MFVideoTransferMatrix_Unknown = 0,
2707     MFVideoTransferMatrix_BT709 = 1,
2708     MFVideoTransferMatrix_BT601 = 2,
2709     MFVideoTransferMatrix_SMPTE240M = 3,
2710     MFVideoTransferMatrix_BT2020_10 = 4,
2711     MFVideoTransferMatrix_BT2020_12 = 5,
2712     MFVideoTransferMatrix_Last = 6,
2713     MFVideoTransferMatrix_ForceDWORD = 0x7fffffff
2714 } MFVideoTransferMatrix;
2715 
2716 typedef enum _MFVideoChromaSubsampling {
2717     MFVideoChromaSubsampling_Unknown = 0,
2718     MFVideoChromaSubsampling_ProgressiveChroma = 0x8,
2719     MFVideoChromaSubsampling_Horizontally_Cosited = 0x4,
2720     MFVideoChromaSubsampling_Vertically_Cosited = 0x2,
2721     MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1,
2722     MFVideoChromaSubsampling_MPEG2 = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
2723     MFVideoChromaSubsampling_MPEG1 = MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
2724     MFVideoChromaSubsampling_DV_PAL = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited,
2725     MFVideoChromaSubsampling_Cosited = (MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited) | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
2726     MFVideoChromaSubsampling_Last = MFVideoChromaSubsampling_Cosited + 1,
2727     MFVideoChromaSubsampling_ForceDWORD = 0x7fffffff
2728 } MFVideoChromaSubsampling;
2729 
2730 typedef enum _MFNominalRange {
2731     MFNominalRange_Unknown = 0,
2732     MFNominalRange_Normal = 1,
2733     MFNominalRange_Wide = 2,
2734     MFNominalRange_0_255 = 1,
2735     MFNominalRange_16_235 = 2,
2736     MFNominalRange_48_208 = 3,
2737     MFNominalRange_Last = 4,
2738     MFNominalRange_ForceDWORD = 0x7fffffff
2739 } MFNominalRange;
2740 #endif
2741 
2742 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2743 typedef enum _MFVideoFlags {
2744     MFVideoFlag_PAD_TO_Mask = 0x1 | 0x2,
2745     MFVideoFlag_PAD_TO_None = 0 * 0x1,
2746     MFVideoFlag_PAD_TO_4x3 = 1 * 0x1,
2747     MFVideoFlag_PAD_TO_16x9 = 2 * 0x1,
2748     MFVideoFlag_SrcContentHintMask = (0x4 | 0x8) | 0x10,
2749     MFVideoFlag_SrcContentHintNone = 0 * 0x4,
2750     MFVideoFlag_SrcContentHint16x9 = 1 * 0x4,
2751     MFVideoFlag_SrcContentHint235_1 = 2 * 0x4,
2752     MFVideoFlag_AnalogProtected = 0x20,
2753     MFVideoFlag_DigitallyProtected = 0x40,
2754     MFVideoFlag_ProgressiveContent = 0x80,
2755     MFVideoFlag_FieldRepeatCountMask = (0x100 | 0x200) | 0x400,
2756     MFVideoFlag_FieldRepeatCountShift = 8,
2757     MFVideoFlag_ProgressiveSeqReset = 0x800,
2758     MFVideoFlag_PanScanEnabled = 0x20000,
2759     MFVideoFlag_LowerFieldFirst = 0x40000,
2760     MFVideoFlag_BottomUpLinearRep = 0x80000,
2761     MFVideoFlags_DXVASurface = 0x100000,
2762     MFVideoFlags_RenderTargetSurface = 0x400000,
2763     MFVideoFlags_ForceQWORD = 0x7fffffff
2764 } MFVideoFlags;
2765 #endif
2766 
2767 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2768 typedef struct _MFRatio {
2769     DWORD Numerator;
2770     DWORD Denominator;
2771 } MFRatio;
2772 
2773 typedef struct _MFOffset {
2774     WORD fract;
2775     short value;
2776 } MFOffset;
2777 typedef struct _MFVideoArea {
2778     MFOffset OffsetX;
2779     MFOffset OffsetY;
2780     SIZE Area;
2781 } MFVideoArea;
2782 #endif
2783 
2784 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2785 typedef struct _MFVideoInfo {
2786     DWORD dwWidth;
2787     DWORD dwHeight;
2788     MFRatio PixelAspectRatio;
2789     MFVideoChromaSubsampling SourceChromaSubsampling;
2790     MFVideoInterlaceMode InterlaceMode;
2791     MFVideoTransferFunction TransferFunction;
2792     MFVideoPrimaries ColorPrimaries;
2793     MFVideoTransferMatrix TransferMatrix;
2794     MFVideoLighting SourceLighting;
2795     MFRatio FramesPerSecond;
2796     MFNominalRange NominalRange;
2797     MFVideoArea GeometricAperture;
2798     MFVideoArea MinimumDisplayAperture;
2799     MFVideoArea PanScanAperture;
2800     UINT64 VideoFlags;
2801 } MFVideoInfo;
2802 #endif
2803 
2804 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2805 typedef struct __MFAYUVSample {
2806     BYTE bCrValue;
2807     BYTE bCbValue;
2808     BYTE bYValue;
2809     BYTE bSampleAlpha8;
2810 } MFAYUVSample;
2811 
2812 typedef struct _MFARGB {
2813     BYTE rgbBlue;
2814     BYTE rgbGreen;
2815     BYTE rgbRed;
2816     BYTE rgbAlpha;
2817 } MFARGB;
2818 
2819 typedef union _MFPaletteEntry {
2820     MFARGB ARGB;
2821     MFAYUVSample AYCbCr;
2822 } MFPaletteEntry;
2823 #endif
2824 
2825 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2826 typedef struct _MFVideoSurfaceInfo {
2827     DWORD Format;
2828     DWORD PaletteEntries;
2829     MFPaletteEntry Palette[1];
2830 } MFVideoSurfaceInfo;
2831 
2832 typedef struct _MFVideoCompressedInfo {
2833     LONGLONG AvgBitrate;
2834     LONGLONG AvgBitErrorRate;
2835     DWORD MaxKeyFrameSpacing;
2836 } MFVideoCompressedInfo;
2837 
2838 typedef struct _MFVIDEOFORMAT {
2839     DWORD dwSize;
2840     MFVideoInfo videoInfo;
2841     GUID guidFormat;
2842     MFVideoCompressedInfo compressedInfo;
2843     MFVideoSurfaceInfo surfaceInfo;
2844 } MFVIDEOFORMAT;
2845 
2846 typedef enum _MFStandardVideoFormat {
2847     MFStdVideoFormat_reserved = 0,
2848     MFStdVideoFormat_NTSC = 1,
2849     MFStdVideoFormat_PAL = 2,
2850     MFStdVideoFormat_DVD_NTSC = 3,
2851     MFStdVideoFormat_DVD_PAL = 4,
2852     MFStdVideoFormat_DV_PAL = 5,
2853     MFStdVideoFormat_DV_NTSC = 6,
2854     MFStdVideoFormat_ATSC_SD480i = 7,
2855     MFStdVideoFormat_ATSC_HD1080i = 8,
2856     MFStdVideoFormat_ATSC_HD720p = 9
2857 } MFStandardVideoFormat;
2858 #endif
2859 #endif
2860 
2861 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2862 /*****************************************************************************
2863  * IMFVideoMediaType interface
2864  */
2865 #ifndef __IMFVideoMediaType_INTERFACE_DEFINED__
2866 #define __IMFVideoMediaType_INTERFACE_DEFINED__
2867 
2868 DEFINE_GUID(IID_IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90);
2869 #if defined(__cplusplus) && !defined(CINTERFACE)
2870 MIDL_INTERFACE("b99f381f-a8f9-47a2-a5af-ca3a225a3890")
2871 IMFVideoMediaType : public IMFMediaType
2872 {
2873     virtual const MFVIDEOFORMAT * STDMETHODCALLTYPE GetVideoFormat(
2874         ) = 0;
2875 
2876     virtual HRESULT STDMETHODCALLTYPE GetVideoRepresentation(
2877         GUID guidRepresentation,
2878         LPVOID *ppvRepresentation,
2879         LONG lStride) = 0;
2880 
2881 };
2882 #ifdef __CRT_UUID_DECL
2883 __CRT_UUID_DECL(IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90)
2884 #endif
2885 #else
2886 typedef struct IMFVideoMediaTypeVtbl {
2887     BEGIN_INTERFACE
2888 
2889     /*** IUnknown methods ***/
2890     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2891         IMFVideoMediaType *This,
2892         REFIID riid,
2893         void **ppvObject);
2894 
2895     ULONG (STDMETHODCALLTYPE *AddRef)(
2896         IMFVideoMediaType *This);
2897 
2898     ULONG (STDMETHODCALLTYPE *Release)(
2899         IMFVideoMediaType *This);
2900 
2901     /*** IMFAttributes methods ***/
2902     HRESULT (STDMETHODCALLTYPE *GetItem)(
2903         IMFVideoMediaType *This,
2904         REFGUID guidKey,
2905         PROPVARIANT *pValue);
2906 
2907     HRESULT (STDMETHODCALLTYPE *GetItemType)(
2908         IMFVideoMediaType *This,
2909         REFGUID guidKey,
2910         MF_ATTRIBUTE_TYPE *pType);
2911 
2912     HRESULT (STDMETHODCALLTYPE *CompareItem)(
2913         IMFVideoMediaType *This,
2914         REFGUID guidKey,
2915         REFPROPVARIANT Value,
2916         WINBOOL *pbResult);
2917 
2918     HRESULT (STDMETHODCALLTYPE *Compare)(
2919         IMFVideoMediaType *This,
2920         IMFAttributes *pTheirs,
2921         MF_ATTRIBUTES_MATCH_TYPE MatchType,
2922         WINBOOL *pbResult);
2923 
2924     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
2925         IMFVideoMediaType *This,
2926         REFGUID guidKey,
2927         UINT32 *punValue);
2928 
2929     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
2930         IMFVideoMediaType *This,
2931         REFGUID guidKey,
2932         UINT64 *punValue);
2933 
2934     HRESULT (STDMETHODCALLTYPE *GetDouble)(
2935         IMFVideoMediaType *This,
2936         REFGUID guidKey,
2937         double *pfValue);
2938 
2939     HRESULT (STDMETHODCALLTYPE *GetGUID)(
2940         IMFVideoMediaType *This,
2941         REFGUID guidKey,
2942         GUID *pguidValue);
2943 
2944     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2945         IMFVideoMediaType *This,
2946         REFGUID guidKey,
2947         UINT32 *pcchLength);
2948 
2949     HRESULT (STDMETHODCALLTYPE *GetString)(
2950         IMFVideoMediaType *This,
2951         REFGUID guidKey,
2952         LPWSTR pwszValue,
2953         UINT32 cchBufSize,
2954         UINT32 *pcchLength);
2955 
2956     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2957         IMFVideoMediaType *This,
2958         REFGUID guidKey,
2959         LPWSTR *ppwszValue,
2960         UINT32 *pcchLength);
2961 
2962     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2963         IMFVideoMediaType *This,
2964         REFGUID guidKey,
2965         UINT32 *pcbBlobSize);
2966 
2967     HRESULT (STDMETHODCALLTYPE *GetBlob)(
2968         IMFVideoMediaType *This,
2969         REFGUID guidKey,
2970         UINT8 *pBuf,
2971         UINT32 cbBufSize,
2972         UINT32 *pcbBlobSize);
2973 
2974     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2975         IMFVideoMediaType *This,
2976         REFGUID guidKey,
2977         UINT8 **ppBuf,
2978         UINT32 *pcbSize);
2979 
2980     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2981         IMFVideoMediaType *This,
2982         REFGUID guidKey,
2983         REFIID riid,
2984         LPVOID *ppv);
2985 
2986     HRESULT (STDMETHODCALLTYPE *SetItem)(
2987         IMFVideoMediaType *This,
2988         REFGUID guidKey,
2989         REFPROPVARIANT Value);
2990 
2991     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2992         IMFVideoMediaType *This,
2993         REFGUID guidKey);
2994 
2995     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2996         IMFVideoMediaType *This);
2997 
2998     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2999         IMFVideoMediaType *This,
3000         REFGUID guidKey,
3001         UINT32 unValue);
3002 
3003     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
3004         IMFVideoMediaType *This,
3005         REFGUID guidKey,
3006         UINT64 unValue);
3007 
3008     HRESULT (STDMETHODCALLTYPE *SetDouble)(
3009         IMFVideoMediaType *This,
3010         REFGUID guidKey,
3011         double fValue);
3012 
3013     HRESULT (STDMETHODCALLTYPE *SetGUID)(
3014         IMFVideoMediaType *This,
3015         REFGUID guidKey,
3016         REFGUID guidValue);
3017 
3018     HRESULT (STDMETHODCALLTYPE *SetString)(
3019         IMFVideoMediaType *This,
3020         REFGUID guidKey,
3021         LPCWSTR wszValue);
3022 
3023     HRESULT (STDMETHODCALLTYPE *SetBlob)(
3024         IMFVideoMediaType *This,
3025         REFGUID guidKey,
3026         const UINT8 *pBuf,
3027         UINT32 cbBufSize);
3028 
3029     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
3030         IMFVideoMediaType *This,
3031         REFGUID guidKey,
3032         IUnknown *pUnknown);
3033 
3034     HRESULT (STDMETHODCALLTYPE *LockStore)(
3035         IMFVideoMediaType *This);
3036 
3037     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
3038         IMFVideoMediaType *This);
3039 
3040     HRESULT (STDMETHODCALLTYPE *GetCount)(
3041         IMFVideoMediaType *This,
3042         UINT32 *pcItems);
3043 
3044     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
3045         IMFVideoMediaType *This,
3046         UINT32 unIndex,
3047         GUID *pguidKey,
3048         PROPVARIANT *pValue);
3049 
3050     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
3051         IMFVideoMediaType *This,
3052         IMFAttributes *pDest);
3053 
3054     /*** IMFMediaType methods ***/
3055     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
3056         IMFVideoMediaType *This,
3057         GUID *pguidMajorType);
3058 
3059     HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
3060         IMFVideoMediaType *This,
3061         WINBOOL *pfCompressed);
3062 
3063     HRESULT (STDMETHODCALLTYPE *IsEqual)(
3064         IMFVideoMediaType *This,
3065         IMFMediaType *pIMediaType,
3066         DWORD *pdwFlags);
3067 
3068     HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
3069         IMFVideoMediaType *This,
3070         GUID guidRepresentation,
3071         LPVOID *ppvRepresentation);
3072 
3073     HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
3074         IMFVideoMediaType *This,
3075         GUID guidRepresentation,
3076         LPVOID pvRepresentation);
3077 
3078     /*** IMFVideoMediaType methods ***/
3079     const MFVIDEOFORMAT * (STDMETHODCALLTYPE *GetVideoFormat)(
3080         IMFVideoMediaType *This);
3081 
3082     HRESULT (STDMETHODCALLTYPE *GetVideoRepresentation)(
3083         IMFVideoMediaType *This,
3084         GUID guidRepresentation,
3085         LPVOID *ppvRepresentation,
3086         LONG lStride);
3087 
3088     END_INTERFACE
3089 } IMFVideoMediaTypeVtbl;
3090 
3091 interface IMFVideoMediaType {
3092     CONST_VTBL IMFVideoMediaTypeVtbl* lpVtbl;
3093 };
3094 
3095 #ifdef COBJMACROS
3096 #ifndef WIDL_C_INLINE_WRAPPERS
3097 /*** IUnknown methods ***/
3098 #define IMFVideoMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3099 #define IMFVideoMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
3100 #define IMFVideoMediaType_Release(This) (This)->lpVtbl->Release(This)
3101 /*** IMFAttributes methods ***/
3102 #define IMFVideoMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
3103 #define IMFVideoMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
3104 #define IMFVideoMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
3105 #define IMFVideoMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
3106 #define IMFVideoMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
3107 #define IMFVideoMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
3108 #define IMFVideoMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
3109 #define IMFVideoMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
3110 #define IMFVideoMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
3111 #define IMFVideoMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
3112 #define IMFVideoMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
3113 #define IMFVideoMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
3114 #define IMFVideoMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
3115 #define IMFVideoMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
3116 #define IMFVideoMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
3117 #define IMFVideoMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
3118 #define IMFVideoMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
3119 #define IMFVideoMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
3120 #define IMFVideoMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
3121 #define IMFVideoMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
3122 #define IMFVideoMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
3123 #define IMFVideoMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
3124 #define IMFVideoMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
3125 #define IMFVideoMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
3126 #define IMFVideoMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
3127 #define IMFVideoMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
3128 #define IMFVideoMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
3129 #define IMFVideoMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
3130 #define IMFVideoMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
3131 #define IMFVideoMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
3132 /*** IMFMediaType methods ***/
3133 #define IMFVideoMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
3134 #define IMFVideoMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
3135 #define IMFVideoMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
3136 #define IMFVideoMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
3137 #define IMFVideoMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
3138 /*** IMFVideoMediaType methods ***/
3139 #define IMFVideoMediaType_GetVideoFormat(This) (This)->lpVtbl->GetVideoFormat(This)
3140 #define IMFVideoMediaType_GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride) (This)->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride)
3141 #else
3142 /*** IUnknown methods ***/
3143 static FORCEINLINE HRESULT IMFVideoMediaType_QueryInterface(IMFVideoMediaType* This,REFIID riid,void **ppvObject) {
3144     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3145 }
3146 static FORCEINLINE ULONG IMFVideoMediaType_AddRef(IMFVideoMediaType* This) {
3147     return This->lpVtbl->AddRef(This);
3148 }
3149 static FORCEINLINE ULONG IMFVideoMediaType_Release(IMFVideoMediaType* This) {
3150     return This->lpVtbl->Release(This);
3151 }
3152 /*** IMFAttributes methods ***/
3153 static FORCEINLINE HRESULT IMFVideoMediaType_GetItem(IMFVideoMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
3154     return This->lpVtbl->GetItem(This,guidKey,pValue);
3155 }
3156 static FORCEINLINE HRESULT IMFVideoMediaType_GetItemType(IMFVideoMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
3157     return This->lpVtbl->GetItemType(This,guidKey,pType);
3158 }
3159 static FORCEINLINE HRESULT IMFVideoMediaType_CompareItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
3160     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
3161 }
3162 static FORCEINLINE HRESULT IMFVideoMediaType_Compare(IMFVideoMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
3163     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
3164 }
3165 static FORCEINLINE HRESULT IMFVideoMediaType_GetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *punValue) {
3166     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
3167 }
3168 static FORCEINLINE HRESULT IMFVideoMediaType_GetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 *punValue) {
3169     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
3170 }
3171 static FORCEINLINE HRESULT IMFVideoMediaType_GetDouble(IMFVideoMediaType* This,REFGUID guidKey,double *pfValue) {
3172     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
3173 }
3174 static FORCEINLINE HRESULT IMFVideoMediaType_GetGUID(IMFVideoMediaType* This,REFGUID guidKey,GUID *pguidValue) {
3175     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
3176 }
3177 static FORCEINLINE HRESULT IMFVideoMediaType_GetStringLength(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
3178     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
3179 }
3180 static FORCEINLINE HRESULT IMFVideoMediaType_GetString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
3181     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
3182 }
3183 static FORCEINLINE HRESULT IMFVideoMediaType_GetAllocatedString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
3184     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
3185 }
3186 static FORCEINLINE HRESULT IMFVideoMediaType_GetBlobSize(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
3187     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
3188 }
3189 static FORCEINLINE HRESULT IMFVideoMediaType_GetBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
3190     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
3191 }
3192 static FORCEINLINE HRESULT IMFVideoMediaType_GetAllocatedBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
3193     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
3194 }
3195 static FORCEINLINE HRESULT IMFVideoMediaType_GetUnknown(IMFVideoMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
3196     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
3197 }
3198 static FORCEINLINE HRESULT IMFVideoMediaType_SetItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
3199     return This->lpVtbl->SetItem(This,guidKey,Value);
3200 }
3201 static FORCEINLINE HRESULT IMFVideoMediaType_DeleteItem(IMFVideoMediaType* This,REFGUID guidKey) {
3202     return This->lpVtbl->DeleteItem(This,guidKey);
3203 }
3204 static FORCEINLINE HRESULT IMFVideoMediaType_DeleteAllItems(IMFVideoMediaType* This) {
3205     return This->lpVtbl->DeleteAllItems(This);
3206 }
3207 static FORCEINLINE HRESULT IMFVideoMediaType_SetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 unValue) {
3208     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
3209 }
3210 static FORCEINLINE HRESULT IMFVideoMediaType_SetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 unValue) {
3211     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
3212 }
3213 static FORCEINLINE HRESULT IMFVideoMediaType_SetDouble(IMFVideoMediaType* This,REFGUID guidKey,double fValue) {
3214     return This->lpVtbl->SetDouble(This,guidKey,fValue);
3215 }
3216 static FORCEINLINE HRESULT IMFVideoMediaType_SetGUID(IMFVideoMediaType* This,REFGUID guidKey,REFGUID guidValue) {
3217     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
3218 }
3219 static FORCEINLINE HRESULT IMFVideoMediaType_SetString(IMFVideoMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
3220     return This->lpVtbl->SetString(This,guidKey,wszValue);
3221 }
3222 static FORCEINLINE HRESULT IMFVideoMediaType_SetBlob(IMFVideoMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
3223     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
3224 }
3225 static FORCEINLINE HRESULT IMFVideoMediaType_SetUnknown(IMFVideoMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
3226     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
3227 }
3228 static FORCEINLINE HRESULT IMFVideoMediaType_LockStore(IMFVideoMediaType* This) {
3229     return This->lpVtbl->LockStore(This);
3230 }
3231 static FORCEINLINE HRESULT IMFVideoMediaType_UnlockStore(IMFVideoMediaType* This) {
3232     return This->lpVtbl->UnlockStore(This);
3233 }
3234 static FORCEINLINE HRESULT IMFVideoMediaType_GetCount(IMFVideoMediaType* This,UINT32 *pcItems) {
3235     return This->lpVtbl->GetCount(This,pcItems);
3236 }
3237 static FORCEINLINE HRESULT IMFVideoMediaType_GetItemByIndex(IMFVideoMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
3238     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
3239 }
3240 static FORCEINLINE HRESULT IMFVideoMediaType_CopyAllItems(IMFVideoMediaType* This,IMFAttributes *pDest) {
3241     return This->lpVtbl->CopyAllItems(This,pDest);
3242 }
3243 /*** IMFMediaType methods ***/
3244 static FORCEINLINE HRESULT IMFVideoMediaType_GetMajorType(IMFVideoMediaType* This,GUID *pguidMajorType) {
3245     return This->lpVtbl->GetMajorType(This,pguidMajorType);
3246 }
3247 static FORCEINLINE HRESULT IMFVideoMediaType_IsCompressedFormat(IMFVideoMediaType* This,WINBOOL *pfCompressed) {
3248     return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
3249 }
3250 static FORCEINLINE HRESULT IMFVideoMediaType_IsEqual(IMFVideoMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
3251     return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
3252 }
3253 static FORCEINLINE HRESULT IMFVideoMediaType_GetRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
3254     return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
3255 }
3256 static FORCEINLINE HRESULT IMFVideoMediaType_FreeRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
3257     return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
3258 }
3259 /*** IMFVideoMediaType methods ***/
3260 static FORCEINLINE const MFVIDEOFORMAT * IMFVideoMediaType_GetVideoFormat(IMFVideoMediaType* This) {
3261     return This->lpVtbl->GetVideoFormat(This);
3262 }
3263 static FORCEINLINE HRESULT IMFVideoMediaType_GetVideoRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation,LONG lStride) {
3264     return This->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride);
3265 }
3266 #endif
3267 #endif
3268 
3269 #endif
3270 
3271 
3272 #endif  /* __IMFVideoMediaType_INTERFACE_DEFINED__ */
3273 
3274 #endif
3275 
3276 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
3277 /*****************************************************************************
3278  * IMFAsyncResult interface
3279  */
3280 #ifndef __IMFAsyncResult_INTERFACE_DEFINED__
3281 #define __IMFAsyncResult_INTERFACE_DEFINED__
3282 
3283 DEFINE_GUID(IID_IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6);
3284 #if defined(__cplusplus) && !defined(CINTERFACE)
3285 MIDL_INTERFACE("ac6b7889-0740-4d51-8619-905994a55cc6")
3286 IMFAsyncResult : public IUnknown
3287 {
3288     virtual HRESULT STDMETHODCALLTYPE GetState(
3289         IUnknown **ppunkState) = 0;
3290 
3291     virtual HRESULT STDMETHODCALLTYPE GetStatus(
3292         ) = 0;
3293 
3294     virtual HRESULT STDMETHODCALLTYPE SetStatus(
3295         HRESULT hrStatus) = 0;
3296 
3297     virtual HRESULT STDMETHODCALLTYPE GetObject(
3298         IUnknown **ppObject) = 0;
3299 
3300     virtual IUnknown * STDMETHODCALLTYPE GetStateNoAddRef(
3301         ) = 0;
3302 
3303 };
3304 #ifdef __CRT_UUID_DECL
3305 __CRT_UUID_DECL(IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6)
3306 #endif
3307 #else
3308 typedef struct IMFAsyncResultVtbl {
3309     BEGIN_INTERFACE
3310 
3311     /*** IUnknown methods ***/
3312     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3313         IMFAsyncResult *This,
3314         REFIID riid,
3315         void **ppvObject);
3316 
3317     ULONG (STDMETHODCALLTYPE *AddRef)(
3318         IMFAsyncResult *This);
3319 
3320     ULONG (STDMETHODCALLTYPE *Release)(
3321         IMFAsyncResult *This);
3322 
3323     /*** IMFAsyncResult methods ***/
3324     HRESULT (STDMETHODCALLTYPE *GetState)(
3325         IMFAsyncResult *This,
3326         IUnknown **ppunkState);
3327 
3328     HRESULT (STDMETHODCALLTYPE *GetStatus)(
3329         IMFAsyncResult *This);
3330 
3331     HRESULT (STDMETHODCALLTYPE *SetStatus)(
3332         IMFAsyncResult *This,
3333         HRESULT hrStatus);
3334 
3335     HRESULT (STDMETHODCALLTYPE *GetObject)(
3336         IMFAsyncResult *This,
3337         IUnknown **ppObject);
3338 
3339     IUnknown * (STDMETHODCALLTYPE *GetStateNoAddRef)(
3340         IMFAsyncResult *This);
3341 
3342     END_INTERFACE
3343 } IMFAsyncResultVtbl;
3344 
3345 interface IMFAsyncResult {
3346     CONST_VTBL IMFAsyncResultVtbl* lpVtbl;
3347 };
3348 
3349 #ifdef COBJMACROS
3350 #ifndef WIDL_C_INLINE_WRAPPERS
3351 /*** IUnknown methods ***/
3352 #define IMFAsyncResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3353 #define IMFAsyncResult_AddRef(This) (This)->lpVtbl->AddRef(This)
3354 #define IMFAsyncResult_Release(This) (This)->lpVtbl->Release(This)
3355 /*** IMFAsyncResult methods ***/
3356 #define IMFAsyncResult_GetState(This,ppunkState) (This)->lpVtbl->GetState(This,ppunkState)
3357 #define IMFAsyncResult_GetStatus(This) (This)->lpVtbl->GetStatus(This)
3358 #define IMFAsyncResult_SetStatus(This,hrStatus) (This)->lpVtbl->SetStatus(This,hrStatus)
3359 #define IMFAsyncResult_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
3360 #define IMFAsyncResult_GetStateNoAddRef(This) (This)->lpVtbl->GetStateNoAddRef(This)
3361 #else
3362 /*** IUnknown methods ***/
3363 static FORCEINLINE HRESULT IMFAsyncResult_QueryInterface(IMFAsyncResult* This,REFIID riid,void **ppvObject) {
3364     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3365 }
3366 static FORCEINLINE ULONG IMFAsyncResult_AddRef(IMFAsyncResult* This) {
3367     return This->lpVtbl->AddRef(This);
3368 }
3369 static FORCEINLINE ULONG IMFAsyncResult_Release(IMFAsyncResult* This) {
3370     return This->lpVtbl->Release(This);
3371 }
3372 /*** IMFAsyncResult methods ***/
3373 static FORCEINLINE HRESULT IMFAsyncResult_GetState(IMFAsyncResult* This,IUnknown **ppunkState) {
3374     return This->lpVtbl->GetState(This,ppunkState);
3375 }
3376 static FORCEINLINE HRESULT IMFAsyncResult_GetStatus(IMFAsyncResult* This) {
3377     return This->lpVtbl->GetStatus(This);
3378 }
3379 static FORCEINLINE HRESULT IMFAsyncResult_SetStatus(IMFAsyncResult* This,HRESULT hrStatus) {
3380     return This->lpVtbl->SetStatus(This,hrStatus);
3381 }
3382 static FORCEINLINE HRESULT IMFAsyncResult_GetObject(IMFAsyncResult* This,IUnknown **ppObject) {
3383     return This->lpVtbl->GetObject(This,ppObject);
3384 }
3385 static FORCEINLINE IUnknown * IMFAsyncResult_GetStateNoAddRef(IMFAsyncResult* This) {
3386     return This->lpVtbl->GetStateNoAddRef(This);
3387 }
3388 #endif
3389 #endif
3390 
3391 #endif
3392 
3393 
3394 #endif  /* __IMFAsyncResult_INTERFACE_DEFINED__ */
3395 
3396 
3397 /*****************************************************************************
3398  * IMFAsyncCallback interface
3399  */
3400 #ifndef __IMFAsyncCallback_INTERFACE_DEFINED__
3401 #define __IMFAsyncCallback_INTERFACE_DEFINED__
3402 
3403 DEFINE_GUID(IID_IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
3404 #if defined(__cplusplus) && !defined(CINTERFACE)
3405 MIDL_INTERFACE("a27003cf-2354-4f2a-8d6a-ab7cff15437e")
3406 IMFAsyncCallback : public IUnknown
3407 {
3408     virtual HRESULT STDMETHODCALLTYPE GetParameters(
3409         DWORD *pdwFlags,
3410         DWORD *pdwQueue) = 0;
3411 
3412     virtual HRESULT STDMETHODCALLTYPE Invoke(
3413         IMFAsyncResult *pAsyncResult) = 0;
3414 
3415 };
3416 #ifdef __CRT_UUID_DECL
3417 __CRT_UUID_DECL(IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
3418 #endif
3419 #else
3420 typedef struct IMFAsyncCallbackVtbl {
3421     BEGIN_INTERFACE
3422 
3423     /*** IUnknown methods ***/
3424     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3425         IMFAsyncCallback *This,
3426         REFIID riid,
3427         void **ppvObject);
3428 
3429     ULONG (STDMETHODCALLTYPE *AddRef)(
3430         IMFAsyncCallback *This);
3431 
3432     ULONG (STDMETHODCALLTYPE *Release)(
3433         IMFAsyncCallback *This);
3434 
3435     /*** IMFAsyncCallback methods ***/
3436     HRESULT (STDMETHODCALLTYPE *GetParameters)(
3437         IMFAsyncCallback *This,
3438         DWORD *pdwFlags,
3439         DWORD *pdwQueue);
3440 
3441     HRESULT (STDMETHODCALLTYPE *Invoke)(
3442         IMFAsyncCallback *This,
3443         IMFAsyncResult *pAsyncResult);
3444 
3445     END_INTERFACE
3446 } IMFAsyncCallbackVtbl;
3447 
3448 interface IMFAsyncCallback {
3449     CONST_VTBL IMFAsyncCallbackVtbl* lpVtbl;
3450 };
3451 
3452 #ifdef COBJMACROS
3453 #ifndef WIDL_C_INLINE_WRAPPERS
3454 /*** IUnknown methods ***/
3455 #define IMFAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3456 #define IMFAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
3457 #define IMFAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
3458 /*** IMFAsyncCallback methods ***/
3459 #define IMFAsyncCallback_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
3460 #define IMFAsyncCallback_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
3461 #else
3462 /*** IUnknown methods ***/
3463 static FORCEINLINE HRESULT IMFAsyncCallback_QueryInterface(IMFAsyncCallback* This,REFIID riid,void **ppvObject) {
3464     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3465 }
3466 static FORCEINLINE ULONG IMFAsyncCallback_AddRef(IMFAsyncCallback* This) {
3467     return This->lpVtbl->AddRef(This);
3468 }
3469 static FORCEINLINE ULONG IMFAsyncCallback_Release(IMFAsyncCallback* This) {
3470     return This->lpVtbl->Release(This);
3471 }
3472 /*** IMFAsyncCallback methods ***/
3473 static FORCEINLINE HRESULT IMFAsyncCallback_GetParameters(IMFAsyncCallback* This,DWORD *pdwFlags,DWORD *pdwQueue) {
3474     return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
3475 }
3476 static FORCEINLINE HRESULT IMFAsyncCallback_Invoke(IMFAsyncCallback* This,IMFAsyncResult *pAsyncResult) {
3477     return This->lpVtbl->Invoke(This,pAsyncResult);
3478 }
3479 #endif
3480 #endif
3481 
3482 #endif
3483 
3484 
3485 #endif  /* __IMFAsyncCallback_INTERFACE_DEFINED__ */
3486 
3487 #endif
3488 
3489 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3490 /*****************************************************************************
3491  * IMFAsyncCallbackLogging interface
3492  */
3493 #ifndef __IMFAsyncCallbackLogging_INTERFACE_DEFINED__
3494 #define __IMFAsyncCallbackLogging_INTERFACE_DEFINED__
3495 
3496 DEFINE_GUID(IID_IMFAsyncCallbackLogging, 0xc7a4dca1, 0xf5f0, 0x47b6, 0xb9,0x2b, 0xbf,0x01,0x06,0xd2,0x57,0x91);
3497 #if defined(__cplusplus) && !defined(CINTERFACE)
3498 MIDL_INTERFACE("c7a4dca1-f5f0-47b6-b92b-bf0106d25791")
3499 IMFAsyncCallbackLogging : public IMFAsyncCallback
3500 {
3501     virtual void * STDMETHODCALLTYPE GetObjectPointer(
3502         ) = 0;
3503 
3504     virtual DWORD STDMETHODCALLTYPE GetObjectTag(
3505         ) = 0;
3506 
3507 };
3508 #ifdef __CRT_UUID_DECL
3509 __CRT_UUID_DECL(IMFAsyncCallbackLogging, 0xc7a4dca1, 0xf5f0, 0x47b6, 0xb9,0x2b, 0xbf,0x01,0x06,0xd2,0x57,0x91)
3510 #endif
3511 #else
3512 typedef struct IMFAsyncCallbackLoggingVtbl {
3513     BEGIN_INTERFACE
3514 
3515     /*** IUnknown methods ***/
3516     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3517         IMFAsyncCallbackLogging *This,
3518         REFIID riid,
3519         void **ppvObject);
3520 
3521     ULONG (STDMETHODCALLTYPE *AddRef)(
3522         IMFAsyncCallbackLogging *This);
3523 
3524     ULONG (STDMETHODCALLTYPE *Release)(
3525         IMFAsyncCallbackLogging *This);
3526 
3527     /*** IMFAsyncCallback methods ***/
3528     HRESULT (STDMETHODCALLTYPE *GetParameters)(
3529         IMFAsyncCallbackLogging *This,
3530         DWORD *pdwFlags,
3531         DWORD *pdwQueue);
3532 
3533     HRESULT (STDMETHODCALLTYPE *Invoke)(
3534         IMFAsyncCallbackLogging *This,
3535         IMFAsyncResult *pAsyncResult);
3536 
3537     /*** IMFAsyncCallbackLogging methods ***/
3538     void * (STDMETHODCALLTYPE *GetObjectPointer)(
3539         IMFAsyncCallbackLogging *This);
3540 
3541     DWORD (STDMETHODCALLTYPE *GetObjectTag)(
3542         IMFAsyncCallbackLogging *This);
3543 
3544     END_INTERFACE
3545 } IMFAsyncCallbackLoggingVtbl;
3546 
3547 interface IMFAsyncCallbackLogging {
3548     CONST_VTBL IMFAsyncCallbackLoggingVtbl* lpVtbl;
3549 };
3550 
3551 #ifdef COBJMACROS
3552 #ifndef WIDL_C_INLINE_WRAPPERS
3553 /*** IUnknown methods ***/
3554 #define IMFAsyncCallbackLogging_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3555 #define IMFAsyncCallbackLogging_AddRef(This) (This)->lpVtbl->AddRef(This)
3556 #define IMFAsyncCallbackLogging_Release(This) (This)->lpVtbl->Release(This)
3557 /*** IMFAsyncCallback methods ***/
3558 #define IMFAsyncCallbackLogging_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
3559 #define IMFAsyncCallbackLogging_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
3560 /*** IMFAsyncCallbackLogging methods ***/
3561 #define IMFAsyncCallbackLogging_GetObjectPointer(This) (This)->lpVtbl->GetObjectPointer(This)
3562 #define IMFAsyncCallbackLogging_GetObjectTag(This) (This)->lpVtbl->GetObjectTag(This)
3563 #else
3564 /*** IUnknown methods ***/
3565 static FORCEINLINE HRESULT IMFAsyncCallbackLogging_QueryInterface(IMFAsyncCallbackLogging* This,REFIID riid,void **ppvObject) {
3566     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3567 }
3568 static FORCEINLINE ULONG IMFAsyncCallbackLogging_AddRef(IMFAsyncCallbackLogging* This) {
3569     return This->lpVtbl->AddRef(This);
3570 }
3571 static FORCEINLINE ULONG IMFAsyncCallbackLogging_Release(IMFAsyncCallbackLogging* This) {
3572     return This->lpVtbl->Release(This);
3573 }
3574 /*** IMFAsyncCallback methods ***/
3575 static FORCEINLINE HRESULT IMFAsyncCallbackLogging_GetParameters(IMFAsyncCallbackLogging* This,DWORD *pdwFlags,DWORD *pdwQueue) {
3576     return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
3577 }
3578 static FORCEINLINE HRESULT IMFAsyncCallbackLogging_Invoke(IMFAsyncCallbackLogging* This,IMFAsyncResult *pAsyncResult) {
3579     return This->lpVtbl->Invoke(This,pAsyncResult);
3580 }
3581 /*** IMFAsyncCallbackLogging methods ***/
3582 static FORCEINLINE void * IMFAsyncCallbackLogging_GetObjectPointer(IMFAsyncCallbackLogging* This) {
3583     return This->lpVtbl->GetObjectPointer(This);
3584 }
3585 static FORCEINLINE DWORD IMFAsyncCallbackLogging_GetObjectTag(IMFAsyncCallbackLogging* This) {
3586     return This->lpVtbl->GetObjectTag(This);
3587 }
3588 #endif
3589 #endif
3590 
3591 #endif
3592 
3593 
3594 #endif  /* __IMFAsyncCallbackLogging_INTERFACE_DEFINED__ */
3595 
3596 #endif
3597 
3598 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
3599 #define MFASYNC_FAST_IO_PROCESSING_CALLBACK 0x00000001
3600 #define MFASYNC_SIGNAL_CALLBACK 0x00000002
3601 #define MFASYNC_BLOCKING_CALLBACK 0x00000004
3602 #define MFASYNC_REPLY_CALLBACK 0x00000008
3603 #define MFASYNC_LOCALIZE_REMOTE_CALLBACK 0x00000010
3604 
3605 #define MFASYNC_CALLBACK_QUEUE_UNDEFINED 0x00000000
3606 #define MFASYNC_CALLBACK_QUEUE_STANDARD 0x00000001
3607 #define MFASYNC_CALLBACK_QUEUE_RT 0x00000002
3608 #define MFASYNC_CALLBACK_QUEUE_IO 0x00000003
3609 #define MFASYNC_CALLBACK_QUEUE_TIMER 0x00000004
3610 #define MFASYNC_CALLBACK_QUEUE_MULTITHREADED 0x00000005
3611 #define MFASYNC_CALLBACK_QUEUE_LONG_FUNCTION 0x00000007
3612 #define MFASYNC_CALLBACK_QUEUE_PRIVATE_MASK 0xFFFF0000
3613 #define MFASYNC_CALLBACK_QUEUE_ALL 0xFFFFFFFF
3614 
3615 enum {
3616     MEUnknown = 0,
3617     MEError = 1,
3618     MEExtendedType = 2,
3619     MENonFatalError = 3,
3620     MEGenericV1Anchor = MENonFatalError,
3621     MESessionUnknown = 100,
3622     MESessionTopologySet = 101,
3623     MESessionTopologiesCleared = 102,
3624     MESessionStarted = 103,
3625     MESessionPaused = 104,
3626     MESessionStopped = 105,
3627     MESessionClosed = 106,
3628     MESessionEnded = 107,
3629     MESessionRateChanged = 108,
3630     MESessionScrubSampleComplete = 109,
3631     MESessionCapabilitiesChanged = 110,
3632     MESessionTopologyStatus = 111,
3633     MESessionNotifyPresentationTime = 112,
3634     MENewPresentation = 113,
3635     MELicenseAcquisitionStart = 114,
3636     MELicenseAcquisitionCompleted = 115,
3637     MEIndividualizationStart = 116,
3638     MEIndividualizationCompleted = 117,
3639     MEEnablerProgress = 118,
3640     MEEnablerCompleted = 119,
3641     MEPolicyError = 120,
3642     MEPolicyReport = 121,
3643     MEBufferingStarted = 122,
3644     MEBufferingStopped = 123,
3645     MEConnectStart = 124,
3646     MEConnectEnd = 125,
3647     MEReconnectStart = 126,
3648     MEReconnectEnd = 127,
3649     MERendererEvent = 128,
3650     MESessionStreamSinkFormatChanged = 129,
3651     MESessionV1Anchor = MESessionStreamSinkFormatChanged,
3652     MESourceUnknown = 200,
3653     MESourceStarted = 201,
3654     MEStreamStarted = 202,
3655     MESourceSeeked = 203,
3656     MEStreamSeeked = 204,
3657     MENewStream = 205,
3658     MEUpdatedStream = 206,
3659     MESourceStopped = 207,
3660     MEStreamStopped = 208,
3661     MESourcePaused = 209,
3662     MEStreamPaused = 210,
3663     MEEndOfPresentation = 211,
3664     MEEndOfStream = 212,
3665     MEMediaSample = 213,
3666     MEStreamTick = 214,
3667     MEStreamThinMode = 215,
3668     MEStreamFormatChanged = 216,
3669     MESourceRateChanged = 217,
3670     MEEndOfPresentationSegment = 218,
3671     MESourceCharacteristicsChanged = 219,
3672     MESourceRateChangeRequested = 220,
3673     MESourceMetadataChanged = 221,
3674     MESequencerSourceTopologyUpdated = 222,
3675     MESourceV1Anchor = MESequencerSourceTopologyUpdated,
3676     MESinkUnknown = 300,
3677     MEStreamSinkStarted = 301,
3678     MEStreamSinkStopped = 302,
3679     MEStreamSinkPaused = 303,
3680     MEStreamSinkRateChanged = 304,
3681     MEStreamSinkRequestSample = 305,
3682     MEStreamSinkMarker = 306,
3683     MEStreamSinkPrerolled = 307,
3684     MEStreamSinkScrubSampleComplete = 308,
3685     MEStreamSinkFormatChanged = 309,
3686     MEStreamSinkDeviceChanged = 310,
3687     MEQualityNotify = 311,
3688     MESinkInvalidated = 312,
3689     MEAudioSessionNameChanged = 313,
3690     MEAudioSessionVolumeChanged = 314,
3691     MEAudioSessionDeviceRemoved = 315,
3692     MEAudioSessionServerShutdown = 316,
3693     MEAudioSessionGroupingParamChanged = 317,
3694     MEAudioSessionIconChanged = 318,
3695     MEAudioSessionFormatChanged = 319,
3696     MEAudioSessionDisconnected = 320,
3697     MEAudioSessionExclusiveModeOverride = 321,
3698     MESinkV1Anchor = MEAudioSessionExclusiveModeOverride,
3699     METrustUnknown = 400,
3700     MEPolicyChanged = 401,
3701     MEContentProtectionMessage = 402,
3702     MEPolicySet = 403,
3703     METrustV1Anchor = MEPolicySet,
3704     MEWMDRMLicenseBackupCompleted = 500,
3705     MEWMDRMLicenseBackupProgress = 501,
3706     MEWMDRMLicenseRestoreCompleted = 502,
3707     MEWMDRMLicenseRestoreProgress = 503,
3708     MEWMDRMLicenseAcquisitionCompleted = 506,
3709     MEWMDRMIndividualizationCompleted = 508,
3710     MEWMDRMIndividualizationProgress = 513,
3711     MEWMDRMProximityCompleted = 514,
3712     MEWMDRMLicenseStoreCleaned = 515,
3713     MEWMDRMRevocationDownloadCompleted = 516,
3714     MEWMDRMV1Anchor = MEWMDRMRevocationDownloadCompleted,
3715     MEReservedMax = 10000
3716 };
3717 
3718 typedef DWORD MediaEventType;
3719 
3720 /*****************************************************************************
3721  * IMFMediaEvent interface
3722  */
3723 #ifndef __IMFMediaEvent_INTERFACE_DEFINED__
3724 #define __IMFMediaEvent_INTERFACE_DEFINED__
3725 
3726 DEFINE_GUID(IID_IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3);
3727 #if defined(__cplusplus) && !defined(CINTERFACE)
3728 MIDL_INTERFACE("df598932-f10c-4e39-bba2-c308f101daa3")
3729 IMFMediaEvent : public IMFAttributes
3730 {
3731     virtual HRESULT STDMETHODCALLTYPE GetType(
3732         MediaEventType *pmet) = 0;
3733 
3734     virtual HRESULT STDMETHODCALLTYPE GetExtendedType(
3735         GUID *pguidExtendedType) = 0;
3736 
3737     virtual HRESULT STDMETHODCALLTYPE GetStatus(
3738         HRESULT *phrStatus) = 0;
3739 
3740     virtual HRESULT STDMETHODCALLTYPE GetValue(
3741         PROPVARIANT *pvValue) = 0;
3742 
3743 };
3744 #ifdef __CRT_UUID_DECL
3745 __CRT_UUID_DECL(IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3)
3746 #endif
3747 #else
3748 typedef struct IMFMediaEventVtbl {
3749     BEGIN_INTERFACE
3750 
3751     /*** IUnknown methods ***/
3752     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3753         IMFMediaEvent *This,
3754         REFIID riid,
3755         void **ppvObject);
3756 
3757     ULONG (STDMETHODCALLTYPE *AddRef)(
3758         IMFMediaEvent *This);
3759 
3760     ULONG (STDMETHODCALLTYPE *Release)(
3761         IMFMediaEvent *This);
3762 
3763     /*** IMFAttributes methods ***/
3764     HRESULT (STDMETHODCALLTYPE *GetItem)(
3765         IMFMediaEvent *This,
3766         REFGUID guidKey,
3767         PROPVARIANT *pValue);
3768 
3769     HRESULT (STDMETHODCALLTYPE *GetItemType)(
3770         IMFMediaEvent *This,
3771         REFGUID guidKey,
3772         MF_ATTRIBUTE_TYPE *pType);
3773 
3774     HRESULT (STDMETHODCALLTYPE *CompareItem)(
3775         IMFMediaEvent *This,
3776         REFGUID guidKey,
3777         REFPROPVARIANT Value,
3778         WINBOOL *pbResult);
3779 
3780     HRESULT (STDMETHODCALLTYPE *Compare)(
3781         IMFMediaEvent *This,
3782         IMFAttributes *pTheirs,
3783         MF_ATTRIBUTES_MATCH_TYPE MatchType,
3784         WINBOOL *pbResult);
3785 
3786     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
3787         IMFMediaEvent *This,
3788         REFGUID guidKey,
3789         UINT32 *punValue);
3790 
3791     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
3792         IMFMediaEvent *This,
3793         REFGUID guidKey,
3794         UINT64 *punValue);
3795 
3796     HRESULT (STDMETHODCALLTYPE *GetDouble)(
3797         IMFMediaEvent *This,
3798         REFGUID guidKey,
3799         double *pfValue);
3800 
3801     HRESULT (STDMETHODCALLTYPE *GetGUID)(
3802         IMFMediaEvent *This,
3803         REFGUID guidKey,
3804         GUID *pguidValue);
3805 
3806     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
3807         IMFMediaEvent *This,
3808         REFGUID guidKey,
3809         UINT32 *pcchLength);
3810 
3811     HRESULT (STDMETHODCALLTYPE *GetString)(
3812         IMFMediaEvent *This,
3813         REFGUID guidKey,
3814         LPWSTR pwszValue,
3815         UINT32 cchBufSize,
3816         UINT32 *pcchLength);
3817 
3818     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
3819         IMFMediaEvent *This,
3820         REFGUID guidKey,
3821         LPWSTR *ppwszValue,
3822         UINT32 *pcchLength);
3823 
3824     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
3825         IMFMediaEvent *This,
3826         REFGUID guidKey,
3827         UINT32 *pcbBlobSize);
3828 
3829     HRESULT (STDMETHODCALLTYPE *GetBlob)(
3830         IMFMediaEvent *This,
3831         REFGUID guidKey,
3832         UINT8 *pBuf,
3833         UINT32 cbBufSize,
3834         UINT32 *pcbBlobSize);
3835 
3836     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
3837         IMFMediaEvent *This,
3838         REFGUID guidKey,
3839         UINT8 **ppBuf,
3840         UINT32 *pcbSize);
3841 
3842     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
3843         IMFMediaEvent *This,
3844         REFGUID guidKey,
3845         REFIID riid,
3846         LPVOID *ppv);
3847 
3848     HRESULT (STDMETHODCALLTYPE *SetItem)(
3849         IMFMediaEvent *This,
3850         REFGUID guidKey,
3851         REFPROPVARIANT Value);
3852 
3853     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
3854         IMFMediaEvent *This,
3855         REFGUID guidKey);
3856 
3857     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
3858         IMFMediaEvent *This);
3859 
3860     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
3861         IMFMediaEvent *This,
3862         REFGUID guidKey,
3863         UINT32 unValue);
3864 
3865     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
3866         IMFMediaEvent *This,
3867         REFGUID guidKey,
3868         UINT64 unValue);
3869 
3870     HRESULT (STDMETHODCALLTYPE *SetDouble)(
3871         IMFMediaEvent *This,
3872         REFGUID guidKey,
3873         double fValue);
3874 
3875     HRESULT (STDMETHODCALLTYPE *SetGUID)(
3876         IMFMediaEvent *This,
3877         REFGUID guidKey,
3878         REFGUID guidValue);
3879 
3880     HRESULT (STDMETHODCALLTYPE *SetString)(
3881         IMFMediaEvent *This,
3882         REFGUID guidKey,
3883         LPCWSTR wszValue);
3884 
3885     HRESULT (STDMETHODCALLTYPE *SetBlob)(
3886         IMFMediaEvent *This,
3887         REFGUID guidKey,
3888         const UINT8 *pBuf,
3889         UINT32 cbBufSize);
3890 
3891     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
3892         IMFMediaEvent *This,
3893         REFGUID guidKey,
3894         IUnknown *pUnknown);
3895 
3896     HRESULT (STDMETHODCALLTYPE *LockStore)(
3897         IMFMediaEvent *This);
3898 
3899     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
3900         IMFMediaEvent *This);
3901 
3902     HRESULT (STDMETHODCALLTYPE *GetCount)(
3903         IMFMediaEvent *This,
3904         UINT32 *pcItems);
3905 
3906     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
3907         IMFMediaEvent *This,
3908         UINT32 unIndex,
3909         GUID *pguidKey,
3910         PROPVARIANT *pValue);
3911 
3912     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
3913         IMFMediaEvent *This,
3914         IMFAttributes *pDest);
3915 
3916     /*** IMFMediaEvent methods ***/
3917     HRESULT (STDMETHODCALLTYPE *GetType)(
3918         IMFMediaEvent *This,
3919         MediaEventType *pmet);
3920 
3921     HRESULT (STDMETHODCALLTYPE *GetExtendedType)(
3922         IMFMediaEvent *This,
3923         GUID *pguidExtendedType);
3924 
3925     HRESULT (STDMETHODCALLTYPE *GetStatus)(
3926         IMFMediaEvent *This,
3927         HRESULT *phrStatus);
3928 
3929     HRESULT (STDMETHODCALLTYPE *GetValue)(
3930         IMFMediaEvent *This,
3931         PROPVARIANT *pvValue);
3932 
3933     END_INTERFACE
3934 } IMFMediaEventVtbl;
3935 
3936 interface IMFMediaEvent {
3937     CONST_VTBL IMFMediaEventVtbl* lpVtbl;
3938 };
3939 
3940 #ifdef COBJMACROS
3941 #ifndef WIDL_C_INLINE_WRAPPERS
3942 /*** IUnknown methods ***/
3943 #define IMFMediaEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3944 #define IMFMediaEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
3945 #define IMFMediaEvent_Release(This) (This)->lpVtbl->Release(This)
3946 /*** IMFAttributes methods ***/
3947 #define IMFMediaEvent_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
3948 #define IMFMediaEvent_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
3949 #define IMFMediaEvent_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
3950 #define IMFMediaEvent_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
3951 #define IMFMediaEvent_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
3952 #define IMFMediaEvent_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
3953 #define IMFMediaEvent_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
3954 #define IMFMediaEvent_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
3955 #define IMFMediaEvent_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
3956 #define IMFMediaEvent_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
3957 #define IMFMediaEvent_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
3958 #define IMFMediaEvent_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
3959 #define IMFMediaEvent_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
3960 #define IMFMediaEvent_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
3961 #define IMFMediaEvent_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
3962 #define IMFMediaEvent_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
3963 #define IMFMediaEvent_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
3964 #define IMFMediaEvent_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
3965 #define IMFMediaEvent_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
3966 #define IMFMediaEvent_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
3967 #define IMFMediaEvent_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
3968 #define IMFMediaEvent_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
3969 #define IMFMediaEvent_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
3970 #define IMFMediaEvent_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
3971 #define IMFMediaEvent_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
3972 #define IMFMediaEvent_LockStore(This) (This)->lpVtbl->LockStore(This)
3973 #define IMFMediaEvent_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
3974 #define IMFMediaEvent_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
3975 #define IMFMediaEvent_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
3976 #define IMFMediaEvent_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
3977 /*** IMFMediaEvent methods ***/
3978 #define IMFMediaEvent_GetType(This,pmet) (This)->lpVtbl->GetType(This,pmet)
3979 #define IMFMediaEvent_GetExtendedType(This,pguidExtendedType) (This)->lpVtbl->GetExtendedType(This,pguidExtendedType)
3980 #define IMFMediaEvent_GetStatus(This,phrStatus) (This)->lpVtbl->GetStatus(This,phrStatus)
3981 #define IMFMediaEvent_GetValue(This,pvValue) (This)->lpVtbl->GetValue(This,pvValue)
3982 #else
3983 /*** IUnknown methods ***/
3984 static FORCEINLINE HRESULT IMFMediaEvent_QueryInterface(IMFMediaEvent* This,REFIID riid,void **ppvObject) {
3985     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3986 }
3987 static FORCEINLINE ULONG IMFMediaEvent_AddRef(IMFMediaEvent* This) {
3988     return This->lpVtbl->AddRef(This);
3989 }
3990 static FORCEINLINE ULONG IMFMediaEvent_Release(IMFMediaEvent* This) {
3991     return This->lpVtbl->Release(This);
3992 }
3993 /*** IMFAttributes methods ***/
3994 static FORCEINLINE HRESULT IMFMediaEvent_GetItem(IMFMediaEvent* This,REFGUID guidKey,PROPVARIANT *pValue) {
3995     return This->lpVtbl->GetItem(This,guidKey,pValue);
3996 }
3997 static FORCEINLINE HRESULT IMFMediaEvent_GetItemType(IMFMediaEvent* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
3998     return This->lpVtbl->GetItemType(This,guidKey,pType);
3999 }
4000 static FORCEINLINE HRESULT IMFMediaEvent_CompareItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
4001     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
4002 }
4003 static FORCEINLINE HRESULT IMFMediaEvent_Compare(IMFMediaEvent* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
4004     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
4005 }
4006 static FORCEINLINE HRESULT IMFMediaEvent_GetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 *punValue) {
4007     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
4008 }
4009 static FORCEINLINE HRESULT IMFMediaEvent_GetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 *punValue) {
4010     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
4011 }
4012 static FORCEINLINE HRESULT IMFMediaEvent_GetDouble(IMFMediaEvent* This,REFGUID guidKey,double *pfValue) {
4013     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
4014 }
4015 static FORCEINLINE HRESULT IMFMediaEvent_GetGUID(IMFMediaEvent* This,REFGUID guidKey,GUID *pguidValue) {
4016     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
4017 }
4018 static FORCEINLINE HRESULT IMFMediaEvent_GetStringLength(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcchLength) {
4019     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
4020 }
4021 static FORCEINLINE HRESULT IMFMediaEvent_GetString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
4022     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
4023 }
4024 static FORCEINLINE HRESULT IMFMediaEvent_GetAllocatedString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
4025     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
4026 }
4027 static FORCEINLINE HRESULT IMFMediaEvent_GetBlobSize(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
4028     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
4029 }
4030 static FORCEINLINE HRESULT IMFMediaEvent_GetBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
4031     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
4032 }
4033 static FORCEINLINE HRESULT IMFMediaEvent_GetAllocatedBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
4034     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
4035 }
4036 static FORCEINLINE HRESULT IMFMediaEvent_GetUnknown(IMFMediaEvent* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
4037     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
4038 }
4039 static FORCEINLINE HRESULT IMFMediaEvent_SetItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value) {
4040     return This->lpVtbl->SetItem(This,guidKey,Value);
4041 }
4042 static FORCEINLINE HRESULT IMFMediaEvent_DeleteItem(IMFMediaEvent* This,REFGUID guidKey) {
4043     return This->lpVtbl->DeleteItem(This,guidKey);
4044 }
4045 static FORCEINLINE HRESULT IMFMediaEvent_DeleteAllItems(IMFMediaEvent* This) {
4046     return This->lpVtbl->DeleteAllItems(This);
4047 }
4048 static FORCEINLINE HRESULT IMFMediaEvent_SetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 unValue) {
4049     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
4050 }
4051 static FORCEINLINE HRESULT IMFMediaEvent_SetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 unValue) {
4052     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
4053 }
4054 static FORCEINLINE HRESULT IMFMediaEvent_SetDouble(IMFMediaEvent* This,REFGUID guidKey,double fValue) {
4055     return This->lpVtbl->SetDouble(This,guidKey,fValue);
4056 }
4057 static FORCEINLINE HRESULT IMFMediaEvent_SetGUID(IMFMediaEvent* This,REFGUID guidKey,REFGUID guidValue) {
4058     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
4059 }
4060 static FORCEINLINE HRESULT IMFMediaEvent_SetString(IMFMediaEvent* This,REFGUID guidKey,LPCWSTR wszValue) {
4061     return This->lpVtbl->SetString(This,guidKey,wszValue);
4062 }
4063 static FORCEINLINE HRESULT IMFMediaEvent_SetBlob(IMFMediaEvent* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
4064     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
4065 }
4066 static FORCEINLINE HRESULT IMFMediaEvent_SetUnknown(IMFMediaEvent* This,REFGUID guidKey,IUnknown *pUnknown) {
4067     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
4068 }
4069 static FORCEINLINE HRESULT IMFMediaEvent_LockStore(IMFMediaEvent* This) {
4070     return This->lpVtbl->LockStore(This);
4071 }
4072 static FORCEINLINE HRESULT IMFMediaEvent_UnlockStore(IMFMediaEvent* This) {
4073     return This->lpVtbl->UnlockStore(This);
4074 }
4075 static FORCEINLINE HRESULT IMFMediaEvent_GetCount(IMFMediaEvent* This,UINT32 *pcItems) {
4076     return This->lpVtbl->GetCount(This,pcItems);
4077 }
4078 static FORCEINLINE HRESULT IMFMediaEvent_GetItemByIndex(IMFMediaEvent* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
4079     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
4080 }
4081 static FORCEINLINE HRESULT IMFMediaEvent_CopyAllItems(IMFMediaEvent* This,IMFAttributes *pDest) {
4082     return This->lpVtbl->CopyAllItems(This,pDest);
4083 }
4084 /*** IMFMediaEvent methods ***/
4085 static FORCEINLINE HRESULT IMFMediaEvent_GetType(IMFMediaEvent* This,MediaEventType *pmet) {
4086     return This->lpVtbl->GetType(This,pmet);
4087 }
4088 static FORCEINLINE HRESULT IMFMediaEvent_GetExtendedType(IMFMediaEvent* This,GUID *pguidExtendedType) {
4089     return This->lpVtbl->GetExtendedType(This,pguidExtendedType);
4090 }
4091 static FORCEINLINE HRESULT IMFMediaEvent_GetStatus(IMFMediaEvent* This,HRESULT *phrStatus) {
4092     return This->lpVtbl->GetStatus(This,phrStatus);
4093 }
4094 static FORCEINLINE HRESULT IMFMediaEvent_GetValue(IMFMediaEvent* This,PROPVARIANT *pvValue) {
4095     return This->lpVtbl->GetValue(This,pvValue);
4096 }
4097 #endif
4098 #endif
4099 
4100 #endif
4101 
4102 
4103 #endif  /* __IMFMediaEvent_INTERFACE_DEFINED__ */
4104 
4105 
4106 #define MF_EVENT_FLAG_NO_WAIT 0x00000001
4107 
4108 #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
4109 #define __IMFRemoteAsyncCallback_FWD_DEFINED__
4110 typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
4111 #ifdef __cplusplus
4112 interface IMFRemoteAsyncCallback;
4113 #endif /* __cplusplus */
4114 #endif
4115 
4116 
4117 /*****************************************************************************
4118  * IMFMediaEventGenerator interface
4119  */
4120 #ifndef __IMFMediaEventGenerator_INTERFACE_DEFINED__
4121 #define __IMFMediaEventGenerator_INTERFACE_DEFINED__
4122 
4123 DEFINE_GUID(IID_IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d);
4124 #if defined(__cplusplus) && !defined(CINTERFACE)
4125 MIDL_INTERFACE("2cd0bd52-bcd5-4b89-b62c-eadc0c031e7d")
4126 IMFMediaEventGenerator : public IUnknown
4127 {
4128     virtual HRESULT STDMETHODCALLTYPE GetEvent(
4129         DWORD dwFlags,
4130         IMFMediaEvent **ppEvent) = 0;
4131 
4132     virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
4133         IMFAsyncCallback *pCallback,
4134         IUnknown *punkState) = 0;
4135 
4136     virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
4137         IMFAsyncResult *pResult,
4138         IMFMediaEvent **ppEvent) = 0;
4139 
4140     virtual HRESULT STDMETHODCALLTYPE QueueEvent(
4141         MediaEventType met,
4142         REFGUID guidExtendedType,
4143         HRESULT hrStatus,
4144         const PROPVARIANT *pvValue) = 0;
4145 
4146 };
4147 #ifdef __CRT_UUID_DECL
4148 __CRT_UUID_DECL(IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d)
4149 #endif
4150 #else
4151 typedef struct IMFMediaEventGeneratorVtbl {
4152     BEGIN_INTERFACE
4153 
4154     /*** IUnknown methods ***/
4155     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4156         IMFMediaEventGenerator *This,
4157         REFIID riid,
4158         void **ppvObject);
4159 
4160     ULONG (STDMETHODCALLTYPE *AddRef)(
4161         IMFMediaEventGenerator *This);
4162 
4163     ULONG (STDMETHODCALLTYPE *Release)(
4164         IMFMediaEventGenerator *This);
4165 
4166     /*** IMFMediaEventGenerator methods ***/
4167     HRESULT (STDMETHODCALLTYPE *GetEvent)(
4168         IMFMediaEventGenerator *This,
4169         DWORD dwFlags,
4170         IMFMediaEvent **ppEvent);
4171 
4172     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
4173         IMFMediaEventGenerator *This,
4174         IMFAsyncCallback *pCallback,
4175         IUnknown *punkState);
4176 
4177     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
4178         IMFMediaEventGenerator *This,
4179         IMFAsyncResult *pResult,
4180         IMFMediaEvent **ppEvent);
4181 
4182     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
4183         IMFMediaEventGenerator *This,
4184         MediaEventType met,
4185         REFGUID guidExtendedType,
4186         HRESULT hrStatus,
4187         const PROPVARIANT *pvValue);
4188 
4189     END_INTERFACE
4190 } IMFMediaEventGeneratorVtbl;
4191 
4192 interface IMFMediaEventGenerator {
4193     CONST_VTBL IMFMediaEventGeneratorVtbl* lpVtbl;
4194 };
4195 
4196 #ifdef COBJMACROS
4197 #ifndef WIDL_C_INLINE_WRAPPERS
4198 /*** IUnknown methods ***/
4199 #define IMFMediaEventGenerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4200 #define IMFMediaEventGenerator_AddRef(This) (This)->lpVtbl->AddRef(This)
4201 #define IMFMediaEventGenerator_Release(This) (This)->lpVtbl->Release(This)
4202 /*** IMFMediaEventGenerator methods ***/
4203 #define IMFMediaEventGenerator_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
4204 #define IMFMediaEventGenerator_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
4205 #define IMFMediaEventGenerator_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
4206 #define IMFMediaEventGenerator_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
4207 #else
4208 /*** IUnknown methods ***/
4209 static FORCEINLINE HRESULT IMFMediaEventGenerator_QueryInterface(IMFMediaEventGenerator* This,REFIID riid,void **ppvObject) {
4210     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4211 }
4212 static FORCEINLINE ULONG IMFMediaEventGenerator_AddRef(IMFMediaEventGenerator* This) {
4213     return This->lpVtbl->AddRef(This);
4214 }
4215 static FORCEINLINE ULONG IMFMediaEventGenerator_Release(IMFMediaEventGenerator* This) {
4216     return This->lpVtbl->Release(This);
4217 }
4218 /*** IMFMediaEventGenerator methods ***/
4219 static FORCEINLINE HRESULT IMFMediaEventGenerator_GetEvent(IMFMediaEventGenerator* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
4220     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
4221 }
4222 static FORCEINLINE HRESULT IMFMediaEventGenerator_BeginGetEvent(IMFMediaEventGenerator* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4223     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
4224 }
4225 static FORCEINLINE HRESULT IMFMediaEventGenerator_EndGetEvent(IMFMediaEventGenerator* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
4226     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
4227 }
4228 static FORCEINLINE HRESULT IMFMediaEventGenerator_QueueEvent(IMFMediaEventGenerator* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
4229     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
4230 }
4231 #endif
4232 #endif
4233 
4234 #endif
4235 
4236 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteBeginGetEvent_Proxy(
4237     IMFMediaEventGenerator* This,
4238     IMFRemoteAsyncCallback *pCallback);
4239 void __RPC_STUB IMFMediaEventGenerator_RemoteBeginGetEvent_Stub(
4240     IRpcStubBuffer* This,
4241     IRpcChannelBuffer* pRpcChannelBuffer,
4242     PRPC_MESSAGE pRpcMessage,
4243     DWORD* pdwStubPhase);
4244 HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteEndGetEvent_Proxy(
4245     IMFMediaEventGenerator* This,
4246     IUnknown *pResult,
4247     DWORD *pcbEvent,
4248     BYTE **ppbEvent);
4249 void __RPC_STUB IMFMediaEventGenerator_RemoteEndGetEvent_Stub(
4250     IRpcStubBuffer* This,
4251     IRpcChannelBuffer* pRpcChannelBuffer,
4252     PRPC_MESSAGE pRpcMessage,
4253     DWORD* pdwStubPhase);
4254 HRESULT CALLBACK IMFMediaEventGenerator_BeginGetEvent_Proxy(
4255     IMFMediaEventGenerator* This,
4256     IMFAsyncCallback *pCallback,
4257     IUnknown *punkState);
4258 HRESULT __RPC_STUB IMFMediaEventGenerator_BeginGetEvent_Stub(
4259     IMFMediaEventGenerator* This,
4260     IMFRemoteAsyncCallback *pCallback);
4261 HRESULT CALLBACK IMFMediaEventGenerator_EndGetEvent_Proxy(
4262     IMFMediaEventGenerator* This,
4263     IMFAsyncResult *pResult,
4264     IMFMediaEvent **ppEvent);
4265 HRESULT __RPC_STUB IMFMediaEventGenerator_EndGetEvent_Stub(
4266     IMFMediaEventGenerator* This,
4267     IUnknown *pResult,
4268     DWORD *pcbEvent,
4269     BYTE **ppbEvent);
4270 
4271 #endif  /* __IMFMediaEventGenerator_INTERFACE_DEFINED__ */
4272 
4273 #endif
4274 
4275 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
4276 /*****************************************************************************
4277  * IMFRemoteAsyncCallback interface
4278  */
4279 #ifndef __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
4280 #define __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
4281 
4282 DEFINE_GUID(IID_IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
4283 #if defined(__cplusplus) && !defined(CINTERFACE)
4284 MIDL_INTERFACE("a27003d0-2354-4f2a-8d6a-ab7cff15437e")
4285 IMFRemoteAsyncCallback : public IUnknown
4286 {
4287     virtual HRESULT STDMETHODCALLTYPE Invoke(
4288         HRESULT hr,
4289         IUnknown *pRemoteResult) = 0;
4290 
4291 };
4292 #ifdef __CRT_UUID_DECL
4293 __CRT_UUID_DECL(IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
4294 #endif
4295 #else
4296 typedef struct IMFRemoteAsyncCallbackVtbl {
4297     BEGIN_INTERFACE
4298 
4299     /*** IUnknown methods ***/
4300     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4301         IMFRemoteAsyncCallback *This,
4302         REFIID riid,
4303         void **ppvObject);
4304 
4305     ULONG (STDMETHODCALLTYPE *AddRef)(
4306         IMFRemoteAsyncCallback *This);
4307 
4308     ULONG (STDMETHODCALLTYPE *Release)(
4309         IMFRemoteAsyncCallback *This);
4310 
4311     /*** IMFRemoteAsyncCallback methods ***/
4312     HRESULT (STDMETHODCALLTYPE *Invoke)(
4313         IMFRemoteAsyncCallback *This,
4314         HRESULT hr,
4315         IUnknown *pRemoteResult);
4316 
4317     END_INTERFACE
4318 } IMFRemoteAsyncCallbackVtbl;
4319 
4320 interface IMFRemoteAsyncCallback {
4321     CONST_VTBL IMFRemoteAsyncCallbackVtbl* lpVtbl;
4322 };
4323 
4324 #ifdef COBJMACROS
4325 #ifndef WIDL_C_INLINE_WRAPPERS
4326 /*** IUnknown methods ***/
4327 #define IMFRemoteAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4328 #define IMFRemoteAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
4329 #define IMFRemoteAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
4330 /*** IMFRemoteAsyncCallback methods ***/
4331 #define IMFRemoteAsyncCallback_Invoke(This,hr,pRemoteResult) (This)->lpVtbl->Invoke(This,hr,pRemoteResult)
4332 #else
4333 /*** IUnknown methods ***/
4334 static FORCEINLINE HRESULT IMFRemoteAsyncCallback_QueryInterface(IMFRemoteAsyncCallback* This,REFIID riid,void **ppvObject) {
4335     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4336 }
4337 static FORCEINLINE ULONG IMFRemoteAsyncCallback_AddRef(IMFRemoteAsyncCallback* This) {
4338     return This->lpVtbl->AddRef(This);
4339 }
4340 static FORCEINLINE ULONG IMFRemoteAsyncCallback_Release(IMFRemoteAsyncCallback* This) {
4341     return This->lpVtbl->Release(This);
4342 }
4343 /*** IMFRemoteAsyncCallback methods ***/
4344 static FORCEINLINE HRESULT IMFRemoteAsyncCallback_Invoke(IMFRemoteAsyncCallback* This,HRESULT hr,IUnknown *pRemoteResult) {
4345     return This->lpVtbl->Invoke(This,hr,pRemoteResult);
4346 }
4347 #endif
4348 #endif
4349 
4350 #endif
4351 
4352 
4353 #endif  /* __IMFRemoteAsyncCallback_INTERFACE_DEFINED__ */
4354 
4355 #endif
4356 
4357 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
4358 
4359 typedef enum _MFBYTESTREAM_SEEK_ORIGIN {
4360     msoBegin = 0,
4361     msoCurrent = 1
4362 } MFBYTESTREAM_SEEK_ORIGIN;
4363 
4364 /*****************************************************************************
4365  * IMFByteStream interface
4366  */
4367 #ifndef __IMFByteStream_INTERFACE_DEFINED__
4368 #define __IMFByteStream_INTERFACE_DEFINED__
4369 
4370 DEFINE_GUID(IID_IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d);
4371 #if defined(__cplusplus) && !defined(CINTERFACE)
4372 MIDL_INTERFACE("ad4c1b00-4bf7-422f-9175-756693d9130d")
4373 IMFByteStream : public IUnknown
4374 {
4375     virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
4376         DWORD *pdwCapabilities) = 0;
4377 
4378     virtual HRESULT STDMETHODCALLTYPE GetLength(
4379         QWORD *pqwLength) = 0;
4380 
4381     virtual HRESULT STDMETHODCALLTYPE SetLength(
4382         QWORD qwLength) = 0;
4383 
4384     virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(
4385         QWORD *pqwPosition) = 0;
4386 
4387     virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(
4388         QWORD qwPosition) = 0;
4389 
4390     virtual HRESULT STDMETHODCALLTYPE IsEndOfStream(
4391         WINBOOL *pfEndOfStream) = 0;
4392 
4393     virtual HRESULT STDMETHODCALLTYPE Read(
4394         BYTE *pb,
4395         ULONG cb,
4396         ULONG *pcbRead) = 0;
4397 
4398     virtual HRESULT STDMETHODCALLTYPE BeginRead(
4399         BYTE *pb,
4400         ULONG cb,
4401         IMFAsyncCallback *pCallback,
4402         IUnknown *punkState) = 0;
4403 
4404     virtual HRESULT STDMETHODCALLTYPE EndRead(
4405         IMFAsyncResult *pResult,
4406         ULONG *pcbRead) = 0;
4407 
4408     virtual HRESULT STDMETHODCALLTYPE Write(
4409         const BYTE *pb,
4410         ULONG cb,
4411         ULONG *pcbWritten) = 0;
4412 
4413     virtual HRESULT STDMETHODCALLTYPE BeginWrite(
4414         const BYTE *pb,
4415         ULONG cb,
4416         IMFAsyncCallback *pCallback,
4417         IUnknown *punkState) = 0;
4418 
4419     virtual HRESULT STDMETHODCALLTYPE EndWrite(
4420         IMFAsyncResult *pResult,
4421         ULONG *pcbWritten) = 0;
4422 
4423     virtual HRESULT STDMETHODCALLTYPE Seek(
4424         MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
4425         LONGLONG llSeekOffset,
4426         DWORD dwSeekFlags,
4427         QWORD *pqwCurrentPosition) = 0;
4428 
4429     virtual HRESULT STDMETHODCALLTYPE Flush(
4430         ) = 0;
4431 
4432     virtual HRESULT STDMETHODCALLTYPE Close(
4433         ) = 0;
4434 
4435 };
4436 #ifdef __CRT_UUID_DECL
4437 __CRT_UUID_DECL(IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d)
4438 #endif
4439 #else
4440 typedef struct IMFByteStreamVtbl {
4441     BEGIN_INTERFACE
4442 
4443     /*** IUnknown methods ***/
4444     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4445         IMFByteStream *This,
4446         REFIID riid,
4447         void **ppvObject);
4448 
4449     ULONG (STDMETHODCALLTYPE *AddRef)(
4450         IMFByteStream *This);
4451 
4452     ULONG (STDMETHODCALLTYPE *Release)(
4453         IMFByteStream *This);
4454 
4455     /*** IMFByteStream methods ***/
4456     HRESULT (STDMETHODCALLTYPE *GetCapabilities)(
4457         IMFByteStream *This,
4458         DWORD *pdwCapabilities);
4459 
4460     HRESULT (STDMETHODCALLTYPE *GetLength)(
4461         IMFByteStream *This,
4462         QWORD *pqwLength);
4463 
4464     HRESULT (STDMETHODCALLTYPE *SetLength)(
4465         IMFByteStream *This,
4466         QWORD qwLength);
4467 
4468     HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)(
4469         IMFByteStream *This,
4470         QWORD *pqwPosition);
4471 
4472     HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)(
4473         IMFByteStream *This,
4474         QWORD qwPosition);
4475 
4476     HRESULT (STDMETHODCALLTYPE *IsEndOfStream)(
4477         IMFByteStream *This,
4478         WINBOOL *pfEndOfStream);
4479 
4480     HRESULT (STDMETHODCALLTYPE *Read)(
4481         IMFByteStream *This,
4482         BYTE *pb,
4483         ULONG cb,
4484         ULONG *pcbRead);
4485 
4486     HRESULT (STDMETHODCALLTYPE *BeginRead)(
4487         IMFByteStream *This,
4488         BYTE *pb,
4489         ULONG cb,
4490         IMFAsyncCallback *pCallback,
4491         IUnknown *punkState);
4492 
4493     HRESULT (STDMETHODCALLTYPE *EndRead)(
4494         IMFByteStream *This,
4495         IMFAsyncResult *pResult,
4496         ULONG *pcbRead);
4497 
4498     HRESULT (STDMETHODCALLTYPE *Write)(
4499         IMFByteStream *This,
4500         const BYTE *pb,
4501         ULONG cb,
4502         ULONG *pcbWritten);
4503 
4504     HRESULT (STDMETHODCALLTYPE *BeginWrite)(
4505         IMFByteStream *This,
4506         const BYTE *pb,
4507         ULONG cb,
4508         IMFAsyncCallback *pCallback,
4509         IUnknown *punkState);
4510 
4511     HRESULT (STDMETHODCALLTYPE *EndWrite)(
4512         IMFByteStream *This,
4513         IMFAsyncResult *pResult,
4514         ULONG *pcbWritten);
4515 
4516     HRESULT (STDMETHODCALLTYPE *Seek)(
4517         IMFByteStream *This,
4518         MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
4519         LONGLONG llSeekOffset,
4520         DWORD dwSeekFlags,
4521         QWORD *pqwCurrentPosition);
4522 
4523     HRESULT (STDMETHODCALLTYPE *Flush)(
4524         IMFByteStream *This);
4525 
4526     HRESULT (STDMETHODCALLTYPE *Close)(
4527         IMFByteStream *This);
4528 
4529     END_INTERFACE
4530 } IMFByteStreamVtbl;
4531 
4532 interface IMFByteStream {
4533     CONST_VTBL IMFByteStreamVtbl* lpVtbl;
4534 };
4535 
4536 #ifdef COBJMACROS
4537 #ifndef WIDL_C_INLINE_WRAPPERS
4538 /*** IUnknown methods ***/
4539 #define IMFByteStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4540 #define IMFByteStream_AddRef(This) (This)->lpVtbl->AddRef(This)
4541 #define IMFByteStream_Release(This) (This)->lpVtbl->Release(This)
4542 /*** IMFByteStream methods ***/
4543 #define IMFByteStream_GetCapabilities(This,pdwCapabilities) (This)->lpVtbl->GetCapabilities(This,pdwCapabilities)
4544 #define IMFByteStream_GetLength(This,pqwLength) (This)->lpVtbl->GetLength(This,pqwLength)
4545 #define IMFByteStream_SetLength(This,qwLength) (This)->lpVtbl->SetLength(This,qwLength)
4546 #define IMFByteStream_GetCurrentPosition(This,pqwPosition) (This)->lpVtbl->GetCurrentPosition(This,pqwPosition)
4547 #define IMFByteStream_SetCurrentPosition(This,qwPosition) (This)->lpVtbl->SetCurrentPosition(This,qwPosition)
4548 #define IMFByteStream_IsEndOfStream(This,pfEndOfStream) (This)->lpVtbl->IsEndOfStream(This,pfEndOfStream)
4549 #define IMFByteStream_Read(This,pb,cb,pcbRead) (This)->lpVtbl->Read(This,pb,cb,pcbRead)
4550 #define IMFByteStream_BeginRead(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState)
4551 #define IMFByteStream_EndRead(This,pResult,pcbRead) (This)->lpVtbl->EndRead(This,pResult,pcbRead)
4552 #define IMFByteStream_Write(This,pb,cb,pcbWritten) (This)->lpVtbl->Write(This,pb,cb,pcbWritten)
4553 #define IMFByteStream_BeginWrite(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState)
4554 #define IMFByteStream_EndWrite(This,pResult,pcbWritten) (This)->lpVtbl->EndWrite(This,pResult,pcbWritten)
4555 #define IMFByteStream_Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition) (This)->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition)
4556 #define IMFByteStream_Flush(This) (This)->lpVtbl->Flush(This)
4557 #define IMFByteStream_Close(This) (This)->lpVtbl->Close(This)
4558 #else
4559 /*** IUnknown methods ***/
4560 static FORCEINLINE HRESULT IMFByteStream_QueryInterface(IMFByteStream* This,REFIID riid,void **ppvObject) {
4561     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4562 }
4563 static FORCEINLINE ULONG IMFByteStream_AddRef(IMFByteStream* This) {
4564     return This->lpVtbl->AddRef(This);
4565 }
4566 static FORCEINLINE ULONG IMFByteStream_Release(IMFByteStream* This) {
4567     return This->lpVtbl->Release(This);
4568 }
4569 /*** IMFByteStream methods ***/
4570 static FORCEINLINE HRESULT IMFByteStream_GetCapabilities(IMFByteStream* This,DWORD *pdwCapabilities) {
4571     return This->lpVtbl->GetCapabilities(This,pdwCapabilities);
4572 }
4573 static FORCEINLINE HRESULT IMFByteStream_GetLength(IMFByteStream* This,QWORD *pqwLength) {
4574     return This->lpVtbl->GetLength(This,pqwLength);
4575 }
4576 static FORCEINLINE HRESULT IMFByteStream_SetLength(IMFByteStream* This,QWORD qwLength) {
4577     return This->lpVtbl->SetLength(This,qwLength);
4578 }
4579 static FORCEINLINE HRESULT IMFByteStream_GetCurrentPosition(IMFByteStream* This,QWORD *pqwPosition) {
4580     return This->lpVtbl->GetCurrentPosition(This,pqwPosition);
4581 }
4582 static FORCEINLINE HRESULT IMFByteStream_SetCurrentPosition(IMFByteStream* This,QWORD qwPosition) {
4583     return This->lpVtbl->SetCurrentPosition(This,qwPosition);
4584 }
4585 static FORCEINLINE HRESULT IMFByteStream_IsEndOfStream(IMFByteStream* This,WINBOOL *pfEndOfStream) {
4586     return This->lpVtbl->IsEndOfStream(This,pfEndOfStream);
4587 }
4588 static FORCEINLINE HRESULT IMFByteStream_Read(IMFByteStream* This,BYTE *pb,ULONG cb,ULONG *pcbRead) {
4589     return This->lpVtbl->Read(This,pb,cb,pcbRead);
4590 }
4591 static FORCEINLINE HRESULT IMFByteStream_BeginRead(IMFByteStream* This,BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4592     return This->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState);
4593 }
4594 static FORCEINLINE HRESULT IMFByteStream_EndRead(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbRead) {
4595     return This->lpVtbl->EndRead(This,pResult,pcbRead);
4596 }
4597 static FORCEINLINE HRESULT IMFByteStream_Write(IMFByteStream* This,const BYTE *pb,ULONG cb,ULONG *pcbWritten) {
4598     return This->lpVtbl->Write(This,pb,cb,pcbWritten);
4599 }
4600 static FORCEINLINE HRESULT IMFByteStream_BeginWrite(IMFByteStream* This,const BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4601     return This->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState);
4602 }
4603 static FORCEINLINE HRESULT IMFByteStream_EndWrite(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbWritten) {
4604     return This->lpVtbl->EndWrite(This,pResult,pcbWritten);
4605 }
4606 static FORCEINLINE HRESULT IMFByteStream_Seek(IMFByteStream* This,MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,LONGLONG llSeekOffset,DWORD dwSeekFlags,QWORD *pqwCurrentPosition) {
4607     return This->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition);
4608 }
4609 static FORCEINLINE HRESULT IMFByteStream_Flush(IMFByteStream* This) {
4610     return This->lpVtbl->Flush(This);
4611 }
4612 static FORCEINLINE HRESULT IMFByteStream_Close(IMFByteStream* This) {
4613     return This->lpVtbl->Close(This);
4614 }
4615 #endif
4616 #endif
4617 
4618 #endif
4619 
4620 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteBeginRead_Proxy(
4621     IMFByteStream* This,
4622     ULONG cb,
4623     IMFRemoteAsyncCallback *pCallback);
4624 void __RPC_STUB IMFByteStream_RemoteBeginRead_Stub(
4625     IRpcStubBuffer* This,
4626     IRpcChannelBuffer* pRpcChannelBuffer,
4627     PRPC_MESSAGE pRpcMessage,
4628     DWORD* pdwStubPhase);
4629 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteEndRead_Proxy(
4630     IMFByteStream* This,
4631     IUnknown *punkResult,
4632     BYTE *pb,
4633     ULONG cb,
4634     ULONG *pcbRead);
4635 void __RPC_STUB IMFByteStream_RemoteEndRead_Stub(
4636     IRpcStubBuffer* This,
4637     IRpcChannelBuffer* pRpcChannelBuffer,
4638     PRPC_MESSAGE pRpcMessage,
4639     DWORD* pdwStubPhase);
4640 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteBeginWrite_Proxy(
4641     IMFByteStream* This,
4642     const BYTE *pb,
4643     ULONG cb,
4644     IMFRemoteAsyncCallback *pCallback);
4645 void __RPC_STUB IMFByteStream_RemoteBeginWrite_Stub(
4646     IRpcStubBuffer* This,
4647     IRpcChannelBuffer* pRpcChannelBuffer,
4648     PRPC_MESSAGE pRpcMessage,
4649     DWORD* pdwStubPhase);
4650 HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteEndWrite_Proxy(
4651     IMFByteStream* This,
4652     IUnknown *punkResult,
4653     ULONG *pcbWritten);
4654 void __RPC_STUB IMFByteStream_RemoteEndWrite_Stub(
4655     IRpcStubBuffer* This,
4656     IRpcChannelBuffer* pRpcChannelBuffer,
4657     PRPC_MESSAGE pRpcMessage,
4658     DWORD* pdwStubPhase);
4659 HRESULT CALLBACK IMFByteStream_BeginRead_Proxy(
4660     IMFByteStream* This,
4661     BYTE *pb,
4662     ULONG cb,
4663     IMFAsyncCallback *pCallback,
4664     IUnknown *punkState);
4665 HRESULT __RPC_STUB IMFByteStream_BeginRead_Stub(
4666     IMFByteStream* This,
4667     ULONG cb,
4668     IMFRemoteAsyncCallback *pCallback);
4669 HRESULT CALLBACK IMFByteStream_EndRead_Proxy(
4670     IMFByteStream* This,
4671     IMFAsyncResult *pResult,
4672     ULONG *pcbRead);
4673 HRESULT __RPC_STUB IMFByteStream_EndRead_Stub(
4674     IMFByteStream* This,
4675     IUnknown *punkResult,
4676     BYTE *pb,
4677     ULONG cb,
4678     ULONG *pcbRead);
4679 HRESULT CALLBACK IMFByteStream_BeginWrite_Proxy(
4680     IMFByteStream* This,
4681     const BYTE *pb,
4682     ULONG cb,
4683     IMFAsyncCallback *pCallback,
4684     IUnknown *punkState);
4685 HRESULT __RPC_STUB IMFByteStream_BeginWrite_Stub(
4686     IMFByteStream* This,
4687     const BYTE *pb,
4688     ULONG cb,
4689     IMFRemoteAsyncCallback *pCallback);
4690 HRESULT CALLBACK IMFByteStream_EndWrite_Proxy(
4691     IMFByteStream* This,
4692     IMFAsyncResult *pResult,
4693     ULONG *pcbWritten);
4694 HRESULT __RPC_STUB IMFByteStream_EndWrite_Stub(
4695     IMFByteStream* This,
4696     IUnknown *punkResult,
4697     ULONG *pcbWritten);
4698 
4699 #endif  /* __IMFByteStream_INTERFACE_DEFINED__ */
4700 
4701 
4702 #define MFBYTESTREAM_IS_READABLE 0x00000001
4703 #define MFBYTESTREAM_IS_WRITABLE 0x00000002
4704 #define MFBYTESTREAM_IS_SEEKABLE 0x00000004
4705 #define MFBYTESTREAM_IS_REMOTE 0x00000008
4706 #define MFBYTESTREAM_IS_DIRECTORY 0x00000080
4707 #define MFBYTESTREAM_HAS_SLOW_SEEK 0x00000100
4708 #define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED 0x00000200
4709 #if WINVER >= _WIN32_WINNT_WIN7
4710 #define MFBYTESTREAM_SHARE_WRITE 0x00000400
4711 #endif
4712 #if WINVER >= _WIN32_WINNT_WIN8
4713 #define MFBYTESTREAM_DOES_NOT_USE_NETWORK 0x00000800
4714 #endif
4715 
4716 #define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO 0x00000001
4717 
4718 EXTERN_GUID( MF_BYTESTREAM_ORIGIN_NAME, 0xfc358288, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
4719 EXTERN_GUID( MF_BYTESTREAM_CONTENT_TYPE, 0xfc358289, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
4720 EXTERN_GUID( MF_BYTESTREAM_DURATION, 0xfc35828a, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
4721 EXTERN_GUID( MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
4722 #if (WINVER >= _WIN32_WINNT_WIN7)
4723 EXTERN_GUID( MF_BYTESTREAM_IFO_FILE_URI, 0xfc35828c, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
4724 EXTERN_GUID( MF_BYTESTREAM_DLNA_PROFILE_ID, 0xfc35828d, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
4725 EXTERN_GUID( MF_BYTESTREAM_EFFECTIVE_URL, 0x9afa0209, 0x89d1, 0x42af, 0x84, 0x56, 0x1d, 0xe6, 0xb5, 0x62, 0xd6, 0x91);
4726 EXTERN_GUID( MF_BYTESTREAM_TRANSCODED, 0xb6c5c282, 0x4dc9, 0x4db9, 0xab, 0x48, 0xcf, 0x3b, 0x6d, 0x8b, 0xc5, 0xe0 );
4727 #endif
4728 #endif
4729 
4730 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
4731 EXTERN_GUID(CLSID_MFByteStreamProxyClassFactory, 0x770e8e77, 0x4916, 0x441c, 0xa9, 0xa7, 0xb3, 0x42, 0xd0, 0xee, 0xbc, 0x71 );
4732 
4733 /*****************************************************************************
4734  * IMFByteStreamProxyClassFactory interface
4735  */
4736 #ifndef __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__
4737 #define __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__
4738 
4739 DEFINE_GUID(IID_IMFByteStreamProxyClassFactory, 0xa6b43f84, 0x5c0a, 0x42e8, 0xa4,0x4d, 0xb1,0x85,0x7a,0x76,0x99,0x2f);
4740 #if defined(__cplusplus) && !defined(CINTERFACE)
4741 MIDL_INTERFACE("a6b43f84-5c0a-42e8-a44d-b1857a76992f")
4742 IMFByteStreamProxyClassFactory : public IUnknown
4743 {
4744     virtual HRESULT STDMETHODCALLTYPE CreateByteStreamProxy(
4745         IMFByteStream *pByteStream,
4746         IMFAttributes *pAttributes,
4747         REFIID riid,
4748         LPVOID *ppvObject) = 0;
4749 
4750 };
4751 #ifdef __CRT_UUID_DECL
4752 __CRT_UUID_DECL(IMFByteStreamProxyClassFactory, 0xa6b43f84, 0x5c0a, 0x42e8, 0xa4,0x4d, 0xb1,0x85,0x7a,0x76,0x99,0x2f)
4753 #endif
4754 #else
4755 typedef struct IMFByteStreamProxyClassFactoryVtbl {
4756     BEGIN_INTERFACE
4757 
4758     /*** IUnknown methods ***/
4759     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4760         IMFByteStreamProxyClassFactory *This,
4761         REFIID riid,
4762         void **ppvObject);
4763 
4764     ULONG (STDMETHODCALLTYPE *AddRef)(
4765         IMFByteStreamProxyClassFactory *This);
4766 
4767     ULONG (STDMETHODCALLTYPE *Release)(
4768         IMFByteStreamProxyClassFactory *This);
4769 
4770     /*** IMFByteStreamProxyClassFactory methods ***/
4771     HRESULT (STDMETHODCALLTYPE *CreateByteStreamProxy)(
4772         IMFByteStreamProxyClassFactory *This,
4773         IMFByteStream *pByteStream,
4774         IMFAttributes *pAttributes,
4775         REFIID riid,
4776         LPVOID *ppvObject);
4777 
4778     END_INTERFACE
4779 } IMFByteStreamProxyClassFactoryVtbl;
4780 
4781 interface IMFByteStreamProxyClassFactory {
4782     CONST_VTBL IMFByteStreamProxyClassFactoryVtbl* lpVtbl;
4783 };
4784 
4785 #ifdef COBJMACROS
4786 #ifndef WIDL_C_INLINE_WRAPPERS
4787 /*** IUnknown methods ***/
4788 #define IMFByteStreamProxyClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4789 #define IMFByteStreamProxyClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
4790 #define IMFByteStreamProxyClassFactory_Release(This) (This)->lpVtbl->Release(This)
4791 /*** IMFByteStreamProxyClassFactory methods ***/
4792 #define IMFByteStreamProxyClassFactory_CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject) (This)->lpVtbl->CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject)
4793 #else
4794 /*** IUnknown methods ***/
4795 static FORCEINLINE HRESULT IMFByteStreamProxyClassFactory_QueryInterface(IMFByteStreamProxyClassFactory* This,REFIID riid,void **ppvObject) {
4796     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4797 }
4798 static FORCEINLINE ULONG IMFByteStreamProxyClassFactory_AddRef(IMFByteStreamProxyClassFactory* This) {
4799     return This->lpVtbl->AddRef(This);
4800 }
4801 static FORCEINLINE ULONG IMFByteStreamProxyClassFactory_Release(IMFByteStreamProxyClassFactory* This) {
4802     return This->lpVtbl->Release(This);
4803 }
4804 /*** IMFByteStreamProxyClassFactory methods ***/
4805 static FORCEINLINE HRESULT IMFByteStreamProxyClassFactory_CreateByteStreamProxy(IMFByteStreamProxyClassFactory* This,IMFByteStream *pByteStream,IMFAttributes *pAttributes,REFIID riid,LPVOID *ppvObject) {
4806     return This->lpVtbl->CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject);
4807 }
4808 #endif
4809 #endif
4810 
4811 #endif
4812 
4813 
4814 #endif  /* __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__ */
4815 
4816 
4817 typedef enum __WIDL_mfobjects_generated_name_00000017 {
4818     MF_ACCESSMODE_READ = 1,
4819     MF_ACCESSMODE_WRITE = 2,
4820     MF_ACCESSMODE_READWRITE = 3
4821 } MF_FILE_ACCESSMODE;
4822 
4823 typedef enum __WIDL_mfobjects_generated_name_00000018 {
4824     MF_OPENMODE_FAIL_IF_NOT_EXIST = 0,
4825     MF_OPENMODE_FAIL_IF_EXIST = 1,
4826     MF_OPENMODE_RESET_IF_EXIST = 2,
4827     MF_OPENMODE_APPEND_IF_EXIST = 3,
4828     MF_OPENMODE_DELETE_IF_EXIST = 4
4829 } MF_FILE_OPENMODE;
4830 
4831 typedef enum __WIDL_mfobjects_generated_name_00000019 {
4832     MF_FILEFLAGS_NONE = 0x0,
4833     MF_FILEFLAGS_NOBUFFERING = 0x1
4834 } MF_FILE_FLAGS;
4835 #endif
4836 
4837 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
4838 /*****************************************************************************
4839  * IMFSampleOutputStream interface
4840  */
4841 #ifndef __IMFSampleOutputStream_INTERFACE_DEFINED__
4842 #define __IMFSampleOutputStream_INTERFACE_DEFINED__
4843 
4844 DEFINE_GUID(IID_IMFSampleOutputStream, 0x8feed468, 0x6f7e, 0x440d, 0x86,0x9a, 0x49,0xbd,0xd2,0x83,0xad,0x0d);
4845 #if defined(__cplusplus) && !defined(CINTERFACE)
4846 MIDL_INTERFACE("8feed468-6f7e-440d-869a-49bdd283ad0d")
4847 IMFSampleOutputStream : public IUnknown
4848 {
4849     virtual HRESULT STDMETHODCALLTYPE BeginWriteSample(
4850         IMFSample *pSample,
4851         IMFAsyncCallback *pCallback,
4852         IUnknown *punkState) = 0;
4853 
4854     virtual HRESULT STDMETHODCALLTYPE EndWriteSample(
4855         IMFAsyncResult *pResult) = 0;
4856 
4857     virtual HRESULT STDMETHODCALLTYPE Close(
4858         ) = 0;
4859 
4860 };
4861 #ifdef __CRT_UUID_DECL
4862 __CRT_UUID_DECL(IMFSampleOutputStream, 0x8feed468, 0x6f7e, 0x440d, 0x86,0x9a, 0x49,0xbd,0xd2,0x83,0xad,0x0d)
4863 #endif
4864 #else
4865 typedef struct IMFSampleOutputStreamVtbl {
4866     BEGIN_INTERFACE
4867 
4868     /*** IUnknown methods ***/
4869     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4870         IMFSampleOutputStream *This,
4871         REFIID riid,
4872         void **ppvObject);
4873 
4874     ULONG (STDMETHODCALLTYPE *AddRef)(
4875         IMFSampleOutputStream *This);
4876 
4877     ULONG (STDMETHODCALLTYPE *Release)(
4878         IMFSampleOutputStream *This);
4879 
4880     /*** IMFSampleOutputStream methods ***/
4881     HRESULT (STDMETHODCALLTYPE *BeginWriteSample)(
4882         IMFSampleOutputStream *This,
4883         IMFSample *pSample,
4884         IMFAsyncCallback *pCallback,
4885         IUnknown *punkState);
4886 
4887     HRESULT (STDMETHODCALLTYPE *EndWriteSample)(
4888         IMFSampleOutputStream *This,
4889         IMFAsyncResult *pResult);
4890 
4891     HRESULT (STDMETHODCALLTYPE *Close)(
4892         IMFSampleOutputStream *This);
4893 
4894     END_INTERFACE
4895 } IMFSampleOutputStreamVtbl;
4896 
4897 interface IMFSampleOutputStream {
4898     CONST_VTBL IMFSampleOutputStreamVtbl* lpVtbl;
4899 };
4900 
4901 #ifdef COBJMACROS
4902 #ifndef WIDL_C_INLINE_WRAPPERS
4903 /*** IUnknown methods ***/
4904 #define IMFSampleOutputStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4905 #define IMFSampleOutputStream_AddRef(This) (This)->lpVtbl->AddRef(This)
4906 #define IMFSampleOutputStream_Release(This) (This)->lpVtbl->Release(This)
4907 /*** IMFSampleOutputStream methods ***/
4908 #define IMFSampleOutputStream_BeginWriteSample(This,pSample,pCallback,punkState) (This)->lpVtbl->BeginWriteSample(This,pSample,pCallback,punkState)
4909 #define IMFSampleOutputStream_EndWriteSample(This,pResult) (This)->lpVtbl->EndWriteSample(This,pResult)
4910 #define IMFSampleOutputStream_Close(This) (This)->lpVtbl->Close(This)
4911 #else
4912 /*** IUnknown methods ***/
4913 static FORCEINLINE HRESULT IMFSampleOutputStream_QueryInterface(IMFSampleOutputStream* This,REFIID riid,void **ppvObject) {
4914     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4915 }
4916 static FORCEINLINE ULONG IMFSampleOutputStream_AddRef(IMFSampleOutputStream* This) {
4917     return This->lpVtbl->AddRef(This);
4918 }
4919 static FORCEINLINE ULONG IMFSampleOutputStream_Release(IMFSampleOutputStream* This) {
4920     return This->lpVtbl->Release(This);
4921 }
4922 /*** IMFSampleOutputStream methods ***/
4923 static FORCEINLINE HRESULT IMFSampleOutputStream_BeginWriteSample(IMFSampleOutputStream* This,IMFSample *pSample,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4924     return This->lpVtbl->BeginWriteSample(This,pSample,pCallback,punkState);
4925 }
4926 static FORCEINLINE HRESULT IMFSampleOutputStream_EndWriteSample(IMFSampleOutputStream* This,IMFAsyncResult *pResult) {
4927     return This->lpVtbl->EndWriteSample(This,pResult);
4928 }
4929 static FORCEINLINE HRESULT IMFSampleOutputStream_Close(IMFSampleOutputStream* This) {
4930     return This->lpVtbl->Close(This);
4931 }
4932 #endif
4933 #endif
4934 
4935 #endif
4936 
4937 
4938 #endif  /* __IMFSampleOutputStream_INTERFACE_DEFINED__ */
4939 
4940 
4941 /*****************************************************************************
4942  * IMFCollection interface
4943  */
4944 #ifndef __IMFCollection_INTERFACE_DEFINED__
4945 #define __IMFCollection_INTERFACE_DEFINED__
4946 
4947 DEFINE_GUID(IID_IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe);
4948 #if defined(__cplusplus) && !defined(CINTERFACE)
4949 MIDL_INTERFACE("5bc8a76b-869a-46a3-9b03-fa218a66aebe")
4950 IMFCollection : public IUnknown
4951 {
4952     virtual HRESULT STDMETHODCALLTYPE GetElementCount(
4953         DWORD *pcElements) = 0;
4954 
4955     virtual HRESULT STDMETHODCALLTYPE GetElement(
4956         DWORD dwElementIndex,
4957         IUnknown **ppUnkElement) = 0;
4958 
4959     virtual HRESULT STDMETHODCALLTYPE AddElement(
4960         IUnknown *pUnkElement) = 0;
4961 
4962     virtual HRESULT STDMETHODCALLTYPE RemoveElement(
4963         DWORD dwElementIndex,
4964         IUnknown **ppUnkElement) = 0;
4965 
4966     virtual HRESULT STDMETHODCALLTYPE InsertElementAt(
4967         DWORD dwIndex,
4968         IUnknown *pUnknown) = 0;
4969 
4970     virtual HRESULT STDMETHODCALLTYPE RemoveAllElements(
4971         ) = 0;
4972 
4973 };
4974 #ifdef __CRT_UUID_DECL
4975 __CRT_UUID_DECL(IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe)
4976 #endif
4977 #else
4978 typedef struct IMFCollectionVtbl {
4979     BEGIN_INTERFACE
4980 
4981     /*** IUnknown methods ***/
4982     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4983         IMFCollection *This,
4984         REFIID riid,
4985         void **ppvObject);
4986 
4987     ULONG (STDMETHODCALLTYPE *AddRef)(
4988         IMFCollection *This);
4989 
4990     ULONG (STDMETHODCALLTYPE *Release)(
4991         IMFCollection *This);
4992 
4993     /*** IMFCollection methods ***/
4994     HRESULT (STDMETHODCALLTYPE *GetElementCount)(
4995         IMFCollection *This,
4996         DWORD *pcElements);
4997 
4998     HRESULT (STDMETHODCALLTYPE *GetElement)(
4999         IMFCollection *This,
5000         DWORD dwElementIndex,
5001         IUnknown **ppUnkElement);
5002 
5003     HRESULT (STDMETHODCALLTYPE *AddElement)(
5004         IMFCollection *This,
5005         IUnknown *pUnkElement);
5006 
5007     HRESULT (STDMETHODCALLTYPE *RemoveElement)(
5008         IMFCollection *This,
5009         DWORD dwElementIndex,
5010         IUnknown **ppUnkElement);
5011 
5012     HRESULT (STDMETHODCALLTYPE *InsertElementAt)(
5013         IMFCollection *This,
5014         DWORD dwIndex,
5015         IUnknown *pUnknown);
5016 
5017     HRESULT (STDMETHODCALLTYPE *RemoveAllElements)(
5018         IMFCollection *This);
5019 
5020     END_INTERFACE
5021 } IMFCollectionVtbl;
5022 
5023 interface IMFCollection {
5024     CONST_VTBL IMFCollectionVtbl* lpVtbl;
5025 };
5026 
5027 #ifdef COBJMACROS
5028 #ifndef WIDL_C_INLINE_WRAPPERS
5029 /*** IUnknown methods ***/
5030 #define IMFCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5031 #define IMFCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
5032 #define IMFCollection_Release(This) (This)->lpVtbl->Release(This)
5033 /*** IMFCollection methods ***/
5034 #define IMFCollection_GetElementCount(This,pcElements) (This)->lpVtbl->GetElementCount(This,pcElements)
5035 #define IMFCollection_GetElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement)
5036 #define IMFCollection_AddElement(This,pUnkElement) (This)->lpVtbl->AddElement(This,pUnkElement)
5037 #define IMFCollection_RemoveElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement)
5038 #define IMFCollection_InsertElementAt(This,dwIndex,pUnknown) (This)->lpVtbl->InsertElementAt(This,dwIndex,pUnknown)
5039 #define IMFCollection_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This)
5040 #else
5041 /*** IUnknown methods ***/
5042 static FORCEINLINE HRESULT IMFCollection_QueryInterface(IMFCollection* This,REFIID riid,void **ppvObject) {
5043     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5044 }
5045 static FORCEINLINE ULONG IMFCollection_AddRef(IMFCollection* This) {
5046     return This->lpVtbl->AddRef(This);
5047 }
5048 static FORCEINLINE ULONG IMFCollection_Release(IMFCollection* This) {
5049     return This->lpVtbl->Release(This);
5050 }
5051 /*** IMFCollection methods ***/
5052 static FORCEINLINE HRESULT IMFCollection_GetElementCount(IMFCollection* This,DWORD *pcElements) {
5053     return This->lpVtbl->GetElementCount(This,pcElements);
5054 }
5055 static FORCEINLINE HRESULT IMFCollection_GetElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
5056     return This->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement);
5057 }
5058 static FORCEINLINE HRESULT IMFCollection_AddElement(IMFCollection* This,IUnknown *pUnkElement) {
5059     return This->lpVtbl->AddElement(This,pUnkElement);
5060 }
5061 static FORCEINLINE HRESULT IMFCollection_RemoveElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
5062     return This->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement);
5063 }
5064 static FORCEINLINE HRESULT IMFCollection_InsertElementAt(IMFCollection* This,DWORD dwIndex,IUnknown *pUnknown) {
5065     return This->lpVtbl->InsertElementAt(This,dwIndex,pUnknown);
5066 }
5067 static FORCEINLINE HRESULT IMFCollection_RemoveAllElements(IMFCollection* This) {
5068     return This->lpVtbl->RemoveAllElements(This);
5069 }
5070 #endif
5071 #endif
5072 
5073 #endif
5074 
5075 
5076 #endif  /* __IMFCollection_INTERFACE_DEFINED__ */
5077 
5078 
5079 /*****************************************************************************
5080  * IMFMediaEventQueue interface
5081  */
5082 #ifndef __IMFMediaEventQueue_INTERFACE_DEFINED__
5083 #define __IMFMediaEventQueue_INTERFACE_DEFINED__
5084 
5085 DEFINE_GUID(IID_IMFMediaEventQueue, 0x36f846fc, 0x2256, 0x48b6, 0xb5,0x8e, 0xe2,0xb6,0x38,0x31,0x65,0x81);
5086 #if defined(__cplusplus) && !defined(CINTERFACE)
5087 MIDL_INTERFACE("36f846fc-2256-48b6-b58e-e2b638316581")
5088 IMFMediaEventQueue : public IUnknown
5089 {
5090     virtual HRESULT STDMETHODCALLTYPE GetEvent(
5091         DWORD dwFlags,
5092         IMFMediaEvent **ppEvent) = 0;
5093 
5094     virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
5095         IMFAsyncCallback *pCallback,
5096         IUnknown *punkState) = 0;
5097 
5098     virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
5099         IMFAsyncResult *pResult,
5100         IMFMediaEvent **ppEvent) = 0;
5101 
5102     virtual HRESULT STDMETHODCALLTYPE QueueEvent(
5103         IMFMediaEvent *pEvent) = 0;
5104 
5105     virtual HRESULT STDMETHODCALLTYPE QueueEventParamVar(
5106         MediaEventType met,
5107         REFGUID guidExtendedType,
5108         HRESULT hrStatus,
5109         const PROPVARIANT *pvValue) = 0;
5110 
5111     virtual HRESULT STDMETHODCALLTYPE QueueEventParamUnk(
5112         MediaEventType met,
5113         REFGUID guidExtendedType,
5114         HRESULT hrStatus,
5115         IUnknown *pUnk) = 0;
5116 
5117     virtual HRESULT STDMETHODCALLTYPE Shutdown(
5118         ) = 0;
5119 
5120 };
5121 #ifdef __CRT_UUID_DECL
5122 __CRT_UUID_DECL(IMFMediaEventQueue, 0x36f846fc, 0x2256, 0x48b6, 0xb5,0x8e, 0xe2,0xb6,0x38,0x31,0x65,0x81)
5123 #endif
5124 #else
5125 typedef struct IMFMediaEventQueueVtbl {
5126     BEGIN_INTERFACE
5127 
5128     /*** IUnknown methods ***/
5129     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5130         IMFMediaEventQueue *This,
5131         REFIID riid,
5132         void **ppvObject);
5133 
5134     ULONG (STDMETHODCALLTYPE *AddRef)(
5135         IMFMediaEventQueue *This);
5136 
5137     ULONG (STDMETHODCALLTYPE *Release)(
5138         IMFMediaEventQueue *This);
5139 
5140     /*** IMFMediaEventQueue methods ***/
5141     HRESULT (STDMETHODCALLTYPE *GetEvent)(
5142         IMFMediaEventQueue *This,
5143         DWORD dwFlags,
5144         IMFMediaEvent **ppEvent);
5145 
5146     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
5147         IMFMediaEventQueue *This,
5148         IMFAsyncCallback *pCallback,
5149         IUnknown *punkState);
5150 
5151     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
5152         IMFMediaEventQueue *This,
5153         IMFAsyncResult *pResult,
5154         IMFMediaEvent **ppEvent);
5155 
5156     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
5157         IMFMediaEventQueue *This,
5158         IMFMediaEvent *pEvent);
5159 
5160     HRESULT (STDMETHODCALLTYPE *QueueEventParamVar)(
5161         IMFMediaEventQueue *This,
5162         MediaEventType met,
5163         REFGUID guidExtendedType,
5164         HRESULT hrStatus,
5165         const PROPVARIANT *pvValue);
5166 
5167     HRESULT (STDMETHODCALLTYPE *QueueEventParamUnk)(
5168         IMFMediaEventQueue *This,
5169         MediaEventType met,
5170         REFGUID guidExtendedType,
5171         HRESULT hrStatus,
5172         IUnknown *pUnk);
5173 
5174     HRESULT (STDMETHODCALLTYPE *Shutdown)(
5175         IMFMediaEventQueue *This);
5176 
5177     END_INTERFACE
5178 } IMFMediaEventQueueVtbl;
5179 
5180 interface IMFMediaEventQueue {
5181     CONST_VTBL IMFMediaEventQueueVtbl* lpVtbl;
5182 };
5183 
5184 #ifdef COBJMACROS
5185 #ifndef WIDL_C_INLINE_WRAPPERS
5186 /*** IUnknown methods ***/
5187 #define IMFMediaEventQueue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5188 #define IMFMediaEventQueue_AddRef(This) (This)->lpVtbl->AddRef(This)
5189 #define IMFMediaEventQueue_Release(This) (This)->lpVtbl->Release(This)
5190 /*** IMFMediaEventQueue methods ***/
5191 #define IMFMediaEventQueue_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
5192 #define IMFMediaEventQueue_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
5193 #define IMFMediaEventQueue_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
5194 #define IMFMediaEventQueue_QueueEvent(This,pEvent) (This)->lpVtbl->QueueEvent(This,pEvent)
5195 #define IMFMediaEventQueue_QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue)
5196 #define IMFMediaEventQueue_QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk) (This)->lpVtbl->QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk)
5197 #define IMFMediaEventQueue_Shutdown(This) (This)->lpVtbl->Shutdown(This)
5198 #else
5199 /*** IUnknown methods ***/
5200 static FORCEINLINE HRESULT IMFMediaEventQueue_QueryInterface(IMFMediaEventQueue* This,REFIID riid,void **ppvObject) {
5201     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5202 }
5203 static FORCEINLINE ULONG IMFMediaEventQueue_AddRef(IMFMediaEventQueue* This) {
5204     return This->lpVtbl->AddRef(This);
5205 }
5206 static FORCEINLINE ULONG IMFMediaEventQueue_Release(IMFMediaEventQueue* This) {
5207     return This->lpVtbl->Release(This);
5208 }
5209 /*** IMFMediaEventQueue methods ***/
5210 static FORCEINLINE HRESULT IMFMediaEventQueue_GetEvent(IMFMediaEventQueue* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
5211     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
5212 }
5213 static FORCEINLINE HRESULT IMFMediaEventQueue_BeginGetEvent(IMFMediaEventQueue* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5214     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
5215 }
5216 static FORCEINLINE HRESULT IMFMediaEventQueue_EndGetEvent(IMFMediaEventQueue* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
5217     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
5218 }
5219 static FORCEINLINE HRESULT IMFMediaEventQueue_QueueEvent(IMFMediaEventQueue* This,IMFMediaEvent *pEvent) {
5220     return This->lpVtbl->QueueEvent(This,pEvent);
5221 }
5222 static FORCEINLINE HRESULT IMFMediaEventQueue_QueueEventParamVar(IMFMediaEventQueue* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
5223     return This->lpVtbl->QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue);
5224 }
5225 static FORCEINLINE HRESULT IMFMediaEventQueue_QueueEventParamUnk(IMFMediaEventQueue* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,IUnknown *pUnk) {
5226     return This->lpVtbl->QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk);
5227 }
5228 static FORCEINLINE HRESULT IMFMediaEventQueue_Shutdown(IMFMediaEventQueue* This) {
5229     return This->lpVtbl->Shutdown(This);
5230 }
5231 #endif
5232 #endif
5233 
5234 #endif
5235 
5236 
5237 #endif  /* __IMFMediaEventQueue_INTERFACE_DEFINED__ */
5238 
5239 
5240 /*****************************************************************************
5241  * IMFActivate interface
5242  */
5243 #ifndef __IMFActivate_INTERFACE_DEFINED__
5244 #define __IMFActivate_INTERFACE_DEFINED__
5245 
5246 DEFINE_GUID(IID_IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67);
5247 #if defined(__cplusplus) && !defined(CINTERFACE)
5248 MIDL_INTERFACE("7fee9e9a-4a89-47a6-899c-b6a53a70fb67")
5249 IMFActivate : public IMFAttributes
5250 {
5251     virtual HRESULT STDMETHODCALLTYPE ActivateObject(
5252         REFIID riid,
5253         void **ppv) = 0;
5254 
5255     virtual HRESULT STDMETHODCALLTYPE ShutdownObject(
5256         ) = 0;
5257 
5258     virtual HRESULT STDMETHODCALLTYPE DetachObject(
5259         ) = 0;
5260 
5261 };
5262 #ifdef __CRT_UUID_DECL
5263 __CRT_UUID_DECL(IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67)
5264 #endif
5265 #else
5266 typedef struct IMFActivateVtbl {
5267     BEGIN_INTERFACE
5268 
5269     /*** IUnknown methods ***/
5270     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5271         IMFActivate *This,
5272         REFIID riid,
5273         void **ppvObject);
5274 
5275     ULONG (STDMETHODCALLTYPE *AddRef)(
5276         IMFActivate *This);
5277 
5278     ULONG (STDMETHODCALLTYPE *Release)(
5279         IMFActivate *This);
5280 
5281     /*** IMFAttributes methods ***/
5282     HRESULT (STDMETHODCALLTYPE *GetItem)(
5283         IMFActivate *This,
5284         REFGUID guidKey,
5285         PROPVARIANT *pValue);
5286 
5287     HRESULT (STDMETHODCALLTYPE *GetItemType)(
5288         IMFActivate *This,
5289         REFGUID guidKey,
5290         MF_ATTRIBUTE_TYPE *pType);
5291 
5292     HRESULT (STDMETHODCALLTYPE *CompareItem)(
5293         IMFActivate *This,
5294         REFGUID guidKey,
5295         REFPROPVARIANT Value,
5296         WINBOOL *pbResult);
5297 
5298     HRESULT (STDMETHODCALLTYPE *Compare)(
5299         IMFActivate *This,
5300         IMFAttributes *pTheirs,
5301         MF_ATTRIBUTES_MATCH_TYPE MatchType,
5302         WINBOOL *pbResult);
5303 
5304     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
5305         IMFActivate *This,
5306         REFGUID guidKey,
5307         UINT32 *punValue);
5308 
5309     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
5310         IMFActivate *This,
5311         REFGUID guidKey,
5312         UINT64 *punValue);
5313 
5314     HRESULT (STDMETHODCALLTYPE *GetDouble)(
5315         IMFActivate *This,
5316         REFGUID guidKey,
5317         double *pfValue);
5318 
5319     HRESULT (STDMETHODCALLTYPE *GetGUID)(
5320         IMFActivate *This,
5321         REFGUID guidKey,
5322         GUID *pguidValue);
5323 
5324     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
5325         IMFActivate *This,
5326         REFGUID guidKey,
5327         UINT32 *pcchLength);
5328 
5329     HRESULT (STDMETHODCALLTYPE *GetString)(
5330         IMFActivate *This,
5331         REFGUID guidKey,
5332         LPWSTR pwszValue,
5333         UINT32 cchBufSize,
5334         UINT32 *pcchLength);
5335 
5336     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
5337         IMFActivate *This,
5338         REFGUID guidKey,
5339         LPWSTR *ppwszValue,
5340         UINT32 *pcchLength);
5341 
5342     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
5343         IMFActivate *This,
5344         REFGUID guidKey,
5345         UINT32 *pcbBlobSize);
5346 
5347     HRESULT (STDMETHODCALLTYPE *GetBlob)(
5348         IMFActivate *This,
5349         REFGUID guidKey,
5350         UINT8 *pBuf,
5351         UINT32 cbBufSize,
5352         UINT32 *pcbBlobSize);
5353 
5354     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
5355         IMFActivate *This,
5356         REFGUID guidKey,
5357         UINT8 **ppBuf,
5358         UINT32 *pcbSize);
5359 
5360     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
5361         IMFActivate *This,
5362         REFGUID guidKey,
5363         REFIID riid,
5364         LPVOID *ppv);
5365 
5366     HRESULT (STDMETHODCALLTYPE *SetItem)(
5367         IMFActivate *This,
5368         REFGUID guidKey,
5369         REFPROPVARIANT Value);
5370 
5371     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
5372         IMFActivate *This,
5373         REFGUID guidKey);
5374 
5375     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
5376         IMFActivate *This);
5377 
5378     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
5379         IMFActivate *This,
5380         REFGUID guidKey,
5381         UINT32 unValue);
5382 
5383     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
5384         IMFActivate *This,
5385         REFGUID guidKey,
5386         UINT64 unValue);
5387 
5388     HRESULT (STDMETHODCALLTYPE *SetDouble)(
5389         IMFActivate *This,
5390         REFGUID guidKey,
5391         double fValue);
5392 
5393     HRESULT (STDMETHODCALLTYPE *SetGUID)(
5394         IMFActivate *This,
5395         REFGUID guidKey,
5396         REFGUID guidValue);
5397 
5398     HRESULT (STDMETHODCALLTYPE *SetString)(
5399         IMFActivate *This,
5400         REFGUID guidKey,
5401         LPCWSTR wszValue);
5402 
5403     HRESULT (STDMETHODCALLTYPE *SetBlob)(
5404         IMFActivate *This,
5405         REFGUID guidKey,
5406         const UINT8 *pBuf,
5407         UINT32 cbBufSize);
5408 
5409     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
5410         IMFActivate *This,
5411         REFGUID guidKey,
5412         IUnknown *pUnknown);
5413 
5414     HRESULT (STDMETHODCALLTYPE *LockStore)(
5415         IMFActivate *This);
5416 
5417     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
5418         IMFActivate *This);
5419 
5420     HRESULT (STDMETHODCALLTYPE *GetCount)(
5421         IMFActivate *This,
5422         UINT32 *pcItems);
5423 
5424     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
5425         IMFActivate *This,
5426         UINT32 unIndex,
5427         GUID *pguidKey,
5428         PROPVARIANT *pValue);
5429 
5430     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
5431         IMFActivate *This,
5432         IMFAttributes *pDest);
5433 
5434     /*** IMFActivate methods ***/
5435     HRESULT (STDMETHODCALLTYPE *ActivateObject)(
5436         IMFActivate *This,
5437         REFIID riid,
5438         void **ppv);
5439 
5440     HRESULT (STDMETHODCALLTYPE *ShutdownObject)(
5441         IMFActivate *This);
5442 
5443     HRESULT (STDMETHODCALLTYPE *DetachObject)(
5444         IMFActivate *This);
5445 
5446     END_INTERFACE
5447 } IMFActivateVtbl;
5448 
5449 interface IMFActivate {
5450     CONST_VTBL IMFActivateVtbl* lpVtbl;
5451 };
5452 
5453 #ifdef COBJMACROS
5454 #ifndef WIDL_C_INLINE_WRAPPERS
5455 /*** IUnknown methods ***/
5456 #define IMFActivate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5457 #define IMFActivate_AddRef(This) (This)->lpVtbl->AddRef(This)
5458 #define IMFActivate_Release(This) (This)->lpVtbl->Release(This)
5459 /*** IMFAttributes methods ***/
5460 #define IMFActivate_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
5461 #define IMFActivate_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
5462 #define IMFActivate_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
5463 #define IMFActivate_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
5464 #define IMFActivate_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
5465 #define IMFActivate_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
5466 #define IMFActivate_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
5467 #define IMFActivate_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
5468 #define IMFActivate_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
5469 #define IMFActivate_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
5470 #define IMFActivate_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
5471 #define IMFActivate_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
5472 #define IMFActivate_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
5473 #define IMFActivate_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
5474 #define IMFActivate_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
5475 #define IMFActivate_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
5476 #define IMFActivate_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
5477 #define IMFActivate_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
5478 #define IMFActivate_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
5479 #define IMFActivate_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
5480 #define IMFActivate_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
5481 #define IMFActivate_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
5482 #define IMFActivate_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
5483 #define IMFActivate_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
5484 #define IMFActivate_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
5485 #define IMFActivate_LockStore(This) (This)->lpVtbl->LockStore(This)
5486 #define IMFActivate_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
5487 #define IMFActivate_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
5488 #define IMFActivate_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
5489 #define IMFActivate_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
5490 /*** IMFActivate methods ***/
5491 #define IMFActivate_ActivateObject(This,riid,ppv) (This)->lpVtbl->ActivateObject(This,riid,ppv)
5492 #define IMFActivate_ShutdownObject(This) (This)->lpVtbl->ShutdownObject(This)
5493 #define IMFActivate_DetachObject(This) (This)->lpVtbl->DetachObject(This)
5494 #else
5495 /*** IUnknown methods ***/
5496 static FORCEINLINE HRESULT IMFActivate_QueryInterface(IMFActivate* This,REFIID riid,void **ppvObject) {
5497     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5498 }
5499 static FORCEINLINE ULONG IMFActivate_AddRef(IMFActivate* This) {
5500     return This->lpVtbl->AddRef(This);
5501 }
5502 static FORCEINLINE ULONG IMFActivate_Release(IMFActivate* This) {
5503     return This->lpVtbl->Release(This);
5504 }
5505 /*** IMFAttributes methods ***/
5506 static FORCEINLINE HRESULT IMFActivate_GetItem(IMFActivate* This,REFGUID guidKey,PROPVARIANT *pValue) {
5507     return This->lpVtbl->GetItem(This,guidKey,pValue);
5508 }
5509 static FORCEINLINE HRESULT IMFActivate_GetItemType(IMFActivate* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
5510     return This->lpVtbl->GetItemType(This,guidKey,pType);
5511 }
5512 static FORCEINLINE HRESULT IMFActivate_CompareItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
5513     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
5514 }
5515 static FORCEINLINE HRESULT IMFActivate_Compare(IMFActivate* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
5516     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
5517 }
5518 static FORCEINLINE HRESULT IMFActivate_GetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 *punValue) {
5519     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
5520 }
5521 static FORCEINLINE HRESULT IMFActivate_GetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 *punValue) {
5522     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
5523 }
5524 static FORCEINLINE HRESULT IMFActivate_GetDouble(IMFActivate* This,REFGUID guidKey,double *pfValue) {
5525     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
5526 }
5527 static FORCEINLINE HRESULT IMFActivate_GetGUID(IMFActivate* This,REFGUID guidKey,GUID *pguidValue) {
5528     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
5529 }
5530 static FORCEINLINE HRESULT IMFActivate_GetStringLength(IMFActivate* This,REFGUID guidKey,UINT32 *pcchLength) {
5531     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
5532 }
5533 static FORCEINLINE HRESULT IMFActivate_GetString(IMFActivate* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
5534     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
5535 }
5536 static FORCEINLINE HRESULT IMFActivate_GetAllocatedString(IMFActivate* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
5537     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
5538 }
5539 static FORCEINLINE HRESULT IMFActivate_GetBlobSize(IMFActivate* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
5540     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
5541 }
5542 static FORCEINLINE HRESULT IMFActivate_GetBlob(IMFActivate* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
5543     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
5544 }
5545 static FORCEINLINE HRESULT IMFActivate_GetAllocatedBlob(IMFActivate* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
5546     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
5547 }
5548 static FORCEINLINE HRESULT IMFActivate_GetUnknown(IMFActivate* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
5549     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
5550 }
5551 static FORCEINLINE HRESULT IMFActivate_SetItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value) {
5552     return This->lpVtbl->SetItem(This,guidKey,Value);
5553 }
5554 static FORCEINLINE HRESULT IMFActivate_DeleteItem(IMFActivate* This,REFGUID guidKey) {
5555     return This->lpVtbl->DeleteItem(This,guidKey);
5556 }
5557 static FORCEINLINE HRESULT IMFActivate_DeleteAllItems(IMFActivate* This) {
5558     return This->lpVtbl->DeleteAllItems(This);
5559 }
5560 static FORCEINLINE HRESULT IMFActivate_SetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 unValue) {
5561     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
5562 }
5563 static FORCEINLINE HRESULT IMFActivate_SetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 unValue) {
5564     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
5565 }
5566 static FORCEINLINE HRESULT IMFActivate_SetDouble(IMFActivate* This,REFGUID guidKey,double fValue) {
5567     return This->lpVtbl->SetDouble(This,guidKey,fValue);
5568 }
5569 static FORCEINLINE HRESULT IMFActivate_SetGUID(IMFActivate* This,REFGUID guidKey,REFGUID guidValue) {
5570     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
5571 }
5572 static FORCEINLINE HRESULT IMFActivate_SetString(IMFActivate* This,REFGUID guidKey,LPCWSTR wszValue) {
5573     return This->lpVtbl->SetString(This,guidKey,wszValue);
5574 }
5575 static FORCEINLINE HRESULT IMFActivate_SetBlob(IMFActivate* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
5576     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
5577 }
5578 static FORCEINLINE HRESULT IMFActivate_SetUnknown(IMFActivate* This,REFGUID guidKey,IUnknown *pUnknown) {
5579     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
5580 }
5581 static FORCEINLINE HRESULT IMFActivate_LockStore(IMFActivate* This) {
5582     return This->lpVtbl->LockStore(This);
5583 }
5584 static FORCEINLINE HRESULT IMFActivate_UnlockStore(IMFActivate* This) {
5585     return This->lpVtbl->UnlockStore(This);
5586 }
5587 static FORCEINLINE HRESULT IMFActivate_GetCount(IMFActivate* This,UINT32 *pcItems) {
5588     return This->lpVtbl->GetCount(This,pcItems);
5589 }
5590 static FORCEINLINE HRESULT IMFActivate_GetItemByIndex(IMFActivate* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
5591     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
5592 }
5593 static FORCEINLINE HRESULT IMFActivate_CopyAllItems(IMFActivate* This,IMFAttributes *pDest) {
5594     return This->lpVtbl->CopyAllItems(This,pDest);
5595 }
5596 /*** IMFActivate methods ***/
5597 static FORCEINLINE HRESULT IMFActivate_ActivateObject(IMFActivate* This,REFIID riid,void **ppv) {
5598     return This->lpVtbl->ActivateObject(This,riid,ppv);
5599 }
5600 static FORCEINLINE HRESULT IMFActivate_ShutdownObject(IMFActivate* This) {
5601     return This->lpVtbl->ShutdownObject(This);
5602 }
5603 static FORCEINLINE HRESULT IMFActivate_DetachObject(IMFActivate* This) {
5604     return This->lpVtbl->DetachObject(This);
5605 }
5606 #endif
5607 #endif
5608 
5609 #endif
5610 
5611 
5612 #endif  /* __IMFActivate_INTERFACE_DEFINED__ */
5613 
5614 #endif
5615 
5616 #if WINVER >= _WIN32_WINNT_WIN7
5617 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
5618 typedef enum _MF_Plugin_Type {
5619     MF_Plugin_Type_MFT = 0,
5620     MF_Plugin_Type_MediaSource = 1,
5621     MF_Plugin_Type_MFT_MatchOutputType = 2,
5622     MF_Plugin_Type_Other = (DWORD)-1
5623 } MF_Plugin_Type;
5624 
5625 /*****************************************************************************
5626  * IMFPluginControl interface
5627  */
5628 #ifndef __IMFPluginControl_INTERFACE_DEFINED__
5629 #define __IMFPluginControl_INTERFACE_DEFINED__
5630 
5631 DEFINE_GUID(IID_IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96);
5632 #if defined(__cplusplus) && !defined(CINTERFACE)
5633 MIDL_INTERFACE("5c6c44bf-1db6-435b-9249-e8cd10fdec96")
5634 IMFPluginControl : public IUnknown
5635 {
5636     virtual HRESULT STDMETHODCALLTYPE GetPreferredClsid(
5637         DWORD pluginType,
5638         LPCWSTR selector,
5639         CLSID *clsid) = 0;
5640 
5641     virtual HRESULT STDMETHODCALLTYPE GetPreferredClsidByIndex(
5642         DWORD pluginType,
5643         DWORD index,
5644         LPWSTR *selector,
5645         CLSID *clsid) = 0;
5646 
5647     virtual HRESULT STDMETHODCALLTYPE SetPreferredClsid(
5648         DWORD pluginType,
5649         LPCWSTR selector,
5650         const CLSID *clsid) = 0;
5651 
5652     virtual HRESULT STDMETHODCALLTYPE IsDisabled(
5653         DWORD pluginType,
5654         REFCLSID clsid) = 0;
5655 
5656     virtual HRESULT STDMETHODCALLTYPE GetDisabledByIndex(
5657         DWORD pluginType,
5658         DWORD index,
5659         CLSID *clsid) = 0;
5660 
5661     virtual HRESULT STDMETHODCALLTYPE SetDisabled(
5662         DWORD pluginType,
5663         REFCLSID clsid,
5664         WINBOOL disabled) = 0;
5665 
5666 };
5667 #ifdef __CRT_UUID_DECL
5668 __CRT_UUID_DECL(IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96)
5669 #endif
5670 #else
5671 typedef struct IMFPluginControlVtbl {
5672     BEGIN_INTERFACE
5673 
5674     /*** IUnknown methods ***/
5675     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5676         IMFPluginControl *This,
5677         REFIID riid,
5678         void **ppvObject);
5679 
5680     ULONG (STDMETHODCALLTYPE *AddRef)(
5681         IMFPluginControl *This);
5682 
5683     ULONG (STDMETHODCALLTYPE *Release)(
5684         IMFPluginControl *This);
5685 
5686     /*** IMFPluginControl methods ***/
5687     HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
5688         IMFPluginControl *This,
5689         DWORD pluginType,
5690         LPCWSTR selector,
5691         CLSID *clsid);
5692 
5693     HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
5694         IMFPluginControl *This,
5695         DWORD pluginType,
5696         DWORD index,
5697         LPWSTR *selector,
5698         CLSID *clsid);
5699 
5700     HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
5701         IMFPluginControl *This,
5702         DWORD pluginType,
5703         LPCWSTR selector,
5704         const CLSID *clsid);
5705 
5706     HRESULT (STDMETHODCALLTYPE *IsDisabled)(
5707         IMFPluginControl *This,
5708         DWORD pluginType,
5709         REFCLSID clsid);
5710 
5711     HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
5712         IMFPluginControl *This,
5713         DWORD pluginType,
5714         DWORD index,
5715         CLSID *clsid);
5716 
5717     HRESULT (STDMETHODCALLTYPE *SetDisabled)(
5718         IMFPluginControl *This,
5719         DWORD pluginType,
5720         REFCLSID clsid,
5721         WINBOOL disabled);
5722 
5723     END_INTERFACE
5724 } IMFPluginControlVtbl;
5725 
5726 interface IMFPluginControl {
5727     CONST_VTBL IMFPluginControlVtbl* lpVtbl;
5728 };
5729 
5730 #ifdef COBJMACROS
5731 #ifndef WIDL_C_INLINE_WRAPPERS
5732 /*** IUnknown methods ***/
5733 #define IMFPluginControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5734 #define IMFPluginControl_AddRef(This) (This)->lpVtbl->AddRef(This)
5735 #define IMFPluginControl_Release(This) (This)->lpVtbl->Release(This)
5736 /*** IMFPluginControl methods ***/
5737 #define IMFPluginControl_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
5738 #define IMFPluginControl_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
5739 #define IMFPluginControl_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
5740 #define IMFPluginControl_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
5741 #define IMFPluginControl_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
5742 #define IMFPluginControl_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
5743 #else
5744 /*** IUnknown methods ***/
5745 static FORCEINLINE HRESULT IMFPluginControl_QueryInterface(IMFPluginControl* This,REFIID riid,void **ppvObject) {
5746     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5747 }
5748 static FORCEINLINE ULONG IMFPluginControl_AddRef(IMFPluginControl* This) {
5749     return This->lpVtbl->AddRef(This);
5750 }
5751 static FORCEINLINE ULONG IMFPluginControl_Release(IMFPluginControl* This) {
5752     return This->lpVtbl->Release(This);
5753 }
5754 /*** IMFPluginControl methods ***/
5755 static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
5756     return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
5757 }
5758 static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsidByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
5759     return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
5760 }
5761 static FORCEINLINE HRESULT IMFPluginControl_SetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
5762     return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
5763 }
5764 static FORCEINLINE HRESULT IMFPluginControl_IsDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid) {
5765     return This->lpVtbl->IsDisabled(This,pluginType,clsid);
5766 }
5767 static FORCEINLINE HRESULT IMFPluginControl_GetDisabledByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,CLSID *clsid) {
5768     return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
5769 }
5770 static FORCEINLINE HRESULT IMFPluginControl_SetDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
5771     return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
5772 }
5773 #endif
5774 #endif
5775 
5776 #endif
5777 
5778 
5779 #endif  /* __IMFPluginControl_INTERFACE_DEFINED__ */
5780 
5781 
5782 typedef enum MF_PLUGIN_CONTROL_POLICY {
5783     MF_PLUGIN_CONTROL_POLICY_USE_ALL_PLUGINS = 0,
5784     MF_PLUGIN_CONTROL_POLICY_USE_APPROVED_PLUGINS = 1,
5785     MF_PLUGIN_CONTROL_POLICY_USE_WEB_PLUGINS = 2
5786 } MF_PLUGIN_CONTROL_POLICY;
5787 
5788 /*****************************************************************************
5789  * IMFPluginControl2 interface
5790  */
5791 #ifndef __IMFPluginControl2_INTERFACE_DEFINED__
5792 #define __IMFPluginControl2_INTERFACE_DEFINED__
5793 
5794 DEFINE_GUID(IID_IMFPluginControl2, 0xc6982083, 0x3ddc, 0x45cb, 0xaf,0x5e, 0x0f,0x7a,0x8c,0xe4,0xde,0x77);
5795 #if defined(__cplusplus) && !defined(CINTERFACE)
5796 MIDL_INTERFACE("c6982083-3ddc-45cb-af5e-0f7a8ce4de77")
5797 IMFPluginControl2 : public IMFPluginControl
5798 {
5799     virtual HRESULT STDMETHODCALLTYPE SetPolicy(
5800         MF_PLUGIN_CONTROL_POLICY policy) = 0;
5801 
5802 };
5803 #ifdef __CRT_UUID_DECL
5804 __CRT_UUID_DECL(IMFPluginControl2, 0xc6982083, 0x3ddc, 0x45cb, 0xaf,0x5e, 0x0f,0x7a,0x8c,0xe4,0xde,0x77)
5805 #endif
5806 #else
5807 typedef struct IMFPluginControl2Vtbl {
5808     BEGIN_INTERFACE
5809 
5810     /*** IUnknown methods ***/
5811     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5812         IMFPluginControl2 *This,
5813         REFIID riid,
5814         void **ppvObject);
5815 
5816     ULONG (STDMETHODCALLTYPE *AddRef)(
5817         IMFPluginControl2 *This);
5818 
5819     ULONG (STDMETHODCALLTYPE *Release)(
5820         IMFPluginControl2 *This);
5821 
5822     /*** IMFPluginControl methods ***/
5823     HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
5824         IMFPluginControl2 *This,
5825         DWORD pluginType,
5826         LPCWSTR selector,
5827         CLSID *clsid);
5828 
5829     HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
5830         IMFPluginControl2 *This,
5831         DWORD pluginType,
5832         DWORD index,
5833         LPWSTR *selector,
5834         CLSID *clsid);
5835 
5836     HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
5837         IMFPluginControl2 *This,
5838         DWORD pluginType,
5839         LPCWSTR selector,
5840         const CLSID *clsid);
5841 
5842     HRESULT (STDMETHODCALLTYPE *IsDisabled)(
5843         IMFPluginControl2 *This,
5844         DWORD pluginType,
5845         REFCLSID clsid);
5846 
5847     HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
5848         IMFPluginControl2 *This,
5849         DWORD pluginType,
5850         DWORD index,
5851         CLSID *clsid);
5852 
5853     HRESULT (STDMETHODCALLTYPE *SetDisabled)(
5854         IMFPluginControl2 *This,
5855         DWORD pluginType,
5856         REFCLSID clsid,
5857         WINBOOL disabled);
5858 
5859     /*** IMFPluginControl2 methods ***/
5860     HRESULT (STDMETHODCALLTYPE *SetPolicy)(
5861         IMFPluginControl2 *This,
5862         MF_PLUGIN_CONTROL_POLICY policy);
5863 
5864     END_INTERFACE
5865 } IMFPluginControl2Vtbl;
5866 
5867 interface IMFPluginControl2 {
5868     CONST_VTBL IMFPluginControl2Vtbl* lpVtbl;
5869 };
5870 
5871 #ifdef COBJMACROS
5872 #ifndef WIDL_C_INLINE_WRAPPERS
5873 /*** IUnknown methods ***/
5874 #define IMFPluginControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5875 #define IMFPluginControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
5876 #define IMFPluginControl2_Release(This) (This)->lpVtbl->Release(This)
5877 /*** IMFPluginControl methods ***/
5878 #define IMFPluginControl2_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
5879 #define IMFPluginControl2_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
5880 #define IMFPluginControl2_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
5881 #define IMFPluginControl2_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
5882 #define IMFPluginControl2_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
5883 #define IMFPluginControl2_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
5884 /*** IMFPluginControl2 methods ***/
5885 #define IMFPluginControl2_SetPolicy(This,policy) (This)->lpVtbl->SetPolicy(This,policy)
5886 #else
5887 /*** IUnknown methods ***/
5888 static FORCEINLINE HRESULT IMFPluginControl2_QueryInterface(IMFPluginControl2* This,REFIID riid,void **ppvObject) {
5889     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5890 }
5891 static FORCEINLINE ULONG IMFPluginControl2_AddRef(IMFPluginControl2* This) {
5892     return This->lpVtbl->AddRef(This);
5893 }
5894 static FORCEINLINE ULONG IMFPluginControl2_Release(IMFPluginControl2* This) {
5895     return This->lpVtbl->Release(This);
5896 }
5897 /*** IMFPluginControl methods ***/
5898 static FORCEINLINE HRESULT IMFPluginControl2_GetPreferredClsid(IMFPluginControl2* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
5899     return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
5900 }
5901 static FORCEINLINE HRESULT IMFPluginControl2_GetPreferredClsidByIndex(IMFPluginControl2* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
5902     return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
5903 }
5904 static FORCEINLINE HRESULT IMFPluginControl2_SetPreferredClsid(IMFPluginControl2* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
5905     return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
5906 }
5907 static FORCEINLINE HRESULT IMFPluginControl2_IsDisabled(IMFPluginControl2* This,DWORD pluginType,REFCLSID clsid) {
5908     return This->lpVtbl->IsDisabled(This,pluginType,clsid);
5909 }
5910 static FORCEINLINE HRESULT IMFPluginControl2_GetDisabledByIndex(IMFPluginControl2* This,DWORD pluginType,DWORD index,CLSID *clsid) {
5911     return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
5912 }
5913 static FORCEINLINE HRESULT IMFPluginControl2_SetDisabled(IMFPluginControl2* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
5914     return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
5915 }
5916 /*** IMFPluginControl2 methods ***/
5917 static FORCEINLINE HRESULT IMFPluginControl2_SetPolicy(IMFPluginControl2* This,MF_PLUGIN_CONTROL_POLICY policy) {
5918     return This->lpVtbl->SetPolicy(This,policy);
5919 }
5920 #endif
5921 #endif
5922 
5923 #endif
5924 
5925 
5926 #endif  /* __IMFPluginControl2_INTERFACE_DEFINED__ */
5927 
5928 #endif
5929 
5930 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
5931 /*****************************************************************************
5932  * IMFDXGIDeviceManager interface
5933  */
5934 #ifndef __IMFDXGIDeviceManager_INTERFACE_DEFINED__
5935 #define __IMFDXGIDeviceManager_INTERFACE_DEFINED__
5936 
5937 DEFINE_GUID(IID_IMFDXGIDeviceManager, 0xeb533d5d, 0x2db6, 0x40f8, 0x97,0xa9, 0x49,0x46,0x92,0x01,0x4f,0x07);
5938 #if defined(__cplusplus) && !defined(CINTERFACE)
5939 MIDL_INTERFACE("eb533d5d-2db6-40f8-97a9-494692014f07")
5940 IMFDXGIDeviceManager : public IUnknown
5941 {
5942     virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
5943         HANDLE hDevice) = 0;
5944 
5945     virtual HRESULT STDMETHODCALLTYPE GetVideoService(
5946         HANDLE hDevice,
5947         REFIID riid,
5948         void **ppService) = 0;
5949 
5950     virtual HRESULT STDMETHODCALLTYPE LockDevice(
5951         HANDLE hDevice,
5952         REFIID riid,
5953         void **ppUnkDevice,
5954         WINBOOL fBlock) = 0;
5955 
5956     virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
5957         HANDLE *phDevice) = 0;
5958 
5959     virtual HRESULT STDMETHODCALLTYPE ResetDevice(
5960         IUnknown *pUnkDevice,
5961         UINT resetToken) = 0;
5962 
5963     virtual HRESULT STDMETHODCALLTYPE TestDevice(
5964         HANDLE hDevice) = 0;
5965 
5966     virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
5967         HANDLE hDevice,
5968         WINBOOL fSaveState) = 0;
5969 
5970 };
5971 #ifdef __CRT_UUID_DECL
5972 __CRT_UUID_DECL(IMFDXGIDeviceManager, 0xeb533d5d, 0x2db6, 0x40f8, 0x97,0xa9, 0x49,0x46,0x92,0x01,0x4f,0x07)
5973 #endif
5974 #else
5975 typedef struct IMFDXGIDeviceManagerVtbl {
5976     BEGIN_INTERFACE
5977 
5978     /*** IUnknown methods ***/
5979     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5980         IMFDXGIDeviceManager *This,
5981         REFIID riid,
5982         void **ppvObject);
5983 
5984     ULONG (STDMETHODCALLTYPE *AddRef)(
5985         IMFDXGIDeviceManager *This);
5986 
5987     ULONG (STDMETHODCALLTYPE *Release)(
5988         IMFDXGIDeviceManager *This);
5989 
5990     /*** IMFDXGIDeviceManager methods ***/
5991     HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
5992         IMFDXGIDeviceManager *This,
5993         HANDLE hDevice);
5994 
5995     HRESULT (STDMETHODCALLTYPE *GetVideoService)(
5996         IMFDXGIDeviceManager *This,
5997         HANDLE hDevice,
5998         REFIID riid,
5999         void **ppService);
6000 
6001     HRESULT (STDMETHODCALLTYPE *LockDevice)(
6002         IMFDXGIDeviceManager *This,
6003         HANDLE hDevice,
6004         REFIID riid,
6005         void **ppUnkDevice,
6006         WINBOOL fBlock);
6007 
6008     HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
6009         IMFDXGIDeviceManager *This,
6010         HANDLE *phDevice);
6011 
6012     HRESULT (STDMETHODCALLTYPE *ResetDevice)(
6013         IMFDXGIDeviceManager *This,
6014         IUnknown *pUnkDevice,
6015         UINT resetToken);
6016 
6017     HRESULT (STDMETHODCALLTYPE *TestDevice)(
6018         IMFDXGIDeviceManager *This,
6019         HANDLE hDevice);
6020 
6021     HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
6022         IMFDXGIDeviceManager *This,
6023         HANDLE hDevice,
6024         WINBOOL fSaveState);
6025 
6026     END_INTERFACE
6027 } IMFDXGIDeviceManagerVtbl;
6028 
6029 interface IMFDXGIDeviceManager {
6030     CONST_VTBL IMFDXGIDeviceManagerVtbl* lpVtbl;
6031 };
6032 
6033 #ifdef COBJMACROS
6034 #ifndef WIDL_C_INLINE_WRAPPERS
6035 /*** IUnknown methods ***/
6036 #define IMFDXGIDeviceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6037 #define IMFDXGIDeviceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
6038 #define IMFDXGIDeviceManager_Release(This) (This)->lpVtbl->Release(This)
6039 /*** IMFDXGIDeviceManager methods ***/
6040 #define IMFDXGIDeviceManager_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
6041 #define IMFDXGIDeviceManager_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
6042 #define IMFDXGIDeviceManager_LockDevice(This,hDevice,riid,ppUnkDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,riid,ppUnkDevice,fBlock)
6043 #define IMFDXGIDeviceManager_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
6044 #define IMFDXGIDeviceManager_ResetDevice(This,pUnkDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pUnkDevice,resetToken)
6045 #define IMFDXGIDeviceManager_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
6046 #define IMFDXGIDeviceManager_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
6047 #else
6048 /*** IUnknown methods ***/
6049 static FORCEINLINE HRESULT IMFDXGIDeviceManager_QueryInterface(IMFDXGIDeviceManager* This,REFIID riid,void **ppvObject) {
6050     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6051 }
6052 static FORCEINLINE ULONG IMFDXGIDeviceManager_AddRef(IMFDXGIDeviceManager* This) {
6053     return This->lpVtbl->AddRef(This);
6054 }
6055 static FORCEINLINE ULONG IMFDXGIDeviceManager_Release(IMFDXGIDeviceManager* This) {
6056     return This->lpVtbl->Release(This);
6057 }
6058 /*** IMFDXGIDeviceManager methods ***/
6059 static FORCEINLINE HRESULT IMFDXGIDeviceManager_CloseDeviceHandle(IMFDXGIDeviceManager* This,HANDLE hDevice) {
6060     return This->lpVtbl->CloseDeviceHandle(This,hDevice);
6061 }
6062 static FORCEINLINE HRESULT IMFDXGIDeviceManager_GetVideoService(IMFDXGIDeviceManager* This,HANDLE hDevice,REFIID riid,void **ppService) {
6063     return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
6064 }
6065 static FORCEINLINE HRESULT IMFDXGIDeviceManager_LockDevice(IMFDXGIDeviceManager* This,HANDLE hDevice,REFIID riid,void **ppUnkDevice,WINBOOL fBlock) {
6066     return This->lpVtbl->LockDevice(This,hDevice,riid,ppUnkDevice,fBlock);
6067 }
6068 static FORCEINLINE HRESULT IMFDXGIDeviceManager_OpenDeviceHandle(IMFDXGIDeviceManager* This,HANDLE *phDevice) {
6069     return This->lpVtbl->OpenDeviceHandle(This,phDevice);
6070 }
6071 static FORCEINLINE HRESULT IMFDXGIDeviceManager_ResetDevice(IMFDXGIDeviceManager* This,IUnknown *pUnkDevice,UINT resetToken) {
6072     return This->lpVtbl->ResetDevice(This,pUnkDevice,resetToken);
6073 }
6074 static FORCEINLINE HRESULT IMFDXGIDeviceManager_TestDevice(IMFDXGIDeviceManager* This,HANDLE hDevice) {
6075     return This->lpVtbl->TestDevice(This,hDevice);
6076 }
6077 static FORCEINLINE HRESULT IMFDXGIDeviceManager_UnlockDevice(IMFDXGIDeviceManager* This,HANDLE hDevice,WINBOOL fSaveState) {
6078     return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
6079 }
6080 #endif
6081 #endif
6082 
6083 #endif
6084 
6085 
6086 #endif  /* __IMFDXGIDeviceManager_INTERFACE_DEFINED__ */
6087 
6088 #endif
6089 
6090 #endif
6091 /* Begin additional prototypes for all interfaces */
6092 
6093 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
6094 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
6095 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
6096 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
6097 ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
6098 unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
6099 unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
6100 void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
6101 
6102 /* End additional prototypes */
6103 
6104 #ifdef __cplusplus
6105 }
6106 #endif
6107 
6108 #endif /* __mfobjects_h__ */
6109