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