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