1/*** Autogenerated by WIDL 1.6 from include/mfidl.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 __mfidl_h__
16#define __mfidl_h__
17
18/* Forward declarations */
19
20#ifndef __IMFTopologyNode_FWD_DEFINED__
21#define __IMFTopologyNode_FWD_DEFINED__
22typedef interface IMFTopologyNode IMFTopologyNode;
23#endif
24
25#ifndef __IMFTopology_FWD_DEFINED__
26#define __IMFTopology_FWD_DEFINED__
27typedef interface IMFTopology IMFTopology;
28#endif
29
30#ifndef __IMFClock_FWD_DEFINED__
31#define __IMFClock_FWD_DEFINED__
32typedef interface IMFClock IMFClock;
33#endif
34
35#ifndef __IMFMediaSession_FWD_DEFINED__
36#define __IMFMediaSession_FWD_DEFINED__
37typedef interface IMFMediaSession IMFMediaSession;
38#endif
39
40#ifndef __IMFMediaTypeHandler_FWD_DEFINED__
41#define __IMFMediaTypeHandler_FWD_DEFINED__
42typedef interface IMFMediaTypeHandler IMFMediaTypeHandler;
43#endif
44
45#ifndef __IMFStreamDescriptor_FWD_DEFINED__
46#define __IMFStreamDescriptor_FWD_DEFINED__
47typedef interface IMFStreamDescriptor IMFStreamDescriptor;
48#endif
49
50#ifndef __IMFPresentationDescriptor_FWD_DEFINED__
51#define __IMFPresentationDescriptor_FWD_DEFINED__
52typedef interface IMFPresentationDescriptor IMFPresentationDescriptor;
53#endif
54
55#ifndef __IMFMediaSource_FWD_DEFINED__
56#define __IMFMediaSource_FWD_DEFINED__
57typedef interface IMFMediaSource IMFMediaSource;
58#endif
59
60#ifndef __IMFByteStreamBuffering_FWD_DEFINED__
61#define __IMFByteStreamBuffering_FWD_DEFINED__
62typedef interface IMFByteStreamBuffering IMFByteStreamBuffering;
63#endif
64
65/* Headers for imported files */
66
67#include <mfobjects.h>
68
69#ifdef __cplusplus
70extern "C" {
71#endif
72
73#include <mftransform.h>
74#include <windef.h>
75typedef enum MFSESSION_SETTOPOLOGY_FLAGS {
76    MFSESSION_SETTOPOLOGY_IMMEDIATE = 0x1,
77    MFSESSION_SETTOPOLOGY_NORESOLUTION = 0x2,
78    MFSESSION_SETTOPOLOGY_CLEAR_CURRENT = 0x4
79} MFSESSION_SETTOPOLOGY_FLAGS;
80typedef enum MFSESSION_GETFULLTOPOLOGY_FLAGS {
81    MFSESSION_GETFULLTOPOLOGY_CURRENT = 0
82} MFSESSION_GETFULLTOPOLOGY_FLAGS;
83typedef enum MFPMPSESSION_CREATION_FLAGS {
84    MFPMPSESSION_UNPROTECTED_PROCESS = 0x1
85} MFPMPSESSION_CREATION_FLAGS;
86typedef UINT64 TOPOID;
87typedef enum MF_TOPOLOGY_TYPE {
88    MF_TOPOLOGY_OUTPUT_NODE = 0,
89    MF_TOPOLOGY_SOURCESTREAM_NODE = 1,
90    MF_TOPOLOGY_TRANSFORM_NODE = 2,
91    MF_TOPOLOGY_TEE_NODE = 3,
92    MF_TOPOLOGY_MAX = 0xffffffff
93} MF_TOPOLOGY_TYPE;
94/*****************************************************************************
95 * IMFTopologyNode interface
96 */
97#ifndef __IMFTopologyNode_INTERFACE_DEFINED__
98#define __IMFTopologyNode_INTERFACE_DEFINED__
99
100DEFINE_GUID(IID_IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30);
101#if defined(__cplusplus) && !defined(CINTERFACE)
102MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc430")
103IMFTopologyNode : public IMFAttributes
104{
105    virtual HRESULT STDMETHODCALLTYPE SetObject(
106        IUnknown *pObject) = 0;
107
108    virtual HRESULT STDMETHODCALLTYPE GetObject(
109        IUnknown **ppObject) = 0;
110
111    virtual HRESULT STDMETHODCALLTYPE GetNodeType(
112        MF_TOPOLOGY_TYPE *pType) = 0;
113
114    virtual HRESULT STDMETHODCALLTYPE GetTopoNodeID(
115        TOPOID *pID) = 0;
116
117    virtual HRESULT STDMETHODCALLTYPE SetTopoNodeID(
118        TOPOID ullTopoID) = 0;
119
120    virtual HRESULT STDMETHODCALLTYPE GetInputCount(
121        DWORD *pcInputs) = 0;
122
123    virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
124        DWORD *pcOutputs) = 0;
125
126    virtual HRESULT STDMETHODCALLTYPE ConnectOutput(
127        DWORD dwOutputIndex,
128        IMFTopologyNode *pDownstreamNode,
129        DWORD dwInputIndexOnDownstreamNode) = 0;
130
131    virtual HRESULT STDMETHODCALLTYPE DisconnectOutput(
132        DWORD dwOutputIndex) = 0;
133
134    virtual HRESULT STDMETHODCALLTYPE GetInput(
135        DWORD dwInputIndex,
136        IMFTopologyNode **ppUpstreamNode,
137        DWORD *pdwOutputIndexOnUpstreamNode) = 0;
138
139    virtual HRESULT STDMETHODCALLTYPE GetOutput(
140        DWORD dwOutputIndex,
141        IMFTopologyNode **ppDownstreamNode,
142        DWORD *pdwInputIndexOnDownstreamNode) = 0;
143
144    virtual HRESULT STDMETHODCALLTYPE SetOutputPrefType(
145        DWORD dwOutputIndex,
146        IMFMediaType *pType) = 0;
147
148    virtual HRESULT STDMETHODCALLTYPE GetOutputPrefType(
149        DWORD dwOutputIndex,
150        IMFMediaType **ppType) = 0;
151
152    virtual HRESULT STDMETHODCALLTYPE SetInputPrefType(
153        DWORD dwInputIndex,
154        IMFMediaType *pType) = 0;
155
156    virtual HRESULT STDMETHODCALLTYPE GetInputPrefType(
157        DWORD dwInputIndex,
158        IMFMediaType **ppType) = 0;
159
160    virtual HRESULT STDMETHODCALLTYPE CloneFrom(
161        IMFTopologyNode *pNode) = 0;
162
163};
164#ifdef __CRT_UUID_DECL
165__CRT_UUID_DECL(IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30)
166#endif
167#else
168typedef struct IMFTopologyNodeVtbl {
169    BEGIN_INTERFACE
170
171    /*** IUnknown methods ***/
172    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
173        IMFTopologyNode* This,
174        REFIID riid,
175        void **ppvObject);
176
177    ULONG (STDMETHODCALLTYPE *AddRef)(
178        IMFTopologyNode* This);
179
180    ULONG (STDMETHODCALLTYPE *Release)(
181        IMFTopologyNode* This);
182
183    /*** IMFAttributes methods ***/
184    HRESULT (STDMETHODCALLTYPE *GetItem)(
185        IMFTopologyNode* This,
186        REFGUID guidKey,
187        PROPVARIANT *pValue);
188
189    HRESULT (STDMETHODCALLTYPE *GetItemType)(
190        IMFTopologyNode* This,
191        REFGUID guidKey,
192        MF_ATTRIBUTE_TYPE *pType);
193
194    HRESULT (STDMETHODCALLTYPE *CompareItem)(
195        IMFTopologyNode* This,
196        REFGUID guidKey,
197        REFPROPVARIANT Value,
198        WINBOOL *pbResult);
199
200    HRESULT (STDMETHODCALLTYPE *Compare)(
201        IMFTopologyNode* This,
202        IMFAttributes *pTheirs,
203        MF_ATTRIBUTES_MATCH_TYPE MatchType,
204        WINBOOL *pbResult);
205
206    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
207        IMFTopologyNode* This,
208        REFGUID guidKey,
209        UINT32 *punValue);
210
211    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
212        IMFTopologyNode* This,
213        REFGUID guidKey,
214        UINT64 *punValue);
215
216    HRESULT (STDMETHODCALLTYPE *GetDouble)(
217        IMFTopologyNode* This,
218        REFGUID guidKey,
219        double *pfValue);
220
221    HRESULT (STDMETHODCALLTYPE *GetGUID)(
222        IMFTopologyNode* This,
223        REFGUID guidKey,
224        GUID *pguidValue);
225
226    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
227        IMFTopologyNode* This,
228        REFGUID guidKey,
229        UINT32 *pcchLength);
230
231    HRESULT (STDMETHODCALLTYPE *GetString)(
232        IMFTopologyNode* This,
233        REFGUID guidKey,
234        LPWSTR pwszValue,
235        UINT32 cchBufSize,
236        UINT32 *pcchLength);
237
238    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
239        IMFTopologyNode* This,
240        REFGUID guidKey,
241        LPWSTR *ppwszValue,
242        UINT32 *pcchLength);
243
244    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
245        IMFTopologyNode* This,
246        REFGUID guidKey,
247        UINT32 *pcbBlobSize);
248
249    HRESULT (STDMETHODCALLTYPE *GetBlob)(
250        IMFTopologyNode* This,
251        REFGUID guidKey,
252        UINT8 *pBuf,
253        UINT32 cbBufSize,
254        UINT32 *pcbBlobSize);
255
256    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
257        IMFTopologyNode* This,
258        REFGUID guidKey,
259        UINT8 **ppBuf,
260        UINT32 *pcbSize);
261
262    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
263        IMFTopologyNode* This,
264        REFGUID guidKey,
265        REFIID riid,
266        LPVOID *ppv);
267
268    HRESULT (STDMETHODCALLTYPE *SetItem)(
269        IMFTopologyNode* This,
270        REFGUID guidKey,
271        REFPROPVARIANT Value);
272
273    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
274        IMFTopologyNode* This,
275        REFGUID guidKey);
276
277    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
278        IMFTopologyNode* This);
279
280    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
281        IMFTopologyNode* This,
282        REFGUID guidKey,
283        UINT32 unValue);
284
285    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
286        IMFTopologyNode* This,
287        REFGUID guidKey,
288        UINT64 unValue);
289
290    HRESULT (STDMETHODCALLTYPE *SetDouble)(
291        IMFTopologyNode* This,
292        REFGUID guidKey,
293        double fValue);
294
295    HRESULT (STDMETHODCALLTYPE *SetGUID)(
296        IMFTopologyNode* This,
297        REFGUID guidKey,
298        REFGUID guidValue);
299
300    HRESULT (STDMETHODCALLTYPE *SetString)(
301        IMFTopologyNode* This,
302        REFGUID guidKey,
303        LPCWSTR wszValue);
304
305    HRESULT (STDMETHODCALLTYPE *SetBlob)(
306        IMFTopologyNode* This,
307        REFGUID guidKey,
308        const UINT8 *pBuf,
309        UINT32 cbBufSize);
310
311    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
312        IMFTopologyNode* This,
313        REFGUID guidKey,
314        IUnknown *pUnknown);
315
316    HRESULT (STDMETHODCALLTYPE *LockStore)(
317        IMFTopologyNode* This);
318
319    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
320        IMFTopologyNode* This);
321
322    HRESULT (STDMETHODCALLTYPE *GetCount)(
323        IMFTopologyNode* This,
324        UINT32 *pcItems);
325
326    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
327        IMFTopologyNode* This,
328        UINT32 unIndex,
329        GUID *pguidKey,
330        PROPVARIANT *pValue);
331
332    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
333        IMFTopologyNode* This,
334        IMFAttributes *pDest);
335
336    /*** IMFTopologyNode methods ***/
337    HRESULT (STDMETHODCALLTYPE *SetObject)(
338        IMFTopologyNode* This,
339        IUnknown *pObject);
340
341    HRESULT (STDMETHODCALLTYPE *GetObject)(
342        IMFTopologyNode* This,
343        IUnknown **ppObject);
344
345    HRESULT (STDMETHODCALLTYPE *GetNodeType)(
346        IMFTopologyNode* This,
347        MF_TOPOLOGY_TYPE *pType);
348
349    HRESULT (STDMETHODCALLTYPE *GetTopoNodeID)(
350        IMFTopologyNode* This,
351        TOPOID *pID);
352
353    HRESULT (STDMETHODCALLTYPE *SetTopoNodeID)(
354        IMFTopologyNode* This,
355        TOPOID ullTopoID);
356
357    HRESULT (STDMETHODCALLTYPE *GetInputCount)(
358        IMFTopologyNode* This,
359        DWORD *pcInputs);
360
361    HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
362        IMFTopologyNode* This,
363        DWORD *pcOutputs);
364
365    HRESULT (STDMETHODCALLTYPE *ConnectOutput)(
366        IMFTopologyNode* This,
367        DWORD dwOutputIndex,
368        IMFTopologyNode *pDownstreamNode,
369        DWORD dwInputIndexOnDownstreamNode);
370
371    HRESULT (STDMETHODCALLTYPE *DisconnectOutput)(
372        IMFTopologyNode* This,
373        DWORD dwOutputIndex);
374
375    HRESULT (STDMETHODCALLTYPE *GetInput)(
376        IMFTopologyNode* This,
377        DWORD dwInputIndex,
378        IMFTopologyNode **ppUpstreamNode,
379        DWORD *pdwOutputIndexOnUpstreamNode);
380
381    HRESULT (STDMETHODCALLTYPE *GetOutput)(
382        IMFTopologyNode* This,
383        DWORD dwOutputIndex,
384        IMFTopologyNode **ppDownstreamNode,
385        DWORD *pdwInputIndexOnDownstreamNode);
386
387    HRESULT (STDMETHODCALLTYPE *SetOutputPrefType)(
388        IMFTopologyNode* This,
389        DWORD dwOutputIndex,
390        IMFMediaType *pType);
391
392    HRESULT (STDMETHODCALLTYPE *GetOutputPrefType)(
393        IMFTopologyNode* This,
394        DWORD dwOutputIndex,
395        IMFMediaType **ppType);
396
397    HRESULT (STDMETHODCALLTYPE *SetInputPrefType)(
398        IMFTopologyNode* This,
399        DWORD dwInputIndex,
400        IMFMediaType *pType);
401
402    HRESULT (STDMETHODCALLTYPE *GetInputPrefType)(
403        IMFTopologyNode* This,
404        DWORD dwInputIndex,
405        IMFMediaType **ppType);
406
407    HRESULT (STDMETHODCALLTYPE *CloneFrom)(
408        IMFTopologyNode* This,
409        IMFTopologyNode *pNode);
410
411    END_INTERFACE
412} IMFTopologyNodeVtbl;
413interface IMFTopologyNode {
414    CONST_VTBL IMFTopologyNodeVtbl* lpVtbl;
415};
416
417#ifdef COBJMACROS
418#ifndef WIDL_C_INLINE_WRAPPERS
419/*** IUnknown methods ***/
420#define IMFTopologyNode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
421#define IMFTopologyNode_AddRef(This) (This)->lpVtbl->AddRef(This)
422#define IMFTopologyNode_Release(This) (This)->lpVtbl->Release(This)
423/*** IMFAttributes methods ***/
424#define IMFTopologyNode_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
425#define IMFTopologyNode_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
426#define IMFTopologyNode_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
427#define IMFTopologyNode_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
428#define IMFTopologyNode_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
429#define IMFTopologyNode_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
430#define IMFTopologyNode_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
431#define IMFTopologyNode_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
432#define IMFTopologyNode_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
433#define IMFTopologyNode_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
434#define IMFTopologyNode_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
435#define IMFTopologyNode_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
436#define IMFTopologyNode_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
437#define IMFTopologyNode_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
438#define IMFTopologyNode_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
439#define IMFTopologyNode_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
440#define IMFTopologyNode_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
441#define IMFTopologyNode_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
442#define IMFTopologyNode_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
443#define IMFTopologyNode_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
444#define IMFTopologyNode_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
445#define IMFTopologyNode_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
446#define IMFTopologyNode_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
447#define IMFTopologyNode_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
448#define IMFTopologyNode_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
449#define IMFTopologyNode_LockStore(This) (This)->lpVtbl->LockStore(This)
450#define IMFTopologyNode_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
451#define IMFTopologyNode_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
452#define IMFTopologyNode_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
453#define IMFTopologyNode_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
454/*** IMFTopologyNode methods ***/
455#define IMFTopologyNode_SetObject(This,pObject) (This)->lpVtbl->SetObject(This,pObject)
456#define IMFTopologyNode_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
457#define IMFTopologyNode_GetNodeType(This,pType) (This)->lpVtbl->GetNodeType(This,pType)
458#define IMFTopologyNode_GetTopoNodeID(This,pID) (This)->lpVtbl->GetTopoNodeID(This,pID)
459#define IMFTopologyNode_SetTopoNodeID(This,ullTopoID) (This)->lpVtbl->SetTopoNodeID(This,ullTopoID)
460#define IMFTopologyNode_GetInputCount(This,pcInputs) (This)->lpVtbl->GetInputCount(This,pcInputs)
461#define IMFTopologyNode_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
462#define IMFTopologyNode_ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode) (This)->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode)
463#define IMFTopologyNode_DisconnectOutput(This,dwOutputIndex) (This)->lpVtbl->DisconnectOutput(This,dwOutputIndex)
464#define IMFTopologyNode_GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode) (This)->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode)
465#define IMFTopologyNode_GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode) (This)->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode)
466#define IMFTopologyNode_SetOutputPrefType(This,dwOutputIndex,pType) (This)->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType)
467#define IMFTopologyNode_GetOutputPrefType(This,dwOutputIndex,ppType) (This)->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType)
468#define IMFTopologyNode_SetInputPrefType(This,dwInputIndex,pType) (This)->lpVtbl->SetInputPrefType(This,dwInputIndex,pType)
469#define IMFTopologyNode_GetInputPrefType(This,dwInputIndex,ppType) (This)->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType)
470#define IMFTopologyNode_CloneFrom(This,pNode) (This)->lpVtbl->CloneFrom(This,pNode)
471#else
472/*** IUnknown methods ***/
473static FORCEINLINE HRESULT IMFTopologyNode_QueryInterface(IMFTopologyNode* This,REFIID riid,void **ppvObject) {
474    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
475}
476static FORCEINLINE ULONG IMFTopologyNode_AddRef(IMFTopologyNode* This) {
477    return This->lpVtbl->AddRef(This);
478}
479static FORCEINLINE ULONG IMFTopologyNode_Release(IMFTopologyNode* This) {
480    return This->lpVtbl->Release(This);
481}
482/*** IMFAttributes methods ***/
483static FORCEINLINE HRESULT IMFTopologyNode_GetItem(IMFTopologyNode* This,REFGUID guidKey,PROPVARIANT *pValue) {
484    return This->lpVtbl->GetItem(This,guidKey,pValue);
485}
486static FORCEINLINE HRESULT IMFTopologyNode_GetItemType(IMFTopologyNode* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
487    return This->lpVtbl->GetItemType(This,guidKey,pType);
488}
489static FORCEINLINE HRESULT IMFTopologyNode_CompareItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
490    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
491}
492static FORCEINLINE HRESULT IMFTopologyNode_Compare(IMFTopologyNode* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
493    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
494}
495static FORCEINLINE HRESULT IMFTopologyNode_GetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 *punValue) {
496    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
497}
498static FORCEINLINE HRESULT IMFTopologyNode_GetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 *punValue) {
499    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
500}
501static FORCEINLINE HRESULT IMFTopologyNode_GetDouble(IMFTopologyNode* This,REFGUID guidKey,double *pfValue) {
502    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
503}
504static FORCEINLINE HRESULT IMFTopologyNode_GetGUID(IMFTopologyNode* This,REFGUID guidKey,GUID *pguidValue) {
505    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
506}
507static FORCEINLINE HRESULT IMFTopologyNode_GetStringLength(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcchLength) {
508    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
509}
510static FORCEINLINE HRESULT IMFTopologyNode_GetString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
511    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
512}
513static FORCEINLINE HRESULT IMFTopologyNode_GetAllocatedString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
514    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
515}
516static FORCEINLINE HRESULT IMFTopologyNode_GetBlobSize(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
517    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
518}
519static FORCEINLINE HRESULT IMFTopologyNode_GetBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
520    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
521}
522static FORCEINLINE HRESULT IMFTopologyNode_GetAllocatedBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
523    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
524}
525static FORCEINLINE HRESULT IMFTopologyNode_GetUnknown(IMFTopologyNode* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
526    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
527}
528static FORCEINLINE HRESULT IMFTopologyNode_SetItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value) {
529    return This->lpVtbl->SetItem(This,guidKey,Value);
530}
531static FORCEINLINE HRESULT IMFTopologyNode_DeleteItem(IMFTopologyNode* This,REFGUID guidKey) {
532    return This->lpVtbl->DeleteItem(This,guidKey);
533}
534static FORCEINLINE HRESULT IMFTopologyNode_DeleteAllItems(IMFTopologyNode* This) {
535    return This->lpVtbl->DeleteAllItems(This);
536}
537static FORCEINLINE HRESULT IMFTopologyNode_SetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 unValue) {
538    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
539}
540static FORCEINLINE HRESULT IMFTopologyNode_SetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 unValue) {
541    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
542}
543static FORCEINLINE HRESULT IMFTopologyNode_SetDouble(IMFTopologyNode* This,REFGUID guidKey,double fValue) {
544    return This->lpVtbl->SetDouble(This,guidKey,fValue);
545}
546static FORCEINLINE HRESULT IMFTopologyNode_SetGUID(IMFTopologyNode* This,REFGUID guidKey,REFGUID guidValue) {
547    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
548}
549static FORCEINLINE HRESULT IMFTopologyNode_SetString(IMFTopologyNode* This,REFGUID guidKey,LPCWSTR wszValue) {
550    return This->lpVtbl->SetString(This,guidKey,wszValue);
551}
552static FORCEINLINE HRESULT IMFTopologyNode_SetBlob(IMFTopologyNode* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
553    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
554}
555static FORCEINLINE HRESULT IMFTopologyNode_SetUnknown(IMFTopologyNode* This,REFGUID guidKey,IUnknown *pUnknown) {
556    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
557}
558static FORCEINLINE HRESULT IMFTopologyNode_LockStore(IMFTopologyNode* This) {
559    return This->lpVtbl->LockStore(This);
560}
561static FORCEINLINE HRESULT IMFTopologyNode_UnlockStore(IMFTopologyNode* This) {
562    return This->lpVtbl->UnlockStore(This);
563}
564static FORCEINLINE HRESULT IMFTopologyNode_GetCount(IMFTopologyNode* This,UINT32 *pcItems) {
565    return This->lpVtbl->GetCount(This,pcItems);
566}
567static FORCEINLINE HRESULT IMFTopologyNode_GetItemByIndex(IMFTopologyNode* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
568    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
569}
570static FORCEINLINE HRESULT IMFTopologyNode_CopyAllItems(IMFTopologyNode* This,IMFAttributes *pDest) {
571    return This->lpVtbl->CopyAllItems(This,pDest);
572}
573/*** IMFTopologyNode methods ***/
574static FORCEINLINE HRESULT IMFTopologyNode_SetObject(IMFTopologyNode* This,IUnknown *pObject) {
575    return This->lpVtbl->SetObject(This,pObject);
576}
577static FORCEINLINE HRESULT IMFTopologyNode_GetObject(IMFTopologyNode* This,IUnknown **ppObject) {
578    return This->lpVtbl->GetObject(This,ppObject);
579}
580static FORCEINLINE HRESULT IMFTopologyNode_GetNodeType(IMFTopologyNode* This,MF_TOPOLOGY_TYPE *pType) {
581    return This->lpVtbl->GetNodeType(This,pType);
582}
583static FORCEINLINE HRESULT IMFTopologyNode_GetTopoNodeID(IMFTopologyNode* This,TOPOID *pID) {
584    return This->lpVtbl->GetTopoNodeID(This,pID);
585}
586static FORCEINLINE HRESULT IMFTopologyNode_SetTopoNodeID(IMFTopologyNode* This,TOPOID ullTopoID) {
587    return This->lpVtbl->SetTopoNodeID(This,ullTopoID);
588}
589static FORCEINLINE HRESULT IMFTopologyNode_GetInputCount(IMFTopologyNode* This,DWORD *pcInputs) {
590    return This->lpVtbl->GetInputCount(This,pcInputs);
591}
592static FORCEINLINE HRESULT IMFTopologyNode_GetOutputCount(IMFTopologyNode* This,DWORD *pcOutputs) {
593    return This->lpVtbl->GetOutputCount(This,pcOutputs);
594}
595static FORCEINLINE HRESULT IMFTopologyNode_ConnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode *pDownstreamNode,DWORD dwInputIndexOnDownstreamNode) {
596    return This->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode);
597}
598static FORCEINLINE HRESULT IMFTopologyNode_DisconnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex) {
599    return This->lpVtbl->DisconnectOutput(This,dwOutputIndex);
600}
601static FORCEINLINE HRESULT IMFTopologyNode_GetInput(IMFTopologyNode* This,DWORD dwInputIndex,IMFTopologyNode **ppUpstreamNode,DWORD *pdwOutputIndexOnUpstreamNode) {
602    return This->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode);
603}
604static FORCEINLINE HRESULT IMFTopologyNode_GetOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode **ppDownstreamNode,DWORD *pdwInputIndexOnDownstreamNode) {
605    return This->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode);
606}
607static FORCEINLINE HRESULT IMFTopologyNode_SetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType *pType) {
608    return This->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType);
609}
610static FORCEINLINE HRESULT IMFTopologyNode_GetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType **ppType) {
611    return This->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType);
612}
613static FORCEINLINE HRESULT IMFTopologyNode_SetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType *pType) {
614    return This->lpVtbl->SetInputPrefType(This,dwInputIndex,pType);
615}
616static FORCEINLINE HRESULT IMFTopologyNode_GetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType **ppType) {
617    return This->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType);
618}
619static FORCEINLINE HRESULT IMFTopologyNode_CloneFrom(IMFTopologyNode* This,IMFTopologyNode *pNode) {
620    return This->lpVtbl->CloneFrom(This,pNode);
621}
622#endif
623#endif
624
625#endif
626
627HRESULT STDMETHODCALLTYPE IMFTopologyNode_SetObject_Proxy(
628    IMFTopologyNode* This,
629    IUnknown *pObject);
630void __RPC_STUB IMFTopologyNode_SetObject_Stub(
631    IRpcStubBuffer* This,
632    IRpcChannelBuffer* pRpcChannelBuffer,
633    PRPC_MESSAGE pRpcMessage,
634    DWORD* pdwStubPhase);
635HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetObject_Proxy(
636    IMFTopologyNode* This,
637    IUnknown **ppObject);
638void __RPC_STUB IMFTopologyNode_GetObject_Stub(
639    IRpcStubBuffer* This,
640    IRpcChannelBuffer* pRpcChannelBuffer,
641    PRPC_MESSAGE pRpcMessage,
642    DWORD* pdwStubPhase);
643HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetNodeType_Proxy(
644    IMFTopologyNode* This,
645    MF_TOPOLOGY_TYPE *pType);
646void __RPC_STUB IMFTopologyNode_GetNodeType_Stub(
647    IRpcStubBuffer* This,
648    IRpcChannelBuffer* pRpcChannelBuffer,
649    PRPC_MESSAGE pRpcMessage,
650    DWORD* pdwStubPhase);
651HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetTopoNodeID_Proxy(
652    IMFTopologyNode* This,
653    TOPOID *pID);
654void __RPC_STUB IMFTopologyNode_GetTopoNodeID_Stub(
655    IRpcStubBuffer* This,
656    IRpcChannelBuffer* pRpcChannelBuffer,
657    PRPC_MESSAGE pRpcMessage,
658    DWORD* pdwStubPhase);
659HRESULT STDMETHODCALLTYPE IMFTopologyNode_SetTopoNodeID_Proxy(
660    IMFTopologyNode* This,
661    TOPOID ullTopoID);
662void __RPC_STUB IMFTopologyNode_SetTopoNodeID_Stub(
663    IRpcStubBuffer* This,
664    IRpcChannelBuffer* pRpcChannelBuffer,
665    PRPC_MESSAGE pRpcMessage,
666    DWORD* pdwStubPhase);
667HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetInputCount_Proxy(
668    IMFTopologyNode* This,
669    DWORD *pcInputs);
670void __RPC_STUB IMFTopologyNode_GetInputCount_Stub(
671    IRpcStubBuffer* This,
672    IRpcChannelBuffer* pRpcChannelBuffer,
673    PRPC_MESSAGE pRpcMessage,
674    DWORD* pdwStubPhase);
675HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetOutputCount_Proxy(
676    IMFTopologyNode* This,
677    DWORD *pcOutputs);
678void __RPC_STUB IMFTopologyNode_GetOutputCount_Stub(
679    IRpcStubBuffer* This,
680    IRpcChannelBuffer* pRpcChannelBuffer,
681    PRPC_MESSAGE pRpcMessage,
682    DWORD* pdwStubPhase);
683HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetInput_Proxy(
684    IMFTopologyNode* This,
685    DWORD dwInputIndex,
686    IMFTopologyNode **ppUpstreamNode,
687    DWORD *pdwOutputIndexOnUpstreamNode);
688void __RPC_STUB IMFTopologyNode_GetInput_Stub(
689    IRpcStubBuffer* This,
690    IRpcChannelBuffer* pRpcChannelBuffer,
691    PRPC_MESSAGE pRpcMessage,
692    DWORD* pdwStubPhase);
693HRESULT STDMETHODCALLTYPE IMFTopologyNode_GetOutput_Proxy(
694    IMFTopologyNode* This,
695    DWORD dwOutputIndex,
696    IMFTopologyNode **ppDownstreamNode,
697    DWORD *pdwInputIndexOnDownstreamNode);
698void __RPC_STUB IMFTopologyNode_GetOutput_Stub(
699    IRpcStubBuffer* This,
700    IRpcChannelBuffer* pRpcChannelBuffer,
701    PRPC_MESSAGE pRpcMessage,
702    DWORD* pdwStubPhase);
703HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetOutputPrefType_Proxy(
704    IMFTopologyNode* This,
705    DWORD dwOutputIndex,
706    DWORD *pcbData,
707    BYTE **ppbData);
708void __RPC_STUB IMFTopologyNode_RemoteGetOutputPrefType_Stub(
709    IRpcStubBuffer* This,
710    IRpcChannelBuffer* pRpcChannelBuffer,
711    PRPC_MESSAGE pRpcMessage,
712    DWORD* pdwStubPhase);
713HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetInputPrefType_Proxy(
714    IMFTopologyNode* This,
715    DWORD dwInputIndex,
716    DWORD *pcbData,
717    BYTE **ppbData);
718void __RPC_STUB IMFTopologyNode_RemoteGetInputPrefType_Stub(
719    IRpcStubBuffer* This,
720    IRpcChannelBuffer* pRpcChannelBuffer,
721    PRPC_MESSAGE pRpcMessage,
722    DWORD* pdwStubPhase);
723HRESULT STDMETHODCALLTYPE IMFTopologyNode_CloneFrom_Proxy(
724    IMFTopologyNode* This,
725    IMFTopologyNode *pNode);
726void __RPC_STUB IMFTopologyNode_CloneFrom_Stub(
727    IRpcStubBuffer* This,
728    IRpcChannelBuffer* pRpcChannelBuffer,
729    PRPC_MESSAGE pRpcMessage,
730    DWORD* pdwStubPhase);
731HRESULT CALLBACK IMFTopologyNode_GetOutputPrefType_Proxy(
732    IMFTopologyNode* This,
733    DWORD dwOutputIndex,
734    IMFMediaType **ppType);
735HRESULT __RPC_STUB IMFTopologyNode_GetOutputPrefType_Stub(
736    IMFTopologyNode* This,
737    DWORD dwOutputIndex,
738    DWORD *pcbData,
739    BYTE **ppbData);
740HRESULT CALLBACK IMFTopologyNode_GetInputPrefType_Proxy(
741    IMFTopologyNode* This,
742    DWORD dwInputIndex,
743    IMFMediaType **ppType);
744HRESULT __RPC_STUB IMFTopologyNode_GetInputPrefType_Stub(
745    IMFTopologyNode* This,
746    DWORD dwInputIndex,
747    DWORD *pcbData,
748    BYTE **ppbData);
749
750#endif  /* __IMFTopologyNode_INTERFACE_DEFINED__ */
751
752/*****************************************************************************
753 * IMFTopology interface
754 */
755#ifndef __IMFTopology_INTERFACE_DEFINED__
756#define __IMFTopology_INTERFACE_DEFINED__
757
758DEFINE_GUID(IID_IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33);
759#if defined(__cplusplus) && !defined(CINTERFACE)
760MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc433")
761IMFTopology : public IMFAttributes
762{
763    virtual HRESULT STDMETHODCALLTYPE GetTopologyID(
764        TOPOID *pID) = 0;
765
766    virtual HRESULT STDMETHODCALLTYPE AddNode(
767        IMFTopologyNode *pNode) = 0;
768
769    virtual HRESULT STDMETHODCALLTYPE RemoveNode(
770        IMFTopologyNode *pNode) = 0;
771
772    virtual HRESULT STDMETHODCALLTYPE GetNodeCount(
773        WORD *pwNodes) = 0;
774
775    virtual HRESULT STDMETHODCALLTYPE GetNode(
776        WORD wIndex,
777        IMFTopologyNode **ppNode) = 0;
778
779    virtual HRESULT STDMETHODCALLTYPE Clear(
780        ) = 0;
781
782    virtual HRESULT STDMETHODCALLTYPE CloneFrom(
783        IMFTopology *pTopology) = 0;
784
785    virtual HRESULT STDMETHODCALLTYPE GetNodeByID(
786        TOPOID qwTopoNodeID,
787        IMFTopologyNode **ppNode) = 0;
788
789    virtual HRESULT STDMETHODCALLTYPE GetSourceNodeCollection(
790        IMFCollection **ppCollection) = 0;
791
792    virtual HRESULT STDMETHODCALLTYPE GetOutputNodeCollection(
793        IMFCollection **ppCollection) = 0;
794
795};
796#ifdef __CRT_UUID_DECL
797__CRT_UUID_DECL(IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33)
798#endif
799#else
800typedef struct IMFTopologyVtbl {
801    BEGIN_INTERFACE
802
803    /*** IUnknown methods ***/
804    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
805        IMFTopology* This,
806        REFIID riid,
807        void **ppvObject);
808
809    ULONG (STDMETHODCALLTYPE *AddRef)(
810        IMFTopology* This);
811
812    ULONG (STDMETHODCALLTYPE *Release)(
813        IMFTopology* This);
814
815    /*** IMFAttributes methods ***/
816    HRESULT (STDMETHODCALLTYPE *GetItem)(
817        IMFTopology* This,
818        REFGUID guidKey,
819        PROPVARIANT *pValue);
820
821    HRESULT (STDMETHODCALLTYPE *GetItemType)(
822        IMFTopology* This,
823        REFGUID guidKey,
824        MF_ATTRIBUTE_TYPE *pType);
825
826    HRESULT (STDMETHODCALLTYPE *CompareItem)(
827        IMFTopology* This,
828        REFGUID guidKey,
829        REFPROPVARIANT Value,
830        WINBOOL *pbResult);
831
832    HRESULT (STDMETHODCALLTYPE *Compare)(
833        IMFTopology* This,
834        IMFAttributes *pTheirs,
835        MF_ATTRIBUTES_MATCH_TYPE MatchType,
836        WINBOOL *pbResult);
837
838    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
839        IMFTopology* This,
840        REFGUID guidKey,
841        UINT32 *punValue);
842
843    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
844        IMFTopology* This,
845        REFGUID guidKey,
846        UINT64 *punValue);
847
848    HRESULT (STDMETHODCALLTYPE *GetDouble)(
849        IMFTopology* This,
850        REFGUID guidKey,
851        double *pfValue);
852
853    HRESULT (STDMETHODCALLTYPE *GetGUID)(
854        IMFTopology* This,
855        REFGUID guidKey,
856        GUID *pguidValue);
857
858    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
859        IMFTopology* This,
860        REFGUID guidKey,
861        UINT32 *pcchLength);
862
863    HRESULT (STDMETHODCALLTYPE *GetString)(
864        IMFTopology* This,
865        REFGUID guidKey,
866        LPWSTR pwszValue,
867        UINT32 cchBufSize,
868        UINT32 *pcchLength);
869
870    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
871        IMFTopology* This,
872        REFGUID guidKey,
873        LPWSTR *ppwszValue,
874        UINT32 *pcchLength);
875
876    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
877        IMFTopology* This,
878        REFGUID guidKey,
879        UINT32 *pcbBlobSize);
880
881    HRESULT (STDMETHODCALLTYPE *GetBlob)(
882        IMFTopology* This,
883        REFGUID guidKey,
884        UINT8 *pBuf,
885        UINT32 cbBufSize,
886        UINT32 *pcbBlobSize);
887
888    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
889        IMFTopology* This,
890        REFGUID guidKey,
891        UINT8 **ppBuf,
892        UINT32 *pcbSize);
893
894    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
895        IMFTopology* This,
896        REFGUID guidKey,
897        REFIID riid,
898        LPVOID *ppv);
899
900    HRESULT (STDMETHODCALLTYPE *SetItem)(
901        IMFTopology* This,
902        REFGUID guidKey,
903        REFPROPVARIANT Value);
904
905    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
906        IMFTopology* This,
907        REFGUID guidKey);
908
909    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
910        IMFTopology* This);
911
912    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
913        IMFTopology* This,
914        REFGUID guidKey,
915        UINT32 unValue);
916
917    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
918        IMFTopology* This,
919        REFGUID guidKey,
920        UINT64 unValue);
921
922    HRESULT (STDMETHODCALLTYPE *SetDouble)(
923        IMFTopology* This,
924        REFGUID guidKey,
925        double fValue);
926
927    HRESULT (STDMETHODCALLTYPE *SetGUID)(
928        IMFTopology* This,
929        REFGUID guidKey,
930        REFGUID guidValue);
931
932    HRESULT (STDMETHODCALLTYPE *SetString)(
933        IMFTopology* This,
934        REFGUID guidKey,
935        LPCWSTR wszValue);
936
937    HRESULT (STDMETHODCALLTYPE *SetBlob)(
938        IMFTopology* This,
939        REFGUID guidKey,
940        const UINT8 *pBuf,
941        UINT32 cbBufSize);
942
943    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
944        IMFTopology* This,
945        REFGUID guidKey,
946        IUnknown *pUnknown);
947
948    HRESULT (STDMETHODCALLTYPE *LockStore)(
949        IMFTopology* This);
950
951    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
952        IMFTopology* This);
953
954    HRESULT (STDMETHODCALLTYPE *GetCount)(
955        IMFTopology* This,
956        UINT32 *pcItems);
957
958    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
959        IMFTopology* This,
960        UINT32 unIndex,
961        GUID *pguidKey,
962        PROPVARIANT *pValue);
963
964    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
965        IMFTopology* This,
966        IMFAttributes *pDest);
967
968    /*** IMFTopology methods ***/
969    HRESULT (STDMETHODCALLTYPE *GetTopologyID)(
970        IMFTopology* This,
971        TOPOID *pID);
972
973    HRESULT (STDMETHODCALLTYPE *AddNode)(
974        IMFTopology* This,
975        IMFTopologyNode *pNode);
976
977    HRESULT (STDMETHODCALLTYPE *RemoveNode)(
978        IMFTopology* This,
979        IMFTopologyNode *pNode);
980
981    HRESULT (STDMETHODCALLTYPE *GetNodeCount)(
982        IMFTopology* This,
983        WORD *pwNodes);
984
985    HRESULT (STDMETHODCALLTYPE *GetNode)(
986        IMFTopology* This,
987        WORD wIndex,
988        IMFTopologyNode **ppNode);
989
990    HRESULT (STDMETHODCALLTYPE *Clear)(
991        IMFTopology* This);
992
993    HRESULT (STDMETHODCALLTYPE *CloneFrom)(
994        IMFTopology* This,
995        IMFTopology *pTopology);
996
997    HRESULT (STDMETHODCALLTYPE *GetNodeByID)(
998        IMFTopology* This,
999        TOPOID qwTopoNodeID,
1000        IMFTopologyNode **ppNode);
1001
1002    HRESULT (STDMETHODCALLTYPE *GetSourceNodeCollection)(
1003        IMFTopology* This,
1004        IMFCollection **ppCollection);
1005
1006    HRESULT (STDMETHODCALLTYPE *GetOutputNodeCollection)(
1007        IMFTopology* This,
1008        IMFCollection **ppCollection);
1009
1010    END_INTERFACE
1011} IMFTopologyVtbl;
1012interface IMFTopology {
1013    CONST_VTBL IMFTopologyVtbl* lpVtbl;
1014};
1015
1016#ifdef COBJMACROS
1017#ifndef WIDL_C_INLINE_WRAPPERS
1018/*** IUnknown methods ***/
1019#define IMFTopology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1020#define IMFTopology_AddRef(This) (This)->lpVtbl->AddRef(This)
1021#define IMFTopology_Release(This) (This)->lpVtbl->Release(This)
1022/*** IMFAttributes methods ***/
1023#define IMFTopology_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
1024#define IMFTopology_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
1025#define IMFTopology_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
1026#define IMFTopology_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
1027#define IMFTopology_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
1028#define IMFTopology_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
1029#define IMFTopology_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
1030#define IMFTopology_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
1031#define IMFTopology_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
1032#define IMFTopology_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
1033#define IMFTopology_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
1034#define IMFTopology_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
1035#define IMFTopology_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
1036#define IMFTopology_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
1037#define IMFTopology_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
1038#define IMFTopology_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
1039#define IMFTopology_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
1040#define IMFTopology_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
1041#define IMFTopology_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
1042#define IMFTopology_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
1043#define IMFTopology_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
1044#define IMFTopology_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
1045#define IMFTopology_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
1046#define IMFTopology_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
1047#define IMFTopology_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
1048#define IMFTopology_LockStore(This) (This)->lpVtbl->LockStore(This)
1049#define IMFTopology_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
1050#define IMFTopology_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
1051#define IMFTopology_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
1052#define IMFTopology_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
1053/*** IMFTopology methods ***/
1054#define IMFTopology_GetTopologyID(This,pID) (This)->lpVtbl->GetTopologyID(This,pID)
1055#define IMFTopology_AddNode(This,pNode) (This)->lpVtbl->AddNode(This,pNode)
1056#define IMFTopology_RemoveNode(This,pNode) (This)->lpVtbl->RemoveNode(This,pNode)
1057#define IMFTopology_GetNodeCount(This,pwNodes) (This)->lpVtbl->GetNodeCount(This,pwNodes)
1058#define IMFTopology_GetNode(This,wIndex,ppNode) (This)->lpVtbl->GetNode(This,wIndex,ppNode)
1059#define IMFTopology_Clear(This) (This)->lpVtbl->Clear(This)
1060#define IMFTopology_CloneFrom(This,pTopology) (This)->lpVtbl->CloneFrom(This,pTopology)
1061#define IMFTopology_GetNodeByID(This,qwTopoNodeID,ppNode) (This)->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode)
1062#define IMFTopology_GetSourceNodeCollection(This,ppCollection) (This)->lpVtbl->GetSourceNodeCollection(This,ppCollection)
1063#define IMFTopology_GetOutputNodeCollection(This,ppCollection) (This)->lpVtbl->GetOutputNodeCollection(This,ppCollection)
1064#else
1065/*** IUnknown methods ***/
1066static FORCEINLINE HRESULT IMFTopology_QueryInterface(IMFTopology* This,REFIID riid,void **ppvObject) {
1067    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1068}
1069static FORCEINLINE ULONG IMFTopology_AddRef(IMFTopology* This) {
1070    return This->lpVtbl->AddRef(This);
1071}
1072static FORCEINLINE ULONG IMFTopology_Release(IMFTopology* This) {
1073    return This->lpVtbl->Release(This);
1074}
1075/*** IMFAttributes methods ***/
1076static FORCEINLINE HRESULT IMFTopology_GetItem(IMFTopology* This,REFGUID guidKey,PROPVARIANT *pValue) {
1077    return This->lpVtbl->GetItem(This,guidKey,pValue);
1078}
1079static FORCEINLINE HRESULT IMFTopology_GetItemType(IMFTopology* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
1080    return This->lpVtbl->GetItemType(This,guidKey,pType);
1081}
1082static FORCEINLINE HRESULT IMFTopology_CompareItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
1083    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
1084}
1085static FORCEINLINE HRESULT IMFTopology_Compare(IMFTopology* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
1086    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
1087}
1088static FORCEINLINE HRESULT IMFTopology_GetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 *punValue) {
1089    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
1090}
1091static FORCEINLINE HRESULT IMFTopology_GetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 *punValue) {
1092    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
1093}
1094static FORCEINLINE HRESULT IMFTopology_GetDouble(IMFTopology* This,REFGUID guidKey,double *pfValue) {
1095    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
1096}
1097static FORCEINLINE HRESULT IMFTopology_GetGUID(IMFTopology* This,REFGUID guidKey,GUID *pguidValue) {
1098    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
1099}
1100static FORCEINLINE HRESULT IMFTopology_GetStringLength(IMFTopology* This,REFGUID guidKey,UINT32 *pcchLength) {
1101    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
1102}
1103static FORCEINLINE HRESULT IMFTopology_GetString(IMFTopology* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
1104    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
1105}
1106static FORCEINLINE HRESULT IMFTopology_GetAllocatedString(IMFTopology* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
1107    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
1108}
1109static FORCEINLINE HRESULT IMFTopology_GetBlobSize(IMFTopology* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
1110    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
1111}
1112static FORCEINLINE HRESULT IMFTopology_GetBlob(IMFTopology* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
1113    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
1114}
1115static FORCEINLINE HRESULT IMFTopology_GetAllocatedBlob(IMFTopology* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
1116    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
1117}
1118static FORCEINLINE HRESULT IMFTopology_GetUnknown(IMFTopology* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
1119    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
1120}
1121static FORCEINLINE HRESULT IMFTopology_SetItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value) {
1122    return This->lpVtbl->SetItem(This,guidKey,Value);
1123}
1124static FORCEINLINE HRESULT IMFTopology_DeleteItem(IMFTopology* This,REFGUID guidKey) {
1125    return This->lpVtbl->DeleteItem(This,guidKey);
1126}
1127static FORCEINLINE HRESULT IMFTopology_DeleteAllItems(IMFTopology* This) {
1128    return This->lpVtbl->DeleteAllItems(This);
1129}
1130static FORCEINLINE HRESULT IMFTopology_SetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 unValue) {
1131    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
1132}
1133static FORCEINLINE HRESULT IMFTopology_SetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 unValue) {
1134    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
1135}
1136static FORCEINLINE HRESULT IMFTopology_SetDouble(IMFTopology* This,REFGUID guidKey,double fValue) {
1137    return This->lpVtbl->SetDouble(This,guidKey,fValue);
1138}
1139static FORCEINLINE HRESULT IMFTopology_SetGUID(IMFTopology* This,REFGUID guidKey,REFGUID guidValue) {
1140    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
1141}
1142static FORCEINLINE HRESULT IMFTopology_SetString(IMFTopology* This,REFGUID guidKey,LPCWSTR wszValue) {
1143    return This->lpVtbl->SetString(This,guidKey,wszValue);
1144}
1145static FORCEINLINE HRESULT IMFTopology_SetBlob(IMFTopology* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
1146    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
1147}
1148static FORCEINLINE HRESULT IMFTopology_SetUnknown(IMFTopology* This,REFGUID guidKey,IUnknown *pUnknown) {
1149    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
1150}
1151static FORCEINLINE HRESULT IMFTopology_LockStore(IMFTopology* This) {
1152    return This->lpVtbl->LockStore(This);
1153}
1154static FORCEINLINE HRESULT IMFTopology_UnlockStore(IMFTopology* This) {
1155    return This->lpVtbl->UnlockStore(This);
1156}
1157static FORCEINLINE HRESULT IMFTopology_GetCount(IMFTopology* This,UINT32 *pcItems) {
1158    return This->lpVtbl->GetCount(This,pcItems);
1159}
1160static FORCEINLINE HRESULT IMFTopology_GetItemByIndex(IMFTopology* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
1161    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
1162}
1163static FORCEINLINE HRESULT IMFTopology_CopyAllItems(IMFTopology* This,IMFAttributes *pDest) {
1164    return This->lpVtbl->CopyAllItems(This,pDest);
1165}
1166/*** IMFTopology methods ***/
1167static FORCEINLINE HRESULT IMFTopology_GetTopologyID(IMFTopology* This,TOPOID *pID) {
1168    return This->lpVtbl->GetTopologyID(This,pID);
1169}
1170static FORCEINLINE HRESULT IMFTopology_AddNode(IMFTopology* This,IMFTopologyNode *pNode) {
1171    return This->lpVtbl->AddNode(This,pNode);
1172}
1173static FORCEINLINE HRESULT IMFTopology_RemoveNode(IMFTopology* This,IMFTopologyNode *pNode) {
1174    return This->lpVtbl->RemoveNode(This,pNode);
1175}
1176static FORCEINLINE HRESULT IMFTopology_GetNodeCount(IMFTopology* This,WORD *pwNodes) {
1177    return This->lpVtbl->GetNodeCount(This,pwNodes);
1178}
1179static FORCEINLINE HRESULT IMFTopology_GetNode(IMFTopology* This,WORD wIndex,IMFTopologyNode **ppNode) {
1180    return This->lpVtbl->GetNode(This,wIndex,ppNode);
1181}
1182static FORCEINLINE HRESULT IMFTopology_Clear(IMFTopology* This) {
1183    return This->lpVtbl->Clear(This);
1184}
1185static FORCEINLINE HRESULT IMFTopology_CloneFrom(IMFTopology* This,IMFTopology *pTopology) {
1186    return This->lpVtbl->CloneFrom(This,pTopology);
1187}
1188static FORCEINLINE HRESULT IMFTopology_GetNodeByID(IMFTopology* This,TOPOID qwTopoNodeID,IMFTopologyNode **ppNode) {
1189    return This->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode);
1190}
1191static FORCEINLINE HRESULT IMFTopology_GetSourceNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
1192    return This->lpVtbl->GetSourceNodeCollection(This,ppCollection);
1193}
1194static FORCEINLINE HRESULT IMFTopology_GetOutputNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
1195    return This->lpVtbl->GetOutputNodeCollection(This,ppCollection);
1196}
1197#endif
1198#endif
1199
1200#endif
1201
1202HRESULT STDMETHODCALLTYPE IMFTopology_GetTopologyID_Proxy(
1203    IMFTopology* This,
1204    TOPOID *pID);
1205void __RPC_STUB IMFTopology_GetTopologyID_Stub(
1206    IRpcStubBuffer* This,
1207    IRpcChannelBuffer* pRpcChannelBuffer,
1208    PRPC_MESSAGE pRpcMessage,
1209    DWORD* pdwStubPhase);
1210HRESULT STDMETHODCALLTYPE IMFTopology_GetNodeCount_Proxy(
1211    IMFTopology* This,
1212    WORD *pwNodes);
1213void __RPC_STUB IMFTopology_GetNodeCount_Stub(
1214    IRpcStubBuffer* This,
1215    IRpcChannelBuffer* pRpcChannelBuffer,
1216    PRPC_MESSAGE pRpcMessage,
1217    DWORD* pdwStubPhase);
1218HRESULT STDMETHODCALLTYPE IMFTopology_GetNode_Proxy(
1219    IMFTopology* This,
1220    WORD wIndex,
1221    IMFTopologyNode **ppNode);
1222void __RPC_STUB IMFTopology_GetNode_Stub(
1223    IRpcStubBuffer* This,
1224    IRpcChannelBuffer* pRpcChannelBuffer,
1225    PRPC_MESSAGE pRpcMessage,
1226    DWORD* pdwStubPhase);
1227HRESULT STDMETHODCALLTYPE IMFTopology_CloneFrom_Proxy(
1228    IMFTopology* This,
1229    IMFTopology *pTopology);
1230void __RPC_STUB IMFTopology_CloneFrom_Stub(
1231    IRpcStubBuffer* This,
1232    IRpcChannelBuffer* pRpcChannelBuffer,
1233    PRPC_MESSAGE pRpcMessage,
1234    DWORD* pdwStubPhase);
1235HRESULT STDMETHODCALLTYPE IMFTopology_GetNodeByID_Proxy(
1236    IMFTopology* This,
1237    TOPOID qwTopoNodeID,
1238    IMFTopologyNode **ppNode);
1239void __RPC_STUB IMFTopology_GetNodeByID_Stub(
1240    IRpcStubBuffer* This,
1241    IRpcChannelBuffer* pRpcChannelBuffer,
1242    PRPC_MESSAGE pRpcMessage,
1243    DWORD* pdwStubPhase);
1244HRESULT STDMETHODCALLTYPE IMFTopology_GetSourceNodeCollection_Proxy(
1245    IMFTopology* This,
1246    IMFCollection **ppCollection);
1247void __RPC_STUB IMFTopology_GetSourceNodeCollection_Stub(
1248    IRpcStubBuffer* This,
1249    IRpcChannelBuffer* pRpcChannelBuffer,
1250    PRPC_MESSAGE pRpcMessage,
1251    DWORD* pdwStubPhase);
1252HRESULT STDMETHODCALLTYPE IMFTopology_GetOutputNodeCollection_Proxy(
1253    IMFTopology* This,
1254    IMFCollection **ppCollection);
1255void __RPC_STUB IMFTopology_GetOutputNodeCollection_Stub(
1256    IRpcStubBuffer* This,
1257    IRpcChannelBuffer* pRpcChannelBuffer,
1258    PRPC_MESSAGE pRpcMessage,
1259    DWORD* pdwStubPhase);
1260
1261#endif  /* __IMFTopology_INTERFACE_DEFINED__ */
1262
1263typedef LONGLONG MFTIME;
1264typedef enum _MF_CLOCK_STATE {
1265    MFCLOCK_STATE_INVALID = 0,
1266    MFCLOCK_STATE_RUNNING = 1,
1267    MFCLOCK_STATE_STOPPED = 2,
1268    MFCLOCK_STATE_PAUSED = 3
1269} MF_CLOCK_STATE;
1270typedef enum _MF_CLOCK_STATE MFCLOCK_STATE;
1271typedef struct _MFCLOCK_PROPERTIES {
1272    UINT64 qwCorrelationRate;
1273    GUID guidClockId;
1274    DWORD dwClockFlags;
1275    UINT64 qwClockFrequency;
1276    DWORD dwClockTolerance;
1277    DWORD dwClockJitter;
1278} MFCLOCK_PROPERTIES;
1279/*****************************************************************************
1280 * IMFClock interface
1281 */
1282#ifndef __IMFClock_INTERFACE_DEFINED__
1283#define __IMFClock_INTERFACE_DEFINED__
1284
1285DEFINE_GUID(IID_IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30);
1286#if defined(__cplusplus) && !defined(CINTERFACE)
1287MIDL_INTERFACE("2eb1e945-18b8-4139-9b1a-d5d584818530")
1288IMFClock : public IUnknown
1289{
1290    virtual HRESULT STDMETHODCALLTYPE GetClockCharacteristics(
1291        DWORD *pdwCharacteristics) = 0;
1292
1293    virtual HRESULT STDMETHODCALLTYPE GetCorrelatedTime(
1294        DWORD dwReserved,
1295        LONGLONG *pllClockTime,
1296        MFTIME *phnsSystemTime) = 0;
1297
1298    virtual HRESULT STDMETHODCALLTYPE GetContinuityKey(
1299        DWORD *pdwContinuityKey) = 0;
1300
1301    virtual HRESULT STDMETHODCALLTYPE GetState(
1302        DWORD dwReserved,
1303        MFCLOCK_STATE *peClockState) = 0;
1304
1305    virtual HRESULT STDMETHODCALLTYPE GetProperties(
1306        MFCLOCK_PROPERTIES *pClockProperties) = 0;
1307
1308};
1309#ifdef __CRT_UUID_DECL
1310__CRT_UUID_DECL(IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30)
1311#endif
1312#else
1313typedef struct IMFClockVtbl {
1314    BEGIN_INTERFACE
1315
1316    /*** IUnknown methods ***/
1317    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1318        IMFClock* This,
1319        REFIID riid,
1320        void **ppvObject);
1321
1322    ULONG (STDMETHODCALLTYPE *AddRef)(
1323        IMFClock* This);
1324
1325    ULONG (STDMETHODCALLTYPE *Release)(
1326        IMFClock* This);
1327
1328    /*** IMFClock methods ***/
1329    HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
1330        IMFClock* This,
1331        DWORD *pdwCharacteristics);
1332
1333    HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
1334        IMFClock* This,
1335        DWORD dwReserved,
1336        LONGLONG *pllClockTime,
1337        MFTIME *phnsSystemTime);
1338
1339    HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
1340        IMFClock* This,
1341        DWORD *pdwContinuityKey);
1342
1343    HRESULT (STDMETHODCALLTYPE *GetState)(
1344        IMFClock* This,
1345        DWORD dwReserved,
1346        MFCLOCK_STATE *peClockState);
1347
1348    HRESULT (STDMETHODCALLTYPE *GetProperties)(
1349        IMFClock* This,
1350        MFCLOCK_PROPERTIES *pClockProperties);
1351
1352    END_INTERFACE
1353} IMFClockVtbl;
1354interface IMFClock {
1355    CONST_VTBL IMFClockVtbl* lpVtbl;
1356};
1357
1358#ifdef COBJMACROS
1359#ifndef WIDL_C_INLINE_WRAPPERS
1360/*** IUnknown methods ***/
1361#define IMFClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1362#define IMFClock_AddRef(This) (This)->lpVtbl->AddRef(This)
1363#define IMFClock_Release(This) (This)->lpVtbl->Release(This)
1364/*** IMFClock methods ***/
1365#define IMFClock_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
1366#define IMFClock_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
1367#define IMFClock_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
1368#define IMFClock_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
1369#define IMFClock_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
1370#else
1371/*** IUnknown methods ***/
1372static FORCEINLINE HRESULT IMFClock_QueryInterface(IMFClock* This,REFIID riid,void **ppvObject) {
1373    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1374}
1375static FORCEINLINE ULONG IMFClock_AddRef(IMFClock* This) {
1376    return This->lpVtbl->AddRef(This);
1377}
1378static FORCEINLINE ULONG IMFClock_Release(IMFClock* This) {
1379    return This->lpVtbl->Release(This);
1380}
1381/*** IMFClock methods ***/
1382static FORCEINLINE HRESULT IMFClock_GetClockCharacteristics(IMFClock* This,DWORD *pdwCharacteristics) {
1383    return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
1384}
1385static FORCEINLINE HRESULT IMFClock_GetCorrelatedTime(IMFClock* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
1386    return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
1387}
1388static FORCEINLINE HRESULT IMFClock_GetContinuityKey(IMFClock* This,DWORD *pdwContinuityKey) {
1389    return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
1390}
1391static FORCEINLINE HRESULT IMFClock_GetState(IMFClock* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
1392    return This->lpVtbl->GetState(This,dwReserved,peClockState);
1393}
1394static FORCEINLINE HRESULT IMFClock_GetProperties(IMFClock* This,MFCLOCK_PROPERTIES *pClockProperties) {
1395    return This->lpVtbl->GetProperties(This,pClockProperties);
1396}
1397#endif
1398#endif
1399
1400#endif
1401
1402HRESULT STDMETHODCALLTYPE IMFClock_GetClockCharacteristics_Proxy(
1403    IMFClock* This,
1404    DWORD *pdwCharacteristics);
1405void __RPC_STUB IMFClock_GetClockCharacteristics_Stub(
1406    IRpcStubBuffer* This,
1407    IRpcChannelBuffer* pRpcChannelBuffer,
1408    PRPC_MESSAGE pRpcMessage,
1409    DWORD* pdwStubPhase);
1410HRESULT STDMETHODCALLTYPE IMFClock_GetCorrelatedTime_Proxy(
1411    IMFClock* This,
1412    DWORD dwReserved,
1413    LONGLONG *pllClockTime,
1414    MFTIME *phnsSystemTime);
1415void __RPC_STUB IMFClock_GetCorrelatedTime_Stub(
1416    IRpcStubBuffer* This,
1417    IRpcChannelBuffer* pRpcChannelBuffer,
1418    PRPC_MESSAGE pRpcMessage,
1419    DWORD* pdwStubPhase);
1420HRESULT STDMETHODCALLTYPE IMFClock_GetContinuityKey_Proxy(
1421    IMFClock* This,
1422    DWORD *pdwContinuityKey);
1423void __RPC_STUB IMFClock_GetContinuityKey_Stub(
1424    IRpcStubBuffer* This,
1425    IRpcChannelBuffer* pRpcChannelBuffer,
1426    PRPC_MESSAGE pRpcMessage,
1427    DWORD* pdwStubPhase);
1428HRESULT STDMETHODCALLTYPE IMFClock_GetState_Proxy(
1429    IMFClock* This,
1430    DWORD dwReserved,
1431    MFCLOCK_STATE *peClockState);
1432void __RPC_STUB IMFClock_GetState_Stub(
1433    IRpcStubBuffer* This,
1434    IRpcChannelBuffer* pRpcChannelBuffer,
1435    PRPC_MESSAGE pRpcMessage,
1436    DWORD* pdwStubPhase);
1437HRESULT STDMETHODCALLTYPE IMFClock_GetProperties_Proxy(
1438    IMFClock* This,
1439    MFCLOCK_PROPERTIES *pClockProperties);
1440void __RPC_STUB IMFClock_GetProperties_Stub(
1441    IRpcStubBuffer* This,
1442    IRpcChannelBuffer* pRpcChannelBuffer,
1443    PRPC_MESSAGE pRpcMessage,
1444    DWORD* pdwStubPhase);
1445
1446#endif  /* __IMFClock_INTERFACE_DEFINED__ */
1447
1448#define SHA_HASH_LEN 20
1449#define STR_HASH_LEN (SHA_HASH_LEN*2+3)
1450typedef struct _MFRR_COMPONENT_HASH_INFO {
1451  DWORD ulReason;
1452  WCHAR rgHeaderHash[STR_HASH_LEN];
1453  WCHAR rgPublicKeyHash[STR_HASH_LEN];
1454  WCHAR wszName[MAX_PATH];
1455} MFRR_COMPONENT_HASH_INFO, *PMFRR_COMPONENT_HASH_INFO;
1456EXTERN_GUID(MF_PD_DURATION, 0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a);
1457typedef enum _MF_CONNECT_METHOD {
1458    MF_CONNECT_DIRECT = 0x0,
1459    MF_CONNECT_ALLOW_CONVERTER = 0x1,
1460    MF_CONNECT_ALLOW_DECODER = 0x3,
1461    MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES = 0x4,
1462    MF_CONNECT_AS_OPTIONAL = 0x10000,
1463    MF_CONNECT_AS_OPTIONAL_BRANCH = 0x20000
1464} MF_CONNECT_METHOD;
1465/*****************************************************************************
1466 * IMFMediaSession interface
1467 */
1468#ifndef __IMFMediaSession_INTERFACE_DEFINED__
1469#define __IMFMediaSession_INTERFACE_DEFINED__
1470
1471DEFINE_GUID(IID_IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27);
1472#if defined(__cplusplus) && !defined(CINTERFACE)
1473MIDL_INTERFACE("90377834-21d0-4dee-8214-ba2e3e6c1127")
1474IMFMediaSession : public IMFMediaEventGenerator
1475{
1476    virtual HRESULT STDMETHODCALLTYPE SetTopology(
1477        DWORD dwSetTopologyFlags,
1478        IMFTopology *pTopology) = 0;
1479
1480    virtual HRESULT STDMETHODCALLTYPE ClearTopologies(
1481        ) = 0;
1482
1483    virtual HRESULT STDMETHODCALLTYPE Start(
1484        const GUID *pguidTimeFormat,
1485        const PROPVARIANT *pvarStartPosition) = 0;
1486
1487    virtual HRESULT STDMETHODCALLTYPE Pause(
1488        ) = 0;
1489
1490    virtual HRESULT STDMETHODCALLTYPE Stop(
1491        ) = 0;
1492
1493    virtual HRESULT STDMETHODCALLTYPE Close(
1494        ) = 0;
1495
1496    virtual HRESULT STDMETHODCALLTYPE Shutdown(
1497        ) = 0;
1498
1499    virtual HRESULT STDMETHODCALLTYPE GetClock(
1500        IMFClock **ppClock) = 0;
1501
1502    virtual HRESULT STDMETHODCALLTYPE GetSessionCapabilities(
1503        DWORD *pdwCaps) = 0;
1504
1505    virtual HRESULT STDMETHODCALLTYPE GetFullTopology(
1506        DWORD dwGetFullTopologyFlags,
1507        TOPOID TopoId,
1508        IMFTopology **ppFullTopology) = 0;
1509
1510};
1511#ifdef __CRT_UUID_DECL
1512__CRT_UUID_DECL(IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27)
1513#endif
1514#else
1515typedef struct IMFMediaSessionVtbl {
1516    BEGIN_INTERFACE
1517
1518    /*** IUnknown methods ***/
1519    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1520        IMFMediaSession* This,
1521        REFIID riid,
1522        void **ppvObject);
1523
1524    ULONG (STDMETHODCALLTYPE *AddRef)(
1525        IMFMediaSession* This);
1526
1527    ULONG (STDMETHODCALLTYPE *Release)(
1528        IMFMediaSession* This);
1529
1530    /*** IMFMediaEventGenerator methods ***/
1531    HRESULT (STDMETHODCALLTYPE *GetEvent)(
1532        IMFMediaSession* This,
1533        DWORD dwFlags,
1534        IMFMediaEvent **ppEvent);
1535
1536    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
1537        IMFMediaSession* This,
1538        IMFAsyncCallback *pCallback,
1539        IUnknown *punkState);
1540
1541    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
1542        IMFMediaSession* This,
1543        IMFAsyncResult *pResult,
1544        IMFMediaEvent **ppEvent);
1545
1546    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
1547        IMFMediaSession* This,
1548        MediaEventType met,
1549        REFGUID guidExtendedType,
1550        HRESULT hrStatus,
1551        const PROPVARIANT *pvValue);
1552
1553    /*** IMFMediaSession methods ***/
1554    HRESULT (STDMETHODCALLTYPE *SetTopology)(
1555        IMFMediaSession* This,
1556        DWORD dwSetTopologyFlags,
1557        IMFTopology *pTopology);
1558
1559    HRESULT (STDMETHODCALLTYPE *ClearTopologies)(
1560        IMFMediaSession* This);
1561
1562    HRESULT (STDMETHODCALLTYPE *Start)(
1563        IMFMediaSession* This,
1564        const GUID *pguidTimeFormat,
1565        const PROPVARIANT *pvarStartPosition);
1566
1567    HRESULT (STDMETHODCALLTYPE *Pause)(
1568        IMFMediaSession* This);
1569
1570    HRESULT (STDMETHODCALLTYPE *Stop)(
1571        IMFMediaSession* This);
1572
1573    HRESULT (STDMETHODCALLTYPE *Close)(
1574        IMFMediaSession* This);
1575
1576    HRESULT (STDMETHODCALLTYPE *Shutdown)(
1577        IMFMediaSession* This);
1578
1579    HRESULT (STDMETHODCALLTYPE *GetClock)(
1580        IMFMediaSession* This,
1581        IMFClock **ppClock);
1582
1583    HRESULT (STDMETHODCALLTYPE *GetSessionCapabilities)(
1584        IMFMediaSession* This,
1585        DWORD *pdwCaps);
1586
1587    HRESULT (STDMETHODCALLTYPE *GetFullTopology)(
1588        IMFMediaSession* This,
1589        DWORD dwGetFullTopologyFlags,
1590        TOPOID TopoId,
1591        IMFTopology **ppFullTopology);
1592
1593    END_INTERFACE
1594} IMFMediaSessionVtbl;
1595interface IMFMediaSession {
1596    CONST_VTBL IMFMediaSessionVtbl* lpVtbl;
1597};
1598
1599#ifdef COBJMACROS
1600#ifndef WIDL_C_INLINE_WRAPPERS
1601/*** IUnknown methods ***/
1602#define IMFMediaSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1603#define IMFMediaSession_AddRef(This) (This)->lpVtbl->AddRef(This)
1604#define IMFMediaSession_Release(This) (This)->lpVtbl->Release(This)
1605/*** IMFMediaEventGenerator methods ***/
1606#define IMFMediaSession_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
1607#define IMFMediaSession_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
1608#define IMFMediaSession_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
1609#define IMFMediaSession_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
1610/*** IMFMediaSession methods ***/
1611#define IMFMediaSession_SetTopology(This,dwSetTopologyFlags,pTopology) (This)->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology)
1612#define IMFMediaSession_ClearTopologies(This) (This)->lpVtbl->ClearTopologies(This)
1613#define IMFMediaSession_Start(This,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition)
1614#define IMFMediaSession_Pause(This) (This)->lpVtbl->Pause(This)
1615#define IMFMediaSession_Stop(This) (This)->lpVtbl->Stop(This)
1616#define IMFMediaSession_Close(This) (This)->lpVtbl->Close(This)
1617#define IMFMediaSession_Shutdown(This) (This)->lpVtbl->Shutdown(This)
1618#define IMFMediaSession_GetClock(This,ppClock) (This)->lpVtbl->GetClock(This,ppClock)
1619#define IMFMediaSession_GetSessionCapabilities(This,pdwCaps) (This)->lpVtbl->GetSessionCapabilities(This,pdwCaps)
1620#define IMFMediaSession_GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology) (This)->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology)
1621#else
1622/*** IUnknown methods ***/
1623static FORCEINLINE HRESULT IMFMediaSession_QueryInterface(IMFMediaSession* This,REFIID riid,void **ppvObject) {
1624    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1625}
1626static FORCEINLINE ULONG IMFMediaSession_AddRef(IMFMediaSession* This) {
1627    return This->lpVtbl->AddRef(This);
1628}
1629static FORCEINLINE ULONG IMFMediaSession_Release(IMFMediaSession* This) {
1630    return This->lpVtbl->Release(This);
1631}
1632/*** IMFMediaEventGenerator methods ***/
1633static FORCEINLINE HRESULT IMFMediaSession_GetEvent(IMFMediaSession* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
1634    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
1635}
1636static FORCEINLINE HRESULT IMFMediaSession_BeginGetEvent(IMFMediaSession* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
1637    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
1638}
1639static FORCEINLINE HRESULT IMFMediaSession_EndGetEvent(IMFMediaSession* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
1640    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
1641}
1642static FORCEINLINE HRESULT IMFMediaSession_QueueEvent(IMFMediaSession* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
1643    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
1644}
1645/*** IMFMediaSession methods ***/
1646static FORCEINLINE HRESULT IMFMediaSession_SetTopology(IMFMediaSession* This,DWORD dwSetTopologyFlags,IMFTopology *pTopology) {
1647    return This->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology);
1648}
1649static FORCEINLINE HRESULT IMFMediaSession_ClearTopologies(IMFMediaSession* This) {
1650    return This->lpVtbl->ClearTopologies(This);
1651}
1652static FORCEINLINE HRESULT IMFMediaSession_Start(IMFMediaSession* This,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
1653    return This->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition);
1654}
1655static FORCEINLINE HRESULT IMFMediaSession_Pause(IMFMediaSession* This) {
1656    return This->lpVtbl->Pause(This);
1657}
1658static FORCEINLINE HRESULT IMFMediaSession_Stop(IMFMediaSession* This) {
1659    return This->lpVtbl->Stop(This);
1660}
1661static FORCEINLINE HRESULT IMFMediaSession_Close(IMFMediaSession* This) {
1662    return This->lpVtbl->Close(This);
1663}
1664static FORCEINLINE HRESULT IMFMediaSession_Shutdown(IMFMediaSession* This) {
1665    return This->lpVtbl->Shutdown(This);
1666}
1667static FORCEINLINE HRESULT IMFMediaSession_GetClock(IMFMediaSession* This,IMFClock **ppClock) {
1668    return This->lpVtbl->GetClock(This,ppClock);
1669}
1670static FORCEINLINE HRESULT IMFMediaSession_GetSessionCapabilities(IMFMediaSession* This,DWORD *pdwCaps) {
1671    return This->lpVtbl->GetSessionCapabilities(This,pdwCaps);
1672}
1673static FORCEINLINE HRESULT IMFMediaSession_GetFullTopology(IMFMediaSession* This,DWORD dwGetFullTopologyFlags,TOPOID TopoId,IMFTopology **ppFullTopology) {
1674    return This->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology);
1675}
1676#endif
1677#endif
1678
1679#endif
1680
1681HRESULT STDMETHODCALLTYPE IMFMediaSession_SetTopology_Proxy(
1682    IMFMediaSession* This,
1683    DWORD dwSetTopologyFlags,
1684    IMFTopology *pTopology);
1685void __RPC_STUB IMFMediaSession_SetTopology_Stub(
1686    IRpcStubBuffer* This,
1687    IRpcChannelBuffer* pRpcChannelBuffer,
1688    PRPC_MESSAGE pRpcMessage,
1689    DWORD* pdwStubPhase);
1690HRESULT STDMETHODCALLTYPE IMFMediaSession_ClearTopologies_Proxy(
1691    IMFMediaSession* This);
1692void __RPC_STUB IMFMediaSession_ClearTopologies_Stub(
1693    IRpcStubBuffer* This,
1694    IRpcChannelBuffer* pRpcChannelBuffer,
1695    PRPC_MESSAGE pRpcMessage,
1696    DWORD* pdwStubPhase);
1697HRESULT STDMETHODCALLTYPE IMFMediaSession_Start_Proxy(
1698    IMFMediaSession* This,
1699    const GUID *pguidTimeFormat,
1700    const PROPVARIANT *pvarStartPosition);
1701void __RPC_STUB IMFMediaSession_Start_Stub(
1702    IRpcStubBuffer* This,
1703    IRpcChannelBuffer* pRpcChannelBuffer,
1704    PRPC_MESSAGE pRpcMessage,
1705    DWORD* pdwStubPhase);
1706HRESULT STDMETHODCALLTYPE IMFMediaSession_Pause_Proxy(
1707    IMFMediaSession* This);
1708void __RPC_STUB IMFMediaSession_Pause_Stub(
1709    IRpcStubBuffer* This,
1710    IRpcChannelBuffer* pRpcChannelBuffer,
1711    PRPC_MESSAGE pRpcMessage,
1712    DWORD* pdwStubPhase);
1713HRESULT STDMETHODCALLTYPE IMFMediaSession_Stop_Proxy(
1714    IMFMediaSession* This);
1715void __RPC_STUB IMFMediaSession_Stop_Stub(
1716    IRpcStubBuffer* This,
1717    IRpcChannelBuffer* pRpcChannelBuffer,
1718    PRPC_MESSAGE pRpcMessage,
1719    DWORD* pdwStubPhase);
1720HRESULT STDMETHODCALLTYPE IMFMediaSession_Close_Proxy(
1721    IMFMediaSession* This);
1722void __RPC_STUB IMFMediaSession_Close_Stub(
1723    IRpcStubBuffer* This,
1724    IRpcChannelBuffer* pRpcChannelBuffer,
1725    PRPC_MESSAGE pRpcMessage,
1726    DWORD* pdwStubPhase);
1727HRESULT STDMETHODCALLTYPE IMFMediaSession_Shutdown_Proxy(
1728    IMFMediaSession* This);
1729void __RPC_STUB IMFMediaSession_Shutdown_Stub(
1730    IRpcStubBuffer* This,
1731    IRpcChannelBuffer* pRpcChannelBuffer,
1732    PRPC_MESSAGE pRpcMessage,
1733    DWORD* pdwStubPhase);
1734HRESULT STDMETHODCALLTYPE IMFMediaSession_GetClock_Proxy(
1735    IMFMediaSession* This,
1736    IMFClock **ppClock);
1737void __RPC_STUB IMFMediaSession_GetClock_Stub(
1738    IRpcStubBuffer* This,
1739    IRpcChannelBuffer* pRpcChannelBuffer,
1740    PRPC_MESSAGE pRpcMessage,
1741    DWORD* pdwStubPhase);
1742HRESULT STDMETHODCALLTYPE IMFMediaSession_GetSessionCapabilities_Proxy(
1743    IMFMediaSession* This,
1744    DWORD *pdwCaps);
1745void __RPC_STUB IMFMediaSession_GetSessionCapabilities_Stub(
1746    IRpcStubBuffer* This,
1747    IRpcChannelBuffer* pRpcChannelBuffer,
1748    PRPC_MESSAGE pRpcMessage,
1749    DWORD* pdwStubPhase);
1750HRESULT STDMETHODCALLTYPE IMFMediaSession_GetFullTopology_Proxy(
1751    IMFMediaSession* This,
1752    DWORD dwGetFullTopologyFlags,
1753    TOPOID TopoId,
1754    IMFTopology **ppFullTopology);
1755void __RPC_STUB IMFMediaSession_GetFullTopology_Stub(
1756    IRpcStubBuffer* This,
1757    IRpcChannelBuffer* pRpcChannelBuffer,
1758    PRPC_MESSAGE pRpcMessage,
1759    DWORD* pdwStubPhase);
1760
1761#endif  /* __IMFMediaSession_INTERFACE_DEFINED__ */
1762
1763/*****************************************************************************
1764 * IMFMediaTypeHandler interface
1765 */
1766#ifndef __IMFMediaTypeHandler_INTERFACE_DEFINED__
1767#define __IMFMediaTypeHandler_INTERFACE_DEFINED__
1768
1769DEFINE_GUID(IID_IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5);
1770#if defined(__cplusplus) && !defined(CINTERFACE)
1771MIDL_INTERFACE("e93dcf6c-4b07-4e1e-8123-aa16ed6eadf5")
1772IMFMediaTypeHandler : public IUnknown
1773{
1774    virtual HRESULT STDMETHODCALLTYPE IsMediaTypeSupported(
1775        IMFMediaType *pMediaType,
1776        IMFMediaType **ppMediaType) = 0;
1777
1778    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeCount(
1779        DWORD *pdwTypeCount) = 0;
1780
1781    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeByIndex(
1782        DWORD dwIndex,
1783        IMFMediaType **ppType) = 0;
1784
1785    virtual HRESULT STDMETHODCALLTYPE SetCurrentMediaType(
1786        IMFMediaType *pMediaType) = 0;
1787
1788    virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(
1789        IMFMediaType **ppMediaType) = 0;
1790
1791    virtual HRESULT STDMETHODCALLTYPE GetMajorType(
1792        GUID *pguidMajorType) = 0;
1793
1794};
1795#ifdef __CRT_UUID_DECL
1796__CRT_UUID_DECL(IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5)
1797#endif
1798#else
1799typedef struct IMFMediaTypeHandlerVtbl {
1800    BEGIN_INTERFACE
1801
1802    /*** IUnknown methods ***/
1803    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1804        IMFMediaTypeHandler* This,
1805        REFIID riid,
1806        void **ppvObject);
1807
1808    ULONG (STDMETHODCALLTYPE *AddRef)(
1809        IMFMediaTypeHandler* This);
1810
1811    ULONG (STDMETHODCALLTYPE *Release)(
1812        IMFMediaTypeHandler* This);
1813
1814    /*** IMFMediaTypeHandler methods ***/
1815    HRESULT (STDMETHODCALLTYPE *IsMediaTypeSupported)(
1816        IMFMediaTypeHandler* This,
1817        IMFMediaType *pMediaType,
1818        IMFMediaType **ppMediaType);
1819
1820    HRESULT (STDMETHODCALLTYPE *GetMediaTypeCount)(
1821        IMFMediaTypeHandler* This,
1822        DWORD *pdwTypeCount);
1823
1824    HRESULT (STDMETHODCALLTYPE *GetMediaTypeByIndex)(
1825        IMFMediaTypeHandler* This,
1826        DWORD dwIndex,
1827        IMFMediaType **ppType);
1828
1829    HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)(
1830        IMFMediaTypeHandler* This,
1831        IMFMediaType *pMediaType);
1832
1833    HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)(
1834        IMFMediaTypeHandler* This,
1835        IMFMediaType **ppMediaType);
1836
1837    HRESULT (STDMETHODCALLTYPE *GetMajorType)(
1838        IMFMediaTypeHandler* This,
1839        GUID *pguidMajorType);
1840
1841    END_INTERFACE
1842} IMFMediaTypeHandlerVtbl;
1843interface IMFMediaTypeHandler {
1844    CONST_VTBL IMFMediaTypeHandlerVtbl* lpVtbl;
1845};
1846
1847#ifdef COBJMACROS
1848#ifndef WIDL_C_INLINE_WRAPPERS
1849/*** IUnknown methods ***/
1850#define IMFMediaTypeHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1851#define IMFMediaTypeHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
1852#define IMFMediaTypeHandler_Release(This) (This)->lpVtbl->Release(This)
1853/*** IMFMediaTypeHandler methods ***/
1854#define IMFMediaTypeHandler_IsMediaTypeSupported(This,pMediaType,ppMediaType) (This)->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType)
1855#define IMFMediaTypeHandler_GetMediaTypeCount(This,pdwTypeCount) (This)->lpVtbl->GetMediaTypeCount(This,pdwTypeCount)
1856#define IMFMediaTypeHandler_GetMediaTypeByIndex(This,dwIndex,ppType) (This)->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType)
1857#define IMFMediaTypeHandler_SetCurrentMediaType(This,pMediaType) (This)->lpVtbl->SetCurrentMediaType(This,pMediaType)
1858#define IMFMediaTypeHandler_GetCurrentMediaType(This,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,ppMediaType)
1859#define IMFMediaTypeHandler_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
1860#else
1861/*** IUnknown methods ***/
1862static FORCEINLINE HRESULT IMFMediaTypeHandler_QueryInterface(IMFMediaTypeHandler* This,REFIID riid,void **ppvObject) {
1863    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1864}
1865static FORCEINLINE ULONG IMFMediaTypeHandler_AddRef(IMFMediaTypeHandler* This) {
1866    return This->lpVtbl->AddRef(This);
1867}
1868static FORCEINLINE ULONG IMFMediaTypeHandler_Release(IMFMediaTypeHandler* This) {
1869    return This->lpVtbl->Release(This);
1870}
1871/*** IMFMediaTypeHandler methods ***/
1872static FORCEINLINE HRESULT IMFMediaTypeHandler_IsMediaTypeSupported(IMFMediaTypeHandler* This,IMFMediaType *pMediaType,IMFMediaType **ppMediaType) {
1873    return This->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType);
1874}
1875static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMediaTypeCount(IMFMediaTypeHandler* This,DWORD *pdwTypeCount) {
1876    return This->lpVtbl->GetMediaTypeCount(This,pdwTypeCount);
1877}
1878static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMediaTypeByIndex(IMFMediaTypeHandler* This,DWORD dwIndex,IMFMediaType **ppType) {
1879    return This->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType);
1880}
1881static FORCEINLINE HRESULT IMFMediaTypeHandler_SetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType *pMediaType) {
1882    return This->lpVtbl->SetCurrentMediaType(This,pMediaType);
1883}
1884static FORCEINLINE HRESULT IMFMediaTypeHandler_GetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType **ppMediaType) {
1885    return This->lpVtbl->GetCurrentMediaType(This,ppMediaType);
1886}
1887static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMajorType(IMFMediaTypeHandler* This,GUID *pguidMajorType) {
1888    return This->lpVtbl->GetMajorType(This,pguidMajorType);
1889}
1890#endif
1891#endif
1892
1893#endif
1894
1895HRESULT STDMETHODCALLTYPE IMFMediaTypeHandler_RemoteGetCurrentMediaType_Proxy(
1896    IMFMediaTypeHandler* This,
1897    BYTE **ppbData,
1898    DWORD *pcbData);
1899void __RPC_STUB IMFMediaTypeHandler_RemoteGetCurrentMediaType_Stub(
1900    IRpcStubBuffer* This,
1901    IRpcChannelBuffer* pRpcChannelBuffer,
1902    PRPC_MESSAGE pRpcMessage,
1903    DWORD* pdwStubPhase);
1904HRESULT STDMETHODCALLTYPE IMFMediaTypeHandler_GetMajorType_Proxy(
1905    IMFMediaTypeHandler* This,
1906    GUID *pguidMajorType);
1907void __RPC_STUB IMFMediaTypeHandler_GetMajorType_Stub(
1908    IRpcStubBuffer* This,
1909    IRpcChannelBuffer* pRpcChannelBuffer,
1910    PRPC_MESSAGE pRpcMessage,
1911    DWORD* pdwStubPhase);
1912HRESULT CALLBACK IMFMediaTypeHandler_GetCurrentMediaType_Proxy(
1913    IMFMediaTypeHandler* This,
1914    IMFMediaType **ppMediaType);
1915HRESULT __RPC_STUB IMFMediaTypeHandler_GetCurrentMediaType_Stub(
1916    IMFMediaTypeHandler* This,
1917    BYTE **ppbData,
1918    DWORD *pcbData);
1919
1920#endif  /* __IMFMediaTypeHandler_INTERFACE_DEFINED__ */
1921
1922/*****************************************************************************
1923 * IMFStreamDescriptor interface
1924 */
1925#ifndef __IMFStreamDescriptor_INTERFACE_DEFINED__
1926#define __IMFStreamDescriptor_INTERFACE_DEFINED__
1927
1928DEFINE_GUID(IID_IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38);
1929#if defined(__cplusplus) && !defined(CINTERFACE)
1930MIDL_INTERFACE("56c03d9c-9dbb-45f5-ab4b-d80f47c05938")
1931IMFStreamDescriptor : public IMFAttributes
1932{
1933    virtual HRESULT STDMETHODCALLTYPE GetStreamIdentifier(
1934        DWORD *pdwStreamIdentifier) = 0;
1935
1936    virtual HRESULT STDMETHODCALLTYPE GetMediaTypeHandler(
1937        IMFMediaTypeHandler **ppMediaTypeHandler) = 0;
1938
1939};
1940#ifdef __CRT_UUID_DECL
1941__CRT_UUID_DECL(IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38)
1942#endif
1943#else
1944typedef struct IMFStreamDescriptorVtbl {
1945    BEGIN_INTERFACE
1946
1947    /*** IUnknown methods ***/
1948    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1949        IMFStreamDescriptor* This,
1950        REFIID riid,
1951        void **ppvObject);
1952
1953    ULONG (STDMETHODCALLTYPE *AddRef)(
1954        IMFStreamDescriptor* This);
1955
1956    ULONG (STDMETHODCALLTYPE *Release)(
1957        IMFStreamDescriptor* This);
1958
1959    /*** IMFAttributes methods ***/
1960    HRESULT (STDMETHODCALLTYPE *GetItem)(
1961        IMFStreamDescriptor* This,
1962        REFGUID guidKey,
1963        PROPVARIANT *pValue);
1964
1965    HRESULT (STDMETHODCALLTYPE *GetItemType)(
1966        IMFStreamDescriptor* This,
1967        REFGUID guidKey,
1968        MF_ATTRIBUTE_TYPE *pType);
1969
1970    HRESULT (STDMETHODCALLTYPE *CompareItem)(
1971        IMFStreamDescriptor* This,
1972        REFGUID guidKey,
1973        REFPROPVARIANT Value,
1974        WINBOOL *pbResult);
1975
1976    HRESULT (STDMETHODCALLTYPE *Compare)(
1977        IMFStreamDescriptor* This,
1978        IMFAttributes *pTheirs,
1979        MF_ATTRIBUTES_MATCH_TYPE MatchType,
1980        WINBOOL *pbResult);
1981
1982    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
1983        IMFStreamDescriptor* This,
1984        REFGUID guidKey,
1985        UINT32 *punValue);
1986
1987    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
1988        IMFStreamDescriptor* This,
1989        REFGUID guidKey,
1990        UINT64 *punValue);
1991
1992    HRESULT (STDMETHODCALLTYPE *GetDouble)(
1993        IMFStreamDescriptor* This,
1994        REFGUID guidKey,
1995        double *pfValue);
1996
1997    HRESULT (STDMETHODCALLTYPE *GetGUID)(
1998        IMFStreamDescriptor* This,
1999        REFGUID guidKey,
2000        GUID *pguidValue);
2001
2002    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2003        IMFStreamDescriptor* This,
2004        REFGUID guidKey,
2005        UINT32 *pcchLength);
2006
2007    HRESULT (STDMETHODCALLTYPE *GetString)(
2008        IMFStreamDescriptor* This,
2009        REFGUID guidKey,
2010        LPWSTR pwszValue,
2011        UINT32 cchBufSize,
2012        UINT32 *pcchLength);
2013
2014    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2015        IMFStreamDescriptor* This,
2016        REFGUID guidKey,
2017        LPWSTR *ppwszValue,
2018        UINT32 *pcchLength);
2019
2020    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2021        IMFStreamDescriptor* This,
2022        REFGUID guidKey,
2023        UINT32 *pcbBlobSize);
2024
2025    HRESULT (STDMETHODCALLTYPE *GetBlob)(
2026        IMFStreamDescriptor* This,
2027        REFGUID guidKey,
2028        UINT8 *pBuf,
2029        UINT32 cbBufSize,
2030        UINT32 *pcbBlobSize);
2031
2032    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2033        IMFStreamDescriptor* This,
2034        REFGUID guidKey,
2035        UINT8 **ppBuf,
2036        UINT32 *pcbSize);
2037
2038    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2039        IMFStreamDescriptor* This,
2040        REFGUID guidKey,
2041        REFIID riid,
2042        LPVOID *ppv);
2043
2044    HRESULT (STDMETHODCALLTYPE *SetItem)(
2045        IMFStreamDescriptor* This,
2046        REFGUID guidKey,
2047        REFPROPVARIANT Value);
2048
2049    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2050        IMFStreamDescriptor* This,
2051        REFGUID guidKey);
2052
2053    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2054        IMFStreamDescriptor* This);
2055
2056    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2057        IMFStreamDescriptor* This,
2058        REFGUID guidKey,
2059        UINT32 unValue);
2060
2061    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2062        IMFStreamDescriptor* This,
2063        REFGUID guidKey,
2064        UINT64 unValue);
2065
2066    HRESULT (STDMETHODCALLTYPE *SetDouble)(
2067        IMFStreamDescriptor* This,
2068        REFGUID guidKey,
2069        double fValue);
2070
2071    HRESULT (STDMETHODCALLTYPE *SetGUID)(
2072        IMFStreamDescriptor* This,
2073        REFGUID guidKey,
2074        REFGUID guidValue);
2075
2076    HRESULT (STDMETHODCALLTYPE *SetString)(
2077        IMFStreamDescriptor* This,
2078        REFGUID guidKey,
2079        LPCWSTR wszValue);
2080
2081    HRESULT (STDMETHODCALLTYPE *SetBlob)(
2082        IMFStreamDescriptor* This,
2083        REFGUID guidKey,
2084        const UINT8 *pBuf,
2085        UINT32 cbBufSize);
2086
2087    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2088        IMFStreamDescriptor* This,
2089        REFGUID guidKey,
2090        IUnknown *pUnknown);
2091
2092    HRESULT (STDMETHODCALLTYPE *LockStore)(
2093        IMFStreamDescriptor* This);
2094
2095    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2096        IMFStreamDescriptor* This);
2097
2098    HRESULT (STDMETHODCALLTYPE *GetCount)(
2099        IMFStreamDescriptor* This,
2100        UINT32 *pcItems);
2101
2102    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2103        IMFStreamDescriptor* This,
2104        UINT32 unIndex,
2105        GUID *pguidKey,
2106        PROPVARIANT *pValue);
2107
2108    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2109        IMFStreamDescriptor* This,
2110        IMFAttributes *pDest);
2111
2112    /*** IMFStreamDescriptor methods ***/
2113    HRESULT (STDMETHODCALLTYPE *GetStreamIdentifier)(
2114        IMFStreamDescriptor* This,
2115        DWORD *pdwStreamIdentifier);
2116
2117    HRESULT (STDMETHODCALLTYPE *GetMediaTypeHandler)(
2118        IMFStreamDescriptor* This,
2119        IMFMediaTypeHandler **ppMediaTypeHandler);
2120
2121    END_INTERFACE
2122} IMFStreamDescriptorVtbl;
2123interface IMFStreamDescriptor {
2124    CONST_VTBL IMFStreamDescriptorVtbl* lpVtbl;
2125};
2126
2127#ifdef COBJMACROS
2128#ifndef WIDL_C_INLINE_WRAPPERS
2129/*** IUnknown methods ***/
2130#define IMFStreamDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2131#define IMFStreamDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
2132#define IMFStreamDescriptor_Release(This) (This)->lpVtbl->Release(This)
2133/*** IMFAttributes methods ***/
2134#define IMFStreamDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2135#define IMFStreamDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2136#define IMFStreamDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2137#define IMFStreamDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2138#define IMFStreamDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2139#define IMFStreamDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2140#define IMFStreamDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2141#define IMFStreamDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2142#define IMFStreamDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2143#define IMFStreamDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2144#define IMFStreamDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2145#define IMFStreamDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2146#define IMFStreamDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2147#define IMFStreamDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2148#define IMFStreamDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2149#define IMFStreamDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2150#define IMFStreamDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2151#define IMFStreamDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2152#define IMFStreamDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2153#define IMFStreamDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2154#define IMFStreamDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2155#define IMFStreamDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2156#define IMFStreamDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2157#define IMFStreamDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2158#define IMFStreamDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2159#define IMFStreamDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
2160#define IMFStreamDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2161#define IMFStreamDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2162#define IMFStreamDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2163#define IMFStreamDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2164/*** IMFStreamDescriptor methods ***/
2165#define IMFStreamDescriptor_GetStreamIdentifier(This,pdwStreamIdentifier) (This)->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier)
2166#define IMFStreamDescriptor_GetMediaTypeHandler(This,ppMediaTypeHandler) (This)->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler)
2167#else
2168/*** IUnknown methods ***/
2169static FORCEINLINE HRESULT IMFStreamDescriptor_QueryInterface(IMFStreamDescriptor* This,REFIID riid,void **ppvObject) {
2170    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2171}
2172static FORCEINLINE ULONG IMFStreamDescriptor_AddRef(IMFStreamDescriptor* This) {
2173    return This->lpVtbl->AddRef(This);
2174}
2175static FORCEINLINE ULONG IMFStreamDescriptor_Release(IMFStreamDescriptor* This) {
2176    return This->lpVtbl->Release(This);
2177}
2178/*** IMFAttributes methods ***/
2179static FORCEINLINE HRESULT IMFStreamDescriptor_GetItem(IMFStreamDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
2180    return This->lpVtbl->GetItem(This,guidKey,pValue);
2181}
2182static FORCEINLINE HRESULT IMFStreamDescriptor_GetItemType(IMFStreamDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2183    return This->lpVtbl->GetItemType(This,guidKey,pType);
2184}
2185static FORCEINLINE HRESULT IMFStreamDescriptor_CompareItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2186    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2187}
2188static FORCEINLINE HRESULT IMFStreamDescriptor_Compare(IMFStreamDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2189    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2190}
2191static FORCEINLINE HRESULT IMFStreamDescriptor_GetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
2192    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2193}
2194static FORCEINLINE HRESULT IMFStreamDescriptor_GetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
2195    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2196}
2197static FORCEINLINE HRESULT IMFStreamDescriptor_GetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double *pfValue) {
2198    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2199}
2200static FORCEINLINE HRESULT IMFStreamDescriptor_GetGUID(IMFStreamDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
2201    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2202}
2203static FORCEINLINE HRESULT IMFStreamDescriptor_GetStringLength(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
2204    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2205}
2206static FORCEINLINE HRESULT IMFStreamDescriptor_GetString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2207    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2208}
2209static FORCEINLINE HRESULT IMFStreamDescriptor_GetAllocatedString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2210    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2211}
2212static FORCEINLINE HRESULT IMFStreamDescriptor_GetBlobSize(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2213    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2214}
2215static FORCEINLINE HRESULT IMFStreamDescriptor_GetBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2216    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2217}
2218static FORCEINLINE HRESULT IMFStreamDescriptor_GetAllocatedBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2219    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2220}
2221static FORCEINLINE HRESULT IMFStreamDescriptor_GetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2222    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2223}
2224static FORCEINLINE HRESULT IMFStreamDescriptor_SetItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
2225    return This->lpVtbl->SetItem(This,guidKey,Value);
2226}
2227static FORCEINLINE HRESULT IMFStreamDescriptor_DeleteItem(IMFStreamDescriptor* This,REFGUID guidKey) {
2228    return This->lpVtbl->DeleteItem(This,guidKey);
2229}
2230static FORCEINLINE HRESULT IMFStreamDescriptor_DeleteAllItems(IMFStreamDescriptor* This) {
2231    return This->lpVtbl->DeleteAllItems(This);
2232}
2233static FORCEINLINE HRESULT IMFStreamDescriptor_SetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 unValue) {
2234    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2235}
2236static FORCEINLINE HRESULT IMFStreamDescriptor_SetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 unValue) {
2237    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2238}
2239static FORCEINLINE HRESULT IMFStreamDescriptor_SetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double fValue) {
2240    return This->lpVtbl->SetDouble(This,guidKey,fValue);
2241}
2242static FORCEINLINE HRESULT IMFStreamDescriptor_SetGUID(IMFStreamDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
2243    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2244}
2245static FORCEINLINE HRESULT IMFStreamDescriptor_SetString(IMFStreamDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
2246    return This->lpVtbl->SetString(This,guidKey,wszValue);
2247}
2248static FORCEINLINE HRESULT IMFStreamDescriptor_SetBlob(IMFStreamDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2249    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2250}
2251static FORCEINLINE HRESULT IMFStreamDescriptor_SetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
2252    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2253}
2254static FORCEINLINE HRESULT IMFStreamDescriptor_LockStore(IMFStreamDescriptor* This) {
2255    return This->lpVtbl->LockStore(This);
2256}
2257static FORCEINLINE HRESULT IMFStreamDescriptor_UnlockStore(IMFStreamDescriptor* This) {
2258    return This->lpVtbl->UnlockStore(This);
2259}
2260static FORCEINLINE HRESULT IMFStreamDescriptor_GetCount(IMFStreamDescriptor* This,UINT32 *pcItems) {
2261    return This->lpVtbl->GetCount(This,pcItems);
2262}
2263static FORCEINLINE HRESULT IMFStreamDescriptor_GetItemByIndex(IMFStreamDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2264    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2265}
2266static FORCEINLINE HRESULT IMFStreamDescriptor_CopyAllItems(IMFStreamDescriptor* This,IMFAttributes *pDest) {
2267    return This->lpVtbl->CopyAllItems(This,pDest);
2268}
2269/*** IMFStreamDescriptor methods ***/
2270static FORCEINLINE HRESULT IMFStreamDescriptor_GetStreamIdentifier(IMFStreamDescriptor* This,DWORD *pdwStreamIdentifier) {
2271    return This->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier);
2272}
2273static FORCEINLINE HRESULT IMFStreamDescriptor_GetMediaTypeHandler(IMFStreamDescriptor* This,IMFMediaTypeHandler **ppMediaTypeHandler) {
2274    return This->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler);
2275}
2276#endif
2277#endif
2278
2279#endif
2280
2281HRESULT STDMETHODCALLTYPE IMFStreamDescriptor_GetStreamIdentifier_Proxy(
2282    IMFStreamDescriptor* This,
2283    DWORD *pdwStreamIdentifier);
2284void __RPC_STUB IMFStreamDescriptor_GetStreamIdentifier_Stub(
2285    IRpcStubBuffer* This,
2286    IRpcChannelBuffer* pRpcChannelBuffer,
2287    PRPC_MESSAGE pRpcMessage,
2288    DWORD* pdwStubPhase);
2289HRESULT STDMETHODCALLTYPE IMFStreamDescriptor_GetMediaTypeHandler_Proxy(
2290    IMFStreamDescriptor* This,
2291    IMFMediaTypeHandler **ppMediaTypeHandler);
2292void __RPC_STUB IMFStreamDescriptor_GetMediaTypeHandler_Stub(
2293    IRpcStubBuffer* This,
2294    IRpcChannelBuffer* pRpcChannelBuffer,
2295    PRPC_MESSAGE pRpcMessage,
2296    DWORD* pdwStubPhase);
2297
2298#endif  /* __IMFStreamDescriptor_INTERFACE_DEFINED__ */
2299
2300/*****************************************************************************
2301 * IMFPresentationDescriptor interface
2302 */
2303#ifndef __IMFPresentationDescriptor_INTERFACE_DEFINED__
2304#define __IMFPresentationDescriptor_INTERFACE_DEFINED__
2305
2306DEFINE_GUID(IID_IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36);
2307#if defined(__cplusplus) && !defined(CINTERFACE)
2308MIDL_INTERFACE("03cb2711-24d7-4db6-a17f-f3a7a479a536")
2309IMFPresentationDescriptor : public IMFAttributes
2310{
2311    virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorCount(
2312        DWORD *pdwDescriptorCount) = 0;
2313
2314    virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorByIndex(
2315        DWORD dwIndex,
2316        WINBOOL *pfSelected,
2317        IMFStreamDescriptor **ppDescriptor) = 0;
2318
2319    virtual HRESULT STDMETHODCALLTYPE SelectStream(
2320        DWORD dwDescriptorIndex) = 0;
2321
2322    virtual HRESULT STDMETHODCALLTYPE DeselectStream(
2323        DWORD dwDescriptorIndex) = 0;
2324
2325    virtual HRESULT STDMETHODCALLTYPE Clone(
2326        IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
2327
2328};
2329#ifdef __CRT_UUID_DECL
2330__CRT_UUID_DECL(IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36)
2331#endif
2332#else
2333typedef struct IMFPresentationDescriptorVtbl {
2334    BEGIN_INTERFACE
2335
2336    /*** IUnknown methods ***/
2337    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2338        IMFPresentationDescriptor* This,
2339        REFIID riid,
2340        void **ppvObject);
2341
2342    ULONG (STDMETHODCALLTYPE *AddRef)(
2343        IMFPresentationDescriptor* This);
2344
2345    ULONG (STDMETHODCALLTYPE *Release)(
2346        IMFPresentationDescriptor* This);
2347
2348    /*** IMFAttributes methods ***/
2349    HRESULT (STDMETHODCALLTYPE *GetItem)(
2350        IMFPresentationDescriptor* This,
2351        REFGUID guidKey,
2352        PROPVARIANT *pValue);
2353
2354    HRESULT (STDMETHODCALLTYPE *GetItemType)(
2355        IMFPresentationDescriptor* This,
2356        REFGUID guidKey,
2357        MF_ATTRIBUTE_TYPE *pType);
2358
2359    HRESULT (STDMETHODCALLTYPE *CompareItem)(
2360        IMFPresentationDescriptor* This,
2361        REFGUID guidKey,
2362        REFPROPVARIANT Value,
2363        WINBOOL *pbResult);
2364
2365    HRESULT (STDMETHODCALLTYPE *Compare)(
2366        IMFPresentationDescriptor* This,
2367        IMFAttributes *pTheirs,
2368        MF_ATTRIBUTES_MATCH_TYPE MatchType,
2369        WINBOOL *pbResult);
2370
2371    HRESULT (STDMETHODCALLTYPE *GetUINT32)(
2372        IMFPresentationDescriptor* This,
2373        REFGUID guidKey,
2374        UINT32 *punValue);
2375
2376    HRESULT (STDMETHODCALLTYPE *GetUINT64)(
2377        IMFPresentationDescriptor* This,
2378        REFGUID guidKey,
2379        UINT64 *punValue);
2380
2381    HRESULT (STDMETHODCALLTYPE *GetDouble)(
2382        IMFPresentationDescriptor* This,
2383        REFGUID guidKey,
2384        double *pfValue);
2385
2386    HRESULT (STDMETHODCALLTYPE *GetGUID)(
2387        IMFPresentationDescriptor* This,
2388        REFGUID guidKey,
2389        GUID *pguidValue);
2390
2391    HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2392        IMFPresentationDescriptor* This,
2393        REFGUID guidKey,
2394        UINT32 *pcchLength);
2395
2396    HRESULT (STDMETHODCALLTYPE *GetString)(
2397        IMFPresentationDescriptor* This,
2398        REFGUID guidKey,
2399        LPWSTR pwszValue,
2400        UINT32 cchBufSize,
2401        UINT32 *pcchLength);
2402
2403    HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2404        IMFPresentationDescriptor* This,
2405        REFGUID guidKey,
2406        LPWSTR *ppwszValue,
2407        UINT32 *pcchLength);
2408
2409    HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2410        IMFPresentationDescriptor* This,
2411        REFGUID guidKey,
2412        UINT32 *pcbBlobSize);
2413
2414    HRESULT (STDMETHODCALLTYPE *GetBlob)(
2415        IMFPresentationDescriptor* This,
2416        REFGUID guidKey,
2417        UINT8 *pBuf,
2418        UINT32 cbBufSize,
2419        UINT32 *pcbBlobSize);
2420
2421    HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2422        IMFPresentationDescriptor* This,
2423        REFGUID guidKey,
2424        UINT8 **ppBuf,
2425        UINT32 *pcbSize);
2426
2427    HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2428        IMFPresentationDescriptor* This,
2429        REFGUID guidKey,
2430        REFIID riid,
2431        LPVOID *ppv);
2432
2433    HRESULT (STDMETHODCALLTYPE *SetItem)(
2434        IMFPresentationDescriptor* This,
2435        REFGUID guidKey,
2436        REFPROPVARIANT Value);
2437
2438    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2439        IMFPresentationDescriptor* This,
2440        REFGUID guidKey);
2441
2442    HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2443        IMFPresentationDescriptor* This);
2444
2445    HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2446        IMFPresentationDescriptor* This,
2447        REFGUID guidKey,
2448        UINT32 unValue);
2449
2450    HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2451        IMFPresentationDescriptor* This,
2452        REFGUID guidKey,
2453        UINT64 unValue);
2454
2455    HRESULT (STDMETHODCALLTYPE *SetDouble)(
2456        IMFPresentationDescriptor* This,
2457        REFGUID guidKey,
2458        double fValue);
2459
2460    HRESULT (STDMETHODCALLTYPE *SetGUID)(
2461        IMFPresentationDescriptor* This,
2462        REFGUID guidKey,
2463        REFGUID guidValue);
2464
2465    HRESULT (STDMETHODCALLTYPE *SetString)(
2466        IMFPresentationDescriptor* This,
2467        REFGUID guidKey,
2468        LPCWSTR wszValue);
2469
2470    HRESULT (STDMETHODCALLTYPE *SetBlob)(
2471        IMFPresentationDescriptor* This,
2472        REFGUID guidKey,
2473        const UINT8 *pBuf,
2474        UINT32 cbBufSize);
2475
2476    HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2477        IMFPresentationDescriptor* This,
2478        REFGUID guidKey,
2479        IUnknown *pUnknown);
2480
2481    HRESULT (STDMETHODCALLTYPE *LockStore)(
2482        IMFPresentationDescriptor* This);
2483
2484    HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2485        IMFPresentationDescriptor* This);
2486
2487    HRESULT (STDMETHODCALLTYPE *GetCount)(
2488        IMFPresentationDescriptor* This,
2489        UINT32 *pcItems);
2490
2491    HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2492        IMFPresentationDescriptor* This,
2493        UINT32 unIndex,
2494        GUID *pguidKey,
2495        PROPVARIANT *pValue);
2496
2497    HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2498        IMFPresentationDescriptor* This,
2499        IMFAttributes *pDest);
2500
2501    /*** IMFPresentationDescriptor methods ***/
2502    HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorCount)(
2503        IMFPresentationDescriptor* This,
2504        DWORD *pdwDescriptorCount);
2505
2506    HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorByIndex)(
2507        IMFPresentationDescriptor* This,
2508        DWORD dwIndex,
2509        WINBOOL *pfSelected,
2510        IMFStreamDescriptor **ppDescriptor);
2511
2512    HRESULT (STDMETHODCALLTYPE *SelectStream)(
2513        IMFPresentationDescriptor* This,
2514        DWORD dwDescriptorIndex);
2515
2516    HRESULT (STDMETHODCALLTYPE *DeselectStream)(
2517        IMFPresentationDescriptor* This,
2518        DWORD dwDescriptorIndex);
2519
2520    HRESULT (STDMETHODCALLTYPE *Clone)(
2521        IMFPresentationDescriptor* This,
2522        IMFPresentationDescriptor **ppPresentationDescriptor);
2523
2524    END_INTERFACE
2525} IMFPresentationDescriptorVtbl;
2526interface IMFPresentationDescriptor {
2527    CONST_VTBL IMFPresentationDescriptorVtbl* lpVtbl;
2528};
2529
2530#ifdef COBJMACROS
2531#ifndef WIDL_C_INLINE_WRAPPERS
2532/*** IUnknown methods ***/
2533#define IMFPresentationDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2534#define IMFPresentationDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
2535#define IMFPresentationDescriptor_Release(This) (This)->lpVtbl->Release(This)
2536/*** IMFAttributes methods ***/
2537#define IMFPresentationDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2538#define IMFPresentationDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2539#define IMFPresentationDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2540#define IMFPresentationDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2541#define IMFPresentationDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2542#define IMFPresentationDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2543#define IMFPresentationDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2544#define IMFPresentationDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2545#define IMFPresentationDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2546#define IMFPresentationDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2547#define IMFPresentationDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2548#define IMFPresentationDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2549#define IMFPresentationDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2550#define IMFPresentationDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2551#define IMFPresentationDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2552#define IMFPresentationDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2553#define IMFPresentationDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2554#define IMFPresentationDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2555#define IMFPresentationDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2556#define IMFPresentationDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2557#define IMFPresentationDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2558#define IMFPresentationDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2559#define IMFPresentationDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2560#define IMFPresentationDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2561#define IMFPresentationDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2562#define IMFPresentationDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
2563#define IMFPresentationDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2564#define IMFPresentationDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2565#define IMFPresentationDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2566#define IMFPresentationDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2567/*** IMFPresentationDescriptor methods ***/
2568#define IMFPresentationDescriptor_GetStreamDescriptorCount(This,pdwDescriptorCount) (This)->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount)
2569#define IMFPresentationDescriptor_GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor) (This)->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor)
2570#define IMFPresentationDescriptor_SelectStream(This,dwDescriptorIndex) (This)->lpVtbl->SelectStream(This,dwDescriptorIndex)
2571#define IMFPresentationDescriptor_DeselectStream(This,dwDescriptorIndex) (This)->lpVtbl->DeselectStream(This,dwDescriptorIndex)
2572#define IMFPresentationDescriptor_Clone(This,ppPresentationDescriptor) (This)->lpVtbl->Clone(This,ppPresentationDescriptor)
2573#else
2574/*** IUnknown methods ***/
2575static FORCEINLINE HRESULT IMFPresentationDescriptor_QueryInterface(IMFPresentationDescriptor* This,REFIID riid,void **ppvObject) {
2576    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2577}
2578static FORCEINLINE ULONG IMFPresentationDescriptor_AddRef(IMFPresentationDescriptor* This) {
2579    return This->lpVtbl->AddRef(This);
2580}
2581static FORCEINLINE ULONG IMFPresentationDescriptor_Release(IMFPresentationDescriptor* This) {
2582    return This->lpVtbl->Release(This);
2583}
2584/*** IMFAttributes methods ***/
2585static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItem(IMFPresentationDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
2586    return This->lpVtbl->GetItem(This,guidKey,pValue);
2587}
2588static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItemType(IMFPresentationDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2589    return This->lpVtbl->GetItemType(This,guidKey,pType);
2590}
2591static FORCEINLINE HRESULT IMFPresentationDescriptor_CompareItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2592    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2593}
2594static FORCEINLINE HRESULT IMFPresentationDescriptor_Compare(IMFPresentationDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2595    return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2596}
2597static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
2598    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2599}
2600static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
2601    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2602}
2603static FORCEINLINE HRESULT IMFPresentationDescriptor_GetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double *pfValue) {
2604    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2605}
2606static FORCEINLINE HRESULT IMFPresentationDescriptor_GetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
2607    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2608}
2609static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStringLength(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
2610    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2611}
2612static FORCEINLINE HRESULT IMFPresentationDescriptor_GetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2613    return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2614}
2615static FORCEINLINE HRESULT IMFPresentationDescriptor_GetAllocatedString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2616    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2617}
2618static FORCEINLINE HRESULT IMFPresentationDescriptor_GetBlobSize(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2619    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2620}
2621static FORCEINLINE HRESULT IMFPresentationDescriptor_GetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2622    return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2623}
2624static FORCEINLINE HRESULT IMFPresentationDescriptor_GetAllocatedBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2625    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2626}
2627static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2628    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2629}
2630static FORCEINLINE HRESULT IMFPresentationDescriptor_SetItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
2631    return This->lpVtbl->SetItem(This,guidKey,Value);
2632}
2633static FORCEINLINE HRESULT IMFPresentationDescriptor_DeleteItem(IMFPresentationDescriptor* This,REFGUID guidKey) {
2634    return This->lpVtbl->DeleteItem(This,guidKey);
2635}
2636static FORCEINLINE HRESULT IMFPresentationDescriptor_DeleteAllItems(IMFPresentationDescriptor* This) {
2637    return This->lpVtbl->DeleteAllItems(This);
2638}
2639static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 unValue) {
2640    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2641}
2642static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 unValue) {
2643    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2644}
2645static FORCEINLINE HRESULT IMFPresentationDescriptor_SetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double fValue) {
2646    return This->lpVtbl->SetDouble(This,guidKey,fValue);
2647}
2648static FORCEINLINE HRESULT IMFPresentationDescriptor_SetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
2649    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2650}
2651static FORCEINLINE HRESULT IMFPresentationDescriptor_SetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
2652    return This->lpVtbl->SetString(This,guidKey,wszValue);
2653}
2654static FORCEINLINE HRESULT IMFPresentationDescriptor_SetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2655    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2656}
2657static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
2658    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2659}
2660static FORCEINLINE HRESULT IMFPresentationDescriptor_LockStore(IMFPresentationDescriptor* This) {
2661    return This->lpVtbl->LockStore(This);
2662}
2663static FORCEINLINE HRESULT IMFPresentationDescriptor_UnlockStore(IMFPresentationDescriptor* This) {
2664    return This->lpVtbl->UnlockStore(This);
2665}
2666static FORCEINLINE HRESULT IMFPresentationDescriptor_GetCount(IMFPresentationDescriptor* This,UINT32 *pcItems) {
2667    return This->lpVtbl->GetCount(This,pcItems);
2668}
2669static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItemByIndex(IMFPresentationDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2670    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2671}
2672static FORCEINLINE HRESULT IMFPresentationDescriptor_CopyAllItems(IMFPresentationDescriptor* This,IMFAttributes *pDest) {
2673    return This->lpVtbl->CopyAllItems(This,pDest);
2674}
2675/*** IMFPresentationDescriptor methods ***/
2676static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStreamDescriptorCount(IMFPresentationDescriptor* This,DWORD *pdwDescriptorCount) {
2677    return This->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount);
2678}
2679static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStreamDescriptorByIndex(IMFPresentationDescriptor* This,DWORD dwIndex,WINBOOL *pfSelected,IMFStreamDescriptor **ppDescriptor) {
2680    return This->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor);
2681}
2682static FORCEINLINE HRESULT IMFPresentationDescriptor_SelectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
2683    return This->lpVtbl->SelectStream(This,dwDescriptorIndex);
2684}
2685static FORCEINLINE HRESULT IMFPresentationDescriptor_DeselectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
2686    return This->lpVtbl->DeselectStream(This,dwDescriptorIndex);
2687}
2688static FORCEINLINE HRESULT IMFPresentationDescriptor_Clone(IMFPresentationDescriptor* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
2689    return This->lpVtbl->Clone(This,ppPresentationDescriptor);
2690}
2691#endif
2692#endif
2693
2694#endif
2695
2696HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_GetStreamDescriptorCount_Proxy(
2697    IMFPresentationDescriptor* This,
2698    DWORD *pdwDescriptorCount);
2699void __RPC_STUB IMFPresentationDescriptor_GetStreamDescriptorCount_Stub(
2700    IRpcStubBuffer* This,
2701    IRpcChannelBuffer* pRpcChannelBuffer,
2702    PRPC_MESSAGE pRpcMessage,
2703    DWORD* pdwStubPhase);
2704HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_GetStreamDescriptorByIndex_Proxy(
2705    IMFPresentationDescriptor* This,
2706    DWORD dwIndex,
2707    WINBOOL *pfSelected,
2708    IMFStreamDescriptor **ppDescriptor);
2709void __RPC_STUB IMFPresentationDescriptor_GetStreamDescriptorByIndex_Stub(
2710    IRpcStubBuffer* This,
2711    IRpcChannelBuffer* pRpcChannelBuffer,
2712    PRPC_MESSAGE pRpcMessage,
2713    DWORD* pdwStubPhase);
2714HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_SelectStream_Proxy(
2715    IMFPresentationDescriptor* This,
2716    DWORD dwDescriptorIndex);
2717void __RPC_STUB IMFPresentationDescriptor_SelectStream_Stub(
2718    IRpcStubBuffer* This,
2719    IRpcChannelBuffer* pRpcChannelBuffer,
2720    PRPC_MESSAGE pRpcMessage,
2721    DWORD* pdwStubPhase);
2722HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_DeselectStream_Proxy(
2723    IMFPresentationDescriptor* This,
2724    DWORD dwDescriptorIndex);
2725void __RPC_STUB IMFPresentationDescriptor_DeselectStream_Stub(
2726    IRpcStubBuffer* This,
2727    IRpcChannelBuffer* pRpcChannelBuffer,
2728    PRPC_MESSAGE pRpcMessage,
2729    DWORD* pdwStubPhase);
2730HRESULT STDMETHODCALLTYPE IMFPresentationDescriptor_Clone_Proxy(
2731    IMFPresentationDescriptor* This,
2732    IMFPresentationDescriptor **ppPresentationDescriptor);
2733void __RPC_STUB IMFPresentationDescriptor_Clone_Stub(
2734    IRpcStubBuffer* This,
2735    IRpcChannelBuffer* pRpcChannelBuffer,
2736    PRPC_MESSAGE pRpcMessage,
2737    DWORD* pdwStubPhase);
2738
2739#endif  /* __IMFPresentationDescriptor_INTERFACE_DEFINED__ */
2740
2741/*****************************************************************************
2742 * IMFMediaSource interface
2743 */
2744#ifndef __IMFMediaSource_INTERFACE_DEFINED__
2745#define __IMFMediaSource_INTERFACE_DEFINED__
2746
2747DEFINE_GUID(IID_IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66);
2748#if defined(__cplusplus) && !defined(CINTERFACE)
2749MIDL_INTERFACE("279a808d-aec7-40c8-9c6b-a6b492c78a66")
2750IMFMediaSource : public IMFMediaEventGenerator
2751{
2752    virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
2753        DWORD *pdwCharacteristics) = 0;
2754
2755    virtual HRESULT STDMETHODCALLTYPE CreatePresentationDescriptor(
2756        IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
2757
2758    virtual HRESULT STDMETHODCALLTYPE Start(
2759        IMFPresentationDescriptor *pPresentationDescriptor,
2760        const GUID *pguidTimeFormat,
2761        const PROPVARIANT *pvarStartPosition) = 0;
2762
2763    virtual HRESULT STDMETHODCALLTYPE Stop(
2764        ) = 0;
2765
2766    virtual HRESULT STDMETHODCALLTYPE Pause(
2767        ) = 0;
2768
2769    virtual HRESULT STDMETHODCALLTYPE Shutdown(
2770        ) = 0;
2771
2772};
2773#ifdef __CRT_UUID_DECL
2774__CRT_UUID_DECL(IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66)
2775#endif
2776#else
2777typedef struct IMFMediaSourceVtbl {
2778    BEGIN_INTERFACE
2779
2780    /*** IUnknown methods ***/
2781    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2782        IMFMediaSource* This,
2783        REFIID riid,
2784        void **ppvObject);
2785
2786    ULONG (STDMETHODCALLTYPE *AddRef)(
2787        IMFMediaSource* This);
2788
2789    ULONG (STDMETHODCALLTYPE *Release)(
2790        IMFMediaSource* This);
2791
2792    /*** IMFMediaEventGenerator methods ***/
2793    HRESULT (STDMETHODCALLTYPE *GetEvent)(
2794        IMFMediaSource* This,
2795        DWORD dwFlags,
2796        IMFMediaEvent **ppEvent);
2797
2798    HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
2799        IMFMediaSource* This,
2800        IMFAsyncCallback *pCallback,
2801        IUnknown *punkState);
2802
2803    HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
2804        IMFMediaSource* This,
2805        IMFAsyncResult *pResult,
2806        IMFMediaEvent **ppEvent);
2807
2808    HRESULT (STDMETHODCALLTYPE *QueueEvent)(
2809        IMFMediaSource* This,
2810        MediaEventType met,
2811        REFGUID guidExtendedType,
2812        HRESULT hrStatus,
2813        const PROPVARIANT *pvValue);
2814
2815    /*** IMFMediaSource methods ***/
2816    HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
2817        IMFMediaSource* This,
2818        DWORD *pdwCharacteristics);
2819
2820    HRESULT (STDMETHODCALLTYPE *CreatePresentationDescriptor)(
2821        IMFMediaSource* This,
2822        IMFPresentationDescriptor **ppPresentationDescriptor);
2823
2824    HRESULT (STDMETHODCALLTYPE *Start)(
2825        IMFMediaSource* This,
2826        IMFPresentationDescriptor *pPresentationDescriptor,
2827        const GUID *pguidTimeFormat,
2828        const PROPVARIANT *pvarStartPosition);
2829
2830    HRESULT (STDMETHODCALLTYPE *Stop)(
2831        IMFMediaSource* This);
2832
2833    HRESULT (STDMETHODCALLTYPE *Pause)(
2834        IMFMediaSource* This);
2835
2836    HRESULT (STDMETHODCALLTYPE *Shutdown)(
2837        IMFMediaSource* This);
2838
2839    END_INTERFACE
2840} IMFMediaSourceVtbl;
2841interface IMFMediaSource {
2842    CONST_VTBL IMFMediaSourceVtbl* lpVtbl;
2843};
2844
2845#ifdef COBJMACROS
2846#ifndef WIDL_C_INLINE_WRAPPERS
2847/*** IUnknown methods ***/
2848#define IMFMediaSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2849#define IMFMediaSource_AddRef(This) (This)->lpVtbl->AddRef(This)
2850#define IMFMediaSource_Release(This) (This)->lpVtbl->Release(This)
2851/*** IMFMediaEventGenerator methods ***/
2852#define IMFMediaSource_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
2853#define IMFMediaSource_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
2854#define IMFMediaSource_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
2855#define IMFMediaSource_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
2856/*** IMFMediaSource methods ***/
2857#define IMFMediaSource_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
2858#define IMFMediaSource_CreatePresentationDescriptor(This,ppPresentationDescriptor) (This)->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor)
2859#define IMFMediaSource_Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition)
2860#define IMFMediaSource_Stop(This) (This)->lpVtbl->Stop(This)
2861#define IMFMediaSource_Pause(This) (This)->lpVtbl->Pause(This)
2862#define IMFMediaSource_Shutdown(This) (This)->lpVtbl->Shutdown(This)
2863#else
2864/*** IUnknown methods ***/
2865static FORCEINLINE HRESULT IMFMediaSource_QueryInterface(IMFMediaSource* This,REFIID riid,void **ppvObject) {
2866    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2867}
2868static FORCEINLINE ULONG IMFMediaSource_AddRef(IMFMediaSource* This) {
2869    return This->lpVtbl->AddRef(This);
2870}
2871static FORCEINLINE ULONG IMFMediaSource_Release(IMFMediaSource* This) {
2872    return This->lpVtbl->Release(This);
2873}
2874/*** IMFMediaEventGenerator methods ***/
2875static FORCEINLINE HRESULT IMFMediaSource_GetEvent(IMFMediaSource* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
2876    return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
2877}
2878static FORCEINLINE HRESULT IMFMediaSource_BeginGetEvent(IMFMediaSource* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
2879    return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
2880}
2881static FORCEINLINE HRESULT IMFMediaSource_EndGetEvent(IMFMediaSource* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
2882    return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
2883}
2884static FORCEINLINE HRESULT IMFMediaSource_QueueEvent(IMFMediaSource* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
2885    return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
2886}
2887/*** IMFMediaSource methods ***/
2888static FORCEINLINE HRESULT IMFMediaSource_GetCharacteristics(IMFMediaSource* This,DWORD *pdwCharacteristics) {
2889    return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
2890}
2891static FORCEINLINE HRESULT IMFMediaSource_CreatePresentationDescriptor(IMFMediaSource* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
2892    return This->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor);
2893}
2894static FORCEINLINE HRESULT IMFMediaSource_Start(IMFMediaSource* This,IMFPresentationDescriptor *pPresentationDescriptor,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
2895    return This->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition);
2896}
2897static FORCEINLINE HRESULT IMFMediaSource_Stop(IMFMediaSource* This) {
2898    return This->lpVtbl->Stop(This);
2899}
2900static FORCEINLINE HRESULT IMFMediaSource_Pause(IMFMediaSource* This) {
2901    return This->lpVtbl->Pause(This);
2902}
2903static FORCEINLINE HRESULT IMFMediaSource_Shutdown(IMFMediaSource* This) {
2904    return This->lpVtbl->Shutdown(This);
2905}
2906#endif
2907#endif
2908
2909#endif
2910
2911HRESULT STDMETHODCALLTYPE IMFMediaSource_GetCharacteristics_Proxy(
2912    IMFMediaSource* This,
2913    DWORD *pdwCharacteristics);
2914void __RPC_STUB IMFMediaSource_GetCharacteristics_Stub(
2915    IRpcStubBuffer* This,
2916    IRpcChannelBuffer* pRpcChannelBuffer,
2917    PRPC_MESSAGE pRpcMessage,
2918    DWORD* pdwStubPhase);
2919HRESULT STDMETHODCALLTYPE IMFMediaSource_RemoteCreatePresentationDescriptor_Proxy(
2920    IMFMediaSource* This,
2921    DWORD *pcbPD,
2922    BYTE **pbPD,
2923    IMFPresentationDescriptor **ppRemotePD);
2924void __RPC_STUB IMFMediaSource_RemoteCreatePresentationDescriptor_Stub(
2925    IRpcStubBuffer* This,
2926    IRpcChannelBuffer* pRpcChannelBuffer,
2927    PRPC_MESSAGE pRpcMessage,
2928    DWORD* pdwStubPhase);
2929HRESULT STDMETHODCALLTYPE IMFMediaSource_Start_Proxy(
2930    IMFMediaSource* This,
2931    IMFPresentationDescriptor *pPresentationDescriptor,
2932    const GUID *pguidTimeFormat,
2933    const PROPVARIANT *pvarStartPosition);
2934void __RPC_STUB IMFMediaSource_Start_Stub(
2935    IRpcStubBuffer* This,
2936    IRpcChannelBuffer* pRpcChannelBuffer,
2937    PRPC_MESSAGE pRpcMessage,
2938    DWORD* pdwStubPhase);
2939HRESULT STDMETHODCALLTYPE IMFMediaSource_Stop_Proxy(
2940    IMFMediaSource* This);
2941void __RPC_STUB IMFMediaSource_Stop_Stub(
2942    IRpcStubBuffer* This,
2943    IRpcChannelBuffer* pRpcChannelBuffer,
2944    PRPC_MESSAGE pRpcMessage,
2945    DWORD* pdwStubPhase);
2946HRESULT STDMETHODCALLTYPE IMFMediaSource_Pause_Proxy(
2947    IMFMediaSource* This);
2948void __RPC_STUB IMFMediaSource_Pause_Stub(
2949    IRpcStubBuffer* This,
2950    IRpcChannelBuffer* pRpcChannelBuffer,
2951    PRPC_MESSAGE pRpcMessage,
2952    DWORD* pdwStubPhase);
2953HRESULT STDMETHODCALLTYPE IMFMediaSource_Shutdown_Proxy(
2954    IMFMediaSource* This);
2955void __RPC_STUB IMFMediaSource_Shutdown_Stub(
2956    IRpcStubBuffer* This,
2957    IRpcChannelBuffer* pRpcChannelBuffer,
2958    PRPC_MESSAGE pRpcMessage,
2959    DWORD* pdwStubPhase);
2960HRESULT CALLBACK IMFMediaSource_CreatePresentationDescriptor_Proxy(
2961    IMFMediaSource* This,
2962    IMFPresentationDescriptor **ppPresentationDescriptor);
2963HRESULT __RPC_STUB IMFMediaSource_CreatePresentationDescriptor_Stub(
2964    IMFMediaSource* This,
2965    DWORD *pcbPD,
2966    BYTE **pbPD,
2967    IMFPresentationDescriptor **ppRemotePD);
2968
2969#endif  /* __IMFMediaSource_INTERFACE_DEFINED__ */
2970
2971typedef struct _MF_LEAKY_BUCKET_PAIR {
2972    DWORD dwBitrate;
2973    DWORD msBufferWindow;
2974} MF_LEAKY_BUCKET_PAIR;
2975typedef struct _MFBYTESTREAM_BUFFERING_PARAMS {
2976    QWORD cbTotalFileSize;
2977    QWORD cbPlayableDataSize;
2978    MF_LEAKY_BUCKET_PAIR *prgBuckets;
2979    DWORD cBuckets;
2980    QWORD qwNetBufferingTime;
2981    QWORD qwExtraBufferingTimeDuringSeek;
2982    QWORD qwPlayDuration;
2983    float dRate;
2984} MFBYTESTREAM_BUFFERING_PARAMS;
2985/*****************************************************************************
2986 * IMFByteStreamBuffering interface
2987 */
2988#ifndef __IMFByteStreamBuffering_INTERFACE_DEFINED__
2989#define __IMFByteStreamBuffering_INTERFACE_DEFINED__
2990
2991DEFINE_GUID(IID_IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e);
2992#if defined(__cplusplus) && !defined(CINTERFACE)
2993MIDL_INTERFACE("6d66d782-1d4f-4db7-8c63-cb8c77f1ef5e")
2994IMFByteStreamBuffering : public IUnknown
2995{
2996    virtual HRESULT STDMETHODCALLTYPE SetBufferingParams(
2997        MFBYTESTREAM_BUFFERING_PARAMS *pParams) = 0;
2998
2999    virtual HRESULT STDMETHODCALLTYPE EnableBuffering(
3000        WINBOOL fEnable) = 0;
3001
3002    virtual HRESULT STDMETHODCALLTYPE StopBuffering(
3003        ) = 0;
3004
3005};
3006#ifdef __CRT_UUID_DECL
3007__CRT_UUID_DECL(IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e)
3008#endif
3009#else
3010typedef struct IMFByteStreamBufferingVtbl {
3011    BEGIN_INTERFACE
3012
3013    /*** IUnknown methods ***/
3014    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3015        IMFByteStreamBuffering* This,
3016        REFIID riid,
3017        void **ppvObject);
3018
3019    ULONG (STDMETHODCALLTYPE *AddRef)(
3020        IMFByteStreamBuffering* This);
3021
3022    ULONG (STDMETHODCALLTYPE *Release)(
3023        IMFByteStreamBuffering* This);
3024
3025    /*** IMFByteStreamBuffering methods ***/
3026    HRESULT (STDMETHODCALLTYPE *SetBufferingParams)(
3027        IMFByteStreamBuffering* This,
3028        MFBYTESTREAM_BUFFERING_PARAMS *pParams);
3029
3030    HRESULT (STDMETHODCALLTYPE *EnableBuffering)(
3031        IMFByteStreamBuffering* This,
3032        WINBOOL fEnable);
3033
3034    HRESULT (STDMETHODCALLTYPE *StopBuffering)(
3035        IMFByteStreamBuffering* This);
3036
3037    END_INTERFACE
3038} IMFByteStreamBufferingVtbl;
3039interface IMFByteStreamBuffering {
3040    CONST_VTBL IMFByteStreamBufferingVtbl* lpVtbl;
3041};
3042
3043#ifdef COBJMACROS
3044#ifndef WIDL_C_INLINE_WRAPPERS
3045/*** IUnknown methods ***/
3046#define IMFByteStreamBuffering_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3047#define IMFByteStreamBuffering_AddRef(This) (This)->lpVtbl->AddRef(This)
3048#define IMFByteStreamBuffering_Release(This) (This)->lpVtbl->Release(This)
3049/*** IMFByteStreamBuffering methods ***/
3050#define IMFByteStreamBuffering_SetBufferingParams(This,pParams) (This)->lpVtbl->SetBufferingParams(This,pParams)
3051#define IMFByteStreamBuffering_EnableBuffering(This,fEnable) (This)->lpVtbl->EnableBuffering(This,fEnable)
3052#define IMFByteStreamBuffering_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
3053#else
3054/*** IUnknown methods ***/
3055static FORCEINLINE HRESULT IMFByteStreamBuffering_QueryInterface(IMFByteStreamBuffering* This,REFIID riid,void **ppvObject) {
3056    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3057}
3058static FORCEINLINE ULONG IMFByteStreamBuffering_AddRef(IMFByteStreamBuffering* This) {
3059    return This->lpVtbl->AddRef(This);
3060}
3061static FORCEINLINE ULONG IMFByteStreamBuffering_Release(IMFByteStreamBuffering* This) {
3062    return This->lpVtbl->Release(This);
3063}
3064/*** IMFByteStreamBuffering methods ***/
3065static FORCEINLINE HRESULT IMFByteStreamBuffering_SetBufferingParams(IMFByteStreamBuffering* This,MFBYTESTREAM_BUFFERING_PARAMS *pParams) {
3066    return This->lpVtbl->SetBufferingParams(This,pParams);
3067}
3068static FORCEINLINE HRESULT IMFByteStreamBuffering_EnableBuffering(IMFByteStreamBuffering* This,WINBOOL fEnable) {
3069    return This->lpVtbl->EnableBuffering(This,fEnable);
3070}
3071static FORCEINLINE HRESULT IMFByteStreamBuffering_StopBuffering(IMFByteStreamBuffering* This) {
3072    return This->lpVtbl->StopBuffering(This);
3073}
3074#endif
3075#endif
3076
3077#endif
3078
3079HRESULT STDMETHODCALLTYPE IMFByteStreamBuffering_SetBufferingParams_Proxy(
3080    IMFByteStreamBuffering* This,
3081    MFBYTESTREAM_BUFFERING_PARAMS *pParams);
3082void __RPC_STUB IMFByteStreamBuffering_SetBufferingParams_Stub(
3083    IRpcStubBuffer* This,
3084    IRpcChannelBuffer* pRpcChannelBuffer,
3085    PRPC_MESSAGE pRpcMessage,
3086    DWORD* pdwStubPhase);
3087HRESULT STDMETHODCALLTYPE IMFByteStreamBuffering_EnableBuffering_Proxy(
3088    IMFByteStreamBuffering* This,
3089    WINBOOL fEnable);
3090void __RPC_STUB IMFByteStreamBuffering_EnableBuffering_Stub(
3091    IRpcStubBuffer* This,
3092    IRpcChannelBuffer* pRpcChannelBuffer,
3093    PRPC_MESSAGE pRpcMessage,
3094    DWORD* pdwStubPhase);
3095HRESULT STDMETHODCALLTYPE IMFByteStreamBuffering_StopBuffering_Proxy(
3096    IMFByteStreamBuffering* This);
3097void __RPC_STUB IMFByteStreamBuffering_StopBuffering_Stub(
3098    IRpcStubBuffer* This,
3099    IRpcChannelBuffer* pRpcChannelBuffer,
3100    PRPC_MESSAGE pRpcMessage,
3101    DWORD* pdwStubPhase);
3102
3103#endif  /* __IMFByteStreamBuffering_INTERFACE_DEFINED__ */
3104
3105HRESULT WINAPI MFRequireProtectedEnvironment(IMFPresentationDescriptor *pPresentationDescriptor);
3106HRESULT WINAPI MFSerializePresentationDescriptor(IMFPresentationDescriptor *pPD,DWORD *pcbData,BYTE **ppbData);
3107typedef DWORD MFSequencerElementId; /*Unknown type*/
3108
3109typedef enum MFCLOCK_CHARACTERISTICS_FLAGS {
3110  MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ   = 0x2,
3111  MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING    = 0x4,
3112  MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK   = 0x8
3113} MFCLOCK_CHARACTERISTICS_FLAGS;
3114
3115#if (WINVER >= 0x0601)
3116
3117typedef enum _MF_QUALITY_ADVISE_FLAGS {
3118  MF_QUALITY_CANNOT_KEEP_UP   = 0x1
3119} MF_QUALITY_ADVISE_FLAGS;
3120
3121#endif /*(WINVER >= 0x0601)*/
3122
3123typedef enum _MF_QUALITY_DROP_MODE {
3124  MF_DROP_MODE_NONE   = 0x0,
3125  MF_DROP_MODE_1      = 0x1,
3126  MF_DROP_MODE_2      = 0x2,
3127  MF_DROP_MODE_3      = 0x3,
3128  MF_DROP_MODE_4      = 0x4,
3129  MF_DROP_MODE_5      = 0x5,
3130  MF_NUM_DROP_MODES   = 0x6
3131} MF_QUALITY_DROP_MODE;
3132
3133typedef enum _MF_QUALITY_LEVEL {
3134  MF_QUALITY_NORMAL           = 0x0,
3135  MF_QUALITY_NORMAL_MINUS_1   = 0x1,
3136  MF_QUALITY_NORMAL_MINUS_2   = 0x2,
3137  MF_QUALITY_NORMAL_MINUS_3   = 0x3,
3138  MF_QUALITY_NORMAL_MINUS_4   = 0x4,
3139  MF_QUALITY_NORMAL_MINUS_5   = 0x5,
3140  MF_NUM_QUALITY_LEVELS       = 0x6
3141} MF_QUALITY_LEVEL;
3142
3143typedef enum MF_SOURCE_READER_CONTROL_FLAG {
3144  MF_SOURCE_READER_CONTROLF_DRAIN   = 0x00000001
3145} MF_SOURCE_READER_CONTROL_FLAG;
3146
3147typedef enum _MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS {
3148  MF_TOPOLOGY_RESOLUTION_SUCCEEDED              = 0x00000000,
3149  MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE          = 0x00000001,
3150  MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS   = 0x00000002
3151} MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS;
3152
3153typedef enum _MF_TOPONODE_DRAIN_MODE {
3154  MF_TOPONODE_DRAIN_DEFAULT,
3155  MF_TOPONODE_DRAIN_ALWAYS,
3156  MF_TOPONODE_DRAIN_NEVER
3157} MF_TOPONODE_DRAIN_MODE;
3158
3159typedef enum _MF_TOPONODE_FLUSH_MODE {
3160  MF_TOPONODE_FLUSH_ALWAYS,
3161  MF_TOPONODE_FLUSH_SEEK,
3162  MF_TOPONODE_FLUSH_NEVER
3163} MF_TOPONODE_FLUSH_MODE;
3164
3165#if (WINVER >= 0x0601)
3166
3167typedef enum _MF_TRANSCODE_TOPOLOGY_MODE_FLAGS {
3168  MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY      = 0,
3169  MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED   = 1
3170} MF_TRANSCODE_TOPOLOGYMODE_FLAGS;
3171
3172#endif
3173
3174typedef enum  {
3175  MF_LICENSE_URL_UNTRUSTED,
3176  MF_LICENSE_URL_TRUSTED,
3177  MF_LICENSE_URL_TAMPERED
3178} MF_URL_TRUST_STATUS;
3179
3180typedef enum MFASF_INDEXERFLAGS {
3181  MFASF_INDEXER_WRITE_NEW_INDEX            = 0x00000001,
3182  MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK   = 0x00000004,
3183  MFASF_INDEXER_WRITE_FOR_LIVEREAD         = 0x00000008
3184} MFASF_INDEXERFLAGS;
3185
3186typedef enum _MFCLOCK_RELATIONAL_FLAGS {
3187  MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD   = 0x1
3188} MFCLOCK_RELATIONAL_FLAGS;
3189
3190typedef enum _MFMEDIASOURCE_CHARACTERISTICS {
3191  MFMEDIASOURCE_IS_LIVE                      = 0x1,
3192  MFMEDIASOURCE_CAN_SEEK                     = 0x2,
3193  MFMEDIASOURCE_CAN_PAUSE                    = 0x4,
3194  MFMEDIASOURCE_HAS_SLOW_SEEK                = 0x8,
3195  MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS   = 0x10,
3196  MFMEDIASOURCE_CAN_SKIPFORWARD              = 0x20,
3197  MFMEDIASOURCE_CAN_SKIPBACKWARD             = 0x40
3198} MFMEDIASOURCE_CHARACTERISTICS;
3199
3200typedef enum _MFNET_PROXYSETTINGS {
3201  MFNET_PROXYSETTING_NONE      = 0,
3202  MFNET_PROXYSETTING_MANUAL    = 1,
3203  MFNET_PROXYSETTING_AUTO      = 2,
3204  MFNET_PROXYSETTING_BROWSER   = 3
3205} MFNET_PROXYSETTINGS;
3206
3207typedef enum _MFNetAuthenticationFlags {
3208  MFNET_AUTHENTICATION_PROXY            = 0x00000001,
3209  MFNET_AUTHENTICATION_CLEAR_TEXT       = 0x00000002,
3210  MFNET_AUTHENTICATION_LOGGED_ON_USER
3211} MFNetAuthenticationFlags;
3212
3213typedef enum _MFNetCredentialOptions {
3214  MFNET_CREDENTIAL_SAVE               = 0x00000001,
3215  MFNET_CREDENTIAL_DONT_CACHE         = 0x00000002,
3216  MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT   = 0x00000004
3217} MFNetCredentialOptions;
3218
3219typedef enum _MFNetCredentialRequirements {
3220  REQUIRE_PROMPT          = 0x00000001,
3221  REQUIRE_SAVE_SELECTED   = 0x00000002
3222} MFNetCredentialRequirements;
3223
3224typedef enum _MFNETSOURCE_CACHE_STATE {
3225  MFNETSOURCE_CACHE_UNAVAILABLE,
3226  MFNETSOURCE_CACHE_ACTIVE_WRITING,
3227  MFNETSOURCE_CACHE_ACTIVE_COMPLETE
3228} MFNETSOURCE_CACHE_STATE;
3229
3230typedef enum _MFNETSOURCE_PROTOCOL_TYPE {
3231  MFNETSOURCE_UNDEFINED   = 0x0,
3232  MFNETSOURCE_HTTP        = 0x1,
3233  MFNETSOURCE_RTSP        = 0x2,
3234  MFNETSOURCE_FILE        = 0x3,
3235  MFNETSOURCE_MULTICAST   = 0x4
3236} MFNETSOURCE_PROTOCOL_TYPE;
3237
3238typedef enum _MFNETSOURCE_STATISTICS_IDS {
3239  MFNETSOURCE_RECVPACKETS_ID                = 0,
3240  MFNETSOURCE_LOSTPACKETS_ID,
3241  MFNETSOURCE_RESENDSREQUESTED_ID,
3242  MFNETSOURCE_RESENDSRECEIVED_ID,
3243  MFNETSOURCE_RECOVEREDBYECCPACKETS_ID,
3244  MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID,
3245  MFNETSOURCE_OUTPACKETS_ID,
3246  MFNETSOURCE_RECVRATE_ID,
3247  MFNETSOURCE_AVGBANDWIDTHBPS_ID,
3248  MFNETSOURCE_BYTESRECEIVED_ID,
3249  MFNETSOURCE_PROTOCOL_ID,
3250  MFNETSOURCE_TRANSPORT_ID,
3251  MFNETSOURCE_CACHE_STATE_ID,
3252  MFNETSOURCE_LINKBANDWIDTH_ID,
3253  MFNETSOURCE_CONTENTBITRATE_ID,
3254  MFNETSOURCE_SPEEDFACTOR_ID,
3255  MFNETSOURCE_BUFFERSIZE_ID,
3256  MFNETSOURCE_BUFFERPROGRESS_ID,
3257  MFNETSOURCE_LASTBWSWITCHTS_ID,
3258  MFNETSOURCE_SEEKRANGESTART_ID,
3259  MFNETSOURCE_SEEKRANGEEND_ID,
3260  MFNETSOURCE_BUFFERINGCOUNT_ID,
3261  MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID,
3262  MFNETSOURCE_SIGNEDSESSION_ID,
3263  MFNETSOURCE_MAXBITRATE_ID,
3264  MFNETSOURCE_RECEPTION_QUALITY_ID,
3265  MFNETSOURCE_RECOVEREDPACKETS_ID,
3266  MFNETSOURCE_VBR_ID,
3267  MFNETSOURCE_DOWNLOADPROGRESS_ID
3268} MFNETSOURCE_STATISTICS_IDS;
3269
3270typedef enum _MFNETSOURCE_TRANSPORT_TYPE {
3271  MFNETSOURCE_UDP,
3272  MFNETSOURCE_TCP
3273} MFNETSOURCE_TRANSPORT_TYPE;
3274
3275typedef enum MF_OBJECT_TYPE {
3276  MF_OBJECT_MEDIASOURCE,
3277  MF_OBJECT_BYTESTREAM,
3278  MF_OBJECT_INVALID
3279} MF_OBJECT_TYPE;
3280
3281typedef enum _MFPOLICYMANAGER_ACTION {
3282  PEACTION_NO          = 0,
3283  PEACTION_PLAY        = 1,
3284  PEACTION_COPY        = 2,
3285  PEACTION_EXPORT      = 3,
3286  PEACTION_EXTRACT     = 4,
3287  PEACTION_RESERVED1   = 5,
3288  PEACTION_RESERVED2   = 6,
3289  PEACTION_RESERVED3   = 7,
3290  PEACTION_LAST        = 7
3291} MFPOLICYMANAGER_ACTION;
3292
3293typedef enum _MFRATE_DIRECTION {
3294  MFRATE_FORWARD,
3295  MFRATE_REVERSE
3296} MFRATE_DIRECTION;
3297
3298typedef enum _MFSequencerTopologyFlags {
3299  SequencerTopologyFlags_Last   = 0x00000001
3300} MFSequencerTopologyFlags;
3301
3302typedef enum _MFSHUTDOWN_STATUS {
3303  MFSHUTDOWN_INITIATED,
3304  MFSHUTDOWN_COMPLETED
3305} MFSHUTDOWN_STATUS;
3306
3307typedef enum _MFSINK_WMDRMACTION {
3308  MFSINK_WMDRMACTION_UNDEFINED    = 0,
3309  MFSINK_WMDRMACTION_ENCODE       = 1,
3310  MFSINK_WMDRMACTION_TRANSCODE    = 2,
3311  MFSINK_WMDRMACTION_TRANSCRYPT   = 3,
3312  MFSINK_WMDRMACTION_LAST         = 3
3313} MFSINK_WMDRMACTION;
3314
3315typedef enum MFSTREAMSINK_MARKER_TYPE {
3316  MFSTREAMSINK_MARKER_DEFAULT,
3317  MFSTREAMSINK_MARKER_ENDOFSEGMENT,
3318  MFSTREAMSINK_MARKER_TICK,
3319  MFSTREAMSINK_MARKER_EVENT
3320} MFSTREAMSINK_MARKER_TYPE;
3321
3322typedef enum MFTIMER_FLAGS {
3323  MFTIMER_RELATIVE   = 0x00000001
3324} MFTIMER_FLAGS;
3325
3326#if (WINVER >= 0x0601)
3327
3328typedef enum MFTOPLOGY_DXVA_MODE {
3329  MFTOPOLOGY_DXVA_DEFAULT   = 0,
3330  MFTOPOLOGY_DXVA_NONE      = 1,
3331  MFTOPOLOGY_DXVA_FULL      = 2
3332} MFTOPOLOGY_DXVA_MODE;
3333
3334typedef enum MFTOPOLOGY_HARDWARE_MODE {
3335  MFTOPOLOGY_HWMODE_SOFTWARE_ONLY   = 0,
3336  MFTOPOLOGY_HWMODE_USE_HARDWARE    = 1
3337} MFTOPOLOGY_HARDWARE_MODE;
3338
3339typedef struct _MFT_REGISTRATION_INFO {
3340  CLSID                  clsid;
3341  GUID                   guidCategory;
3342  UINT32                 uiFlags;
3343  LPCWSTR                pszName;
3344  DWORD                  cInTypes;
3345  MFT_REGISTER_TYPE_INFO *pInTypes;
3346  DWORD                  cOutTypes;
3347  MFT_REGISTER_TYPE_INFO *pOutTypes;
3348} MFT_REGISTRATION_INFO;
3349
3350#endif /*(WINVER >= 0x0601)*/
3351
3352typedef struct _ASFFlatPicture {
3353  BYTE  bPictureType;
3354  DWORD dwDataLen;
3355} ASF_FLAT_PICTURE;
3356
3357typedef struct _ASFFlatSynchronisedLyrics {
3358  BYTE  bTimeStampFormat;
3359  BYTE  bContentType;
3360  DWORD dwLyricsLen;
3361} ASF_FLAT_SYNCHRONISED_LYRICS;
3362
3363typedef enum SAMPLE_PROTECTION_VERSION {
3364  SAMPLE_PROTECTION_VERSION_NO           = 0,
3365  SAMPLE_PROTECTION_VERSION_BASIC_LOKI   = 1,
3366  SAMPLE_PROTECTION_VERSION_SCATTER      = 2,
3367  SAMPLE_PROTECTION_VERSION_RC4          = 3
3368} SAMPLE_PROTECTION_VERSION;
3369
3370typedef struct _MFINPUTTRUSTAUTHORITY_ACTION {
3371  MFPOLICYMANAGER_ACTION Action;
3372  BYTE                   *pbTicket;
3373  DWORD                  cbTicket;
3374} MFINPUTTRUSTAUTHORITY_ACCESS_ACTION;
3375
3376typedef struct _MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {
3377  DWORD                               dwSize;
3378  DWORD                               dwVer;
3379  DWORD                               cbSignatureOffset;
3380  DWORD                               cbSignatureSize;
3381  DWORD                               cbExtensionOffset;
3382  DWORD                               cbExtensionSize;
3383  DWORD                               cActions;
3384  MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions[1];
3385} MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS;
3386
3387typedef struct _MFNetCredentialManagerGetParam {
3388  HRESULT hrOp;
3389  WINBOOL    fAllowLoggedOnUser;
3390  WINBOOL    fClearTextPackage;
3391  LPCWSTR pszUrl;
3392  LPCWSTR pszSite;
3393  LPCWSTR pszRealm;
3394  LPCWSTR pszPackage;
3395  LONG    nRetries;
3396} MFNetCredentialManagerGetParam;
3397
3398#define MF_1_BYTE_ALIGNMENT     0x00000000
3399#define MF_2_BYTE_ALIGNMENT     0x00000001
3400#define MF_4_BYTE_ALIGNMENT     0x00000003
3401#define MF_8_BYTE_ALIGNMENT     0x00000007
3402#define MF_16_BYTE_ALIGNMENT    0x0000000F
3403#define MF_32_BYTE_ALIGNMENT    0x0000001F
3404#define MF_64_BYTE_ALIGNMENT    0x0000003F
3405#define MF_128_BYTE_ALIGNMENT   0x0000007F
3406#define MF_256_BYTE_ALIGNMENT   0x000000FF
3407#define MF_512_BYTE_ALIGNMENT   0x000001FF
3408
3409#define MEDIASINK_FIXED_STREAMS                 0x00000001
3410#define MEDIASINK_CANNOT_MATCH_CLOCK            0x00000002
3411#define MEDIASINK_RATELESS                      0x00000004
3412#define MEDIASINK_CLOCK_REQUIRED                0x00000008
3413#define MEDIASINK_CAN_PREROLL                   0x00000010
3414#define MEDIASINK_REQUIRE_REFERENCE_MEDIATYPE   0x00000020
3415
3416#define MF_RESOLUTION_MEDIASOURCE                                           0x00000001
3417#define MF_RESOLUTION_BYTESTREAM                                            0x00000002
3418#define MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE 0x00000010
3419#define MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL                        0x00000020
3420#define MF_RESOLUTION_READ                                                  0x00010000
3421#define MF_RESOLUTION_WRITE                                                 0x00020000
3422#ifndef __IMFMediaSink_FWD_DEFINED__
3423#define __IMFMediaSink_FWD_DEFINED__
3424typedef interface IMFMediaSink IMFMediaSink;
3425#endif
3426
3427#ifndef __IMFASFContentInfo_FWD_DEFINED__
3428#define __IMFASFContentInfo_FWD_DEFINED__
3429typedef interface IMFASFContentInfo IMFASFContentInfo;
3430#endif
3431
3432#ifndef __IMFASFIndexer_FWD_DEFINED__
3433#define __IMFASFIndexer_FWD_DEFINED__
3434typedef interface IMFASFIndexer IMFASFIndexer;
3435#endif
3436
3437#ifndef __IMFASFMultiplexer_FWD_DEFINED__
3438#define __IMFASFMultiplexer_FWD_DEFINED__
3439typedef interface IMFASFMultiplexer IMFASFMultiplexer;
3440#endif
3441
3442#ifndef __IMFASFProfile_FWD_DEFINED__
3443#define __IMFASFProfile_FWD_DEFINED__
3444typedef interface IMFASFProfile IMFASFProfile;
3445#endif
3446
3447#ifndef __IMFASFSplitter_FWD_DEFINED__
3448#define __IMFASFSplitter_FWD_DEFINED__
3449typedef interface IMFASFSplitter IMFASFSplitter;
3450#endif
3451
3452#ifndef __IMFPMPServer_FWD_DEFINED__
3453#define __IMFPMPServer_FWD_DEFINED__
3454typedef interface IMFPMPServer IMFPMPServer;
3455#endif
3456
3457#ifndef __IMFPresentationClock_FWD_DEFINED__
3458#define __IMFPresentationClock_FWD_DEFINED__
3459typedef interface IMFPresentationClock IMFPresentationClock;
3460#endif
3461
3462#ifndef __IMFNetProxyLocator_FWD_DEFINED__
3463#define __IMFNetProxyLocator_FWD_DEFINED__
3464typedef interface IMFNetProxyLocator IMFNetProxyLocator;
3465#endif
3466
3467#ifndef __IMFRemoteDesktopPlugin_FWD_DEFINED__
3468#define __IMFRemoteDesktopPlugin_FWD_DEFINED__
3469typedef interface IMFRemoteDesktopPlugin IMFRemoteDesktopPlugin;
3470#endif
3471
3472#ifndef __IMFTransform_FWD_DEFINED__
3473#define __IMFTransform_FWD_DEFINED__
3474typedef interface IMFTransform IMFTransform;
3475#endif
3476
3477#ifndef __IMFSampleGrabberSinkCallback_FWD_DEFINED__
3478#define __IMFSampleGrabberSinkCallback_FWD_DEFINED__
3479typedef interface IMFSampleGrabberSinkCallback IMFSampleGrabberSinkCallback;
3480#endif
3481
3482#ifndef __IMFSequencerSource_FWD_DEFINED__
3483#define __IMFSequencerSource_FWD_DEFINED__
3484typedef interface IMFSequencerSource IMFSequencerSource;
3485#endif
3486
3487#ifndef __IMFQualityManager_FWD_DEFINED__
3488#define __IMFQualityManager_FWD_DEFINED__
3489typedef interface IMFQualityManager IMFQualityManager;
3490#endif
3491
3492#ifndef __IMFSourceResolver_FWD_DEFINED__
3493#define __IMFSourceResolver_FWD_DEFINED__
3494typedef interface IMFSourceResolver IMFSourceResolver;
3495#endif
3496
3497#ifndef __IMFPresentationTimeSource_FWD_DEFINED__
3498#define __IMFPresentationTimeSource_FWD_DEFINED__
3499typedef interface IMFPresentationTimeSource IMFPresentationTimeSource;
3500#endif
3501
3502#ifndef __IMFTopoLoader_FWD_DEFINED__
3503#define __IMFTopoLoader_FWD_DEFINED__
3504typedef interface IMFTopoLoader IMFTopoLoader;
3505#endif
3506
3507#ifndef __IMFTranscodeProfile_FWD_DEFINED__
3508#define __IMFTranscodeProfile_FWD_DEFINED__
3509typedef interface IMFTranscodeProfile IMFTranscodeProfile;
3510#endif
3511
3512HRESULT MFCreate3GPMediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
3513HRESULT MFCreateAggregateSource(IMFCollection *pSourceCollection,IMFMediaSource **ppAggSource);
3514
3515HRESULT WINAPI MFCreateAlignedMemoryBuffer(DWORD cbMaxLength,DWORD fAlignmentFlags,IMFMediaBuffer **ppBuffer);
3516HRESULT WINAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
3517HRESULT WINAPI MFCreateASFIndexer(IMFASFIndexer **ppIIndexer);
3518HRESULT WINAPI MFCreateASFIndexerByteStream(IMFByteStream *pIContentByteStream,QWORD cbIndexStartOffset,IMFByteStream **pIIndexByteStream);
3519HRESULT WINAPI MFCreateASFMediaSink(IMFByteStream *pIByteStream,IMFMediaSink **ppIMediaSink);
3520HRESULT WINAPI MFCreateASFMediaSinkActivate(LPCWSTR pwszFileName,IMFASFContentInfo *pContentInfo,IMFActivate **ppIActivate);
3521HRESULT WINAPI MFCreateASFMultiplexer(IMFASFMultiplexer **ppIMultiplexer);
3522HRESULT WINAPI MFCreateASFProfile(IMFASFProfile **ppIProfile);
3523HRESULT WINAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescriptor *pIPD,IMFASFProfile **ppIProfile);
3524HRESULT WINAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
3525HRESULT WINAPI MFCreateMediaSession(IMFAttributes *pConfiguration,IMFMediaSession **ppMS);
3526HRESULT WINAPI MFCreateMP3MediaSink(IMFByteStream *pTargetByteStream,IMFMediaSink **ppMediaSink);
3527HRESULT WINAPI MFCreateMPEG4MediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
3528HRESULT WINAPI MFCreateNetSchemePlugin(REFIID riid,LPVOID *ppvHandler);
3529HRESULT WINAPI MFCreatePMPServer(DWORD dwCreationFlags,IMFPMPServer **ppPMPServer);
3530HRESULT WINAPI MFCreatePMPMediaSession(DWORD dwCreationFlags,IMFAttributes *pConfiguration,IMFMediaSession **ppMediaSession,IMFActivate **ppEnablerActivate);
3531HRESULT WINAPI MFCreatePathFromURL(LPCWSTR pwszFileURL,LPWSTR *ppwszFilePath);
3532HRESULT WINAPI MFCreatePresentationClock(IMFPresentationClock **ppPresentationClock);
3533HRESULT WINAPI MFCreatePresentationDescriptor(DWORD cStreamDescriptors,IMFStreamDescriptor **apStreamDescriptors,IMFPresentationDescriptor **ppPresentationDescriptor);
3534HRESULT WINAPI MFCreatePresentationDescriptorFromASFProfile(IMFASFProfile *pIProfile,IMFPresentationDescriptor **ppIPD);
3535HRESULT WINAPI MFCreateProxyLocator(LPCWSTR pszProtocol,IPropertyStore *pProxyConfig,IMFNetProxyLocator **ppProxyLocator);
3536HRESULT WINAPI MFCreateRemoteDesktopPlugin(IMFRemoteDesktopPlugin **ppPlugin);
3537HRESULT WINAPI MFCreateSample(IMFSample **ppIMFSample);
3538HRESULT WINAPI MFCreateSampleCopierMFT(IMFTransform **ppCopierMFT);
3539HRESULT WINAPI MFCreateSampleGrabberSinkActivate(IMFMediaType *pIMFMediaType,IMFSampleGrabberSinkCallback *pIMFSampleGrabberSinkCallback,IMFActivate **ppIActivate);
3540HRESULT WINAPI MFCreateSequencerSource(IUnknown *pReserved,IMFSequencerSource **ppSequencerSource);
3541HRESULT WINAPI MFCreateSimpleTypeHandler(IMFMediaTypeHandler **ppHandler);
3542HRESULT WINAPI MFCreateStandardQualityManager(IMFQualityManager **ppQualityManager);
3543HRESULT WINAPI MFCreateStreamDescriptor(DWORD dwStreamIdentifier,DWORD cMediaTypes,IMFMediaType **apMediaTypes,IMFStreamDescriptor **ppDescriptor);
3544HRESULT WINAPI MFCreateSourceResolver(IMFSourceResolver **ppISourceResolver);
3545HRESULT WINAPI MFCreateSystemTimeSource(IMFPresentationTimeSource **ppSystemTimeSource);
3546HRESULT WINAPI MFCreateTopoLoader(IMFTopoLoader **ppObj);
3547HRESULT WINAPI MFCreateTopology(IMFTopology **ppTopo);
3548HRESULT WINAPI MFCreateTopologyNode(MF_TOPOLOGY_TYPE NodeType,IMFTopologyNode **ppNode);
3549HRESULT WINAPI MFCreateVideoRenderer(REFIID riidRenderer,void **ppVideoRenderer);
3550HRESULT WINAPI MFCreateVideoRendererActivate(HWND hwndVideo,IMFActivate **ppActivate);
3551HRESULT WINAPI MFGetService(IUnknown *punkObject,REFGUID guidService,REFIID riid,LPVOID *ppvObject);
3552HRESULT WINAPI MFGetSupportedMimeTypes(PROPVARIANT *pPropVarMimeTypeArray);
3553HRESULT WINAPI MFGetSupportedSchemes(PROPVARIANT *pPropVarSchemeArray);
3554MFTIME WINAPI MFGetSystemTime(void);
3555HRESULT WINAPI MFShutdownObject(IUnknown *pUnk);
3556HRESULT WINAPI CreateNamedPropertyStore(INamedPropertyStore **ppStore);
3557HRESULT WINAPI CreatePropertyStore(IPropertyStore **ppStore);
3558#if (WINVER >= 0x0601)
3559
3560HRESULT WINAPI MFCreateTranscodeProfile(IMFTranscodeProfile **ppTranscodeProfile);
3561HRESULT WINAPI MFCreateTranscodeSinkActivate(IMFActivate **ppActivate);
3562HRESULT WINAPI MFCreateTranscodeTopology(IMFMediaSource *pSrc,LPCWSTR pwszOutputFilePath,IMFTranscodeProfile *pProfile,IMFTopology **ppTranscodeTopo);
3563HRESULT WINAPI MFEnumDeviceSources(IMFAttributes *pAttributes,IMFActivate ***pppSourceActivate,UINT32 *pcSourceActivate);
3564HRESULT WINAPI MFGetTopoNodeCurrentType(IMFTopologyNode *pNode,DWORD dwStreamIndex,WINBOOL fOutput,IMFMediaType **ppType);
3565HRESULT WINAPI MFTranscodeGetAudioOutputAvailableTypes(REFGUID guidSubType,DWORD dwMFTFlags,IMFAttributes *pCodecConfig,IMFCollection **ppAvailableTypes);
3566#endif
3567/* Begin additional prototypes for all interfaces */
3568
3569ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
3570unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
3571unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
3572void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
3573ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
3574unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
3575unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
3576void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
3577
3578/* End additional prototypes */
3579
3580#ifdef __cplusplus
3581}
3582#endif
3583
3584#endif /* __mfidl_h__ */
3585