comparison fuhtark_test/include/winapi/vfw.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _INC_VFW
7 #define _INC_VFW
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 #define VFWAPI WINAPI
14 #define VFWAPIV WINAPIV
15 #define VFWAPI_INLINE WINAPI
16
17 DWORD WINAPI VideoForWindowsVersion(void);
18 LONG WINAPI InitVFW(void);
19 LONG WINAPI TermVFW(void);
20
21 #ifdef __cplusplus
22 }
23 #endif
24
25 #if !defined(_INC_MMSYSTEM) && (!defined(NOVIDEO) || !defined(NOAVICAP))
26 #include <mmsystem.h>
27 #endif
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 #ifndef MKFOURCC
34 #define MKFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
35 #endif
36
37 #if !defined(_INC_MMSYSTEM)
38 #define mmioFOURCC MKFOURCC
39 #endif
40
41 #ifndef NOCOMPMAN
42
43 #define ICVERSION 0x0104
44
45 DECLARE_HANDLE(HIC);
46
47 #define BI_1632 0x32333631
48
49 #ifndef mmioFOURCC
50 #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
51 #endif
52
53 #ifndef aviTWOCC
54 #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
55 #endif
56
57 #ifndef ICTYPE_VIDEO
58 #define ICTYPE_VIDEO mmioFOURCC('v','i','d','c')
59 #define ICTYPE_AUDIO mmioFOURCC('a','u','d','c')
60 #endif
61
62 #ifndef ICERR_OK
63 #define ICERR_OK 0L
64 #define ICERR_DONTDRAW 1L
65 #define ICERR_NEWPALETTE 2L
66 #define ICERR_GOTOKEYFRAME 3L
67 #define ICERR_STOPDRAWING 4L
68
69 #define ICERR_UNSUPPORTED -1L
70 #define ICERR_BADFORMAT -2L
71 #define ICERR_MEMORY -3L
72 #define ICERR_INTERNAL -4L
73 #define ICERR_BADFLAGS -5L
74 #define ICERR_BADPARAM -6L
75 #define ICERR_BADSIZE -7L
76 #define ICERR_BADHANDLE -8L
77 #define ICERR_CANTUPDATE -9L
78 #define ICERR_ABORT -10L
79 #define ICERR_ERROR -100L
80 #define ICERR_BADBITDEPTH -200L
81 #define ICERR_BADIMAGESIZE -201L
82
83 #define ICERR_CUSTOM -400L
84 #endif
85
86 #ifndef ICMODE_COMPRESS
87 #define ICMODE_COMPRESS 1
88 #define ICMODE_DECOMPRESS 2
89 #define ICMODE_FASTDECOMPRESS 3
90 #define ICMODE_QUERY 4
91 #define ICMODE_FASTCOMPRESS 5
92 #define ICMODE_DRAW 8
93 #endif
94
95 #define AVIIF_LIST 0x00000001L
96 #define AVIIF_TWOCC 0x00000002L
97 #define AVIIF_KEYFRAME 0x00000010L
98
99 #define ICQUALITY_LOW 0
100 #define ICQUALITY_HIGH 10000
101 #define ICQUALITY_DEFAULT -1
102
103 #define ICM_USER (DRV_USER+0x0000)
104
105 #define ICM_RESERVED ICM_RESERVED_LOW
106 #define ICM_RESERVED_LOW (DRV_USER+0x1000)
107 #define ICM_RESERVED_HIGH (DRV_USER+0x2000)
108
109 #define ICM_GETSTATE (ICM_RESERVED+0)
110 #define ICM_SETSTATE (ICM_RESERVED+1)
111 #define ICM_GETINFO (ICM_RESERVED+2)
112
113 #define ICM_CONFIGURE (ICM_RESERVED+10)
114 #define ICM_ABOUT (ICM_RESERVED+11)
115
116 #define ICM_GETERRORTEXT (ICM_RESERVED+12)
117 #define ICM_GETFORMATNAME (ICM_RESERVED+20)
118 #define ICM_ENUMFORMATS (ICM_RESERVED+21)
119
120 #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
121 #define ICM_GETQUALITY (ICM_RESERVED+31)
122 #define ICM_SETQUALITY (ICM_RESERVED+32)
123
124 #define ICM_SET (ICM_RESERVED+40)
125 #define ICM_GET (ICM_RESERVED+41)
126
127 #define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
128 #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
129
130 #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
131 #define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
132 #define ICM_COMPRESS_QUERY (ICM_USER+6)
133 #define ICM_COMPRESS_BEGIN (ICM_USER+7)
134 #define ICM_COMPRESS (ICM_USER+8)
135 #define ICM_COMPRESS_END (ICM_USER+9)
136
137 #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
138 #define ICM_DECOMPRESS_QUERY (ICM_USER+11)
139 #define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
140 #define ICM_DECOMPRESS (ICM_USER+13)
141 #define ICM_DECOMPRESS_END (ICM_USER+14)
142 #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
143 #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
144
145 #define ICM_DRAW_QUERY (ICM_USER+31)
146 #define ICM_DRAW_BEGIN (ICM_USER+15)
147 #define ICM_DRAW_GET_PALETTE (ICM_USER+16)
148 #define ICM_DRAW_UPDATE (ICM_USER+17)
149 #define ICM_DRAW_START (ICM_USER+18)
150 #define ICM_DRAW_STOP (ICM_USER+19)
151 #define ICM_DRAW_BITS (ICM_USER+20)
152 #define ICM_DRAW_END (ICM_USER+21)
153 #define ICM_DRAW_GETTIME (ICM_USER+32)
154 #define ICM_DRAW (ICM_USER+33)
155 #define ICM_DRAW_WINDOW (ICM_USER+34)
156 #define ICM_DRAW_SETTIME (ICM_USER+35)
157 #define ICM_DRAW_REALIZE (ICM_USER+36)
158 #define ICM_DRAW_FLUSH (ICM_USER+37)
159 #define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
160
161 #define ICM_DRAW_START_PLAY (ICM_USER+39)
162 #define ICM_DRAW_STOP_PLAY (ICM_USER+40)
163
164 #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
165 #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
166
167 #define ICM_DRAW_IDLE (ICM_USER+52)
168
169 #define ICM_GETBUFFERSWANTED (ICM_USER+41)
170
171 #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
172
173 #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
174 #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
175 #define ICM_DECOMPRESSEX (ICM_USER+62)
176 #define ICM_DECOMPRESSEX_END (ICM_USER+63)
177
178 #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
179 #define ICM_COMPRESS_FRAMES (ICM_USER+71)
180 #define ICM_SET_STATUS_PROC (ICM_USER+72)
181
182 typedef struct {
183 DWORD dwSize;
184 DWORD fccType;
185 DWORD fccHandler;
186 DWORD dwVersion;
187 DWORD dwFlags;
188 LRESULT dwError;
189 LPVOID pV1Reserved;
190 LPVOID pV2Reserved;
191 DWORD dnDevNode;
192 } ICOPEN;
193
194 typedef struct {
195 DWORD dwSize;
196 DWORD fccType;
197 DWORD fccHandler;
198 DWORD dwFlags;
199 DWORD dwVersion;
200 DWORD dwVersionICM;
201
202 WCHAR szName[16];
203 WCHAR szDescription[128];
204 WCHAR szDriver[128];
205 } ICINFO;
206
207 #define VIDCF_QUALITY 0x0001
208 #define VIDCF_CRUNCH 0x0002
209 #define VIDCF_TEMPORAL 0x0004
210 #define VIDCF_COMPRESSFRAMES 0x0008
211 #define VIDCF_DRAW 0x0010
212 #define VIDCF_FASTTEMPORALC 0x0020
213 #define VIDCF_FASTTEMPORALD 0x0080
214
215 #define ICCOMPRESS_KEYFRAME 0x00000001L
216
217 typedef struct {
218 DWORD dwFlags;
219 LPBITMAPINFOHEADER lpbiOutput;
220 LPVOID lpOutput;
221
222 LPBITMAPINFOHEADER lpbiInput;
223 LPVOID lpInput;
224 LPDWORD lpckid;
225 LPDWORD lpdwFlags;
226 LONG lFrameNum;
227 DWORD dwFrameSize;
228 DWORD dwQuality;
229 LPBITMAPINFOHEADER lpbiPrev;
230 LPVOID lpPrev;
231 } ICCOMPRESS;
232
233 #define ICCOMPRESSFRAMES_PADDING 0x00000001
234
235 typedef struct {
236 DWORD dwFlags;
237 LPBITMAPINFOHEADER lpbiOutput;
238 LPARAM lOutput;
239 LPBITMAPINFOHEADER lpbiInput;
240 LPARAM lInput;
241 LONG lStartFrame;
242 LONG lFrameCount;
243 LONG lQuality;
244 LONG lDataRate;
245 LONG lKeyRate;
246 DWORD dwRate;
247 DWORD dwScale;
248 DWORD dwOverheadPerFrame;
249 DWORD dwReserved2;
250 LONG (CALLBACK *GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len);
251 LONG (CALLBACK *PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len);
252 } ICCOMPRESSFRAMES;
253
254 #define ICSTATUS_START 0
255 #define ICSTATUS_STATUS 1
256 #define ICSTATUS_END 2
257 #define ICSTATUS_ERROR 3
258 #define ICSTATUS_YIELD 4
259
260 typedef struct {
261 DWORD dwFlags;
262 LPARAM lParam;
263 LONG (CALLBACK *Status)(LPARAM lParam,UINT message,LONG l);
264 } ICSETSTATUSPROC;
265
266 #define ICDECOMPRESS_HURRYUP 0x80000000L
267 #define ICDECOMPRESS_UPDATE 0x40000000L
268 #define ICDECOMPRESS_PREROLL 0x20000000L
269 #define ICDECOMPRESS_NULLFRAME 0x10000000L
270 #define ICDECOMPRESS_NOTKEYFRAME 0x08000000L
271
272 typedef struct {
273 DWORD dwFlags;
274 LPBITMAPINFOHEADER lpbiInput;
275 LPVOID lpInput;
276 LPBITMAPINFOHEADER lpbiOutput;
277 LPVOID lpOutput;
278 DWORD ckid;
279 } ICDECOMPRESS;
280
281 typedef struct {
282 DWORD dwFlags;
283 LPBITMAPINFOHEADER lpbiSrc;
284 LPVOID lpSrc;
285 LPBITMAPINFOHEADER lpbiDst;
286 LPVOID lpDst;
287 int xDst;
288 int yDst;
289 int dxDst;
290 int dyDst;
291
292 int xSrc;
293 int ySrc;
294 int dxSrc;
295 int dySrc;
296 } ICDECOMPRESSEX;
297
298 #define ICDRAW_QUERY 0x00000001L
299 #define ICDRAW_FULLSCREEN 0x00000002L
300 #define ICDRAW_HDC 0x00000004L
301 #define ICDRAW_ANIMATE 0x00000008L
302 #define ICDRAW_CONTINUE 0x00000010L
303 #define ICDRAW_MEMORYDC 0x00000020L
304 #define ICDRAW_UPDATING 0x00000040L
305 #define ICDRAW_RENDER 0x00000080L
306 #define ICDRAW_BUFFER 0x00000100L
307
308 typedef struct {
309 DWORD dwFlags;
310 HPALETTE hpal;
311 HWND hwnd;
312 HDC hdc;
313 int xDst;
314 int yDst;
315 int dxDst;
316 int dyDst;
317 LPBITMAPINFOHEADER lpbi;
318 int xSrc;
319 int ySrc;
320 int dxSrc;
321 int dySrc;
322 DWORD dwRate;
323 DWORD dwScale;
324 } ICDRAWBEGIN;
325
326 #define ICDRAW_HURRYUP 0x80000000L
327 #define ICDRAW_UPDATE 0x40000000L
328 #define ICDRAW_PREROLL 0x20000000L
329 #define ICDRAW_NULLFRAME 0x10000000L
330 #define ICDRAW_NOTKEYFRAME 0x08000000L
331
332 typedef struct {
333 DWORD dwFlags;
334 LPVOID lpFormat;
335 LPVOID lpData;
336 DWORD cbData;
337 LONG lTime;
338 } ICDRAW;
339
340 typedef struct {
341 LPBITMAPINFOHEADER lpbiIn;
342 LPBITMAPINFOHEADER lpbiSuggest;
343 int dxSrc;
344 int dySrc;
345 int dxDst;
346 int dyDst;
347 HIC hicDecompressor;
348 } ICDRAWSUGGEST;
349
350 typedef struct {
351 DWORD dwFlags;
352 int iStart;
353 int iLen;
354 LPPALETTEENTRY lppe;
355 } ICPALETTE;
356
357 WINBOOL WINAPI ICInfo(DWORD fccType,DWORD fccHandler,ICINFO *lpicinfo);
358 WINBOOL WINAPI ICInstall(DWORD fccType,DWORD fccHandler,LPARAM lParam,LPSTR szDesc,UINT wFlags);
359 WINBOOL WINAPI ICRemove(DWORD fccType,DWORD fccHandler,UINT wFlags);
360 LRESULT WINAPI ICGetInfo(HIC hic,ICINFO *picinfo,DWORD cb);
361 HIC WINAPI ICOpen(DWORD fccType,DWORD fccHandler,UINT wMode);
362 HIC WINAPI ICOpenFunction(DWORD fccType,DWORD fccHandler,UINT wMode,FARPROC lpfnHandler);
363 LRESULT WINAPI ICClose(HIC hic);
364 LRESULT WINAPI ICSendMessage(HIC hic,UINT msg,DWORD_PTR dw1,DWORD_PTR dw2);
365
366 #define ICINSTALL_UNICODE 0x8000
367 #define ICINSTALL_FUNCTION 0x0001
368 #define ICINSTALL_DRIVER 0x0002
369 #define ICINSTALL_HDRV 0x0004
370 #define ICINSTALL_DRIVERW 0x8002
371
372 #define ICMF_CONFIGURE_QUERY 0x00000001
373 #define ICMF_ABOUT_QUERY 0x00000001
374
375 #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR) -1,ICMF_ABOUT_QUERY)==ICERR_OK)
376 #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)(UINT_PTR)(hwnd),0)
377 #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR) -1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
378 #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)(UINT_PTR)(hwnd),0)
379 #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD_PTR)(LPVOID)(pv),(DWORD_PTR)(cb))
380 #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD_PTR)(LPVOID)(pv),(DWORD_PTR)(cb))
381 #define ICGetStateSize(hic) (DWORD) ICGetState(hic,NULL,0)
382
383 static DWORD dwICValue;
384
385 #define ICGetDefaultQuality(hic) (ICSendMessage(hic,ICM_GETDEFAULTQUALITY,(DWORD_PTR)(LPVOID)&dwICValue,sizeof(DWORD)),dwICValue)
386 #define ICGetDefaultKeyFrameRate(hic) (ICSendMessage(hic,ICM_GETDEFAULTKEYFRAMERATE,(DWORD_PTR)(LPVOID)&dwICValue,sizeof(DWORD)),dwICValue)
387 #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD_PTR)(LPVOID)(prc),sizeof(RECT))
388
389 DWORD WINAPIV ICCompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiOutput,LPVOID lpData,LPBITMAPINFOHEADER lpbiInput,LPVOID lpBits,LPDWORD lpckid,LPDWORD lpdwFlags,LONG lFrameNum,DWORD dwFrameSize,DWORD dwQuality,LPBITMAPINFOHEADER lpbiPrev,LPVOID lpPrev);
390
391 #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
392 #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
393 #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
394 #define ICCompressGetFormatSize(hic,lpbi) (DWORD) ICCompressGetFormat(hic,lpbi,NULL)
395 #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) (DWORD) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
396 #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0)
397 #define ICDECOMPRESS_HURRYUP 0x80000000L
398
399 DWORD WINAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat,LPVOID lpData,LPBITMAPINFOHEADER lpbi,LPVOID lpBits);
400
401 #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
402 #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
403 #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) ((LONG) ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)))
404 #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic,lpbi,NULL)
405 #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))
406 #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD_PTR)(LPVOID)(lpbiPalette),0)
407 #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0)
408
409 #ifndef __CRT__NO_INLINE
410 __CRT_INLINE LRESULT WINAPI 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) {
411 ICDECOMPRESSEX ic;
412 ic.dwFlags = dwFlags;
413 ic.lpbiSrc = lpbiSrc;
414 ic.lpSrc = lpSrc;
415 ic.xSrc = xSrc;
416 ic.ySrc = ySrc;
417 ic.dxSrc = dxSrc;
418 ic.dySrc = dySrc;
419 ic.lpbiDst = lpbiDst;
420 ic.lpDst = lpDst;
421 ic.xDst = xDst;
422 ic.yDst = yDst;
423 ic.dxDst = dxDst;
424 ic.dyDst = dyDst;
425 return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD_PTR)&ic,sizeof(ic));
426 }
427
428 __CRT_INLINE LRESULT WINAPI 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) {
429 ICDECOMPRESSEX ic;
430 ic.dwFlags = dwFlags;
431 ic.lpbiSrc = lpbiSrc;
432 ic.lpSrc = lpSrc;
433 ic.xSrc = xSrc;
434 ic.ySrc = ySrc;
435 ic.dxSrc = dxSrc;
436 ic.dySrc = dySrc;
437 ic.lpbiDst = lpbiDst;
438 ic.lpDst = lpDst;
439 ic.xDst = xDst;
440 ic.yDst = yDst;
441 ic.dxDst = dxDst;
442 ic.dyDst = dyDst;
443 return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD_PTR)&ic,sizeof(ic));
444 }
445
446 __CRT_INLINE LRESULT WINAPI 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) {
447 ICDECOMPRESSEX ic;
448 ic.dwFlags = dwFlags;
449 ic.lpbiSrc = lpbiSrc;
450 ic.lpSrc = lpSrc;
451 ic.xSrc = xSrc;
452 ic.ySrc = ySrc;
453 ic.dxSrc = dxSrc;
454 ic.dySrc = dySrc;
455 ic.lpbiDst = lpbiDst;
456 ic.lpDst = lpDst;
457 ic.xDst = xDst;
458 ic.yDst = yDst;
459 ic.dxDst = dxDst;
460 ic.dyDst = dyDst;
461 return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD_PTR)&ic,sizeof(ic));
462 }
463 #endif /* !__CRT__NO_INLINE */
464
465 #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0)
466
467 #define ICDRAW_QUERY 0x00000001L
468 #define ICDRAW_FULLSCREEN 0x00000002L
469 #define ICDRAW_HDC 0x00000004L
470
471 DWORD WINAPIV ICDrawBegin(HIC hic,DWORD dwFlags,HPALETTE hpal,HWND hwnd,HDC hdc,int xDst,int yDst,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,int xSrc,int ySrc,int dxSrc,int dySrc,DWORD dwRate,DWORD dwScale);
472
473 #define ICDRAW_HURRYUP 0x80000000L
474 #define ICDRAW_UPDATE 0x40000000L
475
476 DWORD WINAPIV ICDraw(HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,LONG lTime);
477
478 #ifndef __CRT__NO_INLINE
479 __CRT_INLINE LRESULT WINAPI ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,int dxSrc,int dySrc,int dxDst,int dyDst,HIC hicDecomp) {
480 ICDRAWSUGGEST ic;
481 ic.lpbiIn = lpbiIn;
482 ic.lpbiSuggest = lpbiOut;
483 ic.dxSrc = dxSrc;
484 ic.dySrc = dySrc;
485 ic.dxDst = dxDst;
486 ic.dyDst = dyDst;
487 ic.hicDecompressor = hicDecomp;
488 return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD_PTR)&ic,sizeof(ic));
489 }
490 #endif /* !__CRT__NO_INLINE */
491
492 #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),0L)
493 #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD_PTR)(LPVOID)(lpbiInput),0L)
494 #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD_PTR)(LPVOID)(lpdwBuffers),0)
495 #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0)
496 #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0)
497 #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD_PTR)(lFrom),(DWORD_PTR)(lTo))
498 #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0)
499 #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0)
500 #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD_PTR)(LPVOID)(lplTime),0)
501 #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD_PTR)lTime,0)
502 #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD_PTR)(UINT_PTR)(HDC)(hdc),(DWORD_PTR)(WINBOOL)(fBackground))
503 #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0)
504 #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0)
505
506 #ifndef __CRT__NO_INLINE
507 __CRT_INLINE LRESULT WINAPI ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG)) {
508 ICSETSTATUSPROC ic;
509 ic.dwFlags = dwFlags;
510 ic.lParam = lParam;
511 ic.Status = fpfnStatus;
512 return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD_PTR)&ic,sizeof(ic));
513 }
514 #endif /* !__CRT__NO_INLINE */
515
516 #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
517 #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
518
519 HIC WINAPI ICLocate(DWORD fccType,DWORD fccHandler,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,WORD wFlags);
520 HIC WINAPI ICGetDisplayFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,int BitDepth,int dx,int dy);
521 HANDLE WINAPI ICImageCompress(HIC hic,UINT uiFlags,LPBITMAPINFO lpbiIn,LPVOID lpBits,LPBITMAPINFO lpbiOut,LONG lQuality,LONG *plSize);
522 HANDLE WINAPI ICImageDecompress(HIC hic,UINT uiFlags,LPBITMAPINFO lpbiIn,LPVOID lpBits,LPBITMAPINFO lpbiOut);
523
524 typedef struct {
525 LONG cbSize;
526 DWORD dwFlags;
527 HIC hic;
528 DWORD fccType;
529 DWORD fccHandler;
530 LPBITMAPINFO lpbiIn;
531 LPBITMAPINFO lpbiOut;
532 LPVOID lpBitsOut;
533 LPVOID lpBitsPrev;
534 LONG lFrame;
535 LONG lKey;
536 LONG lDataRate;
537 LONG lQ;
538 LONG lKeyCount;
539 LPVOID lpState;
540 LONG cbState;
541 } COMPVARS,*PCOMPVARS;
542
543 #define ICMF_COMPVARS_VALID 0x00000001
544
545 WINBOOL WINAPI ICCompressorChoose(HWND hwnd,UINT uiFlags,LPVOID pvIn,LPVOID lpData,PCOMPVARS pc,LPSTR lpszTitle);
546
547 #define ICMF_CHOOSE_KEYFRAME 0x0001
548 #define ICMF_CHOOSE_DATARATE 0x0002
549 #define ICMF_CHOOSE_PREVIEW 0x0004
550 #define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008
551
552 WINBOOL WINAPI ICSeqCompressFrameStart(PCOMPVARS pc,LPBITMAPINFO lpbiIn);
553 void WINAPI ICSeqCompressFrameEnd(PCOMPVARS pc);
554 LPVOID WINAPI ICSeqCompressFrame(PCOMPVARS pc,UINT uiFlags,LPVOID lpBits,WINBOOL *pfKey,LONG *plSize);
555 void WINAPI ICCompressorFree(PCOMPVARS pc);
556 #endif
557
558 #ifndef NODRAWDIB
559
560 typedef HANDLE HDRAWDIB;
561
562 #define DDF_0001 0x0001
563 #define DDF_UPDATE 0x0002
564 #define DDF_SAME_HDC 0x0004
565 #define DDF_SAME_DRAW 0x0008
566 #define DDF_DONTDRAW 0x0010
567 #define DDF_ANIMATE 0x0020
568 #define DDF_BUFFER 0x0040
569 #define DDF_JUSTDRAWIT 0x0080
570 #define DDF_FULLSCREEN 0x0100
571 #define DDF_BACKGROUNDPAL 0x0200
572 #define DDF_NOTKEYFRAME 0x0400
573 #define DDF_HURRYUP 0x0800
574 #define DDF_HALFTONE 0x1000
575 #define DDF_2000 0x2000
576
577 #define DDF_PREROLL DDF_DONTDRAW
578 #define DDF_SAME_DIB DDF_SAME_DRAW
579 #define DDF_SAME_SIZE DDF_SAME_DRAW
580
581 extern WINBOOL WINAPI DrawDibInit(void);
582 extern HDRAWDIB WINAPI DrawDibOpen(void);
583 extern WINBOOL WINAPI DrawDibClose(HDRAWDIB hdd);
584 extern LPVOID WINAPI DrawDibGetBuffer(HDRAWDIB hdd,LPBITMAPINFOHEADER lpbi,DWORD dwSize,DWORD dwFlags);
585 extern UINT WINAPI DrawDibError(HDRAWDIB hdd);
586 extern HPALETTE WINAPI DrawDibGetPalette(HDRAWDIB hdd);
587 extern WINBOOL WINAPI DrawDibSetPalette(HDRAWDIB hdd,HPALETTE hpal);
588 extern WINBOOL WINAPI DrawDibChangePalette(HDRAWDIB hdd,int iStart,int iLen,LPPALETTEENTRY lppe);
589 extern UINT WINAPI DrawDibRealize(HDRAWDIB hdd,HDC hdc,WINBOOL fBackground);
590 extern WINBOOL WINAPI DrawDibStart(HDRAWDIB hdd,DWORD rate);
591 extern WINBOOL WINAPI DrawDibStop(HDRAWDIB hdd);
592 extern WINBOOL WINAPI DrawDibBegin(HDRAWDIB hdd,HDC hdc,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,int dxSrc,int dySrc,UINT wFlags);
593 extern WINBOOL WINAPI DrawDibDraw(HDRAWDIB hdd,HDC hdc,int xDst,int yDst,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,LPVOID lpBits,int xSrc,int ySrc,int dxSrc,int dySrc,UINT wFlags);
594
595 #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
596
597 extern WINBOOL WINAPI DrawDibEnd(HDRAWDIB hdd);
598
599 typedef struct {
600 LONG timeCount;
601 LONG timeDraw;
602 LONG timeDecompress;
603 LONG timeDither;
604 LONG timeStretch;
605 LONG timeBlt;
606 LONG timeSetDIBits;
607 } DRAWDIBTIME,*LPDRAWDIBTIME;
608
609 WINBOOL WINAPI DrawDibTime(HDRAWDIB hdd,LPDRAWDIBTIME lpddtime);
610
611 #define PD_CAN_DRAW_DIB 0x0001
612 #define PD_CAN_STRETCHDIB 0x0002
613 #define PD_STRETCHDIB_1_1_OK 0x0004
614 #define PD_STRETCHDIB_1_2_OK 0x0008
615 #define PD_STRETCHDIB_1_N_OK 0x0010
616
617 LRESULT WINAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi);
618
619 #ifdef DRAWDIB_INCLUDE_STRETCHDIB
620 void WINAPI StretchDIB(LPBITMAPINFOHEADER biDst,LPVOID lpDst,int DstX,int DstY,int DstXE,int DstYE,LPBITMAPINFOHEADER biSrc,LPVOID lpSrc,int SrcX,int SrcY,int SrcXE,int SrcYE);
621 #endif
622 #endif
623
624 #ifndef NOAVIFMT
625 #ifndef _INC_MMSYSTEM
626 typedef DWORD FOURCC;
627 #endif
628
629 #ifndef mmioFOURCC
630 #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
631 #endif
632
633 #ifndef aviTWOCC
634 #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
635 #endif
636
637 typedef WORD TWOCC;
638
639 #define formtypeAVI mmioFOURCC('A','V','I',' ')
640 #define listtypeAVIHEADER mmioFOURCC('h','d','r','l')
641 #define ckidAVIMAINHDR mmioFOURCC('a','v','i','h')
642 #define listtypeSTREAMHEADER mmioFOURCC('s','t','r','l')
643 #define ckidSTREAMHEADER mmioFOURCC('s','t','r','h')
644 #define ckidSTREAMFORMAT mmioFOURCC('s','t','r','f')
645 #define ckidSTREAMHANDLERDATA mmioFOURCC('s','t','r','d')
646 #define ckidSTREAMNAME mmioFOURCC('s','t','r','n')
647
648 #define listtypeAVIMOVIE mmioFOURCC('m','o','v','i')
649 #define listtypeAVIRECORD mmioFOURCC('r','e','c',' ')
650
651 #define ckidAVINEWINDEX mmioFOURCC('i','d','x','1')
652
653 #define streamtypeVIDEO mmioFOURCC('v','i','d','s')
654 #define streamtypeAUDIO mmioFOURCC('a','u','d','s')
655 #define streamtypeMIDI mmioFOURCC('m','i','d','s')
656 #define streamtypeTEXT mmioFOURCC('t','x','t','s')
657
658 #define cktypeDIBbits aviTWOCC('d','b')
659 #define cktypeDIBcompressed aviTWOCC('d','c')
660 #define cktypePALchange aviTWOCC('p','c')
661 #define cktypeWAVEbytes aviTWOCC('w','b')
662
663 #define ckidAVIPADDING mmioFOURCC('J','U','N','K')
664
665 #define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
666 #define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))))
667
668 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
669
670 #define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
671 #define MAKEAVICKID(tcc,stream) MAKELONG((ToHex((stream) & 0x0f) << 8) | (ToHex(((stream) & 0xf0) >> 4)),tcc)
672
673 #define AVIF_HASINDEX 0x00000010
674 #define AVIF_MUSTUSEINDEX 0x00000020
675 #define AVIF_ISINTERLEAVED 0x00000100
676 #define AVIF_WASCAPTUREFILE 0x00010000
677 #define AVIF_COPYRIGHTED 0x00020000
678
679 #define AVI_HEADERSIZE 2048
680
681 typedef struct {
682 DWORD dwMicroSecPerFrame;
683 DWORD dwMaxBytesPerSec;
684 DWORD dwPaddingGranularity;
685 DWORD dwFlags;
686 DWORD dwTotalFrames;
687 DWORD dwInitialFrames;
688 DWORD dwStreams;
689 DWORD dwSuggestedBufferSize;
690 DWORD dwWidth;
691 DWORD dwHeight;
692 DWORD dwReserved[4];
693 } MainAVIHeader;
694
695 #define AVISF_DISABLED 0x00000001
696 #define AVISF_VIDEO_PALCHANGES 0x00010000
697
698 typedef struct {
699 FOURCC fccType;
700 FOURCC fccHandler;
701 DWORD dwFlags;
702 WORD wPriority;
703 WORD wLanguage;
704 DWORD dwInitialFrames;
705 DWORD dwScale;
706 DWORD dwRate;
707 DWORD dwStart;
708 DWORD dwLength;
709 DWORD dwSuggestedBufferSize;
710 DWORD dwQuality;
711 DWORD dwSampleSize;
712 RECT rcFrame;
713 } AVIStreamHeader;
714
715 #define AVIIF_LIST 0x00000001L
716 #define AVIIF_KEYFRAME 0x00000010L
717 #define AVIIF_FIRSTPART 0x00000020L
718 #define AVIIF_LASTPART 0x00000040L
719 #define AVIIF_MIDPART (AVIIF_LASTPART|AVIIF_FIRSTPART)
720
721 #define AVIIF_NOTIME 0x00000100L
722 #define AVIIF_COMPUSE 0x0FFF0000L
723
724 typedef struct {
725 DWORD ckid;
726 DWORD dwFlags;
727 DWORD dwChunkOffset;
728 DWORD dwChunkLength;
729 } AVIINDEXENTRY;
730
731 typedef struct {
732 BYTE bFirstEntry;
733 BYTE bNumEntries;
734 WORD wFlags;
735 PALETTEENTRY peNew[];
736 } AVIPALCHANGE;
737 #endif
738
739 #ifdef __cplusplus
740 }
741 #endif
742
743 #ifndef RC_INVOKED
744 #include "pshpack8.h"
745 #endif
746
747 #ifndef NOMMREG
748 #include <mmreg.h>
749 #endif
750
751 #ifdef __cplusplus
752 extern "C" {
753 #endif
754
755 #ifndef NOAVIFILE
756 #ifndef mmioFOURCC
757 #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
758 #endif
759
760 #ifndef streamtypeVIDEO
761 #define streamtypeVIDEO mmioFOURCC('v','i','d','s')
762 #define streamtypeAUDIO mmioFOURCC('a','u','d','s')
763 #define streamtypeMIDI mmioFOURCC('m','i','d','s')
764 #define streamtypeTEXT mmioFOURCC('t','x','t','s')
765 #endif
766
767 #ifndef AVIIF_KEYFRAME
768 #define AVIIF_KEYFRAME 0x00000010L
769 #endif
770
771 #define AVIGETFRAMEF_BESTDISPLAYFMT 1
772
773 typedef struct _AVISTREAMINFOW {
774 DWORD fccType;
775 DWORD fccHandler;
776 DWORD dwFlags;
777 DWORD dwCaps;
778 WORD wPriority;
779 WORD wLanguage;
780 DWORD dwScale;
781 DWORD dwRate;
782 DWORD dwStart;
783 DWORD dwLength;
784 DWORD dwInitialFrames;
785 DWORD dwSuggestedBufferSize;
786 DWORD dwQuality;
787 DWORD dwSampleSize;
788 RECT rcFrame;
789 DWORD dwEditCount;
790 DWORD dwFormatChangeCount;
791 WCHAR szName[64];
792 } AVISTREAMINFOW,*LPAVISTREAMINFOW;
793
794 typedef struct _AVISTREAMINFOA {
795 DWORD fccType;
796 DWORD fccHandler;
797 DWORD dwFlags;
798 DWORD dwCaps;
799 WORD wPriority;
800 WORD wLanguage;
801 DWORD dwScale;
802 DWORD dwRate;
803 DWORD dwStart;
804 DWORD dwLength;
805 DWORD dwInitialFrames;
806 DWORD dwSuggestedBufferSize;
807 DWORD dwQuality;
808 DWORD dwSampleSize;
809 RECT rcFrame;
810 DWORD dwEditCount;
811 DWORD dwFormatChangeCount;
812 char szName[64];
813 } AVISTREAMINFOA,*LPAVISTREAMINFOA;
814
815 #ifdef UNICODE
816 #define AVISTREAMINFO AVISTREAMINFOW
817 #define LPAVISTREAMINFO LPAVISTREAMINFOW
818 #else
819 #define AVISTREAMINFO AVISTREAMINFOA
820 #define LPAVISTREAMINFO LPAVISTREAMINFOA
821 #endif
822
823 #define AVISTREAMINFO_DISABLED 0x00000001
824 #define AVISTREAMINFO_FORMATCHANGES 0x00010000
825
826 typedef struct _AVIFILEINFOW {
827 DWORD dwMaxBytesPerSec;
828 DWORD dwFlags;
829 DWORD dwCaps;
830 DWORD dwStreams;
831 DWORD dwSuggestedBufferSize;
832 DWORD dwWidth;
833 DWORD dwHeight;
834 DWORD dwScale;
835 DWORD dwRate;
836 DWORD dwLength;
837 DWORD dwEditCount;
838 WCHAR szFileType[64];
839 } AVIFILEINFOW,*LPAVIFILEINFOW;
840
841 typedef struct _AVIFILEINFOA {
842 DWORD dwMaxBytesPerSec;
843 DWORD dwFlags;
844 DWORD dwCaps;
845 DWORD dwStreams;
846 DWORD dwSuggestedBufferSize;
847 DWORD dwWidth;
848 DWORD dwHeight;
849 DWORD dwScale;
850 DWORD dwRate;
851 DWORD dwLength;
852 DWORD dwEditCount;
853 char szFileType[64];
854 } AVIFILEINFOA,*LPAVIFILEINFOA;
855
856 #ifdef UNICODE
857 #define AVIFILEINFO AVIFILEINFOW
858 #define LPAVIFILEINFO LPAVIFILEINFOW
859 #else
860 #define AVIFILEINFO AVIFILEINFOA
861 #define LPAVIFILEINFO LPAVIFILEINFOA
862 #endif
863
864 #define AVIFILEINFO_HASINDEX 0x00000010
865 #define AVIFILEINFO_MUSTUSEINDEX 0x00000020
866 #define AVIFILEINFO_ISINTERLEAVED 0x00000100
867 #define AVIFILEINFO_WASCAPTUREFILE 0x00010000
868 #define AVIFILEINFO_COPYRIGHTED 0x00020000
869
870 #define AVIFILECAPS_CANREAD 0x00000001
871 #define AVIFILECAPS_CANWRITE 0x00000002
872 #define AVIFILECAPS_ALLKEYFRAMES 0x00000010
873 #define AVIFILECAPS_NOCOMPRESSION 0x00000020
874
875 typedef WINBOOL (WINAPI *AVISAVECALLBACK)(int);
876
877 typedef struct {
878 DWORD fccType;
879 DWORD fccHandler;
880 DWORD dwKeyFrameEvery;
881 DWORD dwQuality;
882 DWORD dwBytesPerSecond;
883 DWORD dwFlags;
884 LPVOID lpFormat;
885 DWORD cbFormat;
886 LPVOID lpParms;
887 DWORD cbParms;
888 DWORD dwInterleaveEvery;
889 } AVICOMPRESSOPTIONS,*LPAVICOMPRESSOPTIONS;
890
891 #define AVICOMPRESSF_INTERLEAVE 0x00000001
892 #define AVICOMPRESSF_DATARATE 0x00000002
893 #define AVICOMPRESSF_KEYFRAMES 0x00000004
894 #define AVICOMPRESSF_VALID 0x00000008
895
896 #ifdef __cplusplus
897 }
898 #endif
899
900 #include <ole2.h>
901
902 #ifdef __cplusplus
903 extern "C" {
904 #endif
905
906 #undef INTERFACE
907 #define INTERFACE IAVIStream
908 DECLARE_INTERFACE_(IAVIStream,IUnknown) {
909 STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
910 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
911 STDMETHOD_(ULONG,Release) (THIS) PURE;
912 STDMETHOD(Create) (THIS_ LPARAM lParam1,LPARAM lParam2) PURE;
913 STDMETHOD(Info) (THIS_ AVISTREAMINFOW *psi,LONG lSize) PURE;
914 STDMETHOD_(LONG,FindSample)(THIS_ LONG lPos,LONG lFlags) PURE;
915 STDMETHOD(ReadFormat) (THIS_ LONG lPos,LPVOID lpFormat,LONG *lpcbFormat) PURE;
916 STDMETHOD(SetFormat) (THIS_ LONG lPos,LPVOID lpFormat,LONG cbFormat) PURE;
917 STDMETHOD(Read) (THIS_ LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG *plBytes,LONG *plSamples) PURE;
918 STDMETHOD(Write) (THIS_ LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG *plSampWritten,LONG *plBytesWritten) PURE;
919 STDMETHOD(Delete) (THIS_ LONG lStart,LONG lSamples) PURE;
920 STDMETHOD(ReadData) (THIS_ DWORD fcc,LPVOID lp,LONG *lpcb) PURE;
921 STDMETHOD(WriteData) (THIS_ DWORD fcc,LPVOID lp,LONG cb) PURE;
922 STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW *lpInfo,LONG cbInfo) PURE;
923 };
924
925 typedef IAVIStream *PAVISTREAM;
926
927 #undef INTERFACE
928 #define INTERFACE IAVIStreaming
929 DECLARE_INTERFACE_(IAVIStreaming,IUnknown) {
930 STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
931 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
932 STDMETHOD_(ULONG,Release) (THIS) PURE;
933 STDMETHOD(Begin) (THIS_ LONG lStart,LONG lEnd,LONG lRate) PURE;
934 STDMETHOD(End) (THIS) PURE;
935 };
936
937 typedef IAVIStreaming *PAVISTREAMING;
938
939 #undef INTERFACE
940 #define INTERFACE IAVIEditStream
941 DECLARE_INTERFACE_(IAVIEditStream,IUnknown) {
942 STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
943 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
944 STDMETHOD_(ULONG,Release) (THIS) PURE;
945 STDMETHOD(Cut) (THIS_ LONG *plStart,LONG *plLength,PAVISTREAM *ppResult) PURE;
946 STDMETHOD(Copy) (THIS_ LONG *plStart,LONG *plLength,PAVISTREAM *ppResult) PURE;
947 STDMETHOD(Paste) (THIS_ LONG *plPos,LONG *plLength,PAVISTREAM pstream,LONG lStart,LONG lEnd) PURE;
948 STDMETHOD(Clone) (THIS_ PAVISTREAM *ppResult) PURE;
949 STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW *lpInfo,LONG cbInfo) PURE;
950 };
951
952 typedef IAVIEditStream *PAVIEDITSTREAM;
953
954 #undef INTERFACE
955 #define INTERFACE IAVIPersistFile
956 DECLARE_INTERFACE_(IAVIPersistFile,IPersistFile) {
957 STDMETHOD(Reserved1)(THIS) PURE;
958 };
959
960 typedef IAVIPersistFile *PAVIPERSISTFILE;
961
962 #undef INTERFACE
963 #define INTERFACE IAVIFile
964 #define PAVIFILE IAVIFile *
965 DECLARE_INTERFACE_(IAVIFile,IUnknown) {
966 STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
967 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
968 STDMETHOD_(ULONG,Release) (THIS) PURE;
969 STDMETHOD(Info) (THIS_ AVIFILEINFOW *pfi,LONG lSize) PURE;
970 STDMETHOD(GetStream) (THIS_ PAVISTREAM *ppStream,DWORD fccType,LONG lParam) PURE;
971 STDMETHOD(CreateStream) (THIS_ PAVISTREAM *ppStream,AVISTREAMINFOW *psi) PURE;
972 STDMETHOD(WriteData) (THIS_ DWORD ckid,LPVOID lpData,LONG cbData) PURE;
973 STDMETHOD(ReadData) (THIS_ DWORD ckid,LPVOID lpData,LONG *lpcbData) PURE;
974 STDMETHOD(EndRecord) (THIS) PURE;
975 STDMETHOD(DeleteStream) (THIS_ DWORD fccType,LONG lParam) PURE;
976 };
977
978 #undef PAVIFILE
979 typedef IAVIFile *PAVIFILE;
980
981 #undef INTERFACE
982 #define INTERFACE IGetFrame
983 #define PGETFRAME IGetFrame *
984 DECLARE_INTERFACE_(IGetFrame,IUnknown) {
985 STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
986 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
987 STDMETHOD_(ULONG,Release) (THIS) PURE;
988 STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE;
989 STDMETHOD(Begin) (THIS_ LONG lStart,LONG lEnd,LONG lRate) PURE;
990 STDMETHOD(End) (THIS) PURE;
991 STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi,LPVOID lpBits,int x,int y,int dx,int dy) PURE;
992 };
993
994 #undef PGETFRAME
995 typedef IGetFrame *PGETFRAME;
996
997 #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
998
999 DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0);
1000 DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0);
1001 DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0);
1002 DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0);
1003 DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0);
1004 DEFINE_AVIGUID(IID_IAVIPersistFile,0x00020025,0,0);
1005 #ifndef UNICODE
1006 DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009,0,0);
1007 #endif
1008
1009 DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0);
1010
1011 #define AVIFILEHANDLER_CANREAD 0x0001
1012 #define AVIFILEHANDLER_CANWRITE 0x0002
1013 #define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004
1014
1015 #ifdef UNICODE
1016 #define AVIFileOpen AVIFileOpenW
1017 #define AVIFileInfo AVIFileInfoW
1018 #define AVIFileCreateStream AVIFileCreateStreamW
1019 #define AVIStreamInfo AVIStreamInfoW
1020 #define AVIStreamOpenFromFile AVIStreamOpenFromFileW
1021 #else
1022 #define AVIFileOpen AVIFileOpenA
1023 #define AVIFileInfo AVIFileInfoA
1024 #define AVIFileCreateStream AVIFileCreateStreamA
1025 #define AVIStreamInfo AVIStreamInfoA
1026 #define AVIStreamOpenFromFile AVIStreamOpenFromFileA
1027 #endif
1028
1029 STDAPI_(void) AVIFileInit(void);
1030 STDAPI_(void) AVIFileExit(void);
1031 STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile);
1032 STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile);
1033 STDAPI AVIFileOpenA (PAVIFILE *ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler);
1034 STDAPI AVIFileOpenW (PAVIFILE *ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler);
1035 STDAPI AVIFileInfoW (PAVIFILE pfile,LPAVIFILEINFOW pfi,LONG lSize);
1036 STDAPI AVIFileInfoA (PAVIFILE pfile,LPAVIFILEINFOA pfi,LONG lSize);
1037 STDAPI AVIFileGetStream (PAVIFILE pfile,PAVISTREAM *ppavi,DWORD fccType,LONG lParam);
1038 STDAPI AVIFileCreateStreamW (PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOW *psi);
1039 STDAPI AVIFileCreateStreamA (PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOA *psi);
1040 STDAPI AVIFileWriteData (PAVIFILE pfile,DWORD ckid,LPVOID lpData,LONG cbData);
1041 STDAPI AVIFileReadData (PAVIFILE pfile,DWORD ckid,LPVOID lpData,LONG *lpcbData);
1042 STDAPI AVIFileEndRecord (PAVIFILE pfile);
1043 STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi);
1044 STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi);
1045 STDAPI AVIStreamInfoW (PAVISTREAM pavi,LPAVISTREAMINFOW psi,LONG lSize);
1046 STDAPI AVIStreamInfoA (PAVISTREAM pavi,LPAVISTREAMINFOA psi,LONG lSize);
1047 STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi,LONG lPos,LONG lFlags);
1048 STDAPI AVIStreamReadFormat (PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG *lpcbFormat);
1049 STDAPI AVIStreamSetFormat (PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG cbFormat);
1050 STDAPI AVIStreamReadData (PAVISTREAM pavi,DWORD fcc,LPVOID lp,LONG *lpcb);
1051 STDAPI AVIStreamWriteData (PAVISTREAM pavi,DWORD fcc,LPVOID lp,LONG cb);
1052 STDAPI AVIStreamRead (PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG *plBytes,LONG *plSamples);
1053 #define AVISTREAMREAD_CONVENIENT (-1L)
1054 STDAPI AVIStreamWrite (PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG *plSampWritten,LONG *plBytesWritten);
1055 STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi);
1056 STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi);
1057 STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi,LONG lTime);
1058 STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi,LONG lSample);
1059 STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi,LONG lStart,LONG lEnd,LONG lRate);
1060 STDAPI AVIStreamEndStreaming(PAVISTREAM pavi);
1061 STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted);
1062 STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg,LONG lPos);
1063 STDAPI AVIStreamGetFrameClose(PGETFRAME pg);
1064 STDAPI AVIStreamOpenFromFileA(PAVISTREAM *ppavi,LPCSTR szFile,DWORD fccType,LONG lParam,UINT mode,CLSID *pclsidHandler);
1065 STDAPI AVIStreamOpenFromFileW(PAVISTREAM *ppavi,LPCWSTR szFile,DWORD fccType,LONG lParam,UINT mode,CLSID *pclsidHandler);
1066 STDAPI AVIStreamCreate(PAVISTREAM *ppavi,LONG lParam1,LONG lParam2,CLSID *pclsidHandler);
1067
1068 #define FIND_DIR 0x0000000FL
1069 #define FIND_NEXT 0x00000001L
1070 #define FIND_PREV 0x00000004L
1071 #define FIND_FROM_START 0x00000008L
1072
1073 #define FIND_TYPE 0x000000F0L
1074 #define FIND_KEY 0x00000010L
1075 #define FIND_ANY 0x00000020L
1076 #define FIND_FORMAT 0x00000040L
1077
1078 #define FIND_RET 0x0000F000L
1079 #define FIND_POS 0x00000000L
1080 #define FIND_LENGTH 0x00001000L
1081 #define FIND_OFFSET 0x00002000L
1082 #define FIND_SIZE 0x00003000L
1083 #define FIND_INDEX 0x00004000L
1084
1085 #define AVIStreamFindKeyFrame AVIStreamFindSample
1086 #define FindKeyFrame FindSample
1087
1088 #define AVIStreamClose AVIStreamRelease
1089 #define AVIFileClose AVIFileRelease
1090 #define AVIStreamInit AVIFileInit
1091 #define AVIStreamExit AVIFileExit
1092
1093 #define SEARCH_NEAREST FIND_PREV
1094 #define SEARCH_BACKWARD FIND_PREV
1095 #define SEARCH_FORWARD FIND_NEXT
1096 #define SEARCH_KEY FIND_KEY
1097 #define SEARCH_ANY FIND_ANY
1098
1099 #define AVIStreamSampleToSample(pavi1,pavi2,l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,l))
1100 #define AVIStreamNextSample(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY)
1101 #define AVIStreamPrevSample(pavi,l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY)
1102 #define AVIStreamNearestSample(pavi,l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY)
1103 #define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY)
1104 #define AVIStreamPrevKeyFrame(pavi,l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY)
1105 #define AVIStreamNearestKeyFrame(pavi,l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY)
1106 #define AVIStreamIsKeyFrame(pavi,l) (AVIStreamNearestKeyFrame(pavi,l)==l)
1107 #define AVIStreamPrevSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t)))
1108 #define AVIStreamNextSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t)))
1109 #define AVIStreamNearestSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t)))
1110 #define AVIStreamNextKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi,t)))
1111 #define AVIStreamPrevKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi,t)))
1112 #define AVIStreamNearestKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi,t)))
1113 #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
1114 #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
1115 #define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi))
1116 #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
1117 #define AVIStreamSampleSize(pavi,lPos,plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL)
1118 #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
1119 #define AVIStreamDataSize(pavi,fcc,plSize) AVIStreamReadData(pavi,fcc,NULL,plSize)
1120
1121 #ifndef comptypeDIB
1122 #define comptypeDIB mmioFOURCC('D','I','B',' ')
1123 #endif
1124
1125 #ifdef UNICODE
1126 #define AVISave AVISaveW
1127 #define AVISaveV AVISaveVW
1128 #define AVIBuildFilter AVIBuildFilterW
1129 #define EditStreamSetInfo EditStreamSetInfoW
1130 #define EditStreamSetName EditStreamSetNameW
1131 #else
1132 #define AVISave AVISaveA
1133 #define AVISaveV AVISaveVA
1134 #define AVIBuildFilter AVIBuildFilterA
1135 #define EditStreamSetInfo EditStreamSetInfoA
1136 #define EditStreamSetName EditStreamSetNameA
1137 #endif
1138
1139 STDAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID *pclsidHandler);
1140 EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pfile,LPAVICOMPRESSOPTIONS lpOptions,...);
1141 STDAPI AVISaveVA(LPCSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions);
1142 EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pfile,LPAVICOMPRESSOPTIONS lpOptions,...);
1143 STDAPI AVISaveVW(LPCWSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions);
1144 STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd,UINT uiFlags,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions);
1145 STDAPI AVISaveOptionsFree(int nStreams,LPAVICOMPRESSOPTIONS *plpOptions);
1146 STDAPI AVIBuildFilterW(LPWSTR lpszFilter,LONG cbFilter,WINBOOL fSaving);
1147 STDAPI AVIBuildFilterA(LPSTR lpszFilter,LONG cbFilter,WINBOOL fSaving);
1148 STDAPI AVIMakeFileFromStreams(PAVIFILE *ppfile,int nStreams,PAVISTREAM *papStreams);
1149 STDAPI AVIMakeStreamFromClipboard(UINT cfFormat,HANDLE hGlobal,PAVISTREAM *ppstream);
1150 STDAPI AVIPutFileOnClipboard(PAVIFILE pf);
1151 STDAPI AVIGetFromClipboard(PAVIFILE *lppf);
1152 STDAPI AVIClearClipboard(void);
1153 STDAPI CreateEditableStream(PAVISTREAM *ppsEditable,PAVISTREAM psSource);
1154 STDAPI EditStreamCut(PAVISTREAM pavi,LONG *plStart,LONG *plLength,PAVISTREAM *ppResult);
1155 STDAPI EditStreamCopy(PAVISTREAM pavi,LONG *plStart,LONG *plLength,PAVISTREAM *ppResult);
1156 STDAPI EditStreamPaste(PAVISTREAM pavi,LONG *plPos,LONG *plLength,PAVISTREAM pstream,LONG lStart,LONG lEnd);
1157 STDAPI EditStreamClone(PAVISTREAM pavi,PAVISTREAM *ppResult);
1158 STDAPI EditStreamSetNameA(PAVISTREAM pavi,LPCSTR lpszName);
1159 STDAPI EditStreamSetNameW(PAVISTREAM pavi,LPCWSTR lpszName);
1160 STDAPI EditStreamSetInfoW(PAVISTREAM pavi,LPAVISTREAMINFOW lpInfo,LONG cbInfo);
1161 STDAPI EditStreamSetInfoA(PAVISTREAM pavi,LPAVISTREAMINFOA lpInfo,LONG cbInfo);
1162
1163 #ifndef AVIERR_OK
1164 #define AVIERR_OK 0L
1165
1166 #define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000 + error)
1167
1168 #define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
1169 #define AVIERR_BADFORMAT MAKE_AVIERR(102)
1170 #define AVIERR_MEMORY MAKE_AVIERR(103)
1171 #define AVIERR_INTERNAL MAKE_AVIERR(104)
1172 #define AVIERR_BADFLAGS MAKE_AVIERR(105)
1173 #define AVIERR_BADPARAM MAKE_AVIERR(106)
1174 #define AVIERR_BADSIZE MAKE_AVIERR(107)
1175 #define AVIERR_BADHANDLE MAKE_AVIERR(108)
1176 #define AVIERR_FILEREAD MAKE_AVIERR(109)
1177 #define AVIERR_FILEWRITE MAKE_AVIERR(110)
1178 #define AVIERR_FILEOPEN MAKE_AVIERR(111)
1179 #define AVIERR_COMPRESSOR MAKE_AVIERR(112)
1180 #define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
1181 #define AVIERR_READONLY MAKE_AVIERR(114)
1182 #define AVIERR_NODATA MAKE_AVIERR(115)
1183 #define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
1184 #define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
1185 #define AVIERR_USERABORT MAKE_AVIERR(198)
1186 #define AVIERR_ERROR MAKE_AVIERR(199)
1187 #endif
1188 #endif
1189
1190 #ifndef NOMCIWND
1191
1192 #ifdef __cplusplus
1193 #define MCIWndSM ::SendMessage
1194 #else
1195 #define MCIWndSM SendMessage
1196 #endif
1197
1198 #define MCIWND_WINDOW_CLASS TEXT("MCIWndClass")
1199
1200 #ifdef UNICODE
1201 #define MCIWndCreate MCIWndCreateW
1202 #else
1203 #define MCIWndCreate MCIWndCreateA
1204 #endif
1205
1206 HWND WINAPIV MCIWndCreateA(HWND hwndParent,HINSTANCE hInstance,DWORD dwStyle,LPCSTR szFile);
1207 HWND WINAPIV MCIWndCreateW(HWND hwndParent,HINSTANCE hInstance,DWORD dwStyle,LPCWSTR szFile);
1208 WINBOOL WINAPIV MCIWndRegisterClass(void);
1209
1210 #define MCIWNDOPENF_NEW 0x0001
1211
1212 #define MCIWNDF_NOAUTOSIZEWINDOW 0x0001
1213 #define MCIWNDF_NOPLAYBAR 0x0002
1214 #define MCIWNDF_NOAUTOSIZEMOVIE 0x0004
1215 #define MCIWNDF_NOMENU 0x0008
1216 #define MCIWNDF_SHOWNAME 0x0010
1217 #define MCIWNDF_SHOWPOS 0x0020
1218 #define MCIWNDF_SHOWMODE 0x0040
1219 #define MCIWNDF_SHOWALL 0x0070
1220
1221 #define MCIWNDF_NOTIFYMODE 0x0100
1222 #define MCIWNDF_NOTIFYPOS 0x0200
1223 #define MCIWNDF_NOTIFYSIZE 0x0400
1224 #define MCIWNDF_NOTIFYERROR 0x1000
1225 #define MCIWNDF_NOTIFYALL 0x1F00
1226
1227 #define MCIWNDF_NOTIFYANSI 0x0080
1228
1229 #define MCIWNDF_NOTIFYMEDIAA 0x0880
1230 #define MCIWNDF_NOTIFYMEDIAW 0x0800
1231
1232 #ifdef UNICODE
1233 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
1234 #else
1235 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
1236 #endif
1237
1238 #define MCIWNDF_RECORD 0x2000
1239 #define MCIWNDF_NOERRORDLG 0x4000
1240 #define MCIWNDF_NOOPEN 0x8000
1241
1242 #define MCIWndCanPlay(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_PLAY,0,0)
1243 #define MCIWndCanRecord(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_RECORD,0,0)
1244 #define MCIWndCanSave(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_SAVE,0,0)
1245 #define MCIWndCanWindow(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_WINDOW,0,0)
1246 #define MCIWndCanEject(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_EJECT,0,0)
1247 #define MCIWndCanConfig(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_CONFIG,0,0)
1248 #define MCIWndPaletteKick(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_PALETTEKICK,0,0)
1249
1250 #define MCIWndSave(hwnd,szFile) (LONG)MCIWndSM(hwnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
1251 #define MCIWndSaveDialog(hwnd) MCIWndSave(hwnd,-1)
1252
1253 #define MCIWndNew(hwnd,lp) (LONG)MCIWndSM(hwnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
1254
1255 #define MCIWndRecord(hwnd) (LONG)MCIWndSM(hwnd,MCI_RECORD,0,0)
1256 #define MCIWndOpen(hwnd,sz,f) (LONG)MCIWndSM(hwnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
1257 #define MCIWndOpenDialog(hwnd) MCIWndOpen(hwnd,-1,0)
1258 #define MCIWndClose(hwnd) (LONG)MCIWndSM(hwnd,MCI_CLOSE,0,0)
1259 #define MCIWndPlay(hwnd) (LONG)MCIWndSM(hwnd,MCI_PLAY,0,0)
1260 #define MCIWndStop(hwnd) (LONG)MCIWndSM(hwnd,MCI_STOP,0,0)
1261 #define MCIWndPause(hwnd) (LONG)MCIWndSM(hwnd,MCI_PAUSE,0,0)
1262 #define MCIWndResume(hwnd) (LONG)MCIWndSM(hwnd,MCI_RESUME,0,0)
1263 #define MCIWndSeek(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
1264 #define MCIWndEject(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_EJECT,0,0)
1265
1266 #define MCIWndHome(hwnd) MCIWndSeek(hwnd,MCIWND_START)
1267 #define MCIWndEnd(hwnd) MCIWndSeek(hwnd,MCIWND_END)
1268
1269 #define MCIWndGetSource(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
1270 #define MCIWndPutSource(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
1271
1272 #define MCIWndGetDest(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
1273 #define MCIWndPutDest(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
1274
1275 #define MCIWndPlayReverse(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYREVERSE,0,0)
1276 #define MCIWndPlayFrom(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
1277 #define MCIWndPlayTo(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYTO,0,(LPARAM)(LONG)(lPos))
1278 #define MCIWndPlayFromTo(hwnd,lStart,lEnd) (MCIWndSeek(hwnd,lStart),MCIWndPlayTo(hwnd,lEnd))
1279
1280 #define MCIWndGetDeviceID(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETDEVICEID,0,0)
1281 #define MCIWndGetAlias(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETALIAS,0,0)
1282 #define MCIWndGetMode(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1283 #define MCIWndGetPosition(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETPOSITION,0,0)
1284 #define MCIWndGetPositionString(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1285 #define MCIWndGetStart(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETSTART,0,0)
1286 #define MCIWndGetLength(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETLENGTH,0,0)
1287 #define MCIWndGetEnd(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETEND,0,0)
1288
1289 #define MCIWndStep(hwnd,n) (LONG)MCIWndSM(hwnd,MCI_STEP,0,(LPARAM)(long)(n))
1290
1291 #define MCIWndDestroy(hwnd) (VOID)MCIWndSM(hwnd,WM_CLOSE,0,0)
1292 #define MCIWndSetZoom(hwnd,iZoom) (VOID)MCIWndSM(hwnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
1293 #define MCIWndGetZoom(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETZOOM,0,0)
1294 #define MCIWndSetVolume(hwnd,iVol) (LONG)MCIWndSM(hwnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
1295 #define MCIWndGetVolume(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETVOLUME,0,0)
1296 #define MCIWndSetSpeed(hwnd,iSpeed) (LONG)MCIWndSM(hwnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
1297 #define MCIWndGetSpeed(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETSPEED,0,0)
1298 #define MCIWndSetTimeFormat(hwnd,lp) (LONG)MCIWndSM(hwnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
1299 #define MCIWndGetTimeFormat(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1300 #define MCIWndValidateMedia(hwnd) (VOID)MCIWndSM(hwnd,MCIWNDM_VALIDATEMEDIA,0,0)
1301
1302 #define MCIWndSetRepeat(hwnd,f) (void)MCIWndSM(hwnd,MCIWNDM_SETREPEAT,0,(LPARAM)(WINBOOL)(f))
1303 #define MCIWndGetRepeat(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_GETREPEAT,0,0)
1304
1305 #define MCIWndUseFrames(hwnd) MCIWndSetTimeFormat(hwnd,TEXT("frames"))
1306 #define MCIWndUseTime(hwnd) MCIWndSetTimeFormat(hwnd,TEXT("ms"))
1307
1308 #define MCIWndSetActiveTimer(hwnd,active) (VOID)MCIWndSM(hwnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L)
1309 #define MCIWndSetInactiveTimer(hwnd,inactive) (VOID)MCIWndSM(hwnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L)
1310 #define MCIWndSetTimers(hwnd,active,inactive) (VOID)MCIWndSM(hwnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
1311 #define MCIWndGetActiveTimer(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETACTIVETIMER,0,0L);
1312 #define MCIWndGetInactiveTimer(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETINACTIVETIMER,0,0L);
1313
1314 #define MCIWndRealize(hwnd,fBkgnd) (LONG)MCIWndSM(hwnd,MCIWNDM_REALIZE,(WPARAM)(WINBOOL)(fBkgnd),0)
1315
1316 #define MCIWndSendString(hwnd,sz) (LONG)MCIWndSM(hwnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
1317 #define MCIWndReturnString(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1318 #define MCIWndGetError(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1319
1320 #define MCIWndGetPalette(hwnd) (HPALETTE)MCIWndSM(hwnd,MCIWNDM_GETPALETTE,0,0)
1321 #define MCIWndSetPalette(hwnd,hpal) (LONG)MCIWndSM(hwnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
1322
1323 #define MCIWndGetFileName(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1324 #define MCIWndGetDevice(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1325
1326 #define MCIWndGetStyles(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETSTYLES,0,0L)
1327 #define MCIWndChangeStyles(hwnd,mask,value) (LONG)MCIWndSM(hwnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
1328
1329 #define MCIWndOpenInterface(hwnd,pUnk) (LONG)MCIWndSM(hwnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
1330
1331 #define MCIWndSetOwner(hwnd,hwndP) (LONG)MCIWndSM(hwnd,MCIWNDM_SETOWNER,(WPARAM)(hwndP),0)
1332
1333 #define MCIWNDM_GETDEVICEID (WM_USER + 100)
1334 #define MCIWNDM_GETSTART (WM_USER + 103)
1335 #define MCIWNDM_GETLENGTH (WM_USER + 104)
1336 #define MCIWNDM_GETEND (WM_USER + 105)
1337 #define MCIWNDM_EJECT (WM_USER + 107)
1338 #define MCIWNDM_SETZOOM (WM_USER + 108)
1339 #define MCIWNDM_GETZOOM (WM_USER + 109)
1340 #define MCIWNDM_SETVOLUME (WM_USER + 110)
1341 #define MCIWNDM_GETVOLUME (WM_USER + 111)
1342 #define MCIWNDM_SETSPEED (WM_USER + 112)
1343 #define MCIWNDM_GETSPEED (WM_USER + 113)
1344 #define MCIWNDM_SETREPEAT (WM_USER + 114)
1345 #define MCIWNDM_GETREPEAT (WM_USER + 115)
1346 #define MCIWNDM_REALIZE (WM_USER + 118)
1347 #define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
1348 #define MCIWNDM_PLAYFROM (WM_USER + 122)
1349 #define MCIWNDM_PLAYTO (WM_USER + 123)
1350 #define MCIWNDM_GETPALETTE (WM_USER + 126)
1351 #define MCIWNDM_SETPALETTE (WM_USER + 127)
1352 #define MCIWNDM_SETTIMERS (WM_USER + 129)
1353 #define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
1354 #define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
1355 #define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
1356 #define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
1357 #define MCIWNDM_CHANGESTYLES (WM_USER + 135)
1358 #define MCIWNDM_GETSTYLES (WM_USER + 136)
1359 #define MCIWNDM_GETALIAS (WM_USER + 137)
1360 #define MCIWNDM_PLAYREVERSE (WM_USER + 139)
1361 #define MCIWNDM_GET_SOURCE (WM_USER + 140)
1362 #define MCIWNDM_PUT_SOURCE (WM_USER + 141)
1363 #define MCIWNDM_GET_DEST (WM_USER + 142)
1364 #define MCIWNDM_PUT_DEST (WM_USER + 143)
1365 #define MCIWNDM_CAN_PLAY (WM_USER + 144)
1366 #define MCIWNDM_CAN_WINDOW (WM_USER + 145)
1367 #define MCIWNDM_CAN_RECORD (WM_USER + 146)
1368 #define MCIWNDM_CAN_SAVE (WM_USER + 147)
1369 #define MCIWNDM_CAN_EJECT (WM_USER + 148)
1370 #define MCIWNDM_CAN_CONFIG (WM_USER + 149)
1371 #define MCIWNDM_PALETTEKICK (WM_USER + 150)
1372 #define MCIWNDM_OPENINTERFACE (WM_USER + 151)
1373 #define MCIWNDM_SETOWNER (WM_USER + 152)
1374
1375 #define MCIWNDM_SENDSTRINGA (WM_USER + 101)
1376 #define MCIWNDM_GETPOSITIONA (WM_USER + 102)
1377 #define MCIWNDM_GETMODEA (WM_USER + 106)
1378 #define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
1379 #define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
1380 #define MCIWNDM_GETFILENAMEA (WM_USER + 124)
1381 #define MCIWNDM_GETDEVICEA (WM_USER + 125)
1382 #define MCIWNDM_GETERRORA (WM_USER + 128)
1383 #define MCIWNDM_NEWA (WM_USER + 134)
1384 #define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
1385 #define MCIWNDM_OPENA (WM_USER + 153)
1386
1387 #define MCIWNDM_SENDSTRINGW (WM_USER + 201)
1388 #define MCIWNDM_GETPOSITIONW (WM_USER + 202)
1389 #define MCIWNDM_GETMODEW (WM_USER + 206)
1390 #define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
1391 #define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
1392 #define MCIWNDM_GETFILENAMEW (WM_USER + 224)
1393 #define MCIWNDM_GETDEVICEW (WM_USER + 225)
1394 #define MCIWNDM_GETERRORW (WM_USER + 228)
1395 #define MCIWNDM_NEWW (WM_USER + 234)
1396 #define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
1397 #define MCIWNDM_OPENW (WM_USER + 252)
1398
1399 #ifdef UNICODE
1400 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
1401 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
1402 #define MCIWNDM_GETMODE MCIWNDM_GETMODEW
1403 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
1404 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
1405 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
1406 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
1407 #define MCIWNDM_GETERROR MCIWNDM_GETERRORW
1408 #define MCIWNDM_NEW MCIWNDM_NEWW
1409 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
1410 #define MCIWNDM_OPEN MCIWNDM_OPENW
1411 #else
1412 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
1413 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
1414 #define MCIWNDM_GETMODE MCIWNDM_GETMODEA
1415 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
1416 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
1417 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
1418 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
1419 #define MCIWNDM_GETERROR MCIWNDM_GETERRORA
1420 #define MCIWNDM_NEW MCIWNDM_NEWA
1421 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
1422 #define MCIWNDM_OPEN MCIWNDM_OPENA
1423 #endif
1424
1425 #define MCIWNDM_NOTIFYMODE (WM_USER + 200)
1426 #define MCIWNDM_NOTIFYPOS (WM_USER + 201)
1427 #define MCIWNDM_NOTIFYSIZE (WM_USER + 202)
1428 #define MCIWNDM_NOTIFYMEDIA (WM_USER + 203)
1429 #define MCIWNDM_NOTIFYERROR (WM_USER + 205)
1430
1431 #define MCIWND_START -1
1432 #define MCIWND_END -2
1433
1434 #ifndef MCI_PLAY
1435 #define MCI_CLOSE 0x0804
1436 #define MCI_PLAY 0x0806
1437 #define MCI_SEEK 0x0807
1438 #define MCI_STOP 0x0808
1439 #define MCI_PAUSE 0x0809
1440 #define MCI_STEP 0x080E
1441 #define MCI_RECORD 0x080F
1442 #define MCI_SAVE 0x0813
1443 #define MCI_CUT 0x0851
1444 #define MCI_COPY 0x0852
1445 #define MCI_PASTE 0x0853
1446 #define MCI_RESUME 0x0855
1447 #define MCI_DELETE 0x0856
1448 #endif
1449
1450 #ifndef MCI_MODE_NOT_READY
1451
1452 #define MCI_MODE_NOT_READY (524)
1453 #define MCI_MODE_STOP (525)
1454 #define MCI_MODE_PLAY (526)
1455 #define MCI_MODE_RECORD (527)
1456 #define MCI_MODE_SEEK (528)
1457 #define MCI_MODE_PAUSE (529)
1458 #define MCI_MODE_OPEN (530)
1459 #endif
1460 #endif
1461
1462 #if !defined(NOAVICAP) || !defined(NOVIDEO)
1463
1464 #ifndef _RCINVOKED
1465
1466 DECLARE_HANDLE(HVIDEO);
1467 typedef HVIDEO *LPHVIDEO;
1468 #endif
1469
1470 DWORD WINAPI VideoForWindowsVersion(void);
1471
1472 #define DV_ERR_OK (0)
1473 #define DV_ERR_BASE (1)
1474 #define DV_ERR_NONSPECIFIC (DV_ERR_BASE)
1475 #define DV_ERR_BADFORMAT (DV_ERR_BASE + 1)
1476
1477 #define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2)
1478
1479 #define DV_ERR_UNPREPARED (DV_ERR_BASE + 3)
1480
1481 #define DV_ERR_SYNC (DV_ERR_BASE + 4)
1482
1483 #define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
1484
1485 #define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6)
1486 #define DV_ERR_BADINSTALL (DV_ERR_BASE + 7)
1487 #define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
1488 #define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9)
1489 #define DV_ERR_PARAM1 (DV_ERR_BASE + 10)
1490 #define DV_ERR_PARAM2 (DV_ERR_BASE + 11)
1491 #define DV_ERR_CONFIG1 (DV_ERR_BASE + 12)
1492 #define DV_ERR_CONFIG2 (DV_ERR_BASE + 13)
1493 #define DV_ERR_FLAGS (DV_ERR_BASE + 14)
1494 #define DV_ERR_13 (DV_ERR_BASE + 15)
1495
1496 #define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16)
1497 #define DV_ERR_NOMEM (DV_ERR_BASE + 17)
1498 #define DV_ERR_ALLOCATED (DV_ERR_BASE + 18)
1499 #define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19)
1500 #define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20)
1501 #define DV_ERR_BADERRNUM (DV_ERR_BASE + 21)
1502 #define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22)
1503
1504 #define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23)
1505 #define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24)
1506 #define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25)
1507 #define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26)
1508 #define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27)
1509 #define DV_ERR_LASTERROR (DV_ERR_BASE + 27)
1510
1511 #define DV_ERR_USER_MSG (DV_ERR_BASE + 1000)
1512
1513 #ifndef _RCINVOKED
1514
1515 #ifndef MM_DRVM_OPEN
1516 #define MM_DRVM_OPEN 0x3D0
1517 #define MM_DRVM_CLOSE 0x3D1
1518 #define MM_DRVM_DATA 0x3D2
1519 #define MM_DRVM_ERROR 0x3D3
1520 #endif
1521
1522 #define DV_VM_OPEN MM_DRVM_OPEN
1523 #define DV_VM_CLOSE MM_DRVM_CLOSE
1524 #define DV_VM_DATA MM_DRVM_DATA
1525 #define DV_VM_ERROR MM_DRVM_ERROR
1526
1527 typedef struct videohdr_tag {
1528 LPBYTE lpData;
1529 DWORD dwBufferLength;
1530 DWORD dwBytesUsed;
1531 DWORD dwTimeCaptured;
1532 DWORD_PTR dwUser;
1533 DWORD dwFlags;
1534 DWORD_PTR dwReserved[4];
1535 } VIDEOHDR,NEAR *PVIDEOHDR,*LPVIDEOHDR;
1536
1537 #define VHDR_DONE 0x00000001
1538 #define VHDR_PREPARED 0x00000002
1539 #define VHDR_INQUEUE 0x00000004
1540 #define VHDR_KEYFRAME 0x00000008
1541 #define VHDR_VALID 0x0000000F
1542
1543 typedef struct channel_caps_tag {
1544 DWORD dwFlags;
1545 DWORD dwSrcRectXMod;
1546 DWORD dwSrcRectYMod;
1547 DWORD dwSrcRectWidthMod;
1548 DWORD dwSrcRectHeightMod;
1549 DWORD dwDstRectXMod;
1550 DWORD dwDstRectYMod;
1551 DWORD dwDstRectWidthMod;
1552 DWORD dwDstRectHeightMod;
1553 } CHANNEL_CAPS,NEAR *PCHANNEL_CAPS,*LPCHANNEL_CAPS;
1554
1555 #define VCAPS_OVERLAY 0x00000001
1556 #define VCAPS_SRC_CAN_CLIP 0x00000002
1557 #define VCAPS_DST_CAN_CLIP 0x00000004
1558 #define VCAPS_CAN_SCALE 0x00000008
1559
1560 #define VIDEO_EXTERNALIN 0x0001
1561 #define VIDEO_EXTERNALOUT 0x0002
1562 #define VIDEO_IN 0x0004
1563 #define VIDEO_OUT 0x0008
1564
1565 #define VIDEO_DLG_QUERY 0x0010
1566
1567 #define VIDEO_CONFIGURE_QUERY 0x8000
1568
1569 #define VIDEO_CONFIGURE_SET 0x1000
1570
1571 #define VIDEO_CONFIGURE_GET 0x2000
1572 #define VIDEO_CONFIGURE_QUERYSIZE 0x0001
1573
1574 #define VIDEO_CONFIGURE_CURRENT 0x0010
1575 #define VIDEO_CONFIGURE_NOMINAL 0x0020
1576 #define VIDEO_CONFIGURE_MIN 0x0040
1577 #define VIDEO_CONFIGURE_MAX 0x0080
1578
1579 #define DVM_USER 0X4000
1580
1581 #define DVM_CONFIGURE_START 0x1000
1582 #define DVM_CONFIGURE_END 0x1FFF
1583
1584 #define DVM_PALETTE (DVM_CONFIGURE_START + 1)
1585 #define DVM_FORMAT (DVM_CONFIGURE_START + 2)
1586 #define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
1587 #define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
1588 #define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
1589 #endif
1590 #endif
1591
1592 #ifndef NOAVICAP
1593 #ifdef __cplusplus
1594
1595 #define AVICapSM(hwnd,m,w,l) ((::IsWindow(hwnd)) ? ::SendMessage(hwnd,m,w,l) : 0)
1596 #else
1597
1598 #define AVICapSM(hwnd,m,w,l) ((IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)
1599 #endif
1600
1601 #ifndef RC_INVOKED
1602
1603 #define WM_CAP_START WM_USER
1604
1605 #define WM_CAP_UNICODE_START WM_USER+100
1606
1607 #define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START+ 1)
1608
1609 #define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START+ 2)
1610 #define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START+ 3)
1611 #define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START+ 2)
1612 #define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START+ 3)
1613 #ifdef UNICODE
1614 #define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORW
1615 #define WM_CAP_SET_CALLBACK_STATUS WM_CAP_SET_CALLBACK_STATUSW
1616 #else
1617 #define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORA
1618 #define WM_CAP_SET_CALLBACK_STATUS WM_CAP_SET_CALLBACK_STATUSA
1619 #endif
1620
1621 #define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START+ 4)
1622 #define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START+ 5)
1623 #define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START+ 6)
1624 #define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START+ 7)
1625 #define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8)
1626 #define WM_CAP_SET_USER_DATA (WM_CAP_START+ 9)
1627
1628 #define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10)
1629 #define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+ 11)
1630
1631 #define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START+ 12)
1632 #define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START+ 13)
1633 #define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START+ 12)
1634 #define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START+ 13)
1635 #ifdef UNICODE
1636 #define WM_CAP_DRIVER_GET_NAME WM_CAP_DRIVER_GET_NAMEW
1637 #define WM_CAP_DRIVER_GET_VERSION WM_CAP_DRIVER_GET_VERSIONW
1638 #else
1639 #define WM_CAP_DRIVER_GET_NAME WM_CAP_DRIVER_GET_NAMEA
1640 #define WM_CAP_DRIVER_GET_VERSION WM_CAP_DRIVER_GET_VERSIONA
1641 #endif
1642
1643 #define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+ 14)
1644
1645 #define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START+ 20)
1646 #define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START+ 21)
1647 #define WM_CAP_FILE_SAVEASA (WM_CAP_START+ 23)
1648 #define WM_CAP_FILE_SAVEDIBA (WM_CAP_START+ 25)
1649 #define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 20)
1650 #define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 21)
1651 #define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START+ 23)
1652 #define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START+ 25)
1653 #ifdef UNICODE
1654 #define WM_CAP_FILE_SET_CAPTURE_FILE WM_CAP_FILE_SET_CAPTURE_FILEW
1655 #define WM_CAP_FILE_GET_CAPTURE_FILE WM_CAP_FILE_GET_CAPTURE_FILEW
1656 #define WM_CAP_FILE_SAVEAS WM_CAP_FILE_SAVEASW
1657 #define WM_CAP_FILE_SAVEDIB WM_CAP_FILE_SAVEDIBW
1658 #else
1659 #define WM_CAP_FILE_SET_CAPTURE_FILE WM_CAP_FILE_SET_CAPTURE_FILEA
1660 #define WM_CAP_FILE_GET_CAPTURE_FILE WM_CAP_FILE_GET_CAPTURE_FILEA
1661 #define WM_CAP_FILE_SAVEAS WM_CAP_FILE_SAVEASA
1662 #define WM_CAP_FILE_SAVEDIB WM_CAP_FILE_SAVEDIBA
1663 #endif
1664
1665 #define WM_CAP_FILE_ALLOCATE (WM_CAP_START+ 22)
1666 #define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START+ 24)
1667
1668 #define WM_CAP_EDIT_COPY (WM_CAP_START+ 30)
1669
1670 #define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START+ 35)
1671 #define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START+ 36)
1672
1673 #define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START+ 41)
1674 #define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START+ 42)
1675 #define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START+ 43)
1676 #define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START+ 44)
1677 #define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START+ 45)
1678 #define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START+ 46)
1679
1680 #define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50)
1681 #define WM_CAP_SET_OVERLAY (WM_CAP_START+ 51)
1682 #define WM_CAP_SET_PREVIEWRATE (WM_CAP_START+ 52)
1683 #define WM_CAP_SET_SCALE (WM_CAP_START+ 53)
1684 #define WM_CAP_GET_STATUS (WM_CAP_START+ 54)
1685 #define WM_CAP_SET_SCROLL (WM_CAP_START+ 55)
1686
1687 #define WM_CAP_GRAB_FRAME (WM_CAP_START+ 60)
1688 #define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START+ 61)
1689
1690 #define WM_CAP_SEQUENCE (WM_CAP_START+ 62)
1691 #define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START+ 63)
1692 #define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START+ 64)
1693 #define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START+ 65)
1694
1695 #define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START+ 66)
1696 #define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START+ 67)
1697 #define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 66)
1698 #define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 67)
1699 #ifdef UNICODE
1700 #define WM_CAP_SET_MCI_DEVICE WM_CAP_SET_MCI_DEVICEW
1701 #define WM_CAP_GET_MCI_DEVICE WM_CAP_GET_MCI_DEVICEW
1702 #else
1703 #define WM_CAP_SET_MCI_DEVICE WM_CAP_SET_MCI_DEVICEA
1704 #define WM_CAP_GET_MCI_DEVICE WM_CAP_GET_MCI_DEVICEA
1705 #endif
1706
1707 #define WM_CAP_STOP (WM_CAP_START+ 68)
1708 #define WM_CAP_ABORT (WM_CAP_START+ 69)
1709
1710 #define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START+ 70)
1711 #define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START+ 71)
1712 #define WM_CAP_SINGLE_FRAME (WM_CAP_START+ 72)
1713
1714 #define WM_CAP_PAL_OPENA (WM_CAP_START+ 80)
1715 #define WM_CAP_PAL_SAVEA (WM_CAP_START+ 81)
1716 #define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START+ 80)
1717 #define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START+ 81)
1718 #ifdef UNICODE
1719 #define WM_CAP_PAL_OPEN WM_CAP_PAL_OPENW
1720 #define WM_CAP_PAL_SAVE WM_CAP_PAL_SAVEW
1721 #else
1722 #define WM_CAP_PAL_OPEN WM_CAP_PAL_OPENA
1723 #define WM_CAP_PAL_SAVE WM_CAP_PAL_SAVEA
1724 #endif
1725
1726 #define WM_CAP_PAL_PASTE (WM_CAP_START+ 82)
1727 #define WM_CAP_PAL_AUTOCREATE (WM_CAP_START+ 83)
1728 #define WM_CAP_PAL_MANUALCREATE (WM_CAP_START+ 84)
1729
1730 #define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START+ 85)
1731
1732 #define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW
1733 #define WM_CAP_END WM_CAP_UNICODE_END
1734
1735 #define capSetCallbackOnError(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_ERROR,0,(LPARAM)(LPVOID)(fpProc)))
1736 #define capSetCallbackOnStatus(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_STATUS,0,(LPARAM)(LPVOID)(fpProc)))
1737 #define capSetCallbackOnYield(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_YIELD,0,(LPARAM)(LPVOID)(fpProc)))
1738 #define capSetCallbackOnFrame(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_FRAME,0,(LPARAM)(LPVOID)(fpProc)))
1739 #define capSetCallbackOnVideoStream(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_VIDEOSTREAM,0,(LPARAM)(LPVOID)(fpProc)))
1740 #define capSetCallbackOnWaveStream(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_WAVESTREAM,0,(LPARAM)(LPVOID)(fpProc)))
1741 #define capSetCallbackOnCapControl(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_CAPCONTROL,0,(LPARAM)(LPVOID)(fpProc)))
1742
1743 #define capSetUserData(hwnd,lUser) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_USER_DATA,0,(LPARAM)lUser))
1744 #define capGetUserData(hwnd) (AVICapSM(hwnd,WM_CAP_GET_USER_DATA,0,0))
1745
1746 #define capDriverConnect(hwnd,i) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_CONNECT,(WPARAM)(i),0L))
1747 #define capDriverDisconnect(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_DISCONNECT,(WPARAM)0,0L))
1748 #define capDriverGetName(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_NAME,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
1749 #define capDriverGetVersion(hwnd,szVer,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_VERSION,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szVer)))
1750 #define capDriverGetCaps(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_CAPS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(s)))
1751
1752 #define capFileSetCaptureFile(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SET_CAPTURE_FILE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1753 #define capFileGetCaptureFile(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_GET_CAPTURE_FILE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
1754 #define capFileAlloc(hwnd,dwSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_ALLOCATE,0,(LPARAM)(DWORD)(dwSize)))
1755 #define capFileSaveAs(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SAVEAS,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1756 #define capFileSetInfoChunk(hwnd,lpInfoChunk) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SET_INFOCHUNK,(WPARAM)0,(LPARAM)(LPCAPINFOCHUNK)(lpInfoChunk)))
1757 #define capFileSaveDIB(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SAVEDIB,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1758
1759 #define capEditCopy(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_EDIT_COPY,0,0L))
1760
1761 #define capSetAudioFormat(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(s)))
1762 #define capGetAudioFormat(hwnd,s,wSize) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(s)))
1763 #define capGetAudioFormatSize(hwnd) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)0,(LPARAM)0L))
1764
1765 #define capDlgVideoFormat(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOFORMAT,0,0L))
1766 #define capDlgVideoSource(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOSOURCE,0,0L))
1767 #define capDlgVideoDisplay(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEODISPLAY,0,0L))
1768 #define capDlgVideoCompression(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOCOMPRESSION,0,0L))
1769
1770 #define capGetVideoFormat(hwnd,s,wSize) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(s)))
1771 #define capGetVideoFormatSize(hwnd) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_VIDEOFORMAT,0,0L))
1772 #define capSetVideoFormat(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(s)))
1773
1774 #define capPreview(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_PREVIEW,(WPARAM)(WINBOOL)(f),0L))
1775 #define capPreviewRate(hwnd,wMS) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_PREVIEWRATE,(WPARAM)(wMS),0))
1776 #define capOverlay(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_OVERLAY,(WPARAM)(WINBOOL)(f),0L))
1777 #define capPreviewScale(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SCALE,(WPARAM)(WINBOOL)f,0L))
1778 #define capGetStatus(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_STATUS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPSTATUS)(s)))
1779 #define capSetScrollPos(hwnd,lpP) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SCROLL,(WPARAM)0,(LPARAM)(LPPOINT)(lpP)))
1780
1781 #define capGrabFrame(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GRAB_FRAME,(WPARAM)0,(LPARAM)0L))
1782 #define capGrabFrameNoStop(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GRAB_FRAME_NOSTOP,(WPARAM)0,(LPARAM)0L))
1783
1784 #define capCaptureSequence(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SEQUENCE,(WPARAM)0,(LPARAM)0L))
1785 #define capCaptureSequenceNoFile(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SEQUENCE_NOFILE,(WPARAM)0,(LPARAM)0L))
1786 #define capCaptureStop(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_STOP,(WPARAM)0,(LPARAM)0L))
1787 #define capCaptureAbort(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_ABORT,(WPARAM)0,(LPARAM)0L))
1788
1789 #define capCaptureSingleFrameOpen(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME_OPEN,(WPARAM)0,(LPARAM)0L))
1790 #define capCaptureSingleFrameClose(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME_CLOSE,(WPARAM)0,(LPARAM)0L))
1791 #define capCaptureSingleFrame(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME,(WPARAM)0,(LPARAM)0L))
1792
1793 #define capCaptureGetSetup(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
1794 #define capCaptureSetSetup(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
1795
1796 #define capSetMCIDeviceName(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_MCI_DEVICE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1797 #define capGetMCIDeviceName(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_MCI_DEVICE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName)))
1798
1799 #define capPaletteOpen(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_OPEN,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1800 #define capPaletteSave(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_SAVE,0,(LPARAM)(LPVOID)(LPTSTR)(szName)))
1801 #define capPalettePaste(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_PASTE,(WPARAM) 0,(LPARAM)0L))
1802 #define capPaletteAuto(hwnd,iFrames,iColors) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_AUTOCREATE,(WPARAM)(iFrames),(LPARAM)(DWORD)(iColors)))
1803 #define capPaletteManual(hwnd,fGrab,iColors) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_MANUALCREATE,(WPARAM)(fGrab),(LPARAM)(DWORD)(iColors)))
1804
1805 typedef struct tagCapDriverCaps {
1806 UINT wDeviceIndex;
1807 WINBOOL fHasOverlay;
1808 WINBOOL fHasDlgVideoSource;
1809 WINBOOL fHasDlgVideoFormat;
1810 WINBOOL fHasDlgVideoDisplay;
1811 WINBOOL fCaptureInitialized;
1812 WINBOOL fDriverSuppliesPalettes;
1813 HANDLE hVideoIn;
1814 HANDLE hVideoOut;
1815 HANDLE hVideoExtIn;
1816 HANDLE hVideoExtOut;
1817 } CAPDRIVERCAPS,*PCAPDRIVERCAPS,*LPCAPDRIVERCAPS;
1818
1819 typedef struct tagCapStatus {
1820 UINT uiImageWidth;
1821 UINT uiImageHeight;
1822 WINBOOL fLiveWindow;
1823 WINBOOL fOverlayWindow;
1824 WINBOOL fScale;
1825 POINT ptScroll;
1826 WINBOOL fUsingDefaultPalette;
1827 WINBOOL fAudioHardware;
1828 WINBOOL fCapFileExists;
1829 DWORD dwCurrentVideoFrame;
1830 DWORD dwCurrentVideoFramesDropped;
1831 DWORD dwCurrentWaveSamples;
1832 DWORD dwCurrentTimeElapsedMS;
1833 HPALETTE hPalCurrent;
1834 WINBOOL fCapturingNow;
1835 DWORD dwReturn;
1836 UINT wNumVideoAllocated;
1837 UINT wNumAudioAllocated;
1838 } CAPSTATUS,*PCAPSTATUS,*LPCAPSTATUS;
1839
1840 typedef struct tagCaptureParms {
1841 DWORD dwRequestMicroSecPerFrame;
1842 WINBOOL fMakeUserHitOKToCapture;
1843 UINT wPercentDropForError;
1844 WINBOOL fYield;
1845 DWORD dwIndexSize;
1846 UINT wChunkGranularity;
1847 WINBOOL fUsingDOSMemory;
1848 UINT wNumVideoRequested;
1849 WINBOOL fCaptureAudio;
1850 UINT wNumAudioRequested;
1851 UINT vKeyAbort;
1852 WINBOOL fAbortLeftMouse;
1853 WINBOOL fAbortRightMouse;
1854 WINBOOL fLimitEnabled;
1855 UINT wTimeLimit;
1856 WINBOOL fMCIControl;
1857 WINBOOL fStepMCIDevice;
1858 DWORD dwMCIStartTime;
1859 DWORD dwMCIStopTime;
1860 WINBOOL fStepCaptureAt2x;
1861 UINT wStepCaptureAverageFrames;
1862 DWORD dwAudioBufferSize;
1863 WINBOOL fDisableWriteCache;
1864 UINT AVStreamMaster;
1865 } CAPTUREPARMS,*PCAPTUREPARMS,*LPCAPTUREPARMS;
1866
1867 #define AVSTREAMMASTER_AUDIO 0
1868 #define AVSTREAMMASTER_NONE 1
1869
1870 typedef struct tagCapInfoChunk {
1871 FOURCC fccInfoID;
1872 LPVOID lpData;
1873 LONG cbData;
1874 } CAPINFOCHUNK,*PCAPINFOCHUNK,*LPCAPINFOCHUNK;
1875
1876 typedef LRESULT (CALLBACK *CAPYIELDCALLBACK)(HWND hWnd);
1877 typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKW)(HWND hWnd,int nID,LPCWSTR lpsz);
1878 typedef LRESULT (CALLBACK *CAPERRORCALLBACKW)(HWND hWnd,int nID,LPCWSTR lpsz);
1879 typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKA)(HWND hWnd,int nID,LPCSTR lpsz);
1880 typedef LRESULT (CALLBACK *CAPERRORCALLBACKA)(HWND hWnd,int nID,LPCSTR lpsz);
1881 #ifdef UNICODE
1882 #define CAPSTATUSCALLBACK CAPSTATUSCALLBACKW
1883 #define CAPERRORCALLBACK CAPERRORCALLBACKW
1884 #else
1885 #define CAPSTATUSCALLBACK CAPSTATUSCALLBACKA
1886 #define CAPERRORCALLBACK CAPERRORCALLBACKA
1887 #endif
1888 typedef LRESULT (CALLBACK *CAPVIDEOCALLBACK)(HWND hWnd,LPVIDEOHDR lpVHdr);
1889 typedef LRESULT (CALLBACK *CAPWAVECALLBACK)(HWND hWnd,LPWAVEHDR lpWHdr);
1890 typedef LRESULT (CALLBACK *CAPCONTROLCALLBACK)(HWND hWnd,int nState);
1891
1892 #define CONTROLCALLBACK_PREROLL 1
1893 #define CONTROLCALLBACK_CAPTURING 2
1894
1895 HWND WINAPI capCreateCaptureWindowA (LPCSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,int nID);
1896 WINBOOL WINAPI capGetDriverDescriptionA (UINT wDriverIndex,LPSTR lpszName,int cbName,LPSTR lpszVer,int cbVer);
1897 HWND WINAPI capCreateCaptureWindowW (LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,int nID);
1898 WINBOOL WINAPI capGetDriverDescriptionW (UINT wDriverIndex,LPWSTR lpszName,int cbName,LPWSTR lpszVer,int cbVer);
1899
1900 #ifdef UNICODE
1901 #define capCreateCaptureWindow capCreateCaptureWindowW
1902 #define capGetDriverDescription capGetDriverDescriptionW
1903 #else
1904 #define capCreateCaptureWindow capCreateCaptureWindowA
1905 #define capGetDriverDescription capGetDriverDescriptionA
1906 #endif
1907 #endif
1908
1909 #define infotypeDIGITIZATION_TIME mmioFOURCC ('I','D','I','T')
1910 #define infotypeSMPTE_TIME mmioFOURCC ('I','S','M','P')
1911
1912 #define IDS_CAP_BEGIN 300
1913 #define IDS_CAP_END 301
1914
1915 #define IDS_CAP_INFO 401
1916 #define IDS_CAP_OUTOFMEM 402
1917 #define IDS_CAP_FILEEXISTS 403
1918 #define IDS_CAP_ERRORPALOPEN 404
1919 #define IDS_CAP_ERRORPALSAVE 405
1920 #define IDS_CAP_ERRORDIBSAVE 406
1921 #define IDS_CAP_DEFAVIEXT 407
1922 #define IDS_CAP_DEFPALEXT 408
1923 #define IDS_CAP_CANTOPEN 409
1924 #define IDS_CAP_SEQ_MSGSTART 410
1925 #define IDS_CAP_SEQ_MSGSTOP 411
1926
1927 #define IDS_CAP_VIDEDITERR 412
1928 #define IDS_CAP_READONLYFILE 413
1929 #define IDS_CAP_WRITEERROR 414
1930 #define IDS_CAP_NODISKSPACE 415
1931 #define IDS_CAP_SETFILESIZE 416
1932 #define IDS_CAP_SAVEASPERCENT 417
1933
1934 #define IDS_CAP_DRIVER_ERROR 418
1935
1936 #define IDS_CAP_WAVE_OPEN_ERROR 419
1937 #define IDS_CAP_WAVE_ALLOC_ERROR 420
1938 #define IDS_CAP_WAVE_PREPARE_ERROR 421
1939 #define IDS_CAP_WAVE_ADD_ERROR 422
1940 #define IDS_CAP_WAVE_SIZE_ERROR 423
1941
1942 #define IDS_CAP_VIDEO_OPEN_ERROR 424
1943 #define IDS_CAP_VIDEO_ALLOC_ERROR 425
1944 #define IDS_CAP_VIDEO_PREPARE_ERROR 426
1945 #define IDS_CAP_VIDEO_ADD_ERROR 427
1946 #define IDS_CAP_VIDEO_SIZE_ERROR 428
1947
1948 #define IDS_CAP_FILE_OPEN_ERROR 429
1949 #define IDS_CAP_FILE_WRITE_ERROR 430
1950 #define IDS_CAP_RECORDING_ERROR 431
1951 #define IDS_CAP_RECORDING_ERROR2 432
1952 #define IDS_CAP_AVI_INIT_ERROR 433
1953 #define IDS_CAP_NO_FRAME_CAP_ERROR 434
1954 #define IDS_CAP_NO_PALETTE_WARN 435
1955 #define IDS_CAP_MCI_CONTROL_ERROR 436
1956 #define IDS_CAP_MCI_CANT_STEP_ERROR 437
1957 #define IDS_CAP_NO_AUDIO_CAP_ERROR 438
1958 #define IDS_CAP_AVI_DRAWDIB_ERROR 439
1959 #define IDS_CAP_COMPRESSOR_ERROR 440
1960 #define IDS_CAP_AUDIO_DROP_ERROR 441
1961 #define IDS_CAP_AUDIO_DROP_COMPERROR 442
1962
1963 #define IDS_CAP_STAT_LIVE_MODE 500
1964 #define IDS_CAP_STAT_OVERLAY_MODE 501
1965 #define IDS_CAP_STAT_CAP_INIT 502
1966 #define IDS_CAP_STAT_CAP_FINI 503
1967 #define IDS_CAP_STAT_PALETTE_BUILD 504
1968 #define IDS_CAP_STAT_OPTPAL_BUILD 505
1969 #define IDS_CAP_STAT_I_FRAMES 506
1970 #define IDS_CAP_STAT_L_FRAMES 507
1971 #define IDS_CAP_STAT_CAP_L_FRAMES 508
1972 #define IDS_CAP_STAT_CAP_AUDIO 509
1973 #define IDS_CAP_STAT_VIDEOCURRENT 510
1974 #define IDS_CAP_STAT_VIDEOAUDIO 511
1975 #define IDS_CAP_STAT_VIDEOONLY 512
1976 #define IDS_CAP_STAT_FRAMESDROPPED 513
1977 #endif
1978
1979 #ifdef __cplusplus
1980 }
1981 #endif
1982
1983 #ifndef NOMSACM
1984 #include <msacm.h>
1985 #endif
1986
1987 #ifdef __cplusplus
1988 extern "C" {
1989 #endif
1990
1991 #ifdef OFN_READONLY
1992 WINBOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn);
1993 WINBOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn);
1994 WINBOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn);
1995 WINBOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn);
1996
1997 #ifdef UNICODE
1998 #define GetOpenFileNamePreview GetOpenFileNamePreviewW
1999 #define GetSaveFileNamePreview GetSaveFileNamePreviewW
2000 #else
2001 #define GetOpenFileNamePreview GetOpenFileNamePreviewA
2002 #define GetSaveFileNamePreview GetSaveFileNamePreviewA
2003 #endif
2004 #endif
2005
2006 #ifndef RC_INVOKED
2007 #include "poppack.h"
2008 #endif
2009
2010 #ifdef __cplusplus
2011 }
2012 #endif
2013 #endif