OSDN Git Service

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