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