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