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