OSDN Git Service

* include/*: Add combined winsup/mingw and winsup/w32api include files.
[mingw/mingw-org-wsl.git] / include / vfw.h
1 #ifndef _VFW_H
2 #define _VFW_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #ifndef _WINDOWS_H
8 #include <windows.h>
9 #endif
10 #ifndef _MMSYSTEM_H
11 #include <mmsystem.h>
12 #endif
13 #if !defined  (_OLE2_H) && !defined (_OBJC_NO_COM)
14 #include <ole2.h>
15 #endif
16
17 #define VFWAPI WINAPI
18 #define VFWAPIV WINAPIV
19
20 #include <pshpack8.h>
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 #define ICERR_OK        0
27 #define ICERR_DONTDRAW  1
28 #define ICERR_NEWPALETTE        2
29 #define ICERR_GOTOKEYFRAME      3
30 #define ICERR_STOPDRAWING       4
31 #define ICERR_UNSUPPORTED       -1
32 #define ICERR_BADFORMAT -2
33 #define ICERR_MEMORY    -3
34 #define ICERR_INTERNAL  -4
35 #define ICERR_BADFLAGS  -5
36 #define ICERR_BADPARAM  -6
37 #define ICERR_BADSIZE   -7
38 #define ICERR_BADHANDLE -8
39 #define ICERR_CANTUPDATE        -9
40 #define ICERR_ABORT     -10
41 #define ICERR_ERROR     -100
42 #define ICERR_BADBITDEPTH       -200
43 #define ICERR_BADIMAGESIZE      -201
44 #define ICERR_CUSTOM    -400
45 #define ICCOMPRESSFRAMES_PADDING        0x01
46 #define ICM_USER        (DRV_USER+0x0000)
47 #define ICM_RESERVED_LOW        (DRV_USER+0x1000)
48 #define ICM_RESERVED_HIGH       (DRV_USER+0x2000)
49 #define ICM_RESERVED    ICM_RESERVED_LOW
50 #define ICM_GETSTATE    (ICM_RESERVED+0)
51 #define ICM_SETSTATE    (ICM_RESERVED+1)
52 #define ICM_GETINFO     (ICM_RESERVED+2)
53 #define ICM_CONFIGURE   (ICM_RESERVED+10)
54 #define ICM_ABOUT       (ICM_RESERVED+11)
55 #define ICM_GETDEFAULTQUALITY   (ICM_RESERVED+30)
56 #define ICM_GETQUALITY  (ICM_RESERVED+31)
57 #define ICM_SETQUALITY  (ICM_RESERVED+32)
58 #define ICM_SET (ICM_RESERVED+40)
59 #define ICM_GET (ICM_RESERVED+41)
60 #define ICM_FRAMERATE   mmioFOURCC('F','r','m','R')
61 #define ICM_KEYFRAMERATE        mmioFOURCC('K','e','y','R')
62 #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
63 #define ICM_COMPRESS_GET_SIZE   (ICM_USER+5)
64 #define ICM_COMPRESS_QUERY      (ICM_USER+6)
65 #define ICM_COMPRESS_BEGIN      (ICM_USER+7)
66 #define ICM_COMPRESS    (ICM_USER+8)
67 #define ICM_COMPRESS_END        (ICM_USER+9)
68 #define ICM_DECOMPRESS_GET_FORMAT       (ICM_USER+10)
69 #define ICM_DECOMPRESS_QUERY    (ICM_USER+11)
70 #define ICM_DECOMPRESS_BEGIN    (ICM_USER+12)
71 #define ICM_DECOMPRESS  (ICM_USER+13)
72 #define ICM_DECOMPRESS_END      (ICM_USER+14)
73 #define ICM_DECOMPRESS_SET_PALETTE      (ICM_USER+29)
74 #define ICM_DECOMPRESS_GET_PALETTE      (ICM_USER+30)
75 #define ICM_DRAW_QUERY  (ICM_USER+31)
76 #define ICM_DRAW_BEGIN  (ICM_USER+15)
77 #define ICM_DRAW_GET_PALETTE    (ICM_USER+16)
78 #define ICM_DRAW_START  (ICM_USER+18)
79 #define ICM_DRAW_STOP   (ICM_USER+19)
80 #define ICM_DRAW_END    (ICM_USER+21)
81 #define ICM_DRAW_GETTIME        (ICM_USER+32)
82 #define ICM_DRAW        (ICM_USER+33)
83 #define ICM_DRAW_WINDOW (ICM_USER+34)
84 #define ICM_DRAW_SETTIME        (ICM_USER+35)
85 #define ICM_DRAW_REALIZE        (ICM_USER+36)
86 #define ICM_DRAW_FLUSH  (ICM_USER+37)
87 #define ICM_DRAW_RENDERBUFFER   (ICM_USER+38)
88 #define ICM_DRAW_START_PLAY     (ICM_USER+39)
89 #define ICM_DRAW_STOP_PLAY      (ICM_USER+40)
90 #define ICM_DRAW_SUGGESTFORMAT  (ICM_USER+50)
91 #define ICM_DRAW_CHANGEPALETTE  (ICM_USER+51)
92 #define ICM_GETBUFFERSWANTED    (ICM_USER+41)
93 #define ICM_GETDEFAULTKEYFRAMERATE      (ICM_USER+42)
94 #define ICM_DECOMPRESSEX_BEGIN  (ICM_USER+60)
95 #define ICM_DECOMPRESSEX_QUERY  (ICM_USER+61)
96 #define ICM_DECOMPRESSEX        (ICM_USER+62)
97 #define ICM_DECOMPRESSEX_END    (ICM_USER+63)
98 #define ICM_COMPRESS_FRAMES_INFO        (ICM_USER+70)
99 #define ICM_SET_STATUS_PROC     (ICM_USER+72)
100 #define ICMF_CONFIGURE_QUERY    0x01
101 #define ICCOMPRESS_KEYFRAME     0x01
102 #define ICSTATUS_START  0
103 #define ICSTATUS_STATUS 1
104 #define ICSTATUS_END    2
105 #define ICSTATUS_ERROR  3
106 #define ICSTATUS_YIELD  4
107 #define ICMODE_COMPRESS 1
108 #define ICMODE_DECOMPRESS       2
109 #define ICMODE_FASTDECOMPRESS   3
110 #define ICMODE_QUERY    4
111 #define ICMODE_FASTCOMPRESS     5
112 #define ICMODE_DRAW     8
113 #define ICQUALITY_LOW   0
114 #define ICQUALITY_HIGH  10000
115 #define ICQUALITY_DEFAULT       -1
116 #define VIDCF_QUALITY   0x01
117 #define VIDCF_CRUNCH    0x02
118 #define VIDCF_TEMPORAL  0x04
119 #define VIDCF_COMPRESSFRAMES    0x08
120 #define VIDCF_DRAW      0x10
121 #define VIDCF_FASTTEMPORALC     0x20
122 #define VIDCF_FASTTEMPORALD     0x80
123 #define VIDCF_QUALITYTIME       0x40
124 #define VIDCF_FASTTEMPORAL      (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
125 #define ICMF_ABOUT_QUERY        0x01
126 #define ICDECOMPRESS_HURRYUP    0x80000000
127 #define ICDECOMPRESS_UPDATE     0x40000000
128 #define ICDECOMPRESS_PREROLL    0x20000000
129 #define ICDECOMPRESS_NULLFRAME  0x10000000
130 #define ICDECOMPRESS_NOTKEYFRAME        0x8000000
131 #define ICDRAW_QUERY    0x01L
132 #define ICDRAW_FULLSCREEN       0x02L
133 #define ICDRAW_HDC      0x04L
134 #define ICDRAW_ANIMATE  0x08L
135 #define ICDRAW_CONTINUE 0x10L
136 #define ICDRAW_MEMORYDC 0x20L
137 #define ICDRAW_UPDATING 0x40L
138 #define ICDRAW_RENDER   0x80L
139 #define ICDRAW_BUFFER   0x100L
140 #define ICINSTALL_UNICODE       0x8000
141 #define ICINSTALL_FUNCTION      0x01
142 #define ICINSTALL_DRIVER        0x02
143 #define ICINSTALL_HDRV  0x04
144 #define ICINSTALL_DRIVERW       0x8002
145 #define ICDRAW_HURRYUP  0x80000000L
146 #define ICDRAW_UPDATE   0x40000000L
147 #define ICDRAW_PREROLL  0x20000000L
148 #define ICDRAW_NULLFRAME        0x10000000L
149 #define ICDRAW_NOTKEYFRAME      0x8000000L
150 #define ICMF_COMPVARS_VALID     0x01
151 #define ICMF_CHOOSE_KEYFRAME    0x01
152 #define ICMF_CHOOSE_DATARATE    0x02
153 #define ICMF_CHOOSE_PREVIEW     0x04
154 #define ICMF_CHOOSE_ALLCOMPRESSORS      0x08
155 #define ICTYPE_VIDEO    mmioFOURCC('v','i','d','c')
156 #define ICTYPE_AUDIO    mmioFOURCC('a','u','d','c')
157 #define formtypeAVI     mmioFOURCC('A','V','I',' ')
158 #define listtypeAVIHEADER       mmioFOURCC('h','d','r','l')
159 #define ckidAVIMAINHDR  mmioFOURCC('a','v','i','h')
160 #define listtypeSTREAMHEADER    mmioFOURCC('s','t','r','l')
161 #define ckidSTREAMHEADER        mmioFOURCC('s','t','r','h')
162 #define ckidSTREAMFORMAT        mmioFOURCC('s','t','r','f')
163 #define ckidSTREAMHANDLERDATA   mmioFOURCC('s','t','r','d')
164 #define ckidSTREAMNAME  mmioFOURCC('s','t','r','n')
165 #define listtypeAVIMOVIE        mmioFOURCC('m','o','v','i')
166 #define listtypeAVIRECORD       mmioFOURCC('r','e','c',' ')
167 #define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
168 #define streamtypeANY   0UL
169 #define streamtypeVIDEO mmioFOURCC('v','i','d','s')
170 #define streamtypeAUDIO mmioFOURCC('a','u','d','s')
171 #define streamtypeMIDI  mmioFOURCC('m','i','d','s')
172 #define streamtypeTEXT  mmioFOURCC('t','x','t','s')
173 #define cktypeDIBbits   aviTWOCC('d','b')
174 #define cktypeDIBcompressed     aviTWOCC('d','c')
175 #define cktypePALchange aviTWOCC('p','c')
176 #define cktypeWAVEbytes aviTWOCC('w','b')
177 #define ckidAVIPADDING  mmioFOURCC('J','U','N','K')
178 #define FromHex(n) (((n)>='A')?((n)+10-'A'):((n)-'0'))
179 #define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc)))<<4)+(FromHex(HIBYTE(LOWORD(fcc))))))
180 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
181 #define ToHex(n) ((BYTE)(((n)>9)?((n)-10+'A'):((n)+'0')))
182 #define MAKEAVICKID(tcc, stream) MAKELONG((ToHex((stream)&0x0f)<<8)|(ToHex(((stream)&0xf0)>>4)),tcc)
183 #define AVIF_HASINDEX   0x10
184 #define AVIF_MUSTUSEINDEX       0x20
185 #define AVIF_ISINTERLEAVED      0x100
186 #define AVIF_TRUSTCKTYPE        0x800
187 #define AVIF_WASCAPTUREFILE     0x10000
188 #define AVIF_COPYRIGHTED        0x20000
189 #define AVI_HEADERSIZE  2048
190 #define AVISF_DISABLED  0x01
191 #define AVISF_VIDEO_PALCHANGES  0x10000
192 #define AVIIF_LIST      0x01
193 #define AVIIF_TWOCC     0x02
194 #define AVIIF_KEYFRAME  0x10
195 #define AVIIF_NOTIME    0x100
196 #define AVIIF_COMPUSE   0xfff0000
197 #define AVIIF_KEYFRAME  0x10
198 #define AVIGETFRAMEF_BESTDISPLAYFMT     1
199 #define AVISTREAMINFO_DISABLED  0x01
200 #define AVISTREAMINFO_FORMATCHANGES     0x10000
201 #define AVIFILEINFO_HASINDEX    0x10
202 #define AVIFILEINFO_MUSTUSEINDEX        0x20
203 #define AVIFILEINFO_ISINTERLEAVED       0x100
204 #define AVIFILEINFO_TRUSTCKTYPE 0x800
205 #define AVIFILEINFO_WASCAPTUREFILE      0x10000
206 #define AVIFILEINFO_COPYRIGHTED 0x20000
207 #define AVIFILECAPS_CANREAD     0x01
208 #define AVIFILECAPS_CANWRITE    0x02
209 #define AVIFILECAPS_ALLKEYFRAMES        0x10
210 #define AVIFILECAPS_NOCOMPRESSION       0x20
211 #define AVICOMPRESSF_INTERLEAVE 0x01
212 #define AVICOMPRESSF_DATARATE   0x02
213 #define AVICOMPRESSF_KEYFRAMES  0x04
214 #define AVICOMPRESSF_VALID      0x08
215 #define FIND_DIR        0x0000000fL
216 #define FIND_NEXT       0x00000001L
217 #define FIND_PREV       0x00000004L
218 #define FIND_FROM_START 0x00000008L
219 #define FIND_TYPE       0x000000f0L
220 #define FIND_KEY        0x00000010L
221 #define FIND_ANY        0x00000020L
222 #define FIND_FORMAT     0x00000040L
223 #define FIND_RET        0x0000f000L
224 #define FIND_POS        0x00000000L
225 #define FIND_LENGTH     0x00001000L
226 #define FIND_OFFSET     0x00002000L
227 #define FIND_SIZE       0x00003000L
228 #define FIND_INDEX      0x00004000L
229 #define AVIERR_OK       0
230 #define MAKE_AVIERR(e)  MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+e)
231 #define AVIERR_UNSUPPORTED      MAKE_AVIERR(101)
232 #define AVIERR_BADFORMAT        MAKE_AVIERR(102)
233 #define AVIERR_MEMORY   MAKE_AVIERR(103)
234 #define AVIERR_INTERNAL MAKE_AVIERR(104)
235 #define AVIERR_BADFLAGS MAKE_AVIERR(105)
236 #define AVIERR_BADPARAM MAKE_AVIERR(106)
237 #define AVIERR_BADSIZE  MAKE_AVIERR(107)
238 #define AVIERR_BADHANDLE        MAKE_AVIERR(108)
239 #define AVIERR_FILEREAD MAKE_AVIERR(109)
240 #define AVIERR_FILEWRITE        MAKE_AVIERR(110)
241 #define AVIERR_FILEOPEN MAKE_AVIERR(111)
242 #define AVIERR_COMPRESSOR       MAKE_AVIERR(112)
243 #define AVIERR_NOCOMPRESSOR     MAKE_AVIERR(113)
244 #define AVIERR_READONLY MAKE_AVIERR(114)
245 #define AVIERR_NODATA   MAKE_AVIERR(115)
246 #define AVIERR_BUFFERTOOSMALL   MAKE_AVIERR(116)
247 #define AVIERR_CANTCOMPRESS     MAKE_AVIERR(117)
248 #define AVIERR_USERABORT        MAKE_AVIERR(198)
249 #define AVIERR_ERROR    MAKE_AVIERR(199)
250 #define MCIWNDOPENF_NEW 0x0001
251 #define MCIWNDF_NOAUTOSIZEWINDOW        0x0001
252 #define MCIWNDF_NOPLAYBAR       0x0002
253 #define MCIWNDF_NOAUTOSIZEMOVIE 0x0004
254 #define MCIWNDF_NOMENU  0x0008
255 #define MCIWNDF_SHOWNAME        0x0010
256 #define MCIWNDF_SHOWPOS 0x0020
257 #define MCIWNDF_SHOWMODE        0x0040
258 #define MCIWNDF_SHOWALL 0x0070
259 #define MCIWNDF_NOTIFYMODE      0x0100
260 #define MCIWNDF_NOTIFYPOS       0x0200
261 #define MCIWNDF_NOTIFYSIZE      0x0400
262 #define MCIWNDF_NOTIFYERROR     0x1000
263 #define MCIWNDF_NOTIFYALL       0x1F00
264 #define MCIWNDF_NOTIFYANSI      0x0080
265 #define MCIWNDF_NOTIFYMEDIAA    0x0880
266 #define MCIWNDF_NOTIFYMEDIAW    0x0800
267 #define MCIWNDF_RECORD  0x2000
268 #define MCIWNDF_NOERRORDLG      0x4000
269 #define MCIWNDF_NOOPEN  0x8000
270 #define MCIWNDM_GETDEVICEID     (WM_USER + 100)
271 #define MCIWNDM_GETSTART        (WM_USER + 103)
272 #define MCIWNDM_GETLENGTH       (WM_USER + 104)
273 #define MCIWNDM_GETEND  (WM_USER + 105)
274 #define MCIWNDM_EJECT   (WM_USER + 107)
275 #define MCIWNDM_SETZOOM (WM_USER + 108)
276 #define MCIWNDM_GETZOOM (WM_USER + 109)
277 #define MCIWNDM_SETVOLUME       (WM_USER + 110)
278 #define MCIWNDM_GETVOLUME       (WM_USER + 111)
279 #define MCIWNDM_SETSPEED        (WM_USER + 112)
280 #define MCIWNDM_GETSPEED        (WM_USER + 113)
281 #define MCIWNDM_SETREPEAT       (WM_USER + 114)
282 #define MCIWNDM_GETREPEAT       (WM_USER + 115)
283 #define MCIWNDM_REALIZE (WM_USER + 118)
284 #define MCIWNDM_VALIDATEMEDIA   (WM_USER + 121)
285 #define MCIWNDM_PLAYFROM        (WM_USER + 122)
286 #define MCIWNDM_PLAYTO  (WM_USER + 123)
287 #define MCIWNDM_GETPALETTE      (WM_USER + 126)
288 #define MCIWNDM_SETPALETTE      (WM_USER + 127)
289 #define MCIWNDM_SETTIMERS       (WM_USER + 129)
290 #define MCIWNDM_SETACTIVETIMER  (WM_USER + 130)
291 #define MCIWNDM_SETINACTIVETIMER        (WM_USER + 131)
292 #define MCIWNDM_GETACTIVETIMER  (WM_USER + 132)
293 #define MCIWNDM_GETINACTIVETIMER        (WM_USER + 133)
294 #define MCIWNDM_CHANGESTYLES    (WM_USER + 135)
295 #define MCIWNDM_GETSTYLES       (WM_USER + 136)
296 #define MCIWNDM_GETALIAS        (WM_USER + 137)
297 #define MCIWNDM_PLAYREVERSE     (WM_USER + 139)
298 #define MCIWNDM_GET_SOURCE      (WM_USER + 140)
299 #define MCIWNDM_PUT_SOURCE      (WM_USER + 141)
300 #define MCIWNDM_GET_DEST        (WM_USER + 142)
301 #define MCIWNDM_PUT_DEST        (WM_USER + 143)
302 #define MCIWNDM_CAN_PLAY        (WM_USER + 144)
303 #define MCIWNDM_CAN_WINDOW      (WM_USER + 145)
304 #define MCIWNDM_CAN_RECORD      (WM_USER + 146)
305 #define MCIWNDM_CAN_SAVE        (WM_USER + 147)
306 #define MCIWNDM_CAN_EJECT       (WM_USER + 148)
307 #define MCIWNDM_CAN_CONFIG      (WM_USER + 149)
308 #define MCIWNDM_PALETTEKICK     (WM_USER + 150)
309 #define MCIWNDM_OPENINTERFACE   (WM_USER + 151)
310 #define MCIWNDM_SETOWNER        (WM_USER + 152)
311 #define MCIWNDM_SENDSTRINGA     (WM_USER + 101)
312 #define MCIWNDM_GETPOSITIONA    (WM_USER + 102)
313 #define MCIWNDM_GETMODEA        (WM_USER + 106)
314 #define MCIWNDM_SETTIMEFORMATA  (WM_USER + 119)
315 #define MCIWNDM_GETTIMEFORMATA  (WM_USER + 120)
316 #define MCIWNDM_GETFILENAMEA    (WM_USER + 124)
317 #define MCIWNDM_GETDEVICEA      (WM_USER + 125)
318 #define MCIWNDM_GETERRORA       (WM_USER + 128)
319 #define MCIWNDM_NEWA    (WM_USER + 134)
320 #define MCIWNDM_RETURNSTRINGA   (WM_USER + 138)
321 #define MCIWNDM_OPENA   (WM_USER + 153)
322 #define MCIWNDM_SENDSTRINGW     (WM_USER + 201)
323 #define MCIWNDM_GETPOSITIONW    (WM_USER + 202)
324 #define MCIWNDM_GETMODEW        (WM_USER + 206)
325 #define MCIWNDM_SETTIMEFORMATW  (WM_USER + 219)
326 #define MCIWNDM_GETTIMEFORMATW  (WM_USER + 220)
327 #define MCIWNDM_GETFILENAMEW    (WM_USER + 224)
328 #define MCIWNDM_GETDEVICEW      (WM_USER + 225)
329 #define MCIWNDM_GETERRORW       (WM_USER + 228)
330 #define MCIWNDM_NEWW    (WM_USER + 234)
331 #define MCIWNDM_RETURNSTRINGW   (WM_USER + 238)
332 #define MCIWNDM_OPENW   (WM_USER + 252)
333 #define MCIWNDM_NOTIFYMODE      (WM_USER + 200)
334 #define MCIWNDM_NOTIFYPOS       (WM_USER + 201)
335 #define MCIWNDM_NOTIFYSIZE      (WM_USER + 202)
336 #define MCIWNDM_NOTIFYMEDIA     (WM_USER + 203)
337 #define MCIWNDM_NOTIFYERROR     (WM_USER + 205)
338 #define MCIWND_START    -1
339 #define MCIWND_END      -2
340 #define DDF_UPDATE      0x02
341 #define DDF_SAME_HDC    0x04
342 #define DDF_SAME_DRAW   0x08
343 #define DDF_DONTDRAW    0x10
344 #define DDF_ANIMATE     0x20
345 #define DDF_BUFFER      0x40
346 #define DDF_JUSTDRAWIT  0x80
347 #define DDF_FULLSCREEN  0x100
348 #define DDF_BACKGROUNDPAL       0x200
349 #define DDF_NOTKEYFRAME 0x400
350 #define DDF_HURRYUP     0x800
351 #define DDF_HALFTONE    0x1000
352 #define DDF_PREROLL     DDF_DONTDRAW
353 #define DDF_SAME_DIB    DDF_SAME_DRAW
354 #define DDF_SAME_SIZE   DDF_SAME_DRAW
355 #define PD_CAN_DRAW_DIB 0x01
356 #define PD_CAN_STRETCHDIB       0x02
357 #define PD_STRETCHDIB_1_1_OK    0x04
358 #define PD_STRETCHDIB_1_2_OK    0x08
359 #define PD_STRETCHDIB_1_N_OK    0x10
360 #ifndef mmioFOURCC
361 #define mmioFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
362 #endif
363 #ifndef aviTWOCC
364 #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0)|((WORD)(BYTE)(ch1)<<8))
365 #endif
366
367 #ifndef RC_INVOKED
368 DECLARE_HANDLE(HIC);
369 DECLARE_HANDLE(HDRAWDIB);
370 typedef WORD TWOCC;
371 typedef BOOL (CALLBACK *AVISAVECALLBACK)(INT);
372 typedef struct {
373         DWORD dwSize;
374         DWORD fccType;
375         DWORD fccHandler;
376         DWORD dwVersion;
377         DWORD dwFlags;
378         LRESULT dwError;
379         LPVOID pV1Reserved;
380         LPVOID pV2Reserved;
381         DWORD dnDevNode;
382 } ICOPEN,*LPICOPEN;
383 typedef struct {
384         DWORD dwFlags;
385         LPBITMAPINFOHEADER lpbiOutput;
386         LPVOID lpOutput;
387         LPBITMAPINFOHEADER lpbiInput;
388         LPVOID lpInput;
389         LPDWORD lpckid;
390         LPDWORD lpdwFlags;
391         LONG lFrameNum;
392         DWORD dwFrameSize;
393         DWORD dwQuality;
394         LPBITMAPINFOHEADER lpbiPrev;
395         LPVOID lpPrev;
396 } ICCOMPRESS;
397 typedef struct {
398         DWORD dwFlags;
399         LPBITMAPINFOHEADER lpbiOutput;
400         LPARAM lOutput;
401         LPBITMAPINFOHEADER lpbiInput;
402         LPARAM lInput;
403         LONG lStartFrame;
404         LONG lFrameCount;
405         LONG lQuality;
406         LONG lDataRate;
407         LONG lKeyRate;
408         DWORD dwRate;
409         DWORD dwScale;
410         DWORD dwOverheadPerFrame;
411         DWORD dwReserved2;
412         LONG (CALLBACK *GetData)(LPARAM,LONG,LPVOID,LONG);
413         LONG (CALLBACK *PutData)(LPARAM,LONG,LPVOID,LONG);
414 } ICCOMPRESSFRAMES;
415 typedef struct {
416         DWORD dwFlags;
417         LPARAM lParam;
418         LONG (CALLBACK *Status)(LPARAM,UINT,LONG);
419 } ICSETSTATUSPROC;
420 typedef struct {
421         DWORD dwSize;
422         DWORD fccType;
423         DWORD fccHandler;
424         DWORD dwFlags;
425         DWORD dwVersion;
426         DWORD dwVersionICM;
427         WCHAR szName[16];
428         WCHAR szDescription[128];
429         WCHAR szDriver[128];
430 } ICINFO;
431 typedef struct {
432         DWORD dwFlags;
433         LPBITMAPINFOHEADER lpbiInput;
434         LPVOID lpInput;
435         LPBITMAPINFOHEADER lpbiOutput;
436         LPVOID lpOutput;
437         DWORD ckid;
438 } ICDECOMPRESS;
439 typedef struct {
440         DWORD dwFlags;
441         LPBITMAPINFOHEADER lpbiSrc;
442         LPVOID lpSrc;
443         LPBITMAPINFOHEADER lpbiDst;
444         LPVOID lpDst;
445         INT xDst;
446         INT yDst;
447         INT dxDst;
448         INT dyDst;
449         INT xSrc;
450         INT ySrc;
451         INT dxSrc;
452         INT dySrc;
453 } ICDECOMPRESSEX;
454 typedef struct {
455         DWORD dwFlags;
456         LPBITMAPINFOHEADER lpbiIn;
457         LPBITMAPINFOHEADER lpbiSuggest;
458         INT dxSrc;
459         INT dySrc;
460         INT dxDst;
461         INT dyDst;
462         HIC hicDecompressor;
463 } ICDRAWSUGGEST;
464 typedef struct {
465         DWORD dwFlags;
466         INT iStart;
467         INT iLen;
468         LPPALETTEENTRY lppe;
469 } ICPALETTE;
470 typedef struct {
471         DWORD dwFlags;
472         HPALETTE hpal;
473         HWND hwnd;
474         HDC hdc;
475         INT xDst;
476         INT yDst;
477         INT dxDst;
478         INT dyDst;
479         LPBITMAPINFOHEADER lpbi;
480         INT xSrc;
481         INT ySrc;
482         INT dxSrc;
483         INT dySrc;
484         DWORD dwRate;
485         DWORD dwScale;
486 } ICDRAWBEGIN;
487 typedef struct {
488         DWORD dwFlags;
489         LPVOID lpFormat;
490         LPVOID lpData;
491         DWORD cbData;
492         LONG lTime;
493 } ICDRAW;
494 typedef struct {
495         LONG cbSize;
496         DWORD dwFlags;
497         HIC hic;
498         DWORD fccType;
499         DWORD fccHandler;
500         LPBITMAPINFO lpbiIn;
501         LPBITMAPINFO lpbiOut;
502         LPVOID lpBitsOut;
503         LPVOID lpBitsPrev;
504         LONG lFrame;
505         LONG lKey;
506         LONG lDataRate;
507         LONG lQ;
508         LONG lKeyCount;
509         LPVOID lpState;
510         LONG cbState;
511 } COMPVARS, *PCOMPVARS;
512 typedef struct _MainAVIHeader
513 {
514         DWORD dwMicroSecPerFrame;
515         DWORD dwMaxBytesPerSec;
516         DWORD dwPaddingGranularity;
517         DWORD dwFlags;
518         DWORD dwTotalFrames;
519         DWORD dwInitialFrames;
520         DWORD dwStreams;
521         DWORD dwSuggestedBufferSize;
522         DWORD dwWidth;
523         DWORD dwHeight;
524         DWORD dwReserved[4];
525 } MainAVIHeader;
526 typedef struct {
527         FOURCC fccType;
528         FOURCC fccHandler;
529         DWORD dwFlags;
530         WORD wPriority;
531         WORD wLanguage;
532         DWORD dwInitialFrames;
533         DWORD dwScale;
534         DWORD dwRate;
535         DWORD dwStart;
536         DWORD dwLength;
537         DWORD dwSuggestedBufferSize;
538         DWORD dwQuality;
539         DWORD dwSampleSize;
540         RECT rcFrame;
541 } AVIStreamHeader;
542 typedef struct _AVIINDEXENTRY {
543         DWORD ckid;
544         DWORD dwFlags;
545         DWORD dwChunkOffset;
546         DWORD dwChunkLength;
547 } AVIINDEXENTRY;
548 typedef struct _AVIPALCHANGE {
549         BYTE bFirstEntry;
550         BYTE bNumEntries;
551         WORD wFlags;
552         PALETTEENTRY peNew[1];
553 } AVIPALCHANGE;
554 typedef struct _AVISTREAMINFOA {
555         DWORD fccType;
556         DWORD fccHandler;
557         DWORD dwFlags;
558         DWORD dwCaps;
559         WORD wPriority;
560         WORD wLanguage;
561         DWORD dwScale;
562         DWORD dwRate;
563         DWORD dwStart;
564         DWORD dwLength;
565         DWORD dwInitialFrames;
566         DWORD dwSuggestedBufferSize;
567         DWORD dwQuality;
568         DWORD dwSampleSize;
569         RECT rcFrame;
570         DWORD dwEditCount;
571         DWORD dwFormatChangeCount;
572         CHAR szName[64];
573 } AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
574 typedef struct _AVISTREAMINFOW {
575         DWORD fccType;
576         DWORD fccHandler;
577         DWORD dwFlags;
578         DWORD dwCaps;
579         WORD wPriority;
580         WORD wLanguage;
581         DWORD dwScale;
582         DWORD dwRate;
583         DWORD dwStart;
584         DWORD dwLength;
585         DWORD dwInitialFrames;
586         DWORD dwSuggestedBufferSize;
587         DWORD dwQuality;
588         DWORD dwSampleSize;
589         RECT rcFrame;
590         DWORD dwEditCount;
591         DWORD dwFormatChangeCount;
592         WCHAR szName[64];
593 } AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
594 typedef struct _AVIFILEINFOW {
595         DWORD dwMaxBytesPerSec;
596         DWORD dwFlags;
597         DWORD dwCaps;
598         DWORD dwStreams;
599         DWORD dwSuggestedBufferSize;
600         DWORD dwWidth;
601         DWORD dwHeight;
602         DWORD dwScale;
603         DWORD dwRate;
604         DWORD dwLength;
605         DWORD dwEditCount;
606         WCHAR szFileType[64];
607 } AVIFILEINFOW, *LPAVIFILEINFOW, *PAVIFILEINFOW;
608 typedef struct _AVIFILEINFOA {
609         DWORD dwMaxBytesPerSec;
610         DWORD dwFlags;
611         DWORD dwCaps;
612         DWORD dwStreams;
613         DWORD dwSuggestedBufferSize;
614         DWORD dwWidth;
615         DWORD dwHeight;
616         DWORD dwScale;
617         DWORD dwRate;
618         DWORD dwLength;
619         DWORD dwEditCount;
620         CHAR szFileType[64];
621 } AVIFILEINFOA, *LPAVIFILEINFOA, *PAVIFILEINFOA;
622 typedef struct _AVICOMPRESSOPTIONS {
623         DWORD fccType;
624         DWORD fccHandler;
625         DWORD dwKeyFrameEvery;
626         DWORD dwQuality;
627         DWORD dwBytesPerSecond;
628         DWORD dwFlags;
629         LPVOID lpFormat;
630         DWORD cbFormat;
631         LPVOID lpParms;
632         DWORD cbParms;
633         DWORD dwInterleaveEvery;
634 } AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
635 typedef struct _CAPDRIVERCAPS {
636         UINT wDeviceIndex;
637         BOOL fHasOverlay;
638         BOOL fHasDlgVideoSource;
639         BOOL fHasDlgVideoFormat;
640         BOOL fHasDlgVideoDisplay;
641         BOOL fCaptureInitialized;
642         BOOL fDriverSuppliesPalettes;
643         HANDLE hVideoIn;
644         HANDLE hVideoOut;
645         HANDLE hVideoExtIn;
646         HANDLE hVideoExtOut;
647 } CAPDRIVERCAPS, *LPCAPDRIVERCAPS;
648 typedef struct _CAPINFOCHUNK {
649         FOURCC fccInfoID;
650         LPVOID lpData;
651         LONG cbData;
652 } CAPINFOCHUNK, *LPCAPINFOCHUNK;
653 typedef struct _CAPSTATUS {
654         UINT uiImageWidth;
655         UINT uiImageHeight;
656         BOOL fLiveWindow;
657         BOOL fOverlayWindow;
658         BOOL fScale;
659         POINT ptScroll;
660         BOOL fUsingDefaultPalette;
661         BOOL fAudioHardware;
662         BOOL fCapFileExists;
663         DWORD dwCurrentVideoFrame;
664         DWORD dwCurrentVideoFramesDropped;
665         DWORD dwCurrentWaveSamples;
666         DWORD dwCurrentTimeElapsedMS;
667         HPALETTE hPalCurrent;
668         BOOL fCapturingNow;
669         DWORD dwReturn;
670         UINT wNumVideoAllocated;
671         UINT wNumAudioAllocated;
672 } CAPSTATUS, *LPCAPSTATUS;
673 typedef struct _CAPTUREPARMS {
674         DWORD dwRequestMicroSecPerFrame;
675         BOOL fMakeUserHitOKToCapture;
676         UINT wPercentDropForError;
677         BOOL fYield;
678         DWORD dwIndexSize;
679         UINT wChunkGranularity;
680         BOOL fUsingDOSMemory;
681         UINT wNumVideoRequested;
682         BOOL fCaptureAudio;
683         UINT wNumAudioRequested;
684         UINT vKeyAbort;
685         BOOL fAbortLeftMouse;
686         BOOL fAbortRightMouse;
687         BOOL fLimitEnabled;
688         UINT wTimeLimit;
689         BOOL fMCIControl;
690         BOOL fStepMCIDevice;
691         DWORD dwMCIStartTime;
692         DWORD dwMCIStopTime;
693         BOOL fStepCaptureAt2x;
694         UINT wStepCaptureAverageFrames;
695         DWORD dwAudioBufferSize;
696         BOOL fDisableWriteCache;
697         UINT AVStreamMaster;
698 } CAPTUREPARMS, *LPCAPTUREPARMS;
699
700 typedef struct videohdr_tag {
701         LPBYTE lpData;
702         DWORD dwBufferLength;
703         DWORD dwBytesUsed;
704         DWORD dwTimeCaptured;
705         DWORD dwUser;
706         DWORD dwFlags;
707         DWORD_PTR dwReserved[4];
708 } VIDEOHDR, *LPVIDEOHDR;
709
710 #if !defined (_OBJC_NO_COM)
711 #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
712 DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0);
713 DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0);
714 DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0);
715 DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0);
716 DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0);
717 DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0);
718
719 #define INTERFACE IAVIStream
720 DECLARE_INTERFACE_(IAVIStream, IUnknown)
721 {
722         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
723         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
724         STDMETHOD_(ULONG,Release)(THIS) PURE;
725         STDMETHOD(Create)(THIS_ LPARAM,LPARAM) PURE;
726         STDMETHOD(Info)(THIS_ AVISTREAMINFOW*,LONG) PURE;
727         STDMETHOD_(LONG,FindSample)(THIS_ LONG,LONG) PURE;
728         STDMETHOD(ReadFormat)(THIS_ LONG,LPVOID,LONG*) PURE;
729         STDMETHOD(SetFormat)(THIS_ LONG,LPVOID,LONG) PURE;
730         STDMETHOD(Read)(THIS_ LONG,LONG,LPVOID,LONG,LONG*,LONG*) PURE;
731         STDMETHOD(Write)(THIS_ LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*) PURE;
732         STDMETHOD(Delete)(THIS_ LONG,LONG) PURE;
733         STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
734         STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
735         STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW*,LONG) PURE;
736 };
737 #undef INTERFACE
738 typedef IAVIStream *PAVISTREAM;
739
740 #define INTERFACE IAVIStreaming
741 DECLARE_INTERFACE_(IAVIStreaming, IUnknown)
742 {
743         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
744         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
745         STDMETHOD_(ULONG,Release)(THIS) PURE;
746         STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;     
747         STDMETHOD(End)(THIS) PURE;
748 };
749 #undef INTERFACE
750 typedef IAVIStreaming *PAVISTREAMING;
751
752 #define INTERFACE IAVIEditStream
753 DECLARE_INTERFACE_(IAVIEditStream, IUnknown)
754 {
755         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
756         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
757         STDMETHOD_(ULONG,Release)(THIS) PURE;
758         STDMETHOD(Cut)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
759         STDMETHOD(Copy)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
760         STDMETHOD(Paste)(THIS_ LONG*,LONG*,PAVISTREAM,LONG,LONG) PURE;
761         STDMETHOD(Clone)(THIS_ PAVISTREAM*) PURE;
762         STDMETHOD(SetInfo)(THIS_ LPAVISTREAMINFOW,LONG) PURE;
763 };
764 #undef INTERFACE
765 typedef IAVIEditStream *PAVIEDITSTREAM;
766
767 #define INTERFACE IAVIFile
768 DECLARE_INTERFACE_(IAVIFile, IUnknown)
769 {
770         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
771         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
772         STDMETHOD_(ULONG,Release)(THIS) PURE;
773         STDMETHOD(Info)(THIS_ AVIFILEINFOW*,LONG) PURE;
774         STDMETHOD(GetStream)(THIS_ PAVISTREAM*,DWORD,LONG) PURE;
775         STDMETHOD(CreateStream)(THIS_ PAVISTREAM*,AVISTREAMINFOW*) PURE;
776         STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
777         STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
778         STDMETHOD(EndRecord)(THIS) PURE;
779         STDMETHOD(DeleteStream)(THIS_ DWORD,LONG) PURE;
780 };
781 #undef INTERFACE
782 typedef IAVIFile *PAVIFILE;
783
784 #define INTERFACE IGetFrame
785 DECLARE_INTERFACE_(IGetFrame, IUnknown)
786 {
787         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
788         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
789         STDMETHOD_(ULONG,Release)(THIS) PURE;
790         STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG) PURE;
791         STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;
792         STDMETHOD(End)(THIS) PURE;
793         STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT) PURE;
794 };
795 #undef INTERFACE
796 typedef IGetFrame *PGETFRAME;
797 #endif /* !defined (_OBJC_NO_COM) */
798
799 DWORD VFWAPI VideoForWindowsVersion(VOID);
800 LONG VFWAPI InitVFW(VOID);
801 LONG VFWAPI TermVFW(VOID);
802 DWORD VFWAPIV ICCompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID,LPDWORD,LPDWORD,LONG,DWORD,DWORD,LPBITMAPINFOHEADER,LPVOID);
803 DWORD VFWAPIV ICDecompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
804 LRESULT VFWAPI ICSendMessage(HIC,UINT,DWORD,DWORD);
805 HANDLE VFWAPI ICImageCompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO,LONG,LONG*);
806 HANDLE VFWAPI ICImageDecompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO);
807 BOOL VFWAPI ICInfo(DWORD,DWORD,ICINFO*);
808 BOOL VFWAPI ICInstall(DWORD,DWORD,LPARAM,LPSTR,UINT);
809 BOOL VFWAPI ICRemove(DWORD,DWORD,UINT);
810 LRESULT VFWAPI ICGetInfo(HIC,ICINFO*,DWORD);
811 HIC VFWAPI ICOpen(DWORD,DWORD,UINT);
812 HIC VFWAPI ICOpenFunction(DWORD,DWORD,UINT,FARPROC);
813 LRESULT VFWAPI ICClose(HIC hic);
814 HIC VFWAPI ICLocate(DWORD,DWORD,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,WORD);
815 HIC VFWAPI ICGetDisplayFormat(HIC,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,INT,INT,INT);
816 DWORD VFWAPIV ICDrawBegin(HIC,DWORD,HPALETTE,HWND,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,INT,INT,INT,INT,DWORD,DWORD);
817 DWORD VFWAPIV ICDraw(HIC,DWORD,LPVOID,LPVOID,DWORD,LONG);
818 BOOL VFWAPI ICCompressorChoose(HWND,UINT,LPVOID,LPVOID,PCOMPVARS,LPSTR);
819 BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS,LPBITMAPINFO);
820 void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS);
821 LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS,UINT,LPVOID,BOOL*,LONG*);
822 void VFWAPI ICCompressorFree(PCOMPVARS);
823 #if !defined (_OBJC_NO_COM)
824 ULONG WINAPI AVIStreamAddRef(PAVISTREAM);
825 ULONG WINAPI AVIStreamRelease(PAVISTREAM);
826 HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*);
827 HRESULT WINAPI AVIStreamInfoA(PAVISTREAM,AVISTREAMINFOA*,LONG);
828 HRESULT WINAPI AVIStreamInfoW(PAVISTREAM,AVISTREAMINFOW*,LONG);
829 HRESULT WINAPI AVIStreamFindSample(PAVISTREAM,LONG,DWORD);
830 HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM,LONG,LPVOID,LONG*);
831 HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM,LONG,LPVOID,LONG);
832 HRESULT WINAPI AVIStreamRead(PAVISTREAM,LONG,LONG,LPVOID,LONG,LONG*,LONG*);
833 HRESULT WINAPI AVIStreamWrite(PAVISTREAM,LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*);
834 HRESULT WINAPI AVIStreamReadData(PAVISTREAM,DWORD,LPVOID,LONG*);
835 HRESULT WINAPI AVIStreamWriteData(PAVISTREAM,DWORD,LPVOID,LONG);
836 PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM,LPBITMAPINFOHEADER);
837 LPVOID WINAPI AVIStreamGetFrame(PGETFRAME,LONG);
838 HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME);
839 HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*,PAVISTREAM,AVICOMPRESSOPTIONS*,CLSID*);
840 HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE*,INT,PAVISTREAM*);
841 HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM*,LPCSTR,DWORD,LONG,UINT,CLSID*);
842 HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM*,LPCWSTR,DWORD,LONG,UINT,CLSID*);
843 HRESULT WINAPI AVIBuildFilterA(LPSTR,LONG,BOOL);
844 HRESULT WINAPI AVIBuildFilterW(LPWSTR,LONG,BOOL);
845 BOOL WINAPI AVISaveOptions(HWND,UINT,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
846 HRESULT WINAPI AVISaveOptionsFree(INT,LPAVICOMPRESSOPTIONS*);
847 HRESULT WINAPI AVISaveVA(LPCSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
848 HRESULT WINAPI AVISaveVW(LPCWSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
849 LONG WINAPI AVIStreamStart(PAVISTREAM);
850 LONG WINAPI AVIStreamLength(PAVISTREAM);
851 LONG WINAPI AVIStreamSampleToTime(PAVISTREAM,LONG);
852 LONG WINAPI AVIStreamTimeToSample(PAVISTREAM,LONG);
853 HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
854 HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
855 HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
856 HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
857 HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
858 HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
859 HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
860 HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
861 HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
862 HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
863 HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
864 HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
865 HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
866 HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
867 HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
868 HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
869 HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
870 HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
871 VOID WINAPI AVIFileInit(void);
872 VOID WINAPI AVIFileExit(void);
873 HRESULT WINAPI AVIFileOpenA(PAVIFILE*,LPCSTR,UINT,LPCLSID);
874 HRESULT WINAPI AVIFileOpenW(PAVIFILE*,LPCWSTR,UINT,LPCLSID);
875 ULONG WINAPI AVIFileAddRef(PAVIFILE);
876 ULONG WINAPI AVIFileRelease(PAVIFILE);
877 HRESULT WINAPI AVIFileInfoA(PAVIFILE,PAVIFILEINFOA,LONG);
878 HRESULT WINAPI AVIFileInfoW(PAVIFILE,PAVIFILEINFOW,LONG);
879 HRESULT WINAPI AVIFileGetStream(PAVIFILE,PAVISTREAM*,DWORD,LONG);
880 HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE,PAVISTREAM*,AVISTREAMINFOA*);
881 HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE,PAVISTREAM*,AVISTREAMINFOW*);
882 HRESULT WINAPI AVIFileWriteData(PAVIFILE,DWORD,LPVOID,LONG);
883 HRESULT WINAPI AVIFileReadData(PAVIFILE,DWORD,LPVOID,LPLONG);
884 HRESULT WINAPI AVIFileEndRecord(PAVIFILE);
885 HRESULT WINAPI AVIClearClipboard(VOID);
886 HRESULT WINAPI AVIGetFromClipboard(PAVIFILE*);
887 HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE);
888 #endif /* _OBJC_NO_COM */
889 #ifdef OFN_READONLY
890 BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA);
891 BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW);
892 BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA);
893 BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW);
894 #endif
895 HWND VFWAPIV MCIWndCreateA(HWND,HINSTANCE,DWORD,LPCSTR);
896 HWND VFWAPIV MCIWndCreateW(HWND,HINSTANCE,DWORD,LPCWSTR);
897 HDRAWDIB VFWAPI DrawDibOpen(VOID);
898 UINT VFWAPI DrawDibRealize(HDRAWDIB,HDC,BOOL);
899 BOOL VFWAPI DrawDibBegin(HDRAWDIB,HDC,INT,INT,LPBITMAPINFOHEADER,INT,INT,UINT);
900 BOOL VFWAPI DrawDibDraw(HDRAWDIB,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT,UINT);
901 BOOL VFWAPI DrawDibSetPalette(HDRAWDIB,HPALETTE);
902 HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB);
903 BOOL VFWAPI DrawDibChangePalette(HDRAWDIB,int,int,LPPALETTEENTRY);
904 LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB,LPBITMAPINFOHEADER,DWORD,DWORD);
905 BOOL VFWAPI DrawDibStart(HDRAWDIB,DWORD);
906 BOOL VFWAPI DrawDibStop(HDRAWDIB);
907 BOOL VFWAPI DrawDibEnd(HDRAWDIB);
908 BOOL VFWAPI DrawDibClose(HDRAWDIB);
909 DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER);
910
911 #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
912 #define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
913 #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
914 #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
915 #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
916 #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0)
917 #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
918 #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD)(hwnd),0)
919 #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
920 #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(hwnd),0)
921 #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
922 #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
923 #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) (LONG)ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
924 #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic, lpbi, NULL)
925 #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
926 #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD)(lpbiPalette),0)
927 #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0)
928 #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0)
929 #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
930 #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
931 #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD)(pv),(DWORD)(cb))
932 #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD)(pv),(DWORD)(cb))
933 #define ICGetStateSize(hic) ICGetState(hic,NULL,0)
934 #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD)(prc),sizeof(RECT))
935 #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD)(lpbiInput),0)
936 #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD)(lpbiInput),0)
937 #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD)(lpdwBuffers),0)
938 #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0)
939 #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0)
940 #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD)(lFrom),(DWORD)(lTo))
941 #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0)
942 #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0)
943 #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD)(lplTime),0)
944 #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD)lTime,0)
945 #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD)(hdc),(DWORD)(fBackground))
946 #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0)
947 #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0)
948 #define AVIFileClose(pavi) AVIFileRelease(pavi)
949 #define AVIStreamClose(pavi) AVIStreamRelease(pavi);
950 #define AVIStreamEnd(pavi) (AVIStreamStart(pavi)+AVIStreamLength(pavi))
951 #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
952 #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
953 #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
954 #define AVIStreamSampleSize(pavi,pos,psize) AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
955 #define AVIStreamSampleToSample(pavi1,pavi2,samp2) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,samp2))
956 #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
957 #define AVIStreamNextSample(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_ANY)
958 #define AVIStreamPrevSample(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_PREV|FIND_ANY)
959 #define AVIStreamNearestSample(pavi, pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_ANY)
960 #define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_KEY)
961 #define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_NEXT|FIND_KEY)
962 #define AVIStreamNearestKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_KEY)
963 #define AVIStreamIsKeyFrame(pavi, pos) (AVIStreamNearestKeyFrame(pavi,pos) == pos)
964 #ifdef __cplusplus
965 #define MCIWndSM ::SendMessage
966 #else
967 #define MCIWndSM SendMessage
968 #endif
969 #define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
970 #define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
971 #define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
972 #define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
973 #define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
974 #define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
975 #define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
976 #define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
977 #define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
978 #define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
979 #define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
980 #define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
981 #define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
982 #define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
983 #define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
984 #define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
985 #define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
986 #define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
987 #define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
988 #define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
989 #define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
990 #define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
991 #define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
992 #define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
993 #define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
994 #define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
995 #define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
996 #define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
997 #define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO,  0,(LPARAM)(LONG)(lPos))
998 #define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
999 #define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
1000 #define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
1001 #define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1002 #define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
1003 #define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1004 #define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
1005 #define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
1006 #define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
1007 #define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n))
1008 #define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
1009 #define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
1010 #define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
1011 #define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
1012 #define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
1013 #define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
1014 #define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
1015 #define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
1016 #define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1017 #define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
1018 #define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
1019 #define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
1020 #define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
1021 #define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
1022 #define MCIWndSetActiveTimer(hWnd,active) (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L)
1023 #define MCIWndSetInactiveTimer(hWnd,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L)
1024 #define MCIWndSetTimers(hWnd,active,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
1025 #define MCIWndGetActiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
1026 #define MCIWndGetInactiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
1027 #define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
1028 #define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
1029 #define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1030 #define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1031 #define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
1032 #define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
1033 #define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1034 #define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1035 #define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
1036 #define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
1037 #define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
1038 #define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
1039 #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
1040 static __inline DWORD
1041 ICGetDefaultQuality(HIC hic)
1042 {
1043    DWORD dwICValue;
1044    ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
1045    return dwICValue;
1046 }
1047 static __inline DWORD
1048 ICGetDefaultKeyFrameRate(HIC hic)
1049 {
1050    DWORD dwICValue;
1051    ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
1052    return dwICValue;
1053 }
1054 static __inline LRESULT
1055 ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,INT dxSrc,INT dySrc,INT dxDst,INT dyDst,HIC hicDecomp)
1056 {
1057         ICDRAWSUGGEST ic;
1058         ic.lpbiIn = lpbiIn;
1059         ic.lpbiSuggest = lpbiOut;
1060         ic.dxSrc = dxSrc;
1061         ic.dySrc = dySrc;
1062         ic.dxDst = dxDst;
1063         ic.dyDst = dyDst;
1064         ic.hicDecompressor = hicDecomp;
1065         return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD)&ic,sizeof(ic));
1066 }
1067 static __inline LRESULT
1068 ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG))
1069 {
1070         ICSETSTATUSPROC ic;
1071         ic.dwFlags = dwFlags;
1072         ic.lParam = lParam;
1073         ic.Status = fpfnStatus;
1074         return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD)&ic,sizeof(ic));
1075 }
1076 static __inline LRESULT 
1077 ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
1078 {
1079         ICDECOMPRESSEX ic;
1080         ic.dwFlags = dwFlags;
1081         ic.lpbiSrc = lpbiSrc;
1082         ic.lpSrc = lpSrc;
1083         ic.xSrc = xSrc;
1084         ic.ySrc = ySrc;
1085         ic.dxSrc = dxSrc;
1086         ic.dySrc = dySrc;
1087         ic.lpbiDst = lpbiDst;
1088         ic.lpDst = lpDst;
1089         ic.xDst = xDst;
1090         ic.yDst = yDst;
1091         ic.dxDst = dxDst;
1092         ic.dyDst = dyDst;
1093         return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD)&ic,sizeof(ic));
1094 }
1095 static __inline LRESULT
1096 ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
1097 {
1098         ICDECOMPRESSEX ic;
1099         ic.dwFlags = dwFlags;
1100         ic.lpbiSrc = lpbiSrc;
1101         ic.lpSrc = lpSrc;
1102         ic.xSrc = xSrc;
1103         ic.ySrc = ySrc;
1104         ic.dxSrc = dxSrc;
1105         ic.dySrc = dySrc;
1106         ic.lpbiDst = lpbiDst;
1107         ic.lpDst = lpDst;
1108         ic.xDst = xDst;
1109         ic.yDst = yDst;
1110         ic.dxDst = dxDst;
1111         ic.dyDst = dyDst;
1112         return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD)&ic,sizeof(ic));
1113 }
1114 static __inline LRESULT
1115 ICDecompressExQuery(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
1116 {
1117         ICDECOMPRESSEX ic;
1118         ic.dwFlags = dwFlags;
1119         ic.lpbiSrc = lpbiSrc;
1120         ic.lpSrc = lpSrc;
1121         ic.xSrc = xSrc;
1122         ic.ySrc = ySrc;
1123         ic.dxSrc = dxSrc;
1124         ic.dySrc = dySrc;
1125         ic.lpbiDst = lpbiDst;
1126         ic.lpDst = lpDst;
1127         ic.xDst = xDst;
1128         ic.yDst = yDst;
1129         ic.dxDst = dxDst;
1130         ic.dyDst = dyDst;
1131         return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD)&ic,sizeof(ic));
1132 }
1133
1134 #define WM_CAP_SET_CALLBACK_ERRORA      (WM_USER + 2)
1135 #define WM_CAP_SET_CALLBACK_ERRORW      (WM_CAP_SET_CALLBACK_ERRORA + 100)
1136 #define WM_CAP_SET_CALLBACK_STATUS      (WM_USER + 3)
1137 #define WM_CAP_SET_CALLBACK_YIELD       (WM_USER + 4)
1138 #define WM_CAP_SET_CALLBACK_FRAMEA      (WM_USER + 5)
1139 #define WM_CAP_SET_CALLBACK_FRAMEW      (WM_CAP_SET_CALLBACK_FRAMEA + 100)
1140 #define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_USER + 6)
1141 #define WM_CAP_SET_CALLBACK_WAVESTREAM  (WM_USER + 7)
1142 #define WM_CAP_GET_USER_DATA            (WM_USER + 8)
1143 #define WM_CAP_SET_USER_DATA            (WM_USER + 9)
1144 #define WM_CAP_DRIVER_CONNECT           (WM_USER + 10)
1145 #define WM_CAP_DRIVER_DISCONNECT        (WM_USER + 11)
1146 #define WM_CAP_DRIVER_GET_NAMEA         (WM_USER + 12)
1147 #define WM_CAP_DRIVER_GET_NAMEW         (WM_CAP_DRIVER_GET_NAMEA + 100)
1148 #define WM_CAP_DRIVER_GET_VERSIONA      (WM_USER + 13)
1149 #define WM_CAP_DRIVER_GET_VERSIONW      (WM_CAP_DRIVER_GET_VERSIONA + 100)
1150 #define WM_CAP_DRIVER_GET_CAPS          (WM_USER + 14)
1151 #define WM_CAP_FILE_SET_CAPTURE_FILEA   (WM_USER + 20)
1152 #define WM_CAP_FILE_SET_CAPTURE_FILEW   (WM_CAP_FILE_SET_CAPTURE_FILEA + 100)
1153 #define WM_CAP_FILE_GET_CAPTURE_FILEA   (WM_USER + 21)
1154 #define WM_CAP_FILE_GET_CAPTURE_FILEW   (WM_CAP_FILE_GET_CAPTURE_FILEA + 100)
1155 #define WM_CAP_FILE_ALLOCATE            (WM_USER + 22)
1156 #define WM_CAP_FILE_SAVEASA             (WM_USER + 23)
1157 #define WM_CAP_FILE_SAVEASW             (WM_CAP_FILE_SAVEASA + 100)
1158 #define WM_CAP_FILE_SET_INFOCHUNK       (WM_USER + 24)
1159 #define WM_CAP_FILE_SAVEDIBA            (WM_USER + 25)
1160 #define WM_CAP_FILE_SAVEDIBW            (WM_CAP_FILE_SAVEDIBA + 100)
1161 #define WM_CAP_EDIT_COPY                (WM_USER + 30)
1162 #define WM_CAP_SET_AUDIOFORMAT          (WM_USER + 35)
1163 #define WM_CAP_GET_AUDIOFORMAT          (WM_USER + 36)
1164 #define WM_CAP_DLG_VIDEOFORMAT          (WM_USER + 41)
1165 #define WM_CAP_DLG_VIDEOSOURCE          (WM_USER + 42)
1166 #define WM_CAP_DLG_VIDEODISPLAY         (WM_USER + 43)
1167 #define WM_CAP_GET_VIDEOFORMAT          (WM_USER + 44)
1168 #define WM_CAP_SET_VIDEOFORMAT          (WM_USER + 45)
1169 #define WM_CAP_DLG_VIDEOCOMPRESSION     (WM_USER + 46)
1170 #define WM_CAP_SET_PREVIEW              (WM_USER + 50)
1171 #define WM_CAP_SET_OVERLAY              (WM_USER + 51)
1172 #define WM_CAP_SET_PREVIEWRATE          (WM_USER + 52)
1173 #define WM_CAP_SET_SCALE                (WM_USER + 53)
1174 #define WM_CAP_GET_STATUS               (WM_USER + 54)
1175 #define WM_CAP_SET_SCROLL               (WM_USER + 55)
1176 #define WM_CAP_GRAB_FRAME               (WM_USER + 60)
1177 #define WM_CAP_GRAB_FRAME_NOSTOP        (WM_USER + 61)
1178 #define WM_CAP_SEQUENCE                 (WM_USER + 62)
1179 #define WM_CAP_SEQUENCE_NOFILE          (WM_USER + 63)
1180 #define WM_CAP_SET_SEQUENCE_SETUP       (WM_USER + 64)
1181 #define WM_CAP_GET_SEQUENCE_SETUP       (WM_USER + 65)
1182 #define WM_CAP_SET_MCI_DEVICEA          (WM_USER + 66)
1183 #define WM_CAP_SET_MCI_DEVICEW          (WM_CAP_SET_MCI_DEVICEA + 100)
1184 #define WM_CAP_GET_MCI_DEVICEA          (WM_USER + 67)
1185 #define WM_CAP_GET_MCI_DEVICEW          (WM_CAP_GET_MCI_DEVICEA + 100)
1186 #define WM_CAP_STOP                     (WM_USER + 68)
1187 #define WM_CAP_ABORT                    (WM_USER + 69)
1188 #define WM_CAP_SINGLE_FRAME_OPEN        (WM_USER + 70)
1189 #define WM_CAP_SINGLE_FRAME_CLOSE       (WM_USER + 71)
1190 #define WM_CAP_SINGLE_FRAME             (WM_USER + 72)
1191 #define WM_CAP_PAL_OPENA                (WM_USER + 80)
1192 #define WM_CAP_PAL_OPENW                (WM_CAP_PAL_OPENA + 100)
1193 #define WM_CAP_PAL_SAVEA                (WM_USER + 81)
1194 #define WM_CAP_PAL_SAVEW                (WM_CAP_PAL_SAVEA + 100)
1195 #define WM_CAP_PAL_PASTE                (WM_USER + 82)
1196 #define WM_CAP_PAL_AUTOCREATE           (WM_USER + 83)
1197 #define WM_CAP_PAL_MANUALCREATE         (WM_USER + 84)
1198 #define WM_CAP_SET_CALLBACK_CAPCONTROL  (WM_USER + 85)
1199
1200 #ifdef UNICODE
1201 #define WM_CAP_SET_CALLBACK_ERROR       WM_CAP_SET_CALLBACK_ERRORW
1202 #define WM_CAP_SET_CALLBACK_FRAME       WM_CAP_SET_CALLBACK_FRAMEW
1203 #define WM_CAP_DRIVER_GET_NAME          WM_CAP_DRIVER_GET_NAMEW
1204 #define WM_CAP_DRIVER_GET_VERSION       WM_CAP_DRIVER_GET_VERSIONW
1205 #define WM_CAP_FILE_SET_CAPTURE_FILE    WM_CAP_FILE_SET_CAPTURE_FILEW
1206 #define WM_CAP_FILE_GET_CAPTURE_FILE    WM_CAP_FILE_GET_CAPTURE_FILEW
1207 #define WM_CAP_FILE_SAVEAS              WM_CAP_FILE_SAVEASW
1208 #define WM_CAP_FILE_SAVEDIB             WM_CAP_FILE_SAVEDIBW
1209 #define WM_CAP_SET_MCI_DEVICE           WM_CAP_SET_MCI_DEVICEW
1210 #define WM_CAP_GET_MCI_DEVICE           WM_CAP_GET_MCI_DEVICEW
1211 #define WM_CAP_PAL_OPEN                 WM_CAP_PAL_OPENW
1212 #define WM_CAP_PAL_SAVE                 WM_CAP_PAL_SAVEW
1213 #else
1214 #define WM_CAP_SET_CALLBACK_ERROR       WM_CAP_SET_CALLBACK_ERRORA
1215 #define WM_CAP_SET_CALLBACK_FRAME       WM_CAP_SET_CALLBACK_FRAMEA
1216 #define WM_CAP_DRIVER_GET_NAME          WM_CAP_DRIVER_GET_NAMEA
1217 #define WM_CAP_DRIVER_GET_VERSION       WM_CAP_DRIVER_GET_VERSIONA
1218 #define WM_CAP_FILE_SET_CAPTURE_FILE    WM_CAP_FILE_SET_CAPTURE_FILEA
1219 #define WM_CAP_FILE_GET_CAPTURE_FILE    WM_CAP_FILE_GET_CAPTURE_FILEA
1220 #define WM_CAP_FILE_SAVEAS              WM_CAP_FILE_SAVEASA
1221 #define WM_CAP_FILE_SAVEDIB             WM_CAP_FILE_SAVEDIBA
1222 #define WM_CAP_SET_MCI_DEVICE           WM_CAP_SET_MCI_DEVICEA
1223 #define WM_CAP_GET_MCI_DEVICE           WM_CAP_GET_MCI_DEVICEA
1224 #define WM_CAP_PAL_OPEN                 WM_CAP_PAL_OPENA
1225 #define WM_CAP_PAL_SAVE                 WM_CAP_PAL_SAVEA
1226 #endif
1227
1228 #define __capSendMessage(hwnd,m,w,l) (IsWindow(hwnd)?SendMessage(hwnd,m,w,l):0)
1229
1230 #define capSetCallbackOnError(hwnd,fpProc)          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_ERROR,0,(LPARAM)(LPVOID)(fpProc)))
1231 #define capSetCallbackOnStatus(hwnd,fpProc)         ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_STATUS,0,(LPARAM)(LPVOID)(fpProc)))
1232 #define capSetCallbackOnYield(hwnd,fpProc)          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_YIELD,0,(LPARAM)(LPVOID)(fpProc)))
1233 #define capSetCallbackOnFrame(hwnd,fpProc)          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_FRAME,0,(LPARAM)(LPVOID)(fpProc)))
1234 #define capSetCallbackOnVideoStream(hwnd,fpProc)    ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_VIDEOSTREAM,0,(LPARAM)(LPVOID)(fpProc)))
1235 #define capSetCallbackOnWaveStream(hwnd,fpProc)     ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_WAVESTREAM,0,(LPARAM)(LPVOID)(fpProc)))
1236 #define capGetUserData(hwnd)                        ((LONG) __capSendMessage(hwnd,WM_CAP_GET_USER_DATA,0,0))
1237 #define capSetUserData(hwnd,lUser)                  ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_USER_DATA,0,(LPARAM)lUser))
1238 #define capDriverConnect(hwnd,i)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_CONNECT,(WPARAM)(i),0))
1239 #define capDriverDisconnect(hwnd)                   ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_DISCONNECT,0,0))
1240 #define capDriverGetName(hwnd,szName,wSize)         ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_GET_NAME,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
1241 #define capDriverGetVersion(hwnd,szVer,wSize)       ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_GET_VERSION,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szVer)))
1242 #define capDriverGetCaps(hwnd,psCaps,wSize)         ((BOOL) __capSendMessage(hwnd,WM_CAP_DRIVER_GET_CAPS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(psCaps)))
1243 #define capFileSetCaptureFile(hwnd,szName)          ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SET_CAPTURE_FILE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1244 #define capFileGetCaptureFile(hwnd,szName,wSize)    ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_GET_CAPTURE_FILE,(WPARAM)(wSize), (LPARAM)(LPVOID)(LPTSTR)(szName)))
1245 #define capFileAlloc(hwnd,dwSize)                   ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_ALLOCATE,0,(LPARAM)(DWORD)(dwSize)))
1246 #define capFileSaveAs(hwnd,szName)                  ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SAVEAS,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1247 #define capFileSetInfoChunk(hwnd,lpInfoChunk)       ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SET_INFOCHUNK,0,(LPARAM)(LPCAPINFOCHUNK)(lpInfoChunk)))
1248 #define capFileSaveDIB(hwnd, szName)                ((BOOL) __capSendMessage(hwnd,WM_CAP_FILE_SAVEDIB,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1249 #define capEditCopy(hwnd)                           ((BOOL) __capSendMessage(hwnd,WM_CAP_EDIT_COPY,0,0))
1250 #define capSetAudioFormat(hwnd,psAudioFormat,wSize) ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(psAudioFormat)))
1251 #define capGetAudioFormat(hwnd,psAudioFormat,wSize) ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(psAudioFormat)))
1252 #define capGetAudioFormatSize(hwnd)                 ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_AUDIOFORMAT,0,0))
1253 #define capDlgVideoFormat(hwnd)                     ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEOFORMAT,0,0))
1254 #define capDlgVideoSource(hwnd)                     ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEOSOURCE,0,0))
1255 #define capDlgVideoDisplay(hwnd)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEODISPLAY,0,0))
1256 #define capGetVideoFormat(hwnd,psVideoFormat,wSize) ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(psVideoFormat)))
1257 #define capGetVideoFormatSize(hwnd)                 ((DWORD)__capSendMessage(hwnd,WM_CAP_GET_VIDEOFORMAT,0,0))
1258 #define capSetVideoFormat(hwnd,psVideoFormat,wSize) ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(psVideoFormat)))
1259 #define capDlgVideoCompression(hwnd)                ((BOOL) __capSendMessage(hwnd,WM_CAP_DLG_VIDEOCOMPRESSION,0,0))
1260 #define capPreview(hwnd,f)                          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_PREVIEW,(WPARAM)(BOOL)(f),0))
1261 #define capOverlay(hwnd,f)                          ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_OVERLAY,(WPARAM)(BOOL)(f),0))
1262 #define capPreviewRate(hwnd,wMS)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_PREVIEWRATE,(WPARAM)(wMS),0))
1263 #define capPreviewScale(hwnd,f)                     ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_SCALE,(WPARAM)(BOOL)f,0))
1264 #define capGetStatus(hwnd,s,wSize)                  ((BOOL) __capSendMessage(hwnd,WM_CAP_GET_STATUS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPSTATUS)(s)))
1265 #define capSetScrollPos(hwnd,lpP)                   ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_SCROLL,0,(LPARAM)(LPPOINT)(lpP)))
1266 #define capGrabFrame(hwnd)                          ((BOOL) __capSendMessage(hwnd,WM_CAP_GRAB_FRAME,0,0))
1267 #define capGrabFrameNoStop(hwnd)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_GRAB_FRAME_NOSTOP,0,0))
1268 #define capCaptureSequence(hwnd)                    ((BOOL) __capSendMessage(hwnd,WM_CAP_SEQUENCE,0,0))
1269 #define capCaptureSequenceNoFile(hwnd)              ((BOOL) __capSendMessage(hwnd,WM_CAP_SEQUENCE_NOFILE,0,0))
1270 #define capCaptureSetSetup(hwnd,s,wSize)            ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
1271 #define capCaptureGetSetup(hwnd,s,wSize)            ((BOOL) __capSendMessage(hwnd,WM_CAP_GET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
1272 #define capSetMCIDeviceName(hwnd,szName)            ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_MCI_DEVICE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1273 #define capGetMCIDeviceName(hwnd,szName,wSize)      ((BOOL) __capSendMessage(hwnd,WM_CAP_GET_MCI_DEVICE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
1274 #define capCaptureStop(hwnd)                        ((BOOL) __capSendMessage(hwnd,WM_CAP_STOP,0,0))
1275 #define capCaptureAbort(hwnd)                       ((BOOL) __capSendMessage(hwnd,WM_CAP_ABORT,0,0))
1276 #define capCaptureSingleFrameOpen(hwnd)             ((BOOL) __capSendMessage(hwnd,WM_CAP_SINGLE_FRAME_OPEN,0,0))
1277 #define capCaptureSingleFrameClose(hwnd)            ((BOOL) __capSendMessage(hwnd,WM_CAP_SINGLE_FRAME_CLOSE,0,0))
1278 #define capCaptureSingleFrame(hwnd)                 ((BOOL) __capSendMessage(hwnd,WM_CAP_SINGLE_FRAME,0,0))
1279 #define capPaletteOpen(hwnd,szName)                 ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_OPEN,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1280 #define capPaletteSave(hwnd,szName)                 ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_SAVE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1281 #define capPalettePaste(hwnd)                       ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_PASTE,0,0))
1282 #define capPaletteAuto(hwnd,iFrames,iColors)        ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_AUTOCREATE,(WPARAM)(iFrames),(LPARAM)(DWORD)(iColors)))
1283 #define capPaletteManual(hwnd,fGrab,iColors)        ((BOOL) __capSendMessage(hwnd,WM_CAP_PAL_MANUALCREATE,(WPARAM)(fGrab),(LPARAM)(DWORD)(iColors)))
1284 #define capSetCallbackOnCapControl(hwnd,fpProc)     ((BOOL) __capSendMessage(hwnd,WM_CAP_SET_CALLBACK_CAPCONTROL,0,(LPARAM)(LPVOID)(fpProc)))
1285
1286 /* AVICAP32 exports */
1287 HWND VFWAPI capCreateCaptureWindowA (LPCSTR,DWORD,int,int,int,int,HWND,int);
1288 HWND VFWAPI capCreateCaptureWindowW (LPCWSTR,DWORD,int,int,int,int,HWND,int);
1289 BOOL VFWAPI capGetDriverDescriptionA (UINT,LPSTR,int,LPSTR,int);
1290 BOOL VFWAPI capGetDriverDescriptionW (UINT,LPWSTR,int,LPWSTR,int);
1291
1292 #ifdef UNICODE
1293 #define AVISTREAMINFO AVISTREAMINFOW
1294 #define LPAVISTREAMINFO LPAVISTREAMINFOW
1295 #define PAVISTREAMINFO PAVISTREAMINFOW
1296 #define AVIFILEINFO AVIFILEINFOW
1297 #define PAVIFILEINFO PAVIFILEINFOW
1298 #define LPAVIFILEINFO LPAVIFILEINFOW
1299 #define AVIStreamInfo AVIStreamInfoW
1300 #define AVIStreamOpenFromFile AVIStreamOpenFromFileW
1301 #define AVIBuildFilter AVIBuildFilterW
1302 #define AVISaveV AVISaveVW
1303 #define EditStreamSetInfo EditStreamSetInfoW
1304 #define EditStreamSetName EditStreamSetNameW
1305 #define AVIFileOpen AVIFileOpenW
1306 #define AVIFileInfo AVIFileInfoW
1307 #define AVIFileCreateStream AVIFileCreateStreamW
1308 #define GetOpenFileNamePreview GetOpenFileNamePreviewW
1309 #define GetSaveFileNamePreview GetSaveFileNamePreviewW
1310 #define MCIWndCreate MCIWndCreateW
1311 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
1312 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
1313 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
1314 #define MCIWNDM_GETMODE MCIWNDM_GETMODEW
1315 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
1316 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
1317 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
1318 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
1319 #define MCIWNDM_GETERROR MCIWNDM_GETERRORW
1320 #define MCIWNDM_NEW MCIWNDM_NEWW
1321 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
1322 #define MCIWNDM_OPEN MCIWNDM_OPENW
1323
1324 #define capCreateCaptureWindow  capCreateCaptureWindowW
1325 #define capGetDriverDescription capGetDriverDescriptionW
1326
1327 #else
1328 #define AVISTREAMINFO AVISTREAMINFOA
1329 #define LPAVISTREAMINFO LPAVISTREAMINFOA
1330 #define PAVISTREAMINFO PAVISTREAMINFOA
1331 #define AVIFILEINFO AVIFILEINFOA
1332 #define PAVIFILEINFO PAVIFILEINFOA
1333 #define LPAVIFILEINFO LPAVIFILEINFOA
1334 #define AVIStreamInfo AVIStreamInfoA
1335 #define AVIStreamOpenFromFile AVIStreamOpenFromFileA
1336 #define AVIBuildFilter AVIBuildFilterA
1337 #define AVISaveV AVISaveVA
1338 #define EditStreamSetInfo EditStreamSetInfoA
1339 #define EditStreamSetName EditStreamSetNameA
1340 #define AVIFileOpen AVIFileOpenA
1341 #define AVIFileInfo AVIFileInfoA
1342 #define AVIFileCreateStream AVIFileCreateStreamA
1343 #define GetOpenFileNamePreview GetOpenFileNamePreviewA
1344 #define GetSaveFileNamePreview GetSaveFileNamePreviewA
1345 #define MCIWndCreate MCIWndCreateA
1346 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
1347 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
1348 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
1349 #define MCIWNDM_GETMODE MCIWNDM_GETMODEA
1350 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
1351 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
1352 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
1353 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
1354 #define MCIWNDM_GETERROR MCIWNDM_GETERRORA
1355 #define MCIWNDM_NEW MCIWNDM_NEWA
1356 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
1357 #define MCIWNDM_OPEN MCIWNDM_OPENA
1358
1359 #define capCreateCaptureWindow  capCreateCaptureWindowA
1360 #define capGetDriverDescription capGetDriverDescriptionA
1361
1362 #endif
1363
1364 #endif /* RC_INVOKED */
1365
1366 #ifdef __cplusplus
1367 }
1368 #endif
1369 #include <poppack.h>
1370 #endif /* _VFW_H */