rundll32 requires a window for some functions to work, so create one.
[wine] / include / strmif.h
1 /*** Autogenerated by WIDL 0.1 from strmif.idl - Do not edit ***/
2 #include "rpc.h"
3 #include "rpcndr.h"
4
5 #ifndef __WIDL_STRMIF_H
6 #define __WIDL_STRMIF_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include "objidl.h"
11 #include "guiddef.h"
12 #include "oaidl.h"
13 #define CDEF_CLASS_DEFAULT 0x0001
14 #define CDEF_BYPASS_CLASS_MANAGER 0x0002
15 #define CDEF_CLASS_LEGACY  0x0004
16 #define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008
17 #ifndef __ICreateDevEnum_FWD_DEFINED__
18 #define __ICreateDevEnum_FWD_DEFINED__
19 typedef struct ICreateDevEnum ICreateDevEnum;
20 #endif
21
22 /*****************************************************************************
23  * ICreateDevEnum interface
24  */
25 #ifndef __ICreateDevEnum_INTERFACE_DEFINED__
26 #define __ICreateDevEnum_INTERFACE_DEFINED__
27
28 DEFINE_GUID(IID_ICreateDevEnum, 0x29840822, 0x5b84, 0x11d0, 0xbd,0x3b, 0x00,0xa0,0xc9,0x11,0xce,0x86);
29 #if defined(__cplusplus) && !defined(CINTERFACE)
30 struct ICreateDevEnum : public IUnknown
31 {
32     virtual HRESULT STDMETHODCALLTYPE CreateClassEnumerator(
33         REFCLSID clsidDeviceClass,
34         IEnumMoniker** ppEnumMoniker,
35         DWORD dwFlags) = 0;
36
37 };
38 #else
39 typedef struct ICreateDevEnumVtbl ICreateDevEnumVtbl;
40 struct ICreateDevEnum {
41     const ICreateDevEnumVtbl* lpVtbl;
42 };
43 struct ICreateDevEnumVtbl {
44     ICOM_MSVTABLE_COMPAT_FIELDS
45
46     /*** IUnknown methods ***/
47     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
48         ICreateDevEnum* This,
49         REFIID riid,
50         void** ppvObject);
51
52     ULONG (STDMETHODCALLTYPE *AddRef)(
53         ICreateDevEnum* This);
54
55     ULONG (STDMETHODCALLTYPE *Release)(
56         ICreateDevEnum* This);
57
58     /*** ICreateDevEnum methods ***/
59     HRESULT (STDMETHODCALLTYPE *CreateClassEnumerator)(
60         ICreateDevEnum* This,
61         REFCLSID clsidDeviceClass,
62         IEnumMoniker** ppEnumMoniker,
63         DWORD dwFlags);
64
65 };
66
67 /*** IUnknown methods ***/
68 #define ICreateDevEnum_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
69 #define ICreateDevEnum_AddRef(p) (p)->lpVtbl->AddRef(p)
70 #define ICreateDevEnum_Release(p) (p)->lpVtbl->Release(p)
71 /*** ICreateDevEnum methods ***/
72 #define ICreateDevEnum_CreateClassEnumerator(p,a,b,c) (p)->lpVtbl->CreateClassEnumerator(p,a,b,c)
73
74 #endif
75
76 #define ICreateDevEnum_METHODS \
77     ICOM_MSVTABLE_COMPAT_FIELDS \
78     /*** IUnknown methods ***/ \
79     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
80     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
81     STDMETHOD_(ULONG,Release)(THIS) PURE; \
82     /*** ICreateDevEnum methods ***/ \
83     STDMETHOD_(HRESULT,CreateClassEnumerator)(THIS_ REFCLSID clsidDeviceClass, IEnumMoniker** ppEnumMoniker, DWORD dwFlags) PURE;
84
85 HRESULT CALLBACK ICreateDevEnum_CreateClassEnumerator_Proxy(
86     ICreateDevEnum* This,
87     REFCLSID clsidDeviceClass,
88     IEnumMoniker** ppEnumMoniker,
89     DWORD dwFlags);
90 void __RPC_STUB ICreateDevEnum_CreateClassEnumerator_Stub(
91     struct IRpcStubBuffer* This,
92     struct IRpcChannelBuffer* pRpcChannelBuffer,
93     PRPC_MESSAGE pRpcMessage,
94     DWORD* pdwStubPhase);
95
96 #endif  /* __ICreateDevEnum_INTERFACE_DEFINED__ */
97
98 #define CHARS_IN_GUID 39
99 #undef GetTimeFormat
100 typedef struct _AMMediaType {
101     GUID majortype;
102     GUID subtype;
103     BOOL bFixedSizeSamples;
104     BOOL bTemporalCompression;
105     ULONG lSampleSize;
106     GUID formattype;
107     IUnknown *pUnk;
108     ULONG cbFormat;
109     BYTE *pbFormat;
110 } AM_MEDIA_TYPE;
111
112 typedef enum _PinDirection {
113     PINDIR_INPUT,
114     PINDIR_OUTPUT
115 } PIN_DIRECTION;
116
117 #define MAX_PIN_NAME    128
118 #define MAX_FILTER_NAME 128
119 typedef LONGLONG REFERENCE_TIME;
120
121 typedef double REFTIME;
122
123 typedef DWORD_PTR HSEMAPHORE;
124
125 typedef DWORD_PTR HEVENT;
126
127 typedef struct _AllocatorProperties {
128     long cBuffers;
129     long cbBuffer;
130     long cbAlign;
131     long cbPrefix;
132 } ALLOCATOR_PROPERTIES;
133
134 #ifndef __IAMovieSetup_FWD_DEFINED__
135 #define __IAMovieSetup_FWD_DEFINED__
136 typedef struct IAMovieSetup IAMovieSetup;
137 #endif
138
139 #ifndef __IEnumFilters_FWD_DEFINED__
140 #define __IEnumFilters_FWD_DEFINED__
141 typedef struct IEnumFilters IEnumFilters;
142 #endif
143
144 #ifndef __IEnumMediaTypes_FWD_DEFINED__
145 #define __IEnumMediaTypes_FWD_DEFINED__
146 typedef struct IEnumMediaTypes IEnumMediaTypes;
147 #endif
148
149 #ifndef __IEnumPins_FWD_DEFINED__
150 #define __IEnumPins_FWD_DEFINED__
151 typedef struct IEnumPins IEnumPins;
152 #endif
153
154 #ifndef __IBaseFilter_FWD_DEFINED__
155 #define __IBaseFilter_FWD_DEFINED__
156 typedef struct IBaseFilter IBaseFilter;
157 #endif
158
159 #ifndef __IFilterGraph_FWD_DEFINED__
160 #define __IFilterGraph_FWD_DEFINED__
161 typedef struct IFilterGraph IFilterGraph;
162 #endif
163
164 #ifndef __IMediaFilter_FWD_DEFINED__
165 #define __IMediaFilter_FWD_DEFINED__
166 typedef struct IMediaFilter IMediaFilter;
167 #endif
168
169 #ifndef __IMediaSample_FWD_DEFINED__
170 #define __IMediaSample_FWD_DEFINED__
171 typedef struct IMediaSample IMediaSample;
172 #endif
173
174 #ifndef __IMemAllocator_FWD_DEFINED__
175 #define __IMemAllocator_FWD_DEFINED__
176 typedef struct IMemAllocator IMemAllocator;
177 #endif
178
179 #ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__
180 #define __IMemAllocatorCallbackTemp_FWD_DEFINED__
181 typedef struct IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp;
182 #endif
183
184 #ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__
185 #define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__
186 typedef struct IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp;
187 #endif
188
189 #ifndef __IMemInputPin_FWD_DEFINED__
190 #define __IMemInputPin_FWD_DEFINED__
191 typedef struct IMemInputPin IMemInputPin;
192 #endif
193
194 #ifndef __IPin_FWD_DEFINED__
195 #define __IPin_FWD_DEFINED__
196 typedef struct IPin IPin;
197 #endif
198
199 #ifndef __IReferenceClock_FWD_DEFINED__
200 #define __IReferenceClock_FWD_DEFINED__
201 typedef struct IReferenceClock IReferenceClock;
202 #endif
203
204 typedef struct _PinInfo {
205     IBaseFilter *pFilter;
206     PIN_DIRECTION dir;
207     WCHAR achName[128];
208 } PIN_INFO;
209
210 /*****************************************************************************
211  * IPin interface
212  */
213 #ifndef __IPin_INTERFACE_DEFINED__
214 #define __IPin_INTERFACE_DEFINED__
215
216 DEFINE_GUID(IID_IPin, 0x56a86891, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
217 #if defined(__cplusplus) && !defined(CINTERFACE)
218 struct IPin : public IUnknown
219 {
220     virtual HRESULT STDMETHODCALLTYPE Connect(
221         IPin* pReceivePin,
222         const AM_MEDIA_TYPE* pmt) = 0;
223
224     virtual HRESULT STDMETHODCALLTYPE ReceiveConnection(
225         IPin* pConnector,
226         const AM_MEDIA_TYPE* pmt) = 0;
227
228     virtual HRESULT STDMETHODCALLTYPE Disconnect(
229         ) = 0;
230
231     virtual HRESULT STDMETHODCALLTYPE ConnectedTo(
232         IPin** pPin) = 0;
233
234     virtual HRESULT STDMETHODCALLTYPE ConnectionMediaType(
235         AM_MEDIA_TYPE* pmt) = 0;
236
237     virtual HRESULT STDMETHODCALLTYPE QueryPinInfo(
238         PIN_INFO* pInfo) = 0;
239
240     virtual HRESULT STDMETHODCALLTYPE QueryDirection(
241         PIN_DIRECTION* pPinDir) = 0;
242
243     virtual HRESULT STDMETHODCALLTYPE QueryId(
244         LPWSTR* Id) = 0;
245
246     virtual HRESULT STDMETHODCALLTYPE QueryAccept(
247         const AM_MEDIA_TYPE* pmt) = 0;
248
249     virtual HRESULT STDMETHODCALLTYPE EnumMediaTypes(
250         IEnumMediaTypes** ppEnum) = 0;
251
252     virtual HRESULT STDMETHODCALLTYPE QueryInternalConnections(
253         IPin** apPin,
254         ULONG* nPin) = 0;
255
256     virtual HRESULT STDMETHODCALLTYPE EndOfStream(
257         ) = 0;
258
259     virtual HRESULT STDMETHODCALLTYPE BeginFlush(
260         ) = 0;
261
262     virtual HRESULT STDMETHODCALLTYPE EndFlush(
263         ) = 0;
264
265     virtual HRESULT STDMETHODCALLTYPE NewSegment(
266         REFERENCE_TIME tStart,
267         REFERENCE_TIME tStop,
268         double dRate) = 0;
269
270 };
271 #else
272 typedef struct IPinVtbl IPinVtbl;
273 struct IPin {
274     const IPinVtbl* lpVtbl;
275 };
276 struct IPinVtbl {
277     ICOM_MSVTABLE_COMPAT_FIELDS
278
279     /*** IUnknown methods ***/
280     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
281         IPin* This,
282         REFIID riid,
283         void** ppvObject);
284
285     ULONG (STDMETHODCALLTYPE *AddRef)(
286         IPin* This);
287
288     ULONG (STDMETHODCALLTYPE *Release)(
289         IPin* This);
290
291     /*** IPin methods ***/
292     HRESULT (STDMETHODCALLTYPE *Connect)(
293         IPin* This,
294         IPin* pReceivePin,
295         const AM_MEDIA_TYPE* pmt);
296
297     HRESULT (STDMETHODCALLTYPE *ReceiveConnection)(
298         IPin* This,
299         IPin* pConnector,
300         const AM_MEDIA_TYPE* pmt);
301
302     HRESULT (STDMETHODCALLTYPE *Disconnect)(
303         IPin* This);
304
305     HRESULT (STDMETHODCALLTYPE *ConnectedTo)(
306         IPin* This,
307         IPin** pPin);
308
309     HRESULT (STDMETHODCALLTYPE *ConnectionMediaType)(
310         IPin* This,
311         AM_MEDIA_TYPE* pmt);
312
313     HRESULT (STDMETHODCALLTYPE *QueryPinInfo)(
314         IPin* This,
315         PIN_INFO* pInfo);
316
317     HRESULT (STDMETHODCALLTYPE *QueryDirection)(
318         IPin* This,
319         PIN_DIRECTION* pPinDir);
320
321     HRESULT (STDMETHODCALLTYPE *QueryId)(
322         IPin* This,
323         LPWSTR* Id);
324
325     HRESULT (STDMETHODCALLTYPE *QueryAccept)(
326         IPin* This,
327         const AM_MEDIA_TYPE* pmt);
328
329     HRESULT (STDMETHODCALLTYPE *EnumMediaTypes)(
330         IPin* This,
331         IEnumMediaTypes** ppEnum);
332
333     HRESULT (STDMETHODCALLTYPE *QueryInternalConnections)(
334         IPin* This,
335         IPin** apPin,
336         ULONG* nPin);
337
338     HRESULT (STDMETHODCALLTYPE *EndOfStream)(
339         IPin* This);
340
341     HRESULT (STDMETHODCALLTYPE *BeginFlush)(
342         IPin* This);
343
344     HRESULT (STDMETHODCALLTYPE *EndFlush)(
345         IPin* This);
346
347     HRESULT (STDMETHODCALLTYPE *NewSegment)(
348         IPin* This,
349         REFERENCE_TIME tStart,
350         REFERENCE_TIME tStop,
351         double dRate);
352
353 };
354
355 /*** IUnknown methods ***/
356 #define IPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
357 #define IPin_AddRef(p) (p)->lpVtbl->AddRef(p)
358 #define IPin_Release(p) (p)->lpVtbl->Release(p)
359 /*** IPin methods ***/
360 #define IPin_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
361 #define IPin_ReceiveConnection(p,a,b) (p)->lpVtbl->ReceiveConnection(p,a,b)
362 #define IPin_Disconnect(p) (p)->lpVtbl->Disconnect(p)
363 #define IPin_ConnectedTo(p,a) (p)->lpVtbl->ConnectedTo(p,a)
364 #define IPin_ConnectionMediaType(p,a) (p)->lpVtbl->ConnectionMediaType(p,a)
365 #define IPin_QueryPinInfo(p,a) (p)->lpVtbl->QueryPinInfo(p,a)
366 #define IPin_QueryDirection(p,a) (p)->lpVtbl->QueryDirection(p,a)
367 #define IPin_QueryId(p,a) (p)->lpVtbl->QueryId(p,a)
368 #define IPin_QueryAccept(p,a) (p)->lpVtbl->QueryAccept(p,a)
369 #define IPin_EnumMediaTypes(p,a) (p)->lpVtbl->EnumMediaTypes(p,a)
370 #define IPin_QueryInternalConnections(p,a,b) (p)->lpVtbl->QueryInternalConnections(p,a,b)
371 #define IPin_EndOfStream(p) (p)->lpVtbl->EndOfStream(p)
372 #define IPin_BeginFlush(p) (p)->lpVtbl->BeginFlush(p)
373 #define IPin_EndFlush(p) (p)->lpVtbl->EndFlush(p)
374 #define IPin_NewSegment(p,a,b,c) (p)->lpVtbl->NewSegment(p,a,b,c)
375
376 #endif
377
378 #define IPin_METHODS \
379     ICOM_MSVTABLE_COMPAT_FIELDS \
380     /*** IUnknown methods ***/ \
381     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
382     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
383     STDMETHOD_(ULONG,Release)(THIS) PURE; \
384     /*** IPin methods ***/ \
385     STDMETHOD_(HRESULT,Connect)(THIS_ IPin* pReceivePin, const AM_MEDIA_TYPE* pmt) PURE; \
386     STDMETHOD_(HRESULT,ReceiveConnection)(THIS_ IPin* pConnector, const AM_MEDIA_TYPE* pmt) PURE; \
387     STDMETHOD_(HRESULT,Disconnect)(THIS) PURE; \
388     STDMETHOD_(HRESULT,ConnectedTo)(THIS_ IPin** pPin) PURE; \
389     STDMETHOD_(HRESULT,ConnectionMediaType)(THIS_ AM_MEDIA_TYPE* pmt) PURE; \
390     STDMETHOD_(HRESULT,QueryPinInfo)(THIS_ PIN_INFO* pInfo) PURE; \
391     STDMETHOD_(HRESULT,QueryDirection)(THIS_ PIN_DIRECTION* pPinDir) PURE; \
392     STDMETHOD_(HRESULT,QueryId)(THIS_ LPWSTR* Id) PURE; \
393     STDMETHOD_(HRESULT,QueryAccept)(THIS_ const AM_MEDIA_TYPE* pmt) PURE; \
394     STDMETHOD_(HRESULT,EnumMediaTypes)(THIS_ IEnumMediaTypes** ppEnum) PURE; \
395     STDMETHOD_(HRESULT,QueryInternalConnections)(THIS_ IPin** apPin, ULONG* nPin) PURE; \
396     STDMETHOD_(HRESULT,EndOfStream)(THIS) PURE; \
397     STDMETHOD_(HRESULT,BeginFlush)(THIS) PURE; \
398     STDMETHOD_(HRESULT,EndFlush)(THIS) PURE; \
399     STDMETHOD_(HRESULT,NewSegment)(THIS_ REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) PURE;
400
401 HRESULT CALLBACK IPin_Connect_Proxy(
402     IPin* This,
403     IPin* pReceivePin,
404     const AM_MEDIA_TYPE* pmt);
405 void __RPC_STUB IPin_Connect_Stub(
406     struct IRpcStubBuffer* This,
407     struct IRpcChannelBuffer* pRpcChannelBuffer,
408     PRPC_MESSAGE pRpcMessage,
409     DWORD* pdwStubPhase);
410 HRESULT CALLBACK IPin_ReceiveConnection_Proxy(
411     IPin* This,
412     IPin* pConnector,
413     const AM_MEDIA_TYPE* pmt);
414 void __RPC_STUB IPin_ReceiveConnection_Stub(
415     struct IRpcStubBuffer* This,
416     struct IRpcChannelBuffer* pRpcChannelBuffer,
417     PRPC_MESSAGE pRpcMessage,
418     DWORD* pdwStubPhase);
419 HRESULT CALLBACK IPin_Disconnect_Proxy(
420     IPin* This);
421 void __RPC_STUB IPin_Disconnect_Stub(
422     struct IRpcStubBuffer* This,
423     struct IRpcChannelBuffer* pRpcChannelBuffer,
424     PRPC_MESSAGE pRpcMessage,
425     DWORD* pdwStubPhase);
426 HRESULT CALLBACK IPin_ConnectedTo_Proxy(
427     IPin* This,
428     IPin** pPin);
429 void __RPC_STUB IPin_ConnectedTo_Stub(
430     struct IRpcStubBuffer* This,
431     struct IRpcChannelBuffer* pRpcChannelBuffer,
432     PRPC_MESSAGE pRpcMessage,
433     DWORD* pdwStubPhase);
434 HRESULT CALLBACK IPin_ConnectionMediaType_Proxy(
435     IPin* This,
436     AM_MEDIA_TYPE* pmt);
437 void __RPC_STUB IPin_ConnectionMediaType_Stub(
438     struct IRpcStubBuffer* This,
439     struct IRpcChannelBuffer* pRpcChannelBuffer,
440     PRPC_MESSAGE pRpcMessage,
441     DWORD* pdwStubPhase);
442 HRESULT CALLBACK IPin_QueryPinInfo_Proxy(
443     IPin* This,
444     PIN_INFO* pInfo);
445 void __RPC_STUB IPin_QueryPinInfo_Stub(
446     struct IRpcStubBuffer* This,
447     struct IRpcChannelBuffer* pRpcChannelBuffer,
448     PRPC_MESSAGE pRpcMessage,
449     DWORD* pdwStubPhase);
450 HRESULT CALLBACK IPin_QueryDirection_Proxy(
451     IPin* This,
452     PIN_DIRECTION* pPinDir);
453 void __RPC_STUB IPin_QueryDirection_Stub(
454     struct IRpcStubBuffer* This,
455     struct IRpcChannelBuffer* pRpcChannelBuffer,
456     PRPC_MESSAGE pRpcMessage,
457     DWORD* pdwStubPhase);
458 HRESULT CALLBACK IPin_QueryId_Proxy(
459     IPin* This,
460     LPWSTR* Id);
461 void __RPC_STUB IPin_QueryId_Stub(
462     struct IRpcStubBuffer* This,
463     struct IRpcChannelBuffer* pRpcChannelBuffer,
464     PRPC_MESSAGE pRpcMessage,
465     DWORD* pdwStubPhase);
466 HRESULT CALLBACK IPin_QueryAccept_Proxy(
467     IPin* This,
468     const AM_MEDIA_TYPE* pmt);
469 void __RPC_STUB IPin_QueryAccept_Stub(
470     struct IRpcStubBuffer* This,
471     struct IRpcChannelBuffer* pRpcChannelBuffer,
472     PRPC_MESSAGE pRpcMessage,
473     DWORD* pdwStubPhase);
474 HRESULT CALLBACK IPin_EnumMediaTypes_Proxy(
475     IPin* This,
476     IEnumMediaTypes** ppEnum);
477 void __RPC_STUB IPin_EnumMediaTypes_Stub(
478     struct IRpcStubBuffer* This,
479     struct IRpcChannelBuffer* pRpcChannelBuffer,
480     PRPC_MESSAGE pRpcMessage,
481     DWORD* pdwStubPhase);
482 HRESULT CALLBACK IPin_QueryInternalConnections_Proxy(
483     IPin* This,
484     IPin** apPin,
485     ULONG* nPin);
486 void __RPC_STUB IPin_QueryInternalConnections_Stub(
487     struct IRpcStubBuffer* This,
488     struct IRpcChannelBuffer* pRpcChannelBuffer,
489     PRPC_MESSAGE pRpcMessage,
490     DWORD* pdwStubPhase);
491 HRESULT CALLBACK IPin_EndOfStream_Proxy(
492     IPin* This);
493 void __RPC_STUB IPin_EndOfStream_Stub(
494     struct IRpcStubBuffer* This,
495     struct IRpcChannelBuffer* pRpcChannelBuffer,
496     PRPC_MESSAGE pRpcMessage,
497     DWORD* pdwStubPhase);
498 HRESULT CALLBACK IPin_BeginFlush_Proxy(
499     IPin* This);
500 void __RPC_STUB IPin_BeginFlush_Stub(
501     struct IRpcStubBuffer* This,
502     struct IRpcChannelBuffer* pRpcChannelBuffer,
503     PRPC_MESSAGE pRpcMessage,
504     DWORD* pdwStubPhase);
505 HRESULT CALLBACK IPin_EndFlush_Proxy(
506     IPin* This);
507 void __RPC_STUB IPin_EndFlush_Stub(
508     struct IRpcStubBuffer* This,
509     struct IRpcChannelBuffer* pRpcChannelBuffer,
510     PRPC_MESSAGE pRpcMessage,
511     DWORD* pdwStubPhase);
512 HRESULT CALLBACK IPin_NewSegment_Proxy(
513     IPin* This,
514     REFERENCE_TIME tStart,
515     REFERENCE_TIME tStop,
516     double dRate);
517 void __RPC_STUB IPin_NewSegment_Stub(
518     struct IRpcStubBuffer* This,
519     struct IRpcChannelBuffer* pRpcChannelBuffer,
520     PRPC_MESSAGE pRpcMessage,
521     DWORD* pdwStubPhase);
522
523 #endif  /* __IPin_INTERFACE_DEFINED__ */
524
525 typedef IPin *PPIN;
526
527 /*****************************************************************************
528  * IEnumPins interface
529  */
530 #ifndef __IEnumPins_INTERFACE_DEFINED__
531 #define __IEnumPins_INTERFACE_DEFINED__
532
533 DEFINE_GUID(IID_IEnumPins, 0x56a86892, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
534 #if defined(__cplusplus) && !defined(CINTERFACE)
535 struct IEnumPins : public IUnknown
536 {
537     virtual HRESULT STDMETHODCALLTYPE Next(
538         ULONG cPins,
539         IPin** ppPins,
540         ULONG* pcFetched) = 0;
541
542     virtual HRESULT STDMETHODCALLTYPE Skip(
543         ULONG cPins) = 0;
544
545     virtual HRESULT STDMETHODCALLTYPE Reset(
546         ) = 0;
547
548     virtual HRESULT STDMETHODCALLTYPE Clone(
549         IEnumPins** ppEnum) = 0;
550
551 };
552 #else
553 typedef struct IEnumPinsVtbl IEnumPinsVtbl;
554 struct IEnumPins {
555     const IEnumPinsVtbl* lpVtbl;
556 };
557 struct IEnumPinsVtbl {
558     ICOM_MSVTABLE_COMPAT_FIELDS
559
560     /*** IUnknown methods ***/
561     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
562         IEnumPins* This,
563         REFIID riid,
564         void** ppvObject);
565
566     ULONG (STDMETHODCALLTYPE *AddRef)(
567         IEnumPins* This);
568
569     ULONG (STDMETHODCALLTYPE *Release)(
570         IEnumPins* This);
571
572     /*** IEnumPins methods ***/
573     HRESULT (STDMETHODCALLTYPE *Next)(
574         IEnumPins* This,
575         ULONG cPins,
576         IPin** ppPins,
577         ULONG* pcFetched);
578
579     HRESULT (STDMETHODCALLTYPE *Skip)(
580         IEnumPins* This,
581         ULONG cPins);
582
583     HRESULT (STDMETHODCALLTYPE *Reset)(
584         IEnumPins* This);
585
586     HRESULT (STDMETHODCALLTYPE *Clone)(
587         IEnumPins* This,
588         IEnumPins** ppEnum);
589
590 };
591
592 /*** IUnknown methods ***/
593 #define IEnumPins_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
594 #define IEnumPins_AddRef(p) (p)->lpVtbl->AddRef(p)
595 #define IEnumPins_Release(p) (p)->lpVtbl->Release(p)
596 /*** IEnumPins methods ***/
597 #define IEnumPins_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
598 #define IEnumPins_Skip(p,a) (p)->lpVtbl->Skip(p,a)
599 #define IEnumPins_Reset(p) (p)->lpVtbl->Reset(p)
600 #define IEnumPins_Clone(p,a) (p)->lpVtbl->Clone(p,a)
601
602 #endif
603
604 #define IEnumPins_METHODS \
605     ICOM_MSVTABLE_COMPAT_FIELDS \
606     /*** IUnknown methods ***/ \
607     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
608     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
609     STDMETHOD_(ULONG,Release)(THIS) PURE; \
610     /*** IEnumPins methods ***/ \
611     STDMETHOD_(HRESULT,Next)(THIS_ ULONG cPins, IPin** ppPins, ULONG* pcFetched) PURE; \
612     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cPins) PURE; \
613     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
614     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPins** ppEnum) PURE;
615
616 HRESULT CALLBACK IEnumPins_Next_Proxy(
617     IEnumPins* This,
618     ULONG cPins,
619     IPin** ppPins,
620     ULONG* pcFetched);
621 void __RPC_STUB IEnumPins_Next_Stub(
622     struct IRpcStubBuffer* This,
623     struct IRpcChannelBuffer* pRpcChannelBuffer,
624     PRPC_MESSAGE pRpcMessage,
625     DWORD* pdwStubPhase);
626 HRESULT CALLBACK IEnumPins_Skip_Proxy(
627     IEnumPins* This,
628     ULONG cPins);
629 void __RPC_STUB IEnumPins_Skip_Stub(
630     struct IRpcStubBuffer* This,
631     struct IRpcChannelBuffer* pRpcChannelBuffer,
632     PRPC_MESSAGE pRpcMessage,
633     DWORD* pdwStubPhase);
634 HRESULT CALLBACK IEnumPins_Reset_Proxy(
635     IEnumPins* This);
636 void __RPC_STUB IEnumPins_Reset_Stub(
637     struct IRpcStubBuffer* This,
638     struct IRpcChannelBuffer* pRpcChannelBuffer,
639     PRPC_MESSAGE pRpcMessage,
640     DWORD* pdwStubPhase);
641 HRESULT CALLBACK IEnumPins_Clone_Proxy(
642     IEnumPins* This,
643     IEnumPins** ppEnum);
644 void __RPC_STUB IEnumPins_Clone_Stub(
645     struct IRpcStubBuffer* This,
646     struct IRpcChannelBuffer* pRpcChannelBuffer,
647     PRPC_MESSAGE pRpcMessage,
648     DWORD* pdwStubPhase);
649
650 #endif  /* __IEnumPins_INTERFACE_DEFINED__ */
651
652 typedef IEnumPins *PENUMPINS;
653
654 /*****************************************************************************
655  * IEnumMediaTypes interface
656  */
657 #ifndef __IEnumMediaTypes_INTERFACE_DEFINED__
658 #define __IEnumMediaTypes_INTERFACE_DEFINED__
659
660 DEFINE_GUID(IID_IEnumMediaTypes, 0x89c31040, 0x846b, 0x11ce, 0x97,0xd3, 0x00,0xaa,0x00,0x55,0x59,0x5a);
661 #if defined(__cplusplus) && !defined(CINTERFACE)
662 struct IEnumMediaTypes : public IUnknown
663 {
664     virtual HRESULT STDMETHODCALLTYPE Next(
665         ULONG cMediaTypes,
666         AM_MEDIA_TYPE** ppMediaTypes,
667         ULONG* pcFetched) = 0;
668
669     virtual HRESULT STDMETHODCALLTYPE Skip(
670         ULONG cMediaTypes) = 0;
671
672     virtual HRESULT STDMETHODCALLTYPE Reset(
673         ) = 0;
674
675     virtual HRESULT STDMETHODCALLTYPE Clone(
676         IEnumMediaTypes** ppEnum) = 0;
677
678 };
679 #else
680 typedef struct IEnumMediaTypesVtbl IEnumMediaTypesVtbl;
681 struct IEnumMediaTypes {
682     const IEnumMediaTypesVtbl* lpVtbl;
683 };
684 struct IEnumMediaTypesVtbl {
685     ICOM_MSVTABLE_COMPAT_FIELDS
686
687     /*** IUnknown methods ***/
688     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
689         IEnumMediaTypes* This,
690         REFIID riid,
691         void** ppvObject);
692
693     ULONG (STDMETHODCALLTYPE *AddRef)(
694         IEnumMediaTypes* This);
695
696     ULONG (STDMETHODCALLTYPE *Release)(
697         IEnumMediaTypes* This);
698
699     /*** IEnumMediaTypes methods ***/
700     HRESULT (STDMETHODCALLTYPE *Next)(
701         IEnumMediaTypes* This,
702         ULONG cMediaTypes,
703         AM_MEDIA_TYPE** ppMediaTypes,
704         ULONG* pcFetched);
705
706     HRESULT (STDMETHODCALLTYPE *Skip)(
707         IEnumMediaTypes* This,
708         ULONG cMediaTypes);
709
710     HRESULT (STDMETHODCALLTYPE *Reset)(
711         IEnumMediaTypes* This);
712
713     HRESULT (STDMETHODCALLTYPE *Clone)(
714         IEnumMediaTypes* This,
715         IEnumMediaTypes** ppEnum);
716
717 };
718
719 /*** IUnknown methods ***/
720 #define IEnumMediaTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
721 #define IEnumMediaTypes_AddRef(p) (p)->lpVtbl->AddRef(p)
722 #define IEnumMediaTypes_Release(p) (p)->lpVtbl->Release(p)
723 /*** IEnumMediaTypes methods ***/
724 #define IEnumMediaTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
725 #define IEnumMediaTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a)
726 #define IEnumMediaTypes_Reset(p) (p)->lpVtbl->Reset(p)
727 #define IEnumMediaTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a)
728
729 #endif
730
731 #define IEnumMediaTypes_METHODS \
732     ICOM_MSVTABLE_COMPAT_FIELDS \
733     /*** IUnknown methods ***/ \
734     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
735     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
736     STDMETHOD_(ULONG,Release)(THIS) PURE; \
737     /*** IEnumMediaTypes methods ***/ \
738     STDMETHOD_(HRESULT,Next)(THIS_ ULONG cMediaTypes, AM_MEDIA_TYPE** ppMediaTypes, ULONG* pcFetched) PURE; \
739     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cMediaTypes) PURE; \
740     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
741     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumMediaTypes** ppEnum) PURE;
742
743 HRESULT CALLBACK IEnumMediaTypes_Next_Proxy(
744     IEnumMediaTypes* This,
745     ULONG cMediaTypes,
746     AM_MEDIA_TYPE** ppMediaTypes,
747     ULONG* pcFetched);
748 void __RPC_STUB IEnumMediaTypes_Next_Stub(
749     struct IRpcStubBuffer* This,
750     struct IRpcChannelBuffer* pRpcChannelBuffer,
751     PRPC_MESSAGE pRpcMessage,
752     DWORD* pdwStubPhase);
753 HRESULT CALLBACK IEnumMediaTypes_Skip_Proxy(
754     IEnumMediaTypes* This,
755     ULONG cMediaTypes);
756 void __RPC_STUB IEnumMediaTypes_Skip_Stub(
757     struct IRpcStubBuffer* This,
758     struct IRpcChannelBuffer* pRpcChannelBuffer,
759     PRPC_MESSAGE pRpcMessage,
760     DWORD* pdwStubPhase);
761 HRESULT CALLBACK IEnumMediaTypes_Reset_Proxy(
762     IEnumMediaTypes* This);
763 void __RPC_STUB IEnumMediaTypes_Reset_Stub(
764     struct IRpcStubBuffer* This,
765     struct IRpcChannelBuffer* pRpcChannelBuffer,
766     PRPC_MESSAGE pRpcMessage,
767     DWORD* pdwStubPhase);
768 HRESULT CALLBACK IEnumMediaTypes_Clone_Proxy(
769     IEnumMediaTypes* This,
770     IEnumMediaTypes** ppEnum);
771 void __RPC_STUB IEnumMediaTypes_Clone_Stub(
772     struct IRpcStubBuffer* This,
773     struct IRpcChannelBuffer* pRpcChannelBuffer,
774     PRPC_MESSAGE pRpcMessage,
775     DWORD* pdwStubPhase);
776
777 #endif  /* __IEnumMediaTypes_INTERFACE_DEFINED__ */
778
779 typedef IEnumMediaTypes *PENUMMEDIATYPES;
780
781 /*****************************************************************************
782  * IFilterGraph interface
783  */
784 #ifndef __IFilterGraph_INTERFACE_DEFINED__
785 #define __IFilterGraph_INTERFACE_DEFINED__
786
787 DEFINE_GUID(IID_IFilterGraph, 0x56a8689f, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
788 #if defined(__cplusplus) && !defined(CINTERFACE)
789 struct IFilterGraph : public IUnknown
790 {
791     virtual HRESULT STDMETHODCALLTYPE AddFilter(
792         IBaseFilter* pFilter,
793         LPCWSTR pName) = 0;
794
795     virtual HRESULT STDMETHODCALLTYPE RemoveFilter(
796         IBaseFilter* pFilter) = 0;
797
798     virtual HRESULT STDMETHODCALLTYPE EnumFilters(
799         IEnumFilters** ppEnum) = 0;
800
801     virtual HRESULT STDMETHODCALLTYPE FindFilterByName(
802         LPCWSTR pName,
803         IBaseFilter** ppFilter) = 0;
804
805     virtual HRESULT STDMETHODCALLTYPE ConnectDirect(
806         IPin* ppinOut,
807         IPin* ppinIn,
808         const AM_MEDIA_TYPE* pmt) = 0;
809
810     virtual HRESULT STDMETHODCALLTYPE Reconnect(
811         IPin* ppin) = 0;
812
813     virtual HRESULT STDMETHODCALLTYPE Disconnect(
814         IPin* ppin) = 0;
815
816     virtual HRESULT STDMETHODCALLTYPE SetDefaultSyncSource(
817         ) = 0;
818
819 };
820 #else
821 typedef struct IFilterGraphVtbl IFilterGraphVtbl;
822 struct IFilterGraph {
823     const IFilterGraphVtbl* lpVtbl;
824 };
825 struct IFilterGraphVtbl {
826     ICOM_MSVTABLE_COMPAT_FIELDS
827
828     /*** IUnknown methods ***/
829     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
830         IFilterGraph* This,
831         REFIID riid,
832         void** ppvObject);
833
834     ULONG (STDMETHODCALLTYPE *AddRef)(
835         IFilterGraph* This);
836
837     ULONG (STDMETHODCALLTYPE *Release)(
838         IFilterGraph* This);
839
840     /*** IFilterGraph methods ***/
841     HRESULT (STDMETHODCALLTYPE *AddFilter)(
842         IFilterGraph* This,
843         IBaseFilter* pFilter,
844         LPCWSTR pName);
845
846     HRESULT (STDMETHODCALLTYPE *RemoveFilter)(
847         IFilterGraph* This,
848         IBaseFilter* pFilter);
849
850     HRESULT (STDMETHODCALLTYPE *EnumFilters)(
851         IFilterGraph* This,
852         IEnumFilters** ppEnum);
853
854     HRESULT (STDMETHODCALLTYPE *FindFilterByName)(
855         IFilterGraph* This,
856         LPCWSTR pName,
857         IBaseFilter** ppFilter);
858
859     HRESULT (STDMETHODCALLTYPE *ConnectDirect)(
860         IFilterGraph* This,
861         IPin* ppinOut,
862         IPin* ppinIn,
863         const AM_MEDIA_TYPE* pmt);
864
865     HRESULT (STDMETHODCALLTYPE *Reconnect)(
866         IFilterGraph* This,
867         IPin* ppin);
868
869     HRESULT (STDMETHODCALLTYPE *Disconnect)(
870         IFilterGraph* This,
871         IPin* ppin);
872
873     HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)(
874         IFilterGraph* This);
875
876 };
877
878 /*** IUnknown methods ***/
879 #define IFilterGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
880 #define IFilterGraph_AddRef(p) (p)->lpVtbl->AddRef(p)
881 #define IFilterGraph_Release(p) (p)->lpVtbl->Release(p)
882 /*** IFilterGraph methods ***/
883 #define IFilterGraph_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
884 #define IFilterGraph_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
885 #define IFilterGraph_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a)
886 #define IFilterGraph_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
887 #define IFilterGraph_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
888 #define IFilterGraph_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
889 #define IFilterGraph_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
890 #define IFilterGraph_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
891
892 #endif
893
894 #define IFilterGraph_METHODS \
895     ICOM_MSVTABLE_COMPAT_FIELDS \
896     /*** IUnknown methods ***/ \
897     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
898     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
899     STDMETHOD_(ULONG,Release)(THIS) PURE; \
900     /*** IFilterGraph methods ***/ \
901     STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \
902     STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \
903     STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \
904     STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \
905     STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \
906     STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \
907     STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \
908     STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE;
909
910 HRESULT CALLBACK IFilterGraph_AddFilter_Proxy(
911     IFilterGraph* This,
912     IBaseFilter* pFilter,
913     LPCWSTR pName);
914 void __RPC_STUB IFilterGraph_AddFilter_Stub(
915     struct IRpcStubBuffer* This,
916     struct IRpcChannelBuffer* pRpcChannelBuffer,
917     PRPC_MESSAGE pRpcMessage,
918     DWORD* pdwStubPhase);
919 HRESULT CALLBACK IFilterGraph_RemoveFilter_Proxy(
920     IFilterGraph* This,
921     IBaseFilter* pFilter);
922 void __RPC_STUB IFilterGraph_RemoveFilter_Stub(
923     struct IRpcStubBuffer* This,
924     struct IRpcChannelBuffer* pRpcChannelBuffer,
925     PRPC_MESSAGE pRpcMessage,
926     DWORD* pdwStubPhase);
927 HRESULT CALLBACK IFilterGraph_EnumFilters_Proxy(
928     IFilterGraph* This,
929     IEnumFilters** ppEnum);
930 void __RPC_STUB IFilterGraph_EnumFilters_Stub(
931     struct IRpcStubBuffer* This,
932     struct IRpcChannelBuffer* pRpcChannelBuffer,
933     PRPC_MESSAGE pRpcMessage,
934     DWORD* pdwStubPhase);
935 HRESULT CALLBACK IFilterGraph_FindFilterByName_Proxy(
936     IFilterGraph* This,
937     LPCWSTR pName,
938     IBaseFilter** ppFilter);
939 void __RPC_STUB IFilterGraph_FindFilterByName_Stub(
940     struct IRpcStubBuffer* This,
941     struct IRpcChannelBuffer* pRpcChannelBuffer,
942     PRPC_MESSAGE pRpcMessage,
943     DWORD* pdwStubPhase);
944 HRESULT CALLBACK IFilterGraph_ConnectDirect_Proxy(
945     IFilterGraph* This,
946     IPin* ppinOut,
947     IPin* ppinIn,
948     const AM_MEDIA_TYPE* pmt);
949 void __RPC_STUB IFilterGraph_ConnectDirect_Stub(
950     struct IRpcStubBuffer* This,
951     struct IRpcChannelBuffer* pRpcChannelBuffer,
952     PRPC_MESSAGE pRpcMessage,
953     DWORD* pdwStubPhase);
954 HRESULT CALLBACK IFilterGraph_Reconnect_Proxy(
955     IFilterGraph* This,
956     IPin* ppin);
957 void __RPC_STUB IFilterGraph_Reconnect_Stub(
958     struct IRpcStubBuffer* This,
959     struct IRpcChannelBuffer* pRpcChannelBuffer,
960     PRPC_MESSAGE pRpcMessage,
961     DWORD* pdwStubPhase);
962 HRESULT CALLBACK IFilterGraph_Disconnect_Proxy(
963     IFilterGraph* This,
964     IPin* ppin);
965 void __RPC_STUB IFilterGraph_Disconnect_Stub(
966     struct IRpcStubBuffer* This,
967     struct IRpcChannelBuffer* pRpcChannelBuffer,
968     PRPC_MESSAGE pRpcMessage,
969     DWORD* pdwStubPhase);
970 HRESULT CALLBACK IFilterGraph_SetDefaultSyncSource_Proxy(
971     IFilterGraph* This);
972 void __RPC_STUB IFilterGraph_SetDefaultSyncSource_Stub(
973     struct IRpcStubBuffer* This,
974     struct IRpcChannelBuffer* pRpcChannelBuffer,
975     PRPC_MESSAGE pRpcMessage,
976     DWORD* pdwStubPhase);
977
978 #endif  /* __IFilterGraph_INTERFACE_DEFINED__ */
979
980 typedef IFilterGraph *PFILTERGRAPH;
981
982 /*****************************************************************************
983  * IEnumFilters interface
984  */
985 #ifndef __IEnumFilters_INTERFACE_DEFINED__
986 #define __IEnumFilters_INTERFACE_DEFINED__
987
988 DEFINE_GUID(IID_IEnumFilters, 0x56a86893, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
989 #if defined(__cplusplus) && !defined(CINTERFACE)
990 struct IEnumFilters : public IUnknown
991 {
992     virtual HRESULT STDMETHODCALLTYPE Next(
993         ULONG cFilters,
994         IBaseFilter** ppFilter,
995         ULONG* pcFetched) = 0;
996
997     virtual HRESULT STDMETHODCALLTYPE Skip(
998         ULONG cFilters) = 0;
999
1000     virtual HRESULT STDMETHODCALLTYPE Reset(
1001         ) = 0;
1002
1003     virtual HRESULT STDMETHODCALLTYPE Clone(
1004         IEnumFilters** ppEnum) = 0;
1005
1006 };
1007 #else
1008 typedef struct IEnumFiltersVtbl IEnumFiltersVtbl;
1009 struct IEnumFilters {
1010     const IEnumFiltersVtbl* lpVtbl;
1011 };
1012 struct IEnumFiltersVtbl {
1013     ICOM_MSVTABLE_COMPAT_FIELDS
1014
1015     /*** IUnknown methods ***/
1016     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1017         IEnumFilters* This,
1018         REFIID riid,
1019         void** ppvObject);
1020
1021     ULONG (STDMETHODCALLTYPE *AddRef)(
1022         IEnumFilters* This);
1023
1024     ULONG (STDMETHODCALLTYPE *Release)(
1025         IEnumFilters* This);
1026
1027     /*** IEnumFilters methods ***/
1028     HRESULT (STDMETHODCALLTYPE *Next)(
1029         IEnumFilters* This,
1030         ULONG cFilters,
1031         IBaseFilter** ppFilter,
1032         ULONG* pcFetched);
1033
1034     HRESULT (STDMETHODCALLTYPE *Skip)(
1035         IEnumFilters* This,
1036         ULONG cFilters);
1037
1038     HRESULT (STDMETHODCALLTYPE *Reset)(
1039         IEnumFilters* This);
1040
1041     HRESULT (STDMETHODCALLTYPE *Clone)(
1042         IEnumFilters* This,
1043         IEnumFilters** ppEnum);
1044
1045 };
1046
1047 /*** IUnknown methods ***/
1048 #define IEnumFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1049 #define IEnumFilters_AddRef(p) (p)->lpVtbl->AddRef(p)
1050 #define IEnumFilters_Release(p) (p)->lpVtbl->Release(p)
1051 /*** IEnumFilters methods ***/
1052 #define IEnumFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
1053 #define IEnumFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a)
1054 #define IEnumFilters_Reset(p) (p)->lpVtbl->Reset(p)
1055 #define IEnumFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a)
1056
1057 #endif
1058
1059 #define IEnumFilters_METHODS \
1060     ICOM_MSVTABLE_COMPAT_FIELDS \
1061     /*** IUnknown methods ***/ \
1062     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1063     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1064     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1065     /*** IEnumFilters methods ***/ \
1066     STDMETHOD_(HRESULT,Next)(THIS_ ULONG cFilters, IBaseFilter** ppFilter, ULONG* pcFetched) PURE; \
1067     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cFilters) PURE; \
1068     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
1069     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumFilters** ppEnum) PURE;
1070
1071 HRESULT CALLBACK IEnumFilters_Next_Proxy(
1072     IEnumFilters* This,
1073     ULONG cFilters,
1074     IBaseFilter** ppFilter,
1075     ULONG* pcFetched);
1076 void __RPC_STUB IEnumFilters_Next_Stub(
1077     struct IRpcStubBuffer* This,
1078     struct IRpcChannelBuffer* pRpcChannelBuffer,
1079     PRPC_MESSAGE pRpcMessage,
1080     DWORD* pdwStubPhase);
1081 HRESULT CALLBACK IEnumFilters_Skip_Proxy(
1082     IEnumFilters* This,
1083     ULONG cFilters);
1084 void __RPC_STUB IEnumFilters_Skip_Stub(
1085     struct IRpcStubBuffer* This,
1086     struct IRpcChannelBuffer* pRpcChannelBuffer,
1087     PRPC_MESSAGE pRpcMessage,
1088     DWORD* pdwStubPhase);
1089 HRESULT CALLBACK IEnumFilters_Reset_Proxy(
1090     IEnumFilters* This);
1091 void __RPC_STUB IEnumFilters_Reset_Stub(
1092     struct IRpcStubBuffer* This,
1093     struct IRpcChannelBuffer* pRpcChannelBuffer,
1094     PRPC_MESSAGE pRpcMessage,
1095     DWORD* pdwStubPhase);
1096 HRESULT CALLBACK IEnumFilters_Clone_Proxy(
1097     IEnumFilters* This,
1098     IEnumFilters** ppEnum);
1099 void __RPC_STUB IEnumFilters_Clone_Stub(
1100     struct IRpcStubBuffer* This,
1101     struct IRpcChannelBuffer* pRpcChannelBuffer,
1102     PRPC_MESSAGE pRpcMessage,
1103     DWORD* pdwStubPhase);
1104
1105 #endif  /* __IEnumFilters_INTERFACE_DEFINED__ */
1106
1107 typedef IEnumFilters *PENUMFILTERS;
1108
1109 typedef enum _FilterState {
1110     State_Stopped,
1111     State_Paused,
1112     State_Running
1113 } FILTER_STATE;
1114
1115 /*****************************************************************************
1116  * IMediaFilter interface
1117  */
1118 #ifndef __IMediaFilter_INTERFACE_DEFINED__
1119 #define __IMediaFilter_INTERFACE_DEFINED__
1120
1121 DEFINE_GUID(IID_IMediaFilter, 0x56a86899, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
1122 #if defined(__cplusplus) && !defined(CINTERFACE)
1123 struct IMediaFilter : public IPersist
1124 {
1125     virtual HRESULT STDMETHODCALLTYPE Stop(
1126         ) = 0;
1127
1128     virtual HRESULT STDMETHODCALLTYPE Pause(
1129         ) = 0;
1130
1131     virtual HRESULT STDMETHODCALLTYPE Run(
1132         REFERENCE_TIME tStart) = 0;
1133
1134     virtual HRESULT STDMETHODCALLTYPE GetState(
1135         DWORD dwMilliSecsTimeout,
1136         FILTER_STATE* State) = 0;
1137
1138     virtual HRESULT STDMETHODCALLTYPE SetSyncSource(
1139         IReferenceClock* pClock) = 0;
1140
1141     virtual HRESULT STDMETHODCALLTYPE GetSyncSource(
1142         IReferenceClock** pClock) = 0;
1143
1144 };
1145 #else
1146 typedef struct IMediaFilterVtbl IMediaFilterVtbl;
1147 struct IMediaFilter {
1148     const IMediaFilterVtbl* lpVtbl;
1149 };
1150 struct IMediaFilterVtbl {
1151     ICOM_MSVTABLE_COMPAT_FIELDS
1152
1153     /*** IUnknown methods ***/
1154     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1155         IMediaFilter* This,
1156         REFIID riid,
1157         void** ppvObject);
1158
1159     ULONG (STDMETHODCALLTYPE *AddRef)(
1160         IMediaFilter* This);
1161
1162     ULONG (STDMETHODCALLTYPE *Release)(
1163         IMediaFilter* This);
1164
1165     /*** IPersist methods ***/
1166     HRESULT (STDMETHODCALLTYPE *GetClassID)(
1167         IMediaFilter* This,
1168         CLSID* pClassID);
1169
1170     /*** IMediaFilter methods ***/
1171     HRESULT (STDMETHODCALLTYPE *Stop)(
1172         IMediaFilter* This);
1173
1174     HRESULT (STDMETHODCALLTYPE *Pause)(
1175         IMediaFilter* This);
1176
1177     HRESULT (STDMETHODCALLTYPE *Run)(
1178         IMediaFilter* This,
1179         REFERENCE_TIME tStart);
1180
1181     HRESULT (STDMETHODCALLTYPE *GetState)(
1182         IMediaFilter* This,
1183         DWORD dwMilliSecsTimeout,
1184         FILTER_STATE* State);
1185
1186     HRESULT (STDMETHODCALLTYPE *SetSyncSource)(
1187         IMediaFilter* This,
1188         IReferenceClock* pClock);
1189
1190     HRESULT (STDMETHODCALLTYPE *GetSyncSource)(
1191         IMediaFilter* This,
1192         IReferenceClock** pClock);
1193
1194 };
1195
1196 /*** IUnknown methods ***/
1197 #define IMediaFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1198 #define IMediaFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
1199 #define IMediaFilter_Release(p) (p)->lpVtbl->Release(p)
1200 /*** IPersist methods ***/
1201 #define IMediaFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
1202 /*** IMediaFilter methods ***/
1203 #define IMediaFilter_Stop(p) (p)->lpVtbl->Stop(p)
1204 #define IMediaFilter_Pause(p) (p)->lpVtbl->Pause(p)
1205 #define IMediaFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
1206 #define IMediaFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
1207 #define IMediaFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
1208 #define IMediaFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
1209
1210 #endif
1211
1212 #define IMediaFilter_METHODS \
1213     ICOM_MSVTABLE_COMPAT_FIELDS \
1214     /*** IUnknown methods ***/ \
1215     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1216     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1217     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1218     /*** IPersist methods ***/ \
1219     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
1220     /*** IMediaFilter methods ***/ \
1221     STDMETHOD_(HRESULT,Stop)(THIS) PURE; \
1222     STDMETHOD_(HRESULT,Pause)(THIS) PURE; \
1223     STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \
1224     STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \
1225     STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \
1226     STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE;
1227
1228 HRESULT CALLBACK IMediaFilter_Stop_Proxy(
1229     IMediaFilter* This);
1230 void __RPC_STUB IMediaFilter_Stop_Stub(
1231     struct IRpcStubBuffer* This,
1232     struct IRpcChannelBuffer* pRpcChannelBuffer,
1233     PRPC_MESSAGE pRpcMessage,
1234     DWORD* pdwStubPhase);
1235 HRESULT CALLBACK IMediaFilter_Pause_Proxy(
1236     IMediaFilter* This);
1237 void __RPC_STUB IMediaFilter_Pause_Stub(
1238     struct IRpcStubBuffer* This,
1239     struct IRpcChannelBuffer* pRpcChannelBuffer,
1240     PRPC_MESSAGE pRpcMessage,
1241     DWORD* pdwStubPhase);
1242 HRESULT CALLBACK IMediaFilter_Run_Proxy(
1243     IMediaFilter* This,
1244     REFERENCE_TIME tStart);
1245 void __RPC_STUB IMediaFilter_Run_Stub(
1246     struct IRpcStubBuffer* This,
1247     struct IRpcChannelBuffer* pRpcChannelBuffer,
1248     PRPC_MESSAGE pRpcMessage,
1249     DWORD* pdwStubPhase);
1250 HRESULT CALLBACK IMediaFilter_GetState_Proxy(
1251     IMediaFilter* This,
1252     DWORD dwMilliSecsTimeout,
1253     FILTER_STATE* State);
1254 void __RPC_STUB IMediaFilter_GetState_Stub(
1255     struct IRpcStubBuffer* This,
1256     struct IRpcChannelBuffer* pRpcChannelBuffer,
1257     PRPC_MESSAGE pRpcMessage,
1258     DWORD* pdwStubPhase);
1259 HRESULT CALLBACK IMediaFilter_SetSyncSource_Proxy(
1260     IMediaFilter* This,
1261     IReferenceClock* pClock);
1262 void __RPC_STUB IMediaFilter_SetSyncSource_Stub(
1263     struct IRpcStubBuffer* This,
1264     struct IRpcChannelBuffer* pRpcChannelBuffer,
1265     PRPC_MESSAGE pRpcMessage,
1266     DWORD* pdwStubPhase);
1267 HRESULT CALLBACK IMediaFilter_GetSyncSource_Proxy(
1268     IMediaFilter* This,
1269     IReferenceClock** pClock);
1270 void __RPC_STUB IMediaFilter_GetSyncSource_Stub(
1271     struct IRpcStubBuffer* This,
1272     struct IRpcChannelBuffer* pRpcChannelBuffer,
1273     PRPC_MESSAGE pRpcMessage,
1274     DWORD* pdwStubPhase);
1275
1276 #endif  /* __IMediaFilter_INTERFACE_DEFINED__ */
1277
1278 typedef IMediaFilter *PMEDIAFILTER;
1279
1280 typedef struct _FilterInfo {
1281     WCHAR achName[128];
1282     IFilterGraph *pGraph;
1283 } FILTER_INFO;
1284
1285 /*****************************************************************************
1286  * IBaseFilter interface
1287  */
1288 #ifndef __IBaseFilter_INTERFACE_DEFINED__
1289 #define __IBaseFilter_INTERFACE_DEFINED__
1290
1291 DEFINE_GUID(IID_IBaseFilter, 0x56a86895, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
1292 #if defined(__cplusplus) && !defined(CINTERFACE)
1293 struct IBaseFilter : public IMediaFilter
1294 {
1295     virtual HRESULT STDMETHODCALLTYPE EnumPins(
1296         IEnumPins** ppEnum) = 0;
1297
1298     virtual HRESULT STDMETHODCALLTYPE FindPin(
1299         LPCWSTR Id,
1300         IPin** ppPin) = 0;
1301
1302     virtual HRESULT STDMETHODCALLTYPE QueryFilterInfo(
1303         FILTER_INFO* pInfo) = 0;
1304
1305     virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph(
1306         IFilterGraph* pGraph,
1307         LPCWSTR pName) = 0;
1308
1309     virtual HRESULT STDMETHODCALLTYPE QueryVendorInfo(
1310         LPWSTR* pVendorInfo) = 0;
1311
1312 };
1313 #else
1314 typedef struct IBaseFilterVtbl IBaseFilterVtbl;
1315 struct IBaseFilter {
1316     const IBaseFilterVtbl* lpVtbl;
1317 };
1318 struct IBaseFilterVtbl {
1319     ICOM_MSVTABLE_COMPAT_FIELDS
1320
1321     /*** IUnknown methods ***/
1322     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1323         IBaseFilter* This,
1324         REFIID riid,
1325         void** ppvObject);
1326
1327     ULONG (STDMETHODCALLTYPE *AddRef)(
1328         IBaseFilter* This);
1329
1330     ULONG (STDMETHODCALLTYPE *Release)(
1331         IBaseFilter* This);
1332
1333     /*** IPersist methods ***/
1334     HRESULT (STDMETHODCALLTYPE *GetClassID)(
1335         IBaseFilter* This,
1336         CLSID* pClassID);
1337
1338     /*** IMediaFilter methods ***/
1339     HRESULT (STDMETHODCALLTYPE *Stop)(
1340         IBaseFilter* This);
1341
1342     HRESULT (STDMETHODCALLTYPE *Pause)(
1343         IBaseFilter* This);
1344
1345     HRESULT (STDMETHODCALLTYPE *Run)(
1346         IBaseFilter* This,
1347         REFERENCE_TIME tStart);
1348
1349     HRESULT (STDMETHODCALLTYPE *GetState)(
1350         IBaseFilter* This,
1351         DWORD dwMilliSecsTimeout,
1352         FILTER_STATE* State);
1353
1354     HRESULT (STDMETHODCALLTYPE *SetSyncSource)(
1355         IBaseFilter* This,
1356         IReferenceClock* pClock);
1357
1358     HRESULT (STDMETHODCALLTYPE *GetSyncSource)(
1359         IBaseFilter* This,
1360         IReferenceClock** pClock);
1361
1362     /*** IBaseFilter methods ***/
1363     HRESULT (STDMETHODCALLTYPE *EnumPins)(
1364         IBaseFilter* This,
1365         IEnumPins** ppEnum);
1366
1367     HRESULT (STDMETHODCALLTYPE *FindPin)(
1368         IBaseFilter* This,
1369         LPCWSTR Id,
1370         IPin** ppPin);
1371
1372     HRESULT (STDMETHODCALLTYPE *QueryFilterInfo)(
1373         IBaseFilter* This,
1374         FILTER_INFO* pInfo);
1375
1376     HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)(
1377         IBaseFilter* This,
1378         IFilterGraph* pGraph,
1379         LPCWSTR pName);
1380
1381     HRESULT (STDMETHODCALLTYPE *QueryVendorInfo)(
1382         IBaseFilter* This,
1383         LPWSTR* pVendorInfo);
1384
1385 };
1386
1387 /*** IUnknown methods ***/
1388 #define IBaseFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1389 #define IBaseFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
1390 #define IBaseFilter_Release(p) (p)->lpVtbl->Release(p)
1391 /*** IPersist methods ***/
1392 #define IBaseFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
1393 /*** IMediaFilter methods ***/
1394 #define IBaseFilter_Stop(p) (p)->lpVtbl->Stop(p)
1395 #define IBaseFilter_Pause(p) (p)->lpVtbl->Pause(p)
1396 #define IBaseFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
1397 #define IBaseFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
1398 #define IBaseFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
1399 #define IBaseFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
1400 /*** IBaseFilter methods ***/
1401 #define IBaseFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a)
1402 #define IBaseFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b)
1403 #define IBaseFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a)
1404 #define IBaseFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b)
1405 #define IBaseFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a)
1406
1407 #endif
1408
1409 #define IBaseFilter_METHODS \
1410     ICOM_MSVTABLE_COMPAT_FIELDS \
1411     /*** IUnknown methods ***/ \
1412     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1413     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1414     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1415     /*** IPersist methods ***/ \
1416     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
1417     /*** IMediaFilter methods ***/ \
1418     STDMETHOD_(HRESULT,Stop)(THIS) PURE; \
1419     STDMETHOD_(HRESULT,Pause)(THIS) PURE; \
1420     STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \
1421     STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \
1422     STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \
1423     STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE; \
1424     /*** IBaseFilter methods ***/ \
1425     STDMETHOD_(HRESULT,EnumPins)(THIS_ IEnumPins** ppEnum) PURE; \
1426     STDMETHOD_(HRESULT,FindPin)(THIS_ LPCWSTR Id, IPin** ppPin) PURE; \
1427     STDMETHOD_(HRESULT,QueryFilterInfo)(THIS_ FILTER_INFO* pInfo) PURE; \
1428     STDMETHOD_(HRESULT,JoinFilterGraph)(THIS_ IFilterGraph* pGraph, LPCWSTR pName) PURE; \
1429     STDMETHOD_(HRESULT,QueryVendorInfo)(THIS_ LPWSTR* pVendorInfo) PURE;
1430
1431 HRESULT CALLBACK IBaseFilter_EnumPins_Proxy(
1432     IBaseFilter* This,
1433     IEnumPins** ppEnum);
1434 void __RPC_STUB IBaseFilter_EnumPins_Stub(
1435     struct IRpcStubBuffer* This,
1436     struct IRpcChannelBuffer* pRpcChannelBuffer,
1437     PRPC_MESSAGE pRpcMessage,
1438     DWORD* pdwStubPhase);
1439 HRESULT CALLBACK IBaseFilter_FindPin_Proxy(
1440     IBaseFilter* This,
1441     LPCWSTR Id,
1442     IPin** ppPin);
1443 void __RPC_STUB IBaseFilter_FindPin_Stub(
1444     struct IRpcStubBuffer* This,
1445     struct IRpcChannelBuffer* pRpcChannelBuffer,
1446     PRPC_MESSAGE pRpcMessage,
1447     DWORD* pdwStubPhase);
1448 HRESULT CALLBACK IBaseFilter_QueryFilterInfo_Proxy(
1449     IBaseFilter* This,
1450     FILTER_INFO* pInfo);
1451 void __RPC_STUB IBaseFilter_QueryFilterInfo_Stub(
1452     struct IRpcStubBuffer* This,
1453     struct IRpcChannelBuffer* pRpcChannelBuffer,
1454     PRPC_MESSAGE pRpcMessage,
1455     DWORD* pdwStubPhase);
1456 HRESULT CALLBACK IBaseFilter_JoinFilterGraph_Proxy(
1457     IBaseFilter* This,
1458     IFilterGraph* pGraph,
1459     LPCWSTR pName);
1460 void __RPC_STUB IBaseFilter_JoinFilterGraph_Stub(
1461     struct IRpcStubBuffer* This,
1462     struct IRpcChannelBuffer* pRpcChannelBuffer,
1463     PRPC_MESSAGE pRpcMessage,
1464     DWORD* pdwStubPhase);
1465 HRESULT CALLBACK IBaseFilter_QueryVendorInfo_Proxy(
1466     IBaseFilter* This,
1467     LPWSTR* pVendorInfo);
1468 void __RPC_STUB IBaseFilter_QueryVendorInfo_Stub(
1469     struct IRpcStubBuffer* This,
1470     struct IRpcChannelBuffer* pRpcChannelBuffer,
1471     PRPC_MESSAGE pRpcMessage,
1472     DWORD* pdwStubPhase);
1473
1474 #endif  /* __IBaseFilter_INTERFACE_DEFINED__ */
1475
1476 typedef IBaseFilter *PFILTER;
1477
1478 /*****************************************************************************
1479  * IReferenceClock interface
1480  */
1481 #ifndef __IReferenceClock_INTERFACE_DEFINED__
1482 #define __IReferenceClock_INTERFACE_DEFINED__
1483
1484 DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
1485 #if defined(__cplusplus) && !defined(CINTERFACE)
1486 struct IReferenceClock : public IUnknown
1487 {
1488     virtual HRESULT STDMETHODCALLTYPE GetTime(
1489         REFERENCE_TIME* pTime) = 0;
1490
1491     virtual HRESULT STDMETHODCALLTYPE AdviseTime(
1492         REFERENCE_TIME baseTime,
1493         REFERENCE_TIME streamTime,
1494         HEVENT hEvent,
1495         DWORD_PTR* pdwAdviseCookie) = 0;
1496
1497     virtual HRESULT STDMETHODCALLTYPE AdvisePeriodic(
1498         REFERENCE_TIME startTime,
1499         REFERENCE_TIME periodTime,
1500         HSEMAPHORE hSemaphore,
1501         DWORD_PTR* pdwAdviseCookie) = 0;
1502
1503     virtual HRESULT STDMETHODCALLTYPE Unadvise(
1504         DWORD_PTR dwAdviseCookie) = 0;
1505
1506 };
1507 #else
1508 typedef struct IReferenceClockVtbl IReferenceClockVtbl;
1509 struct IReferenceClock {
1510     const IReferenceClockVtbl* lpVtbl;
1511 };
1512 struct IReferenceClockVtbl {
1513     ICOM_MSVTABLE_COMPAT_FIELDS
1514
1515     /*** IUnknown methods ***/
1516     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1517         IReferenceClock* This,
1518         REFIID riid,
1519         void** ppvObject);
1520
1521     ULONG (STDMETHODCALLTYPE *AddRef)(
1522         IReferenceClock* This);
1523
1524     ULONG (STDMETHODCALLTYPE *Release)(
1525         IReferenceClock* This);
1526
1527     /*** IReferenceClock methods ***/
1528     HRESULT (STDMETHODCALLTYPE *GetTime)(
1529         IReferenceClock* This,
1530         REFERENCE_TIME* pTime);
1531
1532     HRESULT (STDMETHODCALLTYPE *AdviseTime)(
1533         IReferenceClock* This,
1534         REFERENCE_TIME baseTime,
1535         REFERENCE_TIME streamTime,
1536         HEVENT hEvent,
1537         DWORD_PTR* pdwAdviseCookie);
1538
1539     HRESULT (STDMETHODCALLTYPE *AdvisePeriodic)(
1540         IReferenceClock* This,
1541         REFERENCE_TIME startTime,
1542         REFERENCE_TIME periodTime,
1543         HSEMAPHORE hSemaphore,
1544         DWORD_PTR* pdwAdviseCookie);
1545
1546     HRESULT (STDMETHODCALLTYPE *Unadvise)(
1547         IReferenceClock* This,
1548         DWORD_PTR dwAdviseCookie);
1549
1550 };
1551
1552 /*** IUnknown methods ***/
1553 #define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1554 #define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p)
1555 #define IReferenceClock_Release(p) (p)->lpVtbl->Release(p)
1556 /*** IReferenceClock methods ***/
1557 #define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
1558 #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d)
1559 #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
1560 #define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
1561
1562 #endif
1563
1564 #define IReferenceClock_METHODS \
1565     ICOM_MSVTABLE_COMPAT_FIELDS \
1566     /*** IUnknown methods ***/ \
1567     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1568     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1569     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1570     /*** IReferenceClock methods ***/ \
1571     STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTime) PURE; \
1572     STDMETHOD_(HRESULT,AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HEVENT hEvent, DWORD_PTR* pdwAdviseCookie) PURE; \
1573     STDMETHOD_(HRESULT,AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HSEMAPHORE hSemaphore, DWORD_PTR* pdwAdviseCookie) PURE; \
1574     STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD_PTR dwAdviseCookie) PURE;
1575
1576 HRESULT CALLBACK IReferenceClock_GetTime_Proxy(
1577     IReferenceClock* This,
1578     REFERENCE_TIME* pTime);
1579 void __RPC_STUB IReferenceClock_GetTime_Stub(
1580     struct IRpcStubBuffer* This,
1581     struct IRpcChannelBuffer* pRpcChannelBuffer,
1582     PRPC_MESSAGE pRpcMessage,
1583     DWORD* pdwStubPhase);
1584 HRESULT CALLBACK IReferenceClock_AdviseTime_Proxy(
1585     IReferenceClock* This,
1586     REFERENCE_TIME baseTime,
1587     REFERENCE_TIME streamTime,
1588     HEVENT hEvent,
1589     DWORD_PTR* pdwAdviseCookie);
1590 void __RPC_STUB IReferenceClock_AdviseTime_Stub(
1591     struct IRpcStubBuffer* This,
1592     struct IRpcChannelBuffer* pRpcChannelBuffer,
1593     PRPC_MESSAGE pRpcMessage,
1594     DWORD* pdwStubPhase);
1595 HRESULT CALLBACK IReferenceClock_AdvisePeriodic_Proxy(
1596     IReferenceClock* This,
1597     REFERENCE_TIME startTime,
1598     REFERENCE_TIME periodTime,
1599     HSEMAPHORE hSemaphore,
1600     DWORD_PTR* pdwAdviseCookie);
1601 void __RPC_STUB IReferenceClock_AdvisePeriodic_Stub(
1602     struct IRpcStubBuffer* This,
1603     struct IRpcChannelBuffer* pRpcChannelBuffer,
1604     PRPC_MESSAGE pRpcMessage,
1605     DWORD* pdwStubPhase);
1606 HRESULT CALLBACK IReferenceClock_Unadvise_Proxy(
1607     IReferenceClock* This,
1608     DWORD_PTR dwAdviseCookie);
1609 void __RPC_STUB IReferenceClock_Unadvise_Stub(
1610     struct IRpcStubBuffer* This,
1611     struct IRpcChannelBuffer* pRpcChannelBuffer,
1612     PRPC_MESSAGE pRpcMessage,
1613     DWORD* pdwStubPhase);
1614
1615 #endif  /* __IReferenceClock_INTERFACE_DEFINED__ */
1616
1617 typedef IReferenceClock *PREFERENCECLOCK;
1618
1619 /*****************************************************************************
1620  * IMediaSample interface
1621  */
1622 #ifndef __IMediaSample_INTERFACE_DEFINED__
1623 #define __IMediaSample_INTERFACE_DEFINED__
1624
1625 DEFINE_GUID(IID_IMediaSample, 0x56a8689a, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
1626 #if defined(__cplusplus) && !defined(CINTERFACE)
1627 struct IMediaSample : public IUnknown
1628 {
1629     virtual HRESULT STDMETHODCALLTYPE GetPointer(
1630         BYTE** ppBuffer) = 0;
1631
1632     virtual long STDMETHODCALLTYPE GetSize(
1633         ) = 0;
1634
1635     virtual HRESULT STDMETHODCALLTYPE GetTime(
1636         REFERENCE_TIME* pTimeStart,
1637         REFERENCE_TIME* pTimeEnd) = 0;
1638
1639     virtual HRESULT STDMETHODCALLTYPE SetTime(
1640         REFERENCE_TIME* pTimeStart,
1641         REFERENCE_TIME* pTimeEnd) = 0;
1642
1643     virtual HRESULT STDMETHODCALLTYPE IsSyncPoint(
1644         ) = 0;
1645
1646     virtual HRESULT STDMETHODCALLTYPE SetSyncPoint(
1647         BOOL bIsSyncPoint) = 0;
1648
1649     virtual HRESULT STDMETHODCALLTYPE IsPreroll(
1650         ) = 0;
1651
1652     virtual HRESULT STDMETHODCALLTYPE SetPreroll(
1653         BOOL bIsPreroll) = 0;
1654
1655     virtual long STDMETHODCALLTYPE GetActualDataLength(
1656         ) = 0;
1657
1658     virtual HRESULT STDMETHODCALLTYPE SetActualDataLength(
1659         long length) = 0;
1660
1661     virtual HRESULT STDMETHODCALLTYPE GetMediaType(
1662         AM_MEDIA_TYPE** ppMediaType) = 0;
1663
1664     virtual HRESULT STDMETHODCALLTYPE SetMediaType(
1665         AM_MEDIA_TYPE* pMediaType) = 0;
1666
1667     virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity(
1668         ) = 0;
1669
1670     virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity(
1671         BOOL bDiscontinuity) = 0;
1672
1673     virtual HRESULT STDMETHODCALLTYPE GetMediaTime(
1674         LONGLONG* pTimeStart,
1675         LONGLONG* pTimeEnd) = 0;
1676
1677     virtual HRESULT STDMETHODCALLTYPE SetMediaTime(
1678         LONGLONG* pTimeStart,
1679         LONGLONG* pTimeEnd) = 0;
1680
1681 };
1682 #else
1683 typedef struct IMediaSampleVtbl IMediaSampleVtbl;
1684 struct IMediaSample {
1685     const IMediaSampleVtbl* lpVtbl;
1686 };
1687 struct IMediaSampleVtbl {
1688     ICOM_MSVTABLE_COMPAT_FIELDS
1689
1690     /*** IUnknown methods ***/
1691     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1692         IMediaSample* This,
1693         REFIID riid,
1694         void** ppvObject);
1695
1696     ULONG (STDMETHODCALLTYPE *AddRef)(
1697         IMediaSample* This);
1698
1699     ULONG (STDMETHODCALLTYPE *Release)(
1700         IMediaSample* This);
1701
1702     /*** IMediaSample methods ***/
1703     HRESULT (STDMETHODCALLTYPE *GetPointer)(
1704         IMediaSample* This,
1705         BYTE** ppBuffer);
1706
1707     long (STDMETHODCALLTYPE *GetSize)(
1708         IMediaSample* This);
1709
1710     HRESULT (STDMETHODCALLTYPE *GetTime)(
1711         IMediaSample* This,
1712         REFERENCE_TIME* pTimeStart,
1713         REFERENCE_TIME* pTimeEnd);
1714
1715     HRESULT (STDMETHODCALLTYPE *SetTime)(
1716         IMediaSample* This,
1717         REFERENCE_TIME* pTimeStart,
1718         REFERENCE_TIME* pTimeEnd);
1719
1720     HRESULT (STDMETHODCALLTYPE *IsSyncPoint)(
1721         IMediaSample* This);
1722
1723     HRESULT (STDMETHODCALLTYPE *SetSyncPoint)(
1724         IMediaSample* This,
1725         BOOL bIsSyncPoint);
1726
1727     HRESULT (STDMETHODCALLTYPE *IsPreroll)(
1728         IMediaSample* This);
1729
1730     HRESULT (STDMETHODCALLTYPE *SetPreroll)(
1731         IMediaSample* This,
1732         BOOL bIsPreroll);
1733
1734     long (STDMETHODCALLTYPE *GetActualDataLength)(
1735         IMediaSample* This);
1736
1737     HRESULT (STDMETHODCALLTYPE *SetActualDataLength)(
1738         IMediaSample* This,
1739         long length);
1740
1741     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
1742         IMediaSample* This,
1743         AM_MEDIA_TYPE** ppMediaType);
1744
1745     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
1746         IMediaSample* This,
1747         AM_MEDIA_TYPE* pMediaType);
1748
1749     HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)(
1750         IMediaSample* This);
1751
1752     HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)(
1753         IMediaSample* This,
1754         BOOL bDiscontinuity);
1755
1756     HRESULT (STDMETHODCALLTYPE *GetMediaTime)(
1757         IMediaSample* This,
1758         LONGLONG* pTimeStart,
1759         LONGLONG* pTimeEnd);
1760
1761     HRESULT (STDMETHODCALLTYPE *SetMediaTime)(
1762         IMediaSample* This,
1763         LONGLONG* pTimeStart,
1764         LONGLONG* pTimeEnd);
1765
1766 };
1767
1768 /*** IUnknown methods ***/
1769 #define IMediaSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1770 #define IMediaSample_AddRef(p) (p)->lpVtbl->AddRef(p)
1771 #define IMediaSample_Release(p) (p)->lpVtbl->Release(p)
1772 /*** IMediaSample methods ***/
1773 #define IMediaSample_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a)
1774 #define IMediaSample_GetSize(p) (p)->lpVtbl->GetSize(p)
1775 #define IMediaSample_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
1776 #define IMediaSample_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b)
1777 #define IMediaSample_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p)
1778 #define IMediaSample_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a)
1779 #define IMediaSample_IsPreroll(p) (p)->lpVtbl->IsPreroll(p)
1780 #define IMediaSample_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a)
1781 #define IMediaSample_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p)
1782 #define IMediaSample_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a)
1783 #define IMediaSample_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a)
1784 #define IMediaSample_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a)
1785 #define IMediaSample_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p)
1786 #define IMediaSample_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a)
1787 #define IMediaSample_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b)
1788 #define IMediaSample_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b)
1789
1790 #endif
1791
1792 #define IMediaSample_METHODS \
1793     ICOM_MSVTABLE_COMPAT_FIELDS \
1794     /*** IUnknown methods ***/ \
1795     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1796     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1797     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1798     /*** IMediaSample methods ***/ \
1799     STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \
1800     STDMETHOD_(long,GetSize)(THIS) PURE; \
1801     STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \
1802     STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \
1803     STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \
1804     STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \
1805     STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \
1806     STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \
1807     STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \
1808     STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long length) PURE; \
1809     STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \
1810     STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \
1811     STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \
1812     STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \
1813     STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \
1814     STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE;
1815
1816 HRESULT CALLBACK IMediaSample_GetPointer_Proxy(
1817     IMediaSample* This,
1818     BYTE** ppBuffer);
1819 void __RPC_STUB IMediaSample_GetPointer_Stub(
1820     struct IRpcStubBuffer* This,
1821     struct IRpcChannelBuffer* pRpcChannelBuffer,
1822     PRPC_MESSAGE pRpcMessage,
1823     DWORD* pdwStubPhase);
1824 long CALLBACK IMediaSample_GetSize_Proxy(
1825     IMediaSample* This);
1826 void __RPC_STUB IMediaSample_GetSize_Stub(
1827     struct IRpcStubBuffer* This,
1828     struct IRpcChannelBuffer* pRpcChannelBuffer,
1829     PRPC_MESSAGE pRpcMessage,
1830     DWORD* pdwStubPhase);
1831 HRESULT CALLBACK IMediaSample_GetTime_Proxy(
1832     IMediaSample* This,
1833     REFERENCE_TIME* pTimeStart,
1834     REFERENCE_TIME* pTimeEnd);
1835 void __RPC_STUB IMediaSample_GetTime_Stub(
1836     struct IRpcStubBuffer* This,
1837     struct IRpcChannelBuffer* pRpcChannelBuffer,
1838     PRPC_MESSAGE pRpcMessage,
1839     DWORD* pdwStubPhase);
1840 HRESULT CALLBACK IMediaSample_SetTime_Proxy(
1841     IMediaSample* This,
1842     REFERENCE_TIME* pTimeStart,
1843     REFERENCE_TIME* pTimeEnd);
1844 void __RPC_STUB IMediaSample_SetTime_Stub(
1845     struct IRpcStubBuffer* This,
1846     struct IRpcChannelBuffer* pRpcChannelBuffer,
1847     PRPC_MESSAGE pRpcMessage,
1848     DWORD* pdwStubPhase);
1849 HRESULT CALLBACK IMediaSample_IsSyncPoint_Proxy(
1850     IMediaSample* This);
1851 void __RPC_STUB IMediaSample_IsSyncPoint_Stub(
1852     struct IRpcStubBuffer* This,
1853     struct IRpcChannelBuffer* pRpcChannelBuffer,
1854     PRPC_MESSAGE pRpcMessage,
1855     DWORD* pdwStubPhase);
1856 HRESULT CALLBACK IMediaSample_SetSyncPoint_Proxy(
1857     IMediaSample* This,
1858     BOOL bIsSyncPoint);
1859 void __RPC_STUB IMediaSample_SetSyncPoint_Stub(
1860     struct IRpcStubBuffer* This,
1861     struct IRpcChannelBuffer* pRpcChannelBuffer,
1862     PRPC_MESSAGE pRpcMessage,
1863     DWORD* pdwStubPhase);
1864 HRESULT CALLBACK IMediaSample_IsPreroll_Proxy(
1865     IMediaSample* This);
1866 void __RPC_STUB IMediaSample_IsPreroll_Stub(
1867     struct IRpcStubBuffer* This,
1868     struct IRpcChannelBuffer* pRpcChannelBuffer,
1869     PRPC_MESSAGE pRpcMessage,
1870     DWORD* pdwStubPhase);
1871 HRESULT CALLBACK IMediaSample_SetPreroll_Proxy(
1872     IMediaSample* This,
1873     BOOL bIsPreroll);
1874 void __RPC_STUB IMediaSample_SetPreroll_Stub(
1875     struct IRpcStubBuffer* This,
1876     struct IRpcChannelBuffer* pRpcChannelBuffer,
1877     PRPC_MESSAGE pRpcMessage,
1878     DWORD* pdwStubPhase);
1879 long CALLBACK IMediaSample_GetActualDataLength_Proxy(
1880     IMediaSample* This);
1881 void __RPC_STUB IMediaSample_GetActualDataLength_Stub(
1882     struct IRpcStubBuffer* This,
1883     struct IRpcChannelBuffer* pRpcChannelBuffer,
1884     PRPC_MESSAGE pRpcMessage,
1885     DWORD* pdwStubPhase);
1886 HRESULT CALLBACK IMediaSample_SetActualDataLength_Proxy(
1887     IMediaSample* This,
1888     long length);
1889 void __RPC_STUB IMediaSample_SetActualDataLength_Stub(
1890     struct IRpcStubBuffer* This,
1891     struct IRpcChannelBuffer* pRpcChannelBuffer,
1892     PRPC_MESSAGE pRpcMessage,
1893     DWORD* pdwStubPhase);
1894 HRESULT CALLBACK IMediaSample_GetMediaType_Proxy(
1895     IMediaSample* This,
1896     AM_MEDIA_TYPE** ppMediaType);
1897 void __RPC_STUB IMediaSample_GetMediaType_Stub(
1898     struct IRpcStubBuffer* This,
1899     struct IRpcChannelBuffer* pRpcChannelBuffer,
1900     PRPC_MESSAGE pRpcMessage,
1901     DWORD* pdwStubPhase);
1902 HRESULT CALLBACK IMediaSample_SetMediaType_Proxy(
1903     IMediaSample* This,
1904     AM_MEDIA_TYPE* pMediaType);
1905 void __RPC_STUB IMediaSample_SetMediaType_Stub(
1906     struct IRpcStubBuffer* This,
1907     struct IRpcChannelBuffer* pRpcChannelBuffer,
1908     PRPC_MESSAGE pRpcMessage,
1909     DWORD* pdwStubPhase);
1910 HRESULT CALLBACK IMediaSample_IsDiscontinuity_Proxy(
1911     IMediaSample* This);
1912 void __RPC_STUB IMediaSample_IsDiscontinuity_Stub(
1913     struct IRpcStubBuffer* This,
1914     struct IRpcChannelBuffer* pRpcChannelBuffer,
1915     PRPC_MESSAGE pRpcMessage,
1916     DWORD* pdwStubPhase);
1917 HRESULT CALLBACK IMediaSample_SetDiscontinuity_Proxy(
1918     IMediaSample* This,
1919     BOOL bDiscontinuity);
1920 void __RPC_STUB IMediaSample_SetDiscontinuity_Stub(
1921     struct IRpcStubBuffer* This,
1922     struct IRpcChannelBuffer* pRpcChannelBuffer,
1923     PRPC_MESSAGE pRpcMessage,
1924     DWORD* pdwStubPhase);
1925 HRESULT CALLBACK IMediaSample_GetMediaTime_Proxy(
1926     IMediaSample* This,
1927     LONGLONG* pTimeStart,
1928     LONGLONG* pTimeEnd);
1929 void __RPC_STUB IMediaSample_GetMediaTime_Stub(
1930     struct IRpcStubBuffer* This,
1931     struct IRpcChannelBuffer* pRpcChannelBuffer,
1932     PRPC_MESSAGE pRpcMessage,
1933     DWORD* pdwStubPhase);
1934 HRESULT CALLBACK IMediaSample_SetMediaTime_Proxy(
1935     IMediaSample* This,
1936     LONGLONG* pTimeStart,
1937     LONGLONG* pTimeEnd);
1938 void __RPC_STUB IMediaSample_SetMediaTime_Stub(
1939     struct IRpcStubBuffer* This,
1940     struct IRpcChannelBuffer* pRpcChannelBuffer,
1941     PRPC_MESSAGE pRpcMessage,
1942     DWORD* pdwStubPhase);
1943
1944 #endif  /* __IMediaSample_INTERFACE_DEFINED__ */
1945
1946 typedef IMediaSample *PMEDIASAMPLE;
1947
1948 enum tagAM_SAMPLE_PROPERTY_FLAGS {
1949     AM_SAMPLE_SPLICEPOINT = 0x1,
1950     AM_SAMPLE_PREROLL = 0x2,
1951     AM_SAMPLE_DATADISCONTINUITY = 0x4,
1952     AM_SAMPLE_TYPECHANGED = 0x8,
1953     AM_SAMPLE_TIMEVALID = 0x10,
1954     AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
1955     AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
1956     AM_SAMPLE_STOPVALID = 0x100,
1957     AM_SAMPLE_ENDOFSTREAM = 0x200,
1958     AM_STREAM_MEDIA = 0,
1959     AM_STREAM_CONTROL = 1
1960 };
1961
1962 typedef struct tagAM_SAMPLE2_PROPERTIES {
1963     DWORD cbData;
1964     DWORD dwTypeSpecificFlags;
1965     DWORD dwSampleFlags;
1966     LONG lActual;
1967     REFERENCE_TIME tStart;
1968     REFERENCE_TIME tStop;
1969     DWORD dwStreamId;
1970     AM_MEDIA_TYPE *pMediaType;
1971     BYTE *pbBuffer;
1972     LONG cbBuffer;
1973 } AM_SAMPLE2_PROPERTIES;
1974
1975 #ifndef __IMediaSample2_FWD_DEFINED__
1976 #define __IMediaSample2_FWD_DEFINED__
1977 typedef struct IMediaSample2 IMediaSample2;
1978 #endif
1979
1980 /*****************************************************************************
1981  * IMediaSample2 interface
1982  */
1983 #ifndef __IMediaSample2_INTERFACE_DEFINED__
1984 #define __IMediaSample2_INTERFACE_DEFINED__
1985
1986 DEFINE_GUID(IID_IMediaSample2, 0x36b73884, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60);
1987 #if defined(__cplusplus) && !defined(CINTERFACE)
1988 struct IMediaSample2 : public IMediaSample
1989 {
1990     virtual HRESULT STDMETHODCALLTYPE GetProperties(
1991         DWORD cbProperties,
1992         BYTE* pbProperties) = 0;
1993
1994     virtual HRESULT STDMETHODCALLTYPE SetProperties(
1995         DWORD cbProperties,
1996         const BYTE* pbProperties) = 0;
1997
1998 };
1999 #else
2000 typedef struct IMediaSample2Vtbl IMediaSample2Vtbl;
2001 struct IMediaSample2 {
2002     const IMediaSample2Vtbl* lpVtbl;
2003 };
2004 struct IMediaSample2Vtbl {
2005     ICOM_MSVTABLE_COMPAT_FIELDS
2006
2007     /*** IUnknown methods ***/
2008     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2009         IMediaSample2* This,
2010         REFIID riid,
2011         void** ppvObject);
2012
2013     ULONG (STDMETHODCALLTYPE *AddRef)(
2014         IMediaSample2* This);
2015
2016     ULONG (STDMETHODCALLTYPE *Release)(
2017         IMediaSample2* This);
2018
2019     /*** IMediaSample methods ***/
2020     HRESULT (STDMETHODCALLTYPE *GetPointer)(
2021         IMediaSample2* This,
2022         BYTE** ppBuffer);
2023
2024     long (STDMETHODCALLTYPE *GetSize)(
2025         IMediaSample2* This);
2026
2027     HRESULT (STDMETHODCALLTYPE *GetTime)(
2028         IMediaSample2* This,
2029         REFERENCE_TIME* pTimeStart,
2030         REFERENCE_TIME* pTimeEnd);
2031
2032     HRESULT (STDMETHODCALLTYPE *SetTime)(
2033         IMediaSample2* This,
2034         REFERENCE_TIME* pTimeStart,
2035         REFERENCE_TIME* pTimeEnd);
2036
2037     HRESULT (STDMETHODCALLTYPE *IsSyncPoint)(
2038         IMediaSample2* This);
2039
2040     HRESULT (STDMETHODCALLTYPE *SetSyncPoint)(
2041         IMediaSample2* This,
2042         BOOL bIsSyncPoint);
2043
2044     HRESULT (STDMETHODCALLTYPE *IsPreroll)(
2045         IMediaSample2* This);
2046
2047     HRESULT (STDMETHODCALLTYPE *SetPreroll)(
2048         IMediaSample2* This,
2049         BOOL bIsPreroll);
2050
2051     long (STDMETHODCALLTYPE *GetActualDataLength)(
2052         IMediaSample2* This);
2053
2054     HRESULT (STDMETHODCALLTYPE *SetActualDataLength)(
2055         IMediaSample2* This,
2056         long length);
2057
2058     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
2059         IMediaSample2* This,
2060         AM_MEDIA_TYPE** ppMediaType);
2061
2062     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
2063         IMediaSample2* This,
2064         AM_MEDIA_TYPE* pMediaType);
2065
2066     HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)(
2067         IMediaSample2* This);
2068
2069     HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)(
2070         IMediaSample2* This,
2071         BOOL bDiscontinuity);
2072
2073     HRESULT (STDMETHODCALLTYPE *GetMediaTime)(
2074         IMediaSample2* This,
2075         LONGLONG* pTimeStart,
2076         LONGLONG* pTimeEnd);
2077
2078     HRESULT (STDMETHODCALLTYPE *SetMediaTime)(
2079         IMediaSample2* This,
2080         LONGLONG* pTimeStart,
2081         LONGLONG* pTimeEnd);
2082
2083     /*** IMediaSample2 methods ***/
2084     HRESULT (STDMETHODCALLTYPE *GetProperties)(
2085         IMediaSample2* This,
2086         DWORD cbProperties,
2087         BYTE* pbProperties);
2088
2089     HRESULT (STDMETHODCALLTYPE *SetProperties)(
2090         IMediaSample2* This,
2091         DWORD cbProperties,
2092         const BYTE* pbProperties);
2093
2094 };
2095
2096 /*** IUnknown methods ***/
2097 #define IMediaSample2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2098 #define IMediaSample2_AddRef(p) (p)->lpVtbl->AddRef(p)
2099 #define IMediaSample2_Release(p) (p)->lpVtbl->Release(p)
2100 /*** IMediaSample methods ***/
2101 #define IMediaSample2_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a)
2102 #define IMediaSample2_GetSize(p) (p)->lpVtbl->GetSize(p)
2103 #define IMediaSample2_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
2104 #define IMediaSample2_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b)
2105 #define IMediaSample2_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p)
2106 #define IMediaSample2_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a)
2107 #define IMediaSample2_IsPreroll(p) (p)->lpVtbl->IsPreroll(p)
2108 #define IMediaSample2_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a)
2109 #define IMediaSample2_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p)
2110 #define IMediaSample2_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a)
2111 #define IMediaSample2_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a)
2112 #define IMediaSample2_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a)
2113 #define IMediaSample2_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p)
2114 #define IMediaSample2_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a)
2115 #define IMediaSample2_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b)
2116 #define IMediaSample2_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b)
2117 /*** IMediaSample2 methods ***/
2118 #define IMediaSample2_GetProperties(p,a,b) (p)->lpVtbl->GetProperties(p,a,b)
2119 #define IMediaSample2_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b)
2120
2121 #endif
2122
2123 #define IMediaSample2_METHODS \
2124     ICOM_MSVTABLE_COMPAT_FIELDS \
2125     /*** IUnknown methods ***/ \
2126     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2127     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2128     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2129     /*** IMediaSample methods ***/ \
2130     STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \
2131     STDMETHOD_(long,GetSize)(THIS) PURE; \
2132     STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \
2133     STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \
2134     STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \
2135     STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \
2136     STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \
2137     STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \
2138     STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \
2139     STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long length) PURE; \
2140     STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \
2141     STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \
2142     STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \
2143     STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \
2144     STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \
2145     STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \
2146     /*** IMediaSample2 methods ***/ \
2147     STDMETHOD_(HRESULT,GetProperties)(THIS_ DWORD cbProperties, BYTE* pbProperties) PURE; \
2148     STDMETHOD_(HRESULT,SetProperties)(THIS_ DWORD cbProperties, const BYTE* pbProperties) PURE;
2149
2150 HRESULT CALLBACK IMediaSample2_GetProperties_Proxy(
2151     IMediaSample2* This,
2152     DWORD cbProperties,
2153     BYTE* pbProperties);
2154 void __RPC_STUB IMediaSample2_GetProperties_Stub(
2155     struct IRpcStubBuffer* This,
2156     struct IRpcChannelBuffer* pRpcChannelBuffer,
2157     PRPC_MESSAGE pRpcMessage,
2158     DWORD* pdwStubPhase);
2159 HRESULT CALLBACK IMediaSample2_SetProperties_Proxy(
2160     IMediaSample2* This,
2161     DWORD cbProperties,
2162     const BYTE* pbProperties);
2163 void __RPC_STUB IMediaSample2_SetProperties_Stub(
2164     struct IRpcStubBuffer* This,
2165     struct IRpcChannelBuffer* pRpcChannelBuffer,
2166     PRPC_MESSAGE pRpcMessage,
2167     DWORD* pdwStubPhase);
2168
2169 #endif  /* __IMediaSample2_INTERFACE_DEFINED__ */
2170
2171 typedef IMediaSample2 *PMEDIASAMPLE2;
2172
2173 #define AM_GBF_PREVFRAMESKIPPED 1
2174 #define AM_GBF_NOTASYNCPOINT 2
2175 #define AM_GBF_NOWAIT 4
2176 /*****************************************************************************
2177  * IMemAllocator interface
2178  */
2179 #ifndef __IMemAllocator_INTERFACE_DEFINED__
2180 #define __IMemAllocator_INTERFACE_DEFINED__
2181
2182 DEFINE_GUID(IID_IMemAllocator, 0x56a8689c, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
2183 #if defined(__cplusplus) && !defined(CINTERFACE)
2184 struct IMemAllocator : public IUnknown
2185 {
2186     virtual HRESULT STDMETHODCALLTYPE SetProperties(
2187         ALLOCATOR_PROPERTIES* pRequest,
2188         ALLOCATOR_PROPERTIES* pActual) = 0;
2189
2190     virtual HRESULT STDMETHODCALLTYPE GetProperties(
2191         ALLOCATOR_PROPERTIES* pProps) = 0;
2192
2193     virtual HRESULT STDMETHODCALLTYPE Commit(
2194         ) = 0;
2195
2196     virtual HRESULT STDMETHODCALLTYPE Decommit(
2197         ) = 0;
2198
2199     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
2200         IMediaSample** ppBuffer,
2201         REFERENCE_TIME* pStartTime,
2202         REFERENCE_TIME* pEndTime,
2203         DWORD dwFlags) = 0;
2204
2205     virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
2206         IMediaSample* pBuffer) = 0;
2207
2208 };
2209 #else
2210 typedef struct IMemAllocatorVtbl IMemAllocatorVtbl;
2211 struct IMemAllocator {
2212     const IMemAllocatorVtbl* lpVtbl;
2213 };
2214 struct IMemAllocatorVtbl {
2215     ICOM_MSVTABLE_COMPAT_FIELDS
2216
2217     /*** IUnknown methods ***/
2218     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2219         IMemAllocator* This,
2220         REFIID riid,
2221         void** ppvObject);
2222
2223     ULONG (STDMETHODCALLTYPE *AddRef)(
2224         IMemAllocator* This);
2225
2226     ULONG (STDMETHODCALLTYPE *Release)(
2227         IMemAllocator* This);
2228
2229     /*** IMemAllocator methods ***/
2230     HRESULT (STDMETHODCALLTYPE *SetProperties)(
2231         IMemAllocator* This,
2232         ALLOCATOR_PROPERTIES* pRequest,
2233         ALLOCATOR_PROPERTIES* pActual);
2234
2235     HRESULT (STDMETHODCALLTYPE *GetProperties)(
2236         IMemAllocator* This,
2237         ALLOCATOR_PROPERTIES* pProps);
2238
2239     HRESULT (STDMETHODCALLTYPE *Commit)(
2240         IMemAllocator* This);
2241
2242     HRESULT (STDMETHODCALLTYPE *Decommit)(
2243         IMemAllocator* This);
2244
2245     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
2246         IMemAllocator* This,
2247         IMediaSample** ppBuffer,
2248         REFERENCE_TIME* pStartTime,
2249         REFERENCE_TIME* pEndTime,
2250         DWORD dwFlags);
2251
2252     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
2253         IMemAllocator* This,
2254         IMediaSample* pBuffer);
2255
2256 };
2257
2258 /*** IUnknown methods ***/
2259 #define IMemAllocator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2260 #define IMemAllocator_AddRef(p) (p)->lpVtbl->AddRef(p)
2261 #define IMemAllocator_Release(p) (p)->lpVtbl->Release(p)
2262 /*** IMemAllocator methods ***/
2263 #define IMemAllocator_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b)
2264 #define IMemAllocator_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a)
2265 #define IMemAllocator_Commit(p) (p)->lpVtbl->Commit(p)
2266 #define IMemAllocator_Decommit(p) (p)->lpVtbl->Decommit(p)
2267 #define IMemAllocator_GetBuffer(p,a,b,c,d) (p)->lpVtbl->GetBuffer(p,a,b,c,d)
2268 #define IMemAllocator_ReleaseBuffer(p,a) (p)->lpVtbl->ReleaseBuffer(p,a)
2269
2270 #endif
2271
2272 #define IMemAllocator_METHODS \
2273     ICOM_MSVTABLE_COMPAT_FIELDS \
2274     /*** IUnknown methods ***/ \
2275     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2276     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2277     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2278     /*** IMemAllocator methods ***/ \
2279     STDMETHOD_(HRESULT,SetProperties)(THIS_ ALLOCATOR_PROPERTIES* pRequest, ALLOCATOR_PROPERTIES* pActual) PURE; \
2280     STDMETHOD_(HRESULT,GetProperties)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \
2281     STDMETHOD_(HRESULT,Commit)(THIS) PURE; \
2282     STDMETHOD_(HRESULT,Decommit)(THIS) PURE; \
2283     STDMETHOD_(HRESULT,GetBuffer)(THIS_ IMediaSample** ppBuffer, REFERENCE_TIME* pStartTime, REFERENCE_TIME* pEndTime, DWORD dwFlags) PURE; \
2284     STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ IMediaSample* pBuffer) PURE;
2285
2286 HRESULT CALLBACK IMemAllocator_SetProperties_Proxy(
2287     IMemAllocator* This,
2288     ALLOCATOR_PROPERTIES* pRequest,
2289     ALLOCATOR_PROPERTIES* pActual);
2290 void __RPC_STUB IMemAllocator_SetProperties_Stub(
2291     struct IRpcStubBuffer* This,
2292     struct IRpcChannelBuffer* pRpcChannelBuffer,
2293     PRPC_MESSAGE pRpcMessage,
2294     DWORD* pdwStubPhase);
2295 HRESULT CALLBACK IMemAllocator_GetProperties_Proxy(
2296     IMemAllocator* This,
2297     ALLOCATOR_PROPERTIES* pProps);
2298 void __RPC_STUB IMemAllocator_GetProperties_Stub(
2299     struct IRpcStubBuffer* This,
2300     struct IRpcChannelBuffer* pRpcChannelBuffer,
2301     PRPC_MESSAGE pRpcMessage,
2302     DWORD* pdwStubPhase);
2303 HRESULT CALLBACK IMemAllocator_Commit_Proxy(
2304     IMemAllocator* This);
2305 void __RPC_STUB IMemAllocator_Commit_Stub(
2306     struct IRpcStubBuffer* This,
2307     struct IRpcChannelBuffer* pRpcChannelBuffer,
2308     PRPC_MESSAGE pRpcMessage,
2309     DWORD* pdwStubPhase);
2310 HRESULT CALLBACK IMemAllocator_Decommit_Proxy(
2311     IMemAllocator* This);
2312 void __RPC_STUB IMemAllocator_Decommit_Stub(
2313     struct IRpcStubBuffer* This,
2314     struct IRpcChannelBuffer* pRpcChannelBuffer,
2315     PRPC_MESSAGE pRpcMessage,
2316     DWORD* pdwStubPhase);
2317 HRESULT CALLBACK IMemAllocator_GetBuffer_Proxy(
2318     IMemAllocator* This,
2319     IMediaSample** ppBuffer,
2320     REFERENCE_TIME* pStartTime,
2321     REFERENCE_TIME* pEndTime,
2322     DWORD dwFlags);
2323 void __RPC_STUB IMemAllocator_GetBuffer_Stub(
2324     struct IRpcStubBuffer* This,
2325     struct IRpcChannelBuffer* pRpcChannelBuffer,
2326     PRPC_MESSAGE pRpcMessage,
2327     DWORD* pdwStubPhase);
2328 HRESULT CALLBACK IMemAllocator_ReleaseBuffer_Proxy(
2329     IMemAllocator* This,
2330     IMediaSample* pBuffer);
2331 void __RPC_STUB IMemAllocator_ReleaseBuffer_Stub(
2332     struct IRpcStubBuffer* This,
2333     struct IRpcChannelBuffer* pRpcChannelBuffer,
2334     PRPC_MESSAGE pRpcMessage,
2335     DWORD* pdwStubPhase);
2336
2337 #endif  /* __IMemAllocator_INTERFACE_DEFINED__ */
2338
2339 typedef IMemAllocator *PMEMALLOCATOR;
2340
2341 /*****************************************************************************
2342  * IMemAllocatorCallbackTemp interface
2343  */
2344 #ifndef __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__
2345 #define __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__
2346
2347 DEFINE_GUID(IID_IMemAllocatorCallbackTemp, 0x379a0cf0, 0xc1de, 0x11d2, 0xab,0xf5, 0x00,0xa0,0xc9,0x05,0xf3,0x75);
2348 #if defined(__cplusplus) && !defined(CINTERFACE)
2349 struct IMemAllocatorCallbackTemp : public IMemAllocator
2350 {
2351     virtual HRESULT STDMETHODCALLTYPE SetNotify(
2352         IMemAllocatorNotifyCallbackTemp* pNotify) = 0;
2353
2354     virtual HRESULT STDMETHODCALLTYPE GetFreeCount(
2355         LONG* plBuffersFree) = 0;
2356
2357 };
2358 #else
2359 typedef struct IMemAllocatorCallbackTempVtbl IMemAllocatorCallbackTempVtbl;
2360 struct IMemAllocatorCallbackTemp {
2361     const IMemAllocatorCallbackTempVtbl* lpVtbl;
2362 };
2363 struct IMemAllocatorCallbackTempVtbl {
2364     ICOM_MSVTABLE_COMPAT_FIELDS
2365
2366     /*** IUnknown methods ***/
2367     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2368         IMemAllocatorCallbackTemp* This,
2369         REFIID riid,
2370         void** ppvObject);
2371
2372     ULONG (STDMETHODCALLTYPE *AddRef)(
2373         IMemAllocatorCallbackTemp* This);
2374
2375     ULONG (STDMETHODCALLTYPE *Release)(
2376         IMemAllocatorCallbackTemp* This);
2377
2378     /*** IMemAllocator methods ***/
2379     HRESULT (STDMETHODCALLTYPE *SetProperties)(
2380         IMemAllocatorCallbackTemp* This,
2381         ALLOCATOR_PROPERTIES* pRequest,
2382         ALLOCATOR_PROPERTIES* pActual);
2383
2384     HRESULT (STDMETHODCALLTYPE *GetProperties)(
2385         IMemAllocatorCallbackTemp* This,
2386         ALLOCATOR_PROPERTIES* pProps);
2387
2388     HRESULT (STDMETHODCALLTYPE *Commit)(
2389         IMemAllocatorCallbackTemp* This);
2390
2391     HRESULT (STDMETHODCALLTYPE *Decommit)(
2392         IMemAllocatorCallbackTemp* This);
2393
2394     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
2395         IMemAllocatorCallbackTemp* This,
2396         IMediaSample** ppBuffer,
2397         REFERENCE_TIME* pStartTime,
2398         REFERENCE_TIME* pEndTime,
2399         DWORD dwFlags);
2400
2401     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
2402         IMemAllocatorCallbackTemp* This,
2403         IMediaSample* pBuffer);
2404
2405     /*** IMemAllocatorCallbackTemp methods ***/
2406     HRESULT (STDMETHODCALLTYPE *SetNotify)(
2407         IMemAllocatorCallbackTemp* This,
2408         IMemAllocatorNotifyCallbackTemp* pNotify);
2409
2410     HRESULT (STDMETHODCALLTYPE *GetFreeCount)(
2411         IMemAllocatorCallbackTemp* This,
2412         LONG* plBuffersFree);
2413
2414 };
2415
2416 /*** IUnknown methods ***/
2417 #define IMemAllocatorCallbackTemp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2418 #define IMemAllocatorCallbackTemp_AddRef(p) (p)->lpVtbl->AddRef(p)
2419 #define IMemAllocatorCallbackTemp_Release(p) (p)->lpVtbl->Release(p)
2420 /*** IMemAllocator methods ***/
2421 #define IMemAllocatorCallbackTemp_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b)
2422 #define IMemAllocatorCallbackTemp_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a)
2423 #define IMemAllocatorCallbackTemp_Commit(p) (p)->lpVtbl->Commit(p)
2424 #define IMemAllocatorCallbackTemp_Decommit(p) (p)->lpVtbl->Decommit(p)
2425 #define IMemAllocatorCallbackTemp_GetBuffer(p,a,b,c,d) (p)->lpVtbl->GetBuffer(p,a,b,c,d)
2426 #define IMemAllocatorCallbackTemp_ReleaseBuffer(p,a) (p)->lpVtbl->ReleaseBuffer(p,a)
2427 /*** IMemAllocatorCallbackTemp methods ***/
2428 #define IMemAllocatorCallbackTemp_SetNotify(p,a) (p)->lpVtbl->SetNotify(p,a)
2429 #define IMemAllocatorCallbackTemp_GetFreeCount(p,a) (p)->lpVtbl->GetFreeCount(p,a)
2430
2431 #endif
2432
2433 #define IMemAllocatorCallbackTemp_METHODS \
2434     ICOM_MSVTABLE_COMPAT_FIELDS \
2435     /*** IUnknown methods ***/ \
2436     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2437     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2438     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2439     /*** IMemAllocator methods ***/ \
2440     STDMETHOD_(HRESULT,SetProperties)(THIS_ ALLOCATOR_PROPERTIES* pRequest, ALLOCATOR_PROPERTIES* pActual) PURE; \
2441     STDMETHOD_(HRESULT,GetProperties)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \
2442     STDMETHOD_(HRESULT,Commit)(THIS) PURE; \
2443     STDMETHOD_(HRESULT,Decommit)(THIS) PURE; \
2444     STDMETHOD_(HRESULT,GetBuffer)(THIS_ IMediaSample** ppBuffer, REFERENCE_TIME* pStartTime, REFERENCE_TIME* pEndTime, DWORD dwFlags) PURE; \
2445     STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ IMediaSample* pBuffer) PURE; \
2446     /*** IMemAllocatorCallbackTemp methods ***/ \
2447     STDMETHOD_(HRESULT,SetNotify)(THIS_ IMemAllocatorNotifyCallbackTemp* pNotify) PURE; \
2448     STDMETHOD_(HRESULT,GetFreeCount)(THIS_ LONG* plBuffersFree) PURE;
2449
2450 HRESULT CALLBACK IMemAllocatorCallbackTemp_SetNotify_Proxy(
2451     IMemAllocatorCallbackTemp* This,
2452     IMemAllocatorNotifyCallbackTemp* pNotify);
2453 void __RPC_STUB IMemAllocatorCallbackTemp_SetNotify_Stub(
2454     struct IRpcStubBuffer* This,
2455     struct IRpcChannelBuffer* pRpcChannelBuffer,
2456     PRPC_MESSAGE pRpcMessage,
2457     DWORD* pdwStubPhase);
2458 HRESULT CALLBACK IMemAllocatorCallbackTemp_GetFreeCount_Proxy(
2459     IMemAllocatorCallbackTemp* This,
2460     LONG* plBuffersFree);
2461 void __RPC_STUB IMemAllocatorCallbackTemp_GetFreeCount_Stub(
2462     struct IRpcStubBuffer* This,
2463     struct IRpcChannelBuffer* pRpcChannelBuffer,
2464     PRPC_MESSAGE pRpcMessage,
2465     DWORD* pdwStubPhase);
2466
2467 #endif  /* __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ */
2468
2469 /*****************************************************************************
2470  * IMemAllocatorNotifyCallbackTemp interface
2471  */
2472 #ifndef __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__
2473 #define __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__
2474
2475 DEFINE_GUID(IID_IMemAllocatorNotifyCallbackTemp, 0x92980b30, 0xc1de, 0x11d2, 0xab,0xf5, 0x00,0xa0,0xc9,0x05,0xf3,0x75);
2476 #if defined(__cplusplus) && !defined(CINTERFACE)
2477 struct IMemAllocatorNotifyCallbackTemp : public IUnknown
2478 {
2479     virtual HRESULT STDMETHODCALLTYPE NotifyRelease(
2480         ) = 0;
2481
2482 };
2483 #else
2484 typedef struct IMemAllocatorNotifyCallbackTempVtbl IMemAllocatorNotifyCallbackTempVtbl;
2485 struct IMemAllocatorNotifyCallbackTemp {
2486     const IMemAllocatorNotifyCallbackTempVtbl* lpVtbl;
2487 };
2488 struct IMemAllocatorNotifyCallbackTempVtbl {
2489     ICOM_MSVTABLE_COMPAT_FIELDS
2490
2491     /*** IUnknown methods ***/
2492     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2493         IMemAllocatorNotifyCallbackTemp* This,
2494         REFIID riid,
2495         void** ppvObject);
2496
2497     ULONG (STDMETHODCALLTYPE *AddRef)(
2498         IMemAllocatorNotifyCallbackTemp* This);
2499
2500     ULONG (STDMETHODCALLTYPE *Release)(
2501         IMemAllocatorNotifyCallbackTemp* This);
2502
2503     /*** IMemAllocatorNotifyCallbackTemp methods ***/
2504     HRESULT (STDMETHODCALLTYPE *NotifyRelease)(
2505         IMemAllocatorNotifyCallbackTemp* This);
2506
2507 };
2508
2509 /*** IUnknown methods ***/
2510 #define IMemAllocatorNotifyCallbackTemp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2511 #define IMemAllocatorNotifyCallbackTemp_AddRef(p) (p)->lpVtbl->AddRef(p)
2512 #define IMemAllocatorNotifyCallbackTemp_Release(p) (p)->lpVtbl->Release(p)
2513 /*** IMemAllocatorNotifyCallbackTemp methods ***/
2514 #define IMemAllocatorNotifyCallbackTemp_NotifyRelease(p) (p)->lpVtbl->NotifyRelease(p)
2515
2516 #endif
2517
2518 #define IMemAllocatorNotifyCallbackTemp_METHODS \
2519     ICOM_MSVTABLE_COMPAT_FIELDS \
2520     /*** IUnknown methods ***/ \
2521     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2522     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2523     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2524     /*** IMemAllocatorNotifyCallbackTemp methods ***/ \
2525     STDMETHOD_(HRESULT,NotifyRelease)(THIS) PURE;
2526
2527 HRESULT CALLBACK IMemAllocatorNotifyCallbackTemp_NotifyRelease_Proxy(
2528     IMemAllocatorNotifyCallbackTemp* This);
2529 void __RPC_STUB IMemAllocatorNotifyCallbackTemp_NotifyRelease_Stub(
2530     struct IRpcStubBuffer* This,
2531     struct IRpcChannelBuffer* pRpcChannelBuffer,
2532     PRPC_MESSAGE pRpcMessage,
2533     DWORD* pdwStubPhase);
2534
2535 #endif  /* __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ */
2536
2537 /*****************************************************************************
2538  * IMemInputPin interface
2539  */
2540 #ifndef __IMemInputPin_INTERFACE_DEFINED__
2541 #define __IMemInputPin_INTERFACE_DEFINED__
2542
2543 DEFINE_GUID(IID_IMemInputPin, 0x56a8689d, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
2544 #if defined(__cplusplus) && !defined(CINTERFACE)
2545 struct IMemInputPin : public IUnknown
2546 {
2547     virtual HRESULT STDMETHODCALLTYPE GetAllocator(
2548         IMemAllocator** ppAllocator) = 0;
2549
2550     virtual HRESULT STDMETHODCALLTYPE NotifyAllocator(
2551         IMemAllocator* pAllocator,
2552         BOOL bReadOnly) = 0;
2553
2554     virtual HRESULT STDMETHODCALLTYPE GetAllocatorRequirements(
2555         ALLOCATOR_PROPERTIES* pProps) = 0;
2556
2557     virtual HRESULT STDMETHODCALLTYPE Receive(
2558         IMediaSample* pSample) = 0;
2559
2560     virtual HRESULT STDMETHODCALLTYPE ReceiveMultiple(
2561         IMediaSample** pSamples,
2562         long nSamples,
2563         long* nSamplesProcessed) = 0;
2564
2565     virtual HRESULT STDMETHODCALLTYPE ReceiveCanBlock(
2566         ) = 0;
2567
2568 };
2569 #else
2570 typedef struct IMemInputPinVtbl IMemInputPinVtbl;
2571 struct IMemInputPin {
2572     const IMemInputPinVtbl* lpVtbl;
2573 };
2574 struct IMemInputPinVtbl {
2575     ICOM_MSVTABLE_COMPAT_FIELDS
2576
2577     /*** IUnknown methods ***/
2578     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2579         IMemInputPin* This,
2580         REFIID riid,
2581         void** ppvObject);
2582
2583     ULONG (STDMETHODCALLTYPE *AddRef)(
2584         IMemInputPin* This);
2585
2586     ULONG (STDMETHODCALLTYPE *Release)(
2587         IMemInputPin* This);
2588
2589     /*** IMemInputPin methods ***/
2590     HRESULT (STDMETHODCALLTYPE *GetAllocator)(
2591         IMemInputPin* This,
2592         IMemAllocator** ppAllocator);
2593
2594     HRESULT (STDMETHODCALLTYPE *NotifyAllocator)(
2595         IMemInputPin* This,
2596         IMemAllocator* pAllocator,
2597         BOOL bReadOnly);
2598
2599     HRESULT (STDMETHODCALLTYPE *GetAllocatorRequirements)(
2600         IMemInputPin* This,
2601         ALLOCATOR_PROPERTIES* pProps);
2602
2603     HRESULT (STDMETHODCALLTYPE *Receive)(
2604         IMemInputPin* This,
2605         IMediaSample* pSample);
2606
2607     HRESULT (STDMETHODCALLTYPE *ReceiveMultiple)(
2608         IMemInputPin* This,
2609         IMediaSample** pSamples,
2610         long nSamples,
2611         long* nSamplesProcessed);
2612
2613     HRESULT (STDMETHODCALLTYPE *ReceiveCanBlock)(
2614         IMemInputPin* This);
2615
2616 };
2617
2618 /*** IUnknown methods ***/
2619 #define IMemInputPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2620 #define IMemInputPin_AddRef(p) (p)->lpVtbl->AddRef(p)
2621 #define IMemInputPin_Release(p) (p)->lpVtbl->Release(p)
2622 /*** IMemInputPin methods ***/
2623 #define IMemInputPin_GetAllocator(p,a) (p)->lpVtbl->GetAllocator(p,a)
2624 #define IMemInputPin_NotifyAllocator(p,a,b) (p)->lpVtbl->NotifyAllocator(p,a,b)
2625 #define IMemInputPin_GetAllocatorRequirements(p,a) (p)->lpVtbl->GetAllocatorRequirements(p,a)
2626 #define IMemInputPin_Receive(p,a) (p)->lpVtbl->Receive(p,a)
2627 #define IMemInputPin_ReceiveMultiple(p,a,b,c) (p)->lpVtbl->ReceiveMultiple(p,a,b,c)
2628 #define IMemInputPin_ReceiveCanBlock(p) (p)->lpVtbl->ReceiveCanBlock(p)
2629
2630 #endif
2631
2632 #define IMemInputPin_METHODS \
2633     ICOM_MSVTABLE_COMPAT_FIELDS \
2634     /*** IUnknown methods ***/ \
2635     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2636     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2637     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2638     /*** IMemInputPin methods ***/ \
2639     STDMETHOD_(HRESULT,GetAllocator)(THIS_ IMemAllocator** ppAllocator) PURE; \
2640     STDMETHOD_(HRESULT,NotifyAllocator)(THIS_ IMemAllocator* pAllocator, BOOL bReadOnly) PURE; \
2641     STDMETHOD_(HRESULT,GetAllocatorRequirements)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \
2642     STDMETHOD_(HRESULT,Receive)(THIS_ IMediaSample* pSample) PURE; \
2643     STDMETHOD_(HRESULT,ReceiveMultiple)(THIS_ IMediaSample** pSamples, long nSamples, long* nSamplesProcessed) PURE; \
2644     STDMETHOD_(HRESULT,ReceiveCanBlock)(THIS) PURE;
2645
2646 HRESULT CALLBACK IMemInputPin_GetAllocator_Proxy(
2647     IMemInputPin* This,
2648     IMemAllocator** ppAllocator);
2649 void __RPC_STUB IMemInputPin_GetAllocator_Stub(
2650     struct IRpcStubBuffer* This,
2651     struct IRpcChannelBuffer* pRpcChannelBuffer,
2652     PRPC_MESSAGE pRpcMessage,
2653     DWORD* pdwStubPhase);
2654 HRESULT CALLBACK IMemInputPin_NotifyAllocator_Proxy(
2655     IMemInputPin* This,
2656     IMemAllocator* pAllocator,
2657     BOOL bReadOnly);
2658 void __RPC_STUB IMemInputPin_NotifyAllocator_Stub(
2659     struct IRpcStubBuffer* This,
2660     struct IRpcChannelBuffer* pRpcChannelBuffer,
2661     PRPC_MESSAGE pRpcMessage,
2662     DWORD* pdwStubPhase);
2663 HRESULT CALLBACK IMemInputPin_GetAllocatorRequirements_Proxy(
2664     IMemInputPin* This,
2665     ALLOCATOR_PROPERTIES* pProps);
2666 void __RPC_STUB IMemInputPin_GetAllocatorRequirements_Stub(
2667     struct IRpcStubBuffer* This,
2668     struct IRpcChannelBuffer* pRpcChannelBuffer,
2669     PRPC_MESSAGE pRpcMessage,
2670     DWORD* pdwStubPhase);
2671 HRESULT CALLBACK IMemInputPin_Receive_Proxy(
2672     IMemInputPin* This,
2673     IMediaSample* pSample);
2674 void __RPC_STUB IMemInputPin_Receive_Stub(
2675     struct IRpcStubBuffer* This,
2676     struct IRpcChannelBuffer* pRpcChannelBuffer,
2677     PRPC_MESSAGE pRpcMessage,
2678     DWORD* pdwStubPhase);
2679 HRESULT CALLBACK IMemInputPin_ReceiveMultiple_Proxy(
2680     IMemInputPin* This,
2681     IMediaSample** pSamples,
2682     long nSamples,
2683     long* nSamplesProcessed);
2684 void __RPC_STUB IMemInputPin_ReceiveMultiple_Stub(
2685     struct IRpcStubBuffer* This,
2686     struct IRpcChannelBuffer* pRpcChannelBuffer,
2687     PRPC_MESSAGE pRpcMessage,
2688     DWORD* pdwStubPhase);
2689 HRESULT CALLBACK IMemInputPin_ReceiveCanBlock_Proxy(
2690     IMemInputPin* This);
2691 void __RPC_STUB IMemInputPin_ReceiveCanBlock_Stub(
2692     struct IRpcStubBuffer* This,
2693     struct IRpcChannelBuffer* pRpcChannelBuffer,
2694     PRPC_MESSAGE pRpcMessage,
2695     DWORD* pdwStubPhase);
2696
2697 #endif  /* __IMemInputPin_INTERFACE_DEFINED__ */
2698
2699 typedef IMemInputPin *PMEMINPUTPIN;
2700
2701 /*****************************************************************************
2702  * IAMovieSetup interface
2703  */
2704 #ifndef __IAMovieSetup_INTERFACE_DEFINED__
2705 #define __IAMovieSetup_INTERFACE_DEFINED__
2706
2707 DEFINE_GUID(IID_IAMovieSetup, 0xa3d8cec0, 0x7e5a, 0x11cf, 0xbb,0xc5, 0x00,0x80,0x5f,0x6c,0xef,0x20);
2708 #if defined(__cplusplus) && !defined(CINTERFACE)
2709 struct IAMovieSetup : public IUnknown
2710 {
2711     virtual HRESULT STDMETHODCALLTYPE Register(
2712         ) = 0;
2713
2714     virtual HRESULT STDMETHODCALLTYPE Unregister(
2715         ) = 0;
2716
2717 };
2718 #else
2719 typedef struct IAMovieSetupVtbl IAMovieSetupVtbl;
2720 struct IAMovieSetup {
2721     const IAMovieSetupVtbl* lpVtbl;
2722 };
2723 struct IAMovieSetupVtbl {
2724     ICOM_MSVTABLE_COMPAT_FIELDS
2725
2726     /*** IUnknown methods ***/
2727     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2728         IAMovieSetup* This,
2729         REFIID riid,
2730         void** ppvObject);
2731
2732     ULONG (STDMETHODCALLTYPE *AddRef)(
2733         IAMovieSetup* This);
2734
2735     ULONG (STDMETHODCALLTYPE *Release)(
2736         IAMovieSetup* This);
2737
2738     /*** IAMovieSetup methods ***/
2739     HRESULT (STDMETHODCALLTYPE *Register)(
2740         IAMovieSetup* This);
2741
2742     HRESULT (STDMETHODCALLTYPE *Unregister)(
2743         IAMovieSetup* This);
2744
2745 };
2746
2747 /*** IUnknown methods ***/
2748 #define IAMovieSetup_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2749 #define IAMovieSetup_AddRef(p) (p)->lpVtbl->AddRef(p)
2750 #define IAMovieSetup_Release(p) (p)->lpVtbl->Release(p)
2751 /*** IAMovieSetup methods ***/
2752 #define IAMovieSetup_Register(p) (p)->lpVtbl->Register(p)
2753 #define IAMovieSetup_Unregister(p) (p)->lpVtbl->Unregister(p)
2754
2755 #endif
2756
2757 #define IAMovieSetup_METHODS \
2758     ICOM_MSVTABLE_COMPAT_FIELDS \
2759     /*** IUnknown methods ***/ \
2760     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2761     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2762     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2763     /*** IAMovieSetup methods ***/ \
2764     STDMETHOD_(HRESULT,Register)(THIS) PURE; \
2765     STDMETHOD_(HRESULT,Unregister)(THIS) PURE;
2766
2767 HRESULT CALLBACK IAMovieSetup_Register_Proxy(
2768     IAMovieSetup* This);
2769 void __RPC_STUB IAMovieSetup_Register_Stub(
2770     struct IRpcStubBuffer* This,
2771     struct IRpcChannelBuffer* pRpcChannelBuffer,
2772     PRPC_MESSAGE pRpcMessage,
2773     DWORD* pdwStubPhase);
2774 HRESULT CALLBACK IAMovieSetup_Unregister_Proxy(
2775     IAMovieSetup* This);
2776 void __RPC_STUB IAMovieSetup_Unregister_Stub(
2777     struct IRpcStubBuffer* This,
2778     struct IRpcChannelBuffer* pRpcChannelBuffer,
2779     PRPC_MESSAGE pRpcMessage,
2780     DWORD* pdwStubPhase);
2781
2782 #endif  /* __IAMovieSetup_INTERFACE_DEFINED__ */
2783
2784 typedef IAMovieSetup *PAMOVIESETUP;
2785
2786 typedef enum AM_SEEKING_SeekingFlags {
2787     AM_SEEKING_NoPositioning = 0x0,
2788     AM_SEEKING_AbsolutePositioning = 0x1,
2789     AM_SEEKING_RelativePositioning = 0x2,
2790     AM_SEEKING_IncrementalPositioning = 0x3,
2791     AM_SEEKING_PositioningBitsMask = 0x3,
2792     AM_SEEKING_SeekToKeyFrame = 0x4,
2793     AM_SEEKING_ReturnTime = 0x8,
2794     AM_SEEKING_Segment = 0x10,
2795     AM_SEEKING_NoFlush = 0x20
2796 } AM_SEEKING_SEEKING_FLAGS;
2797
2798 typedef enum AM_SEEKING_SeekingCapabilities {
2799     AM_SEEKING_CanSeekAbsolute = 0x1,
2800     AM_SEEKING_CanSeekForwards = 0x2,
2801     AM_SEEKING_CanSeekBackwards = 0x4,
2802     AM_SEEKING_CanGetCurrentPos = 0x8,
2803     AM_SEEKING_CanGetStopPos = 0x10,
2804     AM_SEEKING_CanGetDuration = 0x20,
2805     AM_SEEKING_CanPlayBackwards = 0x40,
2806     AM_SEEKING_CanDoSegments = 0x80,
2807     AM_SEEKING_Source = 0x100
2808 } AM_SEEKING_SEEKING_CAPABILITIES;
2809
2810 #ifndef __IMediaSeeking_FWD_DEFINED__
2811 #define __IMediaSeeking_FWD_DEFINED__
2812 typedef struct IMediaSeeking IMediaSeeking;
2813 #endif
2814
2815 /*****************************************************************************
2816  * IMediaSeeking interface
2817  */
2818 #ifndef __IMediaSeeking_INTERFACE_DEFINED__
2819 #define __IMediaSeeking_INTERFACE_DEFINED__
2820
2821 DEFINE_GUID(IID_IMediaSeeking, 0x36b73880, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60);
2822 #if defined(__cplusplus) && !defined(CINTERFACE)
2823 struct IMediaSeeking : public IUnknown
2824 {
2825     virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
2826         DWORD* pCapabilities) = 0;
2827
2828     virtual HRESULT STDMETHODCALLTYPE CheckCapabilities(
2829         DWORD* pCapabilities) = 0;
2830
2831     virtual HRESULT STDMETHODCALLTYPE IsFormatSupported(
2832         const GUID* pFormat) = 0;
2833
2834     virtual HRESULT STDMETHODCALLTYPE QueryPreferredFormat(
2835         GUID* pFormat) = 0;
2836
2837     virtual HRESULT STDMETHODCALLTYPE GetTimeFormat(
2838         GUID* pFormat) = 0;
2839
2840     virtual HRESULT STDMETHODCALLTYPE IsUsingTimeFormat(
2841         const GUID* pFormat) = 0;
2842
2843     virtual HRESULT STDMETHODCALLTYPE SetTimeFormat(
2844         const GUID* pFormat) = 0;
2845
2846     virtual HRESULT STDMETHODCALLTYPE GetDuration(
2847         LONGLONG* pDuration) = 0;
2848
2849     virtual HRESULT STDMETHODCALLTYPE GetStopPosition(
2850         LONGLONG* pStop) = 0;
2851
2852     virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(
2853         LONGLONG* pCurrent) = 0;
2854
2855     virtual HRESULT STDMETHODCALLTYPE ConvertTimeFormat(
2856         LONGLONG* pTarget,
2857         const GUID* pTargetFormat,
2858         LONGLONG Source,
2859         const GUID* pSourceFormat) = 0;
2860
2861     virtual HRESULT STDMETHODCALLTYPE SetPositions(
2862         LONGLONG* pCurrent,
2863         DWORD dwCurrentFlags,
2864         LONGLONG* pStop,
2865         DWORD dwStopFlags) = 0;
2866
2867     virtual HRESULT STDMETHODCALLTYPE GetPositions(
2868         LONGLONG* pCurrent,
2869         LONGLONG* pStop) = 0;
2870
2871     virtual HRESULT STDMETHODCALLTYPE GetAvailable(
2872         LONGLONG* pEarliest,
2873         LONGLONG* pLatest) = 0;
2874
2875     virtual HRESULT STDMETHODCALLTYPE SetRate(
2876         double dRate) = 0;
2877
2878     virtual HRESULT STDMETHODCALLTYPE GetRate(
2879         double* pdRate) = 0;
2880
2881     virtual HRESULT STDMETHODCALLTYPE GetPreroll(
2882         LONGLONG* pllPreroll) = 0;
2883
2884 };
2885 #else
2886 typedef struct IMediaSeekingVtbl IMediaSeekingVtbl;
2887 struct IMediaSeeking {
2888     const IMediaSeekingVtbl* lpVtbl;
2889 };
2890 struct IMediaSeekingVtbl {
2891     ICOM_MSVTABLE_COMPAT_FIELDS
2892
2893     /*** IUnknown methods ***/
2894     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2895         IMediaSeeking* This,
2896         REFIID riid,
2897         void** ppvObject);
2898
2899     ULONG (STDMETHODCALLTYPE *AddRef)(
2900         IMediaSeeking* This);
2901
2902     ULONG (STDMETHODCALLTYPE *Release)(
2903         IMediaSeeking* This);
2904
2905     /*** IMediaSeeking methods ***/
2906     HRESULT (STDMETHODCALLTYPE *GetCapabilities)(
2907         IMediaSeeking* This,
2908         DWORD* pCapabilities);
2909
2910     HRESULT (STDMETHODCALLTYPE *CheckCapabilities)(
2911         IMediaSeeking* This,
2912         DWORD* pCapabilities);
2913
2914     HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
2915         IMediaSeeking* This,
2916         const GUID* pFormat);
2917
2918     HRESULT (STDMETHODCALLTYPE *QueryPreferredFormat)(
2919         IMediaSeeking* This,
2920         GUID* pFormat);
2921
2922     HRESULT (STDMETHODCALLTYPE *GetTimeFormat)(
2923         IMediaSeeking* This,
2924         GUID* pFormat);
2925
2926     HRESULT (STDMETHODCALLTYPE *IsUsingTimeFormat)(
2927         IMediaSeeking* This,
2928         const GUID* pFormat);
2929
2930     HRESULT (STDMETHODCALLTYPE *SetTimeFormat)(
2931         IMediaSeeking* This,
2932         const GUID* pFormat);
2933
2934     HRESULT (STDMETHODCALLTYPE *GetDuration)(
2935         IMediaSeeking* This,
2936         LONGLONG* pDuration);
2937
2938     HRESULT (STDMETHODCALLTYPE *GetStopPosition)(
2939         IMediaSeeking* This,
2940         LONGLONG* pStop);
2941
2942     HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)(
2943         IMediaSeeking* This,
2944         LONGLONG* pCurrent);
2945
2946     HRESULT (STDMETHODCALLTYPE *ConvertTimeFormat)(
2947         IMediaSeeking* This,
2948         LONGLONG* pTarget,
2949         const GUID* pTargetFormat,
2950         LONGLONG Source,
2951         const GUID* pSourceFormat);
2952
2953     HRESULT (STDMETHODCALLTYPE *SetPositions)(
2954         IMediaSeeking* This,
2955         LONGLONG* pCurrent,
2956         DWORD dwCurrentFlags,
2957         LONGLONG* pStop,
2958         DWORD dwStopFlags);
2959
2960     HRESULT (STDMETHODCALLTYPE *GetPositions)(
2961         IMediaSeeking* This,
2962         LONGLONG* pCurrent,
2963         LONGLONG* pStop);
2964
2965     HRESULT (STDMETHODCALLTYPE *GetAvailable)(
2966         IMediaSeeking* This,
2967         LONGLONG* pEarliest,
2968         LONGLONG* pLatest);
2969
2970     HRESULT (STDMETHODCALLTYPE *SetRate)(
2971         IMediaSeeking* This,
2972         double dRate);
2973
2974     HRESULT (STDMETHODCALLTYPE *GetRate)(
2975         IMediaSeeking* This,
2976         double* pdRate);
2977
2978     HRESULT (STDMETHODCALLTYPE *GetPreroll)(
2979         IMediaSeeking* This,
2980         LONGLONG* pllPreroll);
2981
2982 };
2983
2984 /*** IUnknown methods ***/
2985 #define IMediaSeeking_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2986 #define IMediaSeeking_AddRef(p) (p)->lpVtbl->AddRef(p)
2987 #define IMediaSeeking_Release(p) (p)->lpVtbl->Release(p)
2988 /*** IMediaSeeking methods ***/
2989 #define IMediaSeeking_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
2990 #define IMediaSeeking_CheckCapabilities(p,a) (p)->lpVtbl->CheckCapabilities(p,a)
2991 #define IMediaSeeking_IsFormatSupported(p,a) (p)->lpVtbl->IsFormatSupported(p,a)
2992 #define IMediaSeeking_QueryPreferredFormat(p,a) (p)->lpVtbl->QueryPreferredFormat(p,a)
2993 #define IMediaSeeking_GetTimeFormat(p,a) (p)->lpVtbl->GetTimeFormat(p,a)
2994 #define IMediaSeeking_IsUsingTimeFormat(p,a) (p)->lpVtbl->IsUsingTimeFormat(p,a)
2995 #define IMediaSeeking_SetTimeFormat(p,a) (p)->lpVtbl->SetTimeFormat(p,a)
2996 #define IMediaSeeking_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a)
2997 #define IMediaSeeking_GetStopPosition(p,a) (p)->lpVtbl->GetStopPosition(p,a)
2998 #define IMediaSeeking_GetCurrentPosition(p,a) (p)->lpVtbl->GetCurrentPosition(p,a)
2999 #define IMediaSeeking_ConvertTimeFormat(p,a,b,c,d) (p)->lpVtbl->ConvertTimeFormat(p,a,b,c,d)
3000 #define IMediaSeeking_SetPositions(p,a,b,c,d) (p)->lpVtbl->SetPositions(p,a,b,c,d)
3001 #define IMediaSeeking_GetPositions(p,a,b) (p)->lpVtbl->GetPositions(p,a,b)
3002 #define IMediaSeeking_GetAvailable(p,a,b) (p)->lpVtbl->GetAvailable(p,a,b)
3003 #define IMediaSeeking_SetRate(p,a) (p)->lpVtbl->SetRate(p,a)
3004 #define IMediaSeeking_GetRate(p,a) (p)->lpVtbl->GetRate(p,a)
3005 #define IMediaSeeking_GetPreroll(p,a) (p)->lpVtbl->GetPreroll(p,a)
3006
3007 #endif
3008
3009 #define IMediaSeeking_METHODS \
3010     ICOM_MSVTABLE_COMPAT_FIELDS \
3011     /*** IUnknown methods ***/ \
3012     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3013     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3014     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3015     /*** IMediaSeeking methods ***/ \
3016     STDMETHOD_(HRESULT,GetCapabilities)(THIS_ DWORD* pCapabilities) PURE; \
3017     STDMETHOD_(HRESULT,CheckCapabilities)(THIS_ DWORD* pCapabilities) PURE; \
3018     STDMETHOD_(HRESULT,IsFormatSupported)(THIS_ const GUID* pFormat) PURE; \
3019     STDMETHOD_(HRESULT,QueryPreferredFormat)(THIS_ GUID* pFormat) PURE; \
3020     STDMETHOD_(HRESULT,GetTimeFormat)(THIS_ GUID* pFormat) PURE; \
3021     STDMETHOD_(HRESULT,IsUsingTimeFormat)(THIS_ const GUID* pFormat) PURE; \
3022     STDMETHOD_(HRESULT,SetTimeFormat)(THIS_ const GUID* pFormat) PURE; \
3023     STDMETHOD_(HRESULT,GetDuration)(THIS_ LONGLONG* pDuration) PURE; \
3024     STDMETHOD_(HRESULT,GetStopPosition)(THIS_ LONGLONG* pStop) PURE; \
3025     STDMETHOD_(HRESULT,GetCurrentPosition)(THIS_ LONGLONG* pCurrent) PURE; \
3026     STDMETHOD_(HRESULT,ConvertTimeFormat)(THIS_ LONGLONG* pTarget, const GUID* pTargetFormat, LONGLONG Source, const GUID* pSourceFormat) PURE; \
3027     STDMETHOD_(HRESULT,SetPositions)(THIS_ LONGLONG* pCurrent, DWORD dwCurrentFlags, LONGLONG* pStop, DWORD dwStopFlags) PURE; \
3028     STDMETHOD_(HRESULT,GetPositions)(THIS_ LONGLONG* pCurrent, LONGLONG* pStop) PURE; \
3029     STDMETHOD_(HRESULT,GetAvailable)(THIS_ LONGLONG* pEarliest, LONGLONG* pLatest) PURE; \
3030     STDMETHOD_(HRESULT,SetRate)(THIS_ double dRate) PURE; \
3031     STDMETHOD_(HRESULT,GetRate)(THIS_ double* pdRate) PURE; \
3032     STDMETHOD_(HRESULT,GetPreroll)(THIS_ LONGLONG* pllPreroll) PURE;
3033
3034 HRESULT CALLBACK IMediaSeeking_GetCapabilities_Proxy(
3035     IMediaSeeking* This,
3036     DWORD* pCapabilities);
3037 void __RPC_STUB IMediaSeeking_GetCapabilities_Stub(
3038     struct IRpcStubBuffer* This,
3039     struct IRpcChannelBuffer* pRpcChannelBuffer,
3040     PRPC_MESSAGE pRpcMessage,
3041     DWORD* pdwStubPhase);
3042 HRESULT CALLBACK IMediaSeeking_CheckCapabilities_Proxy(
3043     IMediaSeeking* This,
3044     DWORD* pCapabilities);
3045 void __RPC_STUB IMediaSeeking_CheckCapabilities_Stub(
3046     struct IRpcStubBuffer* This,
3047     struct IRpcChannelBuffer* pRpcChannelBuffer,
3048     PRPC_MESSAGE pRpcMessage,
3049     DWORD* pdwStubPhase);
3050 HRESULT CALLBACK IMediaSeeking_IsFormatSupported_Proxy(
3051     IMediaSeeking* This,
3052     const GUID* pFormat);
3053 void __RPC_STUB IMediaSeeking_IsFormatSupported_Stub(
3054     struct IRpcStubBuffer* This,
3055     struct IRpcChannelBuffer* pRpcChannelBuffer,
3056     PRPC_MESSAGE pRpcMessage,
3057     DWORD* pdwStubPhase);
3058 HRESULT CALLBACK IMediaSeeking_QueryPreferredFormat_Proxy(
3059     IMediaSeeking* This,
3060     GUID* pFormat);
3061 void __RPC_STUB IMediaSeeking_QueryPreferredFormat_Stub(
3062     struct IRpcStubBuffer* This,
3063     struct IRpcChannelBuffer* pRpcChannelBuffer,
3064     PRPC_MESSAGE pRpcMessage,
3065     DWORD* pdwStubPhase);
3066 HRESULT CALLBACK IMediaSeeking_GetTimeFormat_Proxy(
3067     IMediaSeeking* This,
3068     GUID* pFormat);
3069 void __RPC_STUB IMediaSeeking_GetTimeFormat_Stub(
3070     struct IRpcStubBuffer* This,
3071     struct IRpcChannelBuffer* pRpcChannelBuffer,
3072     PRPC_MESSAGE pRpcMessage,
3073     DWORD* pdwStubPhase);
3074 HRESULT CALLBACK IMediaSeeking_IsUsingTimeFormat_Proxy(
3075     IMediaSeeking* This,
3076     const GUID* pFormat);
3077 void __RPC_STUB IMediaSeeking_IsUsingTimeFormat_Stub(
3078     struct IRpcStubBuffer* This,
3079     struct IRpcChannelBuffer* pRpcChannelBuffer,
3080     PRPC_MESSAGE pRpcMessage,
3081     DWORD* pdwStubPhase);
3082 HRESULT CALLBACK IMediaSeeking_SetTimeFormat_Proxy(
3083     IMediaSeeking* This,
3084     const GUID* pFormat);
3085 void __RPC_STUB IMediaSeeking_SetTimeFormat_Stub(
3086     struct IRpcStubBuffer* This,
3087     struct IRpcChannelBuffer* pRpcChannelBuffer,
3088     PRPC_MESSAGE pRpcMessage,
3089     DWORD* pdwStubPhase);
3090 HRESULT CALLBACK IMediaSeeking_GetDuration_Proxy(
3091     IMediaSeeking* This,
3092     LONGLONG* pDuration);
3093 void __RPC_STUB IMediaSeeking_GetDuration_Stub(
3094     struct IRpcStubBuffer* This,
3095     struct IRpcChannelBuffer* pRpcChannelBuffer,
3096     PRPC_MESSAGE pRpcMessage,
3097     DWORD* pdwStubPhase);
3098 HRESULT CALLBACK IMediaSeeking_GetStopPosition_Proxy(
3099     IMediaSeeking* This,
3100     LONGLONG* pStop);
3101 void __RPC_STUB IMediaSeeking_GetStopPosition_Stub(
3102     struct IRpcStubBuffer* This,
3103     struct IRpcChannelBuffer* pRpcChannelBuffer,
3104     PRPC_MESSAGE pRpcMessage,
3105     DWORD* pdwStubPhase);
3106 HRESULT CALLBACK IMediaSeeking_GetCurrentPosition_Proxy(
3107     IMediaSeeking* This,
3108     LONGLONG* pCurrent);
3109 void __RPC_STUB IMediaSeeking_GetCurrentPosition_Stub(
3110     struct IRpcStubBuffer* This,
3111     struct IRpcChannelBuffer* pRpcChannelBuffer,
3112     PRPC_MESSAGE pRpcMessage,
3113     DWORD* pdwStubPhase);
3114 HRESULT CALLBACK IMediaSeeking_ConvertTimeFormat_Proxy(
3115     IMediaSeeking* This,
3116     LONGLONG* pTarget,
3117     const GUID* pTargetFormat,
3118     LONGLONG Source,
3119     const GUID* pSourceFormat);
3120 void __RPC_STUB IMediaSeeking_ConvertTimeFormat_Stub(
3121     struct IRpcStubBuffer* This,
3122     struct IRpcChannelBuffer* pRpcChannelBuffer,
3123     PRPC_MESSAGE pRpcMessage,
3124     DWORD* pdwStubPhase);
3125 HRESULT CALLBACK IMediaSeeking_SetPositions_Proxy(
3126     IMediaSeeking* This,
3127     LONGLONG* pCurrent,
3128     DWORD dwCurrentFlags,
3129     LONGLONG* pStop,
3130     DWORD dwStopFlags);
3131 void __RPC_STUB IMediaSeeking_SetPositions_Stub(
3132     struct IRpcStubBuffer* This,
3133     struct IRpcChannelBuffer* pRpcChannelBuffer,
3134     PRPC_MESSAGE pRpcMessage,
3135     DWORD* pdwStubPhase);
3136 HRESULT CALLBACK IMediaSeeking_GetPositions_Proxy(
3137     IMediaSeeking* This,
3138     LONGLONG* pCurrent,
3139     LONGLONG* pStop);
3140 void __RPC_STUB IMediaSeeking_GetPositions_Stub(
3141     struct IRpcStubBuffer* This,
3142     struct IRpcChannelBuffer* pRpcChannelBuffer,
3143     PRPC_MESSAGE pRpcMessage,
3144     DWORD* pdwStubPhase);
3145 HRESULT CALLBACK IMediaSeeking_GetAvailable_Proxy(
3146     IMediaSeeking* This,
3147     LONGLONG* pEarliest,
3148     LONGLONG* pLatest);
3149 void __RPC_STUB IMediaSeeking_GetAvailable_Stub(
3150     struct IRpcStubBuffer* This,
3151     struct IRpcChannelBuffer* pRpcChannelBuffer,
3152     PRPC_MESSAGE pRpcMessage,
3153     DWORD* pdwStubPhase);
3154 HRESULT CALLBACK IMediaSeeking_SetRate_Proxy(
3155     IMediaSeeking* This,
3156     double dRate);
3157 void __RPC_STUB IMediaSeeking_SetRate_Stub(
3158     struct IRpcStubBuffer* This,
3159     struct IRpcChannelBuffer* pRpcChannelBuffer,
3160     PRPC_MESSAGE pRpcMessage,
3161     DWORD* pdwStubPhase);
3162 HRESULT CALLBACK IMediaSeeking_GetRate_Proxy(
3163     IMediaSeeking* This,
3164     double* pdRate);
3165 void __RPC_STUB IMediaSeeking_GetRate_Stub(
3166     struct IRpcStubBuffer* This,
3167     struct IRpcChannelBuffer* pRpcChannelBuffer,
3168     PRPC_MESSAGE pRpcMessage,
3169     DWORD* pdwStubPhase);
3170 HRESULT CALLBACK IMediaSeeking_GetPreroll_Proxy(
3171     IMediaSeeking* This,
3172     LONGLONG* pllPreroll);
3173 void __RPC_STUB IMediaSeeking_GetPreroll_Stub(
3174     struct IRpcStubBuffer* This,
3175     struct IRpcChannelBuffer* pRpcChannelBuffer,
3176     PRPC_MESSAGE pRpcMessage,
3177     DWORD* pdwStubPhase);
3178
3179 #endif  /* __IMediaSeeking_INTERFACE_DEFINED__ */
3180
3181 typedef IMediaSeeking *PMEDIASEEKING;
3182
3183 enum tagAM_MEDIAEVENT_FLAGS {
3184     AM_MEDIAEVENT_NONOTIFY = 0x1
3185 };
3186
3187 #ifndef __IAMAnalogVideoDecoder_FWD_DEFINED__
3188 #define __IAMAnalogVideoDecoder_FWD_DEFINED__
3189 typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder;
3190 #endif
3191
3192 #ifndef __IAMAnalogVideoEncoder_FWD_DEFINED__
3193 #define __IAMAnalogVideoEncoder_FWD_DEFINED__
3194 typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder;
3195 #endif
3196
3197 #ifndef __IAMAudioInputMixer_FWD_DEFINED__
3198 #define __IAMAudioInputMixer_FWD_DEFINED__
3199 typedef struct IAMAudioInputMixer IAMAudioInputMixer;
3200 #endif
3201
3202 #ifndef __IAMAudioRendererStats_FWD_DEFINED__
3203 #define __IAMAudioRendererStats_FWD_DEFINED__
3204 typedef struct IAMAudioRendererStats IAMAudioRendererStats;
3205 #endif
3206
3207 #ifndef __IAMBufferNegotiation_FWD_DEFINED__
3208 #define __IAMBufferNegotiation_FWD_DEFINED__
3209 typedef struct IAMBufferNegotiation IAMBufferNegotiation;
3210 #endif
3211
3212 #ifndef __IAMCameraControl_FWD_DEFINED__
3213 #define __IAMCameraControl_FWD_DEFINED__
3214 typedef struct IAMCameraControl IAMCameraControl;
3215 #endif
3216
3217 #ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__
3218 #define __IAMCopyCaptureFileProgress_FWD_DEFINED__
3219 typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
3220 #endif
3221
3222 #ifndef __IAMCrossbar_FWD_DEFINED__
3223 #define __IAMCrossbar_FWD_DEFINED__
3224 typedef struct IAMCrossbar IAMCrossbar;
3225 #endif
3226
3227 #ifndef __IAMDevMemoryAllocator_FWD_DEFINED__
3228 #define __IAMDevMemoryAllocator_FWD_DEFINED__
3229 typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator;
3230 #endif
3231
3232 #ifndef __IAMDevMemoryControl_FWD_DEFINED__
3233 #define __IAMDevMemoryControl_FWD_DEFINED__
3234 typedef struct IAMDevMemoryControl IAMDevMemoryControl;
3235 #endif
3236
3237 #ifndef __IAMDroppedFrames_FWD_DEFINED__
3238 #define __IAMDroppedFrames_FWD_DEFINED__
3239 typedef struct IAMDroppedFrames IAMDroppedFrames;
3240 #endif
3241
3242 #ifndef __IAMExtDevice_FWD_DEFINED__
3243 #define __IAMExtDevice_FWD_DEFINED__
3244 typedef struct IAMExtDevice IAMExtDevice;
3245 #endif
3246
3247 #ifndef __IAMExtTransport_FWD_DEFINED__
3248 #define __IAMExtTransport_FWD_DEFINED__
3249 typedef struct IAMExtTransport IAMExtTransport;
3250 #endif
3251
3252 #ifndef __IAMGraphStreams_FWD_DEFINED__
3253 #define __IAMGraphStreams_FWD_DEFINED__
3254 typedef struct IAMGraphStreams IAMGraphStreams;
3255 #endif
3256
3257 #ifndef __IAMLatency_FWD_DEFINED__
3258 #define __IAMLatency_FWD_DEFINED__
3259 typedef struct IAMLatency IAMLatency;
3260 #endif
3261
3262 #ifndef __IAMOpenProgress_FWD_DEFINED__
3263 #define __IAMOpenProgress_FWD_DEFINED__
3264 typedef struct IAMOpenProgress IAMOpenProgress;
3265 #endif
3266
3267 #ifndef __IAMOverlayFX_FWD_DEFINED__
3268 #define __IAMOverlayFX_FWD_DEFINED__
3269 typedef struct IAMOverlayFX IAMOverlayFX;
3270 #endif
3271
3272 #ifndef __IAMPhysicalPinInfo_FWD_DEFINED__
3273 #define __IAMPhysicalPinInfo_FWD_DEFINED__
3274 typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo;
3275 #endif
3276
3277 #ifndef __IAMPushSource_FWD_DEFINED__
3278 #define __IAMPushSource_FWD_DEFINED__
3279 typedef struct IAMPushSource IAMPushSource;
3280 #endif
3281
3282 #ifndef __IAMStreamConfig_FWD_DEFINED__
3283 #define __IAMStreamConfig_FWD_DEFINED__
3284 typedef struct IAMStreamConfig IAMStreamConfig;
3285 #endif
3286
3287 #ifndef __IAMTimecodeDisplay_FWD_DEFINED__
3288 #define __IAMTimecodeDisplay_FWD_DEFINED__
3289 typedef struct IAMTimecodeDisplay IAMTimecodeDisplay;
3290 #endif
3291
3292 #ifndef __IAMTimecodeGenerator_FWD_DEFINED__
3293 #define __IAMTimecodeGenerator_FWD_DEFINED__
3294 typedef struct IAMTimecodeGenerator IAMTimecodeGenerator;
3295 #endif
3296
3297 #ifndef __IAMTimecodeReader_FWD_DEFINED__
3298 #define __IAMTimecodeReader_FWD_DEFINED__
3299 typedef struct IAMTimecodeReader IAMTimecodeReader;
3300 #endif
3301
3302 #ifndef __IAMTVTuner_FWD_DEFINED__
3303 #define __IAMTVTuner_FWD_DEFINED__
3304 typedef struct IAMTVTuner IAMTVTuner;
3305 #endif
3306
3307 #ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__
3308 #define __IAMVfwCaptureDialogs_FWD_DEFINED__
3309 typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
3310 #endif
3311
3312 #ifndef __IAMVfwCompressDialogs_FWD_DEFINED__
3313 #define __IAMVfwCompressDialogs_FWD_DEFINED__
3314 typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;
3315 #endif
3316
3317 #ifndef __IAMVideoCompression_FWD_DEFINED__
3318 #define __IAMVideoCompression_FWD_DEFINED__
3319 typedef struct IAMVideoCompression IAMVideoCompression;
3320 #endif
3321
3322 #ifndef __IAMVideoDecimationProperties_FWD_DEFINED__
3323 #define __IAMVideoDecimationProperties_FWD_DEFINED__
3324 typedef struct IAMVideoDecimationProperties IAMVideoDecimationProperties;
3325 #endif
3326
3327 #ifndef __IAMVideoProcAmp_FWD_DEFINED__
3328 #define __IAMVideoProcAmp_FWD_DEFINED__
3329 typedef struct IAMVideoProcAmp IAMVideoProcAmp;
3330 #endif
3331
3332 #ifndef __ICaptureGraphBuilder_FWD_DEFINED__
3333 #define __ICaptureGraphBuilder_FWD_DEFINED__
3334 typedef struct ICaptureGraphBuilder ICaptureGraphBuilder;
3335 #endif
3336
3337 #ifndef __ICaptureGraphBuilder2_FWD_DEFINED__
3338 #define __ICaptureGraphBuilder2_FWD_DEFINED__
3339 typedef struct ICaptureGraphBuilder2 ICaptureGraphBuilder2;
3340 #endif
3341
3342 #ifndef __IConfigAviMux_FWD_DEFINED__
3343 #define __IConfigAviMux_FWD_DEFINED__
3344 typedef struct IConfigAviMux IConfigAviMux;
3345 #endif
3346
3347 #ifndef __IConfigInterleaving_FWD_DEFINED__
3348 #define __IConfigInterleaving_FWD_DEFINED__
3349 typedef struct IConfigInterleaving IConfigInterleaving;
3350 #endif
3351
3352 #ifndef __IDecimateVideoImage_FWD_DEFINED__
3353 #define __IDecimateVideoImage_FWD_DEFINED__
3354 typedef struct IDecimateVideoImage IDecimateVideoImage;
3355 #endif
3356
3357 #ifndef __IDrawVideoImage_FWD_DEFINED__
3358 #define __IDrawVideoImage_FWD_DEFINED__
3359 typedef struct IDrawVideoImage IDrawVideoImage;
3360 #endif
3361
3362 #ifndef __IEnumRegFilters_FWD_DEFINED__
3363 #define __IEnumRegFilters_FWD_DEFINED__
3364 typedef struct IEnumRegFilters IEnumRegFilters;
3365 #endif
3366
3367 #ifndef __IEnumStreamIdMap_FWD_DEFINED__
3368 #define __IEnumStreamIdMap_FWD_DEFINED__
3369 typedef struct IEnumStreamIdMap IEnumStreamIdMap;
3370 #endif
3371
3372 #ifndef __IFileSourceFilter_FWD_DEFINED__
3373 #define __IFileSourceFilter_FWD_DEFINED__
3374 typedef struct IFileSourceFilter IFileSourceFilter;
3375 #endif
3376
3377 #ifndef __IFileSinkFilter_FWD_DEFINED__
3378 #define __IFileSinkFilter_FWD_DEFINED__
3379 typedef struct IFileSinkFilter IFileSinkFilter;
3380 #endif
3381
3382 #ifndef __IFileSinkFilter2_FWD_DEFINED__
3383 #define __IFileSinkFilter2_FWD_DEFINED__
3384 typedef struct IFileSinkFilter2 IFileSinkFilter2;
3385 #endif
3386
3387 #ifndef __IFilterMapper_FWD_DEFINED__
3388 #define __IFilterMapper_FWD_DEFINED__
3389 typedef struct IFilterMapper IFilterMapper;
3390 #endif
3391
3392 #ifndef __IFilterMapper2_FWD_DEFINED__
3393 #define __IFilterMapper2_FWD_DEFINED__
3394 typedef struct IFilterMapper2 IFilterMapper2;
3395 #endif
3396
3397 #ifndef __IGraphBuilder_FWD_DEFINED__
3398 #define __IGraphBuilder_FWD_DEFINED__
3399 typedef struct IGraphBuilder IGraphBuilder;
3400 #endif
3401
3402 #ifndef __IKsPropertySet_FWD_DEFINED__
3403 #define __IKsPropertySet_FWD_DEFINED__
3404 typedef struct IKsPropertySet IKsPropertySet;
3405 #endif
3406
3407 #ifndef __IMediaEventSink_FWD_DEFINED__
3408 #define __IMediaEventSink_FWD_DEFINED__
3409 typedef struct IMediaEventSink IMediaEventSink;
3410 #endif
3411
3412 #ifndef __IMpeg2Demultiplexer_FWD_DEFINED__
3413 #define __IMpeg2Demultiplexer_FWD_DEFINED__
3414 typedef struct IMpeg2Demultiplexer IMpeg2Demultiplexer;
3415 #endif
3416
3417 #ifndef __IMPEG2StreamIdMap_FWD_DEFINED__
3418 #define __IMPEG2StreamIdMap_FWD_DEFINED__
3419 typedef struct IMPEG2StreamIdMap IMPEG2StreamIdMap;
3420 #endif
3421
3422 #ifndef __IOverlay_FWD_DEFINED__
3423 #define __IOverlay_FWD_DEFINED__
3424 typedef struct IOverlay IOverlay;
3425 #endif
3426
3427 #ifndef __IOverlayNotify_FWD_DEFINED__
3428 #define __IOverlayNotify_FWD_DEFINED__
3429 typedef struct IOverlayNotify IOverlayNotify;
3430 #endif
3431
3432 #ifndef __IOverlayNotify2_FWD_DEFINED__
3433 #define __IOverlayNotify2_FWD_DEFINED__
3434 typedef struct IOverlayNotify2 IOverlayNotify2;
3435 #endif
3436
3437 #ifndef __IQualityControl_FWD_DEFINED__
3438 #define __IQualityControl_FWD_DEFINED__
3439 typedef struct IQualityControl IQualityControl;
3440 #endif
3441
3442 #ifndef __ISeekingPassThru_FWD_DEFINED__
3443 #define __ISeekingPassThru_FWD_DEFINED__
3444 typedef struct ISeekingPassThru ISeekingPassThru;
3445 #endif
3446
3447 typedef struct {
3448     CLSID Clsid;
3449     LPWSTR Name;
3450 } REGFILTER;
3451
3452 /*****************************************************************************
3453  * IEnumRegFilters interface
3454  */
3455 #ifndef __IEnumRegFilters_INTERFACE_DEFINED__
3456 #define __IEnumRegFilters_INTERFACE_DEFINED__
3457
3458 DEFINE_GUID(IID_IEnumRegFilters, 0x56a868a4, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
3459 #if defined(__cplusplus) && !defined(CINTERFACE)
3460 struct IEnumRegFilters : public IUnknown
3461 {
3462     virtual HRESULT STDMETHODCALLTYPE Next(
3463         ULONG cFilters,
3464         REGFILTER** apRegFilter,
3465         ULONG* pcFetched) = 0;
3466
3467     virtual HRESULT STDMETHODCALLTYPE Skip(
3468         ULONG cFilters) = 0;
3469
3470     virtual HRESULT STDMETHODCALLTYPE Reset(
3471         ) = 0;
3472
3473     virtual HRESULT STDMETHODCALLTYPE Clone(
3474         IEnumRegFilters** ppEnum) = 0;
3475
3476 };
3477 #else
3478 typedef struct IEnumRegFiltersVtbl IEnumRegFiltersVtbl;
3479 struct IEnumRegFilters {
3480     const IEnumRegFiltersVtbl* lpVtbl;
3481 };
3482 struct IEnumRegFiltersVtbl {
3483     ICOM_MSVTABLE_COMPAT_FIELDS
3484
3485     /*** IUnknown methods ***/
3486     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3487         IEnumRegFilters* This,
3488         REFIID riid,
3489         void** ppvObject);
3490
3491     ULONG (STDMETHODCALLTYPE *AddRef)(
3492         IEnumRegFilters* This);
3493
3494     ULONG (STDMETHODCALLTYPE *Release)(
3495         IEnumRegFilters* This);
3496
3497     /*** IEnumRegFilters methods ***/
3498     HRESULT (STDMETHODCALLTYPE *Next)(
3499         IEnumRegFilters* This,
3500         ULONG cFilters,
3501         REGFILTER** apRegFilter,
3502         ULONG* pcFetched);
3503
3504     HRESULT (STDMETHODCALLTYPE *Skip)(
3505         IEnumRegFilters* This,
3506         ULONG cFilters);
3507
3508     HRESULT (STDMETHODCALLTYPE *Reset)(
3509         IEnumRegFilters* This);
3510
3511     HRESULT (STDMETHODCALLTYPE *Clone)(
3512         IEnumRegFilters* This,
3513         IEnumRegFilters** ppEnum);
3514
3515 };
3516
3517 /*** IUnknown methods ***/
3518 #define IEnumRegFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3519 #define IEnumRegFilters_AddRef(p) (p)->lpVtbl->AddRef(p)
3520 #define IEnumRegFilters_Release(p) (p)->lpVtbl->Release(p)
3521 /*** IEnumRegFilters methods ***/
3522 #define IEnumRegFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
3523 #define IEnumRegFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a)
3524 #define IEnumRegFilters_Reset(p) (p)->lpVtbl->Reset(p)
3525 #define IEnumRegFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a)
3526
3527 #endif
3528
3529 #define IEnumRegFilters_METHODS \
3530     ICOM_MSVTABLE_COMPAT_FIELDS \
3531     /*** IUnknown methods ***/ \
3532     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3533     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3534     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3535     /*** IEnumRegFilters methods ***/ \
3536     STDMETHOD_(HRESULT,Next)(THIS_ ULONG cFilters, REGFILTER** apRegFilter, ULONG* pcFetched) PURE; \
3537     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cFilters) PURE; \
3538     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
3539     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumRegFilters** ppEnum) PURE;
3540
3541 HRESULT CALLBACK IEnumRegFilters_Next_Proxy(
3542     IEnumRegFilters* This,
3543     ULONG cFilters,
3544     REGFILTER** apRegFilter,
3545     ULONG* pcFetched);
3546 void __RPC_STUB IEnumRegFilters_Next_Stub(
3547     struct IRpcStubBuffer* This,
3548     struct IRpcChannelBuffer* pRpcChannelBuffer,
3549     PRPC_MESSAGE pRpcMessage,
3550     DWORD* pdwStubPhase);
3551 HRESULT CALLBACK IEnumRegFilters_Skip_Proxy(
3552     IEnumRegFilters* This,
3553     ULONG cFilters);
3554 void __RPC_STUB IEnumRegFilters_Skip_Stub(
3555     struct IRpcStubBuffer* This,
3556     struct IRpcChannelBuffer* pRpcChannelBuffer,
3557     PRPC_MESSAGE pRpcMessage,
3558     DWORD* pdwStubPhase);
3559 HRESULT CALLBACK IEnumRegFilters_Reset_Proxy(
3560     IEnumRegFilters* This);
3561 void __RPC_STUB IEnumRegFilters_Reset_Stub(
3562     struct IRpcStubBuffer* This,
3563     struct IRpcChannelBuffer* pRpcChannelBuffer,
3564     PRPC_MESSAGE pRpcMessage,
3565     DWORD* pdwStubPhase);
3566 HRESULT CALLBACK IEnumRegFilters_Clone_Proxy(
3567     IEnumRegFilters* This,
3568     IEnumRegFilters** ppEnum);
3569 void __RPC_STUB IEnumRegFilters_Clone_Stub(
3570     struct IRpcStubBuffer* This,
3571     struct IRpcChannelBuffer* pRpcChannelBuffer,
3572     PRPC_MESSAGE pRpcMessage,
3573     DWORD* pdwStubPhase);
3574
3575 #endif  /* __IEnumRegFilters_INTERFACE_DEFINED__ */
3576
3577 typedef IEnumRegFilters *PENUMREGFILTERS;
3578
3579 enum {
3580     MERIT_PREFERRED = 0x800000,
3581     MERIT_NORMAL = 0x600000,
3582     MERIT_UNLIKELY = 0x400000,
3583     MERIT_DO_NOT_USE = 0x200000,
3584     MERIT_SW_COMPRESSOR = 0x100000,
3585     MERIT_HW_COMPRESSOR = 0x100050
3586 };
3587
3588 /*****************************************************************************
3589  * IFilterMapper interface
3590  */
3591 #ifndef __IFilterMapper_INTERFACE_DEFINED__
3592 #define __IFilterMapper_INTERFACE_DEFINED__
3593
3594 DEFINE_GUID(IID_IFilterMapper, 0x56a868a3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
3595 #if defined(__cplusplus) && !defined(CINTERFACE)
3596 struct IFilterMapper : public IUnknown
3597 {
3598     virtual HRESULT STDMETHODCALLTYPE RegisterFilter(
3599         CLSID clsid,
3600         LPCWSTR Name,
3601         DWORD dwMerit) = 0;
3602
3603     virtual HRESULT STDMETHODCALLTYPE RegisterFilterInstance(
3604         CLSID clsid,
3605         LPCWSTR Name,
3606         CLSID* MRId) = 0;
3607
3608     virtual HRESULT STDMETHODCALLTYPE RegisterPin(
3609         CLSID Filter,
3610         LPCWSTR Name,
3611         BOOL bRendered,
3612         BOOL bOutput,
3613         BOOL bZero,
3614         BOOL bMany,
3615         CLSID ConnectsToFilter,
3616         LPCWSTR ConnectsToPin) = 0;
3617
3618     virtual HRESULT STDMETHODCALLTYPE RegisterPinType(
3619         CLSID clsFilter,
3620         LPCWSTR strName,
3621         CLSID clsMajorType,
3622         CLSID clsSubType) = 0;
3623
3624     virtual HRESULT STDMETHODCALLTYPE UnregisterFilter(
3625         CLSID Filter) = 0;
3626
3627     virtual HRESULT STDMETHODCALLTYPE UnregisterFilterInstance(
3628         CLSID MRId) = 0;
3629
3630     virtual HRESULT STDMETHODCALLTYPE UnregisterPin(
3631         CLSID Filter,
3632         LPCWSTR Name) = 0;
3633
3634     virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters(
3635         IEnumRegFilters** ppEnum,
3636         DWORD dwMerit,
3637         BOOL bInputNeeded,
3638         CLSID clsInMaj,
3639         CLSID clsInSub,
3640         BOOL bRender,
3641         BOOL bOututNeeded,
3642         CLSID clsOutMaj,
3643         CLSID clsOutSub) = 0;
3644
3645 };
3646 #else
3647 typedef struct IFilterMapperVtbl IFilterMapperVtbl;
3648 struct IFilterMapper {
3649     const IFilterMapperVtbl* lpVtbl;
3650 };
3651 struct IFilterMapperVtbl {
3652     ICOM_MSVTABLE_COMPAT_FIELDS
3653
3654     /*** IUnknown methods ***/
3655     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3656         IFilterMapper* This,
3657         REFIID riid,
3658         void** ppvObject);
3659
3660     ULONG (STDMETHODCALLTYPE *AddRef)(
3661         IFilterMapper* This);
3662
3663     ULONG (STDMETHODCALLTYPE *Release)(
3664         IFilterMapper* This);
3665
3666     /*** IFilterMapper methods ***/
3667     HRESULT (STDMETHODCALLTYPE *RegisterFilter)(
3668         IFilterMapper* This,
3669         CLSID clsid,
3670         LPCWSTR Name,
3671         DWORD dwMerit);
3672
3673     HRESULT (STDMETHODCALLTYPE *RegisterFilterInstance)(
3674         IFilterMapper* This,
3675         CLSID clsid,
3676         LPCWSTR Name,
3677         CLSID* MRId);
3678
3679     HRESULT (STDMETHODCALLTYPE *RegisterPin)(
3680         IFilterMapper* This,
3681         CLSID Filter,
3682         LPCWSTR Name,
3683         BOOL bRendered,
3684         BOOL bOutput,
3685         BOOL bZero,
3686         BOOL bMany,
3687         CLSID ConnectsToFilter,
3688         LPCWSTR ConnectsToPin);
3689
3690     HRESULT (STDMETHODCALLTYPE *RegisterPinType)(
3691         IFilterMapper* This,
3692         CLSID clsFilter,
3693         LPCWSTR strName,
3694         CLSID clsMajorType,
3695         CLSID clsSubType);
3696
3697     HRESULT (STDMETHODCALLTYPE *UnregisterFilter)(
3698         IFilterMapper* This,
3699         CLSID Filter);
3700
3701     HRESULT (STDMETHODCALLTYPE *UnregisterFilterInstance)(
3702         IFilterMapper* This,
3703         CLSID MRId);
3704
3705     HRESULT (STDMETHODCALLTYPE *UnregisterPin)(
3706         IFilterMapper* This,
3707         CLSID Filter,
3708         LPCWSTR Name);
3709
3710     HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)(
3711         IFilterMapper* This,
3712         IEnumRegFilters** ppEnum,
3713         DWORD dwMerit,
3714         BOOL bInputNeeded,
3715         CLSID clsInMaj,
3716         CLSID clsInSub,
3717         BOOL bRender,
3718         BOOL bOututNeeded,
3719         CLSID clsOutMaj,
3720         CLSID clsOutSub);
3721
3722 };
3723
3724 /*** IUnknown methods ***/
3725 #define IFilterMapper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3726 #define IFilterMapper_AddRef(p) (p)->lpVtbl->AddRef(p)
3727 #define IFilterMapper_Release(p) (p)->lpVtbl->Release(p)
3728 /*** IFilterMapper methods ***/
3729 #define IFilterMapper_RegisterFilter(p,a,b,c) (p)->lpVtbl->RegisterFilter(p,a,b,c)
3730 #define IFilterMapper_RegisterFilterInstance(p,a,b,c) (p)->lpVtbl->RegisterFilterInstance(p,a,b,c)
3731 #define IFilterMapper_RegisterPin(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->RegisterPin(p,a,b,c,d,e,f,g,h)
3732 #define IFilterMapper_RegisterPinType(p,a,b,c,d) (p)->lpVtbl->RegisterPinType(p,a,b,c,d)
3733 #define IFilterMapper_UnregisterFilter(p,a) (p)->lpVtbl->UnregisterFilter(p,a)
3734 #define IFilterMapper_UnregisterFilterInstance(p,a) (p)->lpVtbl->UnregisterFilterInstance(p,a)
3735 #define IFilterMapper_UnregisterPin(p,a,b) (p)->lpVtbl->UnregisterPin(p,a,b)
3736 #define IFilterMapper_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i)
3737
3738 #endif
3739
3740 #define IFilterMapper_METHODS \
3741     ICOM_MSVTABLE_COMPAT_FIELDS \
3742     /*** IUnknown methods ***/ \
3743     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3744     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3745     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3746     /*** IFilterMapper methods ***/ \
3747     STDMETHOD_(HRESULT,RegisterFilter)(THIS_ CLSID clsid, LPCWSTR Name, DWORD dwMerit) PURE; \
3748     STDMETHOD_(HRESULT,RegisterFilterInstance)(THIS_ CLSID clsid, LPCWSTR Name, CLSID* MRId) PURE; \
3749     STDMETHOD_(HRESULT,RegisterPin)(THIS_ CLSID Filter, LPCWSTR Name, BOOL bRendered, BOOL bOutput, BOOL bZero, BOOL bMany, CLSID ConnectsToFilter, LPCWSTR ConnectsToPin) PURE; \
3750     STDMETHOD_(HRESULT,RegisterPinType)(THIS_ CLSID clsFilter, LPCWSTR strName, CLSID clsMajorType, CLSID clsSubType) PURE; \
3751     STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ CLSID Filter) PURE; \
3752     STDMETHOD_(HRESULT,UnregisterFilterInstance)(THIS_ CLSID MRId) PURE; \
3753     STDMETHOD_(HRESULT,UnregisterPin)(THIS_ CLSID Filter, LPCWSTR Name) PURE; \
3754     STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumRegFilters** ppEnum, DWORD dwMerit, BOOL bInputNeeded, CLSID clsInMaj, CLSID clsInSub, BOOL bRender, BOOL bOututNeeded, CLSID clsOutMaj, CLSID clsOutSub) PURE;
3755
3756 HRESULT CALLBACK IFilterMapper_RegisterFilter_Proxy(
3757     IFilterMapper* This,
3758     CLSID clsid,
3759     LPCWSTR Name,
3760     DWORD dwMerit);
3761 void __RPC_STUB IFilterMapper_RegisterFilter_Stub(
3762     struct IRpcStubBuffer* This,
3763     struct IRpcChannelBuffer* pRpcChannelBuffer,
3764     PRPC_MESSAGE pRpcMessage,
3765     DWORD* pdwStubPhase);
3766 HRESULT CALLBACK IFilterMapper_RegisterFilterInstance_Proxy(
3767     IFilterMapper* This,
3768     CLSID clsid,
3769     LPCWSTR Name,
3770     CLSID* MRId);
3771 void __RPC_STUB IFilterMapper_RegisterFilterInstance_Stub(
3772     struct IRpcStubBuffer* This,
3773     struct IRpcChannelBuffer* pRpcChannelBuffer,
3774     PRPC_MESSAGE pRpcMessage,
3775     DWORD* pdwStubPhase);
3776 HRESULT CALLBACK IFilterMapper_RegisterPin_Proxy(
3777     IFilterMapper* This,
3778     CLSID Filter,
3779     LPCWSTR Name,
3780     BOOL bRendered,
3781     BOOL bOutput,
3782     BOOL bZero,
3783     BOOL bMany,
3784     CLSID ConnectsToFilter,
3785     LPCWSTR ConnectsToPin);
3786 void __RPC_STUB IFilterMapper_RegisterPin_Stub(
3787     struct IRpcStubBuffer* This,
3788     struct IRpcChannelBuffer* pRpcChannelBuffer,
3789     PRPC_MESSAGE pRpcMessage,
3790     DWORD* pdwStubPhase);
3791 HRESULT CALLBACK IFilterMapper_RegisterPinType_Proxy(
3792     IFilterMapper* This,
3793     CLSID clsFilter,
3794     LPCWSTR strName,
3795     CLSID clsMajorType,
3796     CLSID clsSubType);
3797 void __RPC_STUB IFilterMapper_RegisterPinType_Stub(
3798     struct IRpcStubBuffer* This,
3799     struct IRpcChannelBuffer* pRpcChannelBuffer,
3800     PRPC_MESSAGE pRpcMessage,
3801     DWORD* pdwStubPhase);
3802 HRESULT CALLBACK IFilterMapper_UnregisterFilter_Proxy(
3803     IFilterMapper* This,
3804     CLSID Filter);
3805 void __RPC_STUB IFilterMapper_UnregisterFilter_Stub(
3806     struct IRpcStubBuffer* This,
3807     struct IRpcChannelBuffer* pRpcChannelBuffer,
3808     PRPC_MESSAGE pRpcMessage,
3809     DWORD* pdwStubPhase);
3810 HRESULT CALLBACK IFilterMapper_UnregisterFilterInstance_Proxy(
3811     IFilterMapper* This,
3812     CLSID MRId);
3813 void __RPC_STUB IFilterMapper_UnregisterFilterInstance_Stub(
3814     struct IRpcStubBuffer* This,
3815     struct IRpcChannelBuffer* pRpcChannelBuffer,
3816     PRPC_MESSAGE pRpcMessage,
3817     DWORD* pdwStubPhase);
3818 HRESULT CALLBACK IFilterMapper_UnregisterPin_Proxy(
3819     IFilterMapper* This,
3820     CLSID Filter,
3821     LPCWSTR Name);
3822 void __RPC_STUB IFilterMapper_UnregisterPin_Stub(
3823     struct IRpcStubBuffer* This,
3824     struct IRpcChannelBuffer* pRpcChannelBuffer,
3825     PRPC_MESSAGE pRpcMessage,
3826     DWORD* pdwStubPhase);
3827 HRESULT CALLBACK IFilterMapper_EnumMatchingFilters_Proxy(
3828     IFilterMapper* This,
3829     IEnumRegFilters** ppEnum,
3830     DWORD dwMerit,
3831     BOOL bInputNeeded,
3832     CLSID clsInMaj,
3833     CLSID clsInSub,
3834     BOOL bRender,
3835     BOOL bOututNeeded,
3836     CLSID clsOutMaj,
3837     CLSID clsOutSub);
3838 void __RPC_STUB IFilterMapper_EnumMatchingFilters_Stub(
3839     struct IRpcStubBuffer* This,
3840     struct IRpcChannelBuffer* pRpcChannelBuffer,
3841     PRPC_MESSAGE pRpcMessage,
3842     DWORD* pdwStubPhase);
3843
3844 #endif  /* __IFilterMapper_INTERFACE_DEFINED__ */
3845
3846 typedef struct {
3847     const CLSID *clsMajorType;
3848     const CLSID *clsMinorType;
3849 } REGPINTYPES;
3850
3851 typedef struct {
3852     LPWSTR strName;
3853     BOOL bRendered;
3854     BOOL bOutput;
3855     BOOL bZero;
3856     BOOL bMany;
3857     const CLSID *clsConnectsToFilter;
3858     const WCHAR *strConnectsToPin;
3859     UINT nMediaTypes;
3860     const REGPINTYPES *lpMediaType;
3861 } REGFILTERPINS;
3862
3863 typedef struct {
3864     CLSID clsMedium;
3865     DWORD dw1;
3866     DWORD dw2;
3867 } REGPINMEDIUM;
3868
3869 enum {
3870     REG_PINFLAG_B_ZERO = 0x1,
3871     REG_PINFLAG_B_RENDERER = 0x2,
3872     REG_PINFLAG_B_MANY = 0x4,
3873     REG_PINFLAG_B_OUTPUT = 0x8
3874 };
3875
3876 typedef struct {
3877     DWORD dwFlags;
3878     UINT cInstances;
3879     UINT nMediaTypes;
3880     const REGPINTYPES *lpMediaType;
3881     UINT nMediums;
3882     const REGPINMEDIUM *lpMedium;
3883     const CLSID *clsPinCategory;
3884 } REGFILTERPINS2;
3885
3886 typedef struct {
3887     DWORD dwVersion;
3888     DWORD dwMerit;
3889     union {
3890         struct {
3891             ULONG cPins;
3892             const REGFILTERPINS *rgPins;
3893         } DUMMYSTRUCTNAME;
3894         struct {
3895             ULONG cPins2;
3896             const REGFILTERPINS2 *rgPins2;
3897         } DUMMYSTRUCTNAME1;
3898     } DUMMYUNIONNAME;
3899 } REGFILTER2;
3900
3901 /*****************************************************************************
3902  * IFilterMapper2 interface
3903  */
3904 #ifndef __IFilterMapper2_INTERFACE_DEFINED__
3905 #define __IFilterMapper2_INTERFACE_DEFINED__
3906
3907 DEFINE_GUID(IID_IFilterMapper2, 0xb79bb0b0, 0x33c1, 0x11d1, 0xab,0xe1, 0x00,0xa0,0xc9,0x05,0xf3,0x75);
3908 #if defined(__cplusplus) && !defined(CINTERFACE)
3909 struct IFilterMapper2 : public IUnknown
3910 {
3911     virtual HRESULT STDMETHODCALLTYPE CreateCategory(
3912         REFCLSID clsidCategory,
3913         DWORD dwCategoryMerit,
3914         LPCWSTR Description) = 0;
3915
3916     virtual HRESULT STDMETHODCALLTYPE UnregisterFilter(
3917         const CLSID* pclsidCategory,
3918         const OLECHAR* szInstance,
3919         REFCLSID Filter) = 0;
3920
3921     virtual HRESULT STDMETHODCALLTYPE RegisterFilter(
3922         REFCLSID clsidFilter,
3923         LPCWSTR Name,
3924         IMoniker** ppMoniker,
3925         const CLSID* pclsidCategory,
3926         const OLECHAR* szInstance,
3927         const REGFILTER2* prf2) = 0;
3928
3929     virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters(
3930         IEnumMoniker** ppEnum,
3931         DWORD dwFlags,
3932         BOOL bExactMatch,
3933         DWORD dwMerit,
3934         BOOL bInputNeeded,
3935         DWORD cInputTypes,
3936         const GUID* pInputTypes,
3937         const REGPINMEDIUM* pMedIn,
3938         const CLSID* pPinCategoryIn,
3939         BOOL bRender,
3940         BOOL bOutputNeeded,
3941         DWORD cOutputTypes,
3942         const GUID* pOutputTypes,
3943         const REGPINMEDIUM* pMedOut,
3944         const CLSID* pPinCategoryOut) = 0;
3945
3946 };
3947 #else
3948 typedef struct IFilterMapper2Vtbl IFilterMapper2Vtbl;
3949 struct IFilterMapper2 {
3950     const IFilterMapper2Vtbl* lpVtbl;
3951 };
3952 struct IFilterMapper2Vtbl {
3953     ICOM_MSVTABLE_COMPAT_FIELDS
3954
3955     /*** IUnknown methods ***/
3956     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3957         IFilterMapper2* This,
3958         REFIID riid,
3959         void** ppvObject);
3960
3961     ULONG (STDMETHODCALLTYPE *AddRef)(
3962         IFilterMapper2* This);
3963
3964     ULONG (STDMETHODCALLTYPE *Release)(
3965         IFilterMapper2* This);
3966
3967     /*** IFilterMapper2 methods ***/
3968     HRESULT (STDMETHODCALLTYPE *CreateCategory)(
3969         IFilterMapper2* This,
3970         REFCLSID clsidCategory,
3971         DWORD dwCategoryMerit,
3972         LPCWSTR Description);
3973
3974     HRESULT (STDMETHODCALLTYPE *UnregisterFilter)(
3975         IFilterMapper2* This,
3976         const CLSID* pclsidCategory,
3977         const OLECHAR* szInstance,
3978         REFCLSID Filter);
3979
3980     HRESULT (STDMETHODCALLTYPE *RegisterFilter)(
3981         IFilterMapper2* This,
3982         REFCLSID clsidFilter,
3983         LPCWSTR Name,
3984         IMoniker** ppMoniker,
3985         const CLSID* pclsidCategory,
3986         const OLECHAR* szInstance,
3987         const REGFILTER2* prf2);
3988
3989     HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)(
3990         IFilterMapper2* This,
3991         IEnumMoniker** ppEnum,
3992         DWORD dwFlags,
3993         BOOL bExactMatch,
3994         DWORD dwMerit,
3995         BOOL bInputNeeded,
3996         DWORD cInputTypes,
3997         const GUID* pInputTypes,
3998         const REGPINMEDIUM* pMedIn,
3999         const CLSID* pPinCategoryIn,
4000         BOOL bRender,
4001         BOOL bOutputNeeded,
4002         DWORD cOutputTypes,
4003         const GUID* pOutputTypes,
4004         const REGPINMEDIUM* pMedOut,
4005         const CLSID* pPinCategoryOut);
4006
4007 };
4008
4009 /*** IUnknown methods ***/
4010 #define IFilterMapper2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4011 #define IFilterMapper2_AddRef(p) (p)->lpVtbl->AddRef(p)
4012 #define IFilterMapper2_Release(p) (p)->lpVtbl->Release(p)
4013 /*** IFilterMapper2 methods ***/
4014 #define IFilterMapper2_CreateCategory(p,a,b,c) (p)->lpVtbl->CreateCategory(p,a,b,c)
4015 #define IFilterMapper2_UnregisterFilter(p,a,b,c) (p)->lpVtbl->UnregisterFilter(p,a,b,c)
4016 #define IFilterMapper2_RegisterFilter(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterFilter(p,a,b,c,d,e,f)
4017 #define IFilterMapper2_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
4018
4019 #endif
4020
4021 #define IFilterMapper2_METHODS \
4022     ICOM_MSVTABLE_COMPAT_FIELDS \
4023     /*** IUnknown methods ***/ \
4024     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4025     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4026     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4027     /*** IFilterMapper2 methods ***/ \
4028     STDMETHOD_(HRESULT,CreateCategory)(THIS_ REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description) PURE; \
4029     STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter) PURE; \
4030     STDMETHOD_(HRESULT,RegisterFilter)(THIS_ REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2) PURE; \
4031     STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut) PURE;
4032
4033 HRESULT CALLBACK IFilterMapper2_CreateCategory_Proxy(
4034     IFilterMapper2* This,
4035     REFCLSID clsidCategory,
4036     DWORD dwCategoryMerit,
4037     LPCWSTR Description);
4038 void __RPC_STUB IFilterMapper2_CreateCategory_Stub(
4039     struct IRpcStubBuffer* This,
4040     struct IRpcChannelBuffer* pRpcChannelBuffer,
4041     PRPC_MESSAGE pRpcMessage,
4042     DWORD* pdwStubPhase);
4043 HRESULT CALLBACK IFilterMapper2_UnregisterFilter_Proxy(
4044     IFilterMapper2* This,
4045     const CLSID* pclsidCategory,
4046     const OLECHAR* szInstance,
4047     REFCLSID Filter);
4048 void __RPC_STUB IFilterMapper2_UnregisterFilter_Stub(
4049     struct IRpcStubBuffer* This,
4050     struct IRpcChannelBuffer* pRpcChannelBuffer,
4051     PRPC_MESSAGE pRpcMessage,
4052     DWORD* pdwStubPhase);
4053 HRESULT CALLBACK IFilterMapper2_RegisterFilter_Proxy(
4054     IFilterMapper2* This,
4055     REFCLSID clsidFilter,
4056     LPCWSTR Name,
4057     IMoniker** ppMoniker,
4058     const CLSID* pclsidCategory,
4059     const OLECHAR* szInstance,
4060     const REGFILTER2* prf2);
4061 void __RPC_STUB IFilterMapper2_RegisterFilter_Stub(
4062     struct IRpcStubBuffer* This,
4063     struct IRpcChannelBuffer* pRpcChannelBuffer,
4064     PRPC_MESSAGE pRpcMessage,
4065     DWORD* pdwStubPhase);
4066 HRESULT CALLBACK IFilterMapper2_EnumMatchingFilters_Proxy(
4067     IFilterMapper2* This,
4068     IEnumMoniker** ppEnum,
4069     DWORD dwFlags,
4070     BOOL bExactMatch,
4071     DWORD dwMerit,
4072     BOOL bInputNeeded,
4073     DWORD cInputTypes,
4074     const GUID* pInputTypes,
4075     const REGPINMEDIUM* pMedIn,
4076     const CLSID* pPinCategoryIn,
4077     BOOL bRender,
4078     BOOL bOutputNeeded,
4079     DWORD cOutputTypes,
4080     const GUID* pOutputTypes,
4081     const REGPINMEDIUM* pMedOut,
4082     const CLSID* pPinCategoryOut);
4083 void __RPC_STUB IFilterMapper2_EnumMatchingFilters_Stub(
4084     struct IRpcStubBuffer* This,
4085     struct IRpcChannelBuffer* pRpcChannelBuffer,
4086     PRPC_MESSAGE pRpcMessage,
4087     DWORD* pdwStubPhase);
4088
4089 #endif  /* __IFilterMapper2_INTERFACE_DEFINED__ */
4090
4091 #ifndef __IFilterMapper3_FWD_DEFINED__
4092 #define __IFilterMapper3_FWD_DEFINED__
4093 typedef struct IFilterMapper3 IFilterMapper3;
4094 #endif
4095
4096 /*****************************************************************************
4097  * IFilterMapper3 interface
4098  */
4099 #ifndef __IFilterMapper3_INTERFACE_DEFINED__
4100 #define __IFilterMapper3_INTERFACE_DEFINED__
4101
4102 DEFINE_GUID(IID_IFilterMapper3, 0xb79bb0b1, 0x33c1, 0x11d1, 0xab,0xe1, 0x00,0xa0,0xc9,0x05,0xf3,0x75);
4103 #if defined(__cplusplus) && !defined(CINTERFACE)
4104 struct IFilterMapper3 : public IFilterMapper2
4105 {
4106     virtual HRESULT STDMETHODCALLTYPE GetICreateDevEnum(
4107         ICreateDevEnum** ppEnum) = 0;
4108
4109 };
4110 #else
4111 typedef struct IFilterMapper3Vtbl IFilterMapper3Vtbl;
4112 struct IFilterMapper3 {
4113     const IFilterMapper3Vtbl* lpVtbl;
4114 };
4115 struct IFilterMapper3Vtbl {
4116     ICOM_MSVTABLE_COMPAT_FIELDS
4117
4118     /*** IUnknown methods ***/
4119     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4120         IFilterMapper3* This,
4121         REFIID riid,
4122         void** ppvObject);
4123
4124     ULONG (STDMETHODCALLTYPE *AddRef)(
4125         IFilterMapper3* This);
4126
4127     ULONG (STDMETHODCALLTYPE *Release)(
4128         IFilterMapper3* This);
4129
4130     /*** IFilterMapper2 methods ***/
4131     HRESULT (STDMETHODCALLTYPE *CreateCategory)(
4132         IFilterMapper3* This,
4133         REFCLSID clsidCategory,
4134         DWORD dwCategoryMerit,
4135         LPCWSTR Description);
4136
4137     HRESULT (STDMETHODCALLTYPE *UnregisterFilter)(
4138         IFilterMapper3* This,
4139         const CLSID* pclsidCategory,
4140         const OLECHAR* szInstance,
4141         REFCLSID Filter);
4142
4143     HRESULT (STDMETHODCALLTYPE *RegisterFilter)(
4144         IFilterMapper3* This,
4145         REFCLSID clsidFilter,
4146         LPCWSTR Name,
4147         IMoniker** ppMoniker,
4148         const CLSID* pclsidCategory,
4149         const OLECHAR* szInstance,
4150         const REGFILTER2* prf2);
4151
4152     HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)(
4153         IFilterMapper3* This,
4154         IEnumMoniker** ppEnum,
4155         DWORD dwFlags,
4156         BOOL bExactMatch,
4157         DWORD dwMerit,
4158         BOOL bInputNeeded,
4159         DWORD cInputTypes,
4160         const GUID* pInputTypes,
4161         const REGPINMEDIUM* pMedIn,
4162         const CLSID* pPinCategoryIn,
4163         BOOL bRender,
4164         BOOL bOutputNeeded,
4165         DWORD cOutputTypes,
4166         const GUID* pOutputTypes,
4167         const REGPINMEDIUM* pMedOut,
4168         const CLSID* pPinCategoryOut);
4169
4170     /*** IFilterMapper3 methods ***/
4171     HRESULT (STDMETHODCALLTYPE *GetICreateDevEnum)(
4172         IFilterMapper3* This,
4173         ICreateDevEnum** ppEnum);
4174
4175 };
4176
4177 /*** IUnknown methods ***/
4178 #define IFilterMapper3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4179 #define IFilterMapper3_AddRef(p) (p)->lpVtbl->AddRef(p)
4180 #define IFilterMapper3_Release(p) (p)->lpVtbl->Release(p)
4181 /*** IFilterMapper2 methods ***/
4182 #define IFilterMapper3_CreateCategory(p,a,b,c) (p)->lpVtbl->CreateCategory(p,a,b,c)
4183 #define IFilterMapper3_UnregisterFilter(p,a,b,c) (p)->lpVtbl->UnregisterFilter(p,a,b,c)
4184 #define IFilterMapper3_RegisterFilter(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterFilter(p,a,b,c,d,e,f)
4185 #define IFilterMapper3_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
4186 /*** IFilterMapper3 methods ***/
4187 #define IFilterMapper3_GetICreateDevEnum(p,a) (p)->lpVtbl->GetICreateDevEnum(p,a)
4188
4189 #endif
4190
4191 #define IFilterMapper3_METHODS \
4192     ICOM_MSVTABLE_COMPAT_FIELDS \
4193     /*** IUnknown methods ***/ \
4194     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4195     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4196     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4197     /*** IFilterMapper2 methods ***/ \
4198     STDMETHOD_(HRESULT,CreateCategory)(THIS_ REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description) PURE; \
4199     STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter) PURE; \
4200     STDMETHOD_(HRESULT,RegisterFilter)(THIS_ REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2) PURE; \
4201     STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut) PURE; \
4202     /*** IFilterMapper3 methods ***/ \
4203     STDMETHOD_(HRESULT,GetICreateDevEnum)(THIS_ ICreateDevEnum** ppEnum) PURE;
4204
4205 HRESULT CALLBACK IFilterMapper3_GetICreateDevEnum_Proxy(
4206     IFilterMapper3* This,
4207     ICreateDevEnum** ppEnum);
4208 void __RPC_STUB IFilterMapper3_GetICreateDevEnum_Stub(
4209     struct IRpcStubBuffer* This,
4210     struct IRpcChannelBuffer* pRpcChannelBuffer,
4211     PRPC_MESSAGE pRpcMessage,
4212     DWORD* pdwStubPhase);
4213
4214 #endif  /* __IFilterMapper3_INTERFACE_DEFINED__ */
4215
4216 typedef enum tagQualityMessageType {
4217     Famine,
4218     Flood
4219 } QualityMessageType;
4220
4221 typedef struct tagQuality {
4222     QualityMessageType Type;
4223     long Proportion;
4224     REFERENCE_TIME Late;
4225     REFERENCE_TIME TimeStamp;
4226 } Quality;
4227
4228 typedef IQualityControl *PQUALITYCONTROL;
4229
4230 /*****************************************************************************
4231  * IQualityControl interface
4232  */
4233 #ifndef __IQualityControl_INTERFACE_DEFINED__
4234 #define __IQualityControl_INTERFACE_DEFINED__
4235
4236 DEFINE_GUID(IID_IQualityControl, 0x56a868a5, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
4237 #if defined(__cplusplus) && !defined(CINTERFACE)
4238 struct IQualityControl : public IUnknown
4239 {
4240     virtual HRESULT STDMETHODCALLTYPE Notify(
4241         IBaseFilter* pSelf,
4242         Quality q) = 0;
4243
4244     virtual HRESULT STDMETHODCALLTYPE SetSink(
4245         IQualityControl* piqc) = 0;
4246
4247 };
4248 #else
4249 typedef struct IQualityControlVtbl IQualityControlVtbl;
4250 struct IQualityControl {
4251     const IQualityControlVtbl* lpVtbl;
4252 };
4253 struct IQualityControlVtbl {
4254     ICOM_MSVTABLE_COMPAT_FIELDS
4255
4256     /*** IUnknown methods ***/
4257     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4258         IQualityControl* This,
4259         REFIID riid,
4260         void** ppvObject);
4261
4262     ULONG (STDMETHODCALLTYPE *AddRef)(
4263         IQualityControl* This);
4264
4265     ULONG (STDMETHODCALLTYPE *Release)(
4266         IQualityControl* This);
4267
4268     /*** IQualityControl methods ***/
4269     HRESULT (STDMETHODCALLTYPE *Notify)(
4270         IQualityControl* This,
4271         IBaseFilter* pSelf,
4272         Quality q);
4273
4274     HRESULT (STDMETHODCALLTYPE *SetSink)(
4275         IQualityControl* This,
4276         IQualityControl* piqc);
4277
4278 };
4279
4280 /*** IUnknown methods ***/
4281 #define IQualityControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4282 #define IQualityControl_AddRef(p) (p)->lpVtbl->AddRef(p)
4283 #define IQualityControl_Release(p) (p)->lpVtbl->Release(p)
4284 /*** IQualityControl methods ***/
4285 #define IQualityControl_Notify(p,a,b) (p)->lpVtbl->Notify(p,a,b)
4286 #define IQualityControl_SetSink(p,a) (p)->lpVtbl->SetSink(p,a)
4287
4288 #endif
4289
4290 #define IQualityControl_METHODS \
4291     ICOM_MSVTABLE_COMPAT_FIELDS \
4292     /*** IUnknown methods ***/ \
4293     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4294     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4295     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4296     /*** IQualityControl methods ***/ \
4297     STDMETHOD_(HRESULT,Notify)(THIS_ IBaseFilter* pSelf, Quality q) PURE; \
4298     STDMETHOD_(HRESULT,SetSink)(THIS_ IQualityControl* piqc) PURE;
4299
4300 HRESULT CALLBACK IQualityControl_Notify_Proxy(
4301     IQualityControl* This,
4302     IBaseFilter* pSelf,
4303     Quality q);
4304 void __RPC_STUB IQualityControl_Notify_Stub(
4305     struct IRpcStubBuffer* This,
4306     struct IRpcChannelBuffer* pRpcChannelBuffer,
4307     PRPC_MESSAGE pRpcMessage,
4308     DWORD* pdwStubPhase);
4309 HRESULT CALLBACK IQualityControl_SetSink_Proxy(
4310     IQualityControl* This,
4311     IQualityControl* piqc);
4312 void __RPC_STUB IQualityControl_SetSink_Stub(
4313     struct IRpcStubBuffer* This,
4314     struct IRpcChannelBuffer* pRpcChannelBuffer,
4315     PRPC_MESSAGE pRpcMessage,
4316     DWORD* pdwStubPhase);
4317
4318 #endif  /* __IQualityControl_INTERFACE_DEFINED__ */
4319
4320 enum {
4321     CK_NOCOLORKEY = 0x0,
4322     CK_INDEX = 0x1,
4323     CK_RGB = 0x2
4324 };
4325
4326 typedef struct tagCOLORKEY {
4327     DWORD KeyType;
4328     DWORD PaletteIndex;
4329     COLORREF LowColorValue;
4330     COLORREF HighColorValue;
4331 } COLORKEY;
4332
4333 enum {
4334     ADVISE_NONE = 0x0,
4335     ADVISE_CLIPPING = 0x1,
4336     ADVISE_PALETTE = 0x2,
4337     ADVISE_COLORKEY = 0x4,
4338     ADVISE_POSITION = 0x8,
4339     ADVISE_DISPLAY_CHANGE = 0x10
4340 };
4341
4342 #define ADVISE_ALL (((ADVISE_CLIPPING | ADVISE_PALETTE) | ADVISE_COLORKEY) | ADVISE_POSITION)
4343
4344 #define ADVISE_ALL2 (ADVISE_ALL | ADVISE_DISPLAY_CHANGE)
4345
4346 #ifndef _WINGDI_
4347 typedef struct _RGNDATAHEADER {
4348     DWORD dwSize;
4349     DWORD iType;
4350     DWORD nCount;
4351     DWORD nRgnSize;
4352     RECT rcBound;
4353 } RGNDATAHEADER;
4354
4355 typedef struct _RGNDATA {
4356     RGNDATAHEADER rdh;
4357     char Buffer[1];
4358 } RGNDATA;
4359
4360 #endif /* _WINGDI_ */
4361 /*****************************************************************************
4362  * IOverlayNotify interface
4363  */
4364 #ifndef __IOverlayNotify_INTERFACE_DEFINED__
4365 #define __IOverlayNotify_INTERFACE_DEFINED__
4366
4367 DEFINE_GUID(IID_IOverlayNotify, 0x56a868a0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
4368 #if defined(__cplusplus) && !defined(CINTERFACE)
4369 struct IOverlayNotify : public IUnknown
4370 {
4371     virtual HRESULT STDMETHODCALLTYPE OnPaletteChange(
4372         DWORD dwColors,
4373         const PALETTEENTRY* pPalette) = 0;
4374
4375     virtual HRESULT STDMETHODCALLTYPE OnClipChange(
4376         const RECT* pSourceRect,
4377         const RECT* pDestinationRect,
4378         const RGNDATA* pRgnData) = 0;
4379
4380     virtual HRESULT STDMETHODCALLTYPE OnColorKeyChange(
4381         const COLORKEY* pColorKey) = 0;
4382
4383     virtual HRESULT STDMETHODCALLTYPE OnPositionChange(
4384         const RECT* pSourceRect,
4385         const RECT* pDestinationRect) = 0;
4386
4387 };
4388 #else
4389 typedef struct IOverlayNotifyVtbl IOverlayNotifyVtbl;
4390 struct IOverlayNotify {
4391     const IOverlayNotifyVtbl* lpVtbl;
4392 };
4393 struct IOverlayNotifyVtbl {
4394     ICOM_MSVTABLE_COMPAT_FIELDS
4395
4396     /*** IUnknown methods ***/
4397     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4398         IOverlayNotify* This,
4399         REFIID riid,
4400         void** ppvObject);
4401
4402     ULONG (STDMETHODCALLTYPE *AddRef)(
4403         IOverlayNotify* This);
4404
4405     ULONG (STDMETHODCALLTYPE *Release)(
4406         IOverlayNotify* This);
4407
4408     /*** IOverlayNotify methods ***/
4409     HRESULT (STDMETHODCALLTYPE *OnPaletteChange)(
4410         IOverlayNotify* This,
4411         DWORD dwColors,
4412         const PALETTEENTRY* pPalette);
4413
4414     HRESULT (STDMETHODCALLTYPE *OnClipChange)(
4415         IOverlayNotify* This,
4416         const RECT* pSourceRect,
4417         const RECT* pDestinationRect,
4418         const RGNDATA* pRgnData);
4419
4420     HRESULT (STDMETHODCALLTYPE *OnColorKeyChange)(
4421         IOverlayNotify* This,
4422         const COLORKEY* pColorKey);
4423
4424     HRESULT (STDMETHODCALLTYPE *OnPositionChange)(
4425         IOverlayNotify* This,
4426         const RECT* pSourceRect,
4427         const RECT* pDestinationRect);
4428
4429 };
4430
4431 /*** IUnknown methods ***/
4432 #define IOverlayNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4433 #define IOverlayNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
4434 #define IOverlayNotify_Release(p) (p)->lpVtbl->Release(p)
4435 /*** IOverlayNotify methods ***/
4436 #define IOverlayNotify_OnPaletteChange(p,a,b) (p)->lpVtbl->OnPaletteChange(p,a,b)
4437 #define IOverlayNotify_OnClipChange(p,a,b,c) (p)->lpVtbl->OnClipChange(p,a,b,c)
4438 #define IOverlayNotify_OnColorKeyChange(p,a) (p)->lpVtbl->OnColorKeyChange(p,a)
4439 #define IOverlayNotify_OnPositionChange(p,a,b) (p)->lpVtbl->OnPositionChange(p,a,b)
4440
4441 #endif
4442
4443 #define IOverlayNotify_METHODS \
4444     ICOM_MSVTABLE_COMPAT_FIELDS \
4445     /*** IUnknown methods ***/ \
4446     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4447     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4448     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4449     /*** IOverlayNotify methods ***/ \
4450     STDMETHOD_(HRESULT,OnPaletteChange)(THIS_ DWORD dwColors, const PALETTEENTRY* pPalette) PURE; \
4451     STDMETHOD_(HRESULT,OnClipChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect, const RGNDATA* pRgnData) PURE; \
4452     STDMETHOD_(HRESULT,OnColorKeyChange)(THIS_ const COLORKEY* pColorKey) PURE; \
4453     STDMETHOD_(HRESULT,OnPositionChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect) PURE;
4454
4455 HRESULT CALLBACK IOverlayNotify_OnPaletteChange_Proxy(
4456     IOverlayNotify* This,
4457     DWORD dwColors,
4458     const PALETTEENTRY* pPalette);
4459 void __RPC_STUB IOverlayNotify_OnPaletteChange_Stub(
4460     struct IRpcStubBuffer* This,
4461     struct IRpcChannelBuffer* pRpcChannelBuffer,
4462     PRPC_MESSAGE pRpcMessage,
4463     DWORD* pdwStubPhase);
4464 HRESULT CALLBACK IOverlayNotify_OnClipChange_Proxy(
4465     IOverlayNotify* This,
4466     const RECT* pSourceRect,
4467     const RECT* pDestinationRect,
4468     const RGNDATA* pRgnData);
4469 void __RPC_STUB IOverlayNotify_OnClipChange_Stub(
4470     struct IRpcStubBuffer* This,
4471     struct IRpcChannelBuffer* pRpcChannelBuffer,
4472     PRPC_MESSAGE pRpcMessage,
4473     DWORD* pdwStubPhase);
4474 HRESULT CALLBACK IOverlayNotify_OnColorKeyChange_Proxy(
4475     IOverlayNotify* This,
4476     const COLORKEY* pColorKey);
4477 void __RPC_STUB IOverlayNotify_OnColorKeyChange_Stub(
4478     struct IRpcStubBuffer* This,
4479     struct IRpcChannelBuffer* pRpcChannelBuffer,
4480     PRPC_MESSAGE pRpcMessage,
4481     DWORD* pdwStubPhase);
4482 HRESULT CALLBACK IOverlayNotify_OnPositionChange_Proxy(
4483     IOverlayNotify* This,
4484     const RECT* pSourceRect,
4485     const RECT* pDestinationRect);
4486 void __RPC_STUB IOverlayNotify_OnPositionChange_Stub(
4487     struct IRpcStubBuffer* This,
4488     struct IRpcChannelBuffer* pRpcChannelBuffer,
4489     PRPC_MESSAGE pRpcMessage,
4490     DWORD* pdwStubPhase);
4491
4492 #endif  /* __IOverlayNotify_INTERFACE_DEFINED__ */
4493
4494 typedef IOverlayNotify *POVERLAYNOTIFY;
4495
4496 #if 0
4497 typedef HANDLE HMONITOR;
4498
4499 #endif /* 0 */
4500 /*****************************************************************************
4501  * IOverlayNotify2 interface
4502  */
4503 #ifndef __IOverlayNotify2_INTERFACE_DEFINED__
4504 #define __IOverlayNotify2_INTERFACE_DEFINED__
4505
4506 DEFINE_GUID(IID_IOverlayNotify2, 0x680efa10, 0xd535, 0x11d1, 0x87,0xc8, 0x00,0xa0,0xc9,0x22,0x31,0x96);
4507 #if defined(__cplusplus) && !defined(CINTERFACE)
4508 struct IOverlayNotify2 : public IOverlayNotify
4509 {
4510     virtual HRESULT STDMETHODCALLTYPE OnDisplayChange(
4511         HMONITOR hMonitor) = 0;
4512
4513 };
4514 #else
4515 typedef struct IOverlayNotify2Vtbl IOverlayNotify2Vtbl;
4516 struct IOverlayNotify2 {
4517     const IOverlayNotify2Vtbl* lpVtbl;
4518 };
4519 struct IOverlayNotify2Vtbl {
4520     ICOM_MSVTABLE_COMPAT_FIELDS
4521
4522     /*** IUnknown methods ***/
4523     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4524         IOverlayNotify2* This,
4525         REFIID riid,
4526         void** ppvObject);
4527
4528     ULONG (STDMETHODCALLTYPE *AddRef)(
4529         IOverlayNotify2* This);
4530
4531     ULONG (STDMETHODCALLTYPE *Release)(
4532         IOverlayNotify2* This);
4533
4534     /*** IOverlayNotify methods ***/
4535     HRESULT (STDMETHODCALLTYPE *OnPaletteChange)(
4536         IOverlayNotify2* This,
4537         DWORD dwColors,
4538         const PALETTEENTRY* pPalette);
4539
4540     HRESULT (STDMETHODCALLTYPE *OnClipChange)(
4541         IOverlayNotify2* This,
4542         const RECT* pSourceRect,
4543         const RECT* pDestinationRect,
4544         const RGNDATA* pRgnData);
4545
4546     HRESULT (STDMETHODCALLTYPE *OnColorKeyChange)(
4547         IOverlayNotify2* This,
4548         const COLORKEY* pColorKey);
4549
4550     HRESULT (STDMETHODCALLTYPE *OnPositionChange)(
4551         IOverlayNotify2* This,
4552         const RECT* pSourceRect,
4553         const RECT* pDestinationRect);
4554
4555     /*** IOverlayNotify2 methods ***/
4556     HRESULT (STDMETHODCALLTYPE *OnDisplayChange)(
4557         IOverlayNotify2* This,
4558         HMONITOR hMonitor);
4559
4560 };
4561
4562 /*** IUnknown methods ***/
4563 #define IOverlayNotify2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4564 #define IOverlayNotify2_AddRef(p) (p)->lpVtbl->AddRef(p)
4565 #define IOverlayNotify2_Release(p) (p)->lpVtbl->Release(p)
4566 /*** IOverlayNotify methods ***/
4567 #define IOverlayNotify2_OnPaletteChange(p,a,b) (p)->lpVtbl->OnPaletteChange(p,a,b)
4568 #define IOverlayNotify2_OnClipChange(p,a,b,c) (p)->lpVtbl->OnClipChange(p,a,b,c)
4569 #define IOverlayNotify2_OnColorKeyChange(p,a) (p)->lpVtbl->OnColorKeyChange(p,a)
4570 #define IOverlayNotify2_OnPositionChange(p,a,b) (p)->lpVtbl->OnPositionChange(p,a,b)
4571 /*** IOverlayNotify2 methods ***/
4572 #define IOverlayNotify2_OnDisplayChange(p,a) (p)->lpVtbl->OnDisplayChange(p,a)
4573
4574 #endif
4575
4576 #define IOverlayNotify2_METHODS \
4577     ICOM_MSVTABLE_COMPAT_FIELDS \
4578     /*** IUnknown methods ***/ \
4579     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4580     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4581     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4582     /*** IOverlayNotify methods ***/ \
4583     STDMETHOD_(HRESULT,OnPaletteChange)(THIS_ DWORD dwColors, const PALETTEENTRY* pPalette) PURE; \
4584     STDMETHOD_(HRESULT,OnClipChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect, const RGNDATA* pRgnData) PURE; \
4585     STDMETHOD_(HRESULT,OnColorKeyChange)(THIS_ const COLORKEY* pColorKey) PURE; \
4586     STDMETHOD_(HRESULT,OnPositionChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect) PURE; \
4587     /*** IOverlayNotify2 methods ***/ \
4588     STDMETHOD_(HRESULT,OnDisplayChange)(THIS_ HMONITOR hMonitor) PURE;
4589
4590 HRESULT CALLBACK IOverlayNotify2_OnDisplayChange_Proxy(
4591     IOverlayNotify2* This,
4592     HMONITOR hMonitor);
4593 void __RPC_STUB IOverlayNotify2_OnDisplayChange_Stub(
4594     struct IRpcStubBuffer* This,
4595     struct IRpcChannelBuffer* pRpcChannelBuffer,
4596     PRPC_MESSAGE pRpcMessage,
4597     DWORD* pdwStubPhase);
4598
4599 #endif  /* __IOverlayNotify2_INTERFACE_DEFINED__ */
4600
4601 typedef IOverlayNotify2 *POVERLAYNOTIFY2;
4602
4603 /*****************************************************************************
4604  * IOverlay interface
4605  */
4606 #ifndef __IOverlay_INTERFACE_DEFINED__
4607 #define __IOverlay_INTERFACE_DEFINED__
4608
4609 DEFINE_GUID(IID_IOverlay, 0x56a868a1, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
4610 #if defined(__cplusplus) && !defined(CINTERFACE)
4611 struct IOverlay : public IUnknown
4612 {
4613     virtual HRESULT STDMETHODCALLTYPE GetPalette(
4614         DWORD* pdwColors,
4615         PALETTEENTRY** ppPalette) = 0;
4616
4617     virtual HRESULT STDMETHODCALLTYPE SetPalette(
4618         DWORD dwColors,
4619         PALETTEENTRY* pPalette) = 0;
4620
4621     virtual HRESULT STDMETHODCALLTYPE GetDefaultColorKey(
4622         COLORKEY* pColorKey) = 0;
4623
4624     virtual HRESULT STDMETHODCALLTYPE GetColorKey(
4625         COLORKEY* pColorKey) = 0;
4626
4627     virtual HRESULT STDMETHODCALLTYPE SetColorKey(
4628         COLORKEY* pColorKey) = 0;
4629
4630     virtual HRESULT STDMETHODCALLTYPE GetWindowHandle(
4631         HWND* pHwnd) = 0;
4632
4633     virtual HRESULT STDMETHODCALLTYPE GetClipList(
4634         RECT* pSourceRect,
4635         RECT* pDestinationRect,
4636         RGNDATA** ppRgnData) = 0;
4637
4638     virtual HRESULT STDMETHODCALLTYPE GetVideoPosition(
4639         RECT* pSourceRect,
4640         RECT* pDestinationRect) = 0;
4641
4642     virtual HRESULT STDMETHODCALLTYPE Advise(
4643         IOverlayNotify* pOverlayNotify,
4644         DWORD dwInterests) = 0;
4645
4646     virtual HRESULT STDMETHODCALLTYPE Unadvise(
4647         ) = 0;
4648
4649 };
4650 #else
4651 typedef struct IOverlayVtbl IOverlayVtbl;
4652 struct IOverlay {
4653     const IOverlayVtbl* lpVtbl;
4654 };
4655 struct IOverlayVtbl {
4656     ICOM_MSVTABLE_COMPAT_FIELDS
4657
4658     /*** IUnknown methods ***/
4659     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4660         IOverlay* This,
4661         REFIID riid,
4662         void** ppvObject);
4663
4664     ULONG (STDMETHODCALLTYPE *AddRef)(
4665         IOverlay* This);
4666
4667     ULONG (STDMETHODCALLTYPE *Release)(
4668         IOverlay* This);
4669
4670     /*** IOverlay methods ***/
4671     HRESULT (STDMETHODCALLTYPE *GetPalette)(
4672         IOverlay* This,
4673         DWORD* pdwColors,
4674         PALETTEENTRY** ppPalette);
4675
4676     HRESULT (STDMETHODCALLTYPE *SetPalette)(
4677         IOverlay* This,
4678         DWORD dwColors,
4679         PALETTEENTRY* pPalette);
4680
4681     HRESULT (STDMETHODCALLTYPE *GetDefaultColorKey)(
4682         IOverlay* This,
4683         COLORKEY* pColorKey);
4684
4685     HRESULT (STDMETHODCALLTYPE *GetColorKey)(
4686         IOverlay* This,
4687         COLORKEY* pColorKey);
4688
4689     HRESULT (STDMETHODCALLTYPE *SetColorKey)(
4690         IOverlay* This,
4691         COLORKEY* pColorKey);
4692
4693     HRESULT (STDMETHODCALLTYPE *GetWindowHandle)(
4694         IOverlay* This,
4695         HWND* pHwnd);
4696
4697     HRESULT (STDMETHODCALLTYPE *GetClipList)(
4698         IOverlay* This,
4699         RECT* pSourceRect,
4700         RECT* pDestinationRect,
4701         RGNDATA** ppRgnData);
4702
4703     HRESULT (STDMETHODCALLTYPE *GetVideoPosition)(
4704         IOverlay* This,
4705         RECT* pSourceRect,
4706         RECT* pDestinationRect);
4707
4708     HRESULT (STDMETHODCALLTYPE *Advise)(
4709         IOverlay* This,
4710         IOverlayNotify* pOverlayNotify,
4711         DWORD dwInterests);
4712
4713     HRESULT (STDMETHODCALLTYPE *Unadvise)(
4714         IOverlay* This);
4715
4716 };
4717
4718 /*** IUnknown methods ***/
4719 #define IOverlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4720 #define IOverlay_AddRef(p) (p)->lpVtbl->AddRef(p)
4721 #define IOverlay_Release(p) (p)->lpVtbl->Release(p)
4722 /*** IOverlay methods ***/
4723 #define IOverlay_GetPalette(p,a,b) (p)->lpVtbl->GetPalette(p,a,b)
4724 #define IOverlay_SetPalette(p,a,b) (p)->lpVtbl->SetPalette(p,a,b)
4725 #define IOverlay_GetDefaultColorKey(p,a) (p)->lpVtbl->GetDefaultColorKey(p,a)
4726 #define IOverlay_GetColorKey(p,a) (p)->lpVtbl->GetColorKey(p,a)
4727 #define IOverlay_SetColorKey(p,a) (p)->lpVtbl->SetColorKey(p,a)
4728 #define IOverlay_GetWindowHandle(p,a) (p)->lpVtbl->GetWindowHandle(p,a)
4729 #define IOverlay_GetClipList(p,a,b,c) (p)->lpVtbl->GetClipList(p,a,b,c)
4730 #define IOverlay_GetVideoPosition(p,a,b) (p)->lpVtbl->GetVideoPosition(p,a,b)
4731 #define IOverlay_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b)
4732 #define IOverlay_Unadvise(p) (p)->lpVtbl->Unadvise(p)
4733
4734 #endif
4735
4736 #define IOverlay_METHODS \
4737     ICOM_MSVTABLE_COMPAT_FIELDS \
4738     /*** IUnknown methods ***/ \
4739     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4740     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4741     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4742     /*** IOverlay methods ***/ \
4743     STDMETHOD_(HRESULT,GetPalette)(THIS_ DWORD* pdwColors, PALETTEENTRY** ppPalette) PURE; \
4744     STDMETHOD_(HRESULT,SetPalette)(THIS_ DWORD dwColors, PALETTEENTRY* pPalette) PURE; \
4745     STDMETHOD_(HRESULT,GetDefaultColorKey)(THIS_ COLORKEY* pColorKey) PURE; \
4746     STDMETHOD_(HRESULT,GetColorKey)(THIS_ COLORKEY* pColorKey) PURE; \
4747     STDMETHOD_(HRESULT,SetColorKey)(THIS_ COLORKEY* pColorKey) PURE; \
4748     STDMETHOD_(HRESULT,GetWindowHandle)(THIS_ HWND* pHwnd) PURE; \
4749     STDMETHOD_(HRESULT,GetClipList)(THIS_ RECT* pSourceRect, RECT* pDestinationRect, RGNDATA** ppRgnData) PURE; \
4750     STDMETHOD_(HRESULT,GetVideoPosition)(THIS_ RECT* pSourceRect, RECT* pDestinationRect) PURE; \
4751     STDMETHOD_(HRESULT,Advise)(THIS_ IOverlayNotify* pOverlayNotify, DWORD dwInterests) PURE; \
4752     STDMETHOD_(HRESULT,Unadvise)(THIS) PURE;
4753
4754 HRESULT CALLBACK IOverlay_GetPalette_Proxy(
4755     IOverlay* This,
4756     DWORD* pdwColors,
4757     PALETTEENTRY** ppPalette);
4758 void __RPC_STUB IOverlay_GetPalette_Stub(
4759     struct IRpcStubBuffer* This,
4760     struct IRpcChannelBuffer* pRpcChannelBuffer,
4761     PRPC_MESSAGE pRpcMessage,
4762     DWORD* pdwStubPhase);
4763 HRESULT CALLBACK IOverlay_SetPalette_Proxy(
4764     IOverlay* This,
4765     DWORD dwColors,
4766     PALETTEENTRY* pPalette);
4767 void __RPC_STUB IOverlay_SetPalette_Stub(
4768     struct IRpcStubBuffer* This,
4769     struct IRpcChannelBuffer* pRpcChannelBuffer,
4770     PRPC_MESSAGE pRpcMessage,
4771     DWORD* pdwStubPhase);
4772 HRESULT CALLBACK IOverlay_GetDefaultColorKey_Proxy(
4773     IOverlay* This,
4774     COLORKEY* pColorKey);
4775 void __RPC_STUB IOverlay_GetDefaultColorKey_Stub(
4776     struct IRpcStubBuffer* This,
4777     struct IRpcChannelBuffer* pRpcChannelBuffer,
4778     PRPC_MESSAGE pRpcMessage,
4779     DWORD* pdwStubPhase);
4780 HRESULT CALLBACK IOverlay_GetColorKey_Proxy(
4781     IOverlay* This,
4782     COLORKEY* pColorKey);
4783 void __RPC_STUB IOverlay_GetColorKey_Stub(
4784     struct IRpcStubBuffer* This,
4785     struct IRpcChannelBuffer* pRpcChannelBuffer,
4786     PRPC_MESSAGE pRpcMessage,
4787     DWORD* pdwStubPhase);
4788 HRESULT CALLBACK IOverlay_SetColorKey_Proxy(
4789     IOverlay* This,
4790     COLORKEY* pColorKey);
4791 void __RPC_STUB IOverlay_SetColorKey_Stub(
4792     struct IRpcStubBuffer* This,
4793     struct IRpcChannelBuffer* pRpcChannelBuffer,
4794     PRPC_MESSAGE pRpcMessage,
4795     DWORD* pdwStubPhase);
4796 HRESULT CALLBACK IOverlay_GetWindowHandle_Proxy(
4797     IOverlay* This,
4798     HWND* pHwnd);
4799 void __RPC_STUB IOverlay_GetWindowHandle_Stub(
4800     struct IRpcStubBuffer* This,
4801     struct IRpcChannelBuffer* pRpcChannelBuffer,
4802     PRPC_MESSAGE pRpcMessage,
4803     DWORD* pdwStubPhase);
4804 HRESULT CALLBACK IOverlay_GetClipList_Proxy(
4805     IOverlay* This,
4806     RECT* pSourceRect,
4807     RECT* pDestinationRect,
4808     RGNDATA** ppRgnData);
4809 void __RPC_STUB IOverlay_GetClipList_Stub(
4810     struct IRpcStubBuffer* This,
4811     struct IRpcChannelBuffer* pRpcChannelBuffer,
4812     PRPC_MESSAGE pRpcMessage,
4813     DWORD* pdwStubPhase);
4814 HRESULT CALLBACK IOverlay_GetVideoPosition_Proxy(
4815     IOverlay* This,
4816     RECT* pSourceRect,
4817     RECT* pDestinationRect);
4818 void __RPC_STUB IOverlay_GetVideoPosition_Stub(
4819     struct IRpcStubBuffer* This,
4820     struct IRpcChannelBuffer* pRpcChannelBuffer,
4821     PRPC_MESSAGE pRpcMessage,
4822     DWORD* pdwStubPhase);
4823 HRESULT CALLBACK IOverlay_Advise_Proxy(
4824     IOverlay* This,
4825     IOverlayNotify* pOverlayNotify,
4826     DWORD dwInterests);
4827 void __RPC_STUB IOverlay_Advise_Stub(
4828     struct IRpcStubBuffer* This,
4829     struct IRpcChannelBuffer* pRpcChannelBuffer,
4830     PRPC_MESSAGE pRpcMessage,
4831     DWORD* pdwStubPhase);
4832 HRESULT CALLBACK IOverlay_Unadvise_Proxy(
4833     IOverlay* This);
4834 void __RPC_STUB IOverlay_Unadvise_Stub(
4835     struct IRpcStubBuffer* This,
4836     struct IRpcChannelBuffer* pRpcChannelBuffer,
4837     PRPC_MESSAGE pRpcMessage,
4838     DWORD* pdwStubPhase);
4839
4840 #endif  /* __IOverlay_INTERFACE_DEFINED__ */
4841
4842 typedef IOverlay *POVERLAY;
4843
4844 /*****************************************************************************
4845  * IMediaEventSink interface
4846  */
4847 #ifndef __IMediaEventSink_INTERFACE_DEFINED__
4848 #define __IMediaEventSink_INTERFACE_DEFINED__
4849
4850 DEFINE_GUID(IID_IMediaEventSink, 0x56a868a2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
4851 #if defined(__cplusplus) && !defined(CINTERFACE)
4852 struct IMediaEventSink : public IUnknown
4853 {
4854     virtual HRESULT STDMETHODCALLTYPE Notify(
4855         long EventCode,
4856         LONG_PTR EventParam1,
4857         LONG_PTR EventParam2) = 0;
4858
4859 };
4860 #else
4861 typedef struct IMediaEventSinkVtbl IMediaEventSinkVtbl;
4862 struct IMediaEventSink {
4863     const IMediaEventSinkVtbl* lpVtbl;
4864 };
4865 struct IMediaEventSinkVtbl {
4866     ICOM_MSVTABLE_COMPAT_FIELDS
4867
4868     /*** IUnknown methods ***/
4869     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4870         IMediaEventSink* This,
4871         REFIID riid,
4872         void** ppvObject);
4873
4874     ULONG (STDMETHODCALLTYPE *AddRef)(
4875         IMediaEventSink* This);
4876
4877     ULONG (STDMETHODCALLTYPE *Release)(
4878         IMediaEventSink* This);
4879
4880     /*** IMediaEventSink methods ***/
4881     HRESULT (STDMETHODCALLTYPE *Notify)(
4882         IMediaEventSink* This,
4883         long EventCode,
4884         LONG_PTR EventParam1,
4885         LONG_PTR EventParam2);
4886
4887 };
4888
4889 /*** IUnknown methods ***/
4890 #define IMediaEventSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4891 #define IMediaEventSink_AddRef(p) (p)->lpVtbl->AddRef(p)
4892 #define IMediaEventSink_Release(p) (p)->lpVtbl->Release(p)
4893 /*** IMediaEventSink methods ***/
4894 #define IMediaEventSink_Notify(p,a,b,c) (p)->lpVtbl->Notify(p,a,b,c)
4895
4896 #endif
4897
4898 #define IMediaEventSink_METHODS \
4899     ICOM_MSVTABLE_COMPAT_FIELDS \
4900     /*** IUnknown methods ***/ \
4901     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4902     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4903     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4904     /*** IMediaEventSink methods ***/ \
4905     STDMETHOD_(HRESULT,Notify)(THIS_ long EventCode, LONG_PTR EventParam1, LONG_PTR EventParam2) PURE;
4906
4907 HRESULT CALLBACK IMediaEventSink_Notify_Proxy(
4908     IMediaEventSink* This,
4909     long EventCode,
4910     LONG_PTR EventParam1,
4911     LONG_PTR EventParam2);
4912 void __RPC_STUB IMediaEventSink_Notify_Stub(
4913     struct IRpcStubBuffer* This,
4914     struct IRpcChannelBuffer* pRpcChannelBuffer,
4915     PRPC_MESSAGE pRpcMessage,
4916     DWORD* pdwStubPhase);
4917
4918 #endif  /* __IMediaEventSink_INTERFACE_DEFINED__ */
4919
4920 typedef IMediaEventSink *PMEDIAEVENTSINK;
4921
4922 /*****************************************************************************
4923  * IFileSourceFilter interface
4924  */
4925 #ifndef __IFileSourceFilter_INTERFACE_DEFINED__
4926 #define __IFileSourceFilter_INTERFACE_DEFINED__
4927
4928 DEFINE_GUID(IID_IFileSourceFilter, 0x56a868a6, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
4929 #if defined(__cplusplus) && !defined(CINTERFACE)
4930 struct IFileSourceFilter : public IUnknown
4931 {
4932     virtual HRESULT STDMETHODCALLTYPE Load(
4933         LPCOLESTR pszFileName,
4934         const AM_MEDIA_TYPE* pmt) = 0;
4935
4936     virtual HRESULT STDMETHODCALLTYPE GetCurFile(
4937         LPOLESTR* ppszFileName,
4938         AM_MEDIA_TYPE* pmt) = 0;
4939
4940 };
4941 #else
4942 typedef struct IFileSourceFilterVtbl IFileSourceFilterVtbl;
4943 struct IFileSourceFilter {
4944     const IFileSourceFilterVtbl* lpVtbl;
4945 };
4946 struct IFileSourceFilterVtbl {
4947     ICOM_MSVTABLE_COMPAT_FIELDS
4948
4949     /*** IUnknown methods ***/
4950     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4951         IFileSourceFilter* This,
4952         REFIID riid,
4953         void** ppvObject);
4954
4955     ULONG (STDMETHODCALLTYPE *AddRef)(
4956         IFileSourceFilter* This);
4957
4958     ULONG (STDMETHODCALLTYPE *Release)(
4959         IFileSourceFilter* This);
4960
4961     /*** IFileSourceFilter methods ***/
4962     HRESULT (STDMETHODCALLTYPE *Load)(
4963         IFileSourceFilter* This,
4964         LPCOLESTR pszFileName,
4965         const AM_MEDIA_TYPE* pmt);
4966
4967     HRESULT (STDMETHODCALLTYPE *GetCurFile)(
4968         IFileSourceFilter* This,
4969         LPOLESTR* ppszFileName,
4970         AM_MEDIA_TYPE* pmt);
4971
4972 };
4973
4974 /*** IUnknown methods ***/
4975 #define IFileSourceFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4976 #define IFileSourceFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
4977 #define IFileSourceFilter_Release(p) (p)->lpVtbl->Release(p)
4978 /*** IFileSourceFilter methods ***/
4979 #define IFileSourceFilter_Load(p,a,b) (p)->lpVtbl->Load(p,a,b)
4980 #define IFileSourceFilter_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b)
4981
4982 #endif
4983
4984 #define IFileSourceFilter_METHODS \
4985     ICOM_MSVTABLE_COMPAT_FIELDS \
4986     /*** IUnknown methods ***/ \
4987     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4988     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4989     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4990     /*** IFileSourceFilter methods ***/ \
4991     STDMETHOD_(HRESULT,Load)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \
4992     STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE;
4993
4994 HRESULT CALLBACK IFileSourceFilter_Load_Proxy(
4995     IFileSourceFilter* This,
4996     LPCOLESTR pszFileName,
4997     const AM_MEDIA_TYPE* pmt);
4998 void __RPC_STUB IFileSourceFilter_Load_Stub(
4999     struct IRpcStubBuffer* This,
5000     struct IRpcChannelBuffer* pRpcChannelBuffer,
5001     PRPC_MESSAGE pRpcMessage,
5002     DWORD* pdwStubPhase);
5003 HRESULT CALLBACK IFileSourceFilter_GetCurFile_Proxy(
5004     IFileSourceFilter* This,
5005     LPOLESTR* ppszFileName,
5006     AM_MEDIA_TYPE* pmt);
5007 void __RPC_STUB IFileSourceFilter_GetCurFile_Stub(
5008     struct IRpcStubBuffer* This,
5009     struct IRpcChannelBuffer* pRpcChannelBuffer,
5010     PRPC_MESSAGE pRpcMessage,
5011     DWORD* pdwStubPhase);
5012
5013 #endif  /* __IFileSourceFilter_INTERFACE_DEFINED__ */
5014
5015 typedef IFileSourceFilter *PFILTERFILESOURCE;
5016
5017 /*****************************************************************************
5018  * IFileSinkFilter interface
5019  */
5020 #ifndef __IFileSinkFilter_INTERFACE_DEFINED__
5021 #define __IFileSinkFilter_INTERFACE_DEFINED__
5022
5023 DEFINE_GUID(IID_IFileSinkFilter, 0xa2104830, 0x7c70, 0x11cf, 0x8b,0xce, 0x00,0xaa,0x00,0xa3,0xf1,0xa6);
5024 #if defined(__cplusplus) && !defined(CINTERFACE)
5025 struct IFileSinkFilter : public IUnknown
5026 {
5027     virtual HRESULT STDMETHODCALLTYPE SetFileName(
5028         LPCOLESTR pszFileName,
5029         const AM_MEDIA_TYPE* pmt) = 0;
5030
5031     virtual HRESULT STDMETHODCALLTYPE GetCurFile(
5032         LPOLESTR* ppszFileName,
5033         AM_MEDIA_TYPE* pmt) = 0;
5034
5035 };
5036 #else
5037 typedef struct IFileSinkFilterVtbl IFileSinkFilterVtbl;
5038 struct IFileSinkFilter {
5039     const IFileSinkFilterVtbl* lpVtbl;
5040 };
5041 struct IFileSinkFilterVtbl {
5042     ICOM_MSVTABLE_COMPAT_FIELDS
5043
5044     /*** IUnknown methods ***/
5045     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5046         IFileSinkFilter* This,
5047         REFIID riid,
5048         void** ppvObject);
5049
5050     ULONG (STDMETHODCALLTYPE *AddRef)(
5051         IFileSinkFilter* This);
5052
5053     ULONG (STDMETHODCALLTYPE *Release)(
5054         IFileSinkFilter* This);
5055
5056     /*** IFileSinkFilter methods ***/
5057     HRESULT (STDMETHODCALLTYPE *SetFileName)(
5058         IFileSinkFilter* This,
5059         LPCOLESTR pszFileName,
5060         const AM_MEDIA_TYPE* pmt);
5061
5062     HRESULT (STDMETHODCALLTYPE *GetCurFile)(
5063         IFileSinkFilter* This,
5064         LPOLESTR* ppszFileName,
5065         AM_MEDIA_TYPE* pmt);
5066
5067 };
5068
5069 /*** IUnknown methods ***/
5070 #define IFileSinkFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5071 #define IFileSinkFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
5072 #define IFileSinkFilter_Release(p) (p)->lpVtbl->Release(p)
5073 /*** IFileSinkFilter methods ***/
5074 #define IFileSinkFilter_SetFileName(p,a,b) (p)->lpVtbl->SetFileName(p,a,b)
5075 #define IFileSinkFilter_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b)
5076
5077 #endif
5078
5079 #define IFileSinkFilter_METHODS \
5080     ICOM_MSVTABLE_COMPAT_FIELDS \
5081     /*** IUnknown methods ***/ \
5082     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5083     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5084     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5085     /*** IFileSinkFilter methods ***/ \
5086     STDMETHOD_(HRESULT,SetFileName)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \
5087     STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE;
5088
5089 HRESULT CALLBACK IFileSinkFilter_SetFileName_Proxy(
5090     IFileSinkFilter* This,
5091     LPCOLESTR pszFileName,
5092     const AM_MEDIA_TYPE* pmt);
5093 void __RPC_STUB IFileSinkFilter_SetFileName_Stub(
5094     struct IRpcStubBuffer* This,
5095     struct IRpcChannelBuffer* pRpcChannelBuffer,
5096     PRPC_MESSAGE pRpcMessage,
5097     DWORD* pdwStubPhase);
5098 HRESULT CALLBACK IFileSinkFilter_GetCurFile_Proxy(
5099     IFileSinkFilter* This,
5100     LPOLESTR* ppszFileName,
5101     AM_MEDIA_TYPE* pmt);
5102 void __RPC_STUB IFileSinkFilter_GetCurFile_Stub(
5103     struct IRpcStubBuffer* This,
5104     struct IRpcChannelBuffer* pRpcChannelBuffer,
5105     PRPC_MESSAGE pRpcMessage,
5106     DWORD* pdwStubPhase);
5107
5108 #endif  /* __IFileSinkFilter_INTERFACE_DEFINED__ */
5109
5110 typedef IFileSinkFilter *PFILTERFILESINK;
5111
5112 /*****************************************************************************
5113  * IFileSinkFilter2 interface
5114  */
5115 #ifndef __IFileSinkFilter2_INTERFACE_DEFINED__
5116 #define __IFileSinkFilter2_INTERFACE_DEFINED__
5117
5118 DEFINE_GUID(IID_IFileSinkFilter2, 0x00855b90, 0xce1b, 0x11d0, 0xbd,0x4f, 0x00,0xa0,0xc9,0x11,0xce,0x86);
5119 #if defined(__cplusplus) && !defined(CINTERFACE)
5120 struct IFileSinkFilter2 : public IFileSinkFilter
5121 {
5122     virtual HRESULT STDMETHODCALLTYPE SetMode(
5123         DWORD dwFlags) = 0;
5124
5125     virtual HRESULT STDMETHODCALLTYPE GetMode(
5126         DWORD* pdwFlags) = 0;
5127
5128 };
5129 #else
5130 typedef struct IFileSinkFilter2Vtbl IFileSinkFilter2Vtbl;
5131 struct IFileSinkFilter2 {
5132     const IFileSinkFilter2Vtbl* lpVtbl;
5133 };
5134 struct IFileSinkFilter2Vtbl {
5135     ICOM_MSVTABLE_COMPAT_FIELDS
5136
5137     /*** IUnknown methods ***/
5138     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5139         IFileSinkFilter2* This,
5140         REFIID riid,
5141         void** ppvObject);
5142
5143     ULONG (STDMETHODCALLTYPE *AddRef)(
5144         IFileSinkFilter2* This);
5145
5146     ULONG (STDMETHODCALLTYPE *Release)(
5147         IFileSinkFilter2* This);
5148
5149     /*** IFileSinkFilter methods ***/
5150     HRESULT (STDMETHODCALLTYPE *SetFileName)(
5151         IFileSinkFilter2* This,
5152         LPCOLESTR pszFileName,
5153         const AM_MEDIA_TYPE* pmt);
5154
5155     HRESULT (STDMETHODCALLTYPE *GetCurFile)(
5156         IFileSinkFilter2* This,
5157         LPOLESTR* ppszFileName,
5158         AM_MEDIA_TYPE* pmt);
5159
5160     /*** IFileSinkFilter2 methods ***/
5161     HRESULT (STDMETHODCALLTYPE *SetMode)(
5162         IFileSinkFilter2* This,
5163         DWORD dwFlags);
5164
5165     HRESULT (STDMETHODCALLTYPE *GetMode)(
5166         IFileSinkFilter2* This,
5167         DWORD* pdwFlags);
5168
5169 };
5170
5171 /*** IUnknown methods ***/
5172 #define IFileSinkFilter2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5173 #define IFileSinkFilter2_AddRef(p) (p)->lpVtbl->AddRef(p)
5174 #define IFileSinkFilter2_Release(p) (p)->lpVtbl->Release(p)
5175 /*** IFileSinkFilter methods ***/
5176 #define IFileSinkFilter2_SetFileName(p,a,b) (p)->lpVtbl->SetFileName(p,a,b)
5177 #define IFileSinkFilter2_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b)
5178 /*** IFileSinkFilter2 methods ***/
5179 #define IFileSinkFilter2_SetMode(p,a) (p)->lpVtbl->SetMode(p,a)
5180 #define IFileSinkFilter2_GetMode(p,a) (p)->lpVtbl->GetMode(p,a)
5181
5182 #endif
5183
5184 #define IFileSinkFilter2_METHODS \
5185     ICOM_MSVTABLE_COMPAT_FIELDS \
5186     /*** IUnknown methods ***/ \
5187     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5188     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5189     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5190     /*** IFileSinkFilter methods ***/ \
5191     STDMETHOD_(HRESULT,SetFileName)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \
5192     STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; \
5193     /*** IFileSinkFilter2 methods ***/ \
5194     STDMETHOD_(HRESULT,SetMode)(THIS_ DWORD dwFlags) PURE; \
5195     STDMETHOD_(HRESULT,GetMode)(THIS_ DWORD* pdwFlags) PURE;
5196
5197 HRESULT CALLBACK IFileSinkFilter2_SetMode_Proxy(
5198     IFileSinkFilter2* This,
5199     DWORD dwFlags);
5200 void __RPC_STUB IFileSinkFilter2_SetMode_Stub(
5201     struct IRpcStubBuffer* This,
5202     struct IRpcChannelBuffer* pRpcChannelBuffer,
5203     PRPC_MESSAGE pRpcMessage,
5204     DWORD* pdwStubPhase);
5205 HRESULT CALLBACK IFileSinkFilter2_GetMode_Proxy(
5206     IFileSinkFilter2* This,
5207     DWORD* pdwFlags);
5208 void __RPC_STUB IFileSinkFilter2_GetMode_Stub(
5209     struct IRpcStubBuffer* This,
5210     struct IRpcChannelBuffer* pRpcChannelBuffer,
5211     PRPC_MESSAGE pRpcMessage,
5212     DWORD* pdwStubPhase);
5213
5214 #endif  /* __IFileSinkFilter2_INTERFACE_DEFINED__ */
5215
5216 typedef IFileSinkFilter2 *PFILESINKFILTER2;
5217
5218 typedef enum {
5219     AM_FILE_OVERWRITE = 0x1
5220 } AM_FILESINK_FLAGS;
5221
5222 /*****************************************************************************
5223  * IGraphBuilder interface
5224  */
5225 #ifndef __IGraphBuilder_INTERFACE_DEFINED__
5226 #define __IGraphBuilder_INTERFACE_DEFINED__
5227
5228 DEFINE_GUID(IID_IGraphBuilder, 0x56a868a9, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
5229 #if defined(__cplusplus) && !defined(CINTERFACE)
5230 struct IGraphBuilder : public IFilterGraph
5231 {
5232     virtual HRESULT STDMETHODCALLTYPE Connect(
5233         IPin* ppinOut,
5234         IPin* ppinIn) = 0;
5235
5236     virtual HRESULT STDMETHODCALLTYPE Render(
5237         IPin* ppinOut) = 0;
5238
5239     virtual HRESULT STDMETHODCALLTYPE RenderFile(
5240         LPCWSTR lpcwstrFile,
5241         LPCWSTR lpcwstrPlayList) = 0;
5242
5243     virtual HRESULT STDMETHODCALLTYPE AddSourceFilter(
5244         LPCWSTR lpcwstrFileName,
5245         LPCWSTR lpcwstrFilterName,
5246         IBaseFilter** ppFilter) = 0;
5247
5248     virtual HRESULT STDMETHODCALLTYPE SetLogFile(
5249         DWORD_PTR hFile) = 0;
5250
5251     virtual HRESULT STDMETHODCALLTYPE Abort(
5252         ) = 0;
5253
5254     virtual HRESULT STDMETHODCALLTYPE ShouldOperationContinue(
5255         ) = 0;
5256
5257 };
5258 #else
5259 typedef struct IGraphBuilderVtbl IGraphBuilderVtbl;
5260 struct IGraphBuilder {
5261     const IGraphBuilderVtbl* lpVtbl;
5262 };
5263 struct IGraphBuilderVtbl {
5264     ICOM_MSVTABLE_COMPAT_FIELDS
5265
5266     /*** IUnknown methods ***/
5267     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5268         IGraphBuilder* This,
5269         REFIID riid,
5270         void** ppvObject);
5271
5272     ULONG (STDMETHODCALLTYPE *AddRef)(
5273         IGraphBuilder* This);
5274
5275     ULONG (STDMETHODCALLTYPE *Release)(
5276         IGraphBuilder* This);
5277
5278     /*** IFilterGraph methods ***/
5279     HRESULT (STDMETHODCALLTYPE *AddFilter)(
5280         IGraphBuilder* This,
5281         IBaseFilter* pFilter,
5282         LPCWSTR pName);
5283
5284     HRESULT (STDMETHODCALLTYPE *RemoveFilter)(
5285         IGraphBuilder* This,
5286         IBaseFilter* pFilter);
5287
5288     HRESULT (STDMETHODCALLTYPE *EnumFilters)(
5289         IGraphBuilder* This,
5290         IEnumFilters** ppEnum);
5291
5292     HRESULT (STDMETHODCALLTYPE *FindFilterByName)(
5293         IGraphBuilder* This,
5294         LPCWSTR pName,
5295         IBaseFilter** ppFilter);
5296
5297     HRESULT (STDMETHODCALLTYPE *ConnectDirect)(
5298         IGraphBuilder* This,
5299         IPin* ppinOut,
5300         IPin* ppinIn,
5301         const AM_MEDIA_TYPE* pmt);
5302
5303     HRESULT (STDMETHODCALLTYPE *Reconnect)(
5304         IGraphBuilder* This,
5305         IPin* ppin);
5306
5307     HRESULT (STDMETHODCALLTYPE *Disconnect)(
5308         IGraphBuilder* This,
5309         IPin* ppin);
5310
5311     HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)(
5312         IGraphBuilder* This);
5313
5314     /*** IGraphBuilder methods ***/
5315     HRESULT (STDMETHODCALLTYPE *Connect)(
5316         IGraphBuilder* This,
5317         IPin* ppinOut,
5318         IPin* ppinIn);
5319
5320     HRESULT (STDMETHODCALLTYPE *Render)(
5321         IGraphBuilder* This,
5322         IPin* ppinOut);
5323
5324     HRESULT (STDMETHODCALLTYPE *RenderFile)(
5325         IGraphBuilder* This,
5326         LPCWSTR lpcwstrFile,
5327         LPCWSTR lpcwstrPlayList);
5328
5329     HRESULT (STDMETHODCALLTYPE *AddSourceFilter)(
5330         IGraphBuilder* This,
5331         LPCWSTR lpcwstrFileName,
5332         LPCWSTR lpcwstrFilterName,
5333         IBaseFilter** ppFilter);
5334
5335     HRESULT (STDMETHODCALLTYPE *SetLogFile)(
5336         IGraphBuilder* This,
5337         DWORD_PTR hFile);
5338
5339     HRESULT (STDMETHODCALLTYPE *Abort)(
5340         IGraphBuilder* This);
5341
5342     HRESULT (STDMETHODCALLTYPE *ShouldOperationContinue)(
5343         IGraphBuilder* This);
5344
5345 };
5346
5347 /*** IUnknown methods ***/
5348 #define IGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5349 #define IGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p)
5350 #define IGraphBuilder_Release(p) (p)->lpVtbl->Release(p)
5351 /*** IFilterGraph methods ***/
5352 #define IGraphBuilder_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
5353 #define IGraphBuilder_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
5354 #define IGraphBuilder_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a)
5355 #define IGraphBuilder_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
5356 #define IGraphBuilder_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
5357 #define IGraphBuilder_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
5358 #define IGraphBuilder_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
5359 #define IGraphBuilder_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
5360 /*** IGraphBuilder methods ***/
5361 #define IGraphBuilder_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
5362 #define IGraphBuilder_Render(p,a) (p)->lpVtbl->Render(p,a)
5363 #define IGraphBuilder_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b)
5364 #define IGraphBuilder_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c)
5365 #define IGraphBuilder_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a)
5366 #define IGraphBuilder_Abort(p) (p)->lpVtbl->Abort(p)
5367 #define IGraphBuilder_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p)
5368
5369 #endif
5370
5371 #define IGraphBuilder_METHODS \
5372     ICOM_MSVTABLE_COMPAT_FIELDS \
5373     /*** IUnknown methods ***/ \
5374     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5375     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5376     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5377     /*** IFilterGraph methods ***/ \
5378     STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \
5379     STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \
5380     STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \
5381     STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \
5382     STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \
5383     STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \
5384     STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \
5385     STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; \
5386     /*** IGraphBuilder methods ***/ \
5387     STDMETHOD_(HRESULT,Connect)(THIS_ IPin* ppinOut, IPin* ppinIn) PURE; \
5388     STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut) PURE; \
5389     STDMETHOD_(HRESULT,RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \
5390     STDMETHOD_(HRESULT,AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \
5391     STDMETHOD_(HRESULT,SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \
5392     STDMETHOD_(HRESULT,Abort)(THIS) PURE; \
5393     STDMETHOD_(HRESULT,ShouldOperationContinue)(THIS) PURE;
5394
5395 HRESULT CALLBACK IGraphBuilder_Connect_Proxy(
5396     IGraphBuilder* This,
5397     IPin* ppinOut,
5398     IPin* ppinIn);
5399 void __RPC_STUB IGraphBuilder_Connect_Stub(
5400     struct IRpcStubBuffer* This,
5401     struct IRpcChannelBuffer* pRpcChannelBuffer,
5402     PRPC_MESSAGE pRpcMessage,
5403     DWORD* pdwStubPhase);
5404 HRESULT CALLBACK IGraphBuilder_Render_Proxy(
5405     IGraphBuilder* This,
5406     IPin* ppinOut);
5407 void __RPC_STUB IGraphBuilder_Render_Stub(
5408     struct IRpcStubBuffer* This,
5409     struct IRpcChannelBuffer* pRpcChannelBuffer,
5410     PRPC_MESSAGE pRpcMessage,
5411     DWORD* pdwStubPhase);
5412 HRESULT CALLBACK IGraphBuilder_RenderFile_Proxy(
5413     IGraphBuilder* This,
5414     LPCWSTR lpcwstrFile,
5415     LPCWSTR lpcwstrPlayList);
5416 void __RPC_STUB IGraphBuilder_RenderFile_Stub(
5417     struct IRpcStubBuffer* This,
5418     struct IRpcChannelBuffer* pRpcChannelBuffer,
5419     PRPC_MESSAGE pRpcMessage,
5420     DWORD* pdwStubPhase);
5421 HRESULT CALLBACK IGraphBuilder_AddSourceFilter_Proxy(
5422     IGraphBuilder* This,
5423     LPCWSTR lpcwstrFileName,
5424     LPCWSTR lpcwstrFilterName,
5425     IBaseFilter** ppFilter);
5426 void __RPC_STUB IGraphBuilder_AddSourceFilter_Stub(
5427     struct IRpcStubBuffer* This,
5428     struct IRpcChannelBuffer* pRpcChannelBuffer,
5429     PRPC_MESSAGE pRpcMessage,
5430     DWORD* pdwStubPhase);
5431 HRESULT CALLBACK IGraphBuilder_SetLogFile_Proxy(
5432     IGraphBuilder* This,
5433     DWORD_PTR hFile);
5434 void __RPC_STUB IGraphBuilder_SetLogFile_Stub(
5435     struct IRpcStubBuffer* This,
5436     struct IRpcChannelBuffer* pRpcChannelBuffer,
5437     PRPC_MESSAGE pRpcMessage,
5438     DWORD* pdwStubPhase);
5439 HRESULT CALLBACK IGraphBuilder_Abort_Proxy(
5440     IGraphBuilder* This);
5441 void __RPC_STUB IGraphBuilder_Abort_Stub(
5442     struct IRpcStubBuffer* This,
5443     struct IRpcChannelBuffer* pRpcChannelBuffer,
5444     PRPC_MESSAGE pRpcMessage,
5445     DWORD* pdwStubPhase);
5446 HRESULT CALLBACK IGraphBuilder_ShouldOperationContinue_Proxy(
5447     IGraphBuilder* This);
5448 void __RPC_STUB IGraphBuilder_ShouldOperationContinue_Stub(
5449     struct IRpcStubBuffer* This,
5450     struct IRpcChannelBuffer* pRpcChannelBuffer,
5451     PRPC_MESSAGE pRpcMessage,
5452     DWORD* pdwStubPhase);
5453
5454 #endif  /* __IGraphBuilder_INTERFACE_DEFINED__ */
5455
5456 /*****************************************************************************
5457  * ICaptureGraphBuilder interface
5458  */
5459 #ifndef __ICaptureGraphBuilder_INTERFACE_DEFINED__
5460 #define __ICaptureGraphBuilder_INTERFACE_DEFINED__
5461
5462 DEFINE_GUID(IID_ICaptureGraphBuilder, 0xbf87b6e0, 0x8c27, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5);
5463 #if defined(__cplusplus) && !defined(CINTERFACE)
5464 struct ICaptureGraphBuilder : public IUnknown
5465 {
5466     virtual HRESULT STDMETHODCALLTYPE SetFiltergraph(
5467         IGraphBuilder* pfg) = 0;
5468
5469     virtual HRESULT STDMETHODCALLTYPE GetFiltergraph(
5470         IGraphBuilder** ppfg) = 0;
5471
5472     virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
5473         const GUID* pType,
5474         LPCOLESTR lpstrFile,
5475         IBaseFilter** ppf,
5476         IFileSinkFilter** ppSink) = 0;
5477
5478     virtual HRESULT STDMETHODCALLTYPE FindInterface(
5479         const GUID* pCategory,
5480         IBaseFilter* pf,
5481         REFIID riid,
5482         void** ppint) = 0;
5483
5484     virtual HRESULT STDMETHODCALLTYPE RenderStream(
5485         const GUID* pCategory,
5486         IUnknown* pSource,
5487         IBaseFilter* pfCompressor,
5488         IBaseFilter* pfRenderer) = 0;
5489
5490     virtual HRESULT STDMETHODCALLTYPE ControlStream(
5491         const GUID* pCategory,
5492         IBaseFilter* pFilter,
5493         REFERENCE_TIME* pstart,
5494         REFERENCE_TIME* pstop,
5495         WORD wStartCookie,
5496         WORD wStopCookie) = 0;
5497
5498     virtual HRESULT STDMETHODCALLTYPE AllocCapFile(
5499         LPCOLESTR lpstr,
5500         DWORDLONG dwlSize) = 0;
5501
5502     virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile(
5503         LPOLESTR lpwstrOld,
5504         LPOLESTR lpwstrNew,
5505         int fAllowEscAbort,
5506         IAMCopyCaptureFileProgress* pCallback) = 0;
5507
5508 };
5509 #else
5510 typedef struct ICaptureGraphBuilderVtbl ICaptureGraphBuilderVtbl;
5511 struct ICaptureGraphBuilder {
5512     const ICaptureGraphBuilderVtbl* lpVtbl;
5513 };
5514 struct ICaptureGraphBuilderVtbl {
5515     ICOM_MSVTABLE_COMPAT_FIELDS
5516
5517     /*** IUnknown methods ***/
5518     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5519         ICaptureGraphBuilder* This,
5520         REFIID riid,
5521         void** ppvObject);
5522
5523     ULONG (STDMETHODCALLTYPE *AddRef)(
5524         ICaptureGraphBuilder* This);
5525
5526     ULONG (STDMETHODCALLTYPE *Release)(
5527         ICaptureGraphBuilder* This);
5528
5529     /*** ICaptureGraphBuilder methods ***/
5530     HRESULT (STDMETHODCALLTYPE *SetFiltergraph)(
5531         ICaptureGraphBuilder* This,
5532         IGraphBuilder* pfg);
5533
5534     HRESULT (STDMETHODCALLTYPE *GetFiltergraph)(
5535         ICaptureGraphBuilder* This,
5536         IGraphBuilder** ppfg);
5537
5538     HRESULT (STDMETHODCALLTYPE *SetOutputFileName)(
5539         ICaptureGraphBuilder* This,
5540         const GUID* pType,
5541         LPCOLESTR lpstrFile,
5542         IBaseFilter** ppf,
5543         IFileSinkFilter** ppSink);
5544
5545     HRESULT (STDMETHODCALLTYPE *FindInterface)(
5546         ICaptureGraphBuilder* This,
5547         const GUID* pCategory,
5548         IBaseFilter* pf,
5549         REFIID riid,
5550         void** ppint);
5551
5552     HRESULT (STDMETHODCALLTYPE *RenderStream)(
5553         ICaptureGraphBuilder* This,
5554         const GUID* pCategory,
5555         IUnknown* pSource,
5556         IBaseFilter* pfCompressor,
5557         IBaseFilter* pfRenderer);
5558
5559     HRESULT (STDMETHODCALLTYPE *ControlStream)(
5560         ICaptureGraphBuilder* This,
5561         const GUID* pCategory,
5562         IBaseFilter* pFilter,
5563         REFERENCE_TIME* pstart,
5564         REFERENCE_TIME* pstop,
5565         WORD wStartCookie,
5566         WORD wStopCookie);
5567
5568     HRESULT (STDMETHODCALLTYPE *AllocCapFile)(
5569         ICaptureGraphBuilder* This,
5570         LPCOLESTR lpstr,
5571         DWORDLONG dwlSize);
5572
5573     HRESULT (STDMETHODCALLTYPE *CopyCaptureFile)(
5574         ICaptureGraphBuilder* This,
5575         LPOLESTR lpwstrOld,
5576         LPOLESTR lpwstrNew,
5577         int fAllowEscAbort,
5578         IAMCopyCaptureFileProgress* pCallback);
5579
5580 };
5581
5582 /*** IUnknown methods ***/
5583 #define ICaptureGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5584 #define ICaptureGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p)
5585 #define ICaptureGraphBuilder_Release(p) (p)->lpVtbl->Release(p)
5586 /*** ICaptureGraphBuilder methods ***/
5587 #define ICaptureGraphBuilder_SetFiltergraph(p,a) (p)->lpVtbl->SetFiltergraph(p,a)
5588 #define ICaptureGraphBuilder_GetFiltergraph(p,a) (p)->lpVtbl->GetFiltergraph(p,a)
5589 #define ICaptureGraphBuilder_SetOutputFileName(p,a,b,c,d) (p)->lpVtbl->SetOutputFileName(p,a,b,c,d)
5590 #define ICaptureGraphBuilder_FindInterface(p,a,b,c,d) (p)->lpVtbl->FindInterface(p,a,b,c,d)
5591 #define ICaptureGraphBuilder_RenderStream(p,a,b,c,d) (p)->lpVtbl->RenderStream(p,a,b,c,d)
5592 #define ICaptureGraphBuilder_ControlStream(p,a,b,c,d,e,f) (p)->lpVtbl->ControlStream(p,a,b,c,d,e,f)
5593 #define ICaptureGraphBuilder_AllocCapFile(p,a,b) (p)->lpVtbl->AllocCapFile(p,a,b)
5594 #define ICaptureGraphBuilder_CopyCaptureFile(p,a,b,c,d) (p)->lpVtbl->CopyCaptureFile(p,a,b,c,d)
5595
5596 #endif
5597
5598 #define ICaptureGraphBuilder_METHODS \
5599     ICOM_MSVTABLE_COMPAT_FIELDS \
5600     /*** IUnknown methods ***/ \
5601     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5602     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5603     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5604     /*** ICaptureGraphBuilder methods ***/ \
5605     STDMETHOD_(HRESULT,SetFiltergraph)(THIS_ IGraphBuilder* pfg) PURE; \
5606     STDMETHOD_(HRESULT,GetFiltergraph)(THIS_ IGraphBuilder** ppfg) PURE; \
5607     STDMETHOD_(HRESULT,SetOutputFileName)(THIS_ const GUID* pType, LPCOLESTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink) PURE; \
5608     STDMETHOD_(HRESULT,FindInterface)(THIS_ const GUID* pCategory, IBaseFilter* pf, REFIID riid, void** ppint) PURE; \
5609     STDMETHOD_(HRESULT,RenderStream)(THIS_ const GUID* pCategory, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) PURE; \
5610     STDMETHOD_(HRESULT,ControlStream)(THIS_ const GUID* pCategory, IBaseFilter* pFilter, REFERENCE_TIME* pstart, REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) PURE; \
5611     STDMETHOD_(HRESULT,AllocCapFile)(THIS_ LPCOLESTR lpstr, DWORDLONG dwlSize) PURE; \
5612     STDMETHOD_(HRESULT,CopyCaptureFile)(THIS_ LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) PURE;
5613
5614 HRESULT CALLBACK ICaptureGraphBuilder_SetFiltergraph_Proxy(
5615     ICaptureGraphBuilder* This,
5616     IGraphBuilder* pfg);
5617 void __RPC_STUB ICaptureGraphBuilder_SetFiltergraph_Stub(
5618     struct IRpcStubBuffer* This,
5619     struct IRpcChannelBuffer* pRpcChannelBuffer,
5620     PRPC_MESSAGE pRpcMessage,
5621     DWORD* pdwStubPhase);
5622 HRESULT CALLBACK ICaptureGraphBuilder_GetFiltergraph_Proxy(
5623     ICaptureGraphBuilder* This,
5624     IGraphBuilder** ppfg);
5625 void __RPC_STUB ICaptureGraphBuilder_GetFiltergraph_Stub(
5626     struct IRpcStubBuffer* This,
5627     struct IRpcChannelBuffer* pRpcChannelBuffer,
5628     PRPC_MESSAGE pRpcMessage,
5629     DWORD* pdwStubPhase);
5630 HRESULT CALLBACK ICaptureGraphBuilder_SetOutputFileName_Proxy(
5631     ICaptureGraphBuilder* This,
5632     const GUID* pType,
5633     LPCOLESTR lpstrFile,
5634     IBaseFilter** ppf,
5635     IFileSinkFilter** ppSink);
5636 void __RPC_STUB ICaptureGraphBuilder_SetOutputFileName_Stub(
5637     struct IRpcStubBuffer* This,
5638     struct IRpcChannelBuffer* pRpcChannelBuffer,
5639     PRPC_MESSAGE pRpcMessage,
5640     DWORD* pdwStubPhase);
5641 HRESULT CALLBACK ICaptureGraphBuilder_RemoteFindInterface_Proxy(
5642     ICaptureGraphBuilder* This,
5643     const GUID* pCategory,
5644     IBaseFilter* pf,
5645     REFIID riid,
5646     IUnknown** ppint);
5647 void __RPC_STUB ICaptureGraphBuilder_RemoteFindInterface_Stub(
5648     struct IRpcStubBuffer* This,
5649     struct IRpcChannelBuffer* pRpcChannelBuffer,
5650     PRPC_MESSAGE pRpcMessage,
5651     DWORD* pdwStubPhase);
5652 HRESULT CALLBACK ICaptureGraphBuilder_FindInterface_Proxy(
5653     ICaptureGraphBuilder* This,
5654     const GUID* pCategory,
5655     IBaseFilter* pf,
5656     REFIID riid,
5657     void** ppint);
5658 HRESULT __RPC_STUB ICaptureGraphBuilder_FindInterface_Stub(
5659     ICaptureGraphBuilder* This,
5660     const GUID* pCategory,
5661     IBaseFilter* pf,
5662     REFIID riid,
5663     IUnknown** ppint);
5664 HRESULT CALLBACK ICaptureGraphBuilder_RenderStream_Proxy(
5665     ICaptureGraphBuilder* This,
5666     const GUID* pCategory,
5667     IUnknown* pSource,
5668     IBaseFilter* pfCompressor,
5669     IBaseFilter* pfRenderer);
5670 void __RPC_STUB ICaptureGraphBuilder_RenderStream_Stub(
5671     struct IRpcStubBuffer* This,
5672     struct IRpcChannelBuffer* pRpcChannelBuffer,
5673     PRPC_MESSAGE pRpcMessage,
5674     DWORD* pdwStubPhase);
5675 HRESULT CALLBACK ICaptureGraphBuilder_ControlStream_Proxy(
5676     ICaptureGraphBuilder* This,
5677     const GUID* pCategory,
5678     IBaseFilter* pFilter,
5679     REFERENCE_TIME* pstart,
5680     REFERENCE_TIME* pstop,
5681     WORD wStartCookie,
5682     WORD wStopCookie);
5683 void __RPC_STUB ICaptureGraphBuilder_ControlStream_Stub(
5684     struct IRpcStubBuffer* This,
5685     struct IRpcChannelBuffer* pRpcChannelBuffer,
5686     PRPC_MESSAGE pRpcMessage,
5687     DWORD* pdwStubPhase);
5688 HRESULT CALLBACK ICaptureGraphBuilder_AllocCapFile_Proxy(
5689     ICaptureGraphBuilder* This,
5690     LPCOLESTR lpstr,
5691     DWORDLONG dwlSize);
5692 void __RPC_STUB ICaptureGraphBuilder_AllocCapFile_Stub(
5693     struct IRpcStubBuffer* This,
5694     struct IRpcChannelBuffer* pRpcChannelBuffer,
5695     PRPC_MESSAGE pRpcMessage,
5696     DWORD* pdwStubPhase);
5697 HRESULT CALLBACK ICaptureGraphBuilder_CopyCaptureFile_Proxy(
5698     ICaptureGraphBuilder* This,
5699     LPOLESTR lpwstrOld,
5700     LPOLESTR lpwstrNew,
5701     int fAllowEscAbort,
5702     IAMCopyCaptureFileProgress* pCallback);
5703 void __RPC_STUB ICaptureGraphBuilder_CopyCaptureFile_Stub(
5704     struct IRpcStubBuffer* This,
5705     struct IRpcChannelBuffer* pRpcChannelBuffer,
5706     PRPC_MESSAGE pRpcMessage,
5707     DWORD* pdwStubPhase);
5708
5709 #endif  /* __ICaptureGraphBuilder_INTERFACE_DEFINED__ */
5710
5711 /*****************************************************************************
5712  * IAMCopyCaptureFileProgress interface
5713  */
5714 #ifndef __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__
5715 #define __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__
5716
5717 DEFINE_GUID(IID_IAMCopyCaptureFileProgress, 0x670d1d20, 0xa068, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5);
5718 #if defined(__cplusplus) && !defined(CINTERFACE)
5719 struct IAMCopyCaptureFileProgress : public IUnknown
5720 {
5721     virtual HRESULT STDMETHODCALLTYPE Progress(
5722         int iProgress) = 0;
5723
5724 };
5725 #else
5726 typedef struct IAMCopyCaptureFileProgressVtbl IAMCopyCaptureFileProgressVtbl;
5727 struct IAMCopyCaptureFileProgress {
5728     const IAMCopyCaptureFileProgressVtbl* lpVtbl;
5729 };
5730 struct IAMCopyCaptureFileProgressVtbl {
5731     ICOM_MSVTABLE_COMPAT_FIELDS
5732
5733     /*** IUnknown methods ***/
5734     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5735         IAMCopyCaptureFileProgress* This,
5736         REFIID riid,
5737         void** ppvObject);
5738
5739     ULONG (STDMETHODCALLTYPE *AddRef)(
5740         IAMCopyCaptureFileProgress* This);
5741
5742     ULONG (STDMETHODCALLTYPE *Release)(
5743         IAMCopyCaptureFileProgress* This);
5744
5745     /*** IAMCopyCaptureFileProgress methods ***/
5746     HRESULT (STDMETHODCALLTYPE *Progress)(
5747         IAMCopyCaptureFileProgress* This,
5748         int iProgress);
5749
5750 };
5751
5752 /*** IUnknown methods ***/
5753 #define IAMCopyCaptureFileProgress_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5754 #define IAMCopyCaptureFileProgress_AddRef(p) (p)->lpVtbl->AddRef(p)
5755 #define IAMCopyCaptureFileProgress_Release(p) (p)->lpVtbl->Release(p)
5756 /*** IAMCopyCaptureFileProgress methods ***/
5757 #define IAMCopyCaptureFileProgress_Progress(p,a) (p)->lpVtbl->Progress(p,a)
5758
5759 #endif
5760
5761 #define IAMCopyCaptureFileProgress_METHODS \
5762     ICOM_MSVTABLE_COMPAT_FIELDS \
5763     /*** IUnknown methods ***/ \
5764     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5765     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5766     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5767     /*** IAMCopyCaptureFileProgress methods ***/ \
5768     STDMETHOD_(HRESULT,Progress)(THIS_ int iProgress) PURE;
5769
5770 HRESULT CALLBACK IAMCopyCaptureFileProgress_Progress_Proxy(
5771     IAMCopyCaptureFileProgress* This,
5772     int iProgress);
5773 void __RPC_STUB IAMCopyCaptureFileProgress_Progress_Stub(
5774     struct IRpcStubBuffer* This,
5775     struct IRpcChannelBuffer* pRpcChannelBuffer,
5776     PRPC_MESSAGE pRpcMessage,
5777     DWORD* pdwStubPhase);
5778
5779 #endif  /* __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ */
5780
5781 /*****************************************************************************
5782  * ICaptureGraphBuilder2 interface
5783  */
5784 #ifndef __ICaptureGraphBuilder2_INTERFACE_DEFINED__
5785 #define __ICaptureGraphBuilder2_INTERFACE_DEFINED__
5786
5787 DEFINE_GUID(IID_ICaptureGraphBuilder2, 0x93e5a4e0, 0x2d50, 0x11d2, 0xab,0xfa, 0x00,0xa0,0xc9,0xc6,0xe3,0x8d);
5788 #if defined(__cplusplus) && !defined(CINTERFACE)
5789 struct ICaptureGraphBuilder2 : public IUnknown
5790 {
5791     virtual HRESULT STDMETHODCALLTYPE SetFiltergraph(
5792         IGraphBuilder* pfg) = 0;
5793
5794     virtual HRESULT STDMETHODCALLTYPE GetFiltergraph(
5795         IGraphBuilder** ppfg) = 0;
5796
5797     virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
5798         const GUID* pType,
5799         LPCOLESTR lpstrFile,
5800         IBaseFilter** ppf,
5801         IFileSinkFilter** ppSink) = 0;
5802
5803     virtual HRESULT STDMETHODCALLTYPE FindInterface(
5804         const GUID* pCategory,
5805         const GUID* pType,
5806         IBaseFilter* pf,
5807         REFIID riid,
5808         void** ppint) = 0;
5809
5810     virtual HRESULT STDMETHODCALLTYPE RenderStream(
5811         const GUID* pCategory,
5812         const GUID* pType,
5813         IUnknown* pSource,
5814         IBaseFilter* pfCompressor,
5815         IBaseFilter* pfRenderer) = 0;
5816
5817     virtual HRESULT STDMETHODCALLTYPE ControlStream(
5818         const GUID* pCategory,
5819         const GUID* pType,
5820         IBaseFilter* pFilter,
5821         REFERENCE_TIME* pstart,
5822         REFERENCE_TIME* pstop,
5823         WORD wStartCookie,
5824         WORD wStopCookie) = 0;
5825
5826     virtual HRESULT STDMETHODCALLTYPE AllocCapFile(
5827         LPCOLESTR lpstr,
5828         DWORDLONG dwlSize) = 0;
5829
5830     virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile(
5831         LPOLESTR lpwstrOld,
5832         LPOLESTR lpwstrNew,
5833         int fAllowEscAbort,
5834         IAMCopyCaptureFileProgress* pCallback) = 0;
5835
5836     virtual HRESULT STDMETHODCALLTYPE FindPin(
5837         IUnknown* pSource,
5838         PIN_DIRECTION pindir,
5839         const GUID* pCategory,
5840         const GUID* pType,
5841         BOOL fUnconnected,
5842         int num,
5843         IPin** ppPin) = 0;
5844
5845 };
5846 #else
5847 typedef struct ICaptureGraphBuilder2Vtbl ICaptureGraphBuilder2Vtbl;
5848 struct ICaptureGraphBuilder2 {
5849     const ICaptureGraphBuilder2Vtbl* lpVtbl;
5850 };
5851 struct ICaptureGraphBuilder2Vtbl {
5852     ICOM_MSVTABLE_COMPAT_FIELDS
5853
5854     /*** IUnknown methods ***/
5855     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5856         ICaptureGraphBuilder2* This,
5857         REFIID riid,
5858         void** ppvObject);
5859
5860     ULONG (STDMETHODCALLTYPE *AddRef)(
5861         ICaptureGraphBuilder2* This);
5862
5863     ULONG (STDMETHODCALLTYPE *Release)(
5864         ICaptureGraphBuilder2* This);
5865
5866     /*** ICaptureGraphBuilder2 methods ***/
5867     HRESULT (STDMETHODCALLTYPE *SetFiltergraph)(
5868         ICaptureGraphBuilder2* This,
5869         IGraphBuilder* pfg);
5870
5871     HRESULT (STDMETHODCALLTYPE *GetFiltergraph)(
5872         ICaptureGraphBuilder2* This,
5873         IGraphBuilder** ppfg);
5874
5875     HRESULT (STDMETHODCALLTYPE *SetOutputFileName)(
5876         ICaptureGraphBuilder2* This,
5877         const GUID* pType,
5878         LPCOLESTR lpstrFile,
5879         IBaseFilter** ppf,
5880         IFileSinkFilter** ppSink);
5881
5882     HRESULT (STDMETHODCALLTYPE *FindInterface)(
5883         ICaptureGraphBuilder2* This,
5884         const GUID* pCategory,
5885         const GUID* pType,
5886         IBaseFilter* pf,
5887         REFIID riid,
5888         void** ppint);
5889
5890     HRESULT (STDMETHODCALLTYPE *RenderStream)(
5891         ICaptureGraphBuilder2* This,
5892         const GUID* pCategory,
5893         const GUID* pType,
5894         IUnknown* pSource,
5895         IBaseFilter* pfCompressor,
5896         IBaseFilter* pfRenderer);
5897
5898     HRESULT (STDMETHODCALLTYPE *ControlStream)(
5899         ICaptureGraphBuilder2* This,
5900         const GUID* pCategory,
5901         const GUID* pType,
5902         IBaseFilter* pFilter,
5903         REFERENCE_TIME* pstart,
5904         REFERENCE_TIME* pstop,
5905         WORD wStartCookie,
5906         WORD wStopCookie);
5907
5908     HRESULT (STDMETHODCALLTYPE *AllocCapFile)(
5909         ICaptureGraphBuilder2* This,
5910         LPCOLESTR lpstr,
5911         DWORDLONG dwlSize);
5912
5913     HRESULT (STDMETHODCALLTYPE *CopyCaptureFile)(
5914         ICaptureGraphBuilder2* This,
5915         LPOLESTR lpwstrOld,
5916         LPOLESTR lpwstrNew,
5917         int fAllowEscAbort,
5918         IAMCopyCaptureFileProgress* pCallback);
5919
5920     HRESULT (STDMETHODCALLTYPE *FindPin)(
5921         ICaptureGraphBuilder2* This,
5922         IUnknown* pSource,
5923         PIN_DIRECTION pindir,
5924         const GUID* pCategory,
5925         const GUID* pType,
5926         BOOL fUnconnected,
5927         int num,
5928         IPin** ppPin);
5929
5930 };
5931
5932 /*** IUnknown methods ***/
5933 #define ICaptureGraphBuilder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5934 #define ICaptureGraphBuilder2_AddRef(p) (p)->lpVtbl->AddRef(p)
5935 #define ICaptureGraphBuilder2_Release(p) (p)->lpVtbl->Release(p)
5936 /*** ICaptureGraphBuilder2 methods ***/
5937 #define ICaptureGraphBuilder2_SetFiltergraph(p,a) (p)->lpVtbl->SetFiltergraph(p,a)
5938 #define ICaptureGraphBuilder2_GetFiltergraph(p,a) (p)->lpVtbl->GetFiltergraph(p,a)
5939 #define ICaptureGraphBuilder2_SetOutputFileName(p,a,b,c,d) (p)->lpVtbl->SetOutputFileName(p,a,b,c,d)
5940 #define ICaptureGraphBuilder2_FindInterface(p,a,b,c,d,e) (p)->lpVtbl->FindInterface(p,a,b,c,d,e)
5941 #define ICaptureGraphBuilder2_RenderStream(p,a,b,c,d,e) (p)->lpVtbl->RenderStream(p,a,b,c,d,e)
5942 #define ICaptureGraphBuilder2_ControlStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->ControlStream(p,a,b,c,d,e,f,g)
5943 #define ICaptureGraphBuilder2_AllocCapFile(p,a,b) (p)->lpVtbl->AllocCapFile(p,a,b)
5944 #define ICaptureGraphBuilder2_CopyCaptureFile(p,a,b,c,d) (p)->lpVtbl->CopyCaptureFile(p,a,b,c,d)
5945 #define ICaptureGraphBuilder2_FindPin(p,a,b,c,d,e,f,g) (p)->lpVtbl->FindPin(p,a,b,c,d,e,f,g)
5946
5947 #endif
5948
5949 #define ICaptureGraphBuilder2_METHODS \
5950     ICOM_MSVTABLE_COMPAT_FIELDS \
5951     /*** IUnknown methods ***/ \
5952     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5953     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5954     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5955     /*** ICaptureGraphBuilder2 methods ***/ \
5956     STDMETHOD_(HRESULT,SetFiltergraph)(THIS_ IGraphBuilder* pfg) PURE; \
5957     STDMETHOD_(HRESULT,GetFiltergraph)(THIS_ IGraphBuilder** ppfg) PURE; \
5958     STDMETHOD_(HRESULT,SetOutputFileName)(THIS_ const GUID* pType, LPCOLESTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink) PURE; \
5959     STDMETHOD_(HRESULT,FindInterface)(THIS_ const GUID* pCategory, const GUID* pType, IBaseFilter* pf, REFIID riid, void** ppint) PURE; \
5960     STDMETHOD_(HRESULT,RenderStream)(THIS_ const GUID* pCategory, const GUID* pType, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) PURE; \
5961     STDMETHOD_(HRESULT,ControlStream)(THIS_ const GUID* pCategory, const GUID* pType, IBaseFilter* pFilter, REFERENCE_TIME* pstart, REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) PURE; \
5962     STDMETHOD_(HRESULT,AllocCapFile)(THIS_ LPCOLESTR lpstr, DWORDLONG dwlSize) PURE; \
5963     STDMETHOD_(HRESULT,CopyCaptureFile)(THIS_ LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) PURE; \
5964     STDMETHOD_(HRESULT,FindPin)(THIS_ IUnknown* pSource, PIN_DIRECTION pindir, const GUID* pCategory, const GUID* pType, BOOL fUnconnected, int num, IPin** ppPin) PURE;
5965
5966 HRESULT CALLBACK ICaptureGraphBuilder2_SetFiltergraph_Proxy(
5967     ICaptureGraphBuilder2* This,
5968     IGraphBuilder* pfg);
5969 void __RPC_STUB ICaptureGraphBuilder2_SetFiltergraph_Stub(
5970     struct IRpcStubBuffer* This,
5971     struct IRpcChannelBuffer* pRpcChannelBuffer,
5972     PRPC_MESSAGE pRpcMessage,
5973     DWORD* pdwStubPhase);
5974 HRESULT CALLBACK ICaptureGraphBuilder2_GetFiltergraph_Proxy(
5975     ICaptureGraphBuilder2* This,
5976     IGraphBuilder** ppfg);
5977 void __RPC_STUB ICaptureGraphBuilder2_GetFiltergraph_Stub(
5978     struct IRpcStubBuffer* This,
5979     struct IRpcChannelBuffer* pRpcChannelBuffer,
5980     PRPC_MESSAGE pRpcMessage,
5981     DWORD* pdwStubPhase);
5982 HRESULT CALLBACK ICaptureGraphBuilder2_SetOutputFileName_Proxy(
5983     ICaptureGraphBuilder2* This,
5984     const GUID* pType,
5985     LPCOLESTR lpstrFile,
5986     IBaseFilter** ppf,
5987     IFileSinkFilter** ppSink);
5988 void __RPC_STUB ICaptureGraphBuilder2_SetOutputFileName_Stub(
5989     struct IRpcStubBuffer* This,
5990     struct IRpcChannelBuffer* pRpcChannelBuffer,
5991     PRPC_MESSAGE pRpcMessage,
5992     DWORD* pdwStubPhase);
5993 HRESULT CALLBACK ICaptureGraphBuilder2_RemoteFindInterface_Proxy(
5994     ICaptureGraphBuilder2* This,
5995     const GUID* pCategory,
5996     const GUID* pType,
5997     IBaseFilter* pf,
5998     REFIID riid,
5999     IUnknown** ppint);
6000 void __RPC_STUB ICaptureGraphBuilder2_RemoteFindInterface_Stub(
6001     struct IRpcStubBuffer* This,
6002     struct IRpcChannelBuffer* pRpcChannelBuffer,
6003     PRPC_MESSAGE pRpcMessage,
6004     DWORD* pdwStubPhase);
6005 HRESULT CALLBACK ICaptureGraphBuilder2_FindInterface_Proxy(
6006     ICaptureGraphBuilder2* This,
6007     const GUID* pCategory,
6008     const GUID* pType,
6009     IBaseFilter* pf,
6010     REFIID riid,
6011     void** ppint);
6012 HRESULT __RPC_STUB ICaptureGraphBuilder2_FindInterface_Stub(
6013     ICaptureGraphBuilder2* This,
6014     const GUID* pCategory,
6015     const GUID* pType,
6016     IBaseFilter* pf,
6017     REFIID riid,
6018     IUnknown** ppint);
6019 HRESULT CALLBACK ICaptureGraphBuilder2_RenderStream_Proxy(
6020     ICaptureGraphBuilder2* This,
6021     const GUID* pCategory,
6022     const GUID* pType,
6023     IUnknown* pSource,
6024     IBaseFilter* pfCompressor,
6025     IBaseFilter* pfRenderer);
6026 void __RPC_STUB ICaptureGraphBuilder2_RenderStream_Stub(
6027     struct IRpcStubBuffer* This,
6028     struct IRpcChannelBuffer* pRpcChannelBuffer,
6029     PRPC_MESSAGE pRpcMessage,
6030     DWORD* pdwStubPhase);
6031 HRESULT CALLBACK ICaptureGraphBuilder2_ControlStream_Proxy(
6032     ICaptureGraphBuilder2* This,
6033     const GUID* pCategory,
6034     const GUID* pType,
6035     IBaseFilter* pFilter,
6036     REFERENCE_TIME* pstart,
6037     REFERENCE_TIME* pstop,
6038     WORD wStartCookie,
6039     WORD wStopCookie);
6040 void __RPC_STUB ICaptureGraphBuilder2_ControlStream_Stub(
6041     struct IRpcStubBuffer* This,
6042     struct IRpcChannelBuffer* pRpcChannelBuffer,
6043     PRPC_MESSAGE pRpcMessage,
6044     DWORD* pdwStubPhase);
6045 HRESULT CALLBACK ICaptureGraphBuilder2_AllocCapFile_Proxy(
6046     ICaptureGraphBuilder2* This,
6047     LPCOLESTR lpstr,
6048     DWORDLONG dwlSize);
6049 void __RPC_STUB ICaptureGraphBuilder2_AllocCapFile_Stub(
6050     struct IRpcStubBuffer* This,
6051     struct IRpcChannelBuffer* pRpcChannelBuffer,
6052     PRPC_MESSAGE pRpcMessage,
6053     DWORD* pdwStubPhase);
6054 HRESULT CALLBACK ICaptureGraphBuilder2_CopyCaptureFile_Proxy(
6055     ICaptureGraphBuilder2* This,
6056     LPOLESTR lpwstrOld,
6057     LPOLESTR lpwstrNew,
6058     int fAllowEscAbort,
6059     IAMCopyCaptureFileProgress* pCallback);
6060 void __RPC_STUB ICaptureGraphBuilder2_CopyCaptureFile_Stub(
6061     struct IRpcStubBuffer* This,
6062     struct IRpcChannelBuffer* pRpcChannelBuffer,
6063     PRPC_MESSAGE pRpcMessage,
6064     DWORD* pdwStubPhase);
6065 HRESULT CALLBACK ICaptureGraphBuilder2_FindPin_Proxy(
6066     ICaptureGraphBuilder2* This,
6067     IUnknown* pSource,
6068     PIN_DIRECTION pindir,
6069     const GUID* pCategory,
6070     const GUID* pType,
6071     BOOL fUnconnected,
6072     int num,
6073     IPin** ppPin);
6074 void __RPC_STUB ICaptureGraphBuilder2_FindPin_Stub(
6075     struct IRpcStubBuffer* This,
6076     struct IRpcChannelBuffer* pRpcChannelBuffer,
6077     PRPC_MESSAGE pRpcMessage,
6078     DWORD* pdwStubPhase);
6079
6080 #endif  /* __ICaptureGraphBuilder2_INTERFACE_DEFINED__ */
6081
6082 enum _AM_RENSDEREXFLAGS {
6083     AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x1
6084 };
6085
6086 #ifndef __IFilterGraph2_FWD_DEFINED__
6087 #define __IFilterGraph2_FWD_DEFINED__
6088 typedef struct IFilterGraph2 IFilterGraph2;
6089 #endif
6090
6091 /*****************************************************************************
6092  * IFilterGraph2 interface
6093  */
6094 #ifndef __IFilterGraph2_INTERFACE_DEFINED__
6095 #define __IFilterGraph2_INTERFACE_DEFINED__
6096
6097 DEFINE_GUID(IID_IFilterGraph2, 0x36b73882, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60);
6098 #if defined(__cplusplus) && !defined(CINTERFACE)
6099 struct IFilterGraph2 : public IGraphBuilder
6100 {
6101     virtual HRESULT STDMETHODCALLTYPE AddSourceFilterForMoniker(
6102         IMoniker* pMoniker,
6103         IBindCtx* pCtx,
6104         LPCWSTR lpcwstrFilterName,
6105         IBaseFilter** ppFilter) = 0;
6106
6107     virtual HRESULT STDMETHODCALLTYPE ReconnectEx(
6108         IPin* ppin,
6109         const AM_MEDIA_TYPE* pmt) = 0;
6110
6111     virtual HRESULT STDMETHODCALLTYPE RenderEx(
6112         IPin* pPinOut,
6113         DWORD dwFlags,
6114         DWORD* pvContext) = 0;
6115
6116 };
6117 #else
6118 typedef struct IFilterGraph2Vtbl IFilterGraph2Vtbl;
6119 struct IFilterGraph2 {
6120     const IFilterGraph2Vtbl* lpVtbl;
6121 };
6122 struct IFilterGraph2Vtbl {
6123     ICOM_MSVTABLE_COMPAT_FIELDS
6124
6125     /*** IUnknown methods ***/
6126     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6127         IFilterGraph2* This,
6128         REFIID riid,
6129         void** ppvObject);
6130
6131     ULONG (STDMETHODCALLTYPE *AddRef)(
6132         IFilterGraph2* This);
6133
6134     ULONG (STDMETHODCALLTYPE *Release)(
6135         IFilterGraph2* This);
6136
6137     /*** IFilterGraph methods ***/
6138     HRESULT (STDMETHODCALLTYPE *AddFilter)(
6139         IFilterGraph2* This,
6140         IBaseFilter* pFilter,
6141         LPCWSTR pName);
6142
6143     HRESULT (STDMETHODCALLTYPE *RemoveFilter)(
6144         IFilterGraph2* This,
6145         IBaseFilter* pFilter);
6146
6147     HRESULT (STDMETHODCALLTYPE *EnumFilters)(
6148         IFilterGraph2* This,
6149         IEnumFilters** ppEnum);
6150
6151     HRESULT (STDMETHODCALLTYPE *FindFilterByName)(
6152         IFilterGraph2* This,
6153         LPCWSTR pName,
6154         IBaseFilter** ppFilter);
6155
6156     HRESULT (STDMETHODCALLTYPE *ConnectDirect)(
6157         IFilterGraph2* This,
6158         IPin* ppinOut,
6159         IPin* ppinIn,
6160         const AM_MEDIA_TYPE* pmt);
6161
6162     HRESULT (STDMETHODCALLTYPE *Reconnect)(
6163         IFilterGraph2* This,
6164         IPin* ppin);
6165
6166     HRESULT (STDMETHODCALLTYPE *Disconnect)(
6167         IFilterGraph2* This,
6168         IPin* ppin);
6169
6170     HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)(
6171         IFilterGraph2* This);
6172
6173     /*** IGraphBuilder methods ***/
6174     HRESULT (STDMETHODCALLTYPE *Connect)(
6175         IFilterGraph2* This,
6176         IPin* ppinOut,
6177         IPin* ppinIn);
6178
6179     HRESULT (STDMETHODCALLTYPE *Render)(
6180         IFilterGraph2* This,
6181         IPin* ppinOut);
6182
6183     HRESULT (STDMETHODCALLTYPE *RenderFile)(
6184         IFilterGraph2* This,
6185         LPCWSTR lpcwstrFile,
6186         LPCWSTR lpcwstrPlayList);
6187
6188     HRESULT (STDMETHODCALLTYPE *AddSourceFilter)(
6189         IFilterGraph2* This,
6190         LPCWSTR lpcwstrFileName,
6191         LPCWSTR lpcwstrFilterName,
6192         IBaseFilter** ppFilter);
6193
6194     HRESULT (STDMETHODCALLTYPE *SetLogFile)(
6195         IFilterGraph2* This,
6196         DWORD_PTR hFile);
6197
6198     HRESULT (STDMETHODCALLTYPE *Abort)(
6199         IFilterGraph2* This);
6200
6201     HRESULT (STDMETHODCALLTYPE *ShouldOperationContinue)(
6202         IFilterGraph2* This);
6203
6204     /*** IFilterGraph2 methods ***/
6205     HRESULT (STDMETHODCALLTYPE *AddSourceFilterForMoniker)(
6206         IFilterGraph2* This,
6207         IMoniker* pMoniker,
6208         IBindCtx* pCtx,
6209         LPCWSTR lpcwstrFilterName,
6210         IBaseFilter** ppFilter);
6211
6212     HRESULT (STDMETHODCALLTYPE *ReconnectEx)(
6213         IFilterGraph2* This,
6214         IPin* ppin,
6215         const AM_MEDIA_TYPE* pmt);
6216
6217     HRESULT (STDMETHODCALLTYPE *RenderEx)(
6218         IFilterGraph2* This,
6219         IPin* pPinOut,
6220         DWORD dwFlags,
6221         DWORD* pvContext);
6222
6223 };
6224
6225 /*** IUnknown methods ***/
6226 #define IFilterGraph2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6227 #define IFilterGraph2_AddRef(p) (p)->lpVtbl->AddRef(p)
6228 #define IFilterGraph2_Release(p) (p)->lpVtbl->Release(p)
6229 /*** IFilterGraph methods ***/
6230 #define IFilterGraph2_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
6231 #define IFilterGraph2_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
6232 #define IFilterGraph2_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a)
6233 #define IFilterGraph2_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
6234 #define IFilterGraph2_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
6235 #define IFilterGraph2_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
6236 #define IFilterGraph2_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
6237 #define IFilterGraph2_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
6238 /*** IGraphBuilder methods ***/
6239 #define IFilterGraph2_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
6240 #define IFilterGraph2_Render(p,a) (p)->lpVtbl->Render(p,a)
6241 #define IFilterGraph2_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b)
6242 #define IFilterGraph2_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c)
6243 #define IFilterGraph2_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a)
6244 #define IFilterGraph2_Abort(p) (p)->lpVtbl->Abort(p)
6245 #define IFilterGraph2_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p)
6246 /*** IFilterGraph2 methods ***/
6247 #define IFilterGraph2_AddSourceFilterForMoniker(p,a,b,c,d) (p)->lpVtbl->AddSourceFilterForMoniker(p,a,b,c,d)
6248 #define IFilterGraph2_ReconnectEx(p,a,b) (p)->lpVtbl->ReconnectEx(p,a,b)
6249 #define IFilterGraph2_RenderEx(p,a,b,c) (p)->lpVtbl->RenderEx(p,a,b,c)
6250
6251 #endif
6252
6253 #define IFilterGraph2_METHODS \
6254     ICOM_MSVTABLE_COMPAT_FIELDS \
6255     /*** IUnknown methods ***/ \
6256     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6257     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6258     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6259     /*** IFilterGraph methods ***/ \
6260     STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \
6261     STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \
6262     STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \
6263     STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \
6264     STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \
6265     STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \
6266     STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \
6267     STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; \
6268     /*** IGraphBuilder methods ***/ \
6269     STDMETHOD_(HRESULT,Connect)(THIS_ IPin* ppinOut, IPin* ppinIn) PURE; \
6270     STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut) PURE; \
6271     STDMETHOD_(HRESULT,RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \
6272     STDMETHOD_(HRESULT,AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \
6273     STDMETHOD_(HRESULT,SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \
6274     STDMETHOD_(HRESULT,Abort)(THIS) PURE; \
6275     STDMETHOD_(HRESULT,ShouldOperationContinue)(THIS) PURE; \
6276     /*** IFilterGraph2 methods ***/ \
6277     STDMETHOD_(HRESULT,AddSourceFilterForMoniker)(THIS_ IMoniker* pMoniker, IBindCtx* pCtx, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \
6278     STDMETHOD_(HRESULT,ReconnectEx)(THIS_ IPin* ppin, const AM_MEDIA_TYPE* pmt) PURE; \
6279     STDMETHOD_(HRESULT,RenderEx)(THIS_ IPin* pPinOut, DWORD dwFlags, DWORD* pvContext) PURE;
6280
6281 HRESULT CALLBACK IFilterGraph2_AddSourceFilterForMoniker_Proxy(
6282     IFilterGraph2* This,
6283     IMoniker* pMoniker,
6284     IBindCtx* pCtx,
6285     LPCWSTR lpcwstrFilterName,
6286     IBaseFilter** ppFilter);
6287 void __RPC_STUB IFilterGraph2_AddSourceFilterForMoniker_Stub(
6288     struct IRpcStubBuffer* This,
6289     struct IRpcChannelBuffer* pRpcChannelBuffer,
6290     PRPC_MESSAGE pRpcMessage,
6291     DWORD* pdwStubPhase);
6292 HRESULT CALLBACK IFilterGraph2_ReconnectEx_Proxy(
6293     IFilterGraph2* This,
6294     IPin* ppin,
6295     const AM_MEDIA_TYPE* pmt);
6296 void __RPC_STUB IFilterGraph2_ReconnectEx_Stub(
6297     struct IRpcStubBuffer* This,
6298     struct IRpcChannelBuffer* pRpcChannelBuffer,
6299     PRPC_MESSAGE pRpcMessage,
6300     DWORD* pdwStubPhase);
6301 HRESULT CALLBACK IFilterGraph2_RenderEx_Proxy(
6302     IFilterGraph2* This,
6303     IPin* pPinOut,
6304     DWORD dwFlags,
6305     DWORD* pvContext);
6306 void __RPC_STUB IFilterGraph2_RenderEx_Stub(
6307     struct IRpcStubBuffer* This,
6308     struct IRpcChannelBuffer* pRpcChannelBuffer,
6309     PRPC_MESSAGE pRpcMessage,
6310     DWORD* pdwStubPhase);
6311
6312 #endif  /* __IFilterGraph2_INTERFACE_DEFINED__ */
6313
6314 #ifndef __IStreamBuilder_FWD_DEFINED__
6315 #define __IStreamBuilder_FWD_DEFINED__
6316 typedef struct IStreamBuilder IStreamBuilder;
6317 #endif
6318
6319 /*****************************************************************************
6320  * IStreamBuilder interface
6321  */
6322 #ifndef __IStreamBuilder_INTERFACE_DEFINED__
6323 #define __IStreamBuilder_INTERFACE_DEFINED__
6324
6325 DEFINE_GUID(IID_IStreamBuilder, 0x56a868bf, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
6326 #if defined(__cplusplus) && !defined(CINTERFACE)
6327 struct IStreamBuilder : public IUnknown
6328 {
6329     virtual HRESULT STDMETHODCALLTYPE Render(
6330         IPin* ppinOut,
6331         IGraphBuilder* pGraph) = 0;
6332
6333     virtual HRESULT STDMETHODCALLTYPE Backout(
6334         IPin* ppinOut,
6335         IGraphBuilder* pGraph) = 0;
6336
6337 };
6338 #else
6339 typedef struct IStreamBuilderVtbl IStreamBuilderVtbl;
6340 struct IStreamBuilder {
6341     const IStreamBuilderVtbl* lpVtbl;
6342 };
6343 struct IStreamBuilderVtbl {
6344     ICOM_MSVTABLE_COMPAT_FIELDS
6345
6346     /*** IUnknown methods ***/
6347     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6348         IStreamBuilder* This,
6349         REFIID riid,
6350         void** ppvObject);
6351
6352     ULONG (STDMETHODCALLTYPE *AddRef)(
6353         IStreamBuilder* This);
6354
6355     ULONG (STDMETHODCALLTYPE *Release)(
6356         IStreamBuilder* This);
6357
6358     /*** IStreamBuilder methods ***/
6359     HRESULT (STDMETHODCALLTYPE *Render)(
6360         IStreamBuilder* This,
6361         IPin* ppinOut,
6362         IGraphBuilder* pGraph);
6363
6364     HRESULT (STDMETHODCALLTYPE *Backout)(
6365         IStreamBuilder* This,
6366         IPin* ppinOut,
6367         IGraphBuilder* pGraph);
6368
6369 };
6370
6371 /*** IUnknown methods ***/
6372 #define IStreamBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6373 #define IStreamBuilder_AddRef(p) (p)->lpVtbl->AddRef(p)
6374 #define IStreamBuilder_Release(p) (p)->lpVtbl->Release(p)
6375 /*** IStreamBuilder methods ***/
6376 #define IStreamBuilder_Render(p,a,b) (p)->lpVtbl->Render(p,a,b)
6377 #define IStreamBuilder_Backout(p,a,b) (p)->lpVtbl->Backout(p,a,b)
6378
6379 #endif
6380
6381 #define IStreamBuilder_METHODS \
6382     ICOM_MSVTABLE_COMPAT_FIELDS \
6383     /*** IUnknown methods ***/ \
6384     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6385     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6386     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6387     /*** IStreamBuilder methods ***/ \
6388     STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut, IGraphBuilder* pGraph) PURE; \
6389     STDMETHOD_(HRESULT,Backout)(THIS_ IPin* ppinOut, IGraphBuilder* pGraph) PURE;
6390
6391 HRESULT CALLBACK IStreamBuilder_Render_Proxy(
6392     IStreamBuilder* This,
6393     IPin* ppinOut,
6394     IGraphBuilder* pGraph);
6395 void __RPC_STUB IStreamBuilder_Render_Stub(
6396     struct IRpcStubBuffer* This,
6397     struct IRpcChannelBuffer* pRpcChannelBuffer,
6398     PRPC_MESSAGE pRpcMessage,
6399     DWORD* pdwStubPhase);
6400 HRESULT CALLBACK IStreamBuilder_Backout_Proxy(
6401     IStreamBuilder* This,
6402     IPin* ppinOut,
6403     IGraphBuilder* pGraph);
6404 void __RPC_STUB IStreamBuilder_Backout_Stub(
6405     struct IRpcStubBuffer* This,
6406     struct IRpcChannelBuffer* pRpcChannelBuffer,
6407     PRPC_MESSAGE pRpcMessage,
6408     DWORD* pdwStubPhase);
6409
6410 #endif  /* __IStreamBuilder_INTERFACE_DEFINED__ */
6411
6412 #ifndef __IAsyncReader_FWD_DEFINED__
6413 #define __IAsyncReader_FWD_DEFINED__
6414 typedef struct IAsyncReader IAsyncReader;
6415 #endif
6416
6417 /*****************************************************************************
6418  * IAsyncReader interface
6419  */
6420 #ifndef __IAsyncReader_INTERFACE_DEFINED__
6421 #define __IAsyncReader_INTERFACE_DEFINED__
6422
6423 DEFINE_GUID(IID_IAsyncReader, 0x56a868aa, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
6424 #if defined(__cplusplus) && !defined(CINTERFACE)
6425 struct IAsyncReader : public IUnknown
6426 {
6427     virtual HRESULT STDMETHODCALLTYPE RequestAllocator(
6428         IMemAllocator* pPreferred,
6429         ALLOCATOR_PROPERTIES* pProps,
6430         IMemAllocator** ppActual) = 0;
6431
6432     virtual HRESULT STDMETHODCALLTYPE Request(
6433         IMediaSample* pSample,
6434         DWORD_PTR dwUser) = 0;
6435
6436     virtual HRESULT STDMETHODCALLTYPE WaitForNext(
6437         DWORD dwTimeout,
6438         IMediaSample** ppSample,
6439         DWORD_PTR* pdwUser) = 0;
6440
6441     virtual HRESULT STDMETHODCALLTYPE SyncReadAligned(
6442         IMediaSample* pSample) = 0;
6443
6444     virtual HRESULT STDMETHODCALLTYPE SyncRead(
6445         LONGLONG llPosition,
6446         LONG lLength,
6447         BYTE* pBuffer) = 0;
6448
6449     virtual HRESULT STDMETHODCALLTYPE Length(
6450         LONGLONG* pTotal,
6451         LONGLONG* pAvailable) = 0;
6452
6453     virtual HRESULT STDMETHODCALLTYPE BeginFlush(
6454         ) = 0;
6455
6456     virtual HRESULT STDMETHODCALLTYPE EndFlush(
6457         ) = 0;
6458
6459 };
6460 #else
6461 typedef struct IAsyncReaderVtbl IAsyncReaderVtbl;
6462 struct IAsyncReader {
6463     const IAsyncReaderVtbl* lpVtbl;
6464 };
6465 struct IAsyncReaderVtbl {
6466     ICOM_MSVTABLE_COMPAT_FIELDS
6467
6468     /*** IUnknown methods ***/
6469     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6470         IAsyncReader* This,
6471         REFIID riid,
6472         void** ppvObject);
6473
6474     ULONG (STDMETHODCALLTYPE *AddRef)(
6475         IAsyncReader* This);
6476
6477     ULONG (STDMETHODCALLTYPE *Release)(
6478         IAsyncReader* This);
6479
6480     /*** IAsyncReader methods ***/
6481     HRESULT (STDMETHODCALLTYPE *RequestAllocator)(
6482         IAsyncReader* This,
6483         IMemAllocator* pPreferred,
6484         ALLOCATOR_PROPERTIES* pProps,
6485         IMemAllocator** ppActual);
6486
6487     HRESULT (STDMETHODCALLTYPE *Request)(
6488         IAsyncReader* This,
6489         IMediaSample* pSample,
6490         DWORD_PTR dwUser);
6491
6492     HRESULT (STDMETHODCALLTYPE *WaitForNext)(
6493         IAsyncReader* This,
6494         DWORD dwTimeout,
6495         IMediaSample** ppSample,
6496         DWORD_PTR* pdwUser);
6497
6498     HRESULT (STDMETHODCALLTYPE *SyncReadAligned)(
6499         IAsyncReader* This,
6500         IMediaSample* pSample);
6501
6502     HRESULT (STDMETHODCALLTYPE *SyncRead)(
6503         IAsyncReader* This,
6504         LONGLONG llPosition,
6505         LONG lLength,
6506         BYTE* pBuffer);
6507
6508     HRESULT (STDMETHODCALLTYPE *Length)(
6509         IAsyncReader* This,
6510         LONGLONG* pTotal,
6511         LONGLONG* pAvailable);
6512
6513     HRESULT (STDMETHODCALLTYPE *BeginFlush)(
6514         IAsyncReader* This);
6515
6516     HRESULT (STDMETHODCALLTYPE *EndFlush)(
6517         IAsyncReader* This);
6518
6519 };
6520
6521 /*** IUnknown methods ***/
6522 #define IAsyncReader_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6523 #define IAsyncReader_AddRef(p) (p)->lpVtbl->AddRef(p)
6524 #define IAsyncReader_Release(p) (p)->lpVtbl->Release(p)
6525 /*** IAsyncReader methods ***/
6526 #define IAsyncReader_RequestAllocator(p,a,b,c) (p)->lpVtbl->RequestAllocator(p,a,b,c)
6527 #define IAsyncReader_Request(p,a,b) (p)->lpVtbl->Request(p,a,b)
6528 #define IAsyncReader_WaitForNext(p,a,b,c) (p)->lpVtbl->WaitForNext(p,a,b,c)
6529 #define IAsyncReader_SyncReadAligned(p,a) (p)->lpVtbl->SyncReadAligned(p,a)
6530 #define IAsyncReader_SyncRead(p,a,b,c) (p)->lpVtbl->SyncRead(p,a,b,c)
6531 #define IAsyncReader_Length(p,a,b) (p)->lpVtbl->Length(p,a,b)
6532 #define IAsyncReader_BeginFlush(p) (p)->lpVtbl->BeginFlush(p)
6533 #define IAsyncReader_EndFlush(p) (p)->lpVtbl->EndFlush(p)
6534
6535 #endif
6536
6537 #define IAsyncReader_METHODS \
6538     ICOM_MSVTABLE_COMPAT_FIELDS \
6539     /*** IUnknown methods ***/ \
6540     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6541     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6542     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6543     /*** IAsyncReader methods ***/ \
6544     STDMETHOD_(HRESULT,RequestAllocator)(THIS_ IMemAllocator* pPreferred, ALLOCATOR_PROPERTIES* pProps, IMemAllocator** ppActual) PURE; \
6545     STDMETHOD_(HRESULT,Request)(THIS_ IMediaSample* pSample, DWORD_PTR dwUser) PURE; \
6546     STDMETHOD_(HRESULT,WaitForNext)(THIS_ DWORD dwTimeout, IMediaSample** ppSample, DWORD_PTR* pdwUser) PURE; \
6547     STDMETHOD_(HRESULT,SyncReadAligned)(THIS_ IMediaSample* pSample) PURE; \
6548     STDMETHOD_(HRESULT,SyncRead)(THIS_ LONGLONG llPosition, LONG lLength, BYTE* pBuffer) PURE; \
6549     STDMETHOD_(HRESULT,Length)(THIS_ LONGLONG* pTotal, LONGLONG* pAvailable) PURE; \
6550     STDMETHOD_(HRESULT,BeginFlush)(THIS) PURE; \
6551     STDMETHOD_(HRESULT,EndFlush)(THIS) PURE;
6552
6553 HRESULT CALLBACK IAsyncReader_RequestAllocator_Proxy(
6554     IAsyncReader* This,
6555     IMemAllocator* pPreferred,
6556     ALLOCATOR_PROPERTIES* pProps,
6557     IMemAllocator** ppActual);
6558 void __RPC_STUB IAsyncReader_RequestAllocator_Stub(
6559     struct IRpcStubBuffer* This,
6560     struct IRpcChannelBuffer* pRpcChannelBuffer,
6561     PRPC_MESSAGE pRpcMessage,
6562     DWORD* pdwStubPhase);
6563 HRESULT CALLBACK IAsyncReader_Request_Proxy(
6564     IAsyncReader* This,
6565     IMediaSample* pSample,
6566     DWORD_PTR dwUser);
6567 void __RPC_STUB IAsyncReader_Request_Stub(
6568     struct IRpcStubBuffer* This,
6569     struct IRpcChannelBuffer* pRpcChannelBuffer,
6570     PRPC_MESSAGE pRpcMessage,
6571     DWORD* pdwStubPhase);
6572 HRESULT CALLBACK IAsyncReader_WaitForNext_Proxy(
6573     IAsyncReader* This,
6574     DWORD dwTimeout,
6575     IMediaSample** ppSample,
6576     DWORD_PTR* pdwUser);
6577 void __RPC_STUB IAsyncReader_WaitForNext_Stub(
6578     struct IRpcStubBuffer* This,
6579     struct IRpcChannelBuffer* pRpcChannelBuffer,
6580     PRPC_MESSAGE pRpcMessage,
6581     DWORD* pdwStubPhase);
6582 HRESULT CALLBACK IAsyncReader_SyncReadAligned_Proxy(
6583     IAsyncReader* This,
6584     IMediaSample* pSample);
6585 void __RPC_STUB IAsyncReader_SyncReadAligned_Stub(
6586     struct IRpcStubBuffer* This,
6587     struct IRpcChannelBuffer* pRpcChannelBuffer,
6588     PRPC_MESSAGE pRpcMessage,
6589     DWORD* pdwStubPhase);
6590 HRESULT CALLBACK IAsyncReader_SyncRead_Proxy(
6591     IAsyncReader* This,
6592     LONGLONG llPosition,
6593     LONG lLength,
6594     BYTE* pBuffer);
6595 void __RPC_STUB IAsyncReader_SyncRead_Stub(
6596     struct IRpcStubBuffer* This,
6597     struct IRpcChannelBuffer* pRpcChannelBuffer,
6598     PRPC_MESSAGE pRpcMessage,
6599     DWORD* pdwStubPhase);
6600 HRESULT CALLBACK IAsyncReader_Length_Proxy(
6601     IAsyncReader* This,
6602     LONGLONG* pTotal,
6603     LONGLONG* pAvailable);
6604 void __RPC_STUB IAsyncReader_Length_Stub(
6605     struct IRpcStubBuffer* This,
6606     struct IRpcChannelBuffer* pRpcChannelBuffer,
6607     PRPC_MESSAGE pRpcMessage,
6608     DWORD* pdwStubPhase);
6609 HRESULT CALLBACK IAsyncReader_BeginFlush_Proxy(
6610     IAsyncReader* This);
6611 void __RPC_STUB IAsyncReader_BeginFlush_Stub(
6612     struct IRpcStubBuffer* This,
6613     struct IRpcChannelBuffer* pRpcChannelBuffer,
6614     PRPC_MESSAGE pRpcMessage,
6615     DWORD* pdwStubPhase);
6616 HRESULT CALLBACK IAsyncReader_EndFlush_Proxy(
6617     IAsyncReader* This);
6618 void __RPC_STUB IAsyncReader_EndFlush_Stub(
6619     struct IRpcStubBuffer* This,
6620     struct IRpcChannelBuffer* pRpcChannelBuffer,
6621     PRPC_MESSAGE pRpcMessage,
6622     DWORD* pdwStubPhase);
6623
6624 #endif  /* __IAsyncReader_INTERFACE_DEFINED__ */
6625
6626 #ifndef __IGraphVersion_FWD_DEFINED__
6627 #define __IGraphVersion_FWD_DEFINED__
6628 typedef struct IGraphVersion IGraphVersion;
6629 #endif
6630
6631 /*****************************************************************************
6632  * IGraphVersion interface
6633  */
6634 #ifndef __IGraphVersion_INTERFACE_DEFINED__
6635 #define __IGraphVersion_INTERFACE_DEFINED__
6636
6637 DEFINE_GUID(IID_IGraphVersion, 0x56a868ab, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
6638 #if defined(__cplusplus) && !defined(CINTERFACE)
6639 struct IGraphVersion : public IUnknown
6640 {
6641     virtual HRESULT STDMETHODCALLTYPE QueryVersion(
6642         LONG* pVersion) = 0;
6643
6644 };
6645 #else
6646 typedef struct IGraphVersionVtbl IGraphVersionVtbl;
6647 struct IGraphVersion {
6648     const IGraphVersionVtbl* lpVtbl;
6649 };
6650 struct IGraphVersionVtbl {
6651     ICOM_MSVTABLE_COMPAT_FIELDS
6652
6653     /*** IUnknown methods ***/
6654     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6655         IGraphVersion* This,
6656         REFIID riid,
6657         void** ppvObject);
6658
6659     ULONG (STDMETHODCALLTYPE *AddRef)(
6660         IGraphVersion* This);
6661
6662     ULONG (STDMETHODCALLTYPE *Release)(
6663         IGraphVersion* This);
6664
6665     /*** IGraphVersion methods ***/
6666     HRESULT (STDMETHODCALLTYPE *QueryVersion)(
6667         IGraphVersion* This,
6668         LONG* pVersion);
6669
6670 };
6671
6672 /*** IUnknown methods ***/
6673 #define IGraphVersion_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6674 #define IGraphVersion_AddRef(p) (p)->lpVtbl->AddRef(p)
6675 #define IGraphVersion_Release(p) (p)->lpVtbl->Release(p)
6676 /*** IGraphVersion methods ***/
6677 #define IGraphVersion_QueryVersion(p,a) (p)->lpVtbl->QueryVersion(p,a)
6678
6679 #endif
6680
6681 #define IGraphVersion_METHODS \
6682     ICOM_MSVTABLE_COMPAT_FIELDS \
6683     /*** IUnknown methods ***/ \
6684     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6685     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6686     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6687     /*** IGraphVersion methods ***/ \
6688     STDMETHOD_(HRESULT,QueryVersion)(THIS_ LONG* pVersion) PURE;
6689
6690 HRESULT CALLBACK IGraphVersion_QueryVersion_Proxy(
6691     IGraphVersion* This,
6692     LONG* pVersion);
6693 void __RPC_STUB IGraphVersion_QueryVersion_Stub(
6694     struct IRpcStubBuffer* This,
6695     struct IRpcChannelBuffer* pRpcChannelBuffer,
6696     PRPC_MESSAGE pRpcMessage,
6697     DWORD* pdwStubPhase);
6698
6699 #endif  /* __IGraphVersion_INTERFACE_DEFINED__ */
6700
6701 #ifndef __IResourceConsumer_FWD_DEFINED__
6702 #define __IResourceConsumer_FWD_DEFINED__
6703 typedef struct IResourceConsumer IResourceConsumer;
6704 #endif
6705
6706 /*****************************************************************************
6707  * IResourceConsumer interface
6708  */
6709 #ifndef __IResourceConsumer_INTERFACE_DEFINED__
6710 #define __IResourceConsumer_INTERFACE_DEFINED__
6711
6712 DEFINE_GUID(IID_IResourceConsumer, 0x56a868ad, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
6713 #if defined(__cplusplus) && !defined(CINTERFACE)
6714 struct IResourceConsumer : public IUnknown
6715 {
6716     virtual HRESULT STDMETHODCALLTYPE AcquireResource(
6717         LONG idResource) = 0;
6718
6719     virtual HRESULT STDMETHODCALLTYPE ReleaseResource(
6720         LONG idResource) = 0;
6721
6722 };
6723 #else
6724 typedef struct IResourceConsumerVtbl IResourceConsumerVtbl;
6725 struct IResourceConsumer {
6726     const IResourceConsumerVtbl* lpVtbl;
6727 };
6728 struct IResourceConsumerVtbl {
6729     ICOM_MSVTABLE_COMPAT_FIELDS
6730
6731     /*** IUnknown methods ***/
6732     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6733         IResourceConsumer* This,
6734         REFIID riid,
6735         void** ppvObject);
6736
6737     ULONG (STDMETHODCALLTYPE *AddRef)(
6738         IResourceConsumer* This);
6739
6740     ULONG (STDMETHODCALLTYPE *Release)(
6741         IResourceConsumer* This);
6742
6743     /*** IResourceConsumer methods ***/
6744     HRESULT (STDMETHODCALLTYPE *AcquireResource)(
6745         IResourceConsumer* This,
6746         LONG idResource);
6747
6748     HRESULT (STDMETHODCALLTYPE *ReleaseResource)(
6749         IResourceConsumer* This,
6750         LONG idResource);
6751
6752 };
6753
6754 /*** IUnknown methods ***/
6755 #define IResourceConsumer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6756 #define IResourceConsumer_AddRef(p) (p)->lpVtbl->AddRef(p)
6757 #define IResourceConsumer_Release(p) (p)->lpVtbl->Release(p)
6758 /*** IResourceConsumer methods ***/
6759 #define IResourceConsumer_AcquireResource(p,a) (p)->lpVtbl->AcquireResource(p,a)
6760 #define IResourceConsumer_ReleaseResource(p,a) (p)->lpVtbl->ReleaseResource(p,a)
6761
6762 #endif
6763
6764 #define IResourceConsumer_METHODS \
6765     ICOM_MSVTABLE_COMPAT_FIELDS \
6766     /*** IUnknown methods ***/ \
6767     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6768     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6769     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6770     /*** IResourceConsumer methods ***/ \
6771     STDMETHOD_(HRESULT,AcquireResource)(THIS_ LONG idResource) PURE; \
6772     STDMETHOD_(HRESULT,ReleaseResource)(THIS_ LONG idResource) PURE;
6773
6774 HRESULT CALLBACK IResourceConsumer_AcquireResource_Proxy(
6775     IResourceConsumer* This,
6776     LONG idResource);
6777 void __RPC_STUB IResourceConsumer_AcquireResource_Stub(
6778     struct IRpcStubBuffer* This,
6779     struct IRpcChannelBuffer* pRpcChannelBuffer,
6780     PRPC_MESSAGE pRpcMessage,
6781     DWORD* pdwStubPhase);
6782 HRESULT CALLBACK IResourceConsumer_ReleaseResource_Proxy(
6783     IResourceConsumer* This,
6784     LONG idResource);
6785 void __RPC_STUB IResourceConsumer_ReleaseResource_Stub(
6786     struct IRpcStubBuffer* This,
6787     struct IRpcChannelBuffer* pRpcChannelBuffer,
6788     PRPC_MESSAGE pRpcMessage,
6789     DWORD* pdwStubPhase);
6790
6791 #endif  /* __IResourceConsumer_INTERFACE_DEFINED__ */
6792
6793 #ifndef __IResourceManager_FWD_DEFINED__
6794 #define __IResourceManager_FWD_DEFINED__
6795 typedef struct IResourceManager IResourceManager;
6796 #endif
6797
6798 /*****************************************************************************
6799  * IResourceManager interface
6800  */
6801 #ifndef __IResourceManager_INTERFACE_DEFINED__
6802 #define __IResourceManager_INTERFACE_DEFINED__
6803
6804 DEFINE_GUID(IID_IResourceManager, 0x56a868ac, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
6805 #if defined(__cplusplus) && !defined(CINTERFACE)
6806 struct IResourceManager : public IUnknown
6807 {
6808     virtual HRESULT STDMETHODCALLTYPE Register(
6809         LPCWSTR pName,
6810         LONG cResource,
6811         LONG* plToken) = 0;
6812
6813     virtual HRESULT STDMETHODCALLTYPE RegisterGroup(
6814         LPCWSTR pName,
6815         LONG cResource,
6816         LONG* palTokens,
6817         LONG* plToken) = 0;
6818
6819     virtual HRESULT STDMETHODCALLTYPE RequestResource(
6820         LONG idResource,
6821         IUnknown* pFocusObject,
6822         IResourceConsumer* pConsumer) = 0;
6823
6824     virtual HRESULT STDMETHODCALLTYPE NotifyAcquire(
6825         LONG idResource,
6826         IResourceConsumer* pConsumer,
6827         HRESULT hr) = 0;
6828
6829     virtual HRESULT STDMETHODCALLTYPE NotifyRelease(
6830         LONG idResource,
6831         IResourceConsumer* pConsumer,
6832         BOOL bStillWant) = 0;
6833
6834     virtual HRESULT STDMETHODCALLTYPE CancelRequest(
6835         LONG idResource,
6836         IResourceConsumer* pConsumer) = 0;
6837
6838     virtual HRESULT STDMETHODCALLTYPE SetFocus(
6839         IUnknown* pFocusObject) = 0;
6840
6841     virtual HRESULT STDMETHODCALLTYPE ReleaseFocus(
6842         IUnknown* pFocusObject) = 0;
6843
6844 };
6845 #else
6846 typedef struct IResourceManagerVtbl IResourceManagerVtbl;
6847 struct IResourceManager {
6848     const IResourceManagerVtbl* lpVtbl;
6849 };
6850 struct IResourceManagerVtbl {
6851     ICOM_MSVTABLE_COMPAT_FIELDS
6852
6853     /*** IUnknown methods ***/
6854     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6855         IResourceManager* This,
6856         REFIID riid,
6857         void** ppvObject);
6858
6859     ULONG (STDMETHODCALLTYPE *AddRef)(
6860         IResourceManager* This);
6861
6862     ULONG (STDMETHODCALLTYPE *Release)(
6863         IResourceManager* This);
6864
6865     /*** IResourceManager methods ***/
6866     HRESULT (STDMETHODCALLTYPE *Register)(
6867         IResourceManager* This,
6868         LPCWSTR pName,
6869         LONG cResource,
6870         LONG* plToken);
6871
6872     HRESULT (STDMETHODCALLTYPE *RegisterGroup)(
6873         IResourceManager* This,
6874         LPCWSTR pName,
6875         LONG cResource,
6876         LONG* palTokens,
6877         LONG* plToken);
6878
6879     HRESULT (STDMETHODCALLTYPE *RequestResource)(
6880         IResourceManager* This,
6881         LONG idResource,
6882         IUnknown* pFocusObject,
6883         IResourceConsumer* pConsumer);
6884
6885     HRESULT (STDMETHODCALLTYPE *NotifyAcquire)(
6886         IResourceManager* This,
6887         LONG idResource,
6888         IResourceConsumer* pConsumer,
6889         HRESULT hr);
6890
6891     HRESULT (STDMETHODCALLTYPE *NotifyRelease)(
6892         IResourceManager* This,
6893         LONG idResource,
6894         IResourceConsumer* pConsumer,
6895         BOOL bStillWant);
6896
6897     HRESULT (STDMETHODCALLTYPE *CancelRequest)(
6898         IResourceManager* This,
6899         LONG idResource,
6900         IResourceConsumer* pConsumer);
6901
6902     HRESULT (STDMETHODCALLTYPE *SetFocus)(
6903         IResourceManager* This,
6904         IUnknown* pFocusObject);
6905
6906     HRESULT (STDMETHODCALLTYPE *ReleaseFocus)(
6907         IResourceManager* This,
6908         IUnknown* pFocusObject);
6909
6910 };
6911
6912 /*** IUnknown methods ***/
6913 #define IResourceManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6914 #define IResourceManager_AddRef(p) (p)->lpVtbl->AddRef(p)
6915 #define IResourceManager_Release(p) (p)->lpVtbl->Release(p)
6916 /*** IResourceManager methods ***/
6917 #define IResourceManager_Register(p,a,b,c) (p)->lpVtbl->Register(p,a,b,c)
6918 #define IResourceManager_RegisterGroup(p,a,b,c,d) (p)->lpVtbl->RegisterGroup(p,a,b,c,d)
6919 #define IResourceManager_RequestResource(p,a,b,c) (p)->lpVtbl->RequestResource(p,a,b,c)
6920 #define IResourceManager_NotifyAcquire(p,a,b,c) (p)->lpVtbl->NotifyAcquire(p,a,b,c)
6921 #define IResourceManager_NotifyRelease(p,a,b,c) (p)->lpVtbl->NotifyRelease(p,a,b,c)
6922 #define IResourceManager_CancelRequest(p,a,b) (p)->lpVtbl->CancelRequest(p,a,b)
6923 #define IResourceManager_SetFocus(p,a) (p)->lpVtbl->SetFocus(p,a)
6924 #define IResourceManager_ReleaseFocus(p,a) (p)->lpVtbl->ReleaseFocus(p,a)
6925
6926 #endif
6927
6928 #define IResourceManager_METHODS \
6929     ICOM_MSVTABLE_COMPAT_FIELDS \
6930     /*** IUnknown methods ***/ \
6931     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6932     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6933     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6934     /*** IResourceManager methods ***/ \
6935     STDMETHOD_(HRESULT,Register)(THIS_ LPCWSTR pName, LONG cResource, LONG* plToken) PURE; \
6936     STDMETHOD_(HRESULT,RegisterGroup)(THIS_ LPCWSTR pName, LONG cResource, LONG* palTokens, LONG* plToken) PURE; \
6937     STDMETHOD_(HRESULT,RequestResource)(THIS_ LONG idResource, IUnknown* pFocusObject, IResourceConsumer* pConsumer) PURE; \
6938     STDMETHOD_(HRESULT,NotifyAcquire)(THIS_ LONG idResource, IResourceConsumer* pConsumer, HRESULT hr) PURE; \
6939     STDMETHOD_(HRESULT,NotifyRelease)(THIS_ LONG idResource, IResourceConsumer* pConsumer, BOOL bStillWant) PURE; \
6940     STDMETHOD_(HRESULT,CancelRequest)(THIS_ LONG idResource, IResourceConsumer* pConsumer) PURE; \
6941     STDMETHOD_(HRESULT,SetFocus)(THIS_ IUnknown* pFocusObject) PURE; \
6942     STDMETHOD_(HRESULT,ReleaseFocus)(THIS_ IUnknown* pFocusObject) PURE;
6943
6944 HRESULT CALLBACK IResourceManager_Register_Proxy(
6945     IResourceManager* This,
6946     LPCWSTR pName,
6947     LONG cResource,
6948     LONG* plToken);
6949 void __RPC_STUB IResourceManager_Register_Stub(
6950     struct IRpcStubBuffer* This,
6951     struct IRpcChannelBuffer* pRpcChannelBuffer,
6952     PRPC_MESSAGE pRpcMessage,
6953     DWORD* pdwStubPhase);
6954 HRESULT CALLBACK IResourceManager_RegisterGroup_Proxy(
6955     IResourceManager* This,
6956     LPCWSTR pName,
6957     LONG cResource,
6958     LONG* palTokens,
6959     LONG* plToken);
6960 void __RPC_STUB IResourceManager_RegisterGroup_Stub(
6961     struct IRpcStubBuffer* This,
6962     struct IRpcChannelBuffer* pRpcChannelBuffer,
6963     PRPC_MESSAGE pRpcMessage,
6964     DWORD* pdwStubPhase);
6965 HRESULT CALLBACK IResourceManager_RequestResource_Proxy(
6966     IResourceManager* This,
6967     LONG idResource,
6968     IUnknown* pFocusObject,
6969     IResourceConsumer* pConsumer);
6970 void __RPC_STUB IResourceManager_RequestResource_Stub(
6971     struct IRpcStubBuffer* This,
6972     struct IRpcChannelBuffer* pRpcChannelBuffer,
6973     PRPC_MESSAGE pRpcMessage,
6974     DWORD* pdwStubPhase);
6975 HRESULT CALLBACK IResourceManager_NotifyAcquire_Proxy(
6976     IResourceManager* This,
6977     LONG idResource,
6978     IResourceConsumer* pConsumer,
6979     HRESULT hr);
6980 void __RPC_STUB IResourceManager_NotifyAcquire_Stub(
6981     struct IRpcStubBuffer* This,
6982     struct IRpcChannelBuffer* pRpcChannelBuffer,
6983     PRPC_MESSAGE pRpcMessage,
6984     DWORD* pdwStubPhase);
6985 HRESULT CALLBACK IResourceManager_NotifyRelease_Proxy(
6986     IResourceManager* This,
6987     LONG idResource,
6988     IResourceConsumer* pConsumer,
6989     BOOL bStillWant);
6990 void __RPC_STUB IResourceManager_NotifyRelease_Stub(
6991     struct IRpcStubBuffer* This,
6992     struct IRpcChannelBuffer* pRpcChannelBuffer,
6993     PRPC_MESSAGE pRpcMessage,
6994     DWORD* pdwStubPhase);
6995 HRESULT CALLBACK IResourceManager_CancelRequest_Proxy(
6996     IResourceManager* This,
6997     LONG idResource,
6998     IResourceConsumer* pConsumer);
6999 void __RPC_STUB IResourceManager_CancelRequest_Stub(
7000     struct IRpcStubBuffer* This,
7001     struct IRpcChannelBuffer* pRpcChannelBuffer,
7002     PRPC_MESSAGE pRpcMessage,
7003     DWORD* pdwStubPhase);
7004 HRESULT CALLBACK IResourceManager_SetFocus_Proxy(
7005     IResourceManager* This,
7006     IUnknown* pFocusObject);
7007 void __RPC_STUB IResourceManager_SetFocus_Stub(
7008     struct IRpcStubBuffer* This,
7009     struct IRpcChannelBuffer* pRpcChannelBuffer,
7010     PRPC_MESSAGE pRpcMessage,
7011     DWORD* pdwStubPhase);
7012 HRESULT CALLBACK IResourceManager_ReleaseFocus_Proxy(
7013     IResourceManager* This,
7014     IUnknown* pFocusObject);
7015 void __RPC_STUB IResourceManager_ReleaseFocus_Stub(
7016     struct IRpcStubBuffer* This,
7017     struct IRpcChannelBuffer* pRpcChannelBuffer,
7018     PRPC_MESSAGE pRpcMessage,
7019     DWORD* pdwStubPhase);
7020
7021 #endif  /* __IResourceManager_INTERFACE_DEFINED__ */
7022
7023 #ifndef _IKsPropertySet_
7024 #define _IKsPropertySet_
7025 #define KSPROPERTY_SUPPORT_GET  1
7026 #define KSPROPERTY_SUPPORT_SET  2
7027 /*****************************************************************************
7028  * IKsPropertySet interface
7029  */
7030 #ifndef __IKsPropertySet_INTERFACE_DEFINED__
7031 #define __IKsPropertySet_INTERFACE_DEFINED__
7032
7033 DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9,0xaa, 0x00,0xaa,0x00,0x61,0xbe,0x93);
7034 #if defined(__cplusplus) && !defined(CINTERFACE)
7035 struct IKsPropertySet : public IUnknown
7036 {
7037     virtual HRESULT STDMETHODCALLTYPE Set(
7038         REFGUID guidPropSet,
7039         DWORD dwPropID,
7040         LPVOID pInstanceData,
7041         DWORD cbInstanceData,
7042         LPVOID pPropData,
7043         DWORD cbPropData) = 0;
7044
7045     virtual HRESULT STDMETHODCALLTYPE Get(
7046         REFGUID guidPropSet,
7047         DWORD dwPropID,
7048         LPVOID pInstanceData,
7049         DWORD cbInstanceData,
7050         LPVOID pPropData,
7051         DWORD cbPropData,
7052         DWORD* pcbReturned) = 0;
7053
7054     virtual HRESULT STDMETHODCALLTYPE QuerySupported(
7055         REFGUID guidPropSet,
7056         DWORD dwPropID,
7057         DWORD* pTypeSupport) = 0;
7058
7059 };
7060 #else
7061 typedef struct IKsPropertySetVtbl IKsPropertySetVtbl;
7062 struct IKsPropertySet {
7063     const IKsPropertySetVtbl* lpVtbl;
7064 };
7065 struct IKsPropertySetVtbl {
7066     ICOM_MSVTABLE_COMPAT_FIELDS
7067
7068     /*** IUnknown methods ***/
7069     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7070         IKsPropertySet* This,
7071         REFIID riid,
7072         void** ppvObject);
7073
7074     ULONG (STDMETHODCALLTYPE *AddRef)(
7075         IKsPropertySet* This);
7076
7077     ULONG (STDMETHODCALLTYPE *Release)(
7078         IKsPropertySet* This);
7079
7080     /*** IKsPropertySet methods ***/
7081     HRESULT (STDMETHODCALLTYPE *Set)(
7082         IKsPropertySet* This,
7083         REFGUID guidPropSet,
7084         DWORD dwPropID,
7085         LPVOID pInstanceData,
7086         DWORD cbInstanceData,
7087         LPVOID pPropData,
7088         DWORD cbPropData);
7089
7090     HRESULT (STDMETHODCALLTYPE *Get)(
7091         IKsPropertySet* This,
7092         REFGUID guidPropSet,
7093         DWORD dwPropID,
7094         LPVOID pInstanceData,
7095         DWORD cbInstanceData,
7096         LPVOID pPropData,
7097         DWORD cbPropData,
7098         DWORD* pcbReturned);
7099
7100     HRESULT (STDMETHODCALLTYPE *QuerySupported)(
7101         IKsPropertySet* This,
7102         REFGUID guidPropSet,
7103         DWORD dwPropID,
7104         DWORD* pTypeSupport);
7105
7106 };
7107
7108 /*** IUnknown methods ***/
7109 #define IKsPropertySet_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7110 #define IKsPropertySet_AddRef(p) (p)->lpVtbl->AddRef(p)
7111 #define IKsPropertySet_Release(p) (p)->lpVtbl->Release(p)
7112 /*** IKsPropertySet methods ***/
7113 #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f)
7114 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g)
7115 #define IKsPropertySet_QuerySupported(p,a,b,c) (p)->lpVtbl->QuerySupported(p,a,b,c)
7116
7117 #endif
7118
7119 #define IKsPropertySet_METHODS \
7120     ICOM_MSVTABLE_COMPAT_FIELDS \
7121     /*** IUnknown methods ***/ \
7122     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7123     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7124     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7125     /*** IKsPropertySet methods ***/ \
7126     STDMETHOD_(HRESULT,Set)(THIS_ REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData) PURE; \
7127     STDMETHOD_(HRESULT,Get)(THIS_ REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData, DWORD* pcbReturned) PURE; \
7128     STDMETHOD_(HRESULT,QuerySupported)(THIS_ REFGUID guidPropSet, DWORD dwPropID, DWORD* pTypeSupport) PURE;
7129
7130 HRESULT CALLBACK IKsPropertySet_Set_Proxy(
7131     IKsPropertySet* This,
7132     REFGUID guidPropSet,
7133     DWORD dwPropID,
7134     LPVOID pInstanceData,
7135     DWORD cbInstanceData,
7136     LPVOID pPropData,
7137     DWORD cbPropData);
7138 void __RPC_STUB IKsPropertySet_Set_Stub(
7139     struct IRpcStubBuffer* This,
7140     struct IRpcChannelBuffer* pRpcChannelBuffer,
7141     PRPC_MESSAGE pRpcMessage,
7142     DWORD* pdwStubPhase);
7143 HRESULT CALLBACK IKsPropertySet_Get_Proxy(
7144     IKsPropertySet* This,
7145     REFGUID guidPropSet,
7146     DWORD dwPropID,
7147     LPVOID pInstanceData,
7148     DWORD cbInstanceData,
7149     LPVOID pPropData,
7150     DWORD cbPropData,
7151     DWORD* pcbReturned);
7152 void __RPC_STUB IKsPropertySet_Get_Stub(
7153     struct IRpcStubBuffer* This,
7154     struct IRpcChannelBuffer* pRpcChannelBuffer,
7155     PRPC_MESSAGE pRpcMessage,
7156     DWORD* pdwStubPhase);
7157 HRESULT CALLBACK IKsPropertySet_QuerySupported_Proxy(
7158     IKsPropertySet* This,
7159     REFGUID guidPropSet,
7160     DWORD dwPropID,
7161     DWORD* pTypeSupport);
7162 void __RPC_STUB IKsPropertySet_QuerySupported_Stub(
7163     struct IRpcStubBuffer* This,
7164     struct IRpcChannelBuffer* pRpcChannelBuffer,
7165     PRPC_MESSAGE pRpcMessage,
7166     DWORD* pdwStubPhase);
7167
7168 #endif  /* __IKsPropertySet_INTERFACE_DEFINED__ */
7169
7170 #endif /* _IKsPropertySet_ */
7171 #ifndef __IPinConnection_FWD_DEFINED__
7172 #define __IPinConnection_FWD_DEFINED__
7173 typedef struct IPinConnection IPinConnection;
7174 #endif
7175
7176 #ifndef __IPinFlowControl_FWD_DEFINED__
7177 #define __IPinFlowControl_FWD_DEFINED__
7178 typedef struct IPinFlowControl IPinFlowControl;
7179 #endif
7180
7181 #ifndef __IGraphConfig_FWD_DEFINED__
7182 #define __IGraphConfig_FWD_DEFINED__
7183 typedef struct IGraphConfig IGraphConfig;
7184 #endif
7185
7186 #ifndef __IGraphConfigCallback_FWD_DEFINED__
7187 #define __IGraphConfigCallback_FWD_DEFINED__
7188 typedef struct IGraphConfigCallback IGraphConfigCallback;
7189 #endif
7190
7191 /*****************************************************************************
7192  * IPinConnection interface
7193  */
7194 #ifndef __IPinConnection_INTERFACE_DEFINED__
7195 #define __IPinConnection_INTERFACE_DEFINED__
7196
7197 DEFINE_GUID(IID_IPinConnection, 0x4a9a62d3, 0x27d4, 0x403d, 0x91,0xe9, 0x89,0xf5,0x40,0xe5,0x55,0x34);
7198 #if defined(__cplusplus) && !defined(CINTERFACE)
7199 struct IPinConnection : public IUnknown
7200 {
7201     virtual HRESULT STDMETHODCALLTYPE DynamicQueryAccept(
7202         const AM_MEDIA_TYPE* pmt) = 0;
7203
7204     virtual HRESULT STDMETHODCALLTYPE NotifyEndOfStream(
7205         HANDLE hNotifyEvent) = 0;
7206
7207     virtual HRESULT STDMETHODCALLTYPE IsEndPin(
7208         ) = 0;
7209
7210     virtual HRESULT STDMETHODCALLTYPE DynamicDisconnect(
7211         ) = 0;
7212
7213 };
7214 #else
7215 typedef struct IPinConnectionVtbl IPinConnectionVtbl;
7216 struct IPinConnection {
7217     const IPinConnectionVtbl* lpVtbl;
7218 };
7219 struct IPinConnectionVtbl {
7220     ICOM_MSVTABLE_COMPAT_FIELDS
7221
7222     /*** IUnknown methods ***/
7223     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7224         IPinConnection* This,
7225         REFIID riid,
7226         void** ppvObject);
7227
7228     ULONG (STDMETHODCALLTYPE *AddRef)(
7229         IPinConnection* This);
7230
7231     ULONG (STDMETHODCALLTYPE *Release)(
7232         IPinConnection* This);
7233
7234     /*** IPinConnection methods ***/
7235     HRESULT (STDMETHODCALLTYPE *DynamicQueryAccept)(
7236         IPinConnection* This,
7237         const AM_MEDIA_TYPE* pmt);
7238
7239     HRESULT (STDMETHODCALLTYPE *NotifyEndOfStream)(
7240         IPinConnection* This,
7241         HANDLE hNotifyEvent);
7242
7243     HRESULT (STDMETHODCALLTYPE *IsEndPin)(
7244         IPinConnection* This);
7245
7246     HRESULT (STDMETHODCALLTYPE *DynamicDisconnect)(
7247         IPinConnection* This);
7248
7249 };
7250
7251 /*** IUnknown methods ***/
7252 #define IPinConnection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7253 #define IPinConnection_AddRef(p) (p)->lpVtbl->AddRef(p)
7254 #define IPinConnection_Release(p) (p)->lpVtbl->Release(p)
7255 /*** IPinConnection methods ***/
7256 #define IPinConnection_DynamicQueryAccept(p,a) (p)->lpVtbl->DynamicQueryAccept(p,a)
7257 #define IPinConnection_NotifyEndOfStream(p,a) (p)->lpVtbl->NotifyEndOfStream(p,a)
7258 #define IPinConnection_IsEndPin(p) (p)->lpVtbl->IsEndPin(p)
7259 #define IPinConnection_DynamicDisconnect(p) (p)->lpVtbl->DynamicDisconnect(p)
7260
7261 #endif
7262
7263 #define IPinConnection_METHODS \
7264     ICOM_MSVTABLE_COMPAT_FIELDS \
7265     /*** IUnknown methods ***/ \
7266     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7267     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7268     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7269     /*** IPinConnection methods ***/ \
7270     STDMETHOD_(HRESULT,DynamicQueryAccept)(THIS_ const AM_MEDIA_TYPE* pmt) PURE; \
7271     STDMETHOD_(HRESULT,NotifyEndOfStream)(THIS_ HANDLE hNotifyEvent) PURE; \
7272     STDMETHOD_(HRESULT,IsEndPin)(THIS) PURE; \
7273     STDMETHOD_(HRESULT,DynamicDisconnect)(THIS) PURE;
7274
7275 HRESULT CALLBACK IPinConnection_DynamicQueryAccept_Proxy(
7276     IPinConnection* This,
7277     const AM_MEDIA_TYPE* pmt);
7278 void __RPC_STUB IPinConnection_DynamicQueryAccept_Stub(
7279     struct IRpcStubBuffer* This,
7280     struct IRpcChannelBuffer* pRpcChannelBuffer,
7281     PRPC_MESSAGE pRpcMessage,
7282     DWORD* pdwStubPhase);
7283 HRESULT CALLBACK IPinConnection_NotifyEndOfStream_Proxy(
7284     IPinConnection* This,
7285     HANDLE hNotifyEvent);
7286 void __RPC_STUB IPinConnection_NotifyEndOfStream_Stub(
7287     struct IRpcStubBuffer* This,
7288     struct IRpcChannelBuffer* pRpcChannelBuffer,
7289     PRPC_MESSAGE pRpcMessage,
7290     DWORD* pdwStubPhase);
7291 HRESULT CALLBACK IPinConnection_IsEndPin_Proxy(
7292     IPinConnection* This);
7293 void __RPC_STUB IPinConnection_IsEndPin_Stub(
7294     struct IRpcStubBuffer* This,
7295     struct IRpcChannelBuffer* pRpcChannelBuffer,
7296     PRPC_MESSAGE pRpcMessage,
7297     DWORD* pdwStubPhase);
7298 HRESULT CALLBACK IPinConnection_DynamicDisconnect_Proxy(
7299     IPinConnection* This);
7300 void __RPC_STUB IPinConnection_DynamicDisconnect_Stub(
7301     struct IRpcStubBuffer* This,
7302     struct IRpcChannelBuffer* pRpcChannelBuffer,
7303     PRPC_MESSAGE pRpcMessage,
7304     DWORD* pdwStubPhase);
7305
7306 #endif  /* __IPinConnection_INTERFACE_DEFINED__ */
7307
7308 /*****************************************************************************
7309  * IPinFlowControl interface
7310  */
7311 #ifndef __IPinFlowControl_INTERFACE_DEFINED__
7312 #define __IPinFlowControl_INTERFACE_DEFINED__
7313
7314 DEFINE_GUID(IID_IPinFlowControl, 0xc56e9858, 0xdbf3, 0x4f6b, 0x81,0x19, 0x38,0x4a,0xf2,0x06,0x0d,0xeb);
7315 #if defined(__cplusplus) && !defined(CINTERFACE)
7316 struct IPinFlowControl : public IUnknown
7317 {
7318     virtual HRESULT STDMETHODCALLTYPE Block(
7319         DWORD dwBlockFlags,
7320         HANDLE hEvent) = 0;
7321
7322 };
7323 #else
7324 typedef struct IPinFlowControlVtbl IPinFlowControlVtbl;
7325 struct IPinFlowControl {
7326     const IPinFlowControlVtbl* lpVtbl;
7327 };
7328 struct IPinFlowControlVtbl {
7329     ICOM_MSVTABLE_COMPAT_FIELDS
7330
7331     /*** IUnknown methods ***/
7332     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7333         IPinFlowControl* This,
7334         REFIID riid,
7335         void** ppvObject);
7336
7337     ULONG (STDMETHODCALLTYPE *AddRef)(
7338         IPinFlowControl* This);
7339
7340     ULONG (STDMETHODCALLTYPE *Release)(
7341         IPinFlowControl* This);
7342
7343     /*** IPinFlowControl methods ***/
7344     HRESULT (STDMETHODCALLTYPE *Block)(
7345         IPinFlowControl* This,
7346         DWORD dwBlockFlags,
7347         HANDLE hEvent);
7348
7349 };
7350
7351 /*** IUnknown methods ***/
7352 #define IPinFlowControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7353 #define IPinFlowControl_AddRef(p) (p)->lpVtbl->AddRef(p)
7354 #define IPinFlowControl_Release(p) (p)->lpVtbl->Release(p)
7355 /*** IPinFlowControl methods ***/
7356 #define IPinFlowControl_Block(p,a,b) (p)->lpVtbl->Block(p,a,b)
7357
7358 #endif
7359
7360 #define IPinFlowControl_METHODS \
7361     ICOM_MSVTABLE_COMPAT_FIELDS \
7362     /*** IUnknown methods ***/ \
7363     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7364     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7365     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7366     /*** IPinFlowControl methods ***/ \
7367     STDMETHOD_(HRESULT,Block)(THIS_ DWORD dwBlockFlags, HANDLE hEvent) PURE;
7368
7369 HRESULT CALLBACK IPinFlowControl_Block_Proxy(
7370     IPinFlowControl* This,
7371     DWORD dwBlockFlags,
7372     HANDLE hEvent);
7373 void __RPC_STUB IPinFlowControl_Block_Stub(
7374     struct IRpcStubBuffer* This,
7375     struct IRpcChannelBuffer* pRpcChannelBuffer,
7376     PRPC_MESSAGE pRpcMessage,
7377     DWORD* pdwStubPhase);
7378
7379 #endif  /* __IPinFlowControl_INTERFACE_DEFINED__ */
7380
7381 enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS {
7382     AM_PIN_FLOW_CONTROL_BLOCK = 0x1
7383 };
7384
7385 typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
7386     AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x1,
7387     AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x2,
7388     AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x4
7389 } AM_GRAPH_CONFIG_RECONNECT_FLAGS;
7390
7391 enum _REM_FILTER_FLAGS {
7392     REMFILTERF_LEAVECONNECTED = 0x1
7393 };
7394
7395 typedef enum _AM_FILTER_FLAGS {
7396     AM_FILTER_FLAGS_REMOVABLE = 0x1
7397 } AM_FILTER_FLAGS;
7398
7399 /*****************************************************************************
7400  * IGraphConfig interface
7401  */
7402 #ifndef __IGraphConfig_INTERFACE_DEFINED__
7403 #define __IGraphConfig_INTERFACE_DEFINED__
7404
7405 DEFINE_GUID(IID_IGraphConfig, 0x03a1eb8e, 0x32bf, 0x4245, 0x85,0x02, 0x11,0x4d,0x08,0xa9,0xcb,0x88);
7406 #if defined(__cplusplus) && !defined(CINTERFACE)
7407 struct IGraphConfig : public IUnknown
7408 {
7409     virtual HRESULT STDMETHODCALLTYPE Reconnect(
7410         IPin* pOutputPin,
7411         IPin* pInputPin,
7412         const AM_MEDIA_TYPE* pmtFirstConnection,
7413         IBaseFilter* pUsingFilter,
7414         HANDLE hAbortEvent,
7415         DWORD dwFlags) = 0;
7416
7417     virtual HRESULT STDMETHODCALLTYPE Reconfigure(
7418         IGraphConfigCallback* pCallback,
7419         PVOID pvContext,
7420         DWORD dwFlags,
7421         HANDLE hAbortEvent) = 0;
7422
7423     virtual HRESULT STDMETHODCALLTYPE AddFilterToCache(
7424         IBaseFilter* pFilter) = 0;
7425
7426     virtual HRESULT STDMETHODCALLTYPE EnumCacheFilter(
7427         IEnumFilters** pEnum) = 0;
7428
7429     virtual HRESULT STDMETHODCALLTYPE RemoveFilterFromCache(
7430         IBaseFilter* pFilter) = 0;
7431
7432     virtual HRESULT STDMETHODCALLTYPE GetStartTime(
7433         REFERENCE_TIME* prtStart) = 0;
7434
7435     virtual HRESULT STDMETHODCALLTYPE PushThroughData(
7436         IPin* pOutputPin,
7437         IPinConnection* pConnection,
7438         HANDLE hEventAbort) = 0;
7439
7440     virtual HRESULT STDMETHODCALLTYPE SetFilterFlags(
7441         IBaseFilter* pFilter,
7442         DWORD dwFlags) = 0;
7443
7444     virtual HRESULT STDMETHODCALLTYPE GetFilterFlags(
7445         IBaseFilter* pFilter,
7446         DWORD* pdwFlags) = 0;
7447
7448     virtual HRESULT STDMETHODCALLTYPE RemoveFilterEx(
7449         IBaseFilter* pFilter,
7450         DWORD Flags) = 0;
7451
7452 };
7453 #else
7454 typedef struct IGraphConfigVtbl IGraphConfigVtbl;
7455 struct IGraphConfig {
7456     const IGraphConfigVtbl* lpVtbl;
7457 };
7458 struct IGraphConfigVtbl {
7459     ICOM_MSVTABLE_COMPAT_FIELDS
7460
7461     /*** IUnknown methods ***/
7462     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7463         IGraphConfig* This,
7464         REFIID riid,
7465         void** ppvObject);
7466
7467     ULONG (STDMETHODCALLTYPE *AddRef)(
7468         IGraphConfig* This);
7469
7470     ULONG (STDMETHODCALLTYPE *Release)(
7471         IGraphConfig* This);
7472
7473     /*** IGraphConfig methods ***/
7474     HRESULT (STDMETHODCALLTYPE *Reconnect)(
7475         IGraphConfig* This,
7476         IPin* pOutputPin,
7477         IPin* pInputPin,
7478         const AM_MEDIA_TYPE* pmtFirstConnection,
7479         IBaseFilter* pUsingFilter,
7480         HANDLE hAbortEvent,
7481         DWORD dwFlags);
7482
7483     HRESULT (STDMETHODCALLTYPE *Reconfigure)(
7484         IGraphConfig* This,
7485         IGraphConfigCallback* pCallback,
7486         PVOID pvContext,
7487         DWORD dwFlags,
7488         HANDLE hAbortEvent);
7489
7490     HRESULT (STDMETHODCALLTYPE *AddFilterToCache)(
7491         IGraphConfig* This,
7492         IBaseFilter* pFilter);
7493
7494     HRESULT (STDMETHODCALLTYPE *EnumCacheFilter)(
7495         IGraphConfig* This,
7496         IEnumFilters** pEnum);
7497
7498     HRESULT (STDMETHODCALLTYPE *RemoveFilterFromCache)(
7499         IGraphConfig* This,
7500         IBaseFilter* pFilter);
7501
7502     HRESULT (STDMETHODCALLTYPE *GetStartTime)(
7503         IGraphConfig* This,
7504         REFERENCE_TIME* prtStart);
7505
7506     HRESULT (STDMETHODCALLTYPE *PushThroughData)(
7507         IGraphConfig* This,
7508         IPin* pOutputPin,
7509         IPinConnection* pConnection,
7510         HANDLE hEventAbort);
7511
7512     HRESULT (STDMETHODCALLTYPE *SetFilterFlags)(
7513         IGraphConfig* This,
7514         IBaseFilter* pFilter,
7515         DWORD dwFlags);
7516
7517     HRESULT (STDMETHODCALLTYPE *GetFilterFlags)(
7518         IGraphConfig* This,
7519         IBaseFilter* pFilter,
7520         DWORD* pdwFlags);
7521
7522     HRESULT (STDMETHODCALLTYPE *RemoveFilterEx)(
7523         IGraphConfig* This,
7524         IBaseFilter* pFilter,
7525         DWORD Flags);
7526
7527 };
7528
7529 /*** IUnknown methods ***/
7530 #define IGraphConfig_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7531 #define IGraphConfig_AddRef(p) (p)->lpVtbl->AddRef(p)
7532 #define IGraphConfig_Release(p) (p)->lpVtbl->Release(p)
7533 /*** IGraphConfig methods ***/
7534 #define IGraphConfig_Reconnect(p,a,b,c,d,e,f) (p)->lpVtbl->Reconnect(p,a,b,c,d,e,f)
7535 #define IGraphConfig_Reconfigure(p,a,b,c,d) (p)->lpVtbl->Reconfigure(p,a,b,c,d)
7536 #define IGraphConfig_AddFilterToCache(p,a) (p)->lpVtbl->AddFilterToCache(p,a)
7537 #define IGraphConfig_EnumCacheFilter(p,a) (p)->lpVtbl->EnumCacheFilter(p,a)
7538 #define IGraphConfig_RemoveFilterFromCache(p,a) (p)->lpVtbl->RemoveFilterFromCache(p,a)
7539 #define IGraphConfig_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a)
7540 #define IGraphConfig_PushThroughData(p,a,b,c) (p)->lpVtbl->PushThroughData(p,a,b,c)
7541 #define IGraphConfig_SetFilterFlags(p,a,b) (p)->lpVtbl->SetFilterFlags(p,a,b)
7542 #define IGraphConfig_GetFilterFlags(p,a,b) (p)->lpVtbl->GetFilterFlags(p,a,b)
7543 #define IGraphConfig_RemoveFilterEx(p,a,b) (p)->lpVtbl->RemoveFilterEx(p,a,b)
7544
7545 #endif
7546
7547 #define IGraphConfig_METHODS \
7548     ICOM_MSVTABLE_COMPAT_FIELDS \
7549     /*** IUnknown methods ***/ \
7550     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7551     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7552     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7553     /*** IGraphConfig methods ***/ \
7554     STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* pOutputPin, IPin* pInputPin, const AM_MEDIA_TYPE* pmtFirstConnection, IBaseFilter* pUsingFilter, HANDLE hAbortEvent, DWORD dwFlags) PURE; \
7555     STDMETHOD_(HRESULT,Reconfigure)(THIS_ IGraphConfigCallback* pCallback, PVOID pvContext, DWORD dwFlags, HANDLE hAbortEvent) PURE; \
7556     STDMETHOD_(HRESULT,AddFilterToCache)(THIS_ IBaseFilter* pFilter) PURE; \
7557     STDMETHOD_(HRESULT,EnumCacheFilter)(THIS_ IEnumFilters** pEnum) PURE; \
7558     STDMETHOD_(HRESULT,RemoveFilterFromCache)(THIS_ IBaseFilter* pFilter) PURE; \
7559     STDMETHOD_(HRESULT,GetStartTime)(THIS_ REFERENCE_TIME* prtStart) PURE; \
7560     STDMETHOD_(HRESULT,PushThroughData)(THIS_ IPin* pOutputPin, IPinConnection* pConnection, HANDLE hEventAbort) PURE; \
7561     STDMETHOD_(HRESULT,SetFilterFlags)(THIS_ IBaseFilter* pFilter, DWORD dwFlags) PURE; \
7562     STDMETHOD_(HRESULT,GetFilterFlags)(THIS_ IBaseFilter* pFilter, DWORD* pdwFlags) PURE; \
7563     STDMETHOD_(HRESULT,RemoveFilterEx)(THIS_ IBaseFilter* pFilter, DWORD Flags) PURE;
7564
7565 HRESULT CALLBACK IGraphConfig_Reconnect_Proxy(
7566     IGraphConfig* This,
7567     IPin* pOutputPin,
7568     IPin* pInputPin,
7569     const AM_MEDIA_TYPE* pmtFirstConnection,
7570     IBaseFilter* pUsingFilter,
7571     HANDLE hAbortEvent,
7572     DWORD dwFlags);
7573 void __RPC_STUB IGraphConfig_Reconnect_Stub(
7574     struct IRpcStubBuffer* This,
7575     struct IRpcChannelBuffer* pRpcChannelBuffer,
7576     PRPC_MESSAGE pRpcMessage,
7577     DWORD* pdwStubPhase);
7578 HRESULT CALLBACK IGraphConfig_Reconfigure_Proxy(
7579     IGraphConfig* This,
7580     IGraphConfigCallback* pCallback,
7581     PVOID pvContext,
7582     DWORD dwFlags,
7583     HANDLE hAbortEvent);
7584 void __RPC_STUB IGraphConfig_Reconfigure_Stub(
7585     struct IRpcStubBuffer* This,
7586     struct IRpcChannelBuffer* pRpcChannelBuffer,
7587     PRPC_MESSAGE pRpcMessage,
7588     DWORD* pdwStubPhase);
7589 HRESULT CALLBACK IGraphConfig_AddFilterToCache_Proxy(
7590     IGraphConfig* This,
7591     IBaseFilter* pFilter);
7592 void __RPC_STUB IGraphConfig_AddFilterToCache_Stub(
7593     struct IRpcStubBuffer* This,
7594     struct IRpcChannelBuffer* pRpcChannelBuffer,
7595     PRPC_MESSAGE pRpcMessage,
7596     DWORD* pdwStubPhase);
7597 HRESULT CALLBACK IGraphConfig_EnumCacheFilter_Proxy(
7598     IGraphConfig* This,
7599     IEnumFilters** pEnum);
7600 void __RPC_STUB IGraphConfig_EnumCacheFilter_Stub(
7601     struct IRpcStubBuffer* This,
7602     struct IRpcChannelBuffer* pRpcChannelBuffer,
7603     PRPC_MESSAGE pRpcMessage,
7604     DWORD* pdwStubPhase);
7605 HRESULT CALLBACK IGraphConfig_RemoveFilterFromCache_Proxy(
7606     IGraphConfig* This,
7607     IBaseFilter* pFilter);
7608 void __RPC_STUB IGraphConfig_RemoveFilterFromCache_Stub(
7609     struct IRpcStubBuffer* This,
7610     struct IRpcChannelBuffer* pRpcChannelBuffer,
7611     PRPC_MESSAGE pRpcMessage,
7612     DWORD* pdwStubPhase);
7613 HRESULT CALLBACK IGraphConfig_GetStartTime_Proxy(
7614     IGraphConfig* This,
7615     REFERENCE_TIME* prtStart);
7616 void __RPC_STUB IGraphConfig_GetStartTime_Stub(
7617     struct IRpcStubBuffer* This,
7618     struct IRpcChannelBuffer* pRpcChannelBuffer,
7619     PRPC_MESSAGE pRpcMessage,
7620     DWORD* pdwStubPhase);
7621 HRESULT CALLBACK IGraphConfig_PushThroughData_Proxy(
7622     IGraphConfig* This,
7623     IPin* pOutputPin,
7624     IPinConnection* pConnection,
7625     HANDLE hEventAbort);
7626 void __RPC_STUB IGraphConfig_PushThroughData_Stub(
7627     struct IRpcStubBuffer* This,
7628     struct IRpcChannelBuffer* pRpcChannelBuffer,
7629     PRPC_MESSAGE pRpcMessage,
7630     DWORD* pdwStubPhase);
7631 HRESULT CALLBACK IGraphConfig_SetFilterFlags_Proxy(
7632     IGraphConfig* This,
7633     IBaseFilter* pFilter,
7634     DWORD dwFlags);
7635 void __RPC_STUB IGraphConfig_SetFilterFlags_Stub(
7636     struct IRpcStubBuffer* This,
7637     struct IRpcChannelBuffer* pRpcChannelBuffer,
7638     PRPC_MESSAGE pRpcMessage,
7639     DWORD* pdwStubPhase);
7640 HRESULT CALLBACK IGraphConfig_GetFilterFlags_Proxy(
7641     IGraphConfig* This,
7642     IBaseFilter* pFilter,
7643     DWORD* pdwFlags);
7644 void __RPC_STUB IGraphConfig_GetFilterFlags_Stub(
7645     struct IRpcStubBuffer* This,
7646     struct IRpcChannelBuffer* pRpcChannelBuffer,
7647     PRPC_MESSAGE pRpcMessage,
7648     DWORD* pdwStubPhase);
7649 HRESULT CALLBACK IGraphConfig_RemoveFilterEx_Proxy(
7650     IGraphConfig* This,
7651     IBaseFilter* pFilter,
7652     DWORD Flags);
7653 void __RPC_STUB IGraphConfig_RemoveFilterEx_Stub(
7654     struct IRpcStubBuffer* This,
7655     struct IRpcChannelBuffer* pRpcChannelBuffer,
7656     PRPC_MESSAGE pRpcMessage,
7657     DWORD* pdwStubPhase);
7658
7659 #endif  /* __IGraphConfig_INTERFACE_DEFINED__ */
7660
7661 /*****************************************************************************
7662  * IGraphConfigCallback interface
7663  */
7664 #ifndef __IGraphConfigCallback_INTERFACE_DEFINED__
7665 #define __IGraphConfigCallback_INTERFACE_DEFINED__
7666
7667 DEFINE_GUID(IID_IGraphConfigCallback, 0xade0fd60, 0xd19d, 0x11d2, 0xab,0xf6, 0x00,0xa0,0xc9,0x05,0xf3,0x75);
7668 #if defined(__cplusplus) && !defined(CINTERFACE)
7669 struct IGraphConfigCallback : public IUnknown
7670 {
7671     virtual HRESULT STDMETHODCALLTYPE Reconfigure(
7672         PVOID pvContext,
7673         DWORD dwFlags) = 0;
7674
7675 };
7676 #else
7677 typedef struct IGraphConfigCallbackVtbl IGraphConfigCallbackVtbl;
7678 struct IGraphConfigCallback {
7679     const IGraphConfigCallbackVtbl* lpVtbl;
7680 };
7681 struct IGraphConfigCallbackVtbl {
7682     ICOM_MSVTABLE_COMPAT_FIELDS
7683
7684     /*** IUnknown methods ***/
7685     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7686         IGraphConfigCallback* This,
7687         REFIID riid,
7688         void** ppvObject);
7689
7690     ULONG (STDMETHODCALLTYPE *AddRef)(
7691         IGraphConfigCallback* This);
7692
7693     ULONG (STDMETHODCALLTYPE *Release)(
7694         IGraphConfigCallback* This);
7695
7696     /*** IGraphConfigCallback methods ***/
7697     HRESULT (STDMETHODCALLTYPE *Reconfigure)(
7698         IGraphConfigCallback* This,
7699         PVOID pvContext,
7700         DWORD dwFlags);
7701
7702 };
7703
7704 /*** IUnknown methods ***/
7705 #define IGraphConfigCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7706 #define IGraphConfigCallback_AddRef(p) (p)->lpVtbl->AddRef(p)
7707 #define IGraphConfigCallback_Release(p) (p)->lpVtbl->Release(p)
7708 /*** IGraphConfigCallback methods ***/
7709 #define IGraphConfigCallback_Reconfigure(p,a,b) (p)->lpVtbl->Reconfigure(p,a,b)
7710
7711 #endif
7712
7713 #define IGraphConfigCallback_METHODS \
7714     ICOM_MSVTABLE_COMPAT_FIELDS \
7715     /*** IUnknown methods ***/ \
7716     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7717     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7718     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7719     /*** IGraphConfigCallback methods ***/ \
7720     STDMETHOD_(HRESULT,Reconfigure)(THIS_ PVOID pvContext, DWORD dwFlags) PURE;
7721
7722 HRESULT CALLBACK IGraphConfigCallback_Reconfigure_Proxy(
7723     IGraphConfigCallback* This,
7724     PVOID pvContext,
7725     DWORD dwFlags);
7726 void __RPC_STUB IGraphConfigCallback_Reconfigure_Stub(
7727     struct IRpcStubBuffer* This,
7728     struct IRpcChannelBuffer* pRpcChannelBuffer,
7729     PRPC_MESSAGE pRpcMessage,
7730     DWORD* pdwStubPhase);
7731
7732 #endif  /* __IGraphConfigCallback_INTERFACE_DEFINED__ */
7733
7734 #ifndef __IFilterChain_FWD_DEFINED__
7735 #define __IFilterChain_FWD_DEFINED__
7736 typedef struct IFilterChain IFilterChain;
7737 #endif
7738
7739 /*****************************************************************************
7740  * IFilterChain interface
7741  */
7742 #ifndef __IFilterChain_INTERFACE_DEFINED__
7743 #define __IFilterChain_INTERFACE_DEFINED__
7744
7745 DEFINE_GUID(IID_IFilterChain, 0xdcfbdcf6, 0x0dc2, 0x45f5, 0x9a,0xb2, 0x7c,0x33,0x0e,0xa0,0x9c,0x29);
7746 #if defined(__cplusplus) && !defined(CINTERFACE)
7747 struct IFilterChain : public IUnknown
7748 {
7749     virtual HRESULT STDMETHODCALLTYPE StartChain(
7750         IBaseFilter* pStartFilter,
7751         IBaseFilter* pEndFilter) = 0;
7752
7753     virtual HRESULT STDMETHODCALLTYPE PauseChain(
7754         IBaseFilter* pStartFilter,
7755         IBaseFilter* pEndFilter) = 0;
7756
7757     virtual HRESULT STDMETHODCALLTYPE StopChain(
7758         IBaseFilter* pStartFilter,
7759         IBaseFilter* pEndFilter) = 0;
7760
7761     virtual HRESULT STDMETHODCALLTYPE RemoveChain(
7762         IBaseFilter* pStartFilter,
7763         IBaseFilter* pEndFilter) = 0;
7764
7765 };
7766 #else
7767 typedef struct IFilterChainVtbl IFilterChainVtbl;
7768 struct IFilterChain {
7769     const IFilterChainVtbl* lpVtbl;
7770 };
7771 struct IFilterChainVtbl {
7772     ICOM_MSVTABLE_COMPAT_FIELDS
7773
7774     /*** IUnknown methods ***/
7775     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7776         IFilterChain* This,
7777         REFIID riid,
7778         void** ppvObject);
7779
7780     ULONG (STDMETHODCALLTYPE *AddRef)(
7781         IFilterChain* This);
7782
7783     ULONG (STDMETHODCALLTYPE *Release)(
7784         IFilterChain* This);
7785
7786     /*** IFilterChain methods ***/
7787     HRESULT (STDMETHODCALLTYPE *StartChain)(
7788         IFilterChain* This,
7789         IBaseFilter* pStartFilter,
7790         IBaseFilter* pEndFilter);
7791
7792     HRESULT (STDMETHODCALLTYPE *PauseChain)(
7793         IFilterChain* This,
7794         IBaseFilter* pStartFilter,
7795         IBaseFilter* pEndFilter);
7796
7797     HRESULT (STDMETHODCALLTYPE *StopChain)(
7798         IFilterChain* This,
7799         IBaseFilter* pStartFilter,
7800         IBaseFilter* pEndFilter);
7801
7802     HRESULT (STDMETHODCALLTYPE *RemoveChain)(
7803         IFilterChain* This,
7804         IBaseFilter* pStartFilter,
7805         IBaseFilter* pEndFilter);
7806
7807 };
7808
7809 /*** IUnknown methods ***/
7810 #define IFilterChain_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7811 #define IFilterChain_AddRef(p) (p)->lpVtbl->AddRef(p)
7812 #define IFilterChain_Release(p) (p)->lpVtbl->Release(p)
7813 /*** IFilterChain methods ***/
7814 #define IFilterChain_StartChain(p,a,b) (p)->lpVtbl->StartChain(p,a,b)
7815 #define IFilterChain_PauseChain(p,a,b) (p)->lpVtbl->PauseChain(p,a,b)
7816 #define IFilterChain_StopChain(p,a,b) (p)->lpVtbl->StopChain(p,a,b)
7817 #define IFilterChain_RemoveChain(p,a,b) (p)->lpVtbl->RemoveChain(p,a,b)
7818
7819 #endif
7820
7821 #define IFilterChain_METHODS \
7822     ICOM_MSVTABLE_COMPAT_FIELDS \
7823     /*** IUnknown methods ***/ \
7824     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7825     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7826     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7827     /*** IFilterChain methods ***/ \
7828     STDMETHOD_(HRESULT,StartChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \
7829     STDMETHOD_(HRESULT,PauseChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \
7830     STDMETHOD_(HRESULT,StopChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \
7831     STDMETHOD_(HRESULT,RemoveChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE;
7832
7833 HRESULT CALLBACK IFilterChain_StartChain_Proxy(
7834     IFilterChain* This,
7835     IBaseFilter* pStartFilter,
7836     IBaseFilter* pEndFilter);
7837 void __RPC_STUB IFilterChain_StartChain_Stub(
7838     struct IRpcStubBuffer* This,
7839     struct IRpcChannelBuffer* pRpcChannelBuffer,
7840     PRPC_MESSAGE pRpcMessage,
7841     DWORD* pdwStubPhase);
7842 HRESULT CALLBACK IFilterChain_PauseChain_Proxy(
7843     IFilterChain* This,
7844     IBaseFilter* pStartFilter,
7845     IBaseFilter* pEndFilter);
7846 void __RPC_STUB IFilterChain_PauseChain_Stub(
7847     struct IRpcStubBuffer* This,
7848     struct IRpcChannelBuffer* pRpcChannelBuffer,
7849     PRPC_MESSAGE pRpcMessage,
7850     DWORD* pdwStubPhase);
7851 HRESULT CALLBACK IFilterChain_StopChain_Proxy(
7852     IFilterChain* This,
7853     IBaseFilter* pStartFilter,
7854     IBaseFilter* pEndFilter);
7855 void __RPC_STUB IFilterChain_StopChain_Stub(
7856     struct IRpcStubBuffer* This,
7857     struct IRpcChannelBuffer* pRpcChannelBuffer,
7858     PRPC_MESSAGE pRpcMessage,
7859     DWORD* pdwStubPhase);
7860 HRESULT CALLBACK IFilterChain_RemoveChain_Proxy(
7861     IFilterChain* This,
7862     IBaseFilter* pStartFilter,
7863     IBaseFilter* pEndFilter);
7864 void __RPC_STUB IFilterChain_RemoveChain_Stub(
7865     struct IRpcStubBuffer* This,
7866     struct IRpcChannelBuffer* pRpcChannelBuffer,
7867     PRPC_MESSAGE pRpcMessage,
7868     DWORD* pdwStubPhase);
7869
7870 #endif  /* __IFilterChain_INTERFACE_DEFINED__ */
7871
7872 #ifdef __cplusplus
7873 }
7874 #endif
7875 #endif /* __WIDL_STRMIF_H */