Implement GetGlyphIndices. Tweak GetCharacterPlacement to use it.
[wine] / include / strmif.h
1 /*
2  * Copyright (C) 2001 Hidenori Takeshima
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef __WINE__
20 #include "rpc.h"
21 #include "rpcndr.h"
22 #ifndef COM_NO_WINDOWS_H
23 #include "windows.h"
24 #include "ole2.h"
25 #endif
26 #endif
27
28 #ifndef __WINE_STRMIF_H_
29 #define __WINE_STRMIF_H_
30
31 #include "wine/obj_base.h"
32 #include "wine/obj_misc.h"
33 #include "wine/obj_storage.h"
34 #include "wine/obj_moniker.h"
35 #include "wine/obj_oleaut.h"
36 #include "wine/obj_property.h"
37 #include "wine/obj_ksproperty.h"
38
39 /* undef GetTimeFormat - FIXME? */
40 #undef GetTimeFormat
41
42 /* FIXME - far from complete. */
43
44 /* forward decls. */
45
46 typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder;
47 typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder;
48 typedef struct IAMAudioInputMixer IAMAudioInputMixer;
49 typedef struct IAMBufferNegotiation IAMBufferNegotiation;
50 typedef struct IAMCameraControl IAMCameraControl;
51 typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
52 typedef struct IAMCrossbar IAMCrossbar;
53 typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator;
54 typedef struct IAMDevMemoryControl IAMDevMemoryControl;
55 typedef struct IAMDroppedFrames IAMDroppedFrames;
56 typedef struct IAMExtDevice IAMExtDevice;
57 typedef struct IAMExtTransport IAMExtTransport;
58 typedef struct IAMovie IAMovie;
59 typedef struct IAMovieSetup IAMovieSetup;
60 typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo;
61 typedef struct IAMStreamConfig IAMStreamConfig;
62 typedef struct IAMStreamControl IAMStreamControl;
63 typedef struct IAMStreamSelect IAMStreamSelect;
64 typedef struct IAMTimecodeDisplay IAMTimecodeDisplay;
65 typedef struct IAMTimecodeGenerator IAMTimecodeGenerator;
66 typedef struct IAMTimecodeReader IAMTimecodeReader;
67 typedef struct IAMTuner IAMTuner;
68 typedef struct IAMTunerNotification IAMTunerNotification;
69 typedef struct IAMTVAudio IAMTVAudio;
70 typedef struct IAMTVAudioNotification IAMTVAudioNotification;
71 typedef struct IAMTVTuner IAMTVTuner;
72 typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
73 typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;
74 typedef struct IAMVideoCompression IAMVideoCompression;
75 typedef struct IAMVideoProcAmp IAMVideoProcAmp;
76 typedef struct IAsyncReader IAsyncReader;
77 typedef struct IMediaFilter IMediaFilter;
78 typedef struct IBaseFilter IBaseFilter;
79 typedef struct IBPCSatelliteTuner IBPCSatelliteTuner;
80 typedef struct ICaptureGraphBuilder ICaptureGraphBuilder;
81 typedef struct IConfigAviMux IConfigAviMux;
82 typedef struct IConfigInterleaving IConfigInterleaving;
83 typedef struct ICreateDevEnum ICreateDevEnum;
84 typedef struct IDistributorNotify IDistributorNotify;
85 typedef struct IDvdControl IDvdControl;
86 typedef struct IDvdGraphBuilder IDvdGraphBuilder;
87 typedef struct IDvdInfo IDvdInfo;
88 typedef struct IEnumFilters IEnumFilters;
89 typedef struct IEnumMediaTypes IEnumMediaTypes;
90 typedef struct IEnumPins IEnumPins;
91 typedef struct IEnumRegFilters IEnumRegFilters;
92 typedef struct IFileSinkFilter IFileSinkFilter;
93 typedef struct IFileSinkFilter2 IFileSinkFilter2;
94 typedef struct IFileSourceFilter IFileSourceFilter;
95 typedef struct IFilterGraph IFilterGraph;
96 typedef struct IFilterGraph2 IFilterGraph2;
97 typedef struct IFilterMapper IFilterMapper;
98 typedef struct IFilterMapper2 IFilterMapper2;
99 typedef struct IGraphBuilder IGraphBuilder;
100 typedef struct IGraphVersion IGraphVersion;
101 typedef struct IMediaEventSink IMediaEventSink;
102 typedef struct IMediaPropertyBag IMediaPropertyBag;
103 typedef struct IMediaSample IMediaSample;
104 typedef struct IMediaSample2 IMediaSample2;
105 typedef struct IMediaSeeking IMediaSeeking;
106 typedef struct IMemAllocator IMemAllocator;
107 typedef struct IMemInputPin IMemInputPin;
108 typedef struct IOverlay IOverlay;
109 typedef struct IOverlayNotify IOverlayNotify;
110 typedef struct IPersistMediaPropertyBag IPersistMediaPropertyBag;
111 typedef struct IPin IPin;
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
120 /* GUIDs. */
121
122 DEFINE_GUID(IID_IAMAnalogVideoDecoder,0xC6E13350,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
123 DEFINE_GUID(IID_IAMAnalogVideoEncoder,0xC6E133B0,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
124 DEFINE_GUID(IID_IAMAudioInputMixer,0x54C39221,0x8380,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
125 DEFINE_GUID(IID_IAMBufferNegotiation,0x56ED71A0,0xAF5F,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
126 DEFINE_GUID(IID_IAMCameraControl,0xC6E13370,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
127 DEFINE_GUID(IID_IAMCopyCaptureFileProgress,0x670D1D20,0xA068,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
128 DEFINE_GUID(IID_IAMCrossbar,0xC6E13380,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
129 DEFINE_GUID(IID_IAMDevMemoryAllocator,0xC6545BF0,0xE76B,0x11D0,0xBD,0x52,0x00,0xA0,0xC9,0x11,0xCE,0x86);
130 DEFINE_GUID(IID_IAMDevMemoryControl,0xC6545BF1,0xE76B,0x11D0,0xBD,0x52,0x00,0xA0,0xC9,0x11,0xCE,0x86);
131 DEFINE_GUID(IID_IAMDroppedFrames,0xC6E13344,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
132 DEFINE_GUID(IID_IAMExtDevice,0xB5730A90,0x1A2C,0x11CF,0x8C,0x23,0x00,0xAA,0x00,0x6B,0x68,0x14);
133 DEFINE_GUID(IID_IAMExtTransport,0xA03CD5F0,0x3045,0x11CF,0x8C,0x44,0x00,0xAA,0x00,0x6B,0x68,0x14);
134 DEFINE_GUID(IID_IAMovie,0x359ACE10,0x7688,0x11CF,0x8B,0x23,0x00,0x80,0x5F,0x6C,0xEF,0x60);
135 DEFINE_GUID(IID_IAMovieSetup,0xA3D8CEC0,0x7E5A,0x11CF,0xBB,0xC5,0x00,0x80,0x5F,0x6C,0xEF,0x20);
136 DEFINE_GUID(IID_IAMPhysicalPinInfo,0xF938C991,0x3029,0x11CF,0x8C,0x44,0x00,0xAA,0x00,0x6B,0x68,0x14);
137 DEFINE_GUID(IID_IAMStreamConfig,0xC6E13340,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
138 DEFINE_GUID(IID_IAMStreamControl,0x36B73881,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
139 DEFINE_GUID(IID_IAMStreamSelect,0xC1960960,0x17F5,0x11D1,0xAB,0xE1,0x00,0xA0,0xC9,0x05,0xF3,0x75);
140 DEFINE_GUID(IID_IAMTimecodeDisplay,0x9B496CE2,0x811B,0x11CF,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14);
141 DEFINE_GUID(IID_IAMTimecodeGenerator,0x9B496CE0,0x811B,0x11CF,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14);
142 DEFINE_GUID(IID_IAMTimecodeReader,0x9B496CE1,0x811B,0x11CF,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14);
143 DEFINE_GUID(IID_IAMTuner,0x211A8761,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
144 DEFINE_GUID(IID_IAMTunerNotification,0x211A8760,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
145 DEFINE_GUID(IID_IAMTVAudio,0x83EC1C30,0x23D1,0x11D1,0x99,0xE6,0x00,0xA0,0xC9,0x56,0x02,0x66);
146 DEFINE_GUID(IID_IAMTVAudioNotification,0x83EC1C33,0x23D1,0x11D1,0x99,0xE6,0x00,0xA0,0xC9,0x56,0x02,0x66);
147 DEFINE_GUID(IID_IAMTVTuner,0x211A8766,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
148 DEFINE_GUID(IID_IAMVfwCaptureDialogs,0xD8D715A0,0x6E5E,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
149 DEFINE_GUID(IID_IAMVfwCompressDialogs,0xD8D715A3,0x6E5E,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
150 DEFINE_GUID(IID_IAMVideoCompression,0xC6E13343,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
151 DEFINE_GUID(IID_IAMVideoProcAmp,0xC6E13360,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
152 DEFINE_GUID(IID_IAsyncReader,0x56A868AA,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
153 DEFINE_GUID(IID_IMediaFilter,0x56A86899,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
154 DEFINE_GUID(IID_IBaseFilter,0x56A86895,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
155 DEFINE_GUID(IID_IBPCSatelliteTuner,0x211A8765,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
156 DEFINE_GUID(IID_ICaptureGraphBuilder,0xBF87B6E0,0x8C27,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
157 DEFINE_GUID(IID_IConfigAviMux,0x5ACD6AA0,0xF482,0x11CE,0x8B,0x67,0x00,0xAA,0x00,0xA3,0xF1,0xA6);
158 DEFINE_GUID(IID_IConfigInterleaving,0xBEE3D220,0x157B,0x11D0,0xBD,0x23,0x00,0xA0,0xC9,0x11,0xCE,0x86);
159 DEFINE_GUID(IID_ICreateDevEnum,0x29840822,0x5B84,0x11D0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86);
160 DEFINE_GUID(IID_IDistributorNotify,0x56A868AF,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
161 DEFINE_GUID(IID_IDvdControl,0xA70EFE61,0xE2A3,0x11D0,0xA9,0xBE,0x00,0xAA,0x00,0x61,0xBE,0x93);
162 DEFINE_GUID(IID_IDvdGraphBuilder,0xFCC152B6,0xF372,0x11D0,0x8E,0x00,0x00,0xC0,0x4F,0xD7,0xC0,0x8B);
163 DEFINE_GUID(IID_IDvdInfo,0xA70EFE60,0xE2A3,0x11D0,0xA9,0xBE,0x00,0xAA,0x00,0x61,0xBE,0x93);
164 DEFINE_GUID(IID_IEnumFilters,0x56A86893,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
165 DEFINE_GUID(IID_IEnumMediaTypes,0x89C31040,0x846B,0x11CE,0x97,0xD3,0x00,0xAA,0x00,0x55,0x59,0x5A);
166 DEFINE_GUID(IID_IEnumPins,0x56A86892,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
167 DEFINE_GUID(IID_IEnumRegFilters,0x56A868A4,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
168 DEFINE_GUID(IID_IFileSinkFilter,0xA2104830,0x7C70,0x11CF,0x8B,0xCE,0x00,0xAA,0x00,0xA3,0xF1,0xA6);
169 DEFINE_GUID(IID_IFileSinkFilter2,0x00855B90,0xCE1B,0x11D0,0xBD,0x4F,0x00,0xA0,0xC9,0x11,0xCE,0x86);
170 DEFINE_GUID(IID_IFileSourceFilter,0x56A868A6,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
171 DEFINE_GUID(IID_IFilterGraph,0x56A8689F,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
172 DEFINE_GUID(IID_IFilterGraph2,0x36B73882,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
173 DEFINE_GUID(IID_IFilterMapper,0x56A868A3,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
174 DEFINE_GUID(IID_IFilterMapper2,0xB79BB0B0,0x33C1,0x11D1,0xAB,0xE1,0x00,0xA0,0xC9,0x05,0xF3,0x75);
175 DEFINE_GUID(IID_IGraphBuilder,0x56A868A9,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
176 DEFINE_GUID(IID_IGraphVersion,0x56A868AB,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
177 DEFINE_GUID(IID_IMediaEventSink,0x56A868A2,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
178 DEFINE_GUID(IID_IMediaPropertyBag,0x6025A880,0xC0D5,0x11D0,0xBD,0x4E,0x00,0xA0,0xC9,0x11,0xCE,0x86);
179 DEFINE_GUID(IID_IMediaSample,0x56A8689A,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
180 DEFINE_GUID(IID_IMediaSample2,0x36B73884,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
181 DEFINE_GUID(IID_IMediaSeeking,0x36B73880,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
182 DEFINE_GUID(IID_IMemAllocator,0x56A8689C,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
183 DEFINE_GUID(IID_IMemInputPin,0x56A8689D,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
184 DEFINE_GUID(IID_IOverlay,0x56A868A1,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
185 DEFINE_GUID(IID_IOverlayNotify,0x56A868A0,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
186 DEFINE_GUID(IID_IPersistMediaPropertyBag,0x5738E040,0xB67F,0x11D0,0xBD,0x4D,0x00,0xA0,0xC9,0x11,0xCE,0x86);
187 DEFINE_GUID(IID_IPin,0x56A86891,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
188 DEFINE_GUID(IID_IQualityControl,0x56A868A5,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
189 DEFINE_GUID(IID_IReferenceClock,0x56A86897,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
190 DEFINE_GUID(IID_IReferenceClock2,0x36B73885,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
191 DEFINE_GUID(IID_IResourceConsumer,0x56A868AD,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
192 DEFINE_GUID(IID_IResourceManager,0x56A868AC,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
193 DEFINE_GUID(IID_ISeekingPassThru,0x36B73883,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
194 DEFINE_GUID(IID_IStreamBuilder,0x56A868BF,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
195
196
197 #ifndef __WINE_REFTIME_DEFINED_
198 #define __WINE_REFTIME_DEFINED_
199 typedef double REFTIME;
200 #endif /* __WINE_REFTIME_DEFINED_ */
201
202 typedef LONGLONG        REFERENCE_TIME;
203 typedef DWORD_PTR       HSEMAPHORE;
204 typedef DWORD_PTR       HEVENT;
205
206 /* enums. */
207
208 typedef enum
209 {
210         PINDIR_INPUT = 0,
211         PINDIR_OUTPUT = 1,
212 } PIN_DIRECTION;
213
214 typedef enum
215 {
216         State_Stopped = 0,
217         State_Paused = 1,
218         State_Running = 2,
219 } FILTER_STATE;
220
221 typedef enum
222 {
223         Famine = 0,
224         Flood = 1,
225 } QualityMessageType;
226
227 typedef enum
228 {
229         REG_PINFLAG_B_ZERO = 0x1,
230         REG_PINFLAG_B_RENDERER = 0x2,
231         REG_PINFLAG_B_MANY = 0x4,
232         REG_PINFLAG_B_OUTPUT = 0x8,
233 } REG_PINFLAG;
234
235 typedef enum
236 {
237         AM_SAMPLE_SPLICEPOINT           = 0x1,
238         AM_SAMPLE_PREROLL               = 0x2,
239         AM_SAMPLE_DATADISCONTINUITY     = 0x4,
240         AM_SAMPLE_TYPECHANGED           = 0x8,
241         AM_SAMPLE_TIMEVALID             = 0x10,
242         AM_SAMPLE_TIMEDISCONTINUITY     = 0x40,
243         AM_SAMPLE_FLUSH_ON_PAUSE        = 0x80,
244         AM_SAMPLE_STOPVALID             = 0x100,
245         AM_SAMPLE_ENDOFSTREAM           = 0x200,
246
247         AM_STREAM_MEDIA                 = 0,
248         AM_STREAM_CONTROL               = 1
249 } AM_SAMPLE_PROPERTY_FLAGS;
250
251 enum __MIDL_IFilterMapper_0001
252 {
253         MERIT_PREFERRED = 0x800000,
254         MERIT_NORMAL    = 0x600000,
255         MERIT_UNLIKELY  = 0x400000,
256         MERIT_DO_NOT_USE        = 0x200000,
257         MERIT_HW_COMPRESSOR     = 0x100050,
258         MERIT_SW_COMPRESSOR     = 0x100000,
259 };
260
261 typedef enum
262 {
263         AM_FILE_OVERWRITE = 0x0001,
264 } AM_FILESINK_FLAGS;
265
266 typedef enum
267 {
268         AM_SEEKING_NoPositioning                = 0x0000,
269         AM_SEEKING_AbsolutePositioning          = 0x0001,
270         AM_SEEKING_RelativePositioning          = 0x0002,
271         AM_SEEKING_IncrementalPositioning       = 0x0003,
272         AM_SEEKING_PositioningBitsMask          = 0x0003,
273
274         AM_SEEKING_SeekToKeyFrame               = 0x0004,
275         AM_SEEKING_ReturnTime                   = 0x0008,
276         AM_SEEKING_Segment                      = 0x0010,
277         AM_SEEKING_NoFlush                      = 0x0020,
278 } AM_SEEKING_SEEKING_FLAGS;
279
280 typedef enum
281 {
282         AM_SEEKING_CanSeekAbsolute      = 0x0001,
283         AM_SEEKING_CanSeekForwards      = 0x0002,
284         AM_SEEKING_CanSeekBackwards     = 0x0004,
285         AM_SEEKING_CanGetCurrentPos     = 0x0008,
286         AM_SEEKING_CanGetStopPos        = 0x0010,
287         AM_SEEKING_CanGetDuration       = 0x0020,
288         AM_SEEKING_CanPlayBackwards     = 0x0040,
289         AM_SEEKING_CanDoSegments        = 0x0080,
290         AM_SEEKING_Source               = 0x0100,
291 } AM_SEEKING_SEEKING_CAPABILITIES;
292
293 enum _AM_RENSDEREXFLAGS
294 {
295         AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x0001,
296 };
297
298
299
300 /* structs. */
301
302 typedef struct
303 {
304         GUID    majortype;
305         GUID    subtype;
306         BOOL    bFixedSizeSamples;
307         BOOL    bTemporalCompression;
308         ULONG   lSampleSize;
309         GUID    formattype;
310         IUnknown*       pUnk;
311         ULONG   cbFormat;
312         BYTE*   pbFormat;
313 } AM_MEDIA_TYPE;
314
315 typedef struct
316 {
317         long    cBuffers;
318         long    cbBuffer;
319         long    cbAlign;
320         long    cbPrefix;
321 } ALLOCATOR_PROPERTIES;
322
323 typedef struct
324 {
325         IBaseFilter*    pFilter;
326         PIN_DIRECTION   dir;
327         WCHAR           achName[ 128 ];
328 } PIN_INFO;
329
330 typedef struct
331 {
332         WCHAR           achName[ 128 ];
333         IFilterGraph*   pGraph;
334 } FILTER_INFO;
335
336 typedef struct
337 {
338         REFERENCE_TIME  tStart;
339         REFERENCE_TIME  tStop;
340         DWORD           dwStartCookie;
341         DWORD           dwStopCookie;
342         DWORD           dwFlags;
343 } AM_STREAM_INFO;
344
345 typedef struct tagCOLORKEY
346 {
347         DWORD           KeyType;
348         DWORD           PaletteIndex;
349         COLORREF        LowColorValue;
350         COLORREF        HighColorValue;
351 } COLORKEY;
352
353 typedef struct
354 {
355         QualityMessageType      Type;
356         long                    Proportion;
357         REFERENCE_TIME          Late;
358         REFERENCE_TIME          TimeStamp;
359 } Quality;
360
361 typedef struct
362 {
363         const CLSID*    clsMajorType;
364         const CLSID*    clsMinorType;
365 } REGPINTYPES;
366
367 typedef struct
368 {
369         LPWSTR  strName;
370         BOOL    bRendered;
371         BOOL    bOutput;
372         BOOL    bZero;
373         BOOL    bMany;
374         const CLSID*    clsConnectsToFilter;
375         const WCHAR*    strConnectsToPin;
376         UINT    nMediaTypes;
377         const REGPINTYPES*      lpMediaType;
378 } REGFILTERPINS;
379
380 typedef struct
381 {
382         CLSID   clsMedium;
383         DWORD   dw1;
384         DWORD   dw2;
385 } REGPINMEDIUM;
386
387 typedef struct
388 {
389         DWORD   dwFlags;
390         UINT    cInstances;
391         UINT    nMediaTypes;
392         const REGPINTYPES*      lpMediaType;
393         UINT    nMediums;
394         const REGPINMEDIUM*     lpMedium;
395         const CLSID*    clsPinCategory;
396 } REGFILTERPINS2;
397
398 typedef struct
399 {
400         DWORD   dwVersion;
401         DWORD   dwMerit;
402         union {
403                 struct {
404                         ULONG   cPins;
405                         const REGFILTERPINS*    rgPins;
406                 } DUMMYSTRUCTNAME1;
407                 struct {
408                         ULONG   cPins2;
409                         const REGFILTERPINS2*   rgPins2;
410                 } DUMMYSTRUCTNAME2;
411         } DUMMYUNIONNAME;
412 } REGFILTER2;
413
414 typedef struct
415 {
416         DWORD           cbData;
417         DWORD           dwTypeSpecificFlags;
418         DWORD           dwSampleFlags;
419         LONG            lActual;
420         REFERENCE_TIME  tStart;
421         REFERENCE_TIME  tStop;
422         DWORD           dwStreamId;
423         AM_MEDIA_TYPE*  pMediaType;
424         BYTE*           pbBuffer;
425         LONG            cbBuffer;
426 } AM_SAMPLE2_PROPERTIES;
427
428
429
430 /* defines. */
431
432 #define CHARS_IN_GUID   39
433 #define MAX_PIN_NAME    128
434 #define MAX_FILTER_NAME 128
435
436 #define AM_GBF_PREVFRAMESKIPPED         1
437 #define AM_GBF_NOTASYNCPOINT            2
438 #define AM_GBF_NOWAIT                   4
439
440
441 /* interfaces. */
442
443 /**************************************************************************
444  *
445  * IAsyncReader interface
446  *
447  */
448
449 #define ICOM_INTERFACE IAsyncReader
450 #define IAsyncReader_METHODS \
451     ICOM_METHOD3(HRESULT,RequestAllocator,IMemAllocator*,a1,ALLOCATOR_PROPERTIES*,a2,IMemAllocator**,a3) \
452     ICOM_METHOD2(HRESULT,Request,IMediaSample*,a1,DWORD_PTR,a2) \
453     ICOM_METHOD3(HRESULT,WaitForNext,DWORD,a1,IMediaSample**,a2,DWORD_PTR*,a3) \
454     ICOM_METHOD1(HRESULT,SyncReadAligned,IMediaSample*,a1) \
455     ICOM_METHOD3(HRESULT,SyncRead,LONGLONG,a1,LONG,a2,BYTE*,a3) \
456     ICOM_METHOD2(HRESULT,Length,LONGLONG*,a1,LONGLONG*,a2) \
457     ICOM_METHOD (HRESULT,BeginFlush) \
458     ICOM_METHOD (HRESULT,EndFlush)
459
460 #define IAsyncReader_IMETHODS \
461     IUnknown_IMETHODS \
462     IAsyncReader_METHODS
463
464 ICOM_DEFINE(IAsyncReader,IUnknown)
465 #undef ICOM_INTERFACE
466
467     /*** IUnknown methods ***/
468 #define IAsyncReader_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
469 #define IAsyncReader_AddRef(p) ICOM_CALL (AddRef,p)
470 #define IAsyncReader_Release(p) ICOM_CALL (Release,p)
471     /*** IAsyncReader methods ***/
472 #define IAsyncReader_RequestAllocator(p,a1,a2,a3) ICOM_CALL3(RequestAllocator,p,a1,a2,a3)
473 #define IAsyncReader_Request(p,a1,a2) ICOM_CALL2(Request,p,a1,a2)
474 #define IAsyncReader_WaitForNext(p,a1,a2,a3) ICOM_CALL3(WaitForNext,p,a1,a2,a3)
475 #define IAsyncReader_SyncReadAligned(p,a1) ICOM_CALL1(SyncReadAligned,p,a1)
476 #define IAsyncReader_SyncRead(p,a1,a2,a3) ICOM_CALL3(SyncRead,p,a1,a2,a3)
477 #define IAsyncReader_Length(p,a1,a2) ICOM_CALL2(Length,p,a1,a2)
478 #define IAsyncReader_BeginFlush(p) ICOM_CALL (BeginFlush,p)
479 #define IAsyncReader_EndFlush(p) ICOM_CALL (EndFlush,p)
480
481 /**************************************************************************
482  *
483  * IMediaFilter interface
484  *
485  */
486
487 #define ICOM_INTERFACE IMediaFilter
488 #define IMediaFilter_METHODS \
489     ICOM_METHOD (HRESULT,Stop) \
490     ICOM_METHOD (HRESULT,Pause) \
491     ICOM_METHOD1(HRESULT,Run,REFERENCE_TIME,a1) \
492     ICOM_METHOD2(HRESULT,GetState,DWORD,a1,FILTER_STATE*,a2) \
493     ICOM_METHOD1(HRESULT,SetSyncSource,IReferenceClock*,a1) \
494     ICOM_METHOD1(HRESULT,GetSyncSource,IReferenceClock**,a1)
495
496 #define IMediaFilter_IMETHODS \
497     IPersist_IMETHODS \
498     IMediaFilter_METHODS
499
500 ICOM_DEFINE(IMediaFilter,IPersist)
501 #undef ICOM_INTERFACE
502
503     /*** IUnknown methods ***/
504 #define IMediaFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
505 #define IMediaFilter_AddRef(p) ICOM_CALL (AddRef,p)
506 #define IMediaFilter_Release(p) ICOM_CALL (Release,p)
507     /*** IPersist methods ***/
508 #define IMediaFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
509     /*** IMediaFilter methods ***/
510 #define IMediaFilter_Stop(p) ICOM_CALL (Stop,p)
511 #define IMediaFilter_Pause(p) ICOM_CALL (Pause,p)
512 #define IMediaFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
513 #define IMediaFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
514 #define IMediaFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
515 #define IMediaFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
516
517 /**************************************************************************
518  *
519  * IBaseFilter interface
520  *
521  */
522
523 #define ICOM_INTERFACE IBaseFilter
524 #define IBaseFilter_METHODS \
525     ICOM_METHOD1(HRESULT,EnumPins,IEnumPins**,a1) \
526     ICOM_METHOD2(HRESULT,FindPin,LPCWSTR,a1,IPin**,a2) \
527     ICOM_METHOD1(HRESULT,QueryFilterInfo,FILTER_INFO*,a1) \
528     ICOM_METHOD2(HRESULT,JoinFilterGraph,IFilterGraph*,a1,LPCWSTR,a2) \
529     ICOM_METHOD1(HRESULT,QueryVendorInfo,LPWSTR*,a1)
530
531 #define IBaseFilter_IMETHODS \
532     IMediaFilter_IMETHODS \
533     IBaseFilter_METHODS
534
535 ICOM_DEFINE(IBaseFilter,IMediaFilter)
536 #undef ICOM_INTERFACE
537
538     /*** IUnknown methods ***/
539 #define IBaseFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
540 #define IBaseFilter_AddRef(p) ICOM_CALL (AddRef,p)
541 #define IBaseFilter_Release(p) ICOM_CALL (Release,p)
542     /*** IPersist methods ***/
543 #define IBaseFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
544     /*** IMediaFilter methods ***/
545 #define IBaseFilter_Stop(p) ICOM_CALL (Stop,p)
546 #define IBaseFilter_Pause(p) ICOM_CALL (Pause,p)
547 #define IBaseFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
548 #define IBaseFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
549 #define IBaseFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
550 #define IBaseFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
551     /*** IBaseFilter methods ***/
552 #define IBaseFilter_EnumPins(p,a1) ICOM_CALL1(EnumPins,p,a1)
553 #define IBaseFilter_FindPin(p,a1,a2) ICOM_CALL2(FindPin,p,a1,a2)
554 #define IBaseFilter_QueryFilterInfo(p,a1) ICOM_CALL1(QueryFilterInfo,p,a1)
555 #define IBaseFilter_JoinFilterGraph(p,a1,a2) ICOM_CALL2(JoinFilterGraph,p,a1,a2)
556 #define IBaseFilter_QueryVendorInfo(p,a1) ICOM_CALL1(QueryVendorInfo,p,a1)
557
558 /**************************************************************************
559  *
560  * ICaptureGraphBuilder interface
561  *
562  */
563
564 #define ICOM_INTERFACE ICaptureGraphBuilder
565 #define ICaptureGraphBuilder_METHODS \
566     ICOM_METHOD1(HRESULT,SetFiltergraph,IGraphBuilder*,a1) \
567     ICOM_METHOD1(HRESULT,GetFiltergraph,IGraphBuilder**,a1) \
568     ICOM_METHOD4(HRESULT,SetOutputFileName,const GUID*,a1,LPCOLESTR,a2,IBaseFilter**,a3,IFileSinkFilter**,a4) \
569     ICOM_METHOD4(HRESULT,FindInterface,const GUID*,a1,IBaseFilter*,a2,REFIID,a3,void**,a4) \
570     ICOM_METHOD4(HRESULT,RenderStream,const GUID*,a1,IUnknown*,a2,IBaseFilter*,a3,IBaseFilter*,a4) \
571     ICOM_METHOD6(HRESULT,ControlStream,const GUID*,a1,IBaseFilter*,a2,REFERENCE_TIME*,a3,REFERENCE_TIME*,a4,WORD,a5,WORD,a6) \
572     ICOM_METHOD2(HRESULT,AllocCapFile,LPCOLESTR,a1,DWORDLONG,a2) \
573     ICOM_METHOD4(HRESULT,CopyCaptureFile,LPOLESTR,a1,LPOLESTR,a2,int,a3,IAMCopyCaptureFileProgress*,a4)
574
575 #define ICaptureGraphBuilder_IMETHODS \
576     IUnknown_IMETHODS \
577     ICaptureGraphBuilder_METHODS
578
579 ICOM_DEFINE(ICaptureGraphBuilder,IUnknown)
580 #undef ICOM_INTERFACE
581
582     /*** IUnknown methods ***/
583 #define ICaptureGraphBuilder_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
584 #define ICaptureGraphBuilder_AddRef(p) ICOM_CALL (AddRef,p)
585 #define ICaptureGraphBuilder_Release(p) ICOM_CALL (Release,p)
586     /*** ICaptureGraphBuilder methods ***/
587 #define ICaptureGraphBuilder_SetFiltergraph(p,a1) ICOM_CALL1(SetFiltergraph,p,a1)
588 #define ICaptureGraphBuilder_GetFiltergraph(p,a1) ICOM_CALL1(GetFiltergraph,p,a1)
589 #define ICaptureGraphBuilder_SetOutputFileName(p,a1,a2,a3,a4) ICOM_CALL4(SetOutputFileName,p,a1,a2,a3,a4)
590 #define ICaptureGraphBuilder_FindInterface(p,a1,a2,a3,a4) ICOM_CALL4(FindInterface,p,a1,a2,a3,a4)
591 #define ICaptureGraphBuilder_RenderStream(p,a1,a2,a3,a4) ICOM_CALL4(RenderStream,p,a1,a2,a3,a4)
592 #define ICaptureGraphBuilder_ControlStream(p,a1,a2,a3,a4,a5,a6) ICOM_CALL6(ControlStream,p,a1,a2,a3,a4,a5,a6)
593 #define ICaptureGraphBuilder_AllocCapFile(p,a1,a2) ICOM_CALL2(AllocCapFile,p,a1,a2)
594 #define ICaptureGraphBuilder_CopyCaptureFile(p,a1,a2,a3,a4) ICOM_CALL4(CopyCaptureFile,p,a1,a2,a3,a4)
595
596 /**************************************************************************
597  *
598  * ICreateDevEnum interface
599  *
600  */
601
602 #define ICOM_INTERFACE ICreateDevEnum
603 #define ICreateDevEnum_METHODS \
604     ICOM_METHOD3(HRESULT,CreateClassEnumerator,REFCLSID,a1,IEnumMoniker**,a2,DWORD,a3)
605
606 #define ICreateDevEnum_IMETHODS \
607     IUnknown_IMETHODS \
608     ICreateDevEnum_METHODS
609
610 ICOM_DEFINE(ICreateDevEnum,IUnknown)
611 #undef ICOM_INTERFACE
612
613     /*** IUnknown methods ***/
614 #define ICreateDevEnum_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
615 #define ICreateDevEnum_AddRef(p) ICOM_CALL (AddRef,p)
616 #define ICreateDevEnum_Release(p) ICOM_CALL (Release,p)
617     /*** ICreateDevEnum methods ***/
618 #define ICreateDevEnum_CreateClassEnumerator(p,a1,a2,a3) ICOM_CALL3(CreateClassEnumerator,p,a1,a2,a3)
619
620 /**************************************************************************
621  *
622  * IDistributorNotify interface
623  *
624  */
625
626 #define ICOM_INTERFACE IDistributorNotify
627 #define IDistributorNotify_METHODS \
628     ICOM_METHOD (HRESULT,Stop) \
629     ICOM_METHOD (HRESULT,Pause) \
630     ICOM_METHOD1(HRESULT,Run,REFERENCE_TIME,a1) \
631     ICOM_METHOD1(HRESULT,SetSyncSource,IReferenceClock*,a1) \
632     ICOM_METHOD (HRESULT,NotifyGraphChange)
633
634 #define IDistributorNotify_IMETHODS \
635     IUnknown_IMETHODS \
636     IDistributorNotify_METHODS
637
638 ICOM_DEFINE(IDistributorNotify,IUnknown)
639 #undef ICOM_INTERFACE
640
641     /*** IUnknown methods ***/
642 #define IDistributorNotify_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
643 #define IDistributorNotify_AddRef(p) ICOM_CALL (AddRef,p)
644 #define IDistributorNotify_Release(p) ICOM_CALL (Release,p)
645     /*** IDistributorNotify methods ***/
646 #define IDistributorNotify_Stop(p) ICOM_CALL (Stop,p)
647 #define IDistributorNotify_Pause(p) ICOM_CALL (Pause,p)
648 #define IDistributorNotify_Run(p,a1) ICOM_CALL1(Run,p,a1)
649 #define IDistributorNotify_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
650 #define IDistributorNotify_NotifyGraphChange(p) ICOM_CALL (NotifyGraphChange,p)
651
652 /**************************************************************************
653  *
654  * IEnumFilters interface
655  *
656  */
657
658 #define ICOM_INTERFACE IEnumFilters
659 #define IEnumFilters_METHODS \
660     ICOM_METHOD3(HRESULT,Next,ULONG,a1,IBaseFilter**,a2,ULONG*,a3) \
661     ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
662     ICOM_METHOD (HRESULT,Reset) \
663     ICOM_METHOD1(HRESULT,Clone,IEnumFilters**,a1)
664
665 #define IEnumFilters_IMETHODS \
666     IUnknown_IMETHODS \
667     IEnumFilters_METHODS
668
669 ICOM_DEFINE(IEnumFilters,IUnknown)
670 #undef ICOM_INTERFACE
671
672     /*** IUnknown methods ***/
673 #define IEnumFilters_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
674 #define IEnumFilters_AddRef(p) ICOM_CALL (AddRef,p)
675 #define IEnumFilters_Release(p) ICOM_CALL (Release,p)
676     /*** IEnumFilters methods ***/
677 #define IEnumFilters_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
678 #define IEnumFilters_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
679 #define IEnumFilters_Reset(p) ICOM_CALL (Reset,p)
680 #define IEnumFilters_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
681
682 /**************************************************************************
683  *
684  * IEnumMediaTypes interface
685  *
686  */
687
688 #define ICOM_INTERFACE IEnumMediaTypes
689 #define IEnumMediaTypes_METHODS \
690     ICOM_METHOD3(HRESULT,Next,ULONG,a1,AM_MEDIA_TYPE**,a2,ULONG*,a3) \
691     ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
692     ICOM_METHOD (HRESULT,Reset) \
693     ICOM_METHOD1(HRESULT,Clone,IEnumMediaTypes**,a1)
694
695 #define IEnumMediaTypes_IMETHODS \
696     IUnknown_IMETHODS \
697     IEnumMediaTypes_METHODS
698
699 ICOM_DEFINE(IEnumMediaTypes,IUnknown)
700 #undef ICOM_INTERFACE
701
702     /*** IUnknown methods ***/
703 #define IEnumMediaTypes_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
704 #define IEnumMediaTypes_AddRef(p) ICOM_CALL (AddRef,p)
705 #define IEnumMediaTypes_Release(p) ICOM_CALL (Release,p)
706     /*** IEnumMediaTypes methods ***/
707 #define IEnumMediaTypes_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
708 #define IEnumMediaTypes_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
709 #define IEnumMediaTypes_Reset(p) ICOM_CALL (Reset,p)
710 #define IEnumMediaTypes_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
711
712 /**************************************************************************
713  *
714  * IEnumPins interface
715  *
716  */
717
718 #define ICOM_INTERFACE IEnumPins
719 #define IEnumPins_METHODS \
720     ICOM_METHOD3(HRESULT,Next,ULONG,a1,IPin**,a2,ULONG*,a3) \
721     ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
722     ICOM_METHOD (HRESULT,Reset) \
723     ICOM_METHOD1(HRESULT,Clone,IEnumPins**,a1)
724
725 #define IEnumPins_IMETHODS \
726     IUnknown_IMETHODS \
727     IEnumPins_METHODS
728
729 ICOM_DEFINE(IEnumPins,IUnknown)
730 #undef ICOM_INTERFACE
731
732     /*** IUnknown methods ***/
733 #define IEnumPins_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
734 #define IEnumPins_AddRef(p) ICOM_CALL (AddRef,p)
735 #define IEnumPins_Release(p) ICOM_CALL (Release,p)
736     /*** IEnumPins methods ***/
737 #define IEnumPins_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
738 #define IEnumPins_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
739 #define IEnumPins_Reset(p) ICOM_CALL (Reset,p)
740 #define IEnumPins_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
741
742 /**************************************************************************
743  *
744  * IFileSinkFilter interface
745  *
746  */
747
748 #define ICOM_INTERFACE IFileSinkFilter
749 #define IFileSinkFilter_METHODS \
750     ICOM_METHOD2(HRESULT,SetFileName,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
751     ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
752
753 #define IFileSinkFilter_IMETHODS \
754     IUnknown_IMETHODS \
755     IFileSinkFilter_METHODS
756
757 ICOM_DEFINE(IFileSinkFilter,IUnknown)
758 #undef ICOM_INTERFACE
759
760     /*** IUnknown methods ***/
761 #define IFileSinkFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
762 #define IFileSinkFilter_AddRef(p) ICOM_CALL (AddRef,p)
763 #define IFileSinkFilter_Release(p) ICOM_CALL (Release,p)
764     /*** IFileSinkFilter methods ***/
765 #define IFileSinkFilter_SetFileName(p,a1,a2) ICOM_CALL2(SetFileName,p,a1,a2)
766 #define IFileSinkFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
767
768 /**************************************************************************
769  *
770  * IFileSinkFilter2 interface
771  *
772  */
773
774 #define ICOM_INTERFACE IFileSinkFilter2
775 #define IFileSinkFilter2_METHODS \
776     ICOM_METHOD1(HRESULT,SetMode,DWORD,a1) \
777     ICOM_METHOD1(HRESULT,GetMode,DWORD*,a1)
778
779 #define IFileSinkFilter2_IMETHODS \
780     IFileSinkFilter_IMETHODS \
781     IFileSinkFilter2_METHODS
782
783 ICOM_DEFINE(IFileSinkFilter2,IFileSinkFilter)
784 #undef ICOM_INTERFACE
785
786     /*** IUnknown methods ***/
787 #define IFileSinkFilter2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
788 #define IFileSinkFilter2_AddRef(p) ICOM_CALL (AddRef,p)
789 #define IFileSinkFilter2_Release(p) ICOM_CALL (Release,p)
790     /*** IFileSinkFilter methods ***/
791 #define IFileSinkFilter2_SetFileName(p,a1,a2) ICOM_CALL2(SetFileName,p,a1,a2)
792 #define IFileSinkFilter2_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
793     /*** IFileSinkFilter2 methods ***/
794 #define IFileSinkFilter2_SetMode(p,a1) ICOM_CALL1(SetMode,p,a1)
795 #define IFileSinkFilter2_GetMode(p,a1) ICOM_CALL1(GetMode,p,a1)
796
797 /**************************************************************************
798  *
799  * IFileSourceFilter interface
800  *
801  */
802
803 #define ICOM_INTERFACE IFileSourceFilter
804 #define IFileSourceFilter_METHODS \
805     ICOM_METHOD2(HRESULT,Load,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
806     ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
807
808 #define IFileSourceFilter_IMETHODS \
809     IUnknown_IMETHODS \
810     IFileSourceFilter_METHODS
811
812 ICOM_DEFINE(IFileSourceFilter,IUnknown)
813 #undef ICOM_INTERFACE
814
815     /*** IUnknown methods ***/
816 #define IFileSourceFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
817 #define IFileSourceFilter_AddRef(p) ICOM_CALL (AddRef,p)
818 #define IFileSourceFilter_Release(p) ICOM_CALL (Release,p)
819     /*** IFileSourceFilter methods ***/
820 #define IFileSourceFilter_Load(p,a1,a2) ICOM_CALL2(Load,p,a1,a2)
821 #define IFileSourceFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
822
823 /**************************************************************************
824  *
825  * IFilterMapper interface
826  *
827  */
828
829 #define ICOM_INTERFACE IFilterMapper
830 #define IFilterMapper_METHODS \
831     ICOM_METHOD3(HRESULT,RegisterFilter,CLSID,a1,LPCWSTR,a2,DWORD,a3) \
832     ICOM_METHOD3(HRESULT,RegisterFilterInstance,CLSID,a1,LPCWSTR,a2,CLSID*,a3) \
833     ICOM_METHOD8(HRESULT,RegisterPin,CLSID,a1,LPCWSTR,a2,BOOL,a3,BOOL,a4,BOOL,a5,BOOL,a6,CLSID,a7,LPCWSTR,a8) \
834     ICOM_METHOD4(HRESULT,RegisterPinType,CLSID,a1,LPCWSTR,a2,CLSID,a3,CLSID,a4) \
835     ICOM_METHOD1(HRESULT,UnregisterFilter,CLSID,a1) \
836     ICOM_METHOD1(HRESULT,UnregisterFilterInstance,CLSID,a1) \
837     ICOM_METHOD2(HRESULT,UnregisterPin,CLSID,a1,LPCWSTR,a2) \
838     ICOM_METHOD9(HRESULT,EnumMatchingFilters,IEnumRegFilters**,a1,DWORD,a2,BOOL,a3,CLSID,a4,CLSID,a5,BOOL,a6,BOOL,a7,CLSID,a8,CLSID,a9)
839
840 #define IFilterMapper_IMETHODS \
841     IUnknown_IMETHODS \
842     IFilterMapper_METHODS
843
844 ICOM_DEFINE(IFilterMapper,IUnknown)
845 #undef ICOM_INTERFACE
846
847     /*** IUnknown methods ***/
848 #define IFilterMapper_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
849 #define IFilterMapper_AddRef(p) ICOM_CALL (AddRef,p)
850 #define IFilterMapper_Release(p) ICOM_CALL (Release,p)
851     /*** IFilterMapper methods ***/
852 #define IFilterMapper_RegisterFilter(p,a1,a2,a3) ICOM_CALL3(RegisterFilter,p,a1,a2,a3)
853 #define IFilterMapper_RegisterFilterInstance(p,a1,a2,a3) ICOM_CALL3(RegisterFilterInstance,p,a1,a2,a3)
854 #define IFilterMapper_RegisterPin(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(RegisterPin,p,a1,a2,a3,a4,a5,a6,a7,a8)
855 #define IFilterMapper_RegisterPinType(p,a1,a2,a3,a4) ICOM_CALL4(RegisterPinType,p,a1,a2,a3,a4)
856 #define IFilterMapper_UnregisterFilter(p,a1) ICOM_CALL1(UnregisterFilter,p,a1)
857 #define IFilterMapper_UnregisterFilterInstance(p,a1) ICOM_CALL1(UnregisterFilterInstance,p,a1)
858 #define IFilterMapper_UnregisterPin(p,a1,a2) ICOM_CALL2(UnregisterPin,p,a1,a2)
859 #define IFilterMapper_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
860
861 /**************************************************************************
862  *
863  * IFilterMapper2 interface
864  *
865  */
866
867 #define ICOM_INTERFACE IFilterMapper2
868 #define IFilterMapper2_METHODS \
869     ICOM_METHOD3(HRESULT,CreateCategory,REFCLSID,a1,DWORD,a2,LPCWSTR,a3) \
870     ICOM_METHOD3(HRESULT,UnregisterFilter,const CLSID*,a1,const OLECHAR*,a2,REFCLSID,a3) \
871     ICOM_METHOD6(HRESULT,RegisterFilter,REFCLSID,a1,LPCWSTR,a2,IMoniker**,a3,const CLSID*,a4,const OLECHAR*,a5,const REGFILTER2*,a6) \
872     ICOM_METHOD15(HRESULT,EnumMatchingFilters,IEnumMoniker**,a1,DWORD,a2,BOOL,a3,DWORD,a4,BOOL,a5,DWORD,a6,const GUID*,a7,const REGPINMEDIUM*,a8,const CLSID*,a9,BOOL,a10,BOOL,a11,DWORD,a12,const GUID*,a13,const REGPINMEDIUM*,a14,const CLSID*,a15)
873
874 #define IFilterMapper2_IMETHODS \
875     IUnknown_IMETHODS \
876     IFilterMapper2_METHODS
877
878 ICOM_DEFINE(IFilterMapper2,IUnknown)
879 #undef ICOM_INTERFACE
880
881     /*** IUnknown methods ***/
882 #define IFilterMapper2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
883 #define IFilterMapper2_AddRef(p) ICOM_CALL (AddRef,p)
884 #define IFilterMapper2_Release(p) ICOM_CALL (Release,p)
885     /*** IFilterMapper2 methods ***/
886 #define IFilterMapper2_CreateCategory(p,a1,a2,a3) ICOM_CALL3(CreateCategory,p,a1,a2,a3)
887 #define IFilterMapper2_UnregisterFilter(p,a1,a2,a3) ICOM_CALL3(UnregisterFilter,p,a1,a2,a3)
888 #define IFilterMapper2_RegisterFilter(p,a1,a2,a3,a4,a5,a6) ICOM_CALL6(RegisterFilter,p,a1,a2,a3,a4,a5,a6)
889 #define IFilterMapper2_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) ICOM_CALL15(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
890
891 /**************************************************************************
892  *
893  * IFilterGraph interface
894  *
895  */
896
897 #define ICOM_INTERFACE IFilterGraph
898 #define IFilterGraph_METHODS \
899     ICOM_METHOD2(HRESULT,AddFilter,IBaseFilter*,a1,LPCWSTR,a2) \
900     ICOM_METHOD1(HRESULT,RemoveFilter,IBaseFilter*,a1) \
901     ICOM_METHOD1(HRESULT,EnumFilters,IEnumFilters**,a1) \
902     ICOM_METHOD2(HRESULT,FindFilterByName,LPCWSTR,a1,IBaseFilter**,a2) \
903     ICOM_METHOD3(HRESULT,ConnectDirect,IPin*,a1,IPin*,a2,const AM_MEDIA_TYPE*,a3) \
904     ICOM_METHOD1(HRESULT,Reconnect,IPin*,a1) \
905     ICOM_METHOD1(HRESULT,Disconnect,IPin*,a1) \
906     ICOM_METHOD (HRESULT,SetDefaultSyncSource)
907
908 #define IFilterGraph_IMETHODS \
909     IUnknown_IMETHODS \
910     IFilterGraph_METHODS
911
912 ICOM_DEFINE(IFilterGraph,IUnknown)
913 #undef ICOM_INTERFACE
914
915     /*** IUnknown methods ***/
916 #define IFilterGraph_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
917 #define IFilterGraph_AddRef(p) ICOM_CALL (AddRef,p)
918 #define IFilterGraph_Release(p) ICOM_CALL (Release,p)
919     /*** IFilterGraph methods ***/
920 #define IFilterGraph_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
921 #define IFilterGraph_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
922 #define IFilterGraph_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
923 #define IFilterGraph_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
924 #define IFilterGraph_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
925 #define IFilterGraph_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
926 #define IFilterGraph_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
927 #define IFilterGraph_SetDefaultSyncSource(p) ICOM_CALL (SetDefaultSyncSource,p)
928
929 /**************************************************************************
930  *
931  * IGraphBuilder interface
932  *
933  */
934
935 #define ICOM_INTERFACE IGraphBuilder
936 #define IGraphBuilder_METHODS \
937     ICOM_METHOD2(HRESULT,Connect,IPin*,a1,IPin*,a2) \
938     ICOM_METHOD1(HRESULT,Render,IPin*,a1) \
939     ICOM_METHOD2(HRESULT,RenderFile,LPCWSTR,a1,LPCWSTR,a2) \
940     ICOM_METHOD3(HRESULT,AddSourceFilter,LPCWSTR,a1,LPCWSTR,a2,IBaseFilter**,a3) \
941     ICOM_METHOD1(HRESULT,SetLogFile,DWORD_PTR,a1) \
942     ICOM_METHOD (HRESULT,Abort) \
943     ICOM_METHOD (HRESULT,ShouldOperationContinue)
944
945 #define IGraphBuilder_IMETHODS \
946     IFilterGraph_IMETHODS \
947     IGraphBuilder_METHODS
948
949 ICOM_DEFINE(IGraphBuilder,IFilterGraph)
950 #undef ICOM_INTERFACE
951
952     /*** IUnknown methods ***/
953 #define IGraphBuilder_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
954 #define IGraphBuilder_AddRef(p) ICOM_CALL (AddRef,p)
955 #define IGraphBuilder_Release(p) ICOM_CALL (Release,p)
956     /*** IFilterGraph methods ***/
957 #define IGraphBuilder_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
958 #define IGraphBuilder_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
959 #define IGraphBuilder_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
960 #define IGraphBuilder_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
961 #define IGraphBuilder_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
962 #define IGraphBuilder_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
963 #define IGraphBuilder_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
964 #define IGraphBuilder_SetDefaultSyncSource(p,a1) ICOM_CALL1(SetDefaultSyncSource,p,a1)
965     /*** IGraphBuilder methods ***/
966 #define IGraphBuilder_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
967 #define IGraphBuilder_Render(p,a1) ICOM_CALL1(Render,p,a1)
968 #define IGraphBuilder_RenderFile(p,a1,a2) ICOM_CALL2(RenderFile,p,a1,a2)
969 #define IGraphBuilder_AddSourceFilter(p,a1,a2,a3) ICOM_CALL3(AddSourceFilter,p,a1,a2,a3)
970 #define IGraphBuilder_SetLogFile(p,a1) ICOM_CALL1(SetLogFile,p,a1)
971 #define IGraphBuilder_Abort(p) ICOM_CALL (Abort,p)
972 #define IGraphBuilder_ShouldOperationContinue(p) ICOM_CALL (ShouldOperationContinue,p)
973
974 /**************************************************************************
975  *
976  * IFilterGraph2 interface
977  *
978  */
979
980 #define ICOM_INTERFACE IFilterGraph2
981 #define IFilterGraph2_METHODS \
982     ICOM_METHOD4(HRESULT,AddSourceFilterForMoniker,IMoniker*,a1,IBindCtx*,a2,LPCWSTR,a3,IBaseFilter**,a4) \
983     ICOM_METHOD2(HRESULT,ReconnectEx,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
984     ICOM_METHOD3(HRESULT,RenderEx,IPin*,a1,DWORD,a2,DWORD*,a3)
985
986 #define IFilterGraph2_IMETHODS \
987     IGraphBuilder_IMETHODS \
988     IFilterGraph2_METHODS
989
990 ICOM_DEFINE(IFilterGraph2,IGraphBuilder)
991 #undef ICOM_INTERFACE
992
993     /*** IUnknown methods ***/
994 #define IFilterGraph2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
995 #define IFilterGraph2_AddRef(p) ICOM_CALL (AddRef,p)
996 #define IFilterGraph2_Release(p) ICOM_CALL (Release,p)
997     /*** IFilterGraph methods ***/
998 #define IFilterGraph2_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
999 #define IFilterGraph2_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
1000 #define IFilterGraph2_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
1001 #define IFilterGraph2_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
1002 #define IFilterGraph2_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
1003 #define IFilterGraph2_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
1004 #define IFilterGraph2_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
1005 #define IFilterGraph2_SetDefaultSyncSource(p,a1) ICOM_CALL1(SetDefaultSyncSource,p,a1)
1006     /*** IGraphBuilder methods ***/
1007 #define IFilterGraph2_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
1008 #define IFilterGraph2_Render(p,a1) ICOM_CALL1(Render,p,a1)
1009 #define IFilterGraph2_RenderFile(p,a1,a2) ICOM_CALL2(RenderFile,p,a1,a2)
1010 #define IFilterGraph2_AddSourceFilter(p,a1,a2,a3) ICOM_CALL3(AddSourceFilter,p,a1,a2,a3)
1011 #define IFilterGraph2_SetLogFile(p,a1) ICOM_CALL1(SetLogFile,p,a1)
1012 #define IFilterGraph2_Abort(p) ICOM_CALL (Abort,p)
1013 #define IFilterGraph2_ShouldOperationContinue(p) ICOM_CALL (ShouldOperationContinue,p)
1014     /*** IFilterGraph2 methods ***/
1015 #define IFilterGraph2_AddSourceFilterForMoniker(p,a1,a2,a3,a4) ICOM_CALL4(AddSourceFilterForMoniker,p,a1,a2,a3,a4)
1016 #define IFilterGraph2_ReconnectEx(p,a1,a2) ICOM_CALL2(ReconnectEx,p,a1,a2)
1017 #define IFilterGraph2_RenderEx(p,a1,a2,a3) ICOM_CALL3(RenderEx,p,a1,a2,a3)
1018
1019 /**************************************************************************
1020  *
1021  * IGraphVersion interface
1022  *
1023  */
1024
1025 #define ICOM_INTERFACE IGraphVersion
1026 #define IGraphVersion_METHODS \
1027     ICOM_METHOD1(HRESULT,QueryVersion,LONG*,a1)
1028
1029 #define IGraphVersion_IMETHODS \
1030     IUnknown_IMETHODS \
1031     IGraphVersion_METHODS
1032
1033 ICOM_DEFINE(IGraphVersion,IUnknown)
1034 #undef ICOM_INTERFACE
1035
1036     /*** IUnknown methods ***/
1037 #define IGraphVersion_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1038 #define IGraphVersion_AddRef(p) ICOM_CALL (AddRef,p)
1039 #define IGraphVersion_Release(p) ICOM_CALL (Release,p)
1040     /*** IGraphVersion methods ***/
1041 #define IGraphVersion_QueryVersion(p,a1) ICOM_CALL1(QueryVersion,p,a1)
1042
1043
1044 /**************************************************************************
1045  *
1046  * IMediaEventSink interface
1047  *
1048  */
1049
1050 #define ICOM_INTERFACE IMediaEventSink
1051 #define IMediaEventSink_METHODS \
1052     ICOM_METHOD3(HRESULT,Notify,long,a1,LONG_PTR,a2,LONG_PTR,a3)
1053
1054 #define IMediaEventSink_IMETHODS \
1055     IUnknown_IMETHODS \
1056     IMediaEventSink_METHODS
1057
1058 ICOM_DEFINE(IMediaEventSink,IUnknown)
1059 #undef ICOM_INTERFACE
1060
1061     /*** IUnknown methods ***/
1062 #define IMediaEventSink_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1063 #define IMediaEventSink_AddRef(p) ICOM_CALL (AddRef,p)
1064 #define IMediaEventSink_Release(p) ICOM_CALL (Release,p)
1065     /*** IMediaEventSink methods ***/
1066 #define IMediaEventSink_Notify(p,a1,a2,a3) ICOM_CALL3(Notify,p,a1,a2,a3)
1067
1068 /**************************************************************************
1069  *
1070  * IMediaPropertyBag interface
1071  *
1072  */
1073
1074 #define ICOM_INTERFACE IMediaPropertyBag
1075 #define IMediaPropertyBag_METHODS \
1076     ICOM_METHOD3(HRESULT,EnumProperty,ULONG,a1,VARIANT*,a2,VARIANT*,a3)
1077
1078 #define IMediaPropertyBag_IMETHODS \
1079     IPropertyBag_IMETHODS \
1080     IMediaPropertyBag_METHODS
1081
1082 ICOM_DEFINE(IMediaPropertyBag,IPropertyBag)
1083 #undef ICOM_INTERFACE
1084
1085     /*** IUnknown methods ***/
1086 #define IMediaPropertyBag_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1087 #define IMediaPropertyBag_AddRef(p) ICOM_CALL (AddRef,p)
1088 #define IMediaPropertyBag_Release(p) ICOM_CALL (Release,p)
1089     /*** IPropertyBag methods ***/
1090 #define IMediaPropertyBag_Read(p,a1,a2,a3) ICOM_CALL3(Read,p,a1,a2,a3)
1091 #define IMediaPropertyBag_Write(p,a1,a2) ICOM_CALL2(Write,p,a1,a2)
1092     /*** IMediaPropertyBag methods ***/
1093 #define IMediaPropertyBag_EnumProperty(p,a1,a2,a3) ICOM_CALL3(EnumProperty,p,a1,a2,a3)
1094
1095 /**************************************************************************
1096  *
1097  * IMediaSample interface
1098  *
1099  */
1100
1101 #define ICOM_INTERFACE IMediaSample
1102 #define IMediaSample_METHODS \
1103     ICOM_METHOD1(HRESULT,GetPointer,BYTE**,a1) \
1104     ICOM_METHOD (long,GetSize) \
1105     ICOM_METHOD2(HRESULT,GetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
1106     ICOM_METHOD2(HRESULT,SetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
1107     ICOM_METHOD (HRESULT,IsSyncPoint) \
1108     ICOM_METHOD1(HRESULT,SetSyncPoint,BOOL,a1) \
1109     ICOM_METHOD (HRESULT,IsPreroll) \
1110     ICOM_METHOD1(HRESULT,SetPreroll,BOOL,a1) \
1111     ICOM_METHOD (long,GetActualDataLength) \
1112     ICOM_METHOD1(HRESULT,SetActualDataLength,long,a1) \
1113     ICOM_METHOD1(HRESULT,GetMediaType,AM_MEDIA_TYPE**,a1) \
1114     ICOM_METHOD1(HRESULT,SetMediaType,AM_MEDIA_TYPE*,a1) \
1115     ICOM_METHOD (HRESULT,IsDiscontinuity) \
1116     ICOM_METHOD1(HRESULT,SetDiscontinuity,BOOL,a1) \
1117     ICOM_METHOD2(HRESULT,GetMediaTime,LONGLONG*,a1,LONGLONG*,a2) \
1118     ICOM_METHOD2(HRESULT,SetMediaTime,LONGLONG*,a1,LONGLONG*,a2)
1119
1120 #define IMediaSample_IMETHODS \
1121     IUnknown_IMETHODS \
1122     IMediaSample_METHODS
1123
1124 ICOM_DEFINE(IMediaSample,IUnknown)
1125 #undef ICOM_INTERFACE
1126
1127     /*** IUnknown methods ***/
1128 #define IMediaSample_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1129 #define IMediaSample_AddRef(p) ICOM_CALL (AddRef,p)
1130 #define IMediaSample_Release(p) ICOM_CALL (Release,p)
1131     /*** IMediaSample methods ***/
1132 #define IMediaSample_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
1133 #define IMediaSample_GetSize(p) ICOM_CALL (GetSize,p)
1134 #define IMediaSample_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
1135 #define IMediaSample_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
1136 #define IMediaSample_IsSyncPoint(p) ICOM_CALL (IsSyncPoint,p)
1137 #define IMediaSample_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
1138 #define IMediaSample_IsPreroll(p) ICOM_CALL (IsPreroll,p)
1139 #define IMediaSample_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
1140 #define IMediaSample_GetActualDataLength(p) ICOM_CALL (GetActualDataLength,p)
1141 #define IMediaSample_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
1142 #define IMediaSample_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
1143 #define IMediaSample_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
1144 #define IMediaSample_IsDiscontinuity(p) ICOM_CALL (IsDiscontinuity,p)
1145 #define IMediaSample_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
1146 #define IMediaSample_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
1147 #define IMediaSample_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
1148
1149 /**************************************************************************
1150  *
1151  * IMediaSample2 interface
1152  *
1153  */
1154
1155 #define ICOM_INTERFACE IMediaSample2
1156 #define IMediaSample2_METHODS \
1157     ICOM_METHOD2(HRESULT,GetProperties,DWORD,a1,BYTE*,a2) \
1158     ICOM_METHOD2(HRESULT,SetProperties,DWORD,a1,const BYTE*,a2)
1159
1160 #define IMediaSample2_IMETHODS \
1161     IMediaSample_IMETHODS \
1162     IMediaSample2_METHODS
1163
1164 ICOM_DEFINE(IMediaSample2,IMediaSample)
1165 #undef ICOM_INTERFACE
1166
1167     /*** IUnknown methods ***/
1168 #define IMediaSample2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1169 #define IMediaSample2_AddRef(p) ICOM_CALL (AddRef,p)
1170 #define IMediaSample2_Release(p) ICOM_CALL (Release,p)
1171     /*** IMediaSample methods ***/
1172 #define IMediaSample2_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
1173 #define IMediaSample2_GetSize(p,a1) ICOM_CALL1(GetSize,p,a1)
1174 #define IMediaSample2_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
1175 #define IMediaSample2_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
1176 #define IMediaSample2_IsSyncPoint(p,a1) ICOM_CALL1(IsSyncPoint,p,a1)
1177 #define IMediaSample2_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
1178 #define IMediaSample2_IsPreroll(p,a1) ICOM_CALL1(IsPreroll,p,a1)
1179 #define IMediaSample2_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
1180 #define IMediaSample2_GetActualDataLength(p,a1) ICOM_CALL1(GetActualDataLength,p,a1)
1181 #define IMediaSample2_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
1182 #define IMediaSample2_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
1183 #define IMediaSample2_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
1184 #define IMediaSample2_IsDiscontinuity(p,a1) ICOM_CALL1(IsDiscontinuity,p,a1)
1185 #define IMediaSample2_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
1186 #define IMediaSample2_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
1187 #define IMediaSample2_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
1188     /*** IMediaSample2 methods ***/
1189 #define IMediaSample2_GetProperties(p,a1,a2) ICOM_CALL2(GetProperties,p,a1,a2)
1190 #define IMediaSample2_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
1191
1192 /**************************************************************************
1193  *
1194  * IMediaSeeking interface
1195  *
1196  */
1197
1198 #define ICOM_INTERFACE IMediaSeeking
1199 #define IMediaSeeking_METHODS \
1200     ICOM_METHOD1(HRESULT,GetCapabilities,DWORD*,a1) \
1201     ICOM_METHOD1(HRESULT,CheckCapabilities,DWORD*,a1) \
1202     ICOM_METHOD1(HRESULT,IsFormatSupported,const GUID*,a1) \
1203     ICOM_METHOD1(HRESULT,QueryPreferredFormat,GUID*,a1) \
1204     ICOM_METHOD1(HRESULT,GetTimeFormat,GUID*,a1) \
1205     ICOM_METHOD1(HRESULT,IsUsingTimeFormat,const GUID*,a1) \
1206     ICOM_METHOD1(HRESULT,SetTimeFormat,const GUID*,a1) \
1207     ICOM_METHOD1(HRESULT,GetDuration,LONGLONG*,a1) \
1208     ICOM_METHOD1(HRESULT,GetStopPosition,LONGLONG*,a1) \
1209     ICOM_METHOD1(HRESULT,GetCurrentPosition,LONGLONG*,a1) \
1210     ICOM_METHOD4(HRESULT,ConvertTimeFormat,LONGLONG*,a1,const GUID*,a2,LONGLONG,a3,const GUID*,a4) \
1211     ICOM_METHOD4(HRESULT,SetPositions,LONGLONG*,a1,DWORD,a2,LONGLONG*,a3,DWORD,a4) \
1212     ICOM_METHOD2(HRESULT,GetPositions,LONGLONG*,a1,LONGLONG*,a2) \
1213     ICOM_METHOD2(HRESULT,GetAvailable,LONGLONG*,a1,LONGLONG*,a2) \
1214     ICOM_METHOD1(HRESULT,SetRate,double,a1) \
1215     ICOM_METHOD1(HRESULT,GetRate,double*,a1) \
1216     ICOM_METHOD1(HRESULT,GetPreroll,LONGLONG*,a1)
1217
1218 #define IMediaSeeking_IMETHODS \
1219     IUnknown_IMETHODS \
1220     IMediaSeeking_METHODS
1221
1222 ICOM_DEFINE(IMediaSeeking,IUnknown)
1223 #undef ICOM_INTERFACE
1224
1225     /*** IUnknown methods ***/
1226 #define IMediaSeeking_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1227 #define IMediaSeeking_AddRef(p) ICOM_CALL (AddRef,p)
1228 #define IMediaSeeking_Release(p) ICOM_CALL (Release,p)
1229     /*** IMediaSeeking methods ***/
1230 #define IMediaSeeking_GetCapabilities(p,a1) ICOM_CALL1(GetCapabilities,p,a1)
1231 #define IMediaSeeking_CheckCapabilities(p,a1) ICOM_CALL1(CheckCapabilities,p,a1)
1232 #define IMediaSeeking_IsFormatSupported(p,a1) ICOM_CALL1(IsFormatSupported,p,a1)
1233 #define IMediaSeeking_QueryPreferredFormat(p,a1) ICOM_CALL1(QueryPreferredFormat,p,a1)
1234 #define IMediaSeeking_GetTimeFormat(p,a1) ICOM_CALL1(GetTimeFormat,p,a1)
1235 #define IMediaSeeking_IsUsingTimeFormat(p,a1) ICOM_CALL1(IsUsingTimeFormat,p,a1)
1236 #define IMediaSeeking_SetTimeFormat(p,a1) ICOM_CALL1(SetTimeFormat,p,a1)
1237 #define IMediaSeeking_GetDuration(p,a1) ICOM_CALL1(GetDuration,p,a1)
1238 #define IMediaSeeking_GetStopPosition(p,a1) ICOM_CALL1(GetStopPosition,p,a1)
1239 #define IMediaSeeking_GetCurrentPosition(p,a1) ICOM_CALL1(GetCurrentPosition,p,a1)
1240 #define IMediaSeeking_ConvertTimeFormat(p,a1,a2,a3,a4) ICOM_CALL4(ConvertTimeFormat,p,a1,a2,a3,a4)
1241 #define IMediaSeeking_SetPositions(p,a1,a2,a3,a4) ICOM_CALL4(SetPositions,p,a1,a2,a3,a4)
1242 #define IMediaSeeking_GetPositions(p,a1,a2) ICOM_CALL2(GetPositions,p,a1,a2)
1243 #define IMediaSeeking_GetAvailable(p,a1,a2) ICOM_CALL2(GetAvailable,p,a1,a2)
1244 #define IMediaSeeking_SetRate(p,a1) ICOM_CALL1(SetRate,p,a1)
1245 #define IMediaSeeking_GetRate(p,a1) ICOM_CALL1(GetRate,p,a1)
1246 #define IMediaSeeking_GetPreroll(p,a1) ICOM_CALL1(GetPreroll,p,a1)
1247
1248 /**************************************************************************
1249  *
1250  * IMemAllocator interface
1251  *
1252  */
1253
1254 #define ICOM_INTERFACE IMemAllocator
1255 #define IMemAllocator_METHODS \
1256     ICOM_METHOD2(HRESULT,SetProperties,ALLOCATOR_PROPERTIES*,a1,ALLOCATOR_PROPERTIES*,a2) \
1257     ICOM_METHOD1(HRESULT,GetProperties,ALLOCATOR_PROPERTIES*,a1) \
1258     ICOM_METHOD (HRESULT,Commit) \
1259     ICOM_METHOD (HRESULT,Decommit) \
1260     ICOM_METHOD4(HRESULT,GetBuffer,IMediaSample**,a1,REFERENCE_TIME*,a2,REFERENCE_TIME*,a3,DWORD,a4) \
1261     ICOM_METHOD1(HRESULT,ReleaseBuffer,IMediaSample*,a1)
1262
1263 #define IMemAllocator_IMETHODS \
1264     IUnknown_IMETHODS \
1265     IMemAllocator_METHODS
1266
1267 ICOM_DEFINE(IMemAllocator,IUnknown)
1268 #undef ICOM_INTERFACE
1269
1270     /*** IUnknown methods ***/
1271 #define IMemAllocator_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1272 #define IMemAllocator_AddRef(p) ICOM_CALL (AddRef,p)
1273 #define IMemAllocator_Release(p) ICOM_CALL (Release,p)
1274     /*** IMemAllocator methods ***/
1275 #define IMemAllocator_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
1276 #define IMemAllocator_GetProperties(p,a1) ICOM_CALL1(GetProperties,p,a1)
1277 #define IMemAllocator_Commit(p) ICOM_CALL (Commit,p)
1278 #define IMemAllocator_Decommit(p) ICOM_CALL (Decommit,p)
1279 #define IMemAllocator_GetBuffer(p,a1,a2,a3,a4) ICOM_CALL4(GetBuffer,p,a1,a2,a3,a4)
1280 #define IMemAllocator_ReleaseBuffer(p,a1) ICOM_CALL1(ReleaseBuffer,p,a1)
1281
1282
1283 /**************************************************************************
1284  *
1285  * IMemInputPin interface
1286  *
1287  */
1288
1289 #define ICOM_INTERFACE IMemInputPin
1290 #define IMemInputPin_METHODS \
1291     ICOM_METHOD1(HRESULT,GetAllocator,IMemAllocator**,a1) \
1292     ICOM_METHOD2(HRESULT,NotifyAllocator,IMemAllocator*,a1,BOOL,a2) \
1293     ICOM_METHOD1(HRESULT,GetAllocatorRequirements,ALLOCATOR_PROPERTIES*,a1) \
1294     ICOM_METHOD1(HRESULT,Receive,IMediaSample*,a1) \
1295     ICOM_METHOD3(HRESULT,ReceiveMultiple,IMediaSample**,a1,long,a2,long*,a3) \
1296     ICOM_METHOD (HRESULT,ReceiveCanBlock)
1297
1298 #define IMemInputPin_IMETHODS \
1299     IUnknown_IMETHODS \
1300     IMemInputPin_METHODS
1301
1302 ICOM_DEFINE(IMemInputPin,IUnknown)
1303 #undef ICOM_INTERFACE
1304
1305     /*** IUnknown methods ***/
1306 #define IMemInputPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1307 #define IMemInputPin_AddRef(p) ICOM_CALL (AddRef,p)
1308 #define IMemInputPin_Release(p) ICOM_CALL (Release,p)
1309     /*** IMemInputPin methods ***/
1310 #define IMemInputPin_GetAllocator(p,a1) ICOM_CALL1(GetAllocator,p,a1)
1311 #define IMemInputPin_NotifyAllocator(p,a1,a2) ICOM_CALL2(NotifyAllocator,p,a1,a2)
1312 #define IMemInputPin_GetAllocatorRequirements(p,a1) ICOM_CALL1(GetAllocatorRequirements,p,a1)
1313 #define IMemInputPin_Receive(p,a1) ICOM_CALL1(Receive,p,a1)
1314 #define IMemInputPin_ReceiveMultiple(p,a1,a2,a3) ICOM_CALL3(ReceiveMultiple,p,a1,a2,a3)
1315 #define IMemInputPin_ReceiveCanBlock(p) ICOM_CALL (ReceiveCanBlock,p)
1316
1317 /**************************************************************************
1318  *
1319  * IOverlay interface
1320  *
1321  */
1322
1323 #define ICOM_INTERFACE IOverlay
1324 #define IOverlay_METHODS \
1325     ICOM_METHOD2(HRESULT,GetPalette,DWORD*,a1,PALETTEENTRY**,a2) \
1326     ICOM_METHOD2(HRESULT,SetPalette,DWORD,a1,PALETTEENTRY*,a2) \
1327     ICOM_METHOD1(HRESULT,GetDefaultColorKey,COLORKEY*,a1) \
1328     ICOM_METHOD1(HRESULT,GetColorKey,COLORKEY*,a1) \
1329     ICOM_METHOD1(HRESULT,SetColorKey,COLORKEY*,a1) \
1330     ICOM_METHOD1(HRESULT,GetWindowHandle,HWND*,a1) \
1331     ICOM_METHOD3(HRESULT,GetClipList,RECT*,a1,RECT*,a2,RGNDATA**,a3) \
1332     ICOM_METHOD2(HRESULT,GetVideoPosition,RECT*,a1,RECT*,a2) \
1333     ICOM_METHOD2(HRESULT,Advise,IOverlayNotify*,a1,DWORD,a2) \
1334     ICOM_METHOD (HRESULT,Unadvise)
1335
1336 #define IOverlay_IMETHODS \
1337     IUnknown_IMETHODS \
1338     IOverlay_METHODS
1339
1340 ICOM_DEFINE(IOverlay,IUnknown)
1341 #undef ICOM_INTERFACE
1342
1343     /*** IUnknown methods ***/
1344 #define IOverlay_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1345 #define IOverlay_AddRef(p) ICOM_CALL (AddRef,p)
1346 #define IOverlay_Release(p) ICOM_CALL (Release,p)
1347     /*** IOverlay methods ***/
1348 #define IOverlay_GetPalette(p,a1,a2) ICOM_CALL2(GetPalette,p,a1,a2)
1349 #define IOverlay_SetPalette(p,a1,a2) ICOM_CALL2(SetPalette,p,a1,a2)
1350 #define IOverlay_GetDefaultColorKey(p,a1) ICOM_CALL1(GetDefaultColorKey,p,a1)
1351 #define IOverlay_GetColorKey(p,a1) ICOM_CALL1(GetColorKey,p,a1)
1352 #define IOverlay_SetColorKey(p,a1) ICOM_CALL1(SetColorKey,p,a1)
1353 #define IOverlay_GetWindowHandle(p,a1) ICOM_CALL1(GetWindowHandle,p,a1)
1354 #define IOverlay_GetClipList(p,a1,a2,a3) ICOM_CALL3(GetClipList,p,a1,a2,a3)
1355 #define IOverlay_GetVideoPosition(p,a1,a2) ICOM_CALL2(GetVideoPosition,p,a1,a2)
1356 #define IOverlay_Advise(p,a1,a2) ICOM_CALL2(Advise,p,a1,a2)
1357 #define IOverlay_Unadvise(p) ICOM_CALL1(Unadvise,p)
1358
1359 /**************************************************************************
1360  *
1361  * IPin interface
1362  *
1363  */
1364
1365 #define ICOM_INTERFACE IPin
1366 #define IPin_METHODS \
1367     ICOM_METHOD2(HRESULT,Connect,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
1368     ICOM_METHOD2(HRESULT,ReceiveConnection,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
1369     ICOM_METHOD (HRESULT,Disconnect) \
1370     ICOM_METHOD1(HRESULT,ConnectedTo,IPin**,a1) \
1371     ICOM_METHOD1(HRESULT,ConnectionMediaType,AM_MEDIA_TYPE*,a1) \
1372     ICOM_METHOD1(HRESULT,QueryPinInfo,PIN_INFO*,a1) \
1373     ICOM_METHOD1(HRESULT,QueryDirection,PIN_DIRECTION*,a1) \
1374     ICOM_METHOD1(HRESULT,QueryId,LPWSTR*,a1) \
1375     ICOM_METHOD1(HRESULT,QueryAccept,const AM_MEDIA_TYPE*,a1) \
1376     ICOM_METHOD1(HRESULT,EnumMediaTypes,IEnumMediaTypes**,a1) \
1377     ICOM_METHOD2(HRESULT,QueryInternalConnections,IPin**,a1,ULONG*,a2) \
1378     ICOM_METHOD (HRESULT,EndOfStream) \
1379     ICOM_METHOD (HRESULT,BeginFlush) \
1380     ICOM_METHOD (HRESULT,EndFlush) \
1381     ICOM_METHOD3(HRESULT,NewSegment,REFERENCE_TIME,a1,REFERENCE_TIME,a2,double,a3)
1382
1383 #define IPin_IMETHODS \
1384     IUnknown_IMETHODS \
1385     IPin_METHODS
1386
1387 ICOM_DEFINE(IPin,IUnknown)
1388 #undef ICOM_INTERFACE
1389
1390     /*** IUnknown methods ***/
1391 #define IPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1392 #define IPin_AddRef(p) ICOM_CALL (AddRef,p)
1393 #define IPin_Release(p) ICOM_CALL (Release,p)
1394     /*** IPin methods ***/
1395 #define IPin_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
1396 #define IPin_ReceiveConnection(p,a1,a2) ICOM_CALL2(ReceiveConnection,p,a1,a2)
1397 #define IPin_Disconnect(p) ICOM_CALL (Disconnect,p)
1398 #define IPin_ConnectedTo(p,a1) ICOM_CALL1(ConnectedTo,p,a1)
1399 #define IPin_ConnectionMediaType(p,a1) ICOM_CALL1(ConnectionMediaType,p,a1)
1400 #define IPin_QueryPinInfo(p,a1) ICOM_CALL1(QueryPinInfo,p,a1)
1401 #define IPin_QueryDirection(p,a1) ICOM_CALL1(QueryDirection,p,a1)
1402 #define IPin_QueryId(p,a1) ICOM_CALL1(QueryId,p,a1)
1403 #define IPin_QueryAccept(p,a1) ICOM_CALL1(QueryAccept,p,a1)
1404 #define IPin_EnumMediaTypes(p,a1) ICOM_CALL1(EnumMediaTypes,p,a1)
1405 #define IPin_QueryInternalConnections(p,a1,a2) ICOM_CALL2(QueryInternalConnections,p,a1,a2)
1406 #define IPin_EndOfStream(p) ICOM_CALL (EndOfStream,p)
1407 #define IPin_BeginFlush(p) ICOM_CALL (BeginFlush,p)
1408 #define IPin_EndFlush(p) ICOM_CALL (EndFlush,p)
1409 #define IPin_NewSegment(p,a1,a2,a3) ICOM_CALL3(NewSegment,p,a1,a2,a3)
1410
1411 /**************************************************************************
1412  *
1413  * IQualityControl interface
1414  *
1415  */
1416
1417 #define ICOM_INTERFACE IQualityControl
1418 #define IQualityControl_METHODS \
1419     ICOM_METHOD2(HRESULT,Notify,IBaseFilter*,a1,Quality,a2) \
1420     ICOM_METHOD1(HRESULT,SetSink,IQualityControl*,a1)
1421
1422 #define IQualityControl_IMETHODS \
1423     IUnknown_IMETHODS \
1424     IQualityControl_METHODS
1425
1426 ICOM_DEFINE(IQualityControl,IUnknown)
1427 #undef ICOM_INTERFACE
1428
1429     /*** IUnknown methods ***/
1430 #define IQualityControl_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1431 #define IQualityControl_AddRef(p) ICOM_CALL (AddRef,p)
1432 #define IQualityControl_Release(p) ICOM_CALL (Release,p)
1433     /*** IQualityControl methods ***/
1434 #define IQualityControl_Notify(p,a1,a2) ICOM_CALL2(Notify,p,a1,a2)
1435 #define IQualityControl_SetSink(p,a1) ICOM_CALL1(SetSink,p,a1)
1436
1437 /**************************************************************************
1438  *
1439  * IReferenceClock interface
1440  *
1441  */
1442
1443 #define ICOM_INTERFACE IReferenceClock
1444 #define IReferenceClock_METHODS \
1445     ICOM_METHOD1(HRESULT,GetTime,REFERENCE_TIME*,a1) \
1446     ICOM_METHOD4(HRESULT,AdviseTime,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HEVENT,a3,DWORD_PTR*,a4) \
1447     ICOM_METHOD4(HRESULT,AdvisePeriodic,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HSEMAPHORE,a3,DWORD_PTR*,a4) \
1448     ICOM_METHOD1(HRESULT,Unadvise,DWORD_PTR,a1)
1449
1450 #define IReferenceClock_IMETHODS \
1451     IUnknown_IMETHODS \
1452     IReferenceClock_METHODS
1453
1454 ICOM_DEFINE(IReferenceClock,IUnknown)
1455 #undef ICOM_INTERFACE
1456
1457     /*** IUnknown methods ***/
1458 #define IReferenceClock_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1459 #define IReferenceClock_AddRef(p) ICOM_CALL (AddRef,p)
1460 #define IReferenceClock_Release(p) ICOM_CALL (Release,p)
1461     /*** IReferenceClock methods ***/
1462 #define IReferenceClock_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
1463 #define IReferenceClock_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
1464 #define IReferenceClock_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
1465 #define IReferenceClock_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
1466
1467 /**************************************************************************
1468  *
1469  * IReferenceClock2 interface
1470  *
1471  */
1472
1473 #define ICOM_INTERFACE IReferenceClock2
1474 #define IReferenceClock2_METHODS
1475
1476 #define IReferenceClock2_IMETHODS \
1477     IReferenceClock_IMETHODS \
1478     IReferenceClock2_METHODS
1479
1480 ICOM_DEFINE(IReferenceClock2,IReferenceClock)
1481 #undef ICOM_INTERFACE
1482
1483     /*** IUnknown methods ***/
1484 #define IReferenceClock2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1485 #define IReferenceClock2_AddRef(p) ICOM_CALL (AddRef,p)
1486 #define IReferenceClock2_Release(p) ICOM_CALL (Release,p)
1487     /*** IReferenceClock methods ***/
1488 #define IReferenceClock2_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
1489 #define IReferenceClock2_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
1490 #define IReferenceClock2_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
1491 #define IReferenceClock2_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
1492     /*** IReferenceClock2 methods ***/
1493
1494 /**************************************************************************
1495  *
1496  * ISeekingPassThru interface
1497  *
1498  */
1499
1500 #define ICOM_INTERFACE ISeekingPassThru
1501 #define ISeekingPassThru_METHODS \
1502     ICOM_METHOD2(HRESULT,Init,BOOL,a1,IPin*,a2)
1503
1504 #define ISeekingPassThru_IMETHODS \
1505     IUnknown_IMETHODS \
1506     ISeekingPassThru_METHODS
1507
1508 ICOM_DEFINE(ISeekingPassThru,IUnknown)
1509 #undef ICOM_INTERFACE
1510
1511     /*** IUnknown methods ***/
1512 #define ISeekingPassThru_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
1513 #define ISeekingPassThru_AddRef(p) ICOM_CALL (AddRef,p)
1514 #define ISeekingPassThru_Release(p) ICOM_CALL (Release,p)
1515     /*** ISeekingPassThru methods ***/
1516 #define ISeekingPassThru_Init(p,a1,a2) ICOM_CALL2(Init,p,a1,a2)
1517
1518
1519
1520
1521 #endif  /* __WINE_STRMIF_H_ */