1 /*** Autogenerated by WIDL 6.4 from include/mfidl.idl - Do not edit ***/
2 
3 #ifdef _WIN32
4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
6 #endif
7 #include <rpc.h>
8 #include <rpcndr.h>
9 #endif
10 
11 #ifndef COM_NO_WINDOWS_H
12 #include <windows.h>
13 #include <ole2.h>
14 #endif
15 
16 #ifndef __mfidl_h__
17 #define __mfidl_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IMFTopologyNode_FWD_DEFINED__
22 #define __IMFTopologyNode_FWD_DEFINED__
23 typedef interface IMFTopologyNode IMFTopologyNode;
24 #ifdef __cplusplus
25 interface IMFTopologyNode;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IMFTopology_FWD_DEFINED__
30 #define __IMFTopology_FWD_DEFINED__
31 typedef interface IMFTopology IMFTopology;
32 #ifdef __cplusplus
33 interface IMFTopology;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IMFGetService_FWD_DEFINED__
38 #define __IMFGetService_FWD_DEFINED__
39 typedef interface IMFGetService IMFGetService;
40 #ifdef __cplusplus
41 interface IMFGetService;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IMFClock_FWD_DEFINED__
46 #define __IMFClock_FWD_DEFINED__
47 typedef interface IMFClock IMFClock;
48 #ifdef __cplusplus
49 interface IMFClock;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IMFMediaSession_FWD_DEFINED__
54 #define __IMFMediaSession_FWD_DEFINED__
55 typedef interface IMFMediaSession IMFMediaSession;
56 #ifdef __cplusplus
57 interface IMFMediaSession;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IMFMediaTypeHandler_FWD_DEFINED__
62 #define __IMFMediaTypeHandler_FWD_DEFINED__
63 typedef interface IMFMediaTypeHandler IMFMediaTypeHandler;
64 #ifdef __cplusplus
65 interface IMFMediaTypeHandler;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IMFStreamDescriptor_FWD_DEFINED__
70 #define __IMFStreamDescriptor_FWD_DEFINED__
71 typedef interface IMFStreamDescriptor IMFStreamDescriptor;
72 #ifdef __cplusplus
73 interface IMFStreamDescriptor;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IMFPresentationDescriptor_FWD_DEFINED__
78 #define __IMFPresentationDescriptor_FWD_DEFINED__
79 typedef interface IMFPresentationDescriptor IMFPresentationDescriptor;
80 #ifdef __cplusplus
81 interface IMFPresentationDescriptor;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __IMFMediaSource_FWD_DEFINED__
86 #define __IMFMediaSource_FWD_DEFINED__
87 typedef interface IMFMediaSource IMFMediaSource;
88 #ifdef __cplusplus
89 interface IMFMediaSource;
90 #endif /* __cplusplus */
91 #endif
92 
93 #ifndef __IMFByteStreamBuffering_FWD_DEFINED__
94 #define __IMFByteStreamBuffering_FWD_DEFINED__
95 typedef interface IMFByteStreamBuffering IMFByteStreamBuffering;
96 #ifdef __cplusplus
97 interface IMFByteStreamBuffering;
98 #endif /* __cplusplus */
99 #endif
100 
101 #ifndef __IMFClockStateSink_FWD_DEFINED__
102 #define __IMFClockStateSink_FWD_DEFINED__
103 typedef interface IMFClockStateSink IMFClockStateSink;
104 #ifdef __cplusplus
105 interface IMFClockStateSink;
106 #endif /* __cplusplus */
107 #endif
108 
109 #ifndef __IMFAudioStreamVolume_FWD_DEFINED__
110 #define __IMFAudioStreamVolume_FWD_DEFINED__
111 typedef interface IMFAudioStreamVolume IMFAudioStreamVolume;
112 #ifdef __cplusplus
113 interface IMFAudioStreamVolume;
114 #endif /* __cplusplus */
115 #endif
116 
117 #ifndef __IMFMediaSink_FWD_DEFINED__
118 #define __IMFMediaSink_FWD_DEFINED__
119 typedef interface IMFMediaSink IMFMediaSink;
120 #ifdef __cplusplus
121 interface IMFMediaSink;
122 #endif /* __cplusplus */
123 #endif
124 
125 #ifndef __IMFFinalizableMediaSink_FWD_DEFINED__
126 #define __IMFFinalizableMediaSink_FWD_DEFINED__
127 typedef interface IMFFinalizableMediaSink IMFFinalizableMediaSink;
128 #ifdef __cplusplus
129 interface IMFFinalizableMediaSink;
130 #endif /* __cplusplus */
131 #endif
132 
133 #ifndef __IMFMediaSinkPreroll_FWD_DEFINED__
134 #define __IMFMediaSinkPreroll_FWD_DEFINED__
135 typedef interface IMFMediaSinkPreroll IMFMediaSinkPreroll;
136 #ifdef __cplusplus
137 interface IMFMediaSinkPreroll;
138 #endif /* __cplusplus */
139 #endif
140 
141 #ifndef __IMFMediaStream_FWD_DEFINED__
142 #define __IMFMediaStream_FWD_DEFINED__
143 typedef interface IMFMediaStream IMFMediaStream;
144 #ifdef __cplusplus
145 interface IMFMediaStream;
146 #endif /* __cplusplus */
147 #endif
148 
149 #ifndef __IMFMetadata_FWD_DEFINED__
150 #define __IMFMetadata_FWD_DEFINED__
151 typedef interface IMFMetadata IMFMetadata;
152 #ifdef __cplusplus
153 interface IMFMetadata;
154 #endif /* __cplusplus */
155 #endif
156 
157 #ifndef __IMFMetadataProvider_FWD_DEFINED__
158 #define __IMFMetadataProvider_FWD_DEFINED__
159 typedef interface IMFMetadataProvider IMFMetadataProvider;
160 #ifdef __cplusplus
161 interface IMFMetadataProvider;
162 #endif /* __cplusplus */
163 #endif
164 
165 #ifndef __IMFPresentationTimeSource_FWD_DEFINED__
166 #define __IMFPresentationTimeSource_FWD_DEFINED__
167 typedef interface IMFPresentationTimeSource IMFPresentationTimeSource;
168 #ifdef __cplusplus
169 interface IMFPresentationTimeSource;
170 #endif /* __cplusplus */
171 #endif
172 
173 #ifndef __IMFPresentationClock_FWD_DEFINED__
174 #define __IMFPresentationClock_FWD_DEFINED__
175 typedef interface IMFPresentationClock IMFPresentationClock;
176 #ifdef __cplusplus
177 interface IMFPresentationClock;
178 #endif /* __cplusplus */
179 #endif
180 
181 #ifndef __IMFRateControl_FWD_DEFINED__
182 #define __IMFRateControl_FWD_DEFINED__
183 typedef interface IMFRateControl IMFRateControl;
184 #ifdef __cplusplus
185 interface IMFRateControl;
186 #endif /* __cplusplus */
187 #endif
188 
189 #ifndef __IMFRateSupport_FWD_DEFINED__
190 #define __IMFRateSupport_FWD_DEFINED__
191 typedef interface IMFRateSupport IMFRateSupport;
192 #ifdef __cplusplus
193 interface IMFRateSupport;
194 #endif /* __cplusplus */
195 #endif
196 
197 #ifndef __IMFSampleGrabberSinkCallback_FWD_DEFINED__
198 #define __IMFSampleGrabberSinkCallback_FWD_DEFINED__
199 typedef interface IMFSampleGrabberSinkCallback IMFSampleGrabberSinkCallback;
200 #ifdef __cplusplus
201 interface IMFSampleGrabberSinkCallback;
202 #endif /* __cplusplus */
203 #endif
204 
205 #ifndef __IMFSourceResolver_FWD_DEFINED__
206 #define __IMFSourceResolver_FWD_DEFINED__
207 typedef interface IMFSourceResolver IMFSourceResolver;
208 #ifdef __cplusplus
209 interface IMFSourceResolver;
210 #endif /* __cplusplus */
211 #endif
212 
213 #ifndef __IMFStreamSink_FWD_DEFINED__
214 #define __IMFStreamSink_FWD_DEFINED__
215 typedef interface IMFStreamSink IMFStreamSink;
216 #ifdef __cplusplus
217 interface IMFStreamSink;
218 #endif /* __cplusplus */
219 #endif
220 
221 #ifndef __IMFTopoLoader_FWD_DEFINED__
222 #define __IMFTopoLoader_FWD_DEFINED__
223 typedef interface IMFTopoLoader IMFTopoLoader;
224 #ifdef __cplusplus
225 interface IMFTopoLoader;
226 #endif /* __cplusplus */
227 #endif
228 
229 /* Headers for imported files */
230 
231 #include <mfobjects.h>
232 
233 #ifdef __cplusplus
234 extern "C" {
235 #endif
236 
237 #include <mftransform.h>
238 #include <windef.h>
239 typedef enum MFSESSION_SETTOPOLOGY_FLAGS {
240     MFSESSION_SETTOPOLOGY_IMMEDIATE = 0x1,
241     MFSESSION_SETTOPOLOGY_NORESOLUTION = 0x2,
242     MFSESSION_SETTOPOLOGY_CLEAR_CURRENT = 0x4
243 } MFSESSION_SETTOPOLOGY_FLAGS;
244 typedef enum MFSESSION_GETFULLTOPOLOGY_FLAGS {
245     MFSESSION_GETFULLTOPOLOGY_CURRENT = 0
246 } MFSESSION_GETFULLTOPOLOGY_FLAGS;
247 typedef enum MFPMPSESSION_CREATION_FLAGS {
248     MFPMPSESSION_UNPROTECTED_PROCESS = 0x1
249 } MFPMPSESSION_CREATION_FLAGS;
250 typedef UINT64 TOPOID;
251 typedef enum MF_TOPOLOGY_TYPE {
252     MF_TOPOLOGY_OUTPUT_NODE = 0,
253     MF_TOPOLOGY_SOURCESTREAM_NODE = 1,
254     MF_TOPOLOGY_TRANSFORM_NODE = 2,
255     MF_TOPOLOGY_TEE_NODE = 3,
256     MF_TOPOLOGY_MAX = 0xffffffff
257 } MF_TOPOLOGY_TYPE;
258 /*****************************************************************************
259  * IMFTopologyNode interface
260  */
261 #ifndef __IMFTopologyNode_INTERFACE_DEFINED__
262 #define __IMFTopologyNode_INTERFACE_DEFINED__
263 
264 DEFINE_GUID(IID_IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30);
265 #if defined(__cplusplus) && !defined(CINTERFACE)
266 MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc430")
267 IMFTopologyNode : public IMFAttributes
268 {
269     virtual HRESULT STDMETHODCALLTYPE SetObject(
270         IUnknown *pObject) = 0;
271 
272     virtual HRESULT STDMETHODCALLTYPE GetObject(
273         IUnknown **ppObject) = 0;
274 
275     virtual HRESULT STDMETHODCALLTYPE GetNodeType(
276         MF_TOPOLOGY_TYPE *pType) = 0;
277 
278     virtual HRESULT STDMETHODCALLTYPE GetTopoNodeID(
279         TOPOID *pID) = 0;
280 
281     virtual HRESULT STDMETHODCALLTYPE SetTopoNodeID(
282         TOPOID ullTopoID) = 0;
283 
284     virtual HRESULT STDMETHODCALLTYPE GetInputCount(
285         DWORD *pcInputs) = 0;
286 
287     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
288         DWORD *pcOutputs) = 0;
289 
290     virtual HRESULT STDMETHODCALLTYPE ConnectOutput(
291         DWORD dwOutputIndex,
292         IMFTopologyNode *pDownstreamNode,
293         DWORD dwInputIndexOnDownstreamNode) = 0;
294 
295     virtual HRESULT STDMETHODCALLTYPE DisconnectOutput(
296         DWORD dwOutputIndex) = 0;
297 
298     virtual HRESULT STDMETHODCALLTYPE GetInput(
299         DWORD dwInputIndex,
300         IMFTopologyNode **ppUpstreamNode,
301         DWORD *pdwOutputIndexOnUpstreamNode) = 0;
302 
303     virtual HRESULT STDMETHODCALLTYPE GetOutput(
304         DWORD dwOutputIndex,
305         IMFTopologyNode **ppDownstreamNode,
306         DWORD *pdwInputIndexOnDownstreamNode) = 0;
307 
308     virtual HRESULT STDMETHODCALLTYPE SetOutputPrefType(
309         DWORD dwOutputIndex,
310         IMFMediaType *pType) = 0;
311 
312     virtual HRESULT STDMETHODCALLTYPE GetOutputPrefType(
313         DWORD dwOutputIndex,
314         IMFMediaType **ppType) = 0;
315 
316     virtual HRESULT STDMETHODCALLTYPE SetInputPrefType(
317         DWORD dwInputIndex,
318         IMFMediaType *pType) = 0;
319 
320     virtual HRESULT STDMETHODCALLTYPE GetInputPrefType(
321         DWORD dwInputIndex,
322         IMFMediaType **ppType) = 0;
323 
324     virtual HRESULT STDMETHODCALLTYPE CloneFrom(
325         IMFTopologyNode *pNode) = 0;
326 
327 };
328 #ifdef __CRT_UUID_DECL
329 __CRT_UUID_DECL(IMFTopologyNode, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x30)
330 #endif
331 #else
332 typedef struct IMFTopologyNodeVtbl {
333     BEGIN_INTERFACE
334 
335     /*** IUnknown methods ***/
336     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
337         IMFTopologyNode *This,
338         REFIID riid,
339         void **ppvObject);
340 
341     ULONG (STDMETHODCALLTYPE *AddRef)(
342         IMFTopologyNode *This);
343 
344     ULONG (STDMETHODCALLTYPE *Release)(
345         IMFTopologyNode *This);
346 
347     /*** IMFAttributes methods ***/
348     HRESULT (STDMETHODCALLTYPE *GetItem)(
349         IMFTopologyNode *This,
350         REFGUID guidKey,
351         PROPVARIANT *pValue);
352 
353     HRESULT (STDMETHODCALLTYPE *GetItemType)(
354         IMFTopologyNode *This,
355         REFGUID guidKey,
356         MF_ATTRIBUTE_TYPE *pType);
357 
358     HRESULT (STDMETHODCALLTYPE *CompareItem)(
359         IMFTopologyNode *This,
360         REFGUID guidKey,
361         REFPROPVARIANT Value,
362         WINBOOL *pbResult);
363 
364     HRESULT (STDMETHODCALLTYPE *Compare)(
365         IMFTopologyNode *This,
366         IMFAttributes *pTheirs,
367         MF_ATTRIBUTES_MATCH_TYPE MatchType,
368         WINBOOL *pbResult);
369 
370     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
371         IMFTopologyNode *This,
372         REFGUID guidKey,
373         UINT32 *punValue);
374 
375     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
376         IMFTopologyNode *This,
377         REFGUID guidKey,
378         UINT64 *punValue);
379 
380     HRESULT (STDMETHODCALLTYPE *GetDouble)(
381         IMFTopologyNode *This,
382         REFGUID guidKey,
383         double *pfValue);
384 
385     HRESULT (STDMETHODCALLTYPE *GetGUID)(
386         IMFTopologyNode *This,
387         REFGUID guidKey,
388         GUID *pguidValue);
389 
390     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
391         IMFTopologyNode *This,
392         REFGUID guidKey,
393         UINT32 *pcchLength);
394 
395     HRESULT (STDMETHODCALLTYPE *GetString)(
396         IMFTopologyNode *This,
397         REFGUID guidKey,
398         LPWSTR pwszValue,
399         UINT32 cchBufSize,
400         UINT32 *pcchLength);
401 
402     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
403         IMFTopologyNode *This,
404         REFGUID guidKey,
405         LPWSTR *ppwszValue,
406         UINT32 *pcchLength);
407 
408     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
409         IMFTopologyNode *This,
410         REFGUID guidKey,
411         UINT32 *pcbBlobSize);
412 
413     HRESULT (STDMETHODCALLTYPE *GetBlob)(
414         IMFTopologyNode *This,
415         REFGUID guidKey,
416         UINT8 *pBuf,
417         UINT32 cbBufSize,
418         UINT32 *pcbBlobSize);
419 
420     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
421         IMFTopologyNode *This,
422         REFGUID guidKey,
423         UINT8 **ppBuf,
424         UINT32 *pcbSize);
425 
426     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
427         IMFTopologyNode *This,
428         REFGUID guidKey,
429         REFIID riid,
430         LPVOID *ppv);
431 
432     HRESULT (STDMETHODCALLTYPE *SetItem)(
433         IMFTopologyNode *This,
434         REFGUID guidKey,
435         REFPROPVARIANT Value);
436 
437     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
438         IMFTopologyNode *This,
439         REFGUID guidKey);
440 
441     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
442         IMFTopologyNode *This);
443 
444     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
445         IMFTopologyNode *This,
446         REFGUID guidKey,
447         UINT32 unValue);
448 
449     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
450         IMFTopologyNode *This,
451         REFGUID guidKey,
452         UINT64 unValue);
453 
454     HRESULT (STDMETHODCALLTYPE *SetDouble)(
455         IMFTopologyNode *This,
456         REFGUID guidKey,
457         double fValue);
458 
459     HRESULT (STDMETHODCALLTYPE *SetGUID)(
460         IMFTopologyNode *This,
461         REFGUID guidKey,
462         REFGUID guidValue);
463 
464     HRESULT (STDMETHODCALLTYPE *SetString)(
465         IMFTopologyNode *This,
466         REFGUID guidKey,
467         LPCWSTR wszValue);
468 
469     HRESULT (STDMETHODCALLTYPE *SetBlob)(
470         IMFTopologyNode *This,
471         REFGUID guidKey,
472         const UINT8 *pBuf,
473         UINT32 cbBufSize);
474 
475     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
476         IMFTopologyNode *This,
477         REFGUID guidKey,
478         IUnknown *pUnknown);
479 
480     HRESULT (STDMETHODCALLTYPE *LockStore)(
481         IMFTopologyNode *This);
482 
483     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
484         IMFTopologyNode *This);
485 
486     HRESULT (STDMETHODCALLTYPE *GetCount)(
487         IMFTopologyNode *This,
488         UINT32 *pcItems);
489 
490     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
491         IMFTopologyNode *This,
492         UINT32 unIndex,
493         GUID *pguidKey,
494         PROPVARIANT *pValue);
495 
496     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
497         IMFTopologyNode *This,
498         IMFAttributes *pDest);
499 
500     /*** IMFTopologyNode methods ***/
501     HRESULT (STDMETHODCALLTYPE *SetObject)(
502         IMFTopologyNode *This,
503         IUnknown *pObject);
504 
505     HRESULT (STDMETHODCALLTYPE *GetObject)(
506         IMFTopologyNode *This,
507         IUnknown **ppObject);
508 
509     HRESULT (STDMETHODCALLTYPE *GetNodeType)(
510         IMFTopologyNode *This,
511         MF_TOPOLOGY_TYPE *pType);
512 
513     HRESULT (STDMETHODCALLTYPE *GetTopoNodeID)(
514         IMFTopologyNode *This,
515         TOPOID *pID);
516 
517     HRESULT (STDMETHODCALLTYPE *SetTopoNodeID)(
518         IMFTopologyNode *This,
519         TOPOID ullTopoID);
520 
521     HRESULT (STDMETHODCALLTYPE *GetInputCount)(
522         IMFTopologyNode *This,
523         DWORD *pcInputs);
524 
525     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
526         IMFTopologyNode *This,
527         DWORD *pcOutputs);
528 
529     HRESULT (STDMETHODCALLTYPE *ConnectOutput)(
530         IMFTopologyNode *This,
531         DWORD dwOutputIndex,
532         IMFTopologyNode *pDownstreamNode,
533         DWORD dwInputIndexOnDownstreamNode);
534 
535     HRESULT (STDMETHODCALLTYPE *DisconnectOutput)(
536         IMFTopologyNode *This,
537         DWORD dwOutputIndex);
538 
539     HRESULT (STDMETHODCALLTYPE *GetInput)(
540         IMFTopologyNode *This,
541         DWORD dwInputIndex,
542         IMFTopologyNode **ppUpstreamNode,
543         DWORD *pdwOutputIndexOnUpstreamNode);
544 
545     HRESULT (STDMETHODCALLTYPE *GetOutput)(
546         IMFTopologyNode *This,
547         DWORD dwOutputIndex,
548         IMFTopologyNode **ppDownstreamNode,
549         DWORD *pdwInputIndexOnDownstreamNode);
550 
551     HRESULT (STDMETHODCALLTYPE *SetOutputPrefType)(
552         IMFTopologyNode *This,
553         DWORD dwOutputIndex,
554         IMFMediaType *pType);
555 
556     HRESULT (STDMETHODCALLTYPE *GetOutputPrefType)(
557         IMFTopologyNode *This,
558         DWORD dwOutputIndex,
559         IMFMediaType **ppType);
560 
561     HRESULT (STDMETHODCALLTYPE *SetInputPrefType)(
562         IMFTopologyNode *This,
563         DWORD dwInputIndex,
564         IMFMediaType *pType);
565 
566     HRESULT (STDMETHODCALLTYPE *GetInputPrefType)(
567         IMFTopologyNode *This,
568         DWORD dwInputIndex,
569         IMFMediaType **ppType);
570 
571     HRESULT (STDMETHODCALLTYPE *CloneFrom)(
572         IMFTopologyNode *This,
573         IMFTopologyNode *pNode);
574 
575     END_INTERFACE
576 } IMFTopologyNodeVtbl;
577 
578 interface IMFTopologyNode {
579     CONST_VTBL IMFTopologyNodeVtbl* lpVtbl;
580 };
581 
582 #ifdef COBJMACROS
583 #ifndef WIDL_C_INLINE_WRAPPERS
584 /*** IUnknown methods ***/
585 #define IMFTopologyNode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
586 #define IMFTopologyNode_AddRef(This) (This)->lpVtbl->AddRef(This)
587 #define IMFTopologyNode_Release(This) (This)->lpVtbl->Release(This)
588 /*** IMFAttributes methods ***/
589 #define IMFTopologyNode_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
590 #define IMFTopologyNode_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
591 #define IMFTopologyNode_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
592 #define IMFTopologyNode_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
593 #define IMFTopologyNode_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
594 #define IMFTopologyNode_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
595 #define IMFTopologyNode_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
596 #define IMFTopologyNode_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
597 #define IMFTopologyNode_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
598 #define IMFTopologyNode_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
599 #define IMFTopologyNode_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
600 #define IMFTopologyNode_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
601 #define IMFTopologyNode_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
602 #define IMFTopologyNode_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
603 #define IMFTopologyNode_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
604 #define IMFTopologyNode_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
605 #define IMFTopologyNode_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
606 #define IMFTopologyNode_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
607 #define IMFTopologyNode_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
608 #define IMFTopologyNode_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
609 #define IMFTopologyNode_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
610 #define IMFTopologyNode_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
611 #define IMFTopologyNode_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
612 #define IMFTopologyNode_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
613 #define IMFTopologyNode_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
614 #define IMFTopologyNode_LockStore(This) (This)->lpVtbl->LockStore(This)
615 #define IMFTopologyNode_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
616 #define IMFTopologyNode_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
617 #define IMFTopologyNode_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
618 #define IMFTopologyNode_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
619 /*** IMFTopologyNode methods ***/
620 #define IMFTopologyNode_SetObject(This,pObject) (This)->lpVtbl->SetObject(This,pObject)
621 #define IMFTopologyNode_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
622 #define IMFTopologyNode_GetNodeType(This,pType) (This)->lpVtbl->GetNodeType(This,pType)
623 #define IMFTopologyNode_GetTopoNodeID(This,pID) (This)->lpVtbl->GetTopoNodeID(This,pID)
624 #define IMFTopologyNode_SetTopoNodeID(This,ullTopoID) (This)->lpVtbl->SetTopoNodeID(This,ullTopoID)
625 #define IMFTopologyNode_GetInputCount(This,pcInputs) (This)->lpVtbl->GetInputCount(This,pcInputs)
626 #define IMFTopologyNode_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
627 #define IMFTopologyNode_ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode) (This)->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode)
628 #define IMFTopologyNode_DisconnectOutput(This,dwOutputIndex) (This)->lpVtbl->DisconnectOutput(This,dwOutputIndex)
629 #define IMFTopologyNode_GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode) (This)->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode)
630 #define IMFTopologyNode_GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode) (This)->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode)
631 #define IMFTopologyNode_SetOutputPrefType(This,dwOutputIndex,pType) (This)->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType)
632 #define IMFTopologyNode_GetOutputPrefType(This,dwOutputIndex,ppType) (This)->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType)
633 #define IMFTopologyNode_SetInputPrefType(This,dwInputIndex,pType) (This)->lpVtbl->SetInputPrefType(This,dwInputIndex,pType)
634 #define IMFTopologyNode_GetInputPrefType(This,dwInputIndex,ppType) (This)->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType)
635 #define IMFTopologyNode_CloneFrom(This,pNode) (This)->lpVtbl->CloneFrom(This,pNode)
636 #else
637 /*** IUnknown methods ***/
638 static FORCEINLINE HRESULT IMFTopologyNode_QueryInterface(IMFTopologyNode* This,REFIID riid,void **ppvObject) {
639     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
640 }
641 static FORCEINLINE ULONG IMFTopologyNode_AddRef(IMFTopologyNode* This) {
642     return This->lpVtbl->AddRef(This);
643 }
644 static FORCEINLINE ULONG IMFTopologyNode_Release(IMFTopologyNode* This) {
645     return This->lpVtbl->Release(This);
646 }
647 /*** IMFAttributes methods ***/
648 static FORCEINLINE HRESULT IMFTopologyNode_GetItem(IMFTopologyNode* This,REFGUID guidKey,PROPVARIANT *pValue) {
649     return This->lpVtbl->GetItem(This,guidKey,pValue);
650 }
651 static FORCEINLINE HRESULT IMFTopologyNode_GetItemType(IMFTopologyNode* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
652     return This->lpVtbl->GetItemType(This,guidKey,pType);
653 }
654 static FORCEINLINE HRESULT IMFTopologyNode_CompareItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
655     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
656 }
657 static FORCEINLINE HRESULT IMFTopologyNode_Compare(IMFTopologyNode* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
658     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
659 }
660 static FORCEINLINE HRESULT IMFTopologyNode_GetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 *punValue) {
661     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
662 }
663 static FORCEINLINE HRESULT IMFTopologyNode_GetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 *punValue) {
664     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
665 }
666 static FORCEINLINE HRESULT IMFTopologyNode_GetDouble(IMFTopologyNode* This,REFGUID guidKey,double *pfValue) {
667     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
668 }
669 static FORCEINLINE HRESULT IMFTopologyNode_GetGUID(IMFTopologyNode* This,REFGUID guidKey,GUID *pguidValue) {
670     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
671 }
672 static FORCEINLINE HRESULT IMFTopologyNode_GetStringLength(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcchLength) {
673     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
674 }
675 static FORCEINLINE HRESULT IMFTopologyNode_GetString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
676     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
677 }
678 static FORCEINLINE HRESULT IMFTopologyNode_GetAllocatedString(IMFTopologyNode* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
679     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
680 }
681 static FORCEINLINE HRESULT IMFTopologyNode_GetBlobSize(IMFTopologyNode* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
682     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
683 }
684 static FORCEINLINE HRESULT IMFTopologyNode_GetBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
685     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
686 }
687 static FORCEINLINE HRESULT IMFTopologyNode_GetAllocatedBlob(IMFTopologyNode* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
688     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
689 }
690 static FORCEINLINE HRESULT IMFTopologyNode_GetUnknown(IMFTopologyNode* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
691     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
692 }
693 static FORCEINLINE HRESULT IMFTopologyNode_SetItem(IMFTopologyNode* This,REFGUID guidKey,REFPROPVARIANT Value) {
694     return This->lpVtbl->SetItem(This,guidKey,Value);
695 }
696 static FORCEINLINE HRESULT IMFTopologyNode_DeleteItem(IMFTopologyNode* This,REFGUID guidKey) {
697     return This->lpVtbl->DeleteItem(This,guidKey);
698 }
699 static FORCEINLINE HRESULT IMFTopologyNode_DeleteAllItems(IMFTopologyNode* This) {
700     return This->lpVtbl->DeleteAllItems(This);
701 }
702 static FORCEINLINE HRESULT IMFTopologyNode_SetUINT32(IMFTopologyNode* This,REFGUID guidKey,UINT32 unValue) {
703     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
704 }
705 static FORCEINLINE HRESULT IMFTopologyNode_SetUINT64(IMFTopologyNode* This,REFGUID guidKey,UINT64 unValue) {
706     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
707 }
708 static FORCEINLINE HRESULT IMFTopologyNode_SetDouble(IMFTopologyNode* This,REFGUID guidKey,double fValue) {
709     return This->lpVtbl->SetDouble(This,guidKey,fValue);
710 }
711 static FORCEINLINE HRESULT IMFTopologyNode_SetGUID(IMFTopologyNode* This,REFGUID guidKey,REFGUID guidValue) {
712     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
713 }
714 static FORCEINLINE HRESULT IMFTopologyNode_SetString(IMFTopologyNode* This,REFGUID guidKey,LPCWSTR wszValue) {
715     return This->lpVtbl->SetString(This,guidKey,wszValue);
716 }
717 static FORCEINLINE HRESULT IMFTopologyNode_SetBlob(IMFTopologyNode* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
718     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
719 }
720 static FORCEINLINE HRESULT IMFTopologyNode_SetUnknown(IMFTopologyNode* This,REFGUID guidKey,IUnknown *pUnknown) {
721     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
722 }
723 static FORCEINLINE HRESULT IMFTopologyNode_LockStore(IMFTopologyNode* This) {
724     return This->lpVtbl->LockStore(This);
725 }
726 static FORCEINLINE HRESULT IMFTopologyNode_UnlockStore(IMFTopologyNode* This) {
727     return This->lpVtbl->UnlockStore(This);
728 }
729 static FORCEINLINE HRESULT IMFTopologyNode_GetCount(IMFTopologyNode* This,UINT32 *pcItems) {
730     return This->lpVtbl->GetCount(This,pcItems);
731 }
732 static FORCEINLINE HRESULT IMFTopologyNode_GetItemByIndex(IMFTopologyNode* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
733     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
734 }
735 static FORCEINLINE HRESULT IMFTopologyNode_CopyAllItems(IMFTopologyNode* This,IMFAttributes *pDest) {
736     return This->lpVtbl->CopyAllItems(This,pDest);
737 }
738 /*** IMFTopologyNode methods ***/
739 static FORCEINLINE HRESULT IMFTopologyNode_SetObject(IMFTopologyNode* This,IUnknown *pObject) {
740     return This->lpVtbl->SetObject(This,pObject);
741 }
742 static FORCEINLINE HRESULT IMFTopologyNode_GetObject(IMFTopologyNode* This,IUnknown **ppObject) {
743     return This->lpVtbl->GetObject(This,ppObject);
744 }
745 static FORCEINLINE HRESULT IMFTopologyNode_GetNodeType(IMFTopologyNode* This,MF_TOPOLOGY_TYPE *pType) {
746     return This->lpVtbl->GetNodeType(This,pType);
747 }
748 static FORCEINLINE HRESULT IMFTopologyNode_GetTopoNodeID(IMFTopologyNode* This,TOPOID *pID) {
749     return This->lpVtbl->GetTopoNodeID(This,pID);
750 }
751 static FORCEINLINE HRESULT IMFTopologyNode_SetTopoNodeID(IMFTopologyNode* This,TOPOID ullTopoID) {
752     return This->lpVtbl->SetTopoNodeID(This,ullTopoID);
753 }
754 static FORCEINLINE HRESULT IMFTopologyNode_GetInputCount(IMFTopologyNode* This,DWORD *pcInputs) {
755     return This->lpVtbl->GetInputCount(This,pcInputs);
756 }
757 static FORCEINLINE HRESULT IMFTopologyNode_GetOutputCount(IMFTopologyNode* This,DWORD *pcOutputs) {
758     return This->lpVtbl->GetOutputCount(This,pcOutputs);
759 }
760 static FORCEINLINE HRESULT IMFTopologyNode_ConnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode *pDownstreamNode,DWORD dwInputIndexOnDownstreamNode) {
761     return This->lpVtbl->ConnectOutput(This,dwOutputIndex,pDownstreamNode,dwInputIndexOnDownstreamNode);
762 }
763 static FORCEINLINE HRESULT IMFTopologyNode_DisconnectOutput(IMFTopologyNode* This,DWORD dwOutputIndex) {
764     return This->lpVtbl->DisconnectOutput(This,dwOutputIndex);
765 }
766 static FORCEINLINE HRESULT IMFTopologyNode_GetInput(IMFTopologyNode* This,DWORD dwInputIndex,IMFTopologyNode **ppUpstreamNode,DWORD *pdwOutputIndexOnUpstreamNode) {
767     return This->lpVtbl->GetInput(This,dwInputIndex,ppUpstreamNode,pdwOutputIndexOnUpstreamNode);
768 }
769 static FORCEINLINE HRESULT IMFTopologyNode_GetOutput(IMFTopologyNode* This,DWORD dwOutputIndex,IMFTopologyNode **ppDownstreamNode,DWORD *pdwInputIndexOnDownstreamNode) {
770     return This->lpVtbl->GetOutput(This,dwOutputIndex,ppDownstreamNode,pdwInputIndexOnDownstreamNode);
771 }
772 static FORCEINLINE HRESULT IMFTopologyNode_SetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType *pType) {
773     return This->lpVtbl->SetOutputPrefType(This,dwOutputIndex,pType);
774 }
775 static FORCEINLINE HRESULT IMFTopologyNode_GetOutputPrefType(IMFTopologyNode* This,DWORD dwOutputIndex,IMFMediaType **ppType) {
776     return This->lpVtbl->GetOutputPrefType(This,dwOutputIndex,ppType);
777 }
778 static FORCEINLINE HRESULT IMFTopologyNode_SetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType *pType) {
779     return This->lpVtbl->SetInputPrefType(This,dwInputIndex,pType);
780 }
781 static FORCEINLINE HRESULT IMFTopologyNode_GetInputPrefType(IMFTopologyNode* This,DWORD dwInputIndex,IMFMediaType **ppType) {
782     return This->lpVtbl->GetInputPrefType(This,dwInputIndex,ppType);
783 }
784 static FORCEINLINE HRESULT IMFTopologyNode_CloneFrom(IMFTopologyNode* This,IMFTopologyNode *pNode) {
785     return This->lpVtbl->CloneFrom(This,pNode);
786 }
787 #endif
788 #endif
789 
790 #endif
791 
792 HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetOutputPrefType_Proxy(
793     IMFTopologyNode* This,
794     DWORD dwOutputIndex,
795     DWORD *pcbData,
796     BYTE **ppbData);
797 void __RPC_STUB IMFTopologyNode_RemoteGetOutputPrefType_Stub(
798     IRpcStubBuffer* This,
799     IRpcChannelBuffer* pRpcChannelBuffer,
800     PRPC_MESSAGE pRpcMessage,
801     DWORD* pdwStubPhase);
802 HRESULT STDMETHODCALLTYPE IMFTopologyNode_RemoteGetInputPrefType_Proxy(
803     IMFTopologyNode* This,
804     DWORD dwInputIndex,
805     DWORD *pcbData,
806     BYTE **ppbData);
807 void __RPC_STUB IMFTopologyNode_RemoteGetInputPrefType_Stub(
808     IRpcStubBuffer* This,
809     IRpcChannelBuffer* pRpcChannelBuffer,
810     PRPC_MESSAGE pRpcMessage,
811     DWORD* pdwStubPhase);
812 HRESULT CALLBACK IMFTopologyNode_GetOutputPrefType_Proxy(
813     IMFTopologyNode* This,
814     DWORD dwOutputIndex,
815     IMFMediaType **ppType);
816 HRESULT __RPC_STUB IMFTopologyNode_GetOutputPrefType_Stub(
817     IMFTopologyNode* This,
818     DWORD dwOutputIndex,
819     DWORD *pcbData,
820     BYTE **ppbData);
821 HRESULT CALLBACK IMFTopologyNode_GetInputPrefType_Proxy(
822     IMFTopologyNode* This,
823     DWORD dwInputIndex,
824     IMFMediaType **ppType);
825 HRESULT __RPC_STUB IMFTopologyNode_GetInputPrefType_Stub(
826     IMFTopologyNode* This,
827     DWORD dwInputIndex,
828     DWORD *pcbData,
829     BYTE **ppbData);
830 
831 #endif  /* __IMFTopologyNode_INTERFACE_DEFINED__ */
832 
833 /*****************************************************************************
834  * IMFTopology interface
835  */
836 #ifndef __IMFTopology_INTERFACE_DEFINED__
837 #define __IMFTopology_INTERFACE_DEFINED__
838 
839 DEFINE_GUID(IID_IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33);
840 #if defined(__cplusplus) && !defined(CINTERFACE)
841 MIDL_INTERFACE("83cf873a-f6da-4bc8-823f-bacfd55dc433")
842 IMFTopology : public IMFAttributes
843 {
844     virtual HRESULT STDMETHODCALLTYPE GetTopologyID(
845         TOPOID *pID) = 0;
846 
847     virtual HRESULT STDMETHODCALLTYPE AddNode(
848         IMFTopologyNode *pNode) = 0;
849 
850     virtual HRESULT STDMETHODCALLTYPE RemoveNode(
851         IMFTopologyNode *pNode) = 0;
852 
853     virtual HRESULT STDMETHODCALLTYPE GetNodeCount(
854         WORD *pwNodes) = 0;
855 
856     virtual HRESULT STDMETHODCALLTYPE GetNode(
857         WORD wIndex,
858         IMFTopologyNode **ppNode) = 0;
859 
860     virtual HRESULT STDMETHODCALLTYPE Clear(
861         ) = 0;
862 
863     virtual HRESULT STDMETHODCALLTYPE CloneFrom(
864         IMFTopology *pTopology) = 0;
865 
866     virtual HRESULT STDMETHODCALLTYPE GetNodeByID(
867         TOPOID qwTopoNodeID,
868         IMFTopologyNode **ppNode) = 0;
869 
870     virtual HRESULT STDMETHODCALLTYPE GetSourceNodeCollection(
871         IMFCollection **ppCollection) = 0;
872 
873     virtual HRESULT STDMETHODCALLTYPE GetOutputNodeCollection(
874         IMFCollection **ppCollection) = 0;
875 
876 };
877 #ifdef __CRT_UUID_DECL
878 __CRT_UUID_DECL(IMFTopology, 0x83cf873a, 0xf6da, 0x4bc8, 0x82,0x3f, 0xba,0xcf,0xd5,0x5d,0xc4,0x33)
879 #endif
880 #else
881 typedef struct IMFTopologyVtbl {
882     BEGIN_INTERFACE
883 
884     /*** IUnknown methods ***/
885     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
886         IMFTopology *This,
887         REFIID riid,
888         void **ppvObject);
889 
890     ULONG (STDMETHODCALLTYPE *AddRef)(
891         IMFTopology *This);
892 
893     ULONG (STDMETHODCALLTYPE *Release)(
894         IMFTopology *This);
895 
896     /*** IMFAttributes methods ***/
897     HRESULT (STDMETHODCALLTYPE *GetItem)(
898         IMFTopology *This,
899         REFGUID guidKey,
900         PROPVARIANT *pValue);
901 
902     HRESULT (STDMETHODCALLTYPE *GetItemType)(
903         IMFTopology *This,
904         REFGUID guidKey,
905         MF_ATTRIBUTE_TYPE *pType);
906 
907     HRESULT (STDMETHODCALLTYPE *CompareItem)(
908         IMFTopology *This,
909         REFGUID guidKey,
910         REFPROPVARIANT Value,
911         WINBOOL *pbResult);
912 
913     HRESULT (STDMETHODCALLTYPE *Compare)(
914         IMFTopology *This,
915         IMFAttributes *pTheirs,
916         MF_ATTRIBUTES_MATCH_TYPE MatchType,
917         WINBOOL *pbResult);
918 
919     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
920         IMFTopology *This,
921         REFGUID guidKey,
922         UINT32 *punValue);
923 
924     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
925         IMFTopology *This,
926         REFGUID guidKey,
927         UINT64 *punValue);
928 
929     HRESULT (STDMETHODCALLTYPE *GetDouble)(
930         IMFTopology *This,
931         REFGUID guidKey,
932         double *pfValue);
933 
934     HRESULT (STDMETHODCALLTYPE *GetGUID)(
935         IMFTopology *This,
936         REFGUID guidKey,
937         GUID *pguidValue);
938 
939     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
940         IMFTopology *This,
941         REFGUID guidKey,
942         UINT32 *pcchLength);
943 
944     HRESULT (STDMETHODCALLTYPE *GetString)(
945         IMFTopology *This,
946         REFGUID guidKey,
947         LPWSTR pwszValue,
948         UINT32 cchBufSize,
949         UINT32 *pcchLength);
950 
951     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
952         IMFTopology *This,
953         REFGUID guidKey,
954         LPWSTR *ppwszValue,
955         UINT32 *pcchLength);
956 
957     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
958         IMFTopology *This,
959         REFGUID guidKey,
960         UINT32 *pcbBlobSize);
961 
962     HRESULT (STDMETHODCALLTYPE *GetBlob)(
963         IMFTopology *This,
964         REFGUID guidKey,
965         UINT8 *pBuf,
966         UINT32 cbBufSize,
967         UINT32 *pcbBlobSize);
968 
969     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
970         IMFTopology *This,
971         REFGUID guidKey,
972         UINT8 **ppBuf,
973         UINT32 *pcbSize);
974 
975     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
976         IMFTopology *This,
977         REFGUID guidKey,
978         REFIID riid,
979         LPVOID *ppv);
980 
981     HRESULT (STDMETHODCALLTYPE *SetItem)(
982         IMFTopology *This,
983         REFGUID guidKey,
984         REFPROPVARIANT Value);
985 
986     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
987         IMFTopology *This,
988         REFGUID guidKey);
989 
990     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
991         IMFTopology *This);
992 
993     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
994         IMFTopology *This,
995         REFGUID guidKey,
996         UINT32 unValue);
997 
998     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
999         IMFTopology *This,
1000         REFGUID guidKey,
1001         UINT64 unValue);
1002 
1003     HRESULT (STDMETHODCALLTYPE *SetDouble)(
1004         IMFTopology *This,
1005         REFGUID guidKey,
1006         double fValue);
1007 
1008     HRESULT (STDMETHODCALLTYPE *SetGUID)(
1009         IMFTopology *This,
1010         REFGUID guidKey,
1011         REFGUID guidValue);
1012 
1013     HRESULT (STDMETHODCALLTYPE *SetString)(
1014         IMFTopology *This,
1015         REFGUID guidKey,
1016         LPCWSTR wszValue);
1017 
1018     HRESULT (STDMETHODCALLTYPE *SetBlob)(
1019         IMFTopology *This,
1020         REFGUID guidKey,
1021         const UINT8 *pBuf,
1022         UINT32 cbBufSize);
1023 
1024     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
1025         IMFTopology *This,
1026         REFGUID guidKey,
1027         IUnknown *pUnknown);
1028 
1029     HRESULT (STDMETHODCALLTYPE *LockStore)(
1030         IMFTopology *This);
1031 
1032     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
1033         IMFTopology *This);
1034 
1035     HRESULT (STDMETHODCALLTYPE *GetCount)(
1036         IMFTopology *This,
1037         UINT32 *pcItems);
1038 
1039     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
1040         IMFTopology *This,
1041         UINT32 unIndex,
1042         GUID *pguidKey,
1043         PROPVARIANT *pValue);
1044 
1045     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
1046         IMFTopology *This,
1047         IMFAttributes *pDest);
1048 
1049     /*** IMFTopology methods ***/
1050     HRESULT (STDMETHODCALLTYPE *GetTopologyID)(
1051         IMFTopology *This,
1052         TOPOID *pID);
1053 
1054     HRESULT (STDMETHODCALLTYPE *AddNode)(
1055         IMFTopology *This,
1056         IMFTopologyNode *pNode);
1057 
1058     HRESULT (STDMETHODCALLTYPE *RemoveNode)(
1059         IMFTopology *This,
1060         IMFTopologyNode *pNode);
1061 
1062     HRESULT (STDMETHODCALLTYPE *GetNodeCount)(
1063         IMFTopology *This,
1064         WORD *pwNodes);
1065 
1066     HRESULT (STDMETHODCALLTYPE *GetNode)(
1067         IMFTopology *This,
1068         WORD wIndex,
1069         IMFTopologyNode **ppNode);
1070 
1071     HRESULT (STDMETHODCALLTYPE *Clear)(
1072         IMFTopology *This);
1073 
1074     HRESULT (STDMETHODCALLTYPE *CloneFrom)(
1075         IMFTopology *This,
1076         IMFTopology *pTopology);
1077 
1078     HRESULT (STDMETHODCALLTYPE *GetNodeByID)(
1079         IMFTopology *This,
1080         TOPOID qwTopoNodeID,
1081         IMFTopologyNode **ppNode);
1082 
1083     HRESULT (STDMETHODCALLTYPE *GetSourceNodeCollection)(
1084         IMFTopology *This,
1085         IMFCollection **ppCollection);
1086 
1087     HRESULT (STDMETHODCALLTYPE *GetOutputNodeCollection)(
1088         IMFTopology *This,
1089         IMFCollection **ppCollection);
1090 
1091     END_INTERFACE
1092 } IMFTopologyVtbl;
1093 
1094 interface IMFTopology {
1095     CONST_VTBL IMFTopologyVtbl* lpVtbl;
1096 };
1097 
1098 #ifdef COBJMACROS
1099 #ifndef WIDL_C_INLINE_WRAPPERS
1100 /*** IUnknown methods ***/
1101 #define IMFTopology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1102 #define IMFTopology_AddRef(This) (This)->lpVtbl->AddRef(This)
1103 #define IMFTopology_Release(This) (This)->lpVtbl->Release(This)
1104 /*** IMFAttributes methods ***/
1105 #define IMFTopology_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
1106 #define IMFTopology_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
1107 #define IMFTopology_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
1108 #define IMFTopology_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
1109 #define IMFTopology_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
1110 #define IMFTopology_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
1111 #define IMFTopology_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
1112 #define IMFTopology_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
1113 #define IMFTopology_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
1114 #define IMFTopology_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
1115 #define IMFTopology_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
1116 #define IMFTopology_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
1117 #define IMFTopology_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
1118 #define IMFTopology_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
1119 #define IMFTopology_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
1120 #define IMFTopology_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
1121 #define IMFTopology_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
1122 #define IMFTopology_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
1123 #define IMFTopology_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
1124 #define IMFTopology_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
1125 #define IMFTopology_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
1126 #define IMFTopology_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
1127 #define IMFTopology_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
1128 #define IMFTopology_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
1129 #define IMFTopology_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
1130 #define IMFTopology_LockStore(This) (This)->lpVtbl->LockStore(This)
1131 #define IMFTopology_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
1132 #define IMFTopology_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
1133 #define IMFTopology_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
1134 #define IMFTopology_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
1135 /*** IMFTopology methods ***/
1136 #define IMFTopology_GetTopologyID(This,pID) (This)->lpVtbl->GetTopologyID(This,pID)
1137 #define IMFTopology_AddNode(This,pNode) (This)->lpVtbl->AddNode(This,pNode)
1138 #define IMFTopology_RemoveNode(This,pNode) (This)->lpVtbl->RemoveNode(This,pNode)
1139 #define IMFTopology_GetNodeCount(This,pwNodes) (This)->lpVtbl->GetNodeCount(This,pwNodes)
1140 #define IMFTopology_GetNode(This,wIndex,ppNode) (This)->lpVtbl->GetNode(This,wIndex,ppNode)
1141 #define IMFTopology_Clear(This) (This)->lpVtbl->Clear(This)
1142 #define IMFTopology_CloneFrom(This,pTopology) (This)->lpVtbl->CloneFrom(This,pTopology)
1143 #define IMFTopology_GetNodeByID(This,qwTopoNodeID,ppNode) (This)->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode)
1144 #define IMFTopology_GetSourceNodeCollection(This,ppCollection) (This)->lpVtbl->GetSourceNodeCollection(This,ppCollection)
1145 #define IMFTopology_GetOutputNodeCollection(This,ppCollection) (This)->lpVtbl->GetOutputNodeCollection(This,ppCollection)
1146 #else
1147 /*** IUnknown methods ***/
1148 static FORCEINLINE HRESULT IMFTopology_QueryInterface(IMFTopology* This,REFIID riid,void **ppvObject) {
1149     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1150 }
1151 static FORCEINLINE ULONG IMFTopology_AddRef(IMFTopology* This) {
1152     return This->lpVtbl->AddRef(This);
1153 }
1154 static FORCEINLINE ULONG IMFTopology_Release(IMFTopology* This) {
1155     return This->lpVtbl->Release(This);
1156 }
1157 /*** IMFAttributes methods ***/
1158 static FORCEINLINE HRESULT IMFTopology_GetItem(IMFTopology* This,REFGUID guidKey,PROPVARIANT *pValue) {
1159     return This->lpVtbl->GetItem(This,guidKey,pValue);
1160 }
1161 static FORCEINLINE HRESULT IMFTopology_GetItemType(IMFTopology* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
1162     return This->lpVtbl->GetItemType(This,guidKey,pType);
1163 }
1164 static FORCEINLINE HRESULT IMFTopology_CompareItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
1165     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
1166 }
1167 static FORCEINLINE HRESULT IMFTopology_Compare(IMFTopology* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
1168     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
1169 }
1170 static FORCEINLINE HRESULT IMFTopology_GetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 *punValue) {
1171     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
1172 }
1173 static FORCEINLINE HRESULT IMFTopology_GetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 *punValue) {
1174     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
1175 }
1176 static FORCEINLINE HRESULT IMFTopology_GetDouble(IMFTopology* This,REFGUID guidKey,double *pfValue) {
1177     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
1178 }
1179 static FORCEINLINE HRESULT IMFTopology_GetGUID(IMFTopology* This,REFGUID guidKey,GUID *pguidValue) {
1180     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
1181 }
1182 static FORCEINLINE HRESULT IMFTopology_GetStringLength(IMFTopology* This,REFGUID guidKey,UINT32 *pcchLength) {
1183     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
1184 }
1185 static FORCEINLINE HRESULT IMFTopology_GetString(IMFTopology* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
1186     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
1187 }
1188 static FORCEINLINE HRESULT IMFTopology_GetAllocatedString(IMFTopology* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
1189     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
1190 }
1191 static FORCEINLINE HRESULT IMFTopology_GetBlobSize(IMFTopology* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
1192     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
1193 }
1194 static FORCEINLINE HRESULT IMFTopology_GetBlob(IMFTopology* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
1195     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
1196 }
1197 static FORCEINLINE HRESULT IMFTopology_GetAllocatedBlob(IMFTopology* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
1198     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
1199 }
1200 static FORCEINLINE HRESULT IMFTopology_GetUnknown(IMFTopology* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
1201     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
1202 }
1203 static FORCEINLINE HRESULT IMFTopology_SetItem(IMFTopology* This,REFGUID guidKey,REFPROPVARIANT Value) {
1204     return This->lpVtbl->SetItem(This,guidKey,Value);
1205 }
1206 static FORCEINLINE HRESULT IMFTopology_DeleteItem(IMFTopology* This,REFGUID guidKey) {
1207     return This->lpVtbl->DeleteItem(This,guidKey);
1208 }
1209 static FORCEINLINE HRESULT IMFTopology_DeleteAllItems(IMFTopology* This) {
1210     return This->lpVtbl->DeleteAllItems(This);
1211 }
1212 static FORCEINLINE HRESULT IMFTopology_SetUINT32(IMFTopology* This,REFGUID guidKey,UINT32 unValue) {
1213     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
1214 }
1215 static FORCEINLINE HRESULT IMFTopology_SetUINT64(IMFTopology* This,REFGUID guidKey,UINT64 unValue) {
1216     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
1217 }
1218 static FORCEINLINE HRESULT IMFTopology_SetDouble(IMFTopology* This,REFGUID guidKey,double fValue) {
1219     return This->lpVtbl->SetDouble(This,guidKey,fValue);
1220 }
1221 static FORCEINLINE HRESULT IMFTopology_SetGUID(IMFTopology* This,REFGUID guidKey,REFGUID guidValue) {
1222     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
1223 }
1224 static FORCEINLINE HRESULT IMFTopology_SetString(IMFTopology* This,REFGUID guidKey,LPCWSTR wszValue) {
1225     return This->lpVtbl->SetString(This,guidKey,wszValue);
1226 }
1227 static FORCEINLINE HRESULT IMFTopology_SetBlob(IMFTopology* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
1228     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
1229 }
1230 static FORCEINLINE HRESULT IMFTopology_SetUnknown(IMFTopology* This,REFGUID guidKey,IUnknown *pUnknown) {
1231     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
1232 }
1233 static FORCEINLINE HRESULT IMFTopology_LockStore(IMFTopology* This) {
1234     return This->lpVtbl->LockStore(This);
1235 }
1236 static FORCEINLINE HRESULT IMFTopology_UnlockStore(IMFTopology* This) {
1237     return This->lpVtbl->UnlockStore(This);
1238 }
1239 static FORCEINLINE HRESULT IMFTopology_GetCount(IMFTopology* This,UINT32 *pcItems) {
1240     return This->lpVtbl->GetCount(This,pcItems);
1241 }
1242 static FORCEINLINE HRESULT IMFTopology_GetItemByIndex(IMFTopology* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
1243     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
1244 }
1245 static FORCEINLINE HRESULT IMFTopology_CopyAllItems(IMFTopology* This,IMFAttributes *pDest) {
1246     return This->lpVtbl->CopyAllItems(This,pDest);
1247 }
1248 /*** IMFTopology methods ***/
1249 static FORCEINLINE HRESULT IMFTopology_GetTopologyID(IMFTopology* This,TOPOID *pID) {
1250     return This->lpVtbl->GetTopologyID(This,pID);
1251 }
1252 static FORCEINLINE HRESULT IMFTopology_AddNode(IMFTopology* This,IMFTopologyNode *pNode) {
1253     return This->lpVtbl->AddNode(This,pNode);
1254 }
1255 static FORCEINLINE HRESULT IMFTopology_RemoveNode(IMFTopology* This,IMFTopologyNode *pNode) {
1256     return This->lpVtbl->RemoveNode(This,pNode);
1257 }
1258 static FORCEINLINE HRESULT IMFTopology_GetNodeCount(IMFTopology* This,WORD *pwNodes) {
1259     return This->lpVtbl->GetNodeCount(This,pwNodes);
1260 }
1261 static FORCEINLINE HRESULT IMFTopology_GetNode(IMFTopology* This,WORD wIndex,IMFTopologyNode **ppNode) {
1262     return This->lpVtbl->GetNode(This,wIndex,ppNode);
1263 }
1264 static FORCEINLINE HRESULT IMFTopology_Clear(IMFTopology* This) {
1265     return This->lpVtbl->Clear(This);
1266 }
1267 static FORCEINLINE HRESULT IMFTopology_CloneFrom(IMFTopology* This,IMFTopology *pTopology) {
1268     return This->lpVtbl->CloneFrom(This,pTopology);
1269 }
1270 static FORCEINLINE HRESULT IMFTopology_GetNodeByID(IMFTopology* This,TOPOID qwTopoNodeID,IMFTopologyNode **ppNode) {
1271     return This->lpVtbl->GetNodeByID(This,qwTopoNodeID,ppNode);
1272 }
1273 static FORCEINLINE HRESULT IMFTopology_GetSourceNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
1274     return This->lpVtbl->GetSourceNodeCollection(This,ppCollection);
1275 }
1276 static FORCEINLINE HRESULT IMFTopology_GetOutputNodeCollection(IMFTopology* This,IMFCollection **ppCollection) {
1277     return This->lpVtbl->GetOutputNodeCollection(This,ppCollection);
1278 }
1279 #endif
1280 #endif
1281 
1282 #endif
1283 
1284 
1285 #endif  /* __IMFTopology_INTERFACE_DEFINED__ */
1286 
1287 /*****************************************************************************
1288  * IMFGetService interface
1289  */
1290 #ifndef __IMFGetService_INTERFACE_DEFINED__
1291 #define __IMFGetService_INTERFACE_DEFINED__
1292 
1293 DEFINE_GUID(IID_IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7);
1294 #if defined(__cplusplus) && !defined(CINTERFACE)
1295 MIDL_INTERFACE("fa993888-4383-415a-a930-dd472a8cf6f7")
1296 IMFGetService : public IUnknown
1297 {
1298     virtual HRESULT STDMETHODCALLTYPE GetService(
1299         REFGUID guidService,
1300         REFIID riid,
1301         LPVOID *ppvObject) = 0;
1302 
1303 };
1304 #ifdef __CRT_UUID_DECL
1305 __CRT_UUID_DECL(IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7)
1306 #endif
1307 #else
1308 typedef struct IMFGetServiceVtbl {
1309     BEGIN_INTERFACE
1310 
1311     /*** IUnknown methods ***/
1312     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1313         IMFGetService *This,
1314         REFIID riid,
1315         void **ppvObject);
1316 
1317     ULONG (STDMETHODCALLTYPE *AddRef)(
1318         IMFGetService *This);
1319 
1320     ULONG (STDMETHODCALLTYPE *Release)(
1321         IMFGetService *This);
1322 
1323     /*** IMFGetService methods ***/
1324     HRESULT (STDMETHODCALLTYPE *GetService)(
1325         IMFGetService *This,
1326         REFGUID guidService,
1327         REFIID riid,
1328         LPVOID *ppvObject);
1329 
1330     END_INTERFACE
1331 } IMFGetServiceVtbl;
1332 
1333 interface IMFGetService {
1334     CONST_VTBL IMFGetServiceVtbl* lpVtbl;
1335 };
1336 
1337 #ifdef COBJMACROS
1338 #ifndef WIDL_C_INLINE_WRAPPERS
1339 /*** IUnknown methods ***/
1340 #define IMFGetService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1341 #define IMFGetService_AddRef(This) (This)->lpVtbl->AddRef(This)
1342 #define IMFGetService_Release(This) (This)->lpVtbl->Release(This)
1343 /*** IMFGetService methods ***/
1344 #define IMFGetService_GetService(This,guidService,riid,ppvObject) (This)->lpVtbl->GetService(This,guidService,riid,ppvObject)
1345 #else
1346 /*** IUnknown methods ***/
1347 static FORCEINLINE HRESULT IMFGetService_QueryInterface(IMFGetService* This,REFIID riid,void **ppvObject) {
1348     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1349 }
1350 static FORCEINLINE ULONG IMFGetService_AddRef(IMFGetService* This) {
1351     return This->lpVtbl->AddRef(This);
1352 }
1353 static FORCEINLINE ULONG IMFGetService_Release(IMFGetService* This) {
1354     return This->lpVtbl->Release(This);
1355 }
1356 /*** IMFGetService methods ***/
1357 static FORCEINLINE HRESULT IMFGetService_GetService(IMFGetService* This,REFGUID guidService,REFIID riid,LPVOID *ppvObject) {
1358     return This->lpVtbl->GetService(This,guidService,riid,ppvObject);
1359 }
1360 #endif
1361 #endif
1362 
1363 #endif
1364 
1365 
1366 #endif  /* __IMFGetService_INTERFACE_DEFINED__ */
1367 
1368 typedef LONGLONG MFTIME;
1369 typedef enum _MF_CLOCK_STATE {
1370     MFCLOCK_STATE_INVALID = 0,
1371     MFCLOCK_STATE_RUNNING = 1,
1372     MFCLOCK_STATE_STOPPED = 2,
1373     MFCLOCK_STATE_PAUSED = 3
1374 } MF_CLOCK_STATE;
1375 typedef enum _MF_CLOCK_STATE MFCLOCK_STATE;
1376 typedef struct _MFCLOCK_PROPERTIES {
1377     UINT64 qwCorrelationRate;
1378     GUID guidClockId;
1379     DWORD dwClockFlags;
1380     UINT64 qwClockFrequency;
1381     DWORD dwClockTolerance;
1382     DWORD dwClockJitter;
1383 } MFCLOCK_PROPERTIES;
1384 /*****************************************************************************
1385  * IMFClock interface
1386  */
1387 #ifndef __IMFClock_INTERFACE_DEFINED__
1388 #define __IMFClock_INTERFACE_DEFINED__
1389 
1390 DEFINE_GUID(IID_IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30);
1391 #if defined(__cplusplus) && !defined(CINTERFACE)
1392 MIDL_INTERFACE("2eb1e945-18b8-4139-9b1a-d5d584818530")
1393 IMFClock : public IUnknown
1394 {
1395     virtual HRESULT STDMETHODCALLTYPE GetClockCharacteristics(
1396         DWORD *pdwCharacteristics) = 0;
1397 
1398     virtual HRESULT STDMETHODCALLTYPE GetCorrelatedTime(
1399         DWORD dwReserved,
1400         LONGLONG *pllClockTime,
1401         MFTIME *phnsSystemTime) = 0;
1402 
1403     virtual HRESULT STDMETHODCALLTYPE GetContinuityKey(
1404         DWORD *pdwContinuityKey) = 0;
1405 
1406     virtual HRESULT STDMETHODCALLTYPE GetState(
1407         DWORD dwReserved,
1408         MFCLOCK_STATE *peClockState) = 0;
1409 
1410     virtual HRESULT STDMETHODCALLTYPE GetProperties(
1411         MFCLOCK_PROPERTIES *pClockProperties) = 0;
1412 
1413 };
1414 #ifdef __CRT_UUID_DECL
1415 __CRT_UUID_DECL(IMFClock, 0x2eb1e945, 0x18b8, 0x4139, 0x9b,0x1a, 0xd5,0xd5,0x84,0x81,0x85,0x30)
1416 #endif
1417 #else
1418 typedef struct IMFClockVtbl {
1419     BEGIN_INTERFACE
1420 
1421     /*** IUnknown methods ***/
1422     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1423         IMFClock *This,
1424         REFIID riid,
1425         void **ppvObject);
1426 
1427     ULONG (STDMETHODCALLTYPE *AddRef)(
1428         IMFClock *This);
1429 
1430     ULONG (STDMETHODCALLTYPE *Release)(
1431         IMFClock *This);
1432 
1433     /*** IMFClock methods ***/
1434     HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
1435         IMFClock *This,
1436         DWORD *pdwCharacteristics);
1437 
1438     HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
1439         IMFClock *This,
1440         DWORD dwReserved,
1441         LONGLONG *pllClockTime,
1442         MFTIME *phnsSystemTime);
1443 
1444     HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
1445         IMFClock *This,
1446         DWORD *pdwContinuityKey);
1447 
1448     HRESULT (STDMETHODCALLTYPE *GetState)(
1449         IMFClock *This,
1450         DWORD dwReserved,
1451         MFCLOCK_STATE *peClockState);
1452 
1453     HRESULT (STDMETHODCALLTYPE *GetProperties)(
1454         IMFClock *This,
1455         MFCLOCK_PROPERTIES *pClockProperties);
1456 
1457     END_INTERFACE
1458 } IMFClockVtbl;
1459 
1460 interface IMFClock {
1461     CONST_VTBL IMFClockVtbl* lpVtbl;
1462 };
1463 
1464 #ifdef COBJMACROS
1465 #ifndef WIDL_C_INLINE_WRAPPERS
1466 /*** IUnknown methods ***/
1467 #define IMFClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1468 #define IMFClock_AddRef(This) (This)->lpVtbl->AddRef(This)
1469 #define IMFClock_Release(This) (This)->lpVtbl->Release(This)
1470 /*** IMFClock methods ***/
1471 #define IMFClock_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
1472 #define IMFClock_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
1473 #define IMFClock_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
1474 #define IMFClock_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
1475 #define IMFClock_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
1476 #else
1477 /*** IUnknown methods ***/
1478 static FORCEINLINE HRESULT IMFClock_QueryInterface(IMFClock* This,REFIID riid,void **ppvObject) {
1479     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1480 }
1481 static FORCEINLINE ULONG IMFClock_AddRef(IMFClock* This) {
1482     return This->lpVtbl->AddRef(This);
1483 }
1484 static FORCEINLINE ULONG IMFClock_Release(IMFClock* This) {
1485     return This->lpVtbl->Release(This);
1486 }
1487 /*** IMFClock methods ***/
1488 static FORCEINLINE HRESULT IMFClock_GetClockCharacteristics(IMFClock* This,DWORD *pdwCharacteristics) {
1489     return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
1490 }
1491 static FORCEINLINE HRESULT IMFClock_GetCorrelatedTime(IMFClock* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
1492     return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
1493 }
1494 static FORCEINLINE HRESULT IMFClock_GetContinuityKey(IMFClock* This,DWORD *pdwContinuityKey) {
1495     return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
1496 }
1497 static FORCEINLINE HRESULT IMFClock_GetState(IMFClock* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
1498     return This->lpVtbl->GetState(This,dwReserved,peClockState);
1499 }
1500 static FORCEINLINE HRESULT IMFClock_GetProperties(IMFClock* This,MFCLOCK_PROPERTIES *pClockProperties) {
1501     return This->lpVtbl->GetProperties(This,pClockProperties);
1502 }
1503 #endif
1504 #endif
1505 
1506 #endif
1507 
1508 
1509 #endif  /* __IMFClock_INTERFACE_DEFINED__ */
1510 
1511 #define SHA_HASH_LEN 20
1512 #define STR_HASH_LEN (SHA_HASH_LEN*2+3)
1513 typedef struct _MFRR_COMPONENT_HASH_INFO {
1514   DWORD ulReason;
1515   WCHAR rgHeaderHash[STR_HASH_LEN];
1516   WCHAR rgPublicKeyHash[STR_HASH_LEN];
1517   WCHAR wszName[MAX_PATH];
1518 } MFRR_COMPONENT_HASH_INFO, *PMFRR_COMPONENT_HASH_INFO;
1519 EXTERN_GUID(MF_PD_DURATION, 0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a);
1520 typedef enum _MF_CONNECT_METHOD {
1521     MF_CONNECT_DIRECT = 0x0,
1522     MF_CONNECT_ALLOW_CONVERTER = 0x1,
1523     MF_CONNECT_ALLOW_DECODER = 0x3,
1524     MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES = 0x4,
1525     MF_CONNECT_AS_OPTIONAL = 0x10000,
1526     MF_CONNECT_AS_OPTIONAL_BRANCH = 0x20000
1527 } MF_CONNECT_METHOD;
1528 /*****************************************************************************
1529  * IMFMediaSession interface
1530  */
1531 #ifndef __IMFMediaSession_INTERFACE_DEFINED__
1532 #define __IMFMediaSession_INTERFACE_DEFINED__
1533 
1534 DEFINE_GUID(IID_IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27);
1535 #if defined(__cplusplus) && !defined(CINTERFACE)
1536 MIDL_INTERFACE("90377834-21d0-4dee-8214-ba2e3e6c1127")
1537 IMFMediaSession : public IMFMediaEventGenerator
1538 {
1539     virtual HRESULT STDMETHODCALLTYPE SetTopology(
1540         DWORD dwSetTopologyFlags,
1541         IMFTopology *pTopology) = 0;
1542 
1543     virtual HRESULT STDMETHODCALLTYPE ClearTopologies(
1544         ) = 0;
1545 
1546     virtual HRESULT STDMETHODCALLTYPE Start(
1547         const GUID *pguidTimeFormat,
1548         const PROPVARIANT *pvarStartPosition) = 0;
1549 
1550     virtual HRESULT STDMETHODCALLTYPE Pause(
1551         ) = 0;
1552 
1553     virtual HRESULT STDMETHODCALLTYPE Stop(
1554         ) = 0;
1555 
1556     virtual HRESULT STDMETHODCALLTYPE Close(
1557         ) = 0;
1558 
1559     virtual HRESULT STDMETHODCALLTYPE Shutdown(
1560         ) = 0;
1561 
1562     virtual HRESULT STDMETHODCALLTYPE GetClock(
1563         IMFClock **ppClock) = 0;
1564 
1565     virtual HRESULT STDMETHODCALLTYPE GetSessionCapabilities(
1566         DWORD *pdwCaps) = 0;
1567 
1568     virtual HRESULT STDMETHODCALLTYPE GetFullTopology(
1569         DWORD dwGetFullTopologyFlags,
1570         TOPOID TopoId,
1571         IMFTopology **ppFullTopology) = 0;
1572 
1573 };
1574 #ifdef __CRT_UUID_DECL
1575 __CRT_UUID_DECL(IMFMediaSession, 0x90377834, 0x21d0, 0x4dee, 0x82,0x14, 0xba,0x2e,0x3e,0x6c,0x11,0x27)
1576 #endif
1577 #else
1578 typedef struct IMFMediaSessionVtbl {
1579     BEGIN_INTERFACE
1580 
1581     /*** IUnknown methods ***/
1582     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1583         IMFMediaSession *This,
1584         REFIID riid,
1585         void **ppvObject);
1586 
1587     ULONG (STDMETHODCALLTYPE *AddRef)(
1588         IMFMediaSession *This);
1589 
1590     ULONG (STDMETHODCALLTYPE *Release)(
1591         IMFMediaSession *This);
1592 
1593     /*** IMFMediaEventGenerator methods ***/
1594     HRESULT (STDMETHODCALLTYPE *GetEvent)(
1595         IMFMediaSession *This,
1596         DWORD dwFlags,
1597         IMFMediaEvent **ppEvent);
1598 
1599     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
1600         IMFMediaSession *This,
1601         IMFAsyncCallback *pCallback,
1602         IUnknown *punkState);
1603 
1604     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
1605         IMFMediaSession *This,
1606         IMFAsyncResult *pResult,
1607         IMFMediaEvent **ppEvent);
1608 
1609     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
1610         IMFMediaSession *This,
1611         MediaEventType met,
1612         REFGUID guidExtendedType,
1613         HRESULT hrStatus,
1614         const PROPVARIANT *pvValue);
1615 
1616     /*** IMFMediaSession methods ***/
1617     HRESULT (STDMETHODCALLTYPE *SetTopology)(
1618         IMFMediaSession *This,
1619         DWORD dwSetTopologyFlags,
1620         IMFTopology *pTopology);
1621 
1622     HRESULT (STDMETHODCALLTYPE *ClearTopologies)(
1623         IMFMediaSession *This);
1624 
1625     HRESULT (STDMETHODCALLTYPE *Start)(
1626         IMFMediaSession *This,
1627         const GUID *pguidTimeFormat,
1628         const PROPVARIANT *pvarStartPosition);
1629 
1630     HRESULT (STDMETHODCALLTYPE *Pause)(
1631         IMFMediaSession *This);
1632 
1633     HRESULT (STDMETHODCALLTYPE *Stop)(
1634         IMFMediaSession *This);
1635 
1636     HRESULT (STDMETHODCALLTYPE *Close)(
1637         IMFMediaSession *This);
1638 
1639     HRESULT (STDMETHODCALLTYPE *Shutdown)(
1640         IMFMediaSession *This);
1641 
1642     HRESULT (STDMETHODCALLTYPE *GetClock)(
1643         IMFMediaSession *This,
1644         IMFClock **ppClock);
1645 
1646     HRESULT (STDMETHODCALLTYPE *GetSessionCapabilities)(
1647         IMFMediaSession *This,
1648         DWORD *pdwCaps);
1649 
1650     HRESULT (STDMETHODCALLTYPE *GetFullTopology)(
1651         IMFMediaSession *This,
1652         DWORD dwGetFullTopologyFlags,
1653         TOPOID TopoId,
1654         IMFTopology **ppFullTopology);
1655 
1656     END_INTERFACE
1657 } IMFMediaSessionVtbl;
1658 
1659 interface IMFMediaSession {
1660     CONST_VTBL IMFMediaSessionVtbl* lpVtbl;
1661 };
1662 
1663 #ifdef COBJMACROS
1664 #ifndef WIDL_C_INLINE_WRAPPERS
1665 /*** IUnknown methods ***/
1666 #define IMFMediaSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1667 #define IMFMediaSession_AddRef(This) (This)->lpVtbl->AddRef(This)
1668 #define IMFMediaSession_Release(This) (This)->lpVtbl->Release(This)
1669 /*** IMFMediaEventGenerator methods ***/
1670 #define IMFMediaSession_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
1671 #define IMFMediaSession_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
1672 #define IMFMediaSession_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
1673 #define IMFMediaSession_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
1674 /*** IMFMediaSession methods ***/
1675 #define IMFMediaSession_SetTopology(This,dwSetTopologyFlags,pTopology) (This)->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology)
1676 #define IMFMediaSession_ClearTopologies(This) (This)->lpVtbl->ClearTopologies(This)
1677 #define IMFMediaSession_Start(This,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition)
1678 #define IMFMediaSession_Pause(This) (This)->lpVtbl->Pause(This)
1679 #define IMFMediaSession_Stop(This) (This)->lpVtbl->Stop(This)
1680 #define IMFMediaSession_Close(This) (This)->lpVtbl->Close(This)
1681 #define IMFMediaSession_Shutdown(This) (This)->lpVtbl->Shutdown(This)
1682 #define IMFMediaSession_GetClock(This,ppClock) (This)->lpVtbl->GetClock(This,ppClock)
1683 #define IMFMediaSession_GetSessionCapabilities(This,pdwCaps) (This)->lpVtbl->GetSessionCapabilities(This,pdwCaps)
1684 #define IMFMediaSession_GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology) (This)->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology)
1685 #else
1686 /*** IUnknown methods ***/
1687 static FORCEINLINE HRESULT IMFMediaSession_QueryInterface(IMFMediaSession* This,REFIID riid,void **ppvObject) {
1688     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1689 }
1690 static FORCEINLINE ULONG IMFMediaSession_AddRef(IMFMediaSession* This) {
1691     return This->lpVtbl->AddRef(This);
1692 }
1693 static FORCEINLINE ULONG IMFMediaSession_Release(IMFMediaSession* This) {
1694     return This->lpVtbl->Release(This);
1695 }
1696 /*** IMFMediaEventGenerator methods ***/
1697 static FORCEINLINE HRESULT IMFMediaSession_GetEvent(IMFMediaSession* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
1698     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
1699 }
1700 static FORCEINLINE HRESULT IMFMediaSession_BeginGetEvent(IMFMediaSession* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
1701     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
1702 }
1703 static FORCEINLINE HRESULT IMFMediaSession_EndGetEvent(IMFMediaSession* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
1704     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
1705 }
1706 static FORCEINLINE HRESULT IMFMediaSession_QueueEvent(IMFMediaSession* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
1707     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
1708 }
1709 /*** IMFMediaSession methods ***/
1710 static FORCEINLINE HRESULT IMFMediaSession_SetTopology(IMFMediaSession* This,DWORD dwSetTopologyFlags,IMFTopology *pTopology) {
1711     return This->lpVtbl->SetTopology(This,dwSetTopologyFlags,pTopology);
1712 }
1713 static FORCEINLINE HRESULT IMFMediaSession_ClearTopologies(IMFMediaSession* This) {
1714     return This->lpVtbl->ClearTopologies(This);
1715 }
1716 static FORCEINLINE HRESULT IMFMediaSession_Start(IMFMediaSession* This,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
1717     return This->lpVtbl->Start(This,pguidTimeFormat,pvarStartPosition);
1718 }
1719 static FORCEINLINE HRESULT IMFMediaSession_Pause(IMFMediaSession* This) {
1720     return This->lpVtbl->Pause(This);
1721 }
1722 static FORCEINLINE HRESULT IMFMediaSession_Stop(IMFMediaSession* This) {
1723     return This->lpVtbl->Stop(This);
1724 }
1725 static FORCEINLINE HRESULT IMFMediaSession_Close(IMFMediaSession* This) {
1726     return This->lpVtbl->Close(This);
1727 }
1728 static FORCEINLINE HRESULT IMFMediaSession_Shutdown(IMFMediaSession* This) {
1729     return This->lpVtbl->Shutdown(This);
1730 }
1731 static FORCEINLINE HRESULT IMFMediaSession_GetClock(IMFMediaSession* This,IMFClock **ppClock) {
1732     return This->lpVtbl->GetClock(This,ppClock);
1733 }
1734 static FORCEINLINE HRESULT IMFMediaSession_GetSessionCapabilities(IMFMediaSession* This,DWORD *pdwCaps) {
1735     return This->lpVtbl->GetSessionCapabilities(This,pdwCaps);
1736 }
1737 static FORCEINLINE HRESULT IMFMediaSession_GetFullTopology(IMFMediaSession* This,DWORD dwGetFullTopologyFlags,TOPOID TopoId,IMFTopology **ppFullTopology) {
1738     return This->lpVtbl->GetFullTopology(This,dwGetFullTopologyFlags,TopoId,ppFullTopology);
1739 }
1740 #endif
1741 #endif
1742 
1743 #endif
1744 
1745 
1746 #endif  /* __IMFMediaSession_INTERFACE_DEFINED__ */
1747 
1748 /*****************************************************************************
1749  * IMFMediaTypeHandler interface
1750  */
1751 #ifndef __IMFMediaTypeHandler_INTERFACE_DEFINED__
1752 #define __IMFMediaTypeHandler_INTERFACE_DEFINED__
1753 
1754 DEFINE_GUID(IID_IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5);
1755 #if defined(__cplusplus) && !defined(CINTERFACE)
1756 MIDL_INTERFACE("e93dcf6c-4b07-4e1e-8123-aa16ed6eadf5")
1757 IMFMediaTypeHandler : public IUnknown
1758 {
1759     virtual HRESULT STDMETHODCALLTYPE IsMediaTypeSupported(
1760         IMFMediaType *pMediaType,
1761         IMFMediaType **ppMediaType) = 0;
1762 
1763     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeCount(
1764         DWORD *pdwTypeCount) = 0;
1765 
1766     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeByIndex(
1767         DWORD dwIndex,
1768         IMFMediaType **ppType) = 0;
1769 
1770     virtual HRESULT STDMETHODCALLTYPE SetCurrentMediaType(
1771         IMFMediaType *pMediaType) = 0;
1772 
1773     virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(
1774         IMFMediaType **ppMediaType) = 0;
1775 
1776     virtual HRESULT STDMETHODCALLTYPE GetMajorType(
1777         GUID *pguidMajorType) = 0;
1778 
1779 };
1780 #ifdef __CRT_UUID_DECL
1781 __CRT_UUID_DECL(IMFMediaTypeHandler, 0xe93dcf6c, 0x4b07, 0x4e1e, 0x81,0x23, 0xaa,0x16,0xed,0x6e,0xad,0xf5)
1782 #endif
1783 #else
1784 typedef struct IMFMediaTypeHandlerVtbl {
1785     BEGIN_INTERFACE
1786 
1787     /*** IUnknown methods ***/
1788     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1789         IMFMediaTypeHandler *This,
1790         REFIID riid,
1791         void **ppvObject);
1792 
1793     ULONG (STDMETHODCALLTYPE *AddRef)(
1794         IMFMediaTypeHandler *This);
1795 
1796     ULONG (STDMETHODCALLTYPE *Release)(
1797         IMFMediaTypeHandler *This);
1798 
1799     /*** IMFMediaTypeHandler methods ***/
1800     HRESULT (STDMETHODCALLTYPE *IsMediaTypeSupported)(
1801         IMFMediaTypeHandler *This,
1802         IMFMediaType *pMediaType,
1803         IMFMediaType **ppMediaType);
1804 
1805     HRESULT (STDMETHODCALLTYPE *GetMediaTypeCount)(
1806         IMFMediaTypeHandler *This,
1807         DWORD *pdwTypeCount);
1808 
1809     HRESULT (STDMETHODCALLTYPE *GetMediaTypeByIndex)(
1810         IMFMediaTypeHandler *This,
1811         DWORD dwIndex,
1812         IMFMediaType **ppType);
1813 
1814     HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)(
1815         IMFMediaTypeHandler *This,
1816         IMFMediaType *pMediaType);
1817 
1818     HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)(
1819         IMFMediaTypeHandler *This,
1820         IMFMediaType **ppMediaType);
1821 
1822     HRESULT (STDMETHODCALLTYPE *GetMajorType)(
1823         IMFMediaTypeHandler *This,
1824         GUID *pguidMajorType);
1825 
1826     END_INTERFACE
1827 } IMFMediaTypeHandlerVtbl;
1828 
1829 interface IMFMediaTypeHandler {
1830     CONST_VTBL IMFMediaTypeHandlerVtbl* lpVtbl;
1831 };
1832 
1833 #ifdef COBJMACROS
1834 #ifndef WIDL_C_INLINE_WRAPPERS
1835 /*** IUnknown methods ***/
1836 #define IMFMediaTypeHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1837 #define IMFMediaTypeHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
1838 #define IMFMediaTypeHandler_Release(This) (This)->lpVtbl->Release(This)
1839 /*** IMFMediaTypeHandler methods ***/
1840 #define IMFMediaTypeHandler_IsMediaTypeSupported(This,pMediaType,ppMediaType) (This)->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType)
1841 #define IMFMediaTypeHandler_GetMediaTypeCount(This,pdwTypeCount) (This)->lpVtbl->GetMediaTypeCount(This,pdwTypeCount)
1842 #define IMFMediaTypeHandler_GetMediaTypeByIndex(This,dwIndex,ppType) (This)->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType)
1843 #define IMFMediaTypeHandler_SetCurrentMediaType(This,pMediaType) (This)->lpVtbl->SetCurrentMediaType(This,pMediaType)
1844 #define IMFMediaTypeHandler_GetCurrentMediaType(This,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,ppMediaType)
1845 #define IMFMediaTypeHandler_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
1846 #else
1847 /*** IUnknown methods ***/
1848 static FORCEINLINE HRESULT IMFMediaTypeHandler_QueryInterface(IMFMediaTypeHandler* This,REFIID riid,void **ppvObject) {
1849     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1850 }
1851 static FORCEINLINE ULONG IMFMediaTypeHandler_AddRef(IMFMediaTypeHandler* This) {
1852     return This->lpVtbl->AddRef(This);
1853 }
1854 static FORCEINLINE ULONG IMFMediaTypeHandler_Release(IMFMediaTypeHandler* This) {
1855     return This->lpVtbl->Release(This);
1856 }
1857 /*** IMFMediaTypeHandler methods ***/
1858 static FORCEINLINE HRESULT IMFMediaTypeHandler_IsMediaTypeSupported(IMFMediaTypeHandler* This,IMFMediaType *pMediaType,IMFMediaType **ppMediaType) {
1859     return This->lpVtbl->IsMediaTypeSupported(This,pMediaType,ppMediaType);
1860 }
1861 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMediaTypeCount(IMFMediaTypeHandler* This,DWORD *pdwTypeCount) {
1862     return This->lpVtbl->GetMediaTypeCount(This,pdwTypeCount);
1863 }
1864 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMediaTypeByIndex(IMFMediaTypeHandler* This,DWORD dwIndex,IMFMediaType **ppType) {
1865     return This->lpVtbl->GetMediaTypeByIndex(This,dwIndex,ppType);
1866 }
1867 static FORCEINLINE HRESULT IMFMediaTypeHandler_SetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType *pMediaType) {
1868     return This->lpVtbl->SetCurrentMediaType(This,pMediaType);
1869 }
1870 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetCurrentMediaType(IMFMediaTypeHandler* This,IMFMediaType **ppMediaType) {
1871     return This->lpVtbl->GetCurrentMediaType(This,ppMediaType);
1872 }
1873 static FORCEINLINE HRESULT IMFMediaTypeHandler_GetMajorType(IMFMediaTypeHandler* This,GUID *pguidMajorType) {
1874     return This->lpVtbl->GetMajorType(This,pguidMajorType);
1875 }
1876 #endif
1877 #endif
1878 
1879 #endif
1880 
1881 HRESULT STDMETHODCALLTYPE IMFMediaTypeHandler_RemoteGetCurrentMediaType_Proxy(
1882     IMFMediaTypeHandler* This,
1883     BYTE **ppbData,
1884     DWORD *pcbData);
1885 void __RPC_STUB IMFMediaTypeHandler_RemoteGetCurrentMediaType_Stub(
1886     IRpcStubBuffer* This,
1887     IRpcChannelBuffer* pRpcChannelBuffer,
1888     PRPC_MESSAGE pRpcMessage,
1889     DWORD* pdwStubPhase);
1890 HRESULT CALLBACK IMFMediaTypeHandler_GetCurrentMediaType_Proxy(
1891     IMFMediaTypeHandler* This,
1892     IMFMediaType **ppMediaType);
1893 HRESULT __RPC_STUB IMFMediaTypeHandler_GetCurrentMediaType_Stub(
1894     IMFMediaTypeHandler* This,
1895     BYTE **ppbData,
1896     DWORD *pcbData);
1897 
1898 #endif  /* __IMFMediaTypeHandler_INTERFACE_DEFINED__ */
1899 
1900 /*****************************************************************************
1901  * IMFStreamDescriptor interface
1902  */
1903 #ifndef __IMFStreamDescriptor_INTERFACE_DEFINED__
1904 #define __IMFStreamDescriptor_INTERFACE_DEFINED__
1905 
1906 DEFINE_GUID(IID_IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38);
1907 #if defined(__cplusplus) && !defined(CINTERFACE)
1908 MIDL_INTERFACE("56c03d9c-9dbb-45f5-ab4b-d80f47c05938")
1909 IMFStreamDescriptor : public IMFAttributes
1910 {
1911     virtual HRESULT STDMETHODCALLTYPE GetStreamIdentifier(
1912         DWORD *pdwStreamIdentifier) = 0;
1913 
1914     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeHandler(
1915         IMFMediaTypeHandler **ppMediaTypeHandler) = 0;
1916 
1917 };
1918 #ifdef __CRT_UUID_DECL
1919 __CRT_UUID_DECL(IMFStreamDescriptor, 0x56c03d9c, 0x9dbb, 0x45f5, 0xab,0x4b, 0xd8,0x0f,0x47,0xc0,0x59,0x38)
1920 #endif
1921 #else
1922 typedef struct IMFStreamDescriptorVtbl {
1923     BEGIN_INTERFACE
1924 
1925     /*** IUnknown methods ***/
1926     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1927         IMFStreamDescriptor *This,
1928         REFIID riid,
1929         void **ppvObject);
1930 
1931     ULONG (STDMETHODCALLTYPE *AddRef)(
1932         IMFStreamDescriptor *This);
1933 
1934     ULONG (STDMETHODCALLTYPE *Release)(
1935         IMFStreamDescriptor *This);
1936 
1937     /*** IMFAttributes methods ***/
1938     HRESULT (STDMETHODCALLTYPE *GetItem)(
1939         IMFStreamDescriptor *This,
1940         REFGUID guidKey,
1941         PROPVARIANT *pValue);
1942 
1943     HRESULT (STDMETHODCALLTYPE *GetItemType)(
1944         IMFStreamDescriptor *This,
1945         REFGUID guidKey,
1946         MF_ATTRIBUTE_TYPE *pType);
1947 
1948     HRESULT (STDMETHODCALLTYPE *CompareItem)(
1949         IMFStreamDescriptor *This,
1950         REFGUID guidKey,
1951         REFPROPVARIANT Value,
1952         WINBOOL *pbResult);
1953 
1954     HRESULT (STDMETHODCALLTYPE *Compare)(
1955         IMFStreamDescriptor *This,
1956         IMFAttributes *pTheirs,
1957         MF_ATTRIBUTES_MATCH_TYPE MatchType,
1958         WINBOOL *pbResult);
1959 
1960     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
1961         IMFStreamDescriptor *This,
1962         REFGUID guidKey,
1963         UINT32 *punValue);
1964 
1965     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
1966         IMFStreamDescriptor *This,
1967         REFGUID guidKey,
1968         UINT64 *punValue);
1969 
1970     HRESULT (STDMETHODCALLTYPE *GetDouble)(
1971         IMFStreamDescriptor *This,
1972         REFGUID guidKey,
1973         double *pfValue);
1974 
1975     HRESULT (STDMETHODCALLTYPE *GetGUID)(
1976         IMFStreamDescriptor *This,
1977         REFGUID guidKey,
1978         GUID *pguidValue);
1979 
1980     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
1981         IMFStreamDescriptor *This,
1982         REFGUID guidKey,
1983         UINT32 *pcchLength);
1984 
1985     HRESULT (STDMETHODCALLTYPE *GetString)(
1986         IMFStreamDescriptor *This,
1987         REFGUID guidKey,
1988         LPWSTR pwszValue,
1989         UINT32 cchBufSize,
1990         UINT32 *pcchLength);
1991 
1992     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
1993         IMFStreamDescriptor *This,
1994         REFGUID guidKey,
1995         LPWSTR *ppwszValue,
1996         UINT32 *pcchLength);
1997 
1998     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
1999         IMFStreamDescriptor *This,
2000         REFGUID guidKey,
2001         UINT32 *pcbBlobSize);
2002 
2003     HRESULT (STDMETHODCALLTYPE *GetBlob)(
2004         IMFStreamDescriptor *This,
2005         REFGUID guidKey,
2006         UINT8 *pBuf,
2007         UINT32 cbBufSize,
2008         UINT32 *pcbBlobSize);
2009 
2010     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2011         IMFStreamDescriptor *This,
2012         REFGUID guidKey,
2013         UINT8 **ppBuf,
2014         UINT32 *pcbSize);
2015 
2016     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2017         IMFStreamDescriptor *This,
2018         REFGUID guidKey,
2019         REFIID riid,
2020         LPVOID *ppv);
2021 
2022     HRESULT (STDMETHODCALLTYPE *SetItem)(
2023         IMFStreamDescriptor *This,
2024         REFGUID guidKey,
2025         REFPROPVARIANT Value);
2026 
2027     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2028         IMFStreamDescriptor *This,
2029         REFGUID guidKey);
2030 
2031     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2032         IMFStreamDescriptor *This);
2033 
2034     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2035         IMFStreamDescriptor *This,
2036         REFGUID guidKey,
2037         UINT32 unValue);
2038 
2039     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2040         IMFStreamDescriptor *This,
2041         REFGUID guidKey,
2042         UINT64 unValue);
2043 
2044     HRESULT (STDMETHODCALLTYPE *SetDouble)(
2045         IMFStreamDescriptor *This,
2046         REFGUID guidKey,
2047         double fValue);
2048 
2049     HRESULT (STDMETHODCALLTYPE *SetGUID)(
2050         IMFStreamDescriptor *This,
2051         REFGUID guidKey,
2052         REFGUID guidValue);
2053 
2054     HRESULT (STDMETHODCALLTYPE *SetString)(
2055         IMFStreamDescriptor *This,
2056         REFGUID guidKey,
2057         LPCWSTR wszValue);
2058 
2059     HRESULT (STDMETHODCALLTYPE *SetBlob)(
2060         IMFStreamDescriptor *This,
2061         REFGUID guidKey,
2062         const UINT8 *pBuf,
2063         UINT32 cbBufSize);
2064 
2065     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2066         IMFStreamDescriptor *This,
2067         REFGUID guidKey,
2068         IUnknown *pUnknown);
2069 
2070     HRESULT (STDMETHODCALLTYPE *LockStore)(
2071         IMFStreamDescriptor *This);
2072 
2073     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2074         IMFStreamDescriptor *This);
2075 
2076     HRESULT (STDMETHODCALLTYPE *GetCount)(
2077         IMFStreamDescriptor *This,
2078         UINT32 *pcItems);
2079 
2080     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2081         IMFStreamDescriptor *This,
2082         UINT32 unIndex,
2083         GUID *pguidKey,
2084         PROPVARIANT *pValue);
2085 
2086     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2087         IMFStreamDescriptor *This,
2088         IMFAttributes *pDest);
2089 
2090     /*** IMFStreamDescriptor methods ***/
2091     HRESULT (STDMETHODCALLTYPE *GetStreamIdentifier)(
2092         IMFStreamDescriptor *This,
2093         DWORD *pdwStreamIdentifier);
2094 
2095     HRESULT (STDMETHODCALLTYPE *GetMediaTypeHandler)(
2096         IMFStreamDescriptor *This,
2097         IMFMediaTypeHandler **ppMediaTypeHandler);
2098 
2099     END_INTERFACE
2100 } IMFStreamDescriptorVtbl;
2101 
2102 interface IMFStreamDescriptor {
2103     CONST_VTBL IMFStreamDescriptorVtbl* lpVtbl;
2104 };
2105 
2106 #ifdef COBJMACROS
2107 #ifndef WIDL_C_INLINE_WRAPPERS
2108 /*** IUnknown methods ***/
2109 #define IMFStreamDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2110 #define IMFStreamDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
2111 #define IMFStreamDescriptor_Release(This) (This)->lpVtbl->Release(This)
2112 /*** IMFAttributes methods ***/
2113 #define IMFStreamDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2114 #define IMFStreamDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2115 #define IMFStreamDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2116 #define IMFStreamDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2117 #define IMFStreamDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2118 #define IMFStreamDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2119 #define IMFStreamDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2120 #define IMFStreamDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2121 #define IMFStreamDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2122 #define IMFStreamDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2123 #define IMFStreamDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2124 #define IMFStreamDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2125 #define IMFStreamDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2126 #define IMFStreamDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2127 #define IMFStreamDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2128 #define IMFStreamDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2129 #define IMFStreamDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2130 #define IMFStreamDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2131 #define IMFStreamDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2132 #define IMFStreamDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2133 #define IMFStreamDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2134 #define IMFStreamDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2135 #define IMFStreamDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2136 #define IMFStreamDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2137 #define IMFStreamDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2138 #define IMFStreamDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
2139 #define IMFStreamDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2140 #define IMFStreamDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2141 #define IMFStreamDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2142 #define IMFStreamDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2143 /*** IMFStreamDescriptor methods ***/
2144 #define IMFStreamDescriptor_GetStreamIdentifier(This,pdwStreamIdentifier) (This)->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier)
2145 #define IMFStreamDescriptor_GetMediaTypeHandler(This,ppMediaTypeHandler) (This)->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler)
2146 #else
2147 /*** IUnknown methods ***/
2148 static FORCEINLINE HRESULT IMFStreamDescriptor_QueryInterface(IMFStreamDescriptor* This,REFIID riid,void **ppvObject) {
2149     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2150 }
2151 static FORCEINLINE ULONG IMFStreamDescriptor_AddRef(IMFStreamDescriptor* This) {
2152     return This->lpVtbl->AddRef(This);
2153 }
2154 static FORCEINLINE ULONG IMFStreamDescriptor_Release(IMFStreamDescriptor* This) {
2155     return This->lpVtbl->Release(This);
2156 }
2157 /*** IMFAttributes methods ***/
2158 static FORCEINLINE HRESULT IMFStreamDescriptor_GetItem(IMFStreamDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
2159     return This->lpVtbl->GetItem(This,guidKey,pValue);
2160 }
2161 static FORCEINLINE HRESULT IMFStreamDescriptor_GetItemType(IMFStreamDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2162     return This->lpVtbl->GetItemType(This,guidKey,pType);
2163 }
2164 static FORCEINLINE HRESULT IMFStreamDescriptor_CompareItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2165     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2166 }
2167 static FORCEINLINE HRESULT IMFStreamDescriptor_Compare(IMFStreamDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2168     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2169 }
2170 static FORCEINLINE HRESULT IMFStreamDescriptor_GetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
2171     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2172 }
2173 static FORCEINLINE HRESULT IMFStreamDescriptor_GetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
2174     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2175 }
2176 static FORCEINLINE HRESULT IMFStreamDescriptor_GetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double *pfValue) {
2177     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2178 }
2179 static FORCEINLINE HRESULT IMFStreamDescriptor_GetGUID(IMFStreamDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
2180     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2181 }
2182 static FORCEINLINE HRESULT IMFStreamDescriptor_GetStringLength(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
2183     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2184 }
2185 static FORCEINLINE HRESULT IMFStreamDescriptor_GetString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2186     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2187 }
2188 static FORCEINLINE HRESULT IMFStreamDescriptor_GetAllocatedString(IMFStreamDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2189     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2190 }
2191 static FORCEINLINE HRESULT IMFStreamDescriptor_GetBlobSize(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2192     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2193 }
2194 static FORCEINLINE HRESULT IMFStreamDescriptor_GetBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2195     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2196 }
2197 static FORCEINLINE HRESULT IMFStreamDescriptor_GetAllocatedBlob(IMFStreamDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2198     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2199 }
2200 static FORCEINLINE HRESULT IMFStreamDescriptor_GetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2201     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2202 }
2203 static FORCEINLINE HRESULT IMFStreamDescriptor_SetItem(IMFStreamDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
2204     return This->lpVtbl->SetItem(This,guidKey,Value);
2205 }
2206 static FORCEINLINE HRESULT IMFStreamDescriptor_DeleteItem(IMFStreamDescriptor* This,REFGUID guidKey) {
2207     return This->lpVtbl->DeleteItem(This,guidKey);
2208 }
2209 static FORCEINLINE HRESULT IMFStreamDescriptor_DeleteAllItems(IMFStreamDescriptor* This) {
2210     return This->lpVtbl->DeleteAllItems(This);
2211 }
2212 static FORCEINLINE HRESULT IMFStreamDescriptor_SetUINT32(IMFStreamDescriptor* This,REFGUID guidKey,UINT32 unValue) {
2213     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2214 }
2215 static FORCEINLINE HRESULT IMFStreamDescriptor_SetUINT64(IMFStreamDescriptor* This,REFGUID guidKey,UINT64 unValue) {
2216     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2217 }
2218 static FORCEINLINE HRESULT IMFStreamDescriptor_SetDouble(IMFStreamDescriptor* This,REFGUID guidKey,double fValue) {
2219     return This->lpVtbl->SetDouble(This,guidKey,fValue);
2220 }
2221 static FORCEINLINE HRESULT IMFStreamDescriptor_SetGUID(IMFStreamDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
2222     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2223 }
2224 static FORCEINLINE HRESULT IMFStreamDescriptor_SetString(IMFStreamDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
2225     return This->lpVtbl->SetString(This,guidKey,wszValue);
2226 }
2227 static FORCEINLINE HRESULT IMFStreamDescriptor_SetBlob(IMFStreamDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2228     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2229 }
2230 static FORCEINLINE HRESULT IMFStreamDescriptor_SetUnknown(IMFStreamDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
2231     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2232 }
2233 static FORCEINLINE HRESULT IMFStreamDescriptor_LockStore(IMFStreamDescriptor* This) {
2234     return This->lpVtbl->LockStore(This);
2235 }
2236 static FORCEINLINE HRESULT IMFStreamDescriptor_UnlockStore(IMFStreamDescriptor* This) {
2237     return This->lpVtbl->UnlockStore(This);
2238 }
2239 static FORCEINLINE HRESULT IMFStreamDescriptor_GetCount(IMFStreamDescriptor* This,UINT32 *pcItems) {
2240     return This->lpVtbl->GetCount(This,pcItems);
2241 }
2242 static FORCEINLINE HRESULT IMFStreamDescriptor_GetItemByIndex(IMFStreamDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2243     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2244 }
2245 static FORCEINLINE HRESULT IMFStreamDescriptor_CopyAllItems(IMFStreamDescriptor* This,IMFAttributes *pDest) {
2246     return This->lpVtbl->CopyAllItems(This,pDest);
2247 }
2248 /*** IMFStreamDescriptor methods ***/
2249 static FORCEINLINE HRESULT IMFStreamDescriptor_GetStreamIdentifier(IMFStreamDescriptor* This,DWORD *pdwStreamIdentifier) {
2250     return This->lpVtbl->GetStreamIdentifier(This,pdwStreamIdentifier);
2251 }
2252 static FORCEINLINE HRESULT IMFStreamDescriptor_GetMediaTypeHandler(IMFStreamDescriptor* This,IMFMediaTypeHandler **ppMediaTypeHandler) {
2253     return This->lpVtbl->GetMediaTypeHandler(This,ppMediaTypeHandler);
2254 }
2255 #endif
2256 #endif
2257 
2258 #endif
2259 
2260 
2261 #endif  /* __IMFStreamDescriptor_INTERFACE_DEFINED__ */
2262 
2263 /*****************************************************************************
2264  * IMFPresentationDescriptor interface
2265  */
2266 #ifndef __IMFPresentationDescriptor_INTERFACE_DEFINED__
2267 #define __IMFPresentationDescriptor_INTERFACE_DEFINED__
2268 
2269 DEFINE_GUID(IID_IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36);
2270 #if defined(__cplusplus) && !defined(CINTERFACE)
2271 MIDL_INTERFACE("03cb2711-24d7-4db6-a17f-f3a7a479a536")
2272 IMFPresentationDescriptor : public IMFAttributes
2273 {
2274     virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorCount(
2275         DWORD *pdwDescriptorCount) = 0;
2276 
2277     virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptorByIndex(
2278         DWORD dwIndex,
2279         WINBOOL *pfSelected,
2280         IMFStreamDescriptor **ppDescriptor) = 0;
2281 
2282     virtual HRESULT STDMETHODCALLTYPE SelectStream(
2283         DWORD dwDescriptorIndex) = 0;
2284 
2285     virtual HRESULT STDMETHODCALLTYPE DeselectStream(
2286         DWORD dwDescriptorIndex) = 0;
2287 
2288     virtual HRESULT STDMETHODCALLTYPE Clone(
2289         IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
2290 
2291 };
2292 #ifdef __CRT_UUID_DECL
2293 __CRT_UUID_DECL(IMFPresentationDescriptor, 0x03cb2711, 0x24d7, 0x4db6, 0xa1,0x7f, 0xf3,0xa7,0xa4,0x79,0xa5,0x36)
2294 #endif
2295 #else
2296 typedef struct IMFPresentationDescriptorVtbl {
2297     BEGIN_INTERFACE
2298 
2299     /*** IUnknown methods ***/
2300     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2301         IMFPresentationDescriptor *This,
2302         REFIID riid,
2303         void **ppvObject);
2304 
2305     ULONG (STDMETHODCALLTYPE *AddRef)(
2306         IMFPresentationDescriptor *This);
2307 
2308     ULONG (STDMETHODCALLTYPE *Release)(
2309         IMFPresentationDescriptor *This);
2310 
2311     /*** IMFAttributes methods ***/
2312     HRESULT (STDMETHODCALLTYPE *GetItem)(
2313         IMFPresentationDescriptor *This,
2314         REFGUID guidKey,
2315         PROPVARIANT *pValue);
2316 
2317     HRESULT (STDMETHODCALLTYPE *GetItemType)(
2318         IMFPresentationDescriptor *This,
2319         REFGUID guidKey,
2320         MF_ATTRIBUTE_TYPE *pType);
2321 
2322     HRESULT (STDMETHODCALLTYPE *CompareItem)(
2323         IMFPresentationDescriptor *This,
2324         REFGUID guidKey,
2325         REFPROPVARIANT Value,
2326         WINBOOL *pbResult);
2327 
2328     HRESULT (STDMETHODCALLTYPE *Compare)(
2329         IMFPresentationDescriptor *This,
2330         IMFAttributes *pTheirs,
2331         MF_ATTRIBUTES_MATCH_TYPE MatchType,
2332         WINBOOL *pbResult);
2333 
2334     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
2335         IMFPresentationDescriptor *This,
2336         REFGUID guidKey,
2337         UINT32 *punValue);
2338 
2339     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
2340         IMFPresentationDescriptor *This,
2341         REFGUID guidKey,
2342         UINT64 *punValue);
2343 
2344     HRESULT (STDMETHODCALLTYPE *GetDouble)(
2345         IMFPresentationDescriptor *This,
2346         REFGUID guidKey,
2347         double *pfValue);
2348 
2349     HRESULT (STDMETHODCALLTYPE *GetGUID)(
2350         IMFPresentationDescriptor *This,
2351         REFGUID guidKey,
2352         GUID *pguidValue);
2353 
2354     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
2355         IMFPresentationDescriptor *This,
2356         REFGUID guidKey,
2357         UINT32 *pcchLength);
2358 
2359     HRESULT (STDMETHODCALLTYPE *GetString)(
2360         IMFPresentationDescriptor *This,
2361         REFGUID guidKey,
2362         LPWSTR pwszValue,
2363         UINT32 cchBufSize,
2364         UINT32 *pcchLength);
2365 
2366     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
2367         IMFPresentationDescriptor *This,
2368         REFGUID guidKey,
2369         LPWSTR *ppwszValue,
2370         UINT32 *pcchLength);
2371 
2372     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
2373         IMFPresentationDescriptor *This,
2374         REFGUID guidKey,
2375         UINT32 *pcbBlobSize);
2376 
2377     HRESULT (STDMETHODCALLTYPE *GetBlob)(
2378         IMFPresentationDescriptor *This,
2379         REFGUID guidKey,
2380         UINT8 *pBuf,
2381         UINT32 cbBufSize,
2382         UINT32 *pcbBlobSize);
2383 
2384     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
2385         IMFPresentationDescriptor *This,
2386         REFGUID guidKey,
2387         UINT8 **ppBuf,
2388         UINT32 *pcbSize);
2389 
2390     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
2391         IMFPresentationDescriptor *This,
2392         REFGUID guidKey,
2393         REFIID riid,
2394         LPVOID *ppv);
2395 
2396     HRESULT (STDMETHODCALLTYPE *SetItem)(
2397         IMFPresentationDescriptor *This,
2398         REFGUID guidKey,
2399         REFPROPVARIANT Value);
2400 
2401     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
2402         IMFPresentationDescriptor *This,
2403         REFGUID guidKey);
2404 
2405     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
2406         IMFPresentationDescriptor *This);
2407 
2408     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
2409         IMFPresentationDescriptor *This,
2410         REFGUID guidKey,
2411         UINT32 unValue);
2412 
2413     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
2414         IMFPresentationDescriptor *This,
2415         REFGUID guidKey,
2416         UINT64 unValue);
2417 
2418     HRESULT (STDMETHODCALLTYPE *SetDouble)(
2419         IMFPresentationDescriptor *This,
2420         REFGUID guidKey,
2421         double fValue);
2422 
2423     HRESULT (STDMETHODCALLTYPE *SetGUID)(
2424         IMFPresentationDescriptor *This,
2425         REFGUID guidKey,
2426         REFGUID guidValue);
2427 
2428     HRESULT (STDMETHODCALLTYPE *SetString)(
2429         IMFPresentationDescriptor *This,
2430         REFGUID guidKey,
2431         LPCWSTR wszValue);
2432 
2433     HRESULT (STDMETHODCALLTYPE *SetBlob)(
2434         IMFPresentationDescriptor *This,
2435         REFGUID guidKey,
2436         const UINT8 *pBuf,
2437         UINT32 cbBufSize);
2438 
2439     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
2440         IMFPresentationDescriptor *This,
2441         REFGUID guidKey,
2442         IUnknown *pUnknown);
2443 
2444     HRESULT (STDMETHODCALLTYPE *LockStore)(
2445         IMFPresentationDescriptor *This);
2446 
2447     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
2448         IMFPresentationDescriptor *This);
2449 
2450     HRESULT (STDMETHODCALLTYPE *GetCount)(
2451         IMFPresentationDescriptor *This,
2452         UINT32 *pcItems);
2453 
2454     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
2455         IMFPresentationDescriptor *This,
2456         UINT32 unIndex,
2457         GUID *pguidKey,
2458         PROPVARIANT *pValue);
2459 
2460     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
2461         IMFPresentationDescriptor *This,
2462         IMFAttributes *pDest);
2463 
2464     /*** IMFPresentationDescriptor methods ***/
2465     HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorCount)(
2466         IMFPresentationDescriptor *This,
2467         DWORD *pdwDescriptorCount);
2468 
2469     HRESULT (STDMETHODCALLTYPE *GetStreamDescriptorByIndex)(
2470         IMFPresentationDescriptor *This,
2471         DWORD dwIndex,
2472         WINBOOL *pfSelected,
2473         IMFStreamDescriptor **ppDescriptor);
2474 
2475     HRESULT (STDMETHODCALLTYPE *SelectStream)(
2476         IMFPresentationDescriptor *This,
2477         DWORD dwDescriptorIndex);
2478 
2479     HRESULT (STDMETHODCALLTYPE *DeselectStream)(
2480         IMFPresentationDescriptor *This,
2481         DWORD dwDescriptorIndex);
2482 
2483     HRESULT (STDMETHODCALLTYPE *Clone)(
2484         IMFPresentationDescriptor *This,
2485         IMFPresentationDescriptor **ppPresentationDescriptor);
2486 
2487     END_INTERFACE
2488 } IMFPresentationDescriptorVtbl;
2489 
2490 interface IMFPresentationDescriptor {
2491     CONST_VTBL IMFPresentationDescriptorVtbl* lpVtbl;
2492 };
2493 
2494 #ifdef COBJMACROS
2495 #ifndef WIDL_C_INLINE_WRAPPERS
2496 /*** IUnknown methods ***/
2497 #define IMFPresentationDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2498 #define IMFPresentationDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
2499 #define IMFPresentationDescriptor_Release(This) (This)->lpVtbl->Release(This)
2500 /*** IMFAttributes methods ***/
2501 #define IMFPresentationDescriptor_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
2502 #define IMFPresentationDescriptor_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
2503 #define IMFPresentationDescriptor_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
2504 #define IMFPresentationDescriptor_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
2505 #define IMFPresentationDescriptor_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
2506 #define IMFPresentationDescriptor_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
2507 #define IMFPresentationDescriptor_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
2508 #define IMFPresentationDescriptor_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
2509 #define IMFPresentationDescriptor_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
2510 #define IMFPresentationDescriptor_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
2511 #define IMFPresentationDescriptor_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
2512 #define IMFPresentationDescriptor_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
2513 #define IMFPresentationDescriptor_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
2514 #define IMFPresentationDescriptor_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
2515 #define IMFPresentationDescriptor_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
2516 #define IMFPresentationDescriptor_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
2517 #define IMFPresentationDescriptor_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
2518 #define IMFPresentationDescriptor_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
2519 #define IMFPresentationDescriptor_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
2520 #define IMFPresentationDescriptor_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
2521 #define IMFPresentationDescriptor_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
2522 #define IMFPresentationDescriptor_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
2523 #define IMFPresentationDescriptor_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
2524 #define IMFPresentationDescriptor_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
2525 #define IMFPresentationDescriptor_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
2526 #define IMFPresentationDescriptor_LockStore(This) (This)->lpVtbl->LockStore(This)
2527 #define IMFPresentationDescriptor_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
2528 #define IMFPresentationDescriptor_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
2529 #define IMFPresentationDescriptor_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
2530 #define IMFPresentationDescriptor_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
2531 /*** IMFPresentationDescriptor methods ***/
2532 #define IMFPresentationDescriptor_GetStreamDescriptorCount(This,pdwDescriptorCount) (This)->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount)
2533 #define IMFPresentationDescriptor_GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor) (This)->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor)
2534 #define IMFPresentationDescriptor_SelectStream(This,dwDescriptorIndex) (This)->lpVtbl->SelectStream(This,dwDescriptorIndex)
2535 #define IMFPresentationDescriptor_DeselectStream(This,dwDescriptorIndex) (This)->lpVtbl->DeselectStream(This,dwDescriptorIndex)
2536 #define IMFPresentationDescriptor_Clone(This,ppPresentationDescriptor) (This)->lpVtbl->Clone(This,ppPresentationDescriptor)
2537 #else
2538 /*** IUnknown methods ***/
2539 static FORCEINLINE HRESULT IMFPresentationDescriptor_QueryInterface(IMFPresentationDescriptor* This,REFIID riid,void **ppvObject) {
2540     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2541 }
2542 static FORCEINLINE ULONG IMFPresentationDescriptor_AddRef(IMFPresentationDescriptor* This) {
2543     return This->lpVtbl->AddRef(This);
2544 }
2545 static FORCEINLINE ULONG IMFPresentationDescriptor_Release(IMFPresentationDescriptor* This) {
2546     return This->lpVtbl->Release(This);
2547 }
2548 /*** IMFAttributes methods ***/
2549 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItem(IMFPresentationDescriptor* This,REFGUID guidKey,PROPVARIANT *pValue) {
2550     return This->lpVtbl->GetItem(This,guidKey,pValue);
2551 }
2552 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItemType(IMFPresentationDescriptor* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2553     return This->lpVtbl->GetItemType(This,guidKey,pType);
2554 }
2555 static FORCEINLINE HRESULT IMFPresentationDescriptor_CompareItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2556     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2557 }
2558 static FORCEINLINE HRESULT IMFPresentationDescriptor_Compare(IMFPresentationDescriptor* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
2559     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
2560 }
2561 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *punValue) {
2562     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2563 }
2564 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 *punValue) {
2565     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2566 }
2567 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double *pfValue) {
2568     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2569 }
2570 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,GUID *pguidValue) {
2571     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2572 }
2573 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStringLength(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcchLength) {
2574     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2575 }
2576 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
2577     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
2578 }
2579 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetAllocatedString(IMFPresentationDescriptor* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2580     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2581 }
2582 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetBlobSize(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2583     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2584 }
2585 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
2586     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
2587 }
2588 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetAllocatedBlob(IMFPresentationDescriptor* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2589     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2590 }
2591 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2592     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2593 }
2594 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetItem(IMFPresentationDescriptor* This,REFGUID guidKey,REFPROPVARIANT Value) {
2595     return This->lpVtbl->SetItem(This,guidKey,Value);
2596 }
2597 static FORCEINLINE HRESULT IMFPresentationDescriptor_DeleteItem(IMFPresentationDescriptor* This,REFGUID guidKey) {
2598     return This->lpVtbl->DeleteItem(This,guidKey);
2599 }
2600 static FORCEINLINE HRESULT IMFPresentationDescriptor_DeleteAllItems(IMFPresentationDescriptor* This) {
2601     return This->lpVtbl->DeleteAllItems(This);
2602 }
2603 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUINT32(IMFPresentationDescriptor* This,REFGUID guidKey,UINT32 unValue) {
2604     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2605 }
2606 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUINT64(IMFPresentationDescriptor* This,REFGUID guidKey,UINT64 unValue) {
2607     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2608 }
2609 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetDouble(IMFPresentationDescriptor* This,REFGUID guidKey,double fValue) {
2610     return This->lpVtbl->SetDouble(This,guidKey,fValue);
2611 }
2612 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetGUID(IMFPresentationDescriptor* This,REFGUID guidKey,REFGUID guidValue) {
2613     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2614 }
2615 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetString(IMFPresentationDescriptor* This,REFGUID guidKey,LPCWSTR wszValue) {
2616     return This->lpVtbl->SetString(This,guidKey,wszValue);
2617 }
2618 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetBlob(IMFPresentationDescriptor* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2619     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2620 }
2621 static FORCEINLINE HRESULT IMFPresentationDescriptor_SetUnknown(IMFPresentationDescriptor* This,REFGUID guidKey,IUnknown *pUnknown) {
2622     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2623 }
2624 static FORCEINLINE HRESULT IMFPresentationDescriptor_LockStore(IMFPresentationDescriptor* This) {
2625     return This->lpVtbl->LockStore(This);
2626 }
2627 static FORCEINLINE HRESULT IMFPresentationDescriptor_UnlockStore(IMFPresentationDescriptor* This) {
2628     return This->lpVtbl->UnlockStore(This);
2629 }
2630 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetCount(IMFPresentationDescriptor* This,UINT32 *pcItems) {
2631     return This->lpVtbl->GetCount(This,pcItems);
2632 }
2633 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetItemByIndex(IMFPresentationDescriptor* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2634     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2635 }
2636 static FORCEINLINE HRESULT IMFPresentationDescriptor_CopyAllItems(IMFPresentationDescriptor* This,IMFAttributes *pDest) {
2637     return This->lpVtbl->CopyAllItems(This,pDest);
2638 }
2639 /*** IMFPresentationDescriptor methods ***/
2640 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStreamDescriptorCount(IMFPresentationDescriptor* This,DWORD *pdwDescriptorCount) {
2641     return This->lpVtbl->GetStreamDescriptorCount(This,pdwDescriptorCount);
2642 }
2643 static FORCEINLINE HRESULT IMFPresentationDescriptor_GetStreamDescriptorByIndex(IMFPresentationDescriptor* This,DWORD dwIndex,WINBOOL *pfSelected,IMFStreamDescriptor **ppDescriptor) {
2644     return This->lpVtbl->GetStreamDescriptorByIndex(This,dwIndex,pfSelected,ppDescriptor);
2645 }
2646 static FORCEINLINE HRESULT IMFPresentationDescriptor_SelectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
2647     return This->lpVtbl->SelectStream(This,dwDescriptorIndex);
2648 }
2649 static FORCEINLINE HRESULT IMFPresentationDescriptor_DeselectStream(IMFPresentationDescriptor* This,DWORD dwDescriptorIndex) {
2650     return This->lpVtbl->DeselectStream(This,dwDescriptorIndex);
2651 }
2652 static FORCEINLINE HRESULT IMFPresentationDescriptor_Clone(IMFPresentationDescriptor* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
2653     return This->lpVtbl->Clone(This,ppPresentationDescriptor);
2654 }
2655 #endif
2656 #endif
2657 
2658 #endif
2659 
2660 
2661 #endif  /* __IMFPresentationDescriptor_INTERFACE_DEFINED__ */
2662 
2663 /*****************************************************************************
2664  * IMFMediaSource interface
2665  */
2666 #ifndef __IMFMediaSource_INTERFACE_DEFINED__
2667 #define __IMFMediaSource_INTERFACE_DEFINED__
2668 
2669 DEFINE_GUID(IID_IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66);
2670 #if defined(__cplusplus) && !defined(CINTERFACE)
2671 MIDL_INTERFACE("279a808d-aec7-40c8-9c6b-a6b492c78a66")
2672 IMFMediaSource : public IMFMediaEventGenerator
2673 {
2674     virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
2675         DWORD *pdwCharacteristics) = 0;
2676 
2677     virtual HRESULT STDMETHODCALLTYPE CreatePresentationDescriptor(
2678         IMFPresentationDescriptor **ppPresentationDescriptor) = 0;
2679 
2680     virtual HRESULT STDMETHODCALLTYPE Start(
2681         IMFPresentationDescriptor *pPresentationDescriptor,
2682         const GUID *pguidTimeFormat,
2683         const PROPVARIANT *pvarStartPosition) = 0;
2684 
2685     virtual HRESULT STDMETHODCALLTYPE Stop(
2686         ) = 0;
2687 
2688     virtual HRESULT STDMETHODCALLTYPE Pause(
2689         ) = 0;
2690 
2691     virtual HRESULT STDMETHODCALLTYPE Shutdown(
2692         ) = 0;
2693 
2694 };
2695 #ifdef __CRT_UUID_DECL
2696 __CRT_UUID_DECL(IMFMediaSource, 0x279a808d, 0xaec7, 0x40c8, 0x9c,0x6b, 0xa6,0xb4,0x92,0xc7,0x8a,0x66)
2697 #endif
2698 #else
2699 typedef struct IMFMediaSourceVtbl {
2700     BEGIN_INTERFACE
2701 
2702     /*** IUnknown methods ***/
2703     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2704         IMFMediaSource *This,
2705         REFIID riid,
2706         void **ppvObject);
2707 
2708     ULONG (STDMETHODCALLTYPE *AddRef)(
2709         IMFMediaSource *This);
2710 
2711     ULONG (STDMETHODCALLTYPE *Release)(
2712         IMFMediaSource *This);
2713 
2714     /*** IMFMediaEventGenerator methods ***/
2715     HRESULT (STDMETHODCALLTYPE *GetEvent)(
2716         IMFMediaSource *This,
2717         DWORD dwFlags,
2718         IMFMediaEvent **ppEvent);
2719 
2720     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
2721         IMFMediaSource *This,
2722         IMFAsyncCallback *pCallback,
2723         IUnknown *punkState);
2724 
2725     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
2726         IMFMediaSource *This,
2727         IMFAsyncResult *pResult,
2728         IMFMediaEvent **ppEvent);
2729 
2730     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
2731         IMFMediaSource *This,
2732         MediaEventType met,
2733         REFGUID guidExtendedType,
2734         HRESULT hrStatus,
2735         const PROPVARIANT *pvValue);
2736 
2737     /*** IMFMediaSource methods ***/
2738     HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
2739         IMFMediaSource *This,
2740         DWORD *pdwCharacteristics);
2741 
2742     HRESULT (STDMETHODCALLTYPE *CreatePresentationDescriptor)(
2743         IMFMediaSource *This,
2744         IMFPresentationDescriptor **ppPresentationDescriptor);
2745 
2746     HRESULT (STDMETHODCALLTYPE *Start)(
2747         IMFMediaSource *This,
2748         IMFPresentationDescriptor *pPresentationDescriptor,
2749         const GUID *pguidTimeFormat,
2750         const PROPVARIANT *pvarStartPosition);
2751 
2752     HRESULT (STDMETHODCALLTYPE *Stop)(
2753         IMFMediaSource *This);
2754 
2755     HRESULT (STDMETHODCALLTYPE *Pause)(
2756         IMFMediaSource *This);
2757 
2758     HRESULT (STDMETHODCALLTYPE *Shutdown)(
2759         IMFMediaSource *This);
2760 
2761     END_INTERFACE
2762 } IMFMediaSourceVtbl;
2763 
2764 interface IMFMediaSource {
2765     CONST_VTBL IMFMediaSourceVtbl* lpVtbl;
2766 };
2767 
2768 #ifdef COBJMACROS
2769 #ifndef WIDL_C_INLINE_WRAPPERS
2770 /*** IUnknown methods ***/
2771 #define IMFMediaSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2772 #define IMFMediaSource_AddRef(This) (This)->lpVtbl->AddRef(This)
2773 #define IMFMediaSource_Release(This) (This)->lpVtbl->Release(This)
2774 /*** IMFMediaEventGenerator methods ***/
2775 #define IMFMediaSource_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
2776 #define IMFMediaSource_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
2777 #define IMFMediaSource_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
2778 #define IMFMediaSource_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
2779 /*** IMFMediaSource methods ***/
2780 #define IMFMediaSource_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
2781 #define IMFMediaSource_CreatePresentationDescriptor(This,ppPresentationDescriptor) (This)->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor)
2782 #define IMFMediaSource_Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition)
2783 #define IMFMediaSource_Stop(This) (This)->lpVtbl->Stop(This)
2784 #define IMFMediaSource_Pause(This) (This)->lpVtbl->Pause(This)
2785 #define IMFMediaSource_Shutdown(This) (This)->lpVtbl->Shutdown(This)
2786 #else
2787 /*** IUnknown methods ***/
2788 static FORCEINLINE HRESULT IMFMediaSource_QueryInterface(IMFMediaSource* This,REFIID riid,void **ppvObject) {
2789     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2790 }
2791 static FORCEINLINE ULONG IMFMediaSource_AddRef(IMFMediaSource* This) {
2792     return This->lpVtbl->AddRef(This);
2793 }
2794 static FORCEINLINE ULONG IMFMediaSource_Release(IMFMediaSource* This) {
2795     return This->lpVtbl->Release(This);
2796 }
2797 /*** IMFMediaEventGenerator methods ***/
2798 static FORCEINLINE HRESULT IMFMediaSource_GetEvent(IMFMediaSource* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
2799     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
2800 }
2801 static FORCEINLINE HRESULT IMFMediaSource_BeginGetEvent(IMFMediaSource* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
2802     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
2803 }
2804 static FORCEINLINE HRESULT IMFMediaSource_EndGetEvent(IMFMediaSource* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
2805     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
2806 }
2807 static FORCEINLINE HRESULT IMFMediaSource_QueueEvent(IMFMediaSource* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
2808     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
2809 }
2810 /*** IMFMediaSource methods ***/
2811 static FORCEINLINE HRESULT IMFMediaSource_GetCharacteristics(IMFMediaSource* This,DWORD *pdwCharacteristics) {
2812     return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
2813 }
2814 static FORCEINLINE HRESULT IMFMediaSource_CreatePresentationDescriptor(IMFMediaSource* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
2815     return This->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor);
2816 }
2817 static FORCEINLINE HRESULT IMFMediaSource_Start(IMFMediaSource* This,IMFPresentationDescriptor *pPresentationDescriptor,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
2818     return This->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition);
2819 }
2820 static FORCEINLINE HRESULT IMFMediaSource_Stop(IMFMediaSource* This) {
2821     return This->lpVtbl->Stop(This);
2822 }
2823 static FORCEINLINE HRESULT IMFMediaSource_Pause(IMFMediaSource* This) {
2824     return This->lpVtbl->Pause(This);
2825 }
2826 static FORCEINLINE HRESULT IMFMediaSource_Shutdown(IMFMediaSource* This) {
2827     return This->lpVtbl->Shutdown(This);
2828 }
2829 #endif
2830 #endif
2831 
2832 #endif
2833 
2834 HRESULT STDMETHODCALLTYPE IMFMediaSource_RemoteCreatePresentationDescriptor_Proxy(
2835     IMFMediaSource* This,
2836     DWORD *pcbPD,
2837     BYTE **pbPD,
2838     IMFPresentationDescriptor **ppRemotePD);
2839 void __RPC_STUB IMFMediaSource_RemoteCreatePresentationDescriptor_Stub(
2840     IRpcStubBuffer* This,
2841     IRpcChannelBuffer* pRpcChannelBuffer,
2842     PRPC_MESSAGE pRpcMessage,
2843     DWORD* pdwStubPhase);
2844 HRESULT CALLBACK IMFMediaSource_CreatePresentationDescriptor_Proxy(
2845     IMFMediaSource* This,
2846     IMFPresentationDescriptor **ppPresentationDescriptor);
2847 HRESULT __RPC_STUB IMFMediaSource_CreatePresentationDescriptor_Stub(
2848     IMFMediaSource* This,
2849     DWORD *pcbPD,
2850     BYTE **pbPD,
2851     IMFPresentationDescriptor **ppRemotePD);
2852 
2853 #endif  /* __IMFMediaSource_INTERFACE_DEFINED__ */
2854 
2855 typedef struct _MF_LEAKY_BUCKET_PAIR {
2856     DWORD dwBitrate;
2857     DWORD msBufferWindow;
2858 } MF_LEAKY_BUCKET_PAIR;
2859 typedef struct _MFBYTESTREAM_BUFFERING_PARAMS {
2860     QWORD cbTotalFileSize;
2861     QWORD cbPlayableDataSize;
2862     MF_LEAKY_BUCKET_PAIR *prgBuckets;
2863     DWORD cBuckets;
2864     QWORD qwNetBufferingTime;
2865     QWORD qwExtraBufferingTimeDuringSeek;
2866     QWORD qwPlayDuration;
2867     float dRate;
2868 } MFBYTESTREAM_BUFFERING_PARAMS;
2869 /*****************************************************************************
2870  * IMFByteStreamBuffering interface
2871  */
2872 #ifndef __IMFByteStreamBuffering_INTERFACE_DEFINED__
2873 #define __IMFByteStreamBuffering_INTERFACE_DEFINED__
2874 
2875 DEFINE_GUID(IID_IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e);
2876 #if defined(__cplusplus) && !defined(CINTERFACE)
2877 MIDL_INTERFACE("6d66d782-1d4f-4db7-8c63-cb8c77f1ef5e")
2878 IMFByteStreamBuffering : public IUnknown
2879 {
2880     virtual HRESULT STDMETHODCALLTYPE SetBufferingParams(
2881         MFBYTESTREAM_BUFFERING_PARAMS *pParams) = 0;
2882 
2883     virtual HRESULT STDMETHODCALLTYPE EnableBuffering(
2884         WINBOOL fEnable) = 0;
2885 
2886     virtual HRESULT STDMETHODCALLTYPE StopBuffering(
2887         ) = 0;
2888 
2889 };
2890 #ifdef __CRT_UUID_DECL
2891 __CRT_UUID_DECL(IMFByteStreamBuffering, 0x6d66d782, 0x1d4f, 0x4db7, 0x8c,0x63, 0xcb,0x8c,0x77,0xf1,0xef,0x5e)
2892 #endif
2893 #else
2894 typedef struct IMFByteStreamBufferingVtbl {
2895     BEGIN_INTERFACE
2896 
2897     /*** IUnknown methods ***/
2898     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2899         IMFByteStreamBuffering *This,
2900         REFIID riid,
2901         void **ppvObject);
2902 
2903     ULONG (STDMETHODCALLTYPE *AddRef)(
2904         IMFByteStreamBuffering *This);
2905 
2906     ULONG (STDMETHODCALLTYPE *Release)(
2907         IMFByteStreamBuffering *This);
2908 
2909     /*** IMFByteStreamBuffering methods ***/
2910     HRESULT (STDMETHODCALLTYPE *SetBufferingParams)(
2911         IMFByteStreamBuffering *This,
2912         MFBYTESTREAM_BUFFERING_PARAMS *pParams);
2913 
2914     HRESULT (STDMETHODCALLTYPE *EnableBuffering)(
2915         IMFByteStreamBuffering *This,
2916         WINBOOL fEnable);
2917 
2918     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
2919         IMFByteStreamBuffering *This);
2920 
2921     END_INTERFACE
2922 } IMFByteStreamBufferingVtbl;
2923 
2924 interface IMFByteStreamBuffering {
2925     CONST_VTBL IMFByteStreamBufferingVtbl* lpVtbl;
2926 };
2927 
2928 #ifdef COBJMACROS
2929 #ifndef WIDL_C_INLINE_WRAPPERS
2930 /*** IUnknown methods ***/
2931 #define IMFByteStreamBuffering_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2932 #define IMFByteStreamBuffering_AddRef(This) (This)->lpVtbl->AddRef(This)
2933 #define IMFByteStreamBuffering_Release(This) (This)->lpVtbl->Release(This)
2934 /*** IMFByteStreamBuffering methods ***/
2935 #define IMFByteStreamBuffering_SetBufferingParams(This,pParams) (This)->lpVtbl->SetBufferingParams(This,pParams)
2936 #define IMFByteStreamBuffering_EnableBuffering(This,fEnable) (This)->lpVtbl->EnableBuffering(This,fEnable)
2937 #define IMFByteStreamBuffering_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
2938 #else
2939 /*** IUnknown methods ***/
2940 static FORCEINLINE HRESULT IMFByteStreamBuffering_QueryInterface(IMFByteStreamBuffering* This,REFIID riid,void **ppvObject) {
2941     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2942 }
2943 static FORCEINLINE ULONG IMFByteStreamBuffering_AddRef(IMFByteStreamBuffering* This) {
2944     return This->lpVtbl->AddRef(This);
2945 }
2946 static FORCEINLINE ULONG IMFByteStreamBuffering_Release(IMFByteStreamBuffering* This) {
2947     return This->lpVtbl->Release(This);
2948 }
2949 /*** IMFByteStreamBuffering methods ***/
2950 static FORCEINLINE HRESULT IMFByteStreamBuffering_SetBufferingParams(IMFByteStreamBuffering* This,MFBYTESTREAM_BUFFERING_PARAMS *pParams) {
2951     return This->lpVtbl->SetBufferingParams(This,pParams);
2952 }
2953 static FORCEINLINE HRESULT IMFByteStreamBuffering_EnableBuffering(IMFByteStreamBuffering* This,WINBOOL fEnable) {
2954     return This->lpVtbl->EnableBuffering(This,fEnable);
2955 }
2956 static FORCEINLINE HRESULT IMFByteStreamBuffering_StopBuffering(IMFByteStreamBuffering* This) {
2957     return This->lpVtbl->StopBuffering(This);
2958 }
2959 #endif
2960 #endif
2961 
2962 #endif
2963 
2964 
2965 #endif  /* __IMFByteStreamBuffering_INTERFACE_DEFINED__ */
2966 
2967 /*****************************************************************************
2968  * IMFClockStateSink interface
2969  */
2970 #ifndef __IMFClockStateSink_INTERFACE_DEFINED__
2971 #define __IMFClockStateSink_INTERFACE_DEFINED__
2972 
2973 DEFINE_GUID(IID_IMFClockStateSink, 0xf6696e82, 0x74f7, 0x4f3d, 0xa1,0x78, 0x8a,0x5e,0x09,0xc3,0x65,0x9f);
2974 #if defined(__cplusplus) && !defined(CINTERFACE)
2975 MIDL_INTERFACE("f6696e82-74f7-4f3d-a178-8a5e09c3659f")
2976 IMFClockStateSink : public IUnknown
2977 {
2978     virtual HRESULT STDMETHODCALLTYPE OnClockStart(
2979         MFTIME hnsSystemTime,
2980         LONGLONG llClockStartOffset) = 0;
2981 
2982     virtual HRESULT STDMETHODCALLTYPE OnClockStop(
2983         MFTIME hnsSystemTime) = 0;
2984 
2985     virtual HRESULT STDMETHODCALLTYPE OnClockPause(
2986         MFTIME hnsSystemTime) = 0;
2987 
2988     virtual HRESULT STDMETHODCALLTYPE OnClockRestart(
2989         MFTIME hnsSystemTime) = 0;
2990 
2991     virtual HRESULT STDMETHODCALLTYPE OnClockSetRate(
2992         MFTIME hnsSystemTime,
2993         float flRate) = 0;
2994 
2995 };
2996 #ifdef __CRT_UUID_DECL
2997 __CRT_UUID_DECL(IMFClockStateSink, 0xf6696e82, 0x74f7, 0x4f3d, 0xa1,0x78, 0x8a,0x5e,0x09,0xc3,0x65,0x9f)
2998 #endif
2999 #else
3000 typedef struct IMFClockStateSinkVtbl {
3001     BEGIN_INTERFACE
3002 
3003     /*** IUnknown methods ***/
3004     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3005         IMFClockStateSink *This,
3006         REFIID riid,
3007         void **ppvObject);
3008 
3009     ULONG (STDMETHODCALLTYPE *AddRef)(
3010         IMFClockStateSink *This);
3011 
3012     ULONG (STDMETHODCALLTYPE *Release)(
3013         IMFClockStateSink *This);
3014 
3015     /*** IMFClockStateSink methods ***/
3016     HRESULT (STDMETHODCALLTYPE *OnClockStart)(
3017         IMFClockStateSink *This,
3018         MFTIME hnsSystemTime,
3019         LONGLONG llClockStartOffset);
3020 
3021     HRESULT (STDMETHODCALLTYPE *OnClockStop)(
3022         IMFClockStateSink *This,
3023         MFTIME hnsSystemTime);
3024 
3025     HRESULT (STDMETHODCALLTYPE *OnClockPause)(
3026         IMFClockStateSink *This,
3027         MFTIME hnsSystemTime);
3028 
3029     HRESULT (STDMETHODCALLTYPE *OnClockRestart)(
3030         IMFClockStateSink *This,
3031         MFTIME hnsSystemTime);
3032 
3033     HRESULT (STDMETHODCALLTYPE *OnClockSetRate)(
3034         IMFClockStateSink *This,
3035         MFTIME hnsSystemTime,
3036         float flRate);
3037 
3038     END_INTERFACE
3039 } IMFClockStateSinkVtbl;
3040 
3041 interface IMFClockStateSink {
3042     CONST_VTBL IMFClockStateSinkVtbl* lpVtbl;
3043 };
3044 
3045 #ifdef COBJMACROS
3046 #ifndef WIDL_C_INLINE_WRAPPERS
3047 /*** IUnknown methods ***/
3048 #define IMFClockStateSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3049 #define IMFClockStateSink_AddRef(This) (This)->lpVtbl->AddRef(This)
3050 #define IMFClockStateSink_Release(This) (This)->lpVtbl->Release(This)
3051 /*** IMFClockStateSink methods ***/
3052 #define IMFClockStateSink_OnClockStart(This,hnsSystemTime,llClockStartOffset) (This)->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset)
3053 #define IMFClockStateSink_OnClockStop(This,hnsSystemTime) (This)->lpVtbl->OnClockStop(This,hnsSystemTime)
3054 #define IMFClockStateSink_OnClockPause(This,hnsSystemTime) (This)->lpVtbl->OnClockPause(This,hnsSystemTime)
3055 #define IMFClockStateSink_OnClockRestart(This,hnsSystemTime) (This)->lpVtbl->OnClockRestart(This,hnsSystemTime)
3056 #define IMFClockStateSink_OnClockSetRate(This,hnsSystemTime,flRate) (This)->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate)
3057 #else
3058 /*** IUnknown methods ***/
3059 static FORCEINLINE HRESULT IMFClockStateSink_QueryInterface(IMFClockStateSink* This,REFIID riid,void **ppvObject) {
3060     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3061 }
3062 static FORCEINLINE ULONG IMFClockStateSink_AddRef(IMFClockStateSink* This) {
3063     return This->lpVtbl->AddRef(This);
3064 }
3065 static FORCEINLINE ULONG IMFClockStateSink_Release(IMFClockStateSink* This) {
3066     return This->lpVtbl->Release(This);
3067 }
3068 /*** IMFClockStateSink methods ***/
3069 static FORCEINLINE HRESULT IMFClockStateSink_OnClockStart(IMFClockStateSink* This,MFTIME hnsSystemTime,LONGLONG llClockStartOffset) {
3070     return This->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset);
3071 }
3072 static FORCEINLINE HRESULT IMFClockStateSink_OnClockStop(IMFClockStateSink* This,MFTIME hnsSystemTime) {
3073     return This->lpVtbl->OnClockStop(This,hnsSystemTime);
3074 }
3075 static FORCEINLINE HRESULT IMFClockStateSink_OnClockPause(IMFClockStateSink* This,MFTIME hnsSystemTime) {
3076     return This->lpVtbl->OnClockPause(This,hnsSystemTime);
3077 }
3078 static FORCEINLINE HRESULT IMFClockStateSink_OnClockRestart(IMFClockStateSink* This,MFTIME hnsSystemTime) {
3079     return This->lpVtbl->OnClockRestart(This,hnsSystemTime);
3080 }
3081 static FORCEINLINE HRESULT IMFClockStateSink_OnClockSetRate(IMFClockStateSink* This,MFTIME hnsSystemTime,float flRate) {
3082     return This->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate);
3083 }
3084 #endif
3085 #endif
3086 
3087 #endif
3088 
3089 
3090 #endif  /* __IMFClockStateSink_INTERFACE_DEFINED__ */
3091 
3092 HRESULT WINAPI MFRequireProtectedEnvironment(IMFPresentationDescriptor *pPresentationDescriptor);
3093 HRESULT WINAPI MFSerializePresentationDescriptor(IMFPresentationDescriptor *pPD,DWORD *pcbData,BYTE **ppbData);
3094 typedef DWORD MFSequencerElementId;
3095 typedef enum _MFCLOCK_CHARACTERISTICS_FLAGS {
3096     MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ = 0x2,
3097     MFCLOCK_CHARACTERISTICS_FLAG_ALWAYS_RUNNING = 0x4,
3098     MFCLOCK_CHARACTERISTICS_FLAG_IS_SYSTEM_CLOCK = 0x8
3099 } MFCLOCK_CHARACTERISTICS_FLAGS;
3100 #if (WINVER >= 0x0601)
3101 typedef enum _MF_QUALITY_ADVISE_FLAGS {
3102     MF_QUALITY_CANNOT_KEEP_UP = 0x1
3103 } MF_QUALITY_ADVISE_FLAGS;
3104 #endif /*(WINVER >= 0x0601)*/
3105 typedef enum _MF_QUALITY_DROP_MODE {
3106     MF_DROP_MODE_NONE = 0x0,
3107     MF_DROP_MODE_1 = 0x1,
3108     MF_DROP_MODE_2 = 0x2,
3109     MF_DROP_MODE_3 = 0x3,
3110     MF_DROP_MODE_4 = 0x4,
3111     MF_DROP_MODE_5 = 0x5,
3112     MF_NUM_DROP_MODES = 0x6
3113 } MF_QUALITY_DROP_MODE;
3114 typedef enum _MF_QUALITY_LEVEL {
3115     MF_QUALITY_NORMAL = 0x0,
3116     MF_QUALITY_NORMAL_MINUS_1 = 0x1,
3117     MF_QUALITY_NORMAL_MINUS_2 = 0x2,
3118     MF_QUALITY_NORMAL_MINUS_3 = 0x3,
3119     MF_QUALITY_NORMAL_MINUS_4 = 0x4,
3120     MF_QUALITY_NORMAL_MINUS_5 = 0x5,
3121     MF_NUM_QUALITY_LEVELS = 0x6
3122 } MF_QUALITY_LEVEL;
3123 typedef enum _MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS {
3124     MF_TOPOLOGY_RESOLUTION_SUCCEEDED = 0x0,
3125     MF_OPTIONAL_NODE_REJECTED_MEDIA_TYPE = 0x1,
3126     MF_OPTIONAL_NODE_REJECTED_PROTECTED_PROCESS = 0x2
3127 } MF_TOPOLOGY_RESOLUTION_STATUS_FLAGS;
3128 typedef enum _MF_TOPONODE_DRAIN_MODE {
3129     MF_TOPONODE_DRAIN_DEFAULT = 0,
3130     MF_TOPONODE_DRAIN_ALWAYS = 1,
3131     MF_TOPONODE_DRAIN_NEVER = 2
3132 } MF_TOPONODE_DRAIN_MODE;
3133 typedef enum _MF_TOPONODE_FLUSH_MODE {
3134     MF_TOPONODE_FLUSH_ALWAYS = 0,
3135     MF_TOPONODE_FLUSH_SEEK = 1,
3136     MF_TOPONODE_FLUSH_NEVER = 2
3137 } MF_TOPONODE_FLUSH_MODE;
3138 #if (WINVER >= 0x0601)
3139 typedef enum _MF_TRANSCODE_TOPOLOGY_MODE_FLAGS {
3140     MF_TRANSCODE_TOPOLOGYMODE_SOFTWARE_ONLY = 0,
3141     MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED = 1
3142 } MF_TRANSCODE_TOPOLOGYMODE_FLAGS;
3143 #endif
3144 typedef enum __WIDL_mfidl_generated_name_0000002E {
3145     MF_LICENSE_URL_UNTRUSTED = 0,
3146     MF_LICENSE_URL_TRUSTED = 1,
3147     MF_LICENSE_URL_TAMPERED = 2
3148 } MF_URL_TRUST_STATUS;
3149 typedef enum _MFCLOCK_RELATIONAL_FLAGS {
3150     MFCLOCK_RELATIONAL_FLAG_JITTER_NEVER_AHEAD = 0x1
3151 } MFCLOCK_RELATIONAL_FLAGS;
3152 typedef enum _MFMEDIASOURCE_CHARACTERISTICS {
3153     MFMEDIASOURCE_IS_LIVE = 0x1,
3154     MFMEDIASOURCE_CAN_SEEK = 0x2,
3155     MFMEDIASOURCE_CAN_PAUSE = 0x4,
3156     MFMEDIASOURCE_HAS_SLOW_SEEK = 0x8,
3157     MFMEDIASOURCE_HAS_MULTIPLE_PRESENTATIONS = 0x10,
3158     MFMEDIASOURCE_CAN_SKIPFORWARD = 0x20,
3159     MFMEDIASOURCE_CAN_SKIPBACKWARD = 0x40
3160 } MFMEDIASOURCE_CHARACTERISTICS;
3161 typedef enum _MFNET_PROXYSETTINGS {
3162     MFNET_PROXYSETTING_NONE = 0,
3163     MFNET_PROXYSETTING_MANUAL = 1,
3164     MFNET_PROXYSETTING_AUTO = 2,
3165     MFNET_PROXYSETTING_BROWSER = 3
3166 } MFNET_PROXYSETTINGS;
3167 typedef enum _MFNetAuthenticationFlags {
3168     MFNET_AUTHENTICATION_PROXY = 0x1,
3169     MFNET_AUTHENTICATION_CLEAR_TEXT = 0x2,
3170     MFNET_AUTHENTICATION_LOGGED_ON_USER = 0x4
3171 } MFNetAuthenticationFlags;
3172 typedef enum _MFNetCredentialOptions {
3173     MFNET_CREDENTIAL_SAVE = 0x1,
3174     MFNET_CREDENTIAL_DONT_CACHE = 0x2,
3175     MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT = 0x4
3176 } MFNetCredentialOptions;
3177 typedef enum _MFNetCredentialRequirements {
3178     REQUIRE_PROMPT = 0x1,
3179     REQUIRE_SAVE_SELECTED = 0x2
3180 } MFNetCredentialRequirements;
3181 typedef enum _MFNETSOURCE_CACHE_STATE {
3182     MFNETSOURCE_CACHE_UNAVAILABLE = 0,
3183     MFNETSOURCE_CACHE_ACTIVE_WRITING = 1,
3184     MFNETSOURCE_CACHE_ACTIVE_COMPLETE = 2
3185 } MFNETSOURCE_CACHE_STATE;
3186 typedef enum _MFNETSOURCE_PROTOCOL_TYPE {
3187     MFNETSOURCE_UNDEFINED = 0x0,
3188     MFNETSOURCE_HTTP = 0x1,
3189     MFNETSOURCE_RTSP = 0x2,
3190     MFNETSOURCE_FILE = 0x3,
3191     MFNETSOURCE_MULTICAST = 0x4
3192 } MFNETSOURCE_PROTOCOL_TYPE;
3193 typedef enum _MFNETSOURCE_STATISTICS_IDS {
3194     MFNETSOURCE_RECVPACKETS_ID = 0,
3195     MFNETSOURCE_LOSTPACKETS_ID = 1,
3196     MFNETSOURCE_RESENDSREQUESTED_ID = 2,
3197     MFNETSOURCE_RESENDSRECEIVED_ID = 3,
3198     MFNETSOURCE_RECOVEREDBYECCPACKETS_ID = 4,
3199     MFNETSOURCE_RECOVEREDBYRTXPACKETS_ID = 5,
3200     MFNETSOURCE_OUTPACKETS_ID = 6,
3201     MFNETSOURCE_RECVRATE_ID = 7,
3202     MFNETSOURCE_AVGBANDWIDTHBPS_ID = 8,
3203     MFNETSOURCE_BYTESRECEIVED_ID = 9,
3204     MFNETSOURCE_PROTOCOL_ID = 10,
3205     MFNETSOURCE_TRANSPORT_ID = 11,
3206     MFNETSOURCE_CACHE_STATE_ID = 12,
3207     MFNETSOURCE_LINKBANDWIDTH_ID = 13,
3208     MFNETSOURCE_CONTENTBITRATE_ID = 14,
3209     MFNETSOURCE_SPEEDFACTOR_ID = 15,
3210     MFNETSOURCE_BUFFERSIZE_ID = 16,
3211     MFNETSOURCE_BUFFERPROGRESS_ID = 17,
3212     MFNETSOURCE_LASTBWSWITCHTS_ID = 18,
3213     MFNETSOURCE_SEEKRANGESTART_ID = 19,
3214     MFNETSOURCE_SEEKRANGEEND_ID = 20,
3215     MFNETSOURCE_BUFFERINGCOUNT_ID = 21,
3216     MFNETSOURCE_INCORRECTLYSIGNEDPACKETS_ID = 22,
3217     MFNETSOURCE_SIGNEDSESSION_ID = 23,
3218     MFNETSOURCE_MAXBITRATE_ID = 24,
3219     MFNETSOURCE_RECEPTION_QUALITY_ID = 25,
3220     MFNETSOURCE_RECOVEREDPACKETS_ID = 26,
3221     MFNETSOURCE_VBR_ID = 27,
3222     MFNETSOURCE_DOWNLOADPROGRESS_ID = 28
3223 } MFNETSOURCE_STATISTICS_IDS;
3224 typedef enum _MFNETSOURCE_TRANSPORT_TYPE {
3225     MFNETSOURCE_UDP = 0,
3226     MFNETSOURCE_TCP = 1
3227 } MFNETSOURCE_TRANSPORT_TYPE;
3228 typedef enum MF_OBJECT_TYPE {
3229     MF_OBJECT_MEDIASOURCE = 0,
3230     MF_OBJECT_BYTESTREAM = 1,
3231     MF_OBJECT_INVALID = 2
3232 } MF_OBJECT_TYPE;
3233 typedef enum _MFPOLICYMANAGER_ACTION {
3234     PEACTION_NO = 0,
3235     PEACTION_PLAY = 1,
3236     PEACTION_COPY = 2,
3237     PEACTION_EXPORT = 3,
3238     PEACTION_EXTRACT = 4,
3239     PEACTION_RESERVED1 = 5,
3240     PEACTION_RESERVED2 = 6,
3241     PEACTION_RESERVED3 = 7,
3242     PEACTION_LAST = 7
3243 } MFPOLICYMANAGER_ACTION;
3244 typedef enum _MFRATE_DIRECTION {
3245     MFRATE_FORWARD = 0,
3246     MFRATE_REVERSE = 1
3247 } MFRATE_DIRECTION;
3248 typedef enum _MFSequencerTopologyFlags {
3249     SequencerTopologyFlags_Last = 0x1
3250 } MFSequencerTopologyFlags;
3251 typedef enum _MFSHUTDOWN_STATUS {
3252     MFSHUTDOWN_INITIATED = 0,
3253     MFSHUTDOWN_COMPLETED = 1
3254 } MFSHUTDOWN_STATUS;
3255 typedef enum MFSTREAMSINK_MARKER_TYPE {
3256     MFSTREAMSINK_MARKER_DEFAULT = 0,
3257     MFSTREAMSINK_MARKER_ENDOFSEGMENT = 1,
3258     MFSTREAMSINK_MARKER_TICK = 2,
3259     MFSTREAMSINK_MARKER_EVENT = 3
3260 } MFSTREAMSINK_MARKER_TYPE;
3261 typedef enum MFTIMER_FLAGS {
3262     MFTIMER_RELATIVE = 0x1
3263 } MFTIMER_FLAGS;
3264 #if (WINVER >= 0x0601)
3265 typedef enum MFTOPOLOGY_DXVA_MODE {
3266     MFTOPOLOGY_DXVA_DEFAULT = 0,
3267     MFTOPOLOGY_DXVA_NONE = 1,
3268     MFTOPOLOGY_DXVA_FULL = 2
3269 } MFTOPOLOGY_DXVA_MODE;
3270 typedef enum MFTOPOLOGY_HARDWARE_MODE {
3271     MFTOPOLOGY_HWMODE_SOFTWARE_ONLY = 0,
3272     MFTOPOLOGY_HWMODE_USE_HARDWARE = 1
3273 } MFTOPOLOGY_HARDWARE_MODE;
3274 typedef struct _MFT_REGISTRATION_INFO {
3275     CLSID clsid;
3276     GUID guidCategory;
3277     UINT32 uiFlags;
3278     LPCWSTR pszName;
3279     DWORD cInTypes;
3280     MFT_REGISTER_TYPE_INFO *pInTypes;
3281     DWORD cOutTypes;
3282     MFT_REGISTER_TYPE_INFO *pOutTypes;
3283 } MFT_REGISTRATION_INFO;
3284 #endif /*(WINVER >= 0x0601)*/
3285 typedef struct _ASFFlatPicture {
3286   BYTE  bPictureType;
3287   DWORD dwDataLen;
3288 } ASF_FLAT_PICTURE;
3289 
3290 typedef struct _ASFFlatSynchronisedLyrics {
3291   BYTE  bTimeStampFormat;
3292   BYTE  bContentType;
3293   DWORD dwLyricsLen;
3294 } ASF_FLAT_SYNCHRONISED_LYRICS;
3295 typedef enum SAMPLE_PROTECTION_VERSION {
3296     SAMPLE_PROTECTION_VERSION_NO = 0,
3297     SAMPLE_PROTECTION_VERSION_BASIC_LOKI = 1,
3298     SAMPLE_PROTECTION_VERSION_SCATTER = 2,
3299     SAMPLE_PROTECTION_VERSION_RC4 = 3
3300 } SAMPLE_PROTECTION_VERSION;
3301 typedef struct _MFINPUTTRUSTAUTHORITY_ACTION {
3302     MFPOLICYMANAGER_ACTION Action;
3303     BYTE *pbTicket;
3304     DWORD cbTicket;
3305 } MFINPUTTRUSTAUTHORITY_ACCESS_ACTION;
3306 typedef struct _MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {
3307     DWORD dwSize;
3308     DWORD dwVer;
3309     DWORD cbSignatureOffset;
3310     DWORD cbSignatureSize;
3311     DWORD cbExtensionOffset;
3312     DWORD cbExtensionSize;
3313     DWORD cActions;
3314     MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions[1];
3315 } MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS;
3316 typedef struct _MFNetCredentialManagerGetParam {
3317     HRESULT hrOp;
3318     WINBOOL fAllowLoggedOnUser;
3319     WINBOOL fClearTextPackage;
3320     LPCWSTR pszUrl;
3321     LPCWSTR pszSite;
3322     LPCWSTR pszRealm;
3323     LPCWSTR pszPackage;
3324     LONG nRetries;
3325 } MFNetCredentialManagerGetParam;
3326 #define MEDIASINK_FIXED_STREAMS                 0x00000001
3327 #define MEDIASINK_CANNOT_MATCH_CLOCK            0x00000002
3328 #define MEDIASINK_RATELESS                      0x00000004
3329 #define MEDIASINK_CLOCK_REQUIRED                0x00000008
3330 #define MEDIASINK_CAN_PREROLL                   0x00000010
3331 #define MEDIASINK_REQUIRE_REFERENCE_MEDIATYPE   0x00000020
3332 enum {
3333     MF_RESOLUTION_MEDIASOURCE = 0x1,
3334     MF_RESOLUTION_BYTESTREAM = 0x2,
3335     MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE = 0x10,
3336     MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL = 0x20,
3337     MF_RESOLUTION_READ = 0x10000,
3338     MF_RESOLUTION_WRITE = 0x20000
3339 };
3340 #ifndef __IMFASFContentInfo_FWD_DEFINED__
3341 #define __IMFASFContentInfo_FWD_DEFINED__
3342 typedef interface IMFASFContentInfo IMFASFContentInfo;
3343 #ifdef __cplusplus
3344 interface IMFASFContentInfo;
3345 #endif /* __cplusplus */
3346 #endif
3347 
3348 #ifndef __IMFASFIndexer_FWD_DEFINED__
3349 #define __IMFASFIndexer_FWD_DEFINED__
3350 typedef interface IMFASFIndexer IMFASFIndexer;
3351 #ifdef __cplusplus
3352 interface IMFASFIndexer;
3353 #endif /* __cplusplus */
3354 #endif
3355 
3356 #ifndef __IMFASFMultiplexer_FWD_DEFINED__
3357 #define __IMFASFMultiplexer_FWD_DEFINED__
3358 typedef interface IMFASFMultiplexer IMFASFMultiplexer;
3359 #ifdef __cplusplus
3360 interface IMFASFMultiplexer;
3361 #endif /* __cplusplus */
3362 #endif
3363 
3364 #ifndef __IMFASFProfile_FWD_DEFINED__
3365 #define __IMFASFProfile_FWD_DEFINED__
3366 typedef interface IMFASFProfile IMFASFProfile;
3367 #ifdef __cplusplus
3368 interface IMFASFProfile;
3369 #endif /* __cplusplus */
3370 #endif
3371 
3372 #ifndef __IMFASFSplitter_FWD_DEFINED__
3373 #define __IMFASFSplitter_FWD_DEFINED__
3374 typedef interface IMFASFSplitter IMFASFSplitter;
3375 #ifdef __cplusplus
3376 interface IMFASFSplitter;
3377 #endif /* __cplusplus */
3378 #endif
3379 
3380 #ifndef __IMFPMPServer_FWD_DEFINED__
3381 #define __IMFPMPServer_FWD_DEFINED__
3382 typedef interface IMFPMPServer IMFPMPServer;
3383 #ifdef __cplusplus
3384 interface IMFPMPServer;
3385 #endif /* __cplusplus */
3386 #endif
3387 
3388 #ifndef __IMFPresentationClock_FWD_DEFINED__
3389 #define __IMFPresentationClock_FWD_DEFINED__
3390 typedef interface IMFPresentationClock IMFPresentationClock;
3391 #ifdef __cplusplus
3392 interface IMFPresentationClock;
3393 #endif /* __cplusplus */
3394 #endif
3395 
3396 #ifndef __IMFNetProxyLocator_FWD_DEFINED__
3397 #define __IMFNetProxyLocator_FWD_DEFINED__
3398 typedef interface IMFNetProxyLocator IMFNetProxyLocator;
3399 #ifdef __cplusplus
3400 interface IMFNetProxyLocator;
3401 #endif /* __cplusplus */
3402 #endif
3403 
3404 #ifndef __IMFRemoteDesktopPlugin_FWD_DEFINED__
3405 #define __IMFRemoteDesktopPlugin_FWD_DEFINED__
3406 typedef interface IMFRemoteDesktopPlugin IMFRemoteDesktopPlugin;
3407 #ifdef __cplusplus
3408 interface IMFRemoteDesktopPlugin;
3409 #endif /* __cplusplus */
3410 #endif
3411 
3412 #ifndef __IMFTransform_FWD_DEFINED__
3413 #define __IMFTransform_FWD_DEFINED__
3414 typedef interface IMFTransform IMFTransform;
3415 #ifdef __cplusplus
3416 interface IMFTransform;
3417 #endif /* __cplusplus */
3418 #endif
3419 
3420 #ifndef __IMFSequencerSource_FWD_DEFINED__
3421 #define __IMFSequencerSource_FWD_DEFINED__
3422 typedef interface IMFSequencerSource IMFSequencerSource;
3423 #ifdef __cplusplus
3424 interface IMFSequencerSource;
3425 #endif /* __cplusplus */
3426 #endif
3427 
3428 #ifndef __IMFStreamSink_FWD_DEFINED__
3429 #define __IMFStreamSink_FWD_DEFINED__
3430 typedef interface IMFStreamSink IMFStreamSink;
3431 #ifdef __cplusplus
3432 interface IMFStreamSink;
3433 #endif /* __cplusplus */
3434 #endif
3435 
3436 #ifndef __IMFQualityManager_FWD_DEFINED__
3437 #define __IMFQualityManager_FWD_DEFINED__
3438 typedef interface IMFQualityManager IMFQualityManager;
3439 #ifdef __cplusplus
3440 interface IMFQualityManager;
3441 #endif /* __cplusplus */
3442 #endif
3443 
3444 #ifndef __IMFTranscodeProfile_FWD_DEFINED__
3445 #define __IMFTranscodeProfile_FWD_DEFINED__
3446 typedef interface IMFTranscodeProfile IMFTranscodeProfile;
3447 #ifdef __cplusplus
3448 interface IMFTranscodeProfile;
3449 #endif /* __cplusplus */
3450 #endif
3451 
3452 /*****************************************************************************
3453  * IMFAudioStreamVolume interface
3454  */
3455 #ifndef __IMFAudioStreamVolume_INTERFACE_DEFINED__
3456 #define __IMFAudioStreamVolume_INTERFACE_DEFINED__
3457 
3458 DEFINE_GUID(IID_IMFAudioStreamVolume, 0x76b1bbdb, 0x4ec8, 0x4f36, 0xb1,0x06, 0x70,0xa9,0x31,0x6d,0xf5,0x93);
3459 #if defined(__cplusplus) && !defined(CINTERFACE)
3460 MIDL_INTERFACE("76b1bbdb-4ec8-4f36-b106-70a9316df593")
3461 IMFAudioStreamVolume : public IUnknown
3462 {
3463     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
3464         UINT32 *pdwCount) = 0;
3465 
3466     virtual HRESULT STDMETHODCALLTYPE SetChannelVolume(
3467         UINT32 dwIndex,
3468         const float fLevel) = 0;
3469 
3470     virtual HRESULT STDMETHODCALLTYPE GetChannelVolume(
3471         UINT32 dwIndex,
3472         float *pfLevel) = 0;
3473 
3474     virtual HRESULT STDMETHODCALLTYPE SetAllVolumes(
3475         UINT32 dwCount,
3476         const float *pfVolumes) = 0;
3477 
3478     virtual HRESULT STDMETHODCALLTYPE GetAllVolumes(
3479         UINT32 dwCount,
3480         float *pfVolumes) = 0;
3481 
3482 };
3483 #ifdef __CRT_UUID_DECL
3484 __CRT_UUID_DECL(IMFAudioStreamVolume, 0x76b1bbdb, 0x4ec8, 0x4f36, 0xb1,0x06, 0x70,0xa9,0x31,0x6d,0xf5,0x93)
3485 #endif
3486 #else
3487 typedef struct IMFAudioStreamVolumeVtbl {
3488     BEGIN_INTERFACE
3489 
3490     /*** IUnknown methods ***/
3491     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3492         IMFAudioStreamVolume *This,
3493         REFIID riid,
3494         void **ppvObject);
3495 
3496     ULONG (STDMETHODCALLTYPE *AddRef)(
3497         IMFAudioStreamVolume *This);
3498 
3499     ULONG (STDMETHODCALLTYPE *Release)(
3500         IMFAudioStreamVolume *This);
3501 
3502     /*** IMFAudioStreamVolume methods ***/
3503     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
3504         IMFAudioStreamVolume *This,
3505         UINT32 *pdwCount);
3506 
3507     HRESULT (STDMETHODCALLTYPE *SetChannelVolume)(
3508         IMFAudioStreamVolume *This,
3509         UINT32 dwIndex,
3510         const float fLevel);
3511 
3512     HRESULT (STDMETHODCALLTYPE *GetChannelVolume)(
3513         IMFAudioStreamVolume *This,
3514         UINT32 dwIndex,
3515         float *pfLevel);
3516 
3517     HRESULT (STDMETHODCALLTYPE *SetAllVolumes)(
3518         IMFAudioStreamVolume *This,
3519         UINT32 dwCount,
3520         const float *pfVolumes);
3521 
3522     HRESULT (STDMETHODCALLTYPE *GetAllVolumes)(
3523         IMFAudioStreamVolume *This,
3524         UINT32 dwCount,
3525         float *pfVolumes);
3526 
3527     END_INTERFACE
3528 } IMFAudioStreamVolumeVtbl;
3529 
3530 interface IMFAudioStreamVolume {
3531     CONST_VTBL IMFAudioStreamVolumeVtbl* lpVtbl;
3532 };
3533 
3534 #ifdef COBJMACROS
3535 #ifndef WIDL_C_INLINE_WRAPPERS
3536 /*** IUnknown methods ***/
3537 #define IMFAudioStreamVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3538 #define IMFAudioStreamVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
3539 #define IMFAudioStreamVolume_Release(This) (This)->lpVtbl->Release(This)
3540 /*** IMFAudioStreamVolume methods ***/
3541 #define IMFAudioStreamVolume_GetChannelCount(This,pdwCount) (This)->lpVtbl->GetChannelCount(This,pdwCount)
3542 #define IMFAudioStreamVolume_SetChannelVolume(This,dwIndex,fLevel) (This)->lpVtbl->SetChannelVolume(This,dwIndex,fLevel)
3543 #define IMFAudioStreamVolume_GetChannelVolume(This,dwIndex,pfLevel) (This)->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel)
3544 #define IMFAudioStreamVolume_SetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes)
3545 #define IMFAudioStreamVolume_GetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes)
3546 #else
3547 /*** IUnknown methods ***/
3548 static FORCEINLINE HRESULT IMFAudioStreamVolume_QueryInterface(IMFAudioStreamVolume* This,REFIID riid,void **ppvObject) {
3549     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3550 }
3551 static FORCEINLINE ULONG IMFAudioStreamVolume_AddRef(IMFAudioStreamVolume* This) {
3552     return This->lpVtbl->AddRef(This);
3553 }
3554 static FORCEINLINE ULONG IMFAudioStreamVolume_Release(IMFAudioStreamVolume* This) {
3555     return This->lpVtbl->Release(This);
3556 }
3557 /*** IMFAudioStreamVolume methods ***/
3558 static FORCEINLINE HRESULT IMFAudioStreamVolume_GetChannelCount(IMFAudioStreamVolume* This,UINT32 *pdwCount) {
3559     return This->lpVtbl->GetChannelCount(This,pdwCount);
3560 }
3561 static FORCEINLINE HRESULT IMFAudioStreamVolume_SetChannelVolume(IMFAudioStreamVolume* This,UINT32 dwIndex,const float fLevel) {
3562     return This->lpVtbl->SetChannelVolume(This,dwIndex,fLevel);
3563 }
3564 static FORCEINLINE HRESULT IMFAudioStreamVolume_GetChannelVolume(IMFAudioStreamVolume* This,UINT32 dwIndex,float *pfLevel) {
3565     return This->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel);
3566 }
3567 static FORCEINLINE HRESULT IMFAudioStreamVolume_SetAllVolumes(IMFAudioStreamVolume* This,UINT32 dwCount,const float *pfVolumes) {
3568     return This->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes);
3569 }
3570 static FORCEINLINE HRESULT IMFAudioStreamVolume_GetAllVolumes(IMFAudioStreamVolume* This,UINT32 dwCount,float *pfVolumes) {
3571     return This->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes);
3572 }
3573 #endif
3574 #endif
3575 
3576 #endif
3577 
3578 
3579 #endif  /* __IMFAudioStreamVolume_INTERFACE_DEFINED__ */
3580 
3581 /*****************************************************************************
3582  * IMFMediaSink interface
3583  */
3584 #ifndef __IMFMediaSink_INTERFACE_DEFINED__
3585 #define __IMFMediaSink_INTERFACE_DEFINED__
3586 
3587 DEFINE_GUID(IID_IMFMediaSink, 0x6ef2a660, 0x47c0, 0x4666, 0xb1,0x3d, 0xcb,0xb7,0x17,0xf2,0xfa,0x2c);
3588 #if defined(__cplusplus) && !defined(CINTERFACE)
3589 MIDL_INTERFACE("6ef2a660-47c0-4666-b13d-cbb717f2fa2c")
3590 IMFMediaSink : public IUnknown
3591 {
3592     virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
3593         DWORD *pdwCharacteristics) = 0;
3594 
3595     virtual HRESULT STDMETHODCALLTYPE AddStreamSink(
3596         DWORD dwStreamSinkIdentifier,
3597         IMFMediaType *pMediaType,
3598         IMFStreamSink **ppStreamSink) = 0;
3599 
3600     virtual HRESULT STDMETHODCALLTYPE RemoveStreamSink(
3601         DWORD dwStreamSinkIdentifier) = 0;
3602 
3603     virtual HRESULT STDMETHODCALLTYPE GetStreamSinkCount(
3604         DWORD *pcStreamSinkCount) = 0;
3605 
3606     virtual HRESULT STDMETHODCALLTYPE GetStreamSinkByIndex(
3607         DWORD dwIndex,
3608         IMFStreamSink **ppStreamSink) = 0;
3609 
3610     virtual HRESULT STDMETHODCALLTYPE GetStreamSinkById(
3611         DWORD dwStreamSinkIdentifier,
3612         IMFStreamSink **ppStreamSink) = 0;
3613 
3614     virtual HRESULT STDMETHODCALLTYPE SetPresentationClock(
3615         IMFPresentationClock *pPresentationClock) = 0;
3616 
3617     virtual HRESULT STDMETHODCALLTYPE GetPresentationClock(
3618         IMFPresentationClock **ppPresentationClock) = 0;
3619 
3620     virtual HRESULT STDMETHODCALLTYPE Shutdown(
3621         ) = 0;
3622 
3623 };
3624 #ifdef __CRT_UUID_DECL
3625 __CRT_UUID_DECL(IMFMediaSink, 0x6ef2a660, 0x47c0, 0x4666, 0xb1,0x3d, 0xcb,0xb7,0x17,0xf2,0xfa,0x2c)
3626 #endif
3627 #else
3628 typedef struct IMFMediaSinkVtbl {
3629     BEGIN_INTERFACE
3630 
3631     /*** IUnknown methods ***/
3632     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3633         IMFMediaSink *This,
3634         REFIID riid,
3635         void **ppvObject);
3636 
3637     ULONG (STDMETHODCALLTYPE *AddRef)(
3638         IMFMediaSink *This);
3639 
3640     ULONG (STDMETHODCALLTYPE *Release)(
3641         IMFMediaSink *This);
3642 
3643     /*** IMFMediaSink methods ***/
3644     HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
3645         IMFMediaSink *This,
3646         DWORD *pdwCharacteristics);
3647 
3648     HRESULT (STDMETHODCALLTYPE *AddStreamSink)(
3649         IMFMediaSink *This,
3650         DWORD dwStreamSinkIdentifier,
3651         IMFMediaType *pMediaType,
3652         IMFStreamSink **ppStreamSink);
3653 
3654     HRESULT (STDMETHODCALLTYPE *RemoveStreamSink)(
3655         IMFMediaSink *This,
3656         DWORD dwStreamSinkIdentifier);
3657 
3658     HRESULT (STDMETHODCALLTYPE *GetStreamSinkCount)(
3659         IMFMediaSink *This,
3660         DWORD *pcStreamSinkCount);
3661 
3662     HRESULT (STDMETHODCALLTYPE *GetStreamSinkByIndex)(
3663         IMFMediaSink *This,
3664         DWORD dwIndex,
3665         IMFStreamSink **ppStreamSink);
3666 
3667     HRESULT (STDMETHODCALLTYPE *GetStreamSinkById)(
3668         IMFMediaSink *This,
3669         DWORD dwStreamSinkIdentifier,
3670         IMFStreamSink **ppStreamSink);
3671 
3672     HRESULT (STDMETHODCALLTYPE *SetPresentationClock)(
3673         IMFMediaSink *This,
3674         IMFPresentationClock *pPresentationClock);
3675 
3676     HRESULT (STDMETHODCALLTYPE *GetPresentationClock)(
3677         IMFMediaSink *This,
3678         IMFPresentationClock **ppPresentationClock);
3679 
3680     HRESULT (STDMETHODCALLTYPE *Shutdown)(
3681         IMFMediaSink *This);
3682 
3683     END_INTERFACE
3684 } IMFMediaSinkVtbl;
3685 
3686 interface IMFMediaSink {
3687     CONST_VTBL IMFMediaSinkVtbl* lpVtbl;
3688 };
3689 
3690 #ifdef COBJMACROS
3691 #ifndef WIDL_C_INLINE_WRAPPERS
3692 /*** IUnknown methods ***/
3693 #define IMFMediaSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3694 #define IMFMediaSink_AddRef(This) (This)->lpVtbl->AddRef(This)
3695 #define IMFMediaSink_Release(This) (This)->lpVtbl->Release(This)
3696 /*** IMFMediaSink methods ***/
3697 #define IMFMediaSink_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
3698 #define IMFMediaSink_AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink) (This)->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink)
3699 #define IMFMediaSink_RemoveStreamSink(This,dwStreamSinkIdentifier) (This)->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier)
3700 #define IMFMediaSink_GetStreamSinkCount(This,pcStreamSinkCount) (This)->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount)
3701 #define IMFMediaSink_GetStreamSinkByIndex(This,dwIndex,ppStreamSink) (This)->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink)
3702 #define IMFMediaSink_GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink) (This)->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink)
3703 #define IMFMediaSink_SetPresentationClock(This,pPresentationClock) (This)->lpVtbl->SetPresentationClock(This,pPresentationClock)
3704 #define IMFMediaSink_GetPresentationClock(This,ppPresentationClock) (This)->lpVtbl->GetPresentationClock(This,ppPresentationClock)
3705 #define IMFMediaSink_Shutdown(This) (This)->lpVtbl->Shutdown(This)
3706 #else
3707 /*** IUnknown methods ***/
3708 static FORCEINLINE HRESULT IMFMediaSink_QueryInterface(IMFMediaSink* This,REFIID riid,void **ppvObject) {
3709     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3710 }
3711 static FORCEINLINE ULONG IMFMediaSink_AddRef(IMFMediaSink* This) {
3712     return This->lpVtbl->AddRef(This);
3713 }
3714 static FORCEINLINE ULONG IMFMediaSink_Release(IMFMediaSink* This) {
3715     return This->lpVtbl->Release(This);
3716 }
3717 /*** IMFMediaSink methods ***/
3718 static FORCEINLINE HRESULT IMFMediaSink_GetCharacteristics(IMFMediaSink* This,DWORD *pdwCharacteristics) {
3719     return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
3720 }
3721 static FORCEINLINE HRESULT IMFMediaSink_AddStreamSink(IMFMediaSink* This,DWORD dwStreamSinkIdentifier,IMFMediaType *pMediaType,IMFStreamSink **ppStreamSink) {
3722     return This->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink);
3723 }
3724 static FORCEINLINE HRESULT IMFMediaSink_RemoveStreamSink(IMFMediaSink* This,DWORD dwStreamSinkIdentifier) {
3725     return This->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier);
3726 }
3727 static FORCEINLINE HRESULT IMFMediaSink_GetStreamSinkCount(IMFMediaSink* This,DWORD *pcStreamSinkCount) {
3728     return This->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount);
3729 }
3730 static FORCEINLINE HRESULT IMFMediaSink_GetStreamSinkByIndex(IMFMediaSink* This,DWORD dwIndex,IMFStreamSink **ppStreamSink) {
3731     return This->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink);
3732 }
3733 static FORCEINLINE HRESULT IMFMediaSink_GetStreamSinkById(IMFMediaSink* This,DWORD dwStreamSinkIdentifier,IMFStreamSink **ppStreamSink) {
3734     return This->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink);
3735 }
3736 static FORCEINLINE HRESULT IMFMediaSink_SetPresentationClock(IMFMediaSink* This,IMFPresentationClock *pPresentationClock) {
3737     return This->lpVtbl->SetPresentationClock(This,pPresentationClock);
3738 }
3739 static FORCEINLINE HRESULT IMFMediaSink_GetPresentationClock(IMFMediaSink* This,IMFPresentationClock **ppPresentationClock) {
3740     return This->lpVtbl->GetPresentationClock(This,ppPresentationClock);
3741 }
3742 static FORCEINLINE HRESULT IMFMediaSink_Shutdown(IMFMediaSink* This) {
3743     return This->lpVtbl->Shutdown(This);
3744 }
3745 #endif
3746 #endif
3747 
3748 #endif
3749 
3750 
3751 #endif  /* __IMFMediaSink_INTERFACE_DEFINED__ */
3752 
3753 /*****************************************************************************
3754  * IMFFinalizableMediaSink interface
3755  */
3756 #ifndef __IMFFinalizableMediaSink_INTERFACE_DEFINED__
3757 #define __IMFFinalizableMediaSink_INTERFACE_DEFINED__
3758 
3759 DEFINE_GUID(IID_IMFFinalizableMediaSink, 0xeaecb74a, 0x9a50, 0x42ce, 0x95,0x41, 0x6a,0x7f,0x57,0xaa,0x4a,0xd7);
3760 #if defined(__cplusplus) && !defined(CINTERFACE)
3761 MIDL_INTERFACE("eaecb74a-9a50-42ce-9541-6a7f57aa4ad7")
3762 IMFFinalizableMediaSink : public IMFMediaSink
3763 {
3764     virtual HRESULT STDMETHODCALLTYPE BeginFinalize(
3765         IMFAsyncCallback *pCallback,
3766         IUnknown *punkState) = 0;
3767 
3768     virtual HRESULT STDMETHODCALLTYPE EndFinalize(
3769         IMFAsyncResult *pResult) = 0;
3770 
3771 };
3772 #ifdef __CRT_UUID_DECL
3773 __CRT_UUID_DECL(IMFFinalizableMediaSink, 0xeaecb74a, 0x9a50, 0x42ce, 0x95,0x41, 0x6a,0x7f,0x57,0xaa,0x4a,0xd7)
3774 #endif
3775 #else
3776 typedef struct IMFFinalizableMediaSinkVtbl {
3777     BEGIN_INTERFACE
3778 
3779     /*** IUnknown methods ***/
3780     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3781         IMFFinalizableMediaSink *This,
3782         REFIID riid,
3783         void **ppvObject);
3784 
3785     ULONG (STDMETHODCALLTYPE *AddRef)(
3786         IMFFinalizableMediaSink *This);
3787 
3788     ULONG (STDMETHODCALLTYPE *Release)(
3789         IMFFinalizableMediaSink *This);
3790 
3791     /*** IMFMediaSink methods ***/
3792     HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
3793         IMFFinalizableMediaSink *This,
3794         DWORD *pdwCharacteristics);
3795 
3796     HRESULT (STDMETHODCALLTYPE *AddStreamSink)(
3797         IMFFinalizableMediaSink *This,
3798         DWORD dwStreamSinkIdentifier,
3799         IMFMediaType *pMediaType,
3800         IMFStreamSink **ppStreamSink);
3801 
3802     HRESULT (STDMETHODCALLTYPE *RemoveStreamSink)(
3803         IMFFinalizableMediaSink *This,
3804         DWORD dwStreamSinkIdentifier);
3805 
3806     HRESULT (STDMETHODCALLTYPE *GetStreamSinkCount)(
3807         IMFFinalizableMediaSink *This,
3808         DWORD *pcStreamSinkCount);
3809 
3810     HRESULT (STDMETHODCALLTYPE *GetStreamSinkByIndex)(
3811         IMFFinalizableMediaSink *This,
3812         DWORD dwIndex,
3813         IMFStreamSink **ppStreamSink);
3814 
3815     HRESULT (STDMETHODCALLTYPE *GetStreamSinkById)(
3816         IMFFinalizableMediaSink *This,
3817         DWORD dwStreamSinkIdentifier,
3818         IMFStreamSink **ppStreamSink);
3819 
3820     HRESULT (STDMETHODCALLTYPE *SetPresentationClock)(
3821         IMFFinalizableMediaSink *This,
3822         IMFPresentationClock *pPresentationClock);
3823 
3824     HRESULT (STDMETHODCALLTYPE *GetPresentationClock)(
3825         IMFFinalizableMediaSink *This,
3826         IMFPresentationClock **ppPresentationClock);
3827 
3828     HRESULT (STDMETHODCALLTYPE *Shutdown)(
3829         IMFFinalizableMediaSink *This);
3830 
3831     /*** IMFFinalizableMediaSink methods ***/
3832     HRESULT (STDMETHODCALLTYPE *BeginFinalize)(
3833         IMFFinalizableMediaSink *This,
3834         IMFAsyncCallback *pCallback,
3835         IUnknown *punkState);
3836 
3837     HRESULT (STDMETHODCALLTYPE *EndFinalize)(
3838         IMFFinalizableMediaSink *This,
3839         IMFAsyncResult *pResult);
3840 
3841     END_INTERFACE
3842 } IMFFinalizableMediaSinkVtbl;
3843 
3844 interface IMFFinalizableMediaSink {
3845     CONST_VTBL IMFFinalizableMediaSinkVtbl* lpVtbl;
3846 };
3847 
3848 #ifdef COBJMACROS
3849 #ifndef WIDL_C_INLINE_WRAPPERS
3850 /*** IUnknown methods ***/
3851 #define IMFFinalizableMediaSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3852 #define IMFFinalizableMediaSink_AddRef(This) (This)->lpVtbl->AddRef(This)
3853 #define IMFFinalizableMediaSink_Release(This) (This)->lpVtbl->Release(This)
3854 /*** IMFMediaSink methods ***/
3855 #define IMFFinalizableMediaSink_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
3856 #define IMFFinalizableMediaSink_AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink) (This)->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink)
3857 #define IMFFinalizableMediaSink_RemoveStreamSink(This,dwStreamSinkIdentifier) (This)->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier)
3858 #define IMFFinalizableMediaSink_GetStreamSinkCount(This,pcStreamSinkCount) (This)->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount)
3859 #define IMFFinalizableMediaSink_GetStreamSinkByIndex(This,dwIndex,ppStreamSink) (This)->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink)
3860 #define IMFFinalizableMediaSink_GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink) (This)->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink)
3861 #define IMFFinalizableMediaSink_SetPresentationClock(This,pPresentationClock) (This)->lpVtbl->SetPresentationClock(This,pPresentationClock)
3862 #define IMFFinalizableMediaSink_GetPresentationClock(This,ppPresentationClock) (This)->lpVtbl->GetPresentationClock(This,ppPresentationClock)
3863 #define IMFFinalizableMediaSink_Shutdown(This) (This)->lpVtbl->Shutdown(This)
3864 /*** IMFFinalizableMediaSink methods ***/
3865 #define IMFFinalizableMediaSink_BeginFinalize(This,pCallback,punkState) (This)->lpVtbl->BeginFinalize(This,pCallback,punkState)
3866 #define IMFFinalizableMediaSink_EndFinalize(This,pResult) (This)->lpVtbl->EndFinalize(This,pResult)
3867 #else
3868 /*** IUnknown methods ***/
3869 static FORCEINLINE HRESULT IMFFinalizableMediaSink_QueryInterface(IMFFinalizableMediaSink* This,REFIID riid,void **ppvObject) {
3870     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3871 }
3872 static FORCEINLINE ULONG IMFFinalizableMediaSink_AddRef(IMFFinalizableMediaSink* This) {
3873     return This->lpVtbl->AddRef(This);
3874 }
3875 static FORCEINLINE ULONG IMFFinalizableMediaSink_Release(IMFFinalizableMediaSink* This) {
3876     return This->lpVtbl->Release(This);
3877 }
3878 /*** IMFMediaSink methods ***/
3879 static FORCEINLINE HRESULT IMFFinalizableMediaSink_GetCharacteristics(IMFFinalizableMediaSink* This,DWORD *pdwCharacteristics) {
3880     return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
3881 }
3882 static FORCEINLINE HRESULT IMFFinalizableMediaSink_AddStreamSink(IMFFinalizableMediaSink* This,DWORD dwStreamSinkIdentifier,IMFMediaType *pMediaType,IMFStreamSink **ppStreamSink) {
3883     return This->lpVtbl->AddStreamSink(This,dwStreamSinkIdentifier,pMediaType,ppStreamSink);
3884 }
3885 static FORCEINLINE HRESULT IMFFinalizableMediaSink_RemoveStreamSink(IMFFinalizableMediaSink* This,DWORD dwStreamSinkIdentifier) {
3886     return This->lpVtbl->RemoveStreamSink(This,dwStreamSinkIdentifier);
3887 }
3888 static FORCEINLINE HRESULT IMFFinalizableMediaSink_GetStreamSinkCount(IMFFinalizableMediaSink* This,DWORD *pcStreamSinkCount) {
3889     return This->lpVtbl->GetStreamSinkCount(This,pcStreamSinkCount);
3890 }
3891 static FORCEINLINE HRESULT IMFFinalizableMediaSink_GetStreamSinkByIndex(IMFFinalizableMediaSink* This,DWORD dwIndex,IMFStreamSink **ppStreamSink) {
3892     return This->lpVtbl->GetStreamSinkByIndex(This,dwIndex,ppStreamSink);
3893 }
3894 static FORCEINLINE HRESULT IMFFinalizableMediaSink_GetStreamSinkById(IMFFinalizableMediaSink* This,DWORD dwStreamSinkIdentifier,IMFStreamSink **ppStreamSink) {
3895     return This->lpVtbl->GetStreamSinkById(This,dwStreamSinkIdentifier,ppStreamSink);
3896 }
3897 static FORCEINLINE HRESULT IMFFinalizableMediaSink_SetPresentationClock(IMFFinalizableMediaSink* This,IMFPresentationClock *pPresentationClock) {
3898     return This->lpVtbl->SetPresentationClock(This,pPresentationClock);
3899 }
3900 static FORCEINLINE HRESULT IMFFinalizableMediaSink_GetPresentationClock(IMFFinalizableMediaSink* This,IMFPresentationClock **ppPresentationClock) {
3901     return This->lpVtbl->GetPresentationClock(This,ppPresentationClock);
3902 }
3903 static FORCEINLINE HRESULT IMFFinalizableMediaSink_Shutdown(IMFFinalizableMediaSink* This) {
3904     return This->lpVtbl->Shutdown(This);
3905 }
3906 /*** IMFFinalizableMediaSink methods ***/
3907 static FORCEINLINE HRESULT IMFFinalizableMediaSink_BeginFinalize(IMFFinalizableMediaSink* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
3908     return This->lpVtbl->BeginFinalize(This,pCallback,punkState);
3909 }
3910 static FORCEINLINE HRESULT IMFFinalizableMediaSink_EndFinalize(IMFFinalizableMediaSink* This,IMFAsyncResult *pResult) {
3911     return This->lpVtbl->EndFinalize(This,pResult);
3912 }
3913 #endif
3914 #endif
3915 
3916 #endif
3917 
3918 
3919 #endif  /* __IMFFinalizableMediaSink_INTERFACE_DEFINED__ */
3920 
3921 /*****************************************************************************
3922  * IMFMediaSinkPreroll interface
3923  */
3924 #ifndef __IMFMediaSinkPreroll_INTERFACE_DEFINED__
3925 #define __IMFMediaSinkPreroll_INTERFACE_DEFINED__
3926 
3927 DEFINE_GUID(IID_IMFMediaSinkPreroll, 0x5dfd4b2a, 0x7674, 0x4110, 0xa4,0xe6, 0x8a,0x68,0xfd,0x5f,0x36,0x88);
3928 #if defined(__cplusplus) && !defined(CINTERFACE)
3929 MIDL_INTERFACE("5dfd4b2a-7674-4110-a4e6-8a68fd5f3688")
3930 IMFMediaSinkPreroll : public IUnknown
3931 {
3932     virtual HRESULT STDMETHODCALLTYPE NotifyPreroll(
3933         MFTIME hnsUpcomingStartTime) = 0;
3934 
3935 };
3936 #ifdef __CRT_UUID_DECL
3937 __CRT_UUID_DECL(IMFMediaSinkPreroll, 0x5dfd4b2a, 0x7674, 0x4110, 0xa4,0xe6, 0x8a,0x68,0xfd,0x5f,0x36,0x88)
3938 #endif
3939 #else
3940 typedef struct IMFMediaSinkPrerollVtbl {
3941     BEGIN_INTERFACE
3942 
3943     /*** IUnknown methods ***/
3944     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3945         IMFMediaSinkPreroll *This,
3946         REFIID riid,
3947         void **ppvObject);
3948 
3949     ULONG (STDMETHODCALLTYPE *AddRef)(
3950         IMFMediaSinkPreroll *This);
3951 
3952     ULONG (STDMETHODCALLTYPE *Release)(
3953         IMFMediaSinkPreroll *This);
3954 
3955     /*** IMFMediaSinkPreroll methods ***/
3956     HRESULT (STDMETHODCALLTYPE *NotifyPreroll)(
3957         IMFMediaSinkPreroll *This,
3958         MFTIME hnsUpcomingStartTime);
3959 
3960     END_INTERFACE
3961 } IMFMediaSinkPrerollVtbl;
3962 
3963 interface IMFMediaSinkPreroll {
3964     CONST_VTBL IMFMediaSinkPrerollVtbl* lpVtbl;
3965 };
3966 
3967 #ifdef COBJMACROS
3968 #ifndef WIDL_C_INLINE_WRAPPERS
3969 /*** IUnknown methods ***/
3970 #define IMFMediaSinkPreroll_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3971 #define IMFMediaSinkPreroll_AddRef(This) (This)->lpVtbl->AddRef(This)
3972 #define IMFMediaSinkPreroll_Release(This) (This)->lpVtbl->Release(This)
3973 /*** IMFMediaSinkPreroll methods ***/
3974 #define IMFMediaSinkPreroll_NotifyPreroll(This,hnsUpcomingStartTime) (This)->lpVtbl->NotifyPreroll(This,hnsUpcomingStartTime)
3975 #else
3976 /*** IUnknown methods ***/
3977 static FORCEINLINE HRESULT IMFMediaSinkPreroll_QueryInterface(IMFMediaSinkPreroll* This,REFIID riid,void **ppvObject) {
3978     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3979 }
3980 static FORCEINLINE ULONG IMFMediaSinkPreroll_AddRef(IMFMediaSinkPreroll* This) {
3981     return This->lpVtbl->AddRef(This);
3982 }
3983 static FORCEINLINE ULONG IMFMediaSinkPreroll_Release(IMFMediaSinkPreroll* This) {
3984     return This->lpVtbl->Release(This);
3985 }
3986 /*** IMFMediaSinkPreroll methods ***/
3987 static FORCEINLINE HRESULT IMFMediaSinkPreroll_NotifyPreroll(IMFMediaSinkPreroll* This,MFTIME hnsUpcomingStartTime) {
3988     return This->lpVtbl->NotifyPreroll(This,hnsUpcomingStartTime);
3989 }
3990 #endif
3991 #endif
3992 
3993 #endif
3994 
3995 
3996 #endif  /* __IMFMediaSinkPreroll_INTERFACE_DEFINED__ */
3997 
3998 /*****************************************************************************
3999  * IMFMediaStream interface
4000  */
4001 #ifndef __IMFMediaStream_INTERFACE_DEFINED__
4002 #define __IMFMediaStream_INTERFACE_DEFINED__
4003 
4004 DEFINE_GUID(IID_IMFMediaStream, 0xd182108f, 0x4ec6, 0x443f, 0xaa,0x42, 0xa7,0x11,0x06,0xec,0x82,0x5f);
4005 #if defined(__cplusplus) && !defined(CINTERFACE)
4006 MIDL_INTERFACE("d182108f-4ec6-443f-aa42-a71106ec825f")
4007 IMFMediaStream : public IMFMediaEventGenerator
4008 {
4009     virtual HRESULT STDMETHODCALLTYPE GetMediaSource(
4010         IMFMediaSource **ppMediaSource) = 0;
4011 
4012     virtual HRESULT STDMETHODCALLTYPE GetStreamDescriptor(
4013         IMFStreamDescriptor **ppStreamDescriptor) = 0;
4014 
4015     virtual HRESULT STDMETHODCALLTYPE RequestSample(
4016         IUnknown *pToken) = 0;
4017 
4018 };
4019 #ifdef __CRT_UUID_DECL
4020 __CRT_UUID_DECL(IMFMediaStream, 0xd182108f, 0x4ec6, 0x443f, 0xaa,0x42, 0xa7,0x11,0x06,0xec,0x82,0x5f)
4021 #endif
4022 #else
4023 typedef struct IMFMediaStreamVtbl {
4024     BEGIN_INTERFACE
4025 
4026     /*** IUnknown methods ***/
4027     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4028         IMFMediaStream *This,
4029         REFIID riid,
4030         void **ppvObject);
4031 
4032     ULONG (STDMETHODCALLTYPE *AddRef)(
4033         IMFMediaStream *This);
4034 
4035     ULONG (STDMETHODCALLTYPE *Release)(
4036         IMFMediaStream *This);
4037 
4038     /*** IMFMediaEventGenerator methods ***/
4039     HRESULT (STDMETHODCALLTYPE *GetEvent)(
4040         IMFMediaStream *This,
4041         DWORD dwFlags,
4042         IMFMediaEvent **ppEvent);
4043 
4044     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
4045         IMFMediaStream *This,
4046         IMFAsyncCallback *pCallback,
4047         IUnknown *punkState);
4048 
4049     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
4050         IMFMediaStream *This,
4051         IMFAsyncResult *pResult,
4052         IMFMediaEvent **ppEvent);
4053 
4054     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
4055         IMFMediaStream *This,
4056         MediaEventType met,
4057         REFGUID guidExtendedType,
4058         HRESULT hrStatus,
4059         const PROPVARIANT *pvValue);
4060 
4061     /*** IMFMediaStream methods ***/
4062     HRESULT (STDMETHODCALLTYPE *GetMediaSource)(
4063         IMFMediaStream *This,
4064         IMFMediaSource **ppMediaSource);
4065 
4066     HRESULT (STDMETHODCALLTYPE *GetStreamDescriptor)(
4067         IMFMediaStream *This,
4068         IMFStreamDescriptor **ppStreamDescriptor);
4069 
4070     HRESULT (STDMETHODCALLTYPE *RequestSample)(
4071         IMFMediaStream *This,
4072         IUnknown *pToken);
4073 
4074     END_INTERFACE
4075 } IMFMediaStreamVtbl;
4076 
4077 interface IMFMediaStream {
4078     CONST_VTBL IMFMediaStreamVtbl* lpVtbl;
4079 };
4080 
4081 #ifdef COBJMACROS
4082 #ifndef WIDL_C_INLINE_WRAPPERS
4083 /*** IUnknown methods ***/
4084 #define IMFMediaStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4085 #define IMFMediaStream_AddRef(This) (This)->lpVtbl->AddRef(This)
4086 #define IMFMediaStream_Release(This) (This)->lpVtbl->Release(This)
4087 /*** IMFMediaEventGenerator methods ***/
4088 #define IMFMediaStream_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
4089 #define IMFMediaStream_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
4090 #define IMFMediaStream_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
4091 #define IMFMediaStream_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
4092 /*** IMFMediaStream methods ***/
4093 #define IMFMediaStream_GetMediaSource(This,ppMediaSource) (This)->lpVtbl->GetMediaSource(This,ppMediaSource)
4094 #define IMFMediaStream_GetStreamDescriptor(This,ppStreamDescriptor) (This)->lpVtbl->GetStreamDescriptor(This,ppStreamDescriptor)
4095 #define IMFMediaStream_RequestSample(This,pToken) (This)->lpVtbl->RequestSample(This,pToken)
4096 #else
4097 /*** IUnknown methods ***/
4098 static FORCEINLINE HRESULT IMFMediaStream_QueryInterface(IMFMediaStream* This,REFIID riid,void **ppvObject) {
4099     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4100 }
4101 static FORCEINLINE ULONG IMFMediaStream_AddRef(IMFMediaStream* This) {
4102     return This->lpVtbl->AddRef(This);
4103 }
4104 static FORCEINLINE ULONG IMFMediaStream_Release(IMFMediaStream* This) {
4105     return This->lpVtbl->Release(This);
4106 }
4107 /*** IMFMediaEventGenerator methods ***/
4108 static FORCEINLINE HRESULT IMFMediaStream_GetEvent(IMFMediaStream* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
4109     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
4110 }
4111 static FORCEINLINE HRESULT IMFMediaStream_BeginGetEvent(IMFMediaStream* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
4112     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
4113 }
4114 static FORCEINLINE HRESULT IMFMediaStream_EndGetEvent(IMFMediaStream* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
4115     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
4116 }
4117 static FORCEINLINE HRESULT IMFMediaStream_QueueEvent(IMFMediaStream* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
4118     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
4119 }
4120 /*** IMFMediaStream methods ***/
4121 static FORCEINLINE HRESULT IMFMediaStream_GetMediaSource(IMFMediaStream* This,IMFMediaSource **ppMediaSource) {
4122     return This->lpVtbl->GetMediaSource(This,ppMediaSource);
4123 }
4124 static FORCEINLINE HRESULT IMFMediaStream_GetStreamDescriptor(IMFMediaStream* This,IMFStreamDescriptor **ppStreamDescriptor) {
4125     return This->lpVtbl->GetStreamDescriptor(This,ppStreamDescriptor);
4126 }
4127 static FORCEINLINE HRESULT IMFMediaStream_RequestSample(IMFMediaStream* This,IUnknown *pToken) {
4128     return This->lpVtbl->RequestSample(This,pToken);
4129 }
4130 #endif
4131 #endif
4132 
4133 #endif
4134 
4135 HRESULT STDMETHODCALLTYPE IMFMediaStream_RemoteRequestSample_Proxy(
4136     IMFMediaStream* This);
4137 void __RPC_STUB IMFMediaStream_RemoteRequestSample_Stub(
4138     IRpcStubBuffer* This,
4139     IRpcChannelBuffer* pRpcChannelBuffer,
4140     PRPC_MESSAGE pRpcMessage,
4141     DWORD* pdwStubPhase);
4142 HRESULT CALLBACK IMFMediaStream_RequestSample_Proxy(
4143     IMFMediaStream* This,
4144     IUnknown *pToken);
4145 HRESULT __RPC_STUB IMFMediaStream_RequestSample_Stub(
4146     IMFMediaStream* This);
4147 
4148 #endif  /* __IMFMediaStream_INTERFACE_DEFINED__ */
4149 
4150 /*****************************************************************************
4151  * IMFMetadata interface
4152  */
4153 #ifndef __IMFMetadata_INTERFACE_DEFINED__
4154 #define __IMFMetadata_INTERFACE_DEFINED__
4155 
4156 DEFINE_GUID(IID_IMFMetadata, 0xf88cfb8c, 0xef16, 0x4991, 0xb4,0x50, 0xcb,0x8c,0x69,0xe5,0x17,0x04);
4157 #if defined(__cplusplus) && !defined(CINTERFACE)
4158 MIDL_INTERFACE("f88cfb8c-ef16-4991-b450-cb8c69e51704")
4159 IMFMetadata : public IUnknown
4160 {
4161     virtual HRESULT STDMETHODCALLTYPE SetLanguage(
4162         LPCWSTR pwszRFC1766) = 0;
4163 
4164     virtual HRESULT STDMETHODCALLTYPE GetLanguage(
4165         LPWSTR *ppwszRFC1766) = 0;
4166 
4167     virtual HRESULT STDMETHODCALLTYPE GetAllLanguages(
4168         PROPVARIANT *ppvLanguages) = 0;
4169 
4170     virtual HRESULT STDMETHODCALLTYPE SetProperty(
4171         LPCWSTR pwszName,
4172         const PROPVARIANT *ppvValue) = 0;
4173 
4174     virtual HRESULT STDMETHODCALLTYPE GetProperty(
4175         LPCWSTR pwszName,
4176         PROPVARIANT *ppvValue) = 0;
4177 
4178     virtual HRESULT STDMETHODCALLTYPE DeleteProperty(
4179         LPCWSTR pwszName) = 0;
4180 
4181     virtual HRESULT STDMETHODCALLTYPE GetAllPropertyNames(
4182         PROPVARIANT *ppvNames) = 0;
4183 
4184 };
4185 #ifdef __CRT_UUID_DECL
4186 __CRT_UUID_DECL(IMFMetadata, 0xf88cfb8c, 0xef16, 0x4991, 0xb4,0x50, 0xcb,0x8c,0x69,0xe5,0x17,0x04)
4187 #endif
4188 #else
4189 typedef struct IMFMetadataVtbl {
4190     BEGIN_INTERFACE
4191 
4192     /*** IUnknown methods ***/
4193     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4194         IMFMetadata *This,
4195         REFIID riid,
4196         void **ppvObject);
4197 
4198     ULONG (STDMETHODCALLTYPE *AddRef)(
4199         IMFMetadata *This);
4200 
4201     ULONG (STDMETHODCALLTYPE *Release)(
4202         IMFMetadata *This);
4203 
4204     /*** IMFMetadata methods ***/
4205     HRESULT (STDMETHODCALLTYPE *SetLanguage)(
4206         IMFMetadata *This,
4207         LPCWSTR pwszRFC1766);
4208 
4209     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
4210         IMFMetadata *This,
4211         LPWSTR *ppwszRFC1766);
4212 
4213     HRESULT (STDMETHODCALLTYPE *GetAllLanguages)(
4214         IMFMetadata *This,
4215         PROPVARIANT *ppvLanguages);
4216 
4217     HRESULT (STDMETHODCALLTYPE *SetProperty)(
4218         IMFMetadata *This,
4219         LPCWSTR pwszName,
4220         const PROPVARIANT *ppvValue);
4221 
4222     HRESULT (STDMETHODCALLTYPE *GetProperty)(
4223         IMFMetadata *This,
4224         LPCWSTR pwszName,
4225         PROPVARIANT *ppvValue);
4226 
4227     HRESULT (STDMETHODCALLTYPE *DeleteProperty)(
4228         IMFMetadata *This,
4229         LPCWSTR pwszName);
4230 
4231     HRESULT (STDMETHODCALLTYPE *GetAllPropertyNames)(
4232         IMFMetadata *This,
4233         PROPVARIANT *ppvNames);
4234 
4235     END_INTERFACE
4236 } IMFMetadataVtbl;
4237 
4238 interface IMFMetadata {
4239     CONST_VTBL IMFMetadataVtbl* lpVtbl;
4240 };
4241 
4242 #ifdef COBJMACROS
4243 #ifndef WIDL_C_INLINE_WRAPPERS
4244 /*** IUnknown methods ***/
4245 #define IMFMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4246 #define IMFMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
4247 #define IMFMetadata_Release(This) (This)->lpVtbl->Release(This)
4248 /*** IMFMetadata methods ***/
4249 #define IMFMetadata_SetLanguage(This,pwszRFC1766) (This)->lpVtbl->SetLanguage(This,pwszRFC1766)
4250 #define IMFMetadata_GetLanguage(This,ppwszRFC1766) (This)->lpVtbl->GetLanguage(This,ppwszRFC1766)
4251 #define IMFMetadata_GetAllLanguages(This,ppvLanguages) (This)->lpVtbl->GetAllLanguages(This,ppvLanguages)
4252 #define IMFMetadata_SetProperty(This,pwszName,ppvValue) (This)->lpVtbl->SetProperty(This,pwszName,ppvValue)
4253 #define IMFMetadata_GetProperty(This,pwszName,ppvValue) (This)->lpVtbl->GetProperty(This,pwszName,ppvValue)
4254 #define IMFMetadata_DeleteProperty(This,pwszName) (This)->lpVtbl->DeleteProperty(This,pwszName)
4255 #define IMFMetadata_GetAllPropertyNames(This,ppvNames) (This)->lpVtbl->GetAllPropertyNames(This,ppvNames)
4256 #else
4257 /*** IUnknown methods ***/
4258 static FORCEINLINE HRESULT IMFMetadata_QueryInterface(IMFMetadata* This,REFIID riid,void **ppvObject) {
4259     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4260 }
4261 static FORCEINLINE ULONG IMFMetadata_AddRef(IMFMetadata* This) {
4262     return This->lpVtbl->AddRef(This);
4263 }
4264 static FORCEINLINE ULONG IMFMetadata_Release(IMFMetadata* This) {
4265     return This->lpVtbl->Release(This);
4266 }
4267 /*** IMFMetadata methods ***/
4268 static FORCEINLINE HRESULT IMFMetadata_SetLanguage(IMFMetadata* This,LPCWSTR pwszRFC1766) {
4269     return This->lpVtbl->SetLanguage(This,pwszRFC1766);
4270 }
4271 static FORCEINLINE HRESULT IMFMetadata_GetLanguage(IMFMetadata* This,LPWSTR *ppwszRFC1766) {
4272     return This->lpVtbl->GetLanguage(This,ppwszRFC1766);
4273 }
4274 static FORCEINLINE HRESULT IMFMetadata_GetAllLanguages(IMFMetadata* This,PROPVARIANT *ppvLanguages) {
4275     return This->lpVtbl->GetAllLanguages(This,ppvLanguages);
4276 }
4277 static FORCEINLINE HRESULT IMFMetadata_SetProperty(IMFMetadata* This,LPCWSTR pwszName,const PROPVARIANT *ppvValue) {
4278     return This->lpVtbl->SetProperty(This,pwszName,ppvValue);
4279 }
4280 static FORCEINLINE HRESULT IMFMetadata_GetProperty(IMFMetadata* This,LPCWSTR pwszName,PROPVARIANT *ppvValue) {
4281     return This->lpVtbl->GetProperty(This,pwszName,ppvValue);
4282 }
4283 static FORCEINLINE HRESULT IMFMetadata_DeleteProperty(IMFMetadata* This,LPCWSTR pwszName) {
4284     return This->lpVtbl->DeleteProperty(This,pwszName);
4285 }
4286 static FORCEINLINE HRESULT IMFMetadata_GetAllPropertyNames(IMFMetadata* This,PROPVARIANT *ppvNames) {
4287     return This->lpVtbl->GetAllPropertyNames(This,ppvNames);
4288 }
4289 #endif
4290 #endif
4291 
4292 #endif
4293 
4294 
4295 #endif  /* __IMFMetadata_INTERFACE_DEFINED__ */
4296 
4297 /*****************************************************************************
4298  * IMFMetadataProvider interface
4299  */
4300 #ifndef __IMFMetadataProvider_INTERFACE_DEFINED__
4301 #define __IMFMetadataProvider_INTERFACE_DEFINED__
4302 
4303 DEFINE_GUID(IID_IMFMetadataProvider, 0x56181d2d, 0xe221, 0x4adb, 0xb1,0xc8, 0x3c,0xee,0x6a,0x53,0xf7,0x6f);
4304 #if defined(__cplusplus) && !defined(CINTERFACE)
4305 MIDL_INTERFACE("56181d2d-e221-4adb-b1c8-3cee6a53f76f")
4306 IMFMetadataProvider : public IUnknown
4307 {
4308     virtual HRESULT STDMETHODCALLTYPE GetMFMetadata(
4309         IMFPresentationDescriptor *pPresentationDescriptor,
4310         DWORD dwStreamIdentifier,
4311         DWORD dwFlags,
4312         IMFMetadata **ppMFMetadata) = 0;
4313 
4314 };
4315 #ifdef __CRT_UUID_DECL
4316 __CRT_UUID_DECL(IMFMetadataProvider, 0x56181d2d, 0xe221, 0x4adb, 0xb1,0xc8, 0x3c,0xee,0x6a,0x53,0xf7,0x6f)
4317 #endif
4318 #else
4319 typedef struct IMFMetadataProviderVtbl {
4320     BEGIN_INTERFACE
4321 
4322     /*** IUnknown methods ***/
4323     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4324         IMFMetadataProvider *This,
4325         REFIID riid,
4326         void **ppvObject);
4327 
4328     ULONG (STDMETHODCALLTYPE *AddRef)(
4329         IMFMetadataProvider *This);
4330 
4331     ULONG (STDMETHODCALLTYPE *Release)(
4332         IMFMetadataProvider *This);
4333 
4334     /*** IMFMetadataProvider methods ***/
4335     HRESULT (STDMETHODCALLTYPE *GetMFMetadata)(
4336         IMFMetadataProvider *This,
4337         IMFPresentationDescriptor *pPresentationDescriptor,
4338         DWORD dwStreamIdentifier,
4339         DWORD dwFlags,
4340         IMFMetadata **ppMFMetadata);
4341 
4342     END_INTERFACE
4343 } IMFMetadataProviderVtbl;
4344 
4345 interface IMFMetadataProvider {
4346     CONST_VTBL IMFMetadataProviderVtbl* lpVtbl;
4347 };
4348 
4349 #ifdef COBJMACROS
4350 #ifndef WIDL_C_INLINE_WRAPPERS
4351 /*** IUnknown methods ***/
4352 #define IMFMetadataProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4353 #define IMFMetadataProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
4354 #define IMFMetadataProvider_Release(This) (This)->lpVtbl->Release(This)
4355 /*** IMFMetadataProvider methods ***/
4356 #define IMFMetadataProvider_GetMFMetadata(This,pPresentationDescriptor,dwStreamIdentifier,dwFlags,ppMFMetadata) (This)->lpVtbl->GetMFMetadata(This,pPresentationDescriptor,dwStreamIdentifier,dwFlags,ppMFMetadata)
4357 #else
4358 /*** IUnknown methods ***/
4359 static FORCEINLINE HRESULT IMFMetadataProvider_QueryInterface(IMFMetadataProvider* This,REFIID riid,void **ppvObject) {
4360     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4361 }
4362 static FORCEINLINE ULONG IMFMetadataProvider_AddRef(IMFMetadataProvider* This) {
4363     return This->lpVtbl->AddRef(This);
4364 }
4365 static FORCEINLINE ULONG IMFMetadataProvider_Release(IMFMetadataProvider* This) {
4366     return This->lpVtbl->Release(This);
4367 }
4368 /*** IMFMetadataProvider methods ***/
4369 static FORCEINLINE HRESULT IMFMetadataProvider_GetMFMetadata(IMFMetadataProvider* This,IMFPresentationDescriptor *pPresentationDescriptor,DWORD dwStreamIdentifier,DWORD dwFlags,IMFMetadata **ppMFMetadata) {
4370     return This->lpVtbl->GetMFMetadata(This,pPresentationDescriptor,dwStreamIdentifier,dwFlags,ppMFMetadata);
4371 }
4372 #endif
4373 #endif
4374 
4375 #endif
4376 
4377 
4378 #endif  /* __IMFMetadataProvider_INTERFACE_DEFINED__ */
4379 
4380 /*****************************************************************************
4381  * IMFPresentationTimeSource interface
4382  */
4383 #ifndef __IMFPresentationTimeSource_INTERFACE_DEFINED__
4384 #define __IMFPresentationTimeSource_INTERFACE_DEFINED__
4385 
4386 DEFINE_GUID(IID_IMFPresentationTimeSource, 0x7ff12cce, 0xf76f, 0x41c2, 0x86,0x3b, 0x16,0x66,0xc8,0xe5,0xe1,0x39);
4387 #if defined(__cplusplus) && !defined(CINTERFACE)
4388 MIDL_INTERFACE("7ff12cce-f76f-41c2-863b-1666c8e5e139")
4389 IMFPresentationTimeSource : public IMFClock
4390 {
4391     virtual HRESULT STDMETHODCALLTYPE GetUnderlyingClock(
4392         IMFClock **ppClock) = 0;
4393 
4394 };
4395 #ifdef __CRT_UUID_DECL
4396 __CRT_UUID_DECL(IMFPresentationTimeSource, 0x7ff12cce, 0xf76f, 0x41c2, 0x86,0x3b, 0x16,0x66,0xc8,0xe5,0xe1,0x39)
4397 #endif
4398 #else
4399 typedef struct IMFPresentationTimeSourceVtbl {
4400     BEGIN_INTERFACE
4401 
4402     /*** IUnknown methods ***/
4403     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4404         IMFPresentationTimeSource *This,
4405         REFIID riid,
4406         void **ppvObject);
4407 
4408     ULONG (STDMETHODCALLTYPE *AddRef)(
4409         IMFPresentationTimeSource *This);
4410 
4411     ULONG (STDMETHODCALLTYPE *Release)(
4412         IMFPresentationTimeSource *This);
4413 
4414     /*** IMFClock methods ***/
4415     HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
4416         IMFPresentationTimeSource *This,
4417         DWORD *pdwCharacteristics);
4418 
4419     HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
4420         IMFPresentationTimeSource *This,
4421         DWORD dwReserved,
4422         LONGLONG *pllClockTime,
4423         MFTIME *phnsSystemTime);
4424 
4425     HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
4426         IMFPresentationTimeSource *This,
4427         DWORD *pdwContinuityKey);
4428 
4429     HRESULT (STDMETHODCALLTYPE *GetState)(
4430         IMFPresentationTimeSource *This,
4431         DWORD dwReserved,
4432         MFCLOCK_STATE *peClockState);
4433 
4434     HRESULT (STDMETHODCALLTYPE *GetProperties)(
4435         IMFPresentationTimeSource *This,
4436         MFCLOCK_PROPERTIES *pClockProperties);
4437 
4438     /*** IMFPresentationTimeSource methods ***/
4439     HRESULT (STDMETHODCALLTYPE *GetUnderlyingClock)(
4440         IMFPresentationTimeSource *This,
4441         IMFClock **ppClock);
4442 
4443     END_INTERFACE
4444 } IMFPresentationTimeSourceVtbl;
4445 
4446 interface IMFPresentationTimeSource {
4447     CONST_VTBL IMFPresentationTimeSourceVtbl* lpVtbl;
4448 };
4449 
4450 #ifdef COBJMACROS
4451 #ifndef WIDL_C_INLINE_WRAPPERS
4452 /*** IUnknown methods ***/
4453 #define IMFPresentationTimeSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4454 #define IMFPresentationTimeSource_AddRef(This) (This)->lpVtbl->AddRef(This)
4455 #define IMFPresentationTimeSource_Release(This) (This)->lpVtbl->Release(This)
4456 /*** IMFClock methods ***/
4457 #define IMFPresentationTimeSource_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
4458 #define IMFPresentationTimeSource_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
4459 #define IMFPresentationTimeSource_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
4460 #define IMFPresentationTimeSource_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
4461 #define IMFPresentationTimeSource_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
4462 /*** IMFPresentationTimeSource methods ***/
4463 #define IMFPresentationTimeSource_GetUnderlyingClock(This,ppClock) (This)->lpVtbl->GetUnderlyingClock(This,ppClock)
4464 #else
4465 /*** IUnknown methods ***/
4466 static FORCEINLINE HRESULT IMFPresentationTimeSource_QueryInterface(IMFPresentationTimeSource* This,REFIID riid,void **ppvObject) {
4467     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4468 }
4469 static FORCEINLINE ULONG IMFPresentationTimeSource_AddRef(IMFPresentationTimeSource* This) {
4470     return This->lpVtbl->AddRef(This);
4471 }
4472 static FORCEINLINE ULONG IMFPresentationTimeSource_Release(IMFPresentationTimeSource* This) {
4473     return This->lpVtbl->Release(This);
4474 }
4475 /*** IMFClock methods ***/
4476 static FORCEINLINE HRESULT IMFPresentationTimeSource_GetClockCharacteristics(IMFPresentationTimeSource* This,DWORD *pdwCharacteristics) {
4477     return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
4478 }
4479 static FORCEINLINE HRESULT IMFPresentationTimeSource_GetCorrelatedTime(IMFPresentationTimeSource* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
4480     return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
4481 }
4482 static FORCEINLINE HRESULT IMFPresentationTimeSource_GetContinuityKey(IMFPresentationTimeSource* This,DWORD *pdwContinuityKey) {
4483     return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
4484 }
4485 static FORCEINLINE HRESULT IMFPresentationTimeSource_GetState(IMFPresentationTimeSource* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
4486     return This->lpVtbl->GetState(This,dwReserved,peClockState);
4487 }
4488 static FORCEINLINE HRESULT IMFPresentationTimeSource_GetProperties(IMFPresentationTimeSource* This,MFCLOCK_PROPERTIES *pClockProperties) {
4489     return This->lpVtbl->GetProperties(This,pClockProperties);
4490 }
4491 /*** IMFPresentationTimeSource methods ***/
4492 static FORCEINLINE HRESULT IMFPresentationTimeSource_GetUnderlyingClock(IMFPresentationTimeSource* This,IMFClock **ppClock) {
4493     return This->lpVtbl->GetUnderlyingClock(This,ppClock);
4494 }
4495 #endif
4496 #endif
4497 
4498 #endif
4499 
4500 
4501 #endif  /* __IMFPresentationTimeSource_INTERFACE_DEFINED__ */
4502 
4503 /*****************************************************************************
4504  * IMFPresentationClock interface
4505  */
4506 #ifndef __IMFPresentationClock_INTERFACE_DEFINED__
4507 #define __IMFPresentationClock_INTERFACE_DEFINED__
4508 
4509 DEFINE_GUID(IID_IMFPresentationClock, 0x868ce85c, 0x8ea9, 0x4f55, 0xab,0x82, 0xb0,0x09,0xa9,0x10,0xa8,0x05);
4510 #if defined(__cplusplus) && !defined(CINTERFACE)
4511 MIDL_INTERFACE("868ce85c-8ea9-4f55-ab82-b009a910a805")
4512 IMFPresentationClock : public IMFClock
4513 {
4514     virtual HRESULT STDMETHODCALLTYPE SetTimeSource(
4515         IMFPresentationTimeSource *pTimeSource) = 0;
4516 
4517     virtual HRESULT STDMETHODCALLTYPE GetTimeSource(
4518         IMFPresentationTimeSource **ppTimeSource) = 0;
4519 
4520     virtual HRESULT STDMETHODCALLTYPE GetTime(
4521         MFTIME *phnsClockTime) = 0;
4522 
4523     virtual HRESULT STDMETHODCALLTYPE AddClockStateSink(
4524         IMFClockStateSink *pStateSink) = 0;
4525 
4526     virtual HRESULT STDMETHODCALLTYPE RemoveClockStateSink(
4527         IMFClockStateSink *pStateSink) = 0;
4528 
4529     virtual HRESULT STDMETHODCALLTYPE Start(
4530         LONGLONG llClockStartOffset) = 0;
4531 
4532     virtual HRESULT STDMETHODCALLTYPE Stop(
4533         ) = 0;
4534 
4535     virtual HRESULT STDMETHODCALLTYPE Pause(
4536         ) = 0;
4537 
4538 };
4539 #ifdef __CRT_UUID_DECL
4540 __CRT_UUID_DECL(IMFPresentationClock, 0x868ce85c, 0x8ea9, 0x4f55, 0xab,0x82, 0xb0,0x09,0xa9,0x10,0xa8,0x05)
4541 #endif
4542 #else
4543 typedef struct IMFPresentationClockVtbl {
4544     BEGIN_INTERFACE
4545 
4546     /*** IUnknown methods ***/
4547     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4548         IMFPresentationClock *This,
4549         REFIID riid,
4550         void **ppvObject);
4551 
4552     ULONG (STDMETHODCALLTYPE *AddRef)(
4553         IMFPresentationClock *This);
4554 
4555     ULONG (STDMETHODCALLTYPE *Release)(
4556         IMFPresentationClock *This);
4557 
4558     /*** IMFClock methods ***/
4559     HRESULT (STDMETHODCALLTYPE *GetClockCharacteristics)(
4560         IMFPresentationClock *This,
4561         DWORD *pdwCharacteristics);
4562 
4563     HRESULT (STDMETHODCALLTYPE *GetCorrelatedTime)(
4564         IMFPresentationClock *This,
4565         DWORD dwReserved,
4566         LONGLONG *pllClockTime,
4567         MFTIME *phnsSystemTime);
4568 
4569     HRESULT (STDMETHODCALLTYPE *GetContinuityKey)(
4570         IMFPresentationClock *This,
4571         DWORD *pdwContinuityKey);
4572 
4573     HRESULT (STDMETHODCALLTYPE *GetState)(
4574         IMFPresentationClock *This,
4575         DWORD dwReserved,
4576         MFCLOCK_STATE *peClockState);
4577 
4578     HRESULT (STDMETHODCALLTYPE *GetProperties)(
4579         IMFPresentationClock *This,
4580         MFCLOCK_PROPERTIES *pClockProperties);
4581 
4582     /*** IMFPresentationClock methods ***/
4583     HRESULT (STDMETHODCALLTYPE *SetTimeSource)(
4584         IMFPresentationClock *This,
4585         IMFPresentationTimeSource *pTimeSource);
4586 
4587     HRESULT (STDMETHODCALLTYPE *GetTimeSource)(
4588         IMFPresentationClock *This,
4589         IMFPresentationTimeSource **ppTimeSource);
4590 
4591     HRESULT (STDMETHODCALLTYPE *GetTime)(
4592         IMFPresentationClock *This,
4593         MFTIME *phnsClockTime);
4594 
4595     HRESULT (STDMETHODCALLTYPE *AddClockStateSink)(
4596         IMFPresentationClock *This,
4597         IMFClockStateSink *pStateSink);
4598 
4599     HRESULT (STDMETHODCALLTYPE *RemoveClockStateSink)(
4600         IMFPresentationClock *This,
4601         IMFClockStateSink *pStateSink);
4602 
4603     HRESULT (STDMETHODCALLTYPE *Start)(
4604         IMFPresentationClock *This,
4605         LONGLONG llClockStartOffset);
4606 
4607     HRESULT (STDMETHODCALLTYPE *Stop)(
4608         IMFPresentationClock *This);
4609 
4610     HRESULT (STDMETHODCALLTYPE *Pause)(
4611         IMFPresentationClock *This);
4612 
4613     END_INTERFACE
4614 } IMFPresentationClockVtbl;
4615 
4616 interface IMFPresentationClock {
4617     CONST_VTBL IMFPresentationClockVtbl* lpVtbl;
4618 };
4619 
4620 #ifdef COBJMACROS
4621 #ifndef WIDL_C_INLINE_WRAPPERS
4622 /*** IUnknown methods ***/
4623 #define IMFPresentationClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4624 #define IMFPresentationClock_AddRef(This) (This)->lpVtbl->AddRef(This)
4625 #define IMFPresentationClock_Release(This) (This)->lpVtbl->Release(This)
4626 /*** IMFClock methods ***/
4627 #define IMFPresentationClock_GetClockCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics)
4628 #define IMFPresentationClock_GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime) (This)->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime)
4629 #define IMFPresentationClock_GetContinuityKey(This,pdwContinuityKey) (This)->lpVtbl->GetContinuityKey(This,pdwContinuityKey)
4630 #define IMFPresentationClock_GetState(This,dwReserved,peClockState) (This)->lpVtbl->GetState(This,dwReserved,peClockState)
4631 #define IMFPresentationClock_GetProperties(This,pClockProperties) (This)->lpVtbl->GetProperties(This,pClockProperties)
4632 /*** IMFPresentationClock methods ***/
4633 #define IMFPresentationClock_SetTimeSource(This,pTimeSource) (This)->lpVtbl->SetTimeSource(This,pTimeSource)
4634 #define IMFPresentationClock_GetTimeSource(This,ppTimeSource) (This)->lpVtbl->GetTimeSource(This,ppTimeSource)
4635 #define IMFPresentationClock_GetTime(This,phnsClockTime) (This)->lpVtbl->GetTime(This,phnsClockTime)
4636 #define IMFPresentationClock_AddClockStateSink(This,pStateSink) (This)->lpVtbl->AddClockStateSink(This,pStateSink)
4637 #define IMFPresentationClock_RemoveClockStateSink(This,pStateSink) (This)->lpVtbl->RemoveClockStateSink(This,pStateSink)
4638 #define IMFPresentationClock_Start(This,llClockStartOffset) (This)->lpVtbl->Start(This,llClockStartOffset)
4639 #define IMFPresentationClock_Stop(This) (This)->lpVtbl->Stop(This)
4640 #define IMFPresentationClock_Pause(This) (This)->lpVtbl->Pause(This)
4641 #else
4642 /*** IUnknown methods ***/
4643 static FORCEINLINE HRESULT IMFPresentationClock_QueryInterface(IMFPresentationClock* This,REFIID riid,void **ppvObject) {
4644     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4645 }
4646 static FORCEINLINE ULONG IMFPresentationClock_AddRef(IMFPresentationClock* This) {
4647     return This->lpVtbl->AddRef(This);
4648 }
4649 static FORCEINLINE ULONG IMFPresentationClock_Release(IMFPresentationClock* This) {
4650     return This->lpVtbl->Release(This);
4651 }
4652 /*** IMFClock methods ***/
4653 static FORCEINLINE HRESULT IMFPresentationClock_GetClockCharacteristics(IMFPresentationClock* This,DWORD *pdwCharacteristics) {
4654     return This->lpVtbl->GetClockCharacteristics(This,pdwCharacteristics);
4655 }
4656 static FORCEINLINE HRESULT IMFPresentationClock_GetCorrelatedTime(IMFPresentationClock* This,DWORD dwReserved,LONGLONG *pllClockTime,MFTIME *phnsSystemTime) {
4657     return This->lpVtbl->GetCorrelatedTime(This,dwReserved,pllClockTime,phnsSystemTime);
4658 }
4659 static FORCEINLINE HRESULT IMFPresentationClock_GetContinuityKey(IMFPresentationClock* This,DWORD *pdwContinuityKey) {
4660     return This->lpVtbl->GetContinuityKey(This,pdwContinuityKey);
4661 }
4662 static FORCEINLINE HRESULT IMFPresentationClock_GetState(IMFPresentationClock* This,DWORD dwReserved,MFCLOCK_STATE *peClockState) {
4663     return This->lpVtbl->GetState(This,dwReserved,peClockState);
4664 }
4665 static FORCEINLINE HRESULT IMFPresentationClock_GetProperties(IMFPresentationClock* This,MFCLOCK_PROPERTIES *pClockProperties) {
4666     return This->lpVtbl->GetProperties(This,pClockProperties);
4667 }
4668 /*** IMFPresentationClock methods ***/
4669 static FORCEINLINE HRESULT IMFPresentationClock_SetTimeSource(IMFPresentationClock* This,IMFPresentationTimeSource *pTimeSource) {
4670     return This->lpVtbl->SetTimeSource(This,pTimeSource);
4671 }
4672 static FORCEINLINE HRESULT IMFPresentationClock_GetTimeSource(IMFPresentationClock* This,IMFPresentationTimeSource **ppTimeSource) {
4673     return This->lpVtbl->GetTimeSource(This,ppTimeSource);
4674 }
4675 static FORCEINLINE HRESULT IMFPresentationClock_GetTime(IMFPresentationClock* This,MFTIME *phnsClockTime) {
4676     return This->lpVtbl->GetTime(This,phnsClockTime);
4677 }
4678 static FORCEINLINE HRESULT IMFPresentationClock_AddClockStateSink(IMFPresentationClock* This,IMFClockStateSink *pStateSink) {
4679     return This->lpVtbl->AddClockStateSink(This,pStateSink);
4680 }
4681 static FORCEINLINE HRESULT IMFPresentationClock_RemoveClockStateSink(IMFPresentationClock* This,IMFClockStateSink *pStateSink) {
4682     return This->lpVtbl->RemoveClockStateSink(This,pStateSink);
4683 }
4684 static FORCEINLINE HRESULT IMFPresentationClock_Start(IMFPresentationClock* This,LONGLONG llClockStartOffset) {
4685     return This->lpVtbl->Start(This,llClockStartOffset);
4686 }
4687 static FORCEINLINE HRESULT IMFPresentationClock_Stop(IMFPresentationClock* This) {
4688     return This->lpVtbl->Stop(This);
4689 }
4690 static FORCEINLINE HRESULT IMFPresentationClock_Pause(IMFPresentationClock* This) {
4691     return This->lpVtbl->Pause(This);
4692 }
4693 #endif
4694 #endif
4695 
4696 #endif
4697 
4698 
4699 #endif  /* __IMFPresentationClock_INTERFACE_DEFINED__ */
4700 
4701 /*****************************************************************************
4702  * IMFRateControl interface
4703  */
4704 #ifndef __IMFRateControl_INTERFACE_DEFINED__
4705 #define __IMFRateControl_INTERFACE_DEFINED__
4706 
4707 DEFINE_GUID(IID_IMFRateControl, 0x88ddcd21, 0x03c3, 0x4275, 0x91,0xed, 0x55,0xee,0x39,0x29,0x32,0x8f);
4708 #if defined(__cplusplus) && !defined(CINTERFACE)
4709 MIDL_INTERFACE("88ddcd21-03c3-4275-91ed-55ee3929328f")
4710 IMFRateControl : public IUnknown
4711 {
4712     virtual HRESULT STDMETHODCALLTYPE SetRate(
4713         WINBOOL fThin,
4714         float flRate) = 0;
4715 
4716     virtual HRESULT STDMETHODCALLTYPE GetRate(
4717         WINBOOL *pfThin,
4718         float *pflRate) = 0;
4719 
4720 };
4721 #ifdef __CRT_UUID_DECL
4722 __CRT_UUID_DECL(IMFRateControl, 0x88ddcd21, 0x03c3, 0x4275, 0x91,0xed, 0x55,0xee,0x39,0x29,0x32,0x8f)
4723 #endif
4724 #else
4725 typedef struct IMFRateControlVtbl {
4726     BEGIN_INTERFACE
4727 
4728     /*** IUnknown methods ***/
4729     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4730         IMFRateControl *This,
4731         REFIID riid,
4732         void **ppvObject);
4733 
4734     ULONG (STDMETHODCALLTYPE *AddRef)(
4735         IMFRateControl *This);
4736 
4737     ULONG (STDMETHODCALLTYPE *Release)(
4738         IMFRateControl *This);
4739 
4740     /*** IMFRateControl methods ***/
4741     HRESULT (STDMETHODCALLTYPE *SetRate)(
4742         IMFRateControl *This,
4743         WINBOOL fThin,
4744         float flRate);
4745 
4746     HRESULT (STDMETHODCALLTYPE *GetRate)(
4747         IMFRateControl *This,
4748         WINBOOL *pfThin,
4749         float *pflRate);
4750 
4751     END_INTERFACE
4752 } IMFRateControlVtbl;
4753 
4754 interface IMFRateControl {
4755     CONST_VTBL IMFRateControlVtbl* lpVtbl;
4756 };
4757 
4758 #ifdef COBJMACROS
4759 #ifndef WIDL_C_INLINE_WRAPPERS
4760 /*** IUnknown methods ***/
4761 #define IMFRateControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4762 #define IMFRateControl_AddRef(This) (This)->lpVtbl->AddRef(This)
4763 #define IMFRateControl_Release(This) (This)->lpVtbl->Release(This)
4764 /*** IMFRateControl methods ***/
4765 #define IMFRateControl_SetRate(This,fThin,flRate) (This)->lpVtbl->SetRate(This,fThin,flRate)
4766 #define IMFRateControl_GetRate(This,pfThin,pflRate) (This)->lpVtbl->GetRate(This,pfThin,pflRate)
4767 #else
4768 /*** IUnknown methods ***/
4769 static FORCEINLINE HRESULT IMFRateControl_QueryInterface(IMFRateControl* This,REFIID riid,void **ppvObject) {
4770     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4771 }
4772 static FORCEINLINE ULONG IMFRateControl_AddRef(IMFRateControl* This) {
4773     return This->lpVtbl->AddRef(This);
4774 }
4775 static FORCEINLINE ULONG IMFRateControl_Release(IMFRateControl* This) {
4776     return This->lpVtbl->Release(This);
4777 }
4778 /*** IMFRateControl methods ***/
4779 static FORCEINLINE HRESULT IMFRateControl_SetRate(IMFRateControl* This,WINBOOL fThin,float flRate) {
4780     return This->lpVtbl->SetRate(This,fThin,flRate);
4781 }
4782 static FORCEINLINE HRESULT IMFRateControl_GetRate(IMFRateControl* This,WINBOOL *pfThin,float *pflRate) {
4783     return This->lpVtbl->GetRate(This,pfThin,pflRate);
4784 }
4785 #endif
4786 #endif
4787 
4788 #endif
4789 
4790 
4791 #endif  /* __IMFRateControl_INTERFACE_DEFINED__ */
4792 
4793 /*****************************************************************************
4794  * IMFRateSupport interface
4795  */
4796 #ifndef __IMFRateSupport_INTERFACE_DEFINED__
4797 #define __IMFRateSupport_INTERFACE_DEFINED__
4798 
4799 DEFINE_GUID(IID_IMFRateSupport, 0x0a9ccdbc, 0xd797, 0x4563, 0x96,0x67, 0x94,0xec,0x5d,0x79,0x29,0x2d);
4800 #if defined(__cplusplus) && !defined(CINTERFACE)
4801 MIDL_INTERFACE("0a9ccdbc-d797-4563-9667-94ec5d79292d")
4802 IMFRateSupport : public IUnknown
4803 {
4804     virtual HRESULT STDMETHODCALLTYPE GetSlowestRate(
4805         MFRATE_DIRECTION eDirection,
4806         WINBOOL fThin,
4807         float *pflRate) = 0;
4808 
4809     virtual HRESULT STDMETHODCALLTYPE GetFastestRate(
4810         MFRATE_DIRECTION eDirection,
4811         WINBOOL fThin,
4812         float *pflRate) = 0;
4813 
4814     virtual HRESULT STDMETHODCALLTYPE IsRateSupported(
4815         WINBOOL fThin,
4816         float flRate,
4817         float *pflNearestSupportedRate) = 0;
4818 
4819 };
4820 #ifdef __CRT_UUID_DECL
4821 __CRT_UUID_DECL(IMFRateSupport, 0x0a9ccdbc, 0xd797, 0x4563, 0x96,0x67, 0x94,0xec,0x5d,0x79,0x29,0x2d)
4822 #endif
4823 #else
4824 typedef struct IMFRateSupportVtbl {
4825     BEGIN_INTERFACE
4826 
4827     /*** IUnknown methods ***/
4828     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4829         IMFRateSupport *This,
4830         REFIID riid,
4831         void **ppvObject);
4832 
4833     ULONG (STDMETHODCALLTYPE *AddRef)(
4834         IMFRateSupport *This);
4835 
4836     ULONG (STDMETHODCALLTYPE *Release)(
4837         IMFRateSupport *This);
4838 
4839     /*** IMFRateSupport methods ***/
4840     HRESULT (STDMETHODCALLTYPE *GetSlowestRate)(
4841         IMFRateSupport *This,
4842         MFRATE_DIRECTION eDirection,
4843         WINBOOL fThin,
4844         float *pflRate);
4845 
4846     HRESULT (STDMETHODCALLTYPE *GetFastestRate)(
4847         IMFRateSupport *This,
4848         MFRATE_DIRECTION eDirection,
4849         WINBOOL fThin,
4850         float *pflRate);
4851 
4852     HRESULT (STDMETHODCALLTYPE *IsRateSupported)(
4853         IMFRateSupport *This,
4854         WINBOOL fThin,
4855         float flRate,
4856         float *pflNearestSupportedRate);
4857 
4858     END_INTERFACE
4859 } IMFRateSupportVtbl;
4860 
4861 interface IMFRateSupport {
4862     CONST_VTBL IMFRateSupportVtbl* lpVtbl;
4863 };
4864 
4865 #ifdef COBJMACROS
4866 #ifndef WIDL_C_INLINE_WRAPPERS
4867 /*** IUnknown methods ***/
4868 #define IMFRateSupport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4869 #define IMFRateSupport_AddRef(This) (This)->lpVtbl->AddRef(This)
4870 #define IMFRateSupport_Release(This) (This)->lpVtbl->Release(This)
4871 /*** IMFRateSupport methods ***/
4872 #define IMFRateSupport_GetSlowestRate(This,eDirection,fThin,pflRate) (This)->lpVtbl->GetSlowestRate(This,eDirection,fThin,pflRate)
4873 #define IMFRateSupport_GetFastestRate(This,eDirection,fThin,pflRate) (This)->lpVtbl->GetFastestRate(This,eDirection,fThin,pflRate)
4874 #define IMFRateSupport_IsRateSupported(This,fThin,flRate,pflNearestSupportedRate) (This)->lpVtbl->IsRateSupported(This,fThin,flRate,pflNearestSupportedRate)
4875 #else
4876 /*** IUnknown methods ***/
4877 static FORCEINLINE HRESULT IMFRateSupport_QueryInterface(IMFRateSupport* This,REFIID riid,void **ppvObject) {
4878     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4879 }
4880 static FORCEINLINE ULONG IMFRateSupport_AddRef(IMFRateSupport* This) {
4881     return This->lpVtbl->AddRef(This);
4882 }
4883 static FORCEINLINE ULONG IMFRateSupport_Release(IMFRateSupport* This) {
4884     return This->lpVtbl->Release(This);
4885 }
4886 /*** IMFRateSupport methods ***/
4887 static FORCEINLINE HRESULT IMFRateSupport_GetSlowestRate(IMFRateSupport* This,MFRATE_DIRECTION eDirection,WINBOOL fThin,float *pflRate) {
4888     return This->lpVtbl->GetSlowestRate(This,eDirection,fThin,pflRate);
4889 }
4890 static FORCEINLINE HRESULT IMFRateSupport_GetFastestRate(IMFRateSupport* This,MFRATE_DIRECTION eDirection,WINBOOL fThin,float *pflRate) {
4891     return This->lpVtbl->GetFastestRate(This,eDirection,fThin,pflRate);
4892 }
4893 static FORCEINLINE HRESULT IMFRateSupport_IsRateSupported(IMFRateSupport* This,WINBOOL fThin,float flRate,float *pflNearestSupportedRate) {
4894     return This->lpVtbl->IsRateSupported(This,fThin,flRate,pflNearestSupportedRate);
4895 }
4896 #endif
4897 #endif
4898 
4899 #endif
4900 
4901 
4902 #endif  /* __IMFRateSupport_INTERFACE_DEFINED__ */
4903 
4904 /*****************************************************************************
4905  * IMFSampleGrabberSinkCallback interface
4906  */
4907 #ifndef __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__
4908 #define __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__
4909 
4910 DEFINE_GUID(IID_IMFSampleGrabberSinkCallback, 0x8c7b80bf, 0xee42, 0x4b59, 0xb1,0xdf, 0x55,0x66,0x8e,0x1b,0xdc,0xa8);
4911 #if defined(__cplusplus) && !defined(CINTERFACE)
4912 MIDL_INTERFACE("8c7b80bf-ee42-4b59-b1df-55668e1bdca8")
4913 IMFSampleGrabberSinkCallback : public IMFClockStateSink
4914 {
4915     virtual HRESULT STDMETHODCALLTYPE OnSetPresentationClock(
4916         IMFPresentationClock *pPresentationClock) = 0;
4917 
4918     virtual HRESULT STDMETHODCALLTYPE OnProcessSample(
4919         REFGUID guidMajorMediaType,
4920         DWORD dwSampleFlags,
4921         LONGLONG llSampleTime,
4922         LONGLONG llSampleDuration,
4923         const BYTE *pSampleBuffer,
4924         DWORD dwSampleSize) = 0;
4925 
4926     virtual HRESULT STDMETHODCALLTYPE OnShutdown(
4927         ) = 0;
4928 
4929 };
4930 #ifdef __CRT_UUID_DECL
4931 __CRT_UUID_DECL(IMFSampleGrabberSinkCallback, 0x8c7b80bf, 0xee42, 0x4b59, 0xb1,0xdf, 0x55,0x66,0x8e,0x1b,0xdc,0xa8)
4932 #endif
4933 #else
4934 typedef struct IMFSampleGrabberSinkCallbackVtbl {
4935     BEGIN_INTERFACE
4936 
4937     /*** IUnknown methods ***/
4938     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4939         IMFSampleGrabberSinkCallback *This,
4940         REFIID riid,
4941         void **ppvObject);
4942 
4943     ULONG (STDMETHODCALLTYPE *AddRef)(
4944         IMFSampleGrabberSinkCallback *This);
4945 
4946     ULONG (STDMETHODCALLTYPE *Release)(
4947         IMFSampleGrabberSinkCallback *This);
4948 
4949     /*** IMFClockStateSink methods ***/
4950     HRESULT (STDMETHODCALLTYPE *OnClockStart)(
4951         IMFSampleGrabberSinkCallback *This,
4952         MFTIME hnsSystemTime,
4953         LONGLONG llClockStartOffset);
4954 
4955     HRESULT (STDMETHODCALLTYPE *OnClockStop)(
4956         IMFSampleGrabberSinkCallback *This,
4957         MFTIME hnsSystemTime);
4958 
4959     HRESULT (STDMETHODCALLTYPE *OnClockPause)(
4960         IMFSampleGrabberSinkCallback *This,
4961         MFTIME hnsSystemTime);
4962 
4963     HRESULT (STDMETHODCALLTYPE *OnClockRestart)(
4964         IMFSampleGrabberSinkCallback *This,
4965         MFTIME hnsSystemTime);
4966 
4967     HRESULT (STDMETHODCALLTYPE *OnClockSetRate)(
4968         IMFSampleGrabberSinkCallback *This,
4969         MFTIME hnsSystemTime,
4970         float flRate);
4971 
4972     /*** IMFSampleGrabberSinkCallback methods ***/
4973     HRESULT (STDMETHODCALLTYPE *OnSetPresentationClock)(
4974         IMFSampleGrabberSinkCallback *This,
4975         IMFPresentationClock *pPresentationClock);
4976 
4977     HRESULT (STDMETHODCALLTYPE *OnProcessSample)(
4978         IMFSampleGrabberSinkCallback *This,
4979         REFGUID guidMajorMediaType,
4980         DWORD dwSampleFlags,
4981         LONGLONG llSampleTime,
4982         LONGLONG llSampleDuration,
4983         const BYTE *pSampleBuffer,
4984         DWORD dwSampleSize);
4985 
4986     HRESULT (STDMETHODCALLTYPE *OnShutdown)(
4987         IMFSampleGrabberSinkCallback *This);
4988 
4989     END_INTERFACE
4990 } IMFSampleGrabberSinkCallbackVtbl;
4991 
4992 interface IMFSampleGrabberSinkCallback {
4993     CONST_VTBL IMFSampleGrabberSinkCallbackVtbl* lpVtbl;
4994 };
4995 
4996 #ifdef COBJMACROS
4997 #ifndef WIDL_C_INLINE_WRAPPERS
4998 /*** IUnknown methods ***/
4999 #define IMFSampleGrabberSinkCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5000 #define IMFSampleGrabberSinkCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
5001 #define IMFSampleGrabberSinkCallback_Release(This) (This)->lpVtbl->Release(This)
5002 /*** IMFClockStateSink methods ***/
5003 #define IMFSampleGrabberSinkCallback_OnClockStart(This,hnsSystemTime,llClockStartOffset) (This)->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset)
5004 #define IMFSampleGrabberSinkCallback_OnClockStop(This,hnsSystemTime) (This)->lpVtbl->OnClockStop(This,hnsSystemTime)
5005 #define IMFSampleGrabberSinkCallback_OnClockPause(This,hnsSystemTime) (This)->lpVtbl->OnClockPause(This,hnsSystemTime)
5006 #define IMFSampleGrabberSinkCallback_OnClockRestart(This,hnsSystemTime) (This)->lpVtbl->OnClockRestart(This,hnsSystemTime)
5007 #define IMFSampleGrabberSinkCallback_OnClockSetRate(This,hnsSystemTime,flRate) (This)->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate)
5008 /*** IMFSampleGrabberSinkCallback methods ***/
5009 #define IMFSampleGrabberSinkCallback_OnSetPresentationClock(This,pPresentationClock) (This)->lpVtbl->OnSetPresentationClock(This,pPresentationClock)
5010 #define IMFSampleGrabberSinkCallback_OnProcessSample(This,guidMajorMediaType,dwSampleFlags,llSampleTime,llSampleDuration,pSampleBuffer,dwSampleSize) (This)->lpVtbl->OnProcessSample(This,guidMajorMediaType,dwSampleFlags,llSampleTime,llSampleDuration,pSampleBuffer,dwSampleSize)
5011 #define IMFSampleGrabberSinkCallback_OnShutdown(This) (This)->lpVtbl->OnShutdown(This)
5012 #else
5013 /*** IUnknown methods ***/
5014 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_QueryInterface(IMFSampleGrabberSinkCallback* This,REFIID riid,void **ppvObject) {
5015     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5016 }
5017 static FORCEINLINE ULONG IMFSampleGrabberSinkCallback_AddRef(IMFSampleGrabberSinkCallback* This) {
5018     return This->lpVtbl->AddRef(This);
5019 }
5020 static FORCEINLINE ULONG IMFSampleGrabberSinkCallback_Release(IMFSampleGrabberSinkCallback* This) {
5021     return This->lpVtbl->Release(This);
5022 }
5023 /*** IMFClockStateSink methods ***/
5024 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnClockStart(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime,LONGLONG llClockStartOffset) {
5025     return This->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset);
5026 }
5027 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnClockStop(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime) {
5028     return This->lpVtbl->OnClockStop(This,hnsSystemTime);
5029 }
5030 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnClockPause(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime) {
5031     return This->lpVtbl->OnClockPause(This,hnsSystemTime);
5032 }
5033 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnClockRestart(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime) {
5034     return This->lpVtbl->OnClockRestart(This,hnsSystemTime);
5035 }
5036 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnClockSetRate(IMFSampleGrabberSinkCallback* This,MFTIME hnsSystemTime,float flRate) {
5037     return This->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate);
5038 }
5039 /*** IMFSampleGrabberSinkCallback methods ***/
5040 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnSetPresentationClock(IMFSampleGrabberSinkCallback* This,IMFPresentationClock *pPresentationClock) {
5041     return This->lpVtbl->OnSetPresentationClock(This,pPresentationClock);
5042 }
5043 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnProcessSample(IMFSampleGrabberSinkCallback* This,REFGUID guidMajorMediaType,DWORD dwSampleFlags,LONGLONG llSampleTime,LONGLONG llSampleDuration,const BYTE *pSampleBuffer,DWORD dwSampleSize) {
5044     return This->lpVtbl->OnProcessSample(This,guidMajorMediaType,dwSampleFlags,llSampleTime,llSampleDuration,pSampleBuffer,dwSampleSize);
5045 }
5046 static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnShutdown(IMFSampleGrabberSinkCallback* This) {
5047     return This->lpVtbl->OnShutdown(This);
5048 }
5049 #endif
5050 #endif
5051 
5052 #endif
5053 
5054 
5055 #endif  /* __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__ */
5056 
5057 /*****************************************************************************
5058  * IMFSourceResolver interface
5059  */
5060 #ifndef __IMFSourceResolver_INTERFACE_DEFINED__
5061 #define __IMFSourceResolver_INTERFACE_DEFINED__
5062 
5063 DEFINE_GUID(IID_IMFSourceResolver, 0xfbe5a32d, 0xa497, 0x4b61, 0xbb,0x85, 0x97,0xb1,0xa8,0x48,0xa6,0xe3);
5064 #if defined(__cplusplus) && !defined(CINTERFACE)
5065 MIDL_INTERFACE("fbe5a32d-a497-4b61-bb85-97b1a848a6e3")
5066 IMFSourceResolver : public IUnknown
5067 {
5068     virtual HRESULT STDMETHODCALLTYPE CreateObjectFromURL(
5069         LPCWSTR pwszURL,
5070         DWORD dwFlags,
5071         IPropertyStore *pProps,
5072         MF_OBJECT_TYPE *pObjectType,
5073         IUnknown **ppObject) = 0;
5074 
5075     virtual HRESULT STDMETHODCALLTYPE CreateObjectFromByteStream(
5076         IMFByteStream *pByteStream,
5077         LPCWSTR pwszURL,
5078         DWORD dwFlags,
5079         IPropertyStore *pProps,
5080         MF_OBJECT_TYPE *pObjectType,
5081         IUnknown **ppObject) = 0;
5082 
5083     virtual HRESULT STDMETHODCALLTYPE BeginCreateObjectFromURL(
5084         LPCWSTR pwszURL,
5085         DWORD dwFlags,
5086         IPropertyStore *pProps,
5087         IUnknown **ppIUnknownCancelCookie,
5088         IMFAsyncCallback *pCallback,
5089         IUnknown *punkState) = 0;
5090 
5091     virtual HRESULT STDMETHODCALLTYPE EndCreateObjectFromURL(
5092         IMFAsyncResult *pResult,
5093         MF_OBJECT_TYPE *pObjectType,
5094         IUnknown **ppObject) = 0;
5095 
5096     virtual HRESULT STDMETHODCALLTYPE BeginCreateObjectFromByteStream(
5097         IMFByteStream *pByteStream,
5098         LPCWSTR pwszURL,
5099         DWORD dwFlags,
5100         IPropertyStore *pProps,
5101         IUnknown **ppIUnknownCancelCookie,
5102         IMFAsyncCallback *pCallback,
5103         IUnknown *punkState) = 0;
5104 
5105     virtual HRESULT STDMETHODCALLTYPE EndCreateObjectFromByteStream(
5106         IMFAsyncResult *pResult,
5107         MF_OBJECT_TYPE *pObjectType,
5108         IUnknown **ppObject) = 0;
5109 
5110     virtual HRESULT STDMETHODCALLTYPE CancelObjectCreation(
5111         IUnknown *pIUnknownCancelCookie) = 0;
5112 
5113 };
5114 #ifdef __CRT_UUID_DECL
5115 __CRT_UUID_DECL(IMFSourceResolver, 0xfbe5a32d, 0xa497, 0x4b61, 0xbb,0x85, 0x97,0xb1,0xa8,0x48,0xa6,0xe3)
5116 #endif
5117 #else
5118 typedef struct IMFSourceResolverVtbl {
5119     BEGIN_INTERFACE
5120 
5121     /*** IUnknown methods ***/
5122     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5123         IMFSourceResolver *This,
5124         REFIID riid,
5125         void **ppvObject);
5126 
5127     ULONG (STDMETHODCALLTYPE *AddRef)(
5128         IMFSourceResolver *This);
5129 
5130     ULONG (STDMETHODCALLTYPE *Release)(
5131         IMFSourceResolver *This);
5132 
5133     /*** IMFSourceResolver methods ***/
5134     HRESULT (STDMETHODCALLTYPE *CreateObjectFromURL)(
5135         IMFSourceResolver *This,
5136         LPCWSTR pwszURL,
5137         DWORD dwFlags,
5138         IPropertyStore *pProps,
5139         MF_OBJECT_TYPE *pObjectType,
5140         IUnknown **ppObject);
5141 
5142     HRESULT (STDMETHODCALLTYPE *CreateObjectFromByteStream)(
5143         IMFSourceResolver *This,
5144         IMFByteStream *pByteStream,
5145         LPCWSTR pwszURL,
5146         DWORD dwFlags,
5147         IPropertyStore *pProps,
5148         MF_OBJECT_TYPE *pObjectType,
5149         IUnknown **ppObject);
5150 
5151     HRESULT (STDMETHODCALLTYPE *BeginCreateObjectFromURL)(
5152         IMFSourceResolver *This,
5153         LPCWSTR pwszURL,
5154         DWORD dwFlags,
5155         IPropertyStore *pProps,
5156         IUnknown **ppIUnknownCancelCookie,
5157         IMFAsyncCallback *pCallback,
5158         IUnknown *punkState);
5159 
5160     HRESULT (STDMETHODCALLTYPE *EndCreateObjectFromURL)(
5161         IMFSourceResolver *This,
5162         IMFAsyncResult *pResult,
5163         MF_OBJECT_TYPE *pObjectType,
5164         IUnknown **ppObject);
5165 
5166     HRESULT (STDMETHODCALLTYPE *BeginCreateObjectFromByteStream)(
5167         IMFSourceResolver *This,
5168         IMFByteStream *pByteStream,
5169         LPCWSTR pwszURL,
5170         DWORD dwFlags,
5171         IPropertyStore *pProps,
5172         IUnknown **ppIUnknownCancelCookie,
5173         IMFAsyncCallback *pCallback,
5174         IUnknown *punkState);
5175 
5176     HRESULT (STDMETHODCALLTYPE *EndCreateObjectFromByteStream)(
5177         IMFSourceResolver *This,
5178         IMFAsyncResult *pResult,
5179         MF_OBJECT_TYPE *pObjectType,
5180         IUnknown **ppObject);
5181 
5182     HRESULT (STDMETHODCALLTYPE *CancelObjectCreation)(
5183         IMFSourceResolver *This,
5184         IUnknown *pIUnknownCancelCookie);
5185 
5186     END_INTERFACE
5187 } IMFSourceResolverVtbl;
5188 
5189 interface IMFSourceResolver {
5190     CONST_VTBL IMFSourceResolverVtbl* lpVtbl;
5191 };
5192 
5193 #ifdef COBJMACROS
5194 #ifndef WIDL_C_INLINE_WRAPPERS
5195 /*** IUnknown methods ***/
5196 #define IMFSourceResolver_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5197 #define IMFSourceResolver_AddRef(This) (This)->lpVtbl->AddRef(This)
5198 #define IMFSourceResolver_Release(This) (This)->lpVtbl->Release(This)
5199 /*** IMFSourceResolver methods ***/
5200 #define IMFSourceResolver_CreateObjectFromURL(This,pwszURL,dwFlags,pProps,pObjectType,ppObject) (This)->lpVtbl->CreateObjectFromURL(This,pwszURL,dwFlags,pProps,pObjectType,ppObject)
5201 #define IMFSourceResolver_CreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,pObjectType,ppObject) (This)->lpVtbl->CreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,pObjectType,ppObject)
5202 #define IMFSourceResolver_BeginCreateObjectFromURL(This,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState) (This)->lpVtbl->BeginCreateObjectFromURL(This,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState)
5203 #define IMFSourceResolver_EndCreateObjectFromURL(This,pResult,pObjectType,ppObject) (This)->lpVtbl->EndCreateObjectFromURL(This,pResult,pObjectType,ppObject)
5204 #define IMFSourceResolver_BeginCreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState) (This)->lpVtbl->BeginCreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState)
5205 #define IMFSourceResolver_EndCreateObjectFromByteStream(This,pResult,pObjectType,ppObject) (This)->lpVtbl->EndCreateObjectFromByteStream(This,pResult,pObjectType,ppObject)
5206 #define IMFSourceResolver_CancelObjectCreation(This,pIUnknownCancelCookie) (This)->lpVtbl->CancelObjectCreation(This,pIUnknownCancelCookie)
5207 #else
5208 /*** IUnknown methods ***/
5209 static FORCEINLINE HRESULT IMFSourceResolver_QueryInterface(IMFSourceResolver* This,REFIID riid,void **ppvObject) {
5210     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5211 }
5212 static FORCEINLINE ULONG IMFSourceResolver_AddRef(IMFSourceResolver* This) {
5213     return This->lpVtbl->AddRef(This);
5214 }
5215 static FORCEINLINE ULONG IMFSourceResolver_Release(IMFSourceResolver* This) {
5216     return This->lpVtbl->Release(This);
5217 }
5218 /*** IMFSourceResolver methods ***/
5219 static FORCEINLINE HRESULT IMFSourceResolver_CreateObjectFromURL(IMFSourceResolver* This,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5220     return This->lpVtbl->CreateObjectFromURL(This,pwszURL,dwFlags,pProps,pObjectType,ppObject);
5221 }
5222 static FORCEINLINE HRESULT IMFSourceResolver_CreateObjectFromByteStream(IMFSourceResolver* This,IMFByteStream *pByteStream,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5223     return This->lpVtbl->CreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,pObjectType,ppObject);
5224 }
5225 static FORCEINLINE HRESULT IMFSourceResolver_BeginCreateObjectFromURL(IMFSourceResolver* This,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,IUnknown **ppIUnknownCancelCookie,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5226     return This->lpVtbl->BeginCreateObjectFromURL(This,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState);
5227 }
5228 static FORCEINLINE HRESULT IMFSourceResolver_EndCreateObjectFromURL(IMFSourceResolver* This,IMFAsyncResult *pResult,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5229     return This->lpVtbl->EndCreateObjectFromURL(This,pResult,pObjectType,ppObject);
5230 }
5231 static FORCEINLINE HRESULT IMFSourceResolver_BeginCreateObjectFromByteStream(IMFSourceResolver* This,IMFByteStream *pByteStream,LPCWSTR pwszURL,DWORD dwFlags,IPropertyStore *pProps,IUnknown **ppIUnknownCancelCookie,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5232     return This->lpVtbl->BeginCreateObjectFromByteStream(This,pByteStream,pwszURL,dwFlags,pProps,ppIUnknownCancelCookie,pCallback,punkState);
5233 }
5234 static FORCEINLINE HRESULT IMFSourceResolver_EndCreateObjectFromByteStream(IMFSourceResolver* This,IMFAsyncResult *pResult,MF_OBJECT_TYPE *pObjectType,IUnknown **ppObject) {
5235     return This->lpVtbl->EndCreateObjectFromByteStream(This,pResult,pObjectType,ppObject);
5236 }
5237 static FORCEINLINE HRESULT IMFSourceResolver_CancelObjectCreation(IMFSourceResolver* This,IUnknown *pIUnknownCancelCookie) {
5238     return This->lpVtbl->CancelObjectCreation(This,pIUnknownCancelCookie);
5239 }
5240 #endif
5241 #endif
5242 
5243 #endif
5244 
5245 HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteBeginCreateObjectFromURL_Proxy(
5246     IMFSourceResolver* This,
5247     LPCWSTR pwszURL,
5248     DWORD dwFlags,
5249     IPropertyStore *pProps,
5250     IMFRemoteAsyncCallback *pCallback);
5251 void __RPC_STUB IMFSourceResolver_RemoteBeginCreateObjectFromURL_Stub(
5252     IRpcStubBuffer* This,
5253     IRpcChannelBuffer* pRpcChannelBuffer,
5254     PRPC_MESSAGE pRpcMessage,
5255     DWORD* pdwStubPhase);
5256 HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteEndCreateObjectFromURL_Proxy(
5257     IMFSourceResolver* This,
5258     IUnknown *pResult,
5259     MF_OBJECT_TYPE *pObjectType,
5260     IUnknown **ppObject);
5261 void __RPC_STUB IMFSourceResolver_RemoteEndCreateObjectFromURL_Stub(
5262     IRpcStubBuffer* This,
5263     IRpcChannelBuffer* pRpcChannelBuffer,
5264     PRPC_MESSAGE pRpcMessage,
5265     DWORD* pdwStubPhase);
5266 HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteBeginCreateObjectFromByteStream_Proxy(
5267     IMFSourceResolver* This,
5268     IMFByteStream *pByteStream,
5269     LPCWSTR pwszURL,
5270     DWORD dwFlags,
5271     IPropertyStore *pProps,
5272     IMFRemoteAsyncCallback *pCallback);
5273 void __RPC_STUB IMFSourceResolver_RemoteBeginCreateObjectFromByteStream_Stub(
5274     IRpcStubBuffer* This,
5275     IRpcChannelBuffer* pRpcChannelBuffer,
5276     PRPC_MESSAGE pRpcMessage,
5277     DWORD* pdwStubPhase);
5278 HRESULT STDMETHODCALLTYPE IMFSourceResolver_RemoteEndCreateObjectFromByteStream_Proxy(
5279     IMFSourceResolver* This,
5280     IUnknown *pResult,
5281     MF_OBJECT_TYPE *pObjectType,
5282     IUnknown **ppObject);
5283 void __RPC_STUB IMFSourceResolver_RemoteEndCreateObjectFromByteStream_Stub(
5284     IRpcStubBuffer* This,
5285     IRpcChannelBuffer* pRpcChannelBuffer,
5286     PRPC_MESSAGE pRpcMessage,
5287     DWORD* pdwStubPhase);
5288 HRESULT CALLBACK IMFSourceResolver_BeginCreateObjectFromURL_Proxy(
5289     IMFSourceResolver* This,
5290     LPCWSTR pwszURL,
5291     DWORD dwFlags,
5292     IPropertyStore *pProps,
5293     IUnknown **ppIUnknownCancelCookie,
5294     IMFAsyncCallback *pCallback,
5295     IUnknown *punkState);
5296 HRESULT __RPC_STUB IMFSourceResolver_BeginCreateObjectFromURL_Stub(
5297     IMFSourceResolver* This,
5298     LPCWSTR pwszURL,
5299     DWORD dwFlags,
5300     IPropertyStore *pProps,
5301     IMFRemoteAsyncCallback *pCallback);
5302 HRESULT CALLBACK IMFSourceResolver_EndCreateObjectFromURL_Proxy(
5303     IMFSourceResolver* This,
5304     IMFAsyncResult *pResult,
5305     MF_OBJECT_TYPE *pObjectType,
5306     IUnknown **ppObject);
5307 HRESULT __RPC_STUB IMFSourceResolver_EndCreateObjectFromURL_Stub(
5308     IMFSourceResolver* This,
5309     IUnknown *pResult,
5310     MF_OBJECT_TYPE *pObjectType,
5311     IUnknown **ppObject);
5312 HRESULT CALLBACK IMFSourceResolver_BeginCreateObjectFromByteStream_Proxy(
5313     IMFSourceResolver* This,
5314     IMFByteStream *pByteStream,
5315     LPCWSTR pwszURL,
5316     DWORD dwFlags,
5317     IPropertyStore *pProps,
5318     IUnknown **ppIUnknownCancelCookie,
5319     IMFAsyncCallback *pCallback,
5320     IUnknown *punkState);
5321 HRESULT __RPC_STUB IMFSourceResolver_BeginCreateObjectFromByteStream_Stub(
5322     IMFSourceResolver* This,
5323     IMFByteStream *pByteStream,
5324     LPCWSTR pwszURL,
5325     DWORD dwFlags,
5326     IPropertyStore *pProps,
5327     IMFRemoteAsyncCallback *pCallback);
5328 HRESULT CALLBACK IMFSourceResolver_EndCreateObjectFromByteStream_Proxy(
5329     IMFSourceResolver* This,
5330     IMFAsyncResult *pResult,
5331     MF_OBJECT_TYPE *pObjectType,
5332     IUnknown **ppObject);
5333 HRESULT __RPC_STUB IMFSourceResolver_EndCreateObjectFromByteStream_Stub(
5334     IMFSourceResolver* This,
5335     IUnknown *pResult,
5336     MF_OBJECT_TYPE *pObjectType,
5337     IUnknown **ppObject);
5338 
5339 #endif  /* __IMFSourceResolver_INTERFACE_DEFINED__ */
5340 
5341 /*****************************************************************************
5342  * IMFStreamSink interface
5343  */
5344 #ifndef __IMFStreamSink_INTERFACE_DEFINED__
5345 #define __IMFStreamSink_INTERFACE_DEFINED__
5346 
5347 DEFINE_GUID(IID_IMFStreamSink, 0x0a97b3cf, 0x8e7c, 0x4a3d, 0x8f,0x8c, 0x0c,0x84,0x3d,0xc2,0x47,0xfb);
5348 #if defined(__cplusplus) && !defined(CINTERFACE)
5349 MIDL_INTERFACE("0a97b3cf-8e7c-4a3d-8f8c-0c843dc247fb")
5350 IMFStreamSink : public IMFMediaEventGenerator
5351 {
5352     virtual HRESULT STDMETHODCALLTYPE GetMediaSink(
5353         IMFMediaSink **ppMediaSink) = 0;
5354 
5355     virtual HRESULT STDMETHODCALLTYPE GetIdentifier(
5356         DWORD *pdwIdentifier) = 0;
5357 
5358     virtual HRESULT STDMETHODCALLTYPE GetMediaTypeHandler(
5359         IMFMediaTypeHandler **ppHandler) = 0;
5360 
5361     virtual HRESULT STDMETHODCALLTYPE ProcessSample(
5362         IMFSample *pSample) = 0;
5363 
5364     virtual HRESULT STDMETHODCALLTYPE PlaceMarker(
5365         MFSTREAMSINK_MARKER_TYPE eMarkerType,
5366         const PROPVARIANT *pvarMarkerValue,
5367         const PROPVARIANT *pvarContextValue) = 0;
5368 
5369     virtual HRESULT STDMETHODCALLTYPE Flush(
5370         ) = 0;
5371 
5372 };
5373 #ifdef __CRT_UUID_DECL
5374 __CRT_UUID_DECL(IMFStreamSink, 0x0a97b3cf, 0x8e7c, 0x4a3d, 0x8f,0x8c, 0x0c,0x84,0x3d,0xc2,0x47,0xfb)
5375 #endif
5376 #else
5377 typedef struct IMFStreamSinkVtbl {
5378     BEGIN_INTERFACE
5379 
5380     /*** IUnknown methods ***/
5381     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5382         IMFStreamSink *This,
5383         REFIID riid,
5384         void **ppvObject);
5385 
5386     ULONG (STDMETHODCALLTYPE *AddRef)(
5387         IMFStreamSink *This);
5388 
5389     ULONG (STDMETHODCALLTYPE *Release)(
5390         IMFStreamSink *This);
5391 
5392     /*** IMFMediaEventGenerator methods ***/
5393     HRESULT (STDMETHODCALLTYPE *GetEvent)(
5394         IMFStreamSink *This,
5395         DWORD dwFlags,
5396         IMFMediaEvent **ppEvent);
5397 
5398     HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
5399         IMFStreamSink *This,
5400         IMFAsyncCallback *pCallback,
5401         IUnknown *punkState);
5402 
5403     HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
5404         IMFStreamSink *This,
5405         IMFAsyncResult *pResult,
5406         IMFMediaEvent **ppEvent);
5407 
5408     HRESULT (STDMETHODCALLTYPE *QueueEvent)(
5409         IMFStreamSink *This,
5410         MediaEventType met,
5411         REFGUID guidExtendedType,
5412         HRESULT hrStatus,
5413         const PROPVARIANT *pvValue);
5414 
5415     /*** IMFStreamSink methods ***/
5416     HRESULT (STDMETHODCALLTYPE *GetMediaSink)(
5417         IMFStreamSink *This,
5418         IMFMediaSink **ppMediaSink);
5419 
5420     HRESULT (STDMETHODCALLTYPE *GetIdentifier)(
5421         IMFStreamSink *This,
5422         DWORD *pdwIdentifier);
5423 
5424     HRESULT (STDMETHODCALLTYPE *GetMediaTypeHandler)(
5425         IMFStreamSink *This,
5426         IMFMediaTypeHandler **ppHandler);
5427 
5428     HRESULT (STDMETHODCALLTYPE *ProcessSample)(
5429         IMFStreamSink *This,
5430         IMFSample *pSample);
5431 
5432     HRESULT (STDMETHODCALLTYPE *PlaceMarker)(
5433         IMFStreamSink *This,
5434         MFSTREAMSINK_MARKER_TYPE eMarkerType,
5435         const PROPVARIANT *pvarMarkerValue,
5436         const PROPVARIANT *pvarContextValue);
5437 
5438     HRESULT (STDMETHODCALLTYPE *Flush)(
5439         IMFStreamSink *This);
5440 
5441     END_INTERFACE
5442 } IMFStreamSinkVtbl;
5443 
5444 interface IMFStreamSink {
5445     CONST_VTBL IMFStreamSinkVtbl* lpVtbl;
5446 };
5447 
5448 #ifdef COBJMACROS
5449 #ifndef WIDL_C_INLINE_WRAPPERS
5450 /*** IUnknown methods ***/
5451 #define IMFStreamSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5452 #define IMFStreamSink_AddRef(This) (This)->lpVtbl->AddRef(This)
5453 #define IMFStreamSink_Release(This) (This)->lpVtbl->Release(This)
5454 /*** IMFMediaEventGenerator methods ***/
5455 #define IMFStreamSink_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
5456 #define IMFStreamSink_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
5457 #define IMFStreamSink_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
5458 #define IMFStreamSink_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
5459 /*** IMFStreamSink methods ***/
5460 #define IMFStreamSink_GetMediaSink(This,ppMediaSink) (This)->lpVtbl->GetMediaSink(This,ppMediaSink)
5461 #define IMFStreamSink_GetIdentifier(This,pdwIdentifier) (This)->lpVtbl->GetIdentifier(This,pdwIdentifier)
5462 #define IMFStreamSink_GetMediaTypeHandler(This,ppHandler) (This)->lpVtbl->GetMediaTypeHandler(This,ppHandler)
5463 #define IMFStreamSink_ProcessSample(This,pSample) (This)->lpVtbl->ProcessSample(This,pSample)
5464 #define IMFStreamSink_PlaceMarker(This,eMarkerType,pvarMarkerValue,pvarContextValue) (This)->lpVtbl->PlaceMarker(This,eMarkerType,pvarMarkerValue,pvarContextValue)
5465 #define IMFStreamSink_Flush(This) (This)->lpVtbl->Flush(This)
5466 #else
5467 /*** IUnknown methods ***/
5468 static FORCEINLINE HRESULT IMFStreamSink_QueryInterface(IMFStreamSink* This,REFIID riid,void **ppvObject) {
5469     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5470 }
5471 static FORCEINLINE ULONG IMFStreamSink_AddRef(IMFStreamSink* This) {
5472     return This->lpVtbl->AddRef(This);
5473 }
5474 static FORCEINLINE ULONG IMFStreamSink_Release(IMFStreamSink* This) {
5475     return This->lpVtbl->Release(This);
5476 }
5477 /*** IMFMediaEventGenerator methods ***/
5478 static FORCEINLINE HRESULT IMFStreamSink_GetEvent(IMFStreamSink* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
5479     return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
5480 }
5481 static FORCEINLINE HRESULT IMFStreamSink_BeginGetEvent(IMFStreamSink* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
5482     return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
5483 }
5484 static FORCEINLINE HRESULT IMFStreamSink_EndGetEvent(IMFStreamSink* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
5485     return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
5486 }
5487 static FORCEINLINE HRESULT IMFStreamSink_QueueEvent(IMFStreamSink* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
5488     return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
5489 }
5490 /*** IMFStreamSink methods ***/
5491 static FORCEINLINE HRESULT IMFStreamSink_GetMediaSink(IMFStreamSink* This,IMFMediaSink **ppMediaSink) {
5492     return This->lpVtbl->GetMediaSink(This,ppMediaSink);
5493 }
5494 static FORCEINLINE HRESULT IMFStreamSink_GetIdentifier(IMFStreamSink* This,DWORD *pdwIdentifier) {
5495     return This->lpVtbl->GetIdentifier(This,pdwIdentifier);
5496 }
5497 static FORCEINLINE HRESULT IMFStreamSink_GetMediaTypeHandler(IMFStreamSink* This,IMFMediaTypeHandler **ppHandler) {
5498     return This->lpVtbl->GetMediaTypeHandler(This,ppHandler);
5499 }
5500 static FORCEINLINE HRESULT IMFStreamSink_ProcessSample(IMFStreamSink* This,IMFSample *pSample) {
5501     return This->lpVtbl->ProcessSample(This,pSample);
5502 }
5503 static FORCEINLINE HRESULT IMFStreamSink_PlaceMarker(IMFStreamSink* This,MFSTREAMSINK_MARKER_TYPE eMarkerType,const PROPVARIANT *pvarMarkerValue,const PROPVARIANT *pvarContextValue) {
5504     return This->lpVtbl->PlaceMarker(This,eMarkerType,pvarMarkerValue,pvarContextValue);
5505 }
5506 static FORCEINLINE HRESULT IMFStreamSink_Flush(IMFStreamSink* This) {
5507     return This->lpVtbl->Flush(This);
5508 }
5509 #endif
5510 #endif
5511 
5512 #endif
5513 
5514 
5515 #endif  /* __IMFStreamSink_INTERFACE_DEFINED__ */
5516 
5517 /*****************************************************************************
5518  * IMFTopoLoader interface
5519  */
5520 #ifndef __IMFTopoLoader_INTERFACE_DEFINED__
5521 #define __IMFTopoLoader_INTERFACE_DEFINED__
5522 
5523 DEFINE_GUID(IID_IMFTopoLoader, 0xde9a6157, 0xf660, 0x4643, 0xb5,0x6a, 0xdf,0x9f,0x79,0x98,0xc7,0xcd);
5524 #if defined(__cplusplus) && !defined(CINTERFACE)
5525 MIDL_INTERFACE("de9a6157-f660-4643-b56a-df9f7998c7cd")
5526 IMFTopoLoader : public IUnknown
5527 {
5528     virtual HRESULT STDMETHODCALLTYPE Load(
5529         IMFTopology *pInputTopo,
5530         IMFTopology **ppOutputTopo,
5531         IMFTopology *pCurrentTopo) = 0;
5532 
5533 };
5534 #ifdef __CRT_UUID_DECL
5535 __CRT_UUID_DECL(IMFTopoLoader, 0xde9a6157, 0xf660, 0x4643, 0xb5,0x6a, 0xdf,0x9f,0x79,0x98,0xc7,0xcd)
5536 #endif
5537 #else
5538 typedef struct IMFTopoLoaderVtbl {
5539     BEGIN_INTERFACE
5540 
5541     /*** IUnknown methods ***/
5542     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5543         IMFTopoLoader *This,
5544         REFIID riid,
5545         void **ppvObject);
5546 
5547     ULONG (STDMETHODCALLTYPE *AddRef)(
5548         IMFTopoLoader *This);
5549 
5550     ULONG (STDMETHODCALLTYPE *Release)(
5551         IMFTopoLoader *This);
5552 
5553     /*** IMFTopoLoader methods ***/
5554     HRESULT (STDMETHODCALLTYPE *Load)(
5555         IMFTopoLoader *This,
5556         IMFTopology *pInputTopo,
5557         IMFTopology **ppOutputTopo,
5558         IMFTopology *pCurrentTopo);
5559 
5560     END_INTERFACE
5561 } IMFTopoLoaderVtbl;
5562 
5563 interface IMFTopoLoader {
5564     CONST_VTBL IMFTopoLoaderVtbl* lpVtbl;
5565 };
5566 
5567 #ifdef COBJMACROS
5568 #ifndef WIDL_C_INLINE_WRAPPERS
5569 /*** IUnknown methods ***/
5570 #define IMFTopoLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5571 #define IMFTopoLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
5572 #define IMFTopoLoader_Release(This) (This)->lpVtbl->Release(This)
5573 /*** IMFTopoLoader methods ***/
5574 #define IMFTopoLoader_Load(This,pInputTopo,ppOutputTopo,pCurrentTopo) (This)->lpVtbl->Load(This,pInputTopo,ppOutputTopo,pCurrentTopo)
5575 #else
5576 /*** IUnknown methods ***/
5577 static FORCEINLINE HRESULT IMFTopoLoader_QueryInterface(IMFTopoLoader* This,REFIID riid,void **ppvObject) {
5578     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5579 }
5580 static FORCEINLINE ULONG IMFTopoLoader_AddRef(IMFTopoLoader* This) {
5581     return This->lpVtbl->AddRef(This);
5582 }
5583 static FORCEINLINE ULONG IMFTopoLoader_Release(IMFTopoLoader* This) {
5584     return This->lpVtbl->Release(This);
5585 }
5586 /*** IMFTopoLoader methods ***/
5587 static FORCEINLINE HRESULT IMFTopoLoader_Load(IMFTopoLoader* This,IMFTopology *pInputTopo,IMFTopology **ppOutputTopo,IMFTopology *pCurrentTopo) {
5588     return This->lpVtbl->Load(This,pInputTopo,ppOutputTopo,pCurrentTopo);
5589 }
5590 #endif
5591 #endif
5592 
5593 #endif
5594 
5595 
5596 #endif  /* __IMFTopoLoader_INTERFACE_DEFINED__ */
5597 
5598 HRESULT MFCreate3GPMediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
5599 HRESULT MFCreateAggregateSource(IMFCollection *pSourceCollection,IMFMediaSource **ppAggSource);
5600 
5601 HRESULT WINAPI MFCreateAlignedMemoryBuffer(DWORD cbMaxLength,DWORD fAlignmentFlags,IMFMediaBuffer **ppBuffer);
5602 HRESULT WINAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
5603 HRESULT WINAPI MFCreateASFIndexer(IMFASFIndexer **ppIIndexer);
5604 HRESULT WINAPI MFCreateASFIndexerByteStream(IMFByteStream *pIContentByteStream,QWORD cbIndexStartOffset,IMFByteStream **pIIndexByteStream);
5605 HRESULT WINAPI MFCreateASFMediaSink(IMFByteStream *pIByteStream,IMFMediaSink **ppIMediaSink);
5606 HRESULT WINAPI MFCreateASFMediaSinkActivate(LPCWSTR pwszFileName,IMFASFContentInfo *pContentInfo,IMFActivate **ppIActivate);
5607 HRESULT WINAPI MFCreateASFMultiplexer(IMFASFMultiplexer **ppIMultiplexer);
5608 HRESULT WINAPI MFCreateASFProfile(IMFASFProfile **ppIProfile);
5609 HRESULT WINAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescriptor *pIPD,IMFASFProfile **ppIProfile);
5610 HRESULT WINAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
5611 HRESULT WINAPI MFCreateAudioRenderer(IMFAttributes *pAudioAttributes, IMFMediaSink **ppSink);
5612 HRESULT WINAPI MFCreateAudioRendererActivate(IMFActivate **ppActivate);
5613 HRESULT WINAPI MFCreateMediaSession(IMFAttributes *pConfiguration,IMFMediaSession **ppMS);
5614 HRESULT WINAPI MFCreateMP3MediaSink(IMFByteStream *pTargetByteStream,IMFMediaSink **ppMediaSink);
5615 HRESULT WINAPI MFCreateMPEG4MediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
5616 HRESULT WINAPI MFCreateNetSchemePlugin(REFIID riid,LPVOID *ppvHandler);
5617 HRESULT WINAPI MFCreatePMPServer(DWORD dwCreationFlags,IMFPMPServer **ppPMPServer);
5618 HRESULT WINAPI MFCreatePMPMediaSession(DWORD dwCreationFlags,IMFAttributes *pConfiguration,IMFMediaSession **ppMediaSession,IMFActivate **ppEnablerActivate);
5619 HRESULT WINAPI MFCreatePathFromURL(LPCWSTR pwszFileURL,LPWSTR *ppwszFilePath);
5620 HRESULT WINAPI MFCreatePresentationClock(IMFPresentationClock **ppPresentationClock);
5621 HRESULT WINAPI MFCreatePresentationDescriptor(DWORD cStreamDescriptors,IMFStreamDescriptor **apStreamDescriptors,IMFPresentationDescriptor **ppPresentationDescriptor);
5622 HRESULT WINAPI MFCreatePresentationDescriptorFromASFProfile(IMFASFProfile *pIProfile,IMFPresentationDescriptor **ppIPD);
5623 HRESULT WINAPI MFCreateProxyLocator(LPCWSTR pszProtocol,IPropertyStore *pProxyConfig,IMFNetProxyLocator **ppProxyLocator);
5624 HRESULT WINAPI MFCreateRemoteDesktopPlugin(IMFRemoteDesktopPlugin **ppPlugin);
5625 HRESULT WINAPI MFCreateSample(IMFSample **ppIMFSample);
5626 HRESULT WINAPI MFCreateSampleCopierMFT(IMFTransform **ppCopierMFT);
5627 HRESULT WINAPI MFCreateSampleGrabberSinkActivate(IMFMediaType *pIMFMediaType,IMFSampleGrabberSinkCallback *pIMFSampleGrabberSinkCallback,IMFActivate **ppIActivate);
5628 HRESULT WINAPI MFCreateSequencerSource(IUnknown *pReserved,IMFSequencerSource **ppSequencerSource);
5629 HRESULT WINAPI MFCreateSimpleTypeHandler(IMFMediaTypeHandler **ppHandler);
5630 HRESULT WINAPI MFCreateStandardQualityManager(IMFQualityManager **ppQualityManager);
5631 HRESULT WINAPI MFCreateStreamDescriptor(DWORD dwStreamIdentifier,DWORD cMediaTypes,IMFMediaType **apMediaTypes,IMFStreamDescriptor **ppDescriptor);
5632 HRESULT WINAPI MFCreateSourceResolver(IMFSourceResolver **ppISourceResolver);
5633 HRESULT WINAPI MFCreateSystemTimeSource(IMFPresentationTimeSource **ppSystemTimeSource);
5634 HRESULT WINAPI MFCreateTopoLoader(IMFTopoLoader **ppObj);
5635 HRESULT WINAPI MFCreateTopology(IMFTopology **ppTopo);
5636 HRESULT WINAPI MFCreateTopologyNode(MF_TOPOLOGY_TYPE NodeType,IMFTopologyNode **ppNode);
5637 HRESULT WINAPI MFCreateVideoRenderer(REFIID riidRenderer,void **ppVideoRenderer);
5638 HRESULT WINAPI MFCreateVideoRendererActivate(HWND hwndVideo,IMFActivate **ppActivate);
5639 HRESULT WINAPI MFGetService(IUnknown *punkObject,REFGUID guidService,REFIID riid,LPVOID *ppvObject);
5640 HRESULT WINAPI MFGetSupportedMimeTypes(PROPVARIANT *pPropVarMimeTypeArray);
5641 HRESULT WINAPI MFGetSupportedSchemes(PROPVARIANT *pPropVarSchemeArray);
5642 MFTIME WINAPI MFGetSystemTime(void);
5643 HRESULT WINAPI MFShutdownObject(IUnknown *pUnk);
5644 HRESULT WINAPI CreateNamedPropertyStore(INamedPropertyStore **ppStore);
5645 HRESULT WINAPI CreatePropertyStore(IPropertyStore **ppStore);
5646 #if (WINVER >= 0x0601)
5647 
5648 HRESULT WINAPI MFCreateTranscodeProfile(IMFTranscodeProfile **ppTranscodeProfile);
5649 HRESULT WINAPI MFCreateTranscodeSinkActivate(IMFActivate **ppActivate);
5650 HRESULT WINAPI MFCreateTranscodeTopology(IMFMediaSource *pSrc,LPCWSTR pwszOutputFilePath,IMFTranscodeProfile *pProfile,IMFTopology **ppTranscodeTopo);
5651 HRESULT WINAPI MFEnumDeviceSources(IMFAttributes *pAttributes,IMFActivate ***pppSourceActivate,UINT32 *pcSourceActivate);
5652 HRESULT WINAPI MFGetTopoNodeCurrentType(IMFTopologyNode *pNode,DWORD dwStreamIndex,WINBOOL fOutput,IMFMediaType **ppType);
5653 HRESULT WINAPI MFTranscodeGetAudioOutputAvailableTypes(REFGUID guidSubType,DWORD dwMFTFlags,IMFAttributes *pCodecConfig,IMFCollection **ppAvailableTypes);
5654 #endif
5655 EXTERN_GUID(MFNETSOURCE_STATISTICS, 0x3cb1f274, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
5656 EXTERN_GUID(MFNETSOURCE_STATISTICS_SERVICE, 0x3cb1f275, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
5657 EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_MIXER_CLSID, 0xba491360, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
5658 EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_MIXER_ACTIVATE, 0xba491361, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
5659 EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_MIXER_FLAGS, 0xba491362, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
5660 EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_CLSID, 0xba491364, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
5661 EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE, 0xba491365, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
5662 EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS, 0xba491366, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8 );
5663 EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_SESSION_ID, 0xede4b5e3, 0xf805, 0x4d6c, 0x99, 0xb3, 0xdb, 0x01, 0xbf, 0x95, 0xdf, 0xab);
5664 EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ID, 0xb10aaec3, 0xef71, 0x4cc3, 0xb8, 0x73, 0x5, 0xa9, 0xa0, 0x8b, 0x9f, 0x8e);
5665 EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ROLE, 0x6ba644ff, 0x27c5, 0x4d02, 0x98, 0x87, 0xc2, 0x86, 0x19, 0xfd, 0xb9, 0x1b);
5666 EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY, 0xa9770471, 0x92ec, 0x4df4, 0x94, 0xfe, 0x81, 0xc3, 0x6f, 0xc, 0x3a, 0x7a);
5667 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME, 0x60d0e559,0x52f8,0x4fa2,0xbb,0xce,0xac,0xdb,0x34,0xa8,0xec,0x1);
5668 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE, 0x56a819ca,0xc78,0x4de4,0xa0,0xa7,0x3d,0xda,0xba,0xf,0x24,0xd4);
5669 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID, 0x30da9258,0xfeb9,0x47a7,0xa4,0x53,0x76,0x3a,0x7a,0x8e,0x1c,0x5f);
5670 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ROLE, 0xbc9d118e,0x8c67,0x4a18,0x85,0xd4,0x12,0xd3,0x0,0x40,0x5,0x52);
5671 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY, 0x77f0ae69,0xc3bd,0x4509,0x94,0x1d,0x46,0x7e,0x4d,0x24,0x89,0x9e);
5672 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE, 0xde7046ba,0x54d6,0x4487,0xa2,0xa4,0xec,0x7c,0xd,0x1b,0xd1,0x63);
5673 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_MAX_BUFFERS, 0x7dd9b730,0x4f2d,0x41d5,0x8f,0x95,0xc,0xc9,0xa9,0x12,0xba,0x26);
5674 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, 0x58f0aad8,0x22bf,0x4f8a,0xbb,0x3d,0xd2,0xc4,0x97,0x8c,0x6e,0x2f);
5675 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, 0xc60ac5fe,0x252a,0x478f,0xa0,0xef,0xbc,0x8f,0xa5,0xf7,0xca,0xd3);
5676 EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID, 0x8ac3587a,0x4ae7,0x42d8,0x99,0xe0,0x0a,0x60,0x13,0xee,0xf9,0x0f);
5677 EXTERN_GUID(MF_METADATA_PROVIDER_SERVICE, 0xdb214084, 0x58a4, 0x4d2e, 0xb8, 0x4f, 0x6f, 0x75, 0x5b, 0x2f, 0x7a, 0xd);
5678 EXTERN_GUID(MF_PROPERTY_HANDLER_SERVICE, 0xa3face02, 0x32b8, 0x41dd, 0x90, 0xe7, 0x5f, 0xef, 0x7c, 0x89, 0x91, 0xb5);
5679 EXTERN_GUID(MF_RATE_CONTROL_SERVICE, 0x866fa297, 0xb802, 0x4bf8, 0x9d, 0xc9, 0x5e, 0x3b, 0x6a, 0x9f, 0x53, 0xc9);
5680 EXTERN_GUID(MF_SAMPLEGRABBERSINK_IGNORE_CLOCK, 0x0efda2c0, 0x2b69, 0x4e2e, 0xab, 0x8d, 0x46, 0xdc, 0xbf, 0xf7, 0xd2, 0x5d);
5681 EXTERN_GUID(MF_TOPONODE_DRAIN, 0x494bbce9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5682 EXTERN_GUID(MF_TOPONODE_D3DAWARE, 0x494bbced, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5683 EXTERN_GUID(MF_TOPOLOGY_RESOLUTION_STATUS, 0x494bbcde, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5684 EXTERN_GUID(MF_TOPONODE_ERRORCODE, 0x494bbcee, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5685 EXTERN_GUID(MF_TOPONODE_CONNECT_METHOD, 0x494bbcf1, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5686 EXTERN_GUID(MF_TOPONODE_LOCKED, 0x494bbcf7, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5687 EXTERN_GUID(MF_TOPONODE_WORKQUEUE_ID, 0x494bbcf8, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5688 EXTERN_GUID(MF_TOPONODE_WORKQUEUE_MMCSS_CLASS, 0x494bbcf9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5689 EXTERN_GUID(MF_TOPONODE_DECRYPTOR, 0x494bbcfa, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5690 EXTERN_GUID(MF_TOPONODE_DISCARDABLE, 0x494bbcfb, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5691 EXTERN_GUID(MF_TOPONODE_ERROR_MAJORTYPE, 0x494bbcfd, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5692 EXTERN_GUID(MF_TOPONODE_ERROR_SUBTYPE, 0x494bbcfe, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5693 EXTERN_GUID(MF_TOPONODE_WORKQUEUE_MMCSS_TASKID, 0x494bbcff, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5694 EXTERN_GUID(MF_TOPONODE_WORKQUEUE_MMCSS_PRIORITY, 0x5001f840, 0x2816, 0x48f4, 0x93, 0x64, 0xad, 0x1e, 0xf6, 0x61, 0xa1, 0x23);
5695 EXTERN_GUID(MF_TOPONODE_WORKQUEUE_ITEM_PRIORITY, 0xa1ff99be, 0x5e97, 0x4a53, 0xb4, 0x94, 0x56, 0x8c, 0x64, 0x2c, 0x0f, 0xf3);
5696 EXTERN_GUID(MF_TOPONODE_MARKIN_HERE, 0x494bbd00, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5697 EXTERN_GUID(MF_TOPONODE_MARKOUT_HERE, 0x494bbd01, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5698 EXTERN_GUID(MF_TOPONODE_DECODER, 0x494bbd02, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
5699 EXTERN_GUID(MF_TOPONODE_MEDIASTART, 0x835c58ea, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
5700 EXTERN_GUID(MF_TOPONODE_MEDIASTOP, 0x835c58eb, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
5701 EXTERN_GUID(MF_TOPONODE_SOURCE, 0x835c58ec, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
5702 EXTERN_GUID(MF_TOPONODE_PRESENTATION_DESCRIPTOR, 0x835c58ed, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
5703 EXTERN_GUID(MF_TOPONODE_STREAM_DESCRIPTOR, 0x835c58ee, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
5704 EXTERN_GUID(MF_TOPONODE_SEQUENCE_ELEMENTID, 0x835c58ef, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
5705 EXTERN_GUID(MF_TOPONODE_TRANSFORM_OBJECTID, 0x88dcc0c9, 0x293e, 0x4e8b, 0x9a, 0xeb, 0xa, 0xd6, 0x4c, 0xc0, 0x16, 0xb0);
5706 EXTERN_GUID(MF_TOPONODE_STREAMID, 0x14932f9b, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
5707 EXTERN_GUID(MF_TOPONODE_NOSHUTDOWN_ON_REMOVE, 0x14932f9c, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
5708 EXTERN_GUID(MF_TOPONODE_RATELESS, 0x14932f9d, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
5709 EXTERN_GUID(MF_TOPONODE_DISABLE_PREROLL, 0x14932f9e, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
5710 EXTERN_GUID(MF_TOPONODE_PRIMARYOUTPUT, 0x6304ef99, 0x16b2, 0x4ebe, 0x9d, 0x67, 0xe4, 0xc5, 0x39, 0xb3, 0xa2, 0x59);
5711 EXTERN_GUID(MR_STREAM_VOLUME_SERVICE, 0xf8b5fa2f, 0x32ef, 0x46f5, 0xb1, 0x72, 0x13, 0x21, 0x21, 0x2f, 0xb2, 0xc4);
5712 /* Begin additional prototypes for all interfaces */
5713 
5714 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
5715 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
5716 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
5717 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
5718 ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
5719 unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
5720 unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
5721 void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
5722 
5723 /* End additional prototypes */
5724 
5725 #ifdef __cplusplus
5726 }
5727 #endif
5728 
5729 #endif /* __mfidl_h__ */
5730