Added some dshow headers.
[wine] / include / strmif.h
1 #ifndef __WINE_STRMIF_H_
2 #define __WINE_STRMIF_H_
3
4 #include "ole2.h"
5
6 /* FIXME - far from complete. */
7
8 /* forward decls. */
9
10 typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder;
11 typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder;
12 typedef struct IAMAudioInputMixer IAMAudioInputMixer;
13 typedef struct IAMAudioRendererStats IAMAudioRendererStats;
14 typedef struct IAMBufferNegotiation IAMBufferNegotiation;
15 typedef struct IAMCameraControl IAMCameraControl;
16 typedef struct IAMClockAdjust IAMClockAdjust;
17 typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
18 typedef struct IAMCrossbar IAMCrossbar;
19 typedef struct IAMDeviceRemoval IAMDeviceRemoval;
20 typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator;
21 typedef struct IAMDevMemoryControl IAMDevMemoryControl;
22 typedef struct IAMDroppedFrames IAMDroppedFrames;
23 typedef struct IAMExtDevice IAMExtDevice;
24 typedef struct IAMExtTransport IAMExtTransport;
25 typedef struct IAMFilterMiscFlags IAMFilterMiscFlags;
26 typedef struct IAMGraphStreams IAMGraphStreams;
27 typedef struct IAMLatency IAMLatency;
28 typedef struct IAMOpenProgress IAMOpenProgress;
29 typedef struct IAMOverlayFX IAMOverlayFX;
30 typedef struct IAMovie IAMovie;
31 typedef struct IAMovieSetup IAMovieSetup;
32 typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo;
33 typedef struct IAMPushSource IAMPushSource;
34 typedef struct IAMResourceControl IAMResourceControl;
35 typedef struct IAMStreamConfig IAMStreamConfig;
36 typedef struct IAMStreamControl IAMStreamControl;
37 typedef struct IAMStreamSelect IAMStreamSelect;
38 typedef struct IAMTimecodeDisplay IAMTimecodeDisplay;
39 typedef struct IAMTimecodeGenerator IAMTimecodeGenerator;
40 typedef struct IAMTimecodeReader IAMTimecodeReader;
41 typedef struct IAMTuner IAMTuner;
42 typedef struct IAMTunerNotification IAMTunerNotification;
43 typedef struct IAMTVAudio IAMTVAudio;
44 typedef struct IAMTVAudioNotification IAMTVAudioNotification;
45 typedef struct IAMTVTuner IAMTVTuner;
46 typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
47 typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;
48 typedef struct IAMVideoCompression IAMVideoCompression;
49 typedef struct IAMVideoControl IAMVideoControl;
50 typedef struct IAMVideoDecimationProperties IAMVideoDecimationProperties;
51 typedef struct IAMVideoProcAmp IAMVideoProcAmp;
52 typedef struct IAsyncReader IAsyncReader;
53 typedef struct IMediaFilter IMediaFilter;
54 typedef struct IBaseFilter IBaseFilter;
55 typedef struct IBPCSatelliteTuner IBPCSatelliteTuner;
56 typedef struct ICaptureGraphBuilder ICaptureGraphBuilder;
57 typedef struct ICaptureGraphBuilder2 ICaptureGraphBuilder2;
58 typedef struct IConfigAviMux IConfigAviMux;
59 typedef struct IConfigInterleaving IConfigInterleaving;
60 typedef struct ICreateDevEnum ICreateDevEnum;
61 typedef struct IDDrawExclModeVideo IDDrawExclModeVideo;
62 typedef struct IDDrawExclModeVideoCallback IDDrawExclModeVideoCallback;
63 typedef struct IDecimateVideoImage IDecimateVideoImage;
64 typedef struct IDistributorNotify IDistributorNotify;
65 typedef struct IDrawVideoImage IDrawVideoImage;
66 typedef struct IDvdCmd IDvdCmd;
67 typedef struct IDvdControl IDvdControl;
68 typedef struct IDvdControl2 IDvdControl2;
69 typedef struct IDvdGraphBuilder IDvdGraphBuilder;
70 typedef struct IDvdInfo IDvdInfo;
71 typedef struct IDvdInfo2 IDvdInfo2;
72 typedef struct IDvdState IDvdState;
73 typedef struct IDVEnc IDVEnc;
74 typedef struct IDVSplitter IDVSplitter;
75 typedef struct IEnumFilters IEnumFilters;
76 typedef struct IEnumMediaTypes IEnumMediaTypes;
77 typedef struct IEnumPins IEnumPins;
78 typedef struct IEnumRegFilters IEnumRegFilters;
79 typedef struct IEnumStreamIdMap IEnumStreamIdMap;
80 typedef struct IFileSinkFilter IFileSinkFilter;
81 typedef struct IFileSinkFilter2 IFileSinkFilter2;
82 typedef struct IFileSourceFilter IFileSourceFilter;
83 typedef struct IFilterChain IFilterChain;
84 typedef struct IFilterGraph IFilterGraph;
85 typedef struct IFilterGraph2 IFilterGraph2;
86 typedef struct IFilterMapper IFilterMapper;
87 typedef struct IFilterMapper2 IFilterMapper2;
88 typedef struct IFilterMapper3 IFilterMapper3;
89 typedef struct IGraphBuilder IGraphBuilder;
90 typedef struct IGraphConfig IGraphConfig;
91 typedef struct IGraphConfigCallback IGraphConfigCallback;
92 typedef struct IGraphVersion IGraphVersion;
93 typedef struct IIPDVDec IIPDVDec;
94 typedef struct IMediaEventSink IMediaEventSink;
95 typedef struct IMediaPropertyBag IMediaPropertyBag;
96 typedef struct IMediaSample IMediaSample;
97 typedef struct IMediaSample2 IMediaSample2;
98 typedef struct IMediaSeeking IMediaSeeking;
99 typedef struct IMemAllocator IMemAllocator;
100 typedef struct IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp;
101 typedef struct IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp;
102 typedef struct IMemInputPin IMemInputPin;
103 typedef struct IMpeg2Demultiplexer IMpeg2Demultiplexer;
104 typedef struct IMPEG2StreamIdMap IMPEG2StreamIdMap;
105 typedef struct IOverlay IOverlay;
106 typedef struct IOverlayNotify IOverlayNotify;
107 typedef struct IOverlayNotify2 IOverlayNotify2;
108 typedef struct IPersistMediaPropertyBag IPersistMediaPropertyBag;
109 typedef struct IPin IPin;
110 typedef struct IPinConnection IPinConnection;
111 typedef struct IPinFlowControl IPinFlowControl;
112 typedef struct IQualityControl IQualityControl;
113 typedef struct IReferenceClock IReferenceClock;
114 typedef struct IReferenceClock2 IReferenceClock2;
115 typedef struct IResourceConsumer IResourceConsumer;
116 typedef struct IResourceManager IResourceManager;
117 typedef struct ISeekingPassThru ISeekingPassThru;
118 typedef struct IStreamBuilder IStreamBuilder;
119 typedef struct IVideoFrameStep IVideoFrameStep;
120
121 #ifndef __WINE_REFTIME_DEFINED_
122 #define __WINE_REFTIME_DEFINED_
123 typedef double REFTIME;
124 #endif /* __WINE_REFTIME_DEFINED_ */
125
126 typedef LONGLONG        REFERENCE_TIME;
127 typedef DWORD_PTR       HSEMAPHORE;
128 typedef DWORD_PTR       HEVENT;
129
130 /* enums. */
131
132 typedef enum
133 {
134         PINDIR_INPUT = 0,
135         PINDIR_OUTPUT = 1,
136 } PIN_DIRECTION;
137
138 typedef enum
139 {
140         State_Stopped = 0,
141         State_Paused = 1,
142         State_Running = 2,
143 } FILTER_STATE;
144
145 /* structs. */
146
147 typedef struct
148 {
149         GUID    majortype;
150         GUID    subtype;
151         BOOL    bFixedSizeSamples;
152         BOOL    bTemporalCompression;
153         ULONG   lSampleSize;
154         GUID    formattype;
155         IUnknown*       pUnk;
156         ULONG   cbFormat;
157         BYTE*   pbFormat;
158 } AM_MEDIA_TYPE;
159
160 typedef struct
161 {
162         long    cBuffers;
163         long    cbBuffer;
164         long    cbAlign;
165         long    cbPrefix;
166 } ALLOCATOR_PROPERTIES;
167
168 typedef struct
169 {
170         IBaseFilter*    pFilter;
171         PIN_DIRECTION   dir;
172         WCHAR           achName[ 128 ];
173 } PIN_INFO;
174
175 typedef struct
176 {
177         WCHAR           achName[ 128 ];
178         IFilterGraph*   pGraph;
179 } FILTER_INFO;
180
181 typedef struct
182 {
183         REFERENCE_TIME  tStart;
184         REFERENCE_TIME  tStop;
185         DWORD           dwStartCookie;
186         DWORD           dwStopCookie;
187         DWORD           dwFlags;
188 } AM_STREAM_INFO;
189
190 typedef struct tagCOLORKEY
191 {
192         DWORD           KeyType;
193         DWORD           PaletteIndex;
194         COLORREF        LowColorValue;
195         COLORREF        HighColorValue;
196 } COLORKEY;
197
198
199
200 /* defines. */
201
202 #define CHARS_IN_GUID   39
203 #define MAX_PIN_NAME    128
204 #define MAX_FILTER_NAME 128
205
206
207 /* interfaces. */
208
209 /**************************************************************************
210  *
211  * IMediaFilter interface
212  *
213  */
214
215 #define ICOM_INTERFACE IMediaFilter
216 #define IMediaFilter_METHODS \
217     ICOM_METHOD (HRESULT,Stop) \
218     ICOM_METHOD (HRESULT,Pause) \
219     ICOM_METHOD1(HRESULT,Run,REFERENCE_TIME,a1) \
220     ICOM_METHOD2(HRESULT,GetState,DWORD,a1,FILTER_STATE*,a2) \
221     ICOM_METHOD1(HRESULT,SetSyncSource,IReferenceClock*,a1) \
222     ICOM_METHOD1(HRESULT,GetSyncSource,IReferenceClock**,a1)
223
224 #define IMediaFilter_IMETHODS \
225     IPersist_IMETHODS \
226     IMediaFilter_METHODS
227
228 ICOM_DEFINE(IMediaFilter,IPersist)
229 #undef ICOM_INTERFACE
230
231     /*** IUnknown methods ***/
232 #define IMediaFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
233 #define IMediaFilter_AddRef(p) ICOM_CALL (AddRef,p)
234 #define IMediaFilter_Release(p) ICOM_CALL (Release,p)
235     /*** IPersist methods ***/
236 #define IMediaFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
237     /*** IMediaFilter methods ***/
238 #define IMediaFilter_Stop(p) ICOM_CALL (Stop,p)
239 #define IMediaFilter_Pause(p) ICOM_CALL (Pause,p)
240 #define IMediaFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
241 #define IMediaFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
242 #define IMediaFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
243 #define IMediaFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
244
245 /**************************************************************************
246  *
247  * IBaseFilter interface
248  *
249  */
250
251 #define ICOM_INTERFACE IBaseFilter
252 #define IBaseFilter_METHODS \
253     ICOM_METHOD1(HRESULT,EnumPins,IEnumPins**,a1) \
254     ICOM_METHOD2(HRESULT,FindPin,LPCWSTR,a1,IPin**,a2) \
255     ICOM_METHOD1(HRESULT,QueryFilterInfo,FILTER_INFO*,a1) \
256     ICOM_METHOD2(HRESULT,JoinFilterGraph,IFilterGraph*,a1,LPCWSTR,a2) \
257     ICOM_METHOD1(HRESULT,QueryVendorInfo,LPWSTR*,a1)
258
259 #define IBaseFilter_IMETHODS \
260     IMediaFilter_IMETHODS \
261     IBaseFilter_METHODS
262
263 ICOM_DEFINE(IBaseFilter,IMediaFilter)
264 #undef ICOM_INTERFACE
265
266     /*** IUnknown methods ***/
267 #define IBaseFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
268 #define IBaseFilter_AddRef(p) ICOM_CALL (AddRef,p)
269 #define IBaseFilter_Release(p) ICOM_CALL (Release,p)
270     /*** IPersist methods ***/
271 #define IBaseFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
272     /*** IMediaFilter methods ***/
273 #define IBaseFilter_Stop(p,a1) ICOM_CALL1(Stop,p,a1)
274 #define IBaseFilter_Pause(p,a1) ICOM_CALL1(Pause,p,a1)
275 #define IBaseFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
276 #define IBaseFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
277 #define IBaseFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
278 #define IBaseFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
279     /*** IBaseFilter methods ***/
280 #define IBaseFilter_EnumPins(p,a1) ICOM_CALL1(EnumPins,p,a1)
281 #define IBaseFilter_FindPin(p,a1,a2) ICOM_CALL2(FindPin,p,a1,a2)
282 #define IBaseFilter_QueryFilterInfo(p,a1) ICOM_CALL1(QueryFilterInfo,p,a1)
283 #define IBaseFilter_JoinFilterGraph(p,a1,a2) ICOM_CALL2(JoinFilterGraph,p,a1,a2)
284 #define IBaseFilter_QueryVendorInfo(p,a1) ICOM_CALL1(QueryVendorInfo,p,a1)
285
286 /**************************************************************************
287  *
288  * IEnumFilters interface
289  *
290  */
291
292 #define ICOM_INTERFACE IEnumFilters
293 #define IEnumFilters_METHODS \
294     ICOM_METHOD3(HRESULT,Next,ULONG,a1,IBaseFilter**,a2,ULONG*,a3) \
295     ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
296     ICOM_METHOD (HRESULT,Reset) \
297     ICOM_METHOD1(HRESULT,Clone,IEnumFilters**,a1)
298
299 #define IEnumFilters_IMETHODS \
300     IUnknown_IMETHODS \
301     IEnumFilters_METHODS
302
303 ICOM_DEFINE(IEnumFilters,IUnknown)
304 #undef ICOM_INTERFACE
305
306     /*** IUnknown methods ***/
307 #define IEnumFilters_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
308 #define IEnumFilters_AddRef(p) ICOM_CALL (AddRef,p)
309 #define IEnumFilters_Release(p) ICOM_CALL (Release,p)
310     /*** IEnumFilters methods ***/
311 #define IEnumFilters_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
312 #define IEnumFilters_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
313 #define IEnumFilters_Reset(p) ICOM_CALL (Reset,p)
314 #define IEnumFilters_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
315
316 /**************************************************************************
317  *
318  * IEnumMediaTypes interface
319  *
320  */
321
322 #define ICOM_INTERFACE IEnumMediaTypes
323 #define IEnumMediaTypes_METHODS \
324     ICOM_METHOD3(HRESULT,Next,ULONG,a1,AM_MEDIA_TYPE**,a2,ULONG*,a3) \
325     ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
326     ICOM_METHOD (HRESULT,Reset) \
327     ICOM_METHOD1(HRESULT,Clone,IEnumMediaTypes**,a1)
328
329 #define IEnumMediaTypes_IMETHODS \
330     IUnknown_IMETHODS \
331     IEnumMediaTypes_METHODS
332
333 ICOM_DEFINE(IEnumMediaTypes,IUnknown)
334 #undef ICOM_INTERFACE
335
336     /*** IUnknown methods ***/
337 #define IEnumMediaTypes_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
338 #define IEnumMediaTypes_AddRef(p) ICOM_CALL (AddRef,p)
339 #define IEnumMediaTypes_Release(p) ICOM_CALL (Release,p)
340     /*** IEnumMediaTypes methods ***/
341 #define IEnumMediaTypes_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
342 #define IEnumMediaTypes_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
343 #define IEnumMediaTypes_Reset(p) ICOM_CALL (Reset,p)
344 #define IEnumMediaTypes_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
345
346 /**************************************************************************
347  *
348  * IEnumPins interface
349  *
350  */
351
352 #define ICOM_INTERFACE IEnumPins
353 #define IEnumPins_METHODS \
354     ICOM_METHOD3(HRESULT,Next,ULONG,a1,IPin**,a2,ULONG*,a3) \
355     ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
356     ICOM_METHOD (HRESULT,Reset) \
357     ICOM_METHOD1(HRESULT,Clone,IEnumPins**,a1)
358
359 #define IEnumPins_IMETHODS \
360     IUnknown_IMETHODS \
361     IEnumPins_METHODS
362
363 ICOM_DEFINE(IEnumPins,IUnknown)
364 #undef ICOM_INTERFACE
365
366     /*** IUnknown methods ***/
367 #define IEnumPins_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
368 #define IEnumPins_AddRef(p) ICOM_CALL (AddRef,p)
369 #define IEnumPins_Release(p) ICOM_CALL (Release,p)
370     /*** IEnumPins methods ***/
371 #define IEnumPins_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
372 #define IEnumPins_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
373 #define IEnumPins_Reset(p) ICOM_CALL (Reset,p)
374 #define IEnumPins_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
375
376 /**************************************************************************
377  *
378  * IFileSourceFilter interface
379  *
380  */
381
382 #define ICOM_INTERFACE IFileSourceFilter
383 #define IFileSourceFilter_METHODS \
384     ICOM_METHOD2(HRESULT,Load,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
385     ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
386
387 #define IFileSourceFilter_IMETHODS \
388     IUnknown_IMETHODS \
389     IFileSourceFilter_METHODS
390
391 ICOM_DEFINE(IFileSourceFilter,IUnknown)
392 #undef ICOM_INTERFACE
393
394     /*** IUnknown methods ***/
395 #define IFileSourceFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
396 #define IFileSourceFilter_AddRef(p) ICOM_CALL (AddRef,p)
397 #define IFileSourceFilter_Release(p) ICOM_CALL (Release,p)
398     /*** IFileSourceFilter methods ***/
399 #define IFileSourceFilter_Load(p,a1,a2) ICOM_CALL2(Load,p,a1,a2)
400 #define IFileSourceFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
401
402 /**************************************************************************
403  *
404  * IFilterGraph interface
405  *
406  */
407
408 #define ICOM_INTERFACE IFilterGraph
409 #define IFilterGraph_METHODS \
410     ICOM_METHOD2(HRESULT,AddFilter,IBaseFilter*,a1,LPCWSTR,a2) \
411     ICOM_METHOD1(HRESULT,RemoveFilter,IBaseFilter*,a1) \
412     ICOM_METHOD1(HRESULT,EnumFilters,IEnumFilters**,a1) \
413     ICOM_METHOD2(HRESULT,FindFilterByName,LPCWSTR,a1,IBaseFilter**,a2) \
414     ICOM_METHOD3(HRESULT,ConnectDirect,IPin*,a1,IPin*,a2,const AM_MEDIA_TYPE*,a3) \
415     ICOM_METHOD1(HRESULT,Reconnect,IPin*,a1) \
416     ICOM_METHOD1(HRESULT,Disconnect,IPin*,a1) \
417     ICOM_METHOD (HRESULT,SetDefaultSyncSource)
418
419 #define IFilterGraph_IMETHODS \
420     IUnknown_IMETHODS \
421     IFilterGraph_METHODS
422
423 ICOM_DEFINE(IFilterGraph,IUnknown)
424 #undef ICOM_INTERFACE
425
426     /*** IUnknown methods ***/
427 #define IFilterGraph_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
428 #define IFilterGraph_AddRef(p) ICOM_CALL (AddRef,p)
429 #define IFilterGraph_Release(p) ICOM_CALL (Release,p)
430     /*** IFilterGraph methods ***/
431 #define IFilterGraph_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
432 #define IFilterGraph_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
433 #define IFilterGraph_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
434 #define IFilterGraph_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
435 #define IFilterGraph_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
436 #define IFilterGraph_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
437 #define IFilterGraph_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
438 #define IFilterGraph_SetDefaultSyncSource(p) ICOM_CALL (SetDefaultSyncSource,p)
439
440 /**************************************************************************
441  *
442  * IMediaSample interface
443  *
444  */
445
446 #define ICOM_INTERFACE IMediaSample
447 #define IMediaSample_METHODS \
448     ICOM_METHOD1(HRESULT,GetPointer,BYTE**,a1) \
449     ICOM_METHOD (long,GetSize) \
450     ICOM_METHOD2(HRESULT,GetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
451     ICOM_METHOD2(HRESULT,SetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
452     ICOM_METHOD (HRESULT,IsSyncPoint) \
453     ICOM_METHOD1(HRESULT,SetSyncPoint,BOOL,a1) \
454     ICOM_METHOD (HRESULT,IsPreroll) \
455     ICOM_METHOD1(HRESULT,SetPreroll,BOOL,a1) \
456     ICOM_METHOD (long,GetActualDataLength) \
457     ICOM_METHOD1(HRESULT,SetActualDataLength,long,a1) \
458     ICOM_METHOD1(HRESULT,GetMediaType,AM_MEDIA_TYPE**,a1) \
459     ICOM_METHOD1(HRESULT,SetMediaType,AM_MEDIA_TYPE*,a1) \
460     ICOM_METHOD (HRESULT,IsDiscontinuity) \
461     ICOM_METHOD1(HRESULT,SetDiscontinuity,BOOL,a1) \
462     ICOM_METHOD2(HRESULT,GetMediaTime,LONGLONG*,a1,LONGLONG*,a2) \
463     ICOM_METHOD2(HRESULT,SetMediaTime,LONGLONG*,a1,LONGLONG*,a2)
464
465 #define IMediaSample_IMETHODS \
466     IUnknown_IMETHODS \
467     IMediaSample_METHODS
468
469 ICOM_DEFINE(IMediaSample,IUnknown)
470 #undef ICOM_INTERFACE
471
472     /*** IUnknown methods ***/
473 #define IMediaSample_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
474 #define IMediaSample_AddRef(p) ICOM_CALL (AddRef,p)
475 #define IMediaSample_Release(p) ICOM_CALL (Release,p)
476     /*** IMediaSample methods ***/
477 #define IMediaSample_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
478 #define IMediaSample_GetSize(p) ICOM_CALL (GetSize,p)
479 #define IMediaSample_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
480 #define IMediaSample_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
481 #define IMediaSample_IsSyncPoint(p) ICOM_CALL (IsSyncPoint,p)
482 #define IMediaSample_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
483 #define IMediaSample_IsPreroll(p) ICOM_CALL (IsPreroll,p)
484 #define IMediaSample_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
485 #define IMediaSample_GetActualDataLength(p,a1) ICOM_CALL1(GetActualDataLength,p,a1)
486 #define IMediaSample_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
487 #define IMediaSample_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
488 #define IMediaSample_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
489 #define IMediaSample_IsDiscontinuity(p) ICOM_CALL (IsDiscontinuity,p)
490 #define IMediaSample_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
491 #define IMediaSample_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
492 #define IMediaSample_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
493
494 /**************************************************************************
495  *
496  * IMediaSample2 interface
497  *
498  */
499
500 #define ICOM_INTERFACE IMediaSample2
501 #define IMediaSample2_METHODS \
502     ICOM_METHOD2(HRESULT,GetProperties,DWORD,a1,BYTE*,a2) \
503     ICOM_METHOD2(HRESULT,SetProperties,DWORD,a1,const BYTE*,a2)
504
505 #define IMediaSample2_IMETHODS \
506     IMediaSample_IMETHODS \
507     IMediaSample2_METHODS
508
509 ICOM_DEFINE(IMediaSample2,IMediaSample)
510 #undef ICOM_INTERFACE
511
512     /*** IUnknown methods ***/
513 #define IMediaSample2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
514 #define IMediaSample2_AddRef(p) ICOM_CALL (AddRef,p)
515 #define IMediaSample2_Release(p) ICOM_CALL (Release,p)
516     /*** IMediaSample methods ***/
517 #define IMediaSample2_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
518 #define IMediaSample2_GetSize(p,a1) ICOM_CALL1(GetSize,p,a1)
519 #define IMediaSample2_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
520 #define IMediaSample2_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
521 #define IMediaSample2_IsSyncPoint(p,a1) ICOM_CALL1(IsSyncPoint,p,a1)
522 #define IMediaSample2_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
523 #define IMediaSample2_IsPreroll(p,a1) ICOM_CALL1(IsPreroll,p,a1)
524 #define IMediaSample2_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
525 #define IMediaSample2_GetActualDataLength(p,a1) ICOM_CALL1(GetActualDataLength,p,a1)
526 #define IMediaSample2_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
527 #define IMediaSample2_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
528 #define IMediaSample2_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
529 #define IMediaSample2_IsDiscontinuity(p,a1) ICOM_CALL1(IsDiscontinuity,p,a1)
530 #define IMediaSample2_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
531 #define IMediaSample2_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
532 #define IMediaSample2_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
533     /*** IMediaSample2 methods ***/
534 #define IMediaSample2_GetProperties(p,a1,a2) ICOM_CALL2(GetProperties,p,a1,a2)
535 #define IMediaSample2_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
536
537 /**************************************************************************
538  *
539  * IMemAllocator interface
540  *
541  */
542
543 #define ICOM_INTERFACE IMemAllocator
544 #define IMemAllocator_METHODS \
545     ICOM_METHOD2(HRESULT,SetProperties,ALLOCATOR_PROPERTIES*,a1,ALLOCATOR_PROPERTIES*,a2) \
546     ICOM_METHOD1(HRESULT,GetProperties,ALLOCATOR_PROPERTIES*,a1) \
547     ICOM_METHOD (HRESULT,Commit) \
548     ICOM_METHOD (HRESULT,Decommit) \
549     ICOM_METHOD4(HRESULT,GetBuffer,IMediaSample**,a1,REFERENCE_TIME*,a2,REFERENCE_TIME*,a3,DWORD,a4) \
550     ICOM_METHOD1(HRESULT,ReleaseBuffer,IMediaSample*,a1)
551
552 #define IMemAllocator_IMETHODS \
553     IUnknown_IMETHODS \
554     IMemAllocator_METHODS
555
556 ICOM_DEFINE(IMemAllocator,IUnknown)
557 #undef ICOM_INTERFACE
558
559     /*** IUnknown methods ***/
560 #define IMemAllocator_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
561 #define IMemAllocator_AddRef(p) ICOM_CALL (AddRef,p)
562 #define IMemAllocator_Release(p) ICOM_CALL (Release,p)
563     /*** IMemAllocator methods ***/
564 #define IMemAllocator_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
565 #define IMemAllocator_GetProperties(p,a1) ICOM_CALL1(GetProperties,p,a1)
566 #define IMemAllocator_Commit(p) ICOM_CALL (Commit,p)
567 #define IMemAllocator_Decommit(p) ICOM_CALL (Decommit,p)
568 #define IMemAllocator_GetBuffer(p,a1,a2,a3,a4) ICOM_CALL4(GetBuffer,p,a1,a2,a3,a4)
569 #define IMemAllocator_ReleaseBuffer(p,a1) ICOM_CALL1(ReleaseBuffer,p,a1)
570
571 /**************************************************************************
572  *
573  * IMemAllocatorCallbackTemp interface
574  *
575  */
576
577 #define ICOM_INTERFACE IMemAllocatorCallbackTemp
578 #define IMemAllocatorCallbackTemp_METHODS \
579     ICOM_METHOD1(HRESULT,SetNotify,IMemAllocatorNotifyCallbackTemp*,a1) \
580     ICOM_METHOD1(HRESULT,GetFreeCount,LONG*,a1)
581
582 #define IMemAllocatorCallbackTemp_IMETHODS \
583     IMemAllocator_IMETHODS \
584     IMemAllocatorCallbackTemp_METHODS
585
586 ICOM_DEFINE(IMemAllocatorCallbackTemp,IMemAllocator)
587 #undef ICOM_INTERFACE
588
589     /*** IUnknown methods ***/
590 #define IMemAllocatorCallbackTemp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
591 #define IMemAllocatorCallbackTemp_AddRef(p) ICOM_CALL (AddRef,p)
592 #define IMemAllocatorCallbackTemp_Release(p) ICOM_CALL (Release,p)
593     /*** IMemAllocator methods ***/
594 #define IMemAllocatorCallbackTemp_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
595 #define IMemAllocatorCallbackTemp_GetProperties(p,a1) ICOM_CALL1(GetProperties,p,a1)
596 #define IMemAllocatorCallbackTemp_Commit(p,a1) ICOM_CALL1(Commit,p,a1)
597 #define IMemAllocatorCallbackTemp_Decommit(p,a1) ICOM_CALL1(Decommit,p,a1)
598 #define IMemAllocatorCallbackTemp_GetBuffer(p,a1,a2,a3,a4) ICOM_CALL4(GetBuffer,p,a1,a2,a3,a4)
599 #define IMemAllocatorCallbackTemp_ReleaseBuffer(p,a1) ICOM_CALL1(ReleaseBuffer,p,a1)
600     /*** IMemAllocatorCallbackTemp methods ***/
601 #define IMemAllocatorCallbackTemp_SetNotify(p,a1) ICOM_CALL1(SetNotify,p,a1)
602 #define IMemAllocatorCallbackTemp_GetFreeCount(p,a1) ICOM_CALL1(GetFreeCount,p,a1)
603
604 /**************************************************************************
605  *
606  * IMemAllocatorNotifyCallbackTemp interface
607  *
608  */
609
610 #define ICOM_INTERFACE IMemAllocatorNotifyCallbackTemp
611 #define IMemAllocatorNotifyCallbackTemp_METHODS \
612     ICOM_METHOD (HRESULT,NotifyRelease)
613
614 #define IMemAllocatorNotifyCallbackTemp_IMETHODS \
615     IUnknown_IMETHODS \
616     IMemAllocatorNotifyCallbackTemp_METHODS
617
618 ICOM_DEFINE(IMemAllocatorNotifyCallbackTemp,IUnknown)
619 #undef ICOM_INTERFACE
620
621     /*** IUnknown methods ***/
622 #define IMemAllocatorNotifyCallbackTemp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
623 #define IMemAllocatorNotifyCallbackTemp_AddRef(p) ICOM_CALL (AddRef,p)
624 #define IMemAllocatorNotifyCallbackTemp_Release(p) ICOM_CALL (Release,p)
625     /*** IMemAllocatorNotifyCallbackTemp methods ***/
626 #define IMemAllocatorNotifyCallbackTemp_NotifyRelease(p) ICOM_CALL (NotifyRelease,p)
627
628 /**************************************************************************
629  *
630  * IMemInputPin interface
631  *
632  */
633
634 #define ICOM_INTERFACE IMemInputPin
635 #define IMemInputPin_METHODS \
636     ICOM_METHOD1(HRESULT,GetAllocator,IMemAllocator**,a1) \
637     ICOM_METHOD2(HRESULT,NotifyAllocator,IMemAllocator*,a1,BOOL,a2) \
638     ICOM_METHOD1(HRESULT,GetAllocatorRequirements,ALLOCATOR_PROPERTIES*,a1) \
639     ICOM_METHOD1(HRESULT,Receive,IMediaSample*,a1) \
640     ICOM_METHOD3(HRESULT,ReceiveMultiple,IMediaSample**,a1,long,a2,long*,a3) \
641     ICOM_METHOD (HRESULT,ReceiveCanBlock)
642
643 #define IMemInputPin_IMETHODS \
644     IUnknown_IMETHODS \
645     IMemInputPin_METHODS
646
647 ICOM_DEFINE(IMemInputPin,IUnknown)
648 #undef ICOM_INTERFACE
649
650     /*** IUnknown methods ***/
651 #define IMemInputPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
652 #define IMemInputPin_AddRef(p) ICOM_CALL (AddRef,p)
653 #define IMemInputPin_Release(p) ICOM_CALL (Release,p)
654     /*** IMemInputPin methods ***/
655 #define IMemInputPin_GetAllocator(p,a1) ICOM_CALL1(GetAllocator,p,a1)
656 #define IMemInputPin_NotifyAllocator(p,a1,a2) ICOM_CALL2(NotifyAllocator,p,a1,a2)
657 #define IMemInputPin_GetAllocatorRequirements(p,a1) ICOM_CALL1(GetAllocatorRequirements,p,a1)
658 #define IMemInputPin_Receive(p,a1) ICOM_CALL1(Receive,p,a1)
659 #define IMemInputPin_ReceiveMultiple(p,a1,a2,a3) ICOM_CALL3(ReceiveMultiple,p,a1,a2,a3)
660 #define IMemInputPin_ReceiveCanBlock(p) ICOM_CALL (ReceiveCanBlock,p)
661
662 /**************************************************************************
663  *
664  * IPin interface
665  *
666  */
667
668 #define ICOM_INTERFACE IPin
669 #define IPin_METHODS \
670     ICOM_METHOD2(HRESULT,Connect,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
671     ICOM_METHOD2(HRESULT,ReceiveConnection,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
672     ICOM_METHOD (HRESULT,Disconnect) \
673     ICOM_METHOD1(HRESULT,ConnectedTo,IPin**,a1) \
674     ICOM_METHOD1(HRESULT,ConnectionMediaType,AM_MEDIA_TYPE*,a1) \
675     ICOM_METHOD1(HRESULT,QueryPinInfo,PIN_INFO*,a1) \
676     ICOM_METHOD1(HRESULT,QueryDirection,PIN_DIRECTION*,a1) \
677     ICOM_METHOD1(HRESULT,QueryId,LPWSTR*,a1) \
678     ICOM_METHOD1(HRESULT,QueryAccept,const AM_MEDIA_TYPE*,a1) \
679     ICOM_METHOD1(HRESULT,EnumMediaTypes,IEnumMediaTypes**,a1) \
680     ICOM_METHOD2(HRESULT,QueryInternalConnections,IPin**,a1,ULONG*,a2) \
681     ICOM_METHOD (HRESULT,EndOfStream) \
682     ICOM_METHOD (HRESULT,BeginFlush) \
683     ICOM_METHOD (HRESULT,EndFlush) \
684     ICOM_METHOD3(HRESULT,NewSegment,REFERENCE_TIME,a1,REFERENCE_TIME,a2,double,a3)
685
686 #define IPin_IMETHODS \
687     IUnknown_IMETHODS \
688     IPin_METHODS
689
690 ICOM_DEFINE(IPin,IUnknown)
691 #undef ICOM_INTERFACE
692
693     /*** IUnknown methods ***/
694 #define IPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
695 #define IPin_AddRef(p) ICOM_CALL (AddRef,p)
696 #define IPin_Release(p) ICOM_CALL (Release,p)
697     /*** IPin methods ***/
698 #define IPin_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
699 #define IPin_ReceiveConnection(p,a1,a2) ICOM_CALL2(ReceiveConnection,p,a1,a2)
700 #define IPin_Disconnect(p) ICOM_CALL (Disconnect,p)
701 #define IPin_ConnectedTo(p,a1) ICOM_CALL1(ConnectedTo,p,a1)
702 #define IPin_ConnectionMediaType(p,a1) ICOM_CALL1(ConnectionMediaType,p,a1)
703 #define IPin_QueryPinInfo(p,a1) ICOM_CALL1(QueryPinInfo,p,a1)
704 #define IPin_QueryDirection(p,a1) ICOM_CALL1(QueryDirection,p,a1)
705 #define IPin_QueryId(p,a1) ICOM_CALL1(QueryId,p,a1)
706 #define IPin_QueryAccept(p,a1) ICOM_CALL1(QueryAccept,p,a1)
707 #define IPin_EnumMediaTypes(p,a1) ICOM_CALL1(EnumMediaTypes,p,a1)
708 #define IPin_QueryInternalConnections(p,a1,a2) ICOM_CALL2(QueryInternalConnections,p,a1,a2)
709 #define IPin_EndOfStream(p) ICOM_CALL (EndOfStream,p)
710 #define IPin_BeginFlush(p) ICOM_CALL (BeginFlush,p)
711 #define IPin_EndFlush(p) ICOM_CALL (EndFlush,p)
712 #define IPin_NewSegment(p,a1,a2,a3) ICOM_CALL3(NewSegment,p,a1,a2,a3)
713
714 /**************************************************************************
715  *
716  * IReferenceClock interface
717  *
718  */
719
720 #define ICOM_INTERFACE IReferenceClock
721 #define IReferenceClock_METHODS \
722     ICOM_METHOD1(HRESULT,GetTime,REFERENCE_TIME*,a1) \
723     ICOM_METHOD4(HRESULT,AdviseTime,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HEVENT,a3,DWORD_PTR*,a4) \
724     ICOM_METHOD4(HRESULT,AdvisePeriodic,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HSEMAPHORE,a3,DWORD_PTR*,a4) \
725     ICOM_METHOD1(HRESULT,Unadvise,DWORD_PTR,a1)
726
727 #define IReferenceClock_IMETHODS \
728     IUnknown_IMETHODS \
729     IReferenceClock_METHODS
730
731 ICOM_DEFINE(IReferenceClock,IUnknown)
732 #undef ICOM_INTERFACE
733
734     /*** IUnknown methods ***/
735 #define IReferenceClock_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
736 #define IReferenceClock_AddRef(p) ICOM_CALL (AddRef,p)
737 #define IReferenceClock_Release(p) ICOM_CALL (Release,p)
738     /*** IReferenceClock methods ***/
739 #define IReferenceClock_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
740 #define IReferenceClock_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
741 #define IReferenceClock_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
742 #define IReferenceClock_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
743
744 /**************************************************************************
745  *
746  * IReferenceClock2 interface
747  *
748  */
749
750 #define ICOM_INTERFACE IReferenceClock2
751 #define IReferenceClock2_METHODS
752
753 #define IReferenceClock2_IMETHODS \
754     IReferenceClock_IMETHODS \
755     IReferenceClock2_METHODS
756
757 ICOM_DEFINE(IReferenceClock2,IReferenceClock)
758 #undef ICOM_INTERFACE
759
760     /*** IUnknown methods ***/
761 #define IReferenceClock2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
762 #define IReferenceClock2_AddRef(p) ICOM_CALL (AddRef,p)
763 #define IReferenceClock2_Release(p) ICOM_CALL (Release,p)
764     /*** IReferenceClock methods ***/
765 #define IReferenceClock2_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
766 #define IReferenceClock2_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
767 #define IReferenceClock2_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
768 #define IReferenceClock2_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
769     /*** IReferenceClock2 methods ***/
770
771 #endif  /* __WINE_STRMIF_H_ */