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