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