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