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