ReactOS  0.4.13-dev-242-g611e6d7
vfw.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) the Wine project
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #ifndef __WINE_VFW_H
20 #define __WINE_VFW_H
21 
22 #include <mmsystem.h>
23 #include <mmreg.h>
24 #include <msacm.h>
25 
26 #define VFWAPI WINAPI
27 #define VFWAPIV WINAPIV
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif /* __cplusplus */
32 
33 typedef HANDLE HDRAWDIB;
34 
35 /*****************************************************************************
36  * Predeclare the interfaces
37  */
38 typedef struct IAVIStream *PAVISTREAM;
39 typedef struct IAVIFile *PAVIFILE;
40 typedef struct IGetFrame *PGETFRAME;
41 typedef struct IAVIEditStream *PAVIEDITSTREAM;
42 
43 /* Installable Compressor Manager */
44 
45 #define ICVERSION 0x0104
46 
47 DECLARE_HANDLE(HIC);
48 
49 /* error return codes */
50 #define ICERR_OK 0
51 #define ICERR_DONTDRAW 1
52 #define ICERR_NEWPALETTE 2
53 #define ICERR_GOTOKEYFRAME 3
54 #define ICERR_STOPDRAWING 4
55 
56 #define ICERR_UNSUPPORTED -1
57 #define ICERR_BADFORMAT -2
58 #define ICERR_MEMORY -3
59 #define ICERR_INTERNAL -4
60 #define ICERR_BADFLAGS -5
61 #define ICERR_BADPARAM -6
62 #define ICERR_BADSIZE -7
63 #define ICERR_BADHANDLE -8
64 #define ICERR_CANTUPDATE -9
65 #define ICERR_ABORT -10
66 #define ICERR_ERROR -100
67 #define ICERR_BADBITDEPTH -200
68 #define ICERR_BADIMAGESIZE -201
69 
70 #define ICERR_CUSTOM -400
71 
72 /* ICM Messages */
73 #define ICM_USER (DRV_USER+0x0000)
74 
75 /* ICM driver message range */
76 #define ICM_RESERVED_LOW (DRV_USER+0x1000)
77 #define ICM_RESERVED_HIGH (DRV_USER+0x2000)
78 #define ICM_RESERVED ICM_RESERVED_LOW
79 
80 #define ICM_GETSTATE (ICM_RESERVED+0)
81 #define ICM_SETSTATE (ICM_RESERVED+1)
82 #define ICM_GETINFO (ICM_RESERVED+2)
83 
84 #define ICM_CONFIGURE (ICM_RESERVED+10)
85 #define ICM_ABOUT (ICM_RESERVED+11)
86 /* */
87 
88 #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
89 #define ICM_GETQUALITY (ICM_RESERVED+31)
90 #define ICM_SETQUALITY (ICM_RESERVED+32)
91 
92 #define ICM_SET (ICM_RESERVED+40)
93 #define ICM_GET (ICM_RESERVED+41)
94 
95 /* 2 constant FOURCC codes */
96 #define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
97 #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
98 
99 #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
100 #define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
101 #define ICM_COMPRESS_QUERY (ICM_USER+6)
102 #define ICM_COMPRESS_BEGIN (ICM_USER+7)
103 #define ICM_COMPRESS (ICM_USER+8)
104 #define ICM_COMPRESS_END (ICM_USER+9)
105 
106 #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
107 #define ICM_DECOMPRESS_QUERY (ICM_USER+11)
108 #define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
109 #define ICM_DECOMPRESS (ICM_USER+13)
110 #define ICM_DECOMPRESS_END (ICM_USER+14)
111 #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
112 #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
113 
114 #define ICM_DRAW_QUERY (ICM_USER+31)
115 #define ICM_DRAW_BEGIN (ICM_USER+15)
116 #define ICM_DRAW_GET_PALETTE (ICM_USER+16)
117 #define ICM_DRAW_START (ICM_USER+18)
118 #define ICM_DRAW_STOP (ICM_USER+19)
119 #define ICM_DRAW_END (ICM_USER+21)
120 #define ICM_DRAW_GETTIME (ICM_USER+32)
121 #define ICM_DRAW (ICM_USER+33)
122 #define ICM_DRAW_WINDOW (ICM_USER+34)
123 #define ICM_DRAW_SETTIME (ICM_USER+35)
124 #define ICM_DRAW_REALIZE (ICM_USER+36)
125 #define ICM_DRAW_FLUSH (ICM_USER+37)
126 #define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
127 
128 #define ICM_DRAW_START_PLAY (ICM_USER+39)
129 #define ICM_DRAW_STOP_PLAY (ICM_USER+40)
130 
131 #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
132 #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
133 
134 #define ICM_GETBUFFERSWANTED (ICM_USER+41)
135 
136 #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
137 
138 #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
139 #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
140 #define ICM_DECOMPRESSEX (ICM_USER+62)
141 #define ICM_DECOMPRESSEX_END (ICM_USER+63)
142 
143 #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
144 #define ICM_SET_STATUS_PROC (ICM_USER+72)
145 
146 #ifndef comptypeDIB
147 #define comptypeDIB mmioFOURCC('D','I','B',' ')
148 #endif
149 
150 /* structs */
151 
152 /* NOTE: Only the 16 bit structs are packed. Structs that are packed anyway
153  * have not been changed. If a structure is later extended, you may need to create
154  * two versions of it.
155  */
156 
157 typedef struct {
158  DWORD dwSize; /* 00: size */
159  DWORD fccType; /* 04: type 'vidc' usually */
160  DWORD fccHandler; /* 08: */
161  DWORD dwVersion; /* 0c: version of compman opening you */
162  DWORD dwFlags; /* 10: LOWORD is type specific */
163  LRESULT dwError; /* 14: */
164  LPVOID pV1Reserved; /* 18: */
165  LPVOID pV2Reserved; /* 1c: */
166  DWORD dnDevNode; /* 20: */
167  /* 24: */
168 } ICOPEN,*LPICOPEN;
169 
170 #define ICCOMPRESS_KEYFRAME 0x00000001L
171 
172 typedef struct {
175  _Field_size_bytes_(lpbiOutput->biSizeImage) LPVOID lpOutput;
177  _Field_size_bytes_(lpbiInput->biSizeImage) LPVOID lpInput;
178  LPDWORD lpckid;
179  LPDWORD lpdwFlags;
180  LONG lFrameNum;
181  DWORD dwFrameSize;
182  DWORD dwQuality;
184  _Field_size_bytes_(lpbiPrev->biSizeImage) LPVOID lpPrev;
185 } ICCOMPRESS;
186 
187 DWORD
188 VFWAPIV
189 ICCompress(
190  _In_ HIC hic,
192  _In_ LPBITMAPINFOHEADER lpbiOutput,
193  _Out_writes_bytes_(lpbiOutput->biSizeImage) LPVOID lpData,
194  _In_ LPBITMAPINFOHEADER lpbiInput,
195  _In_reads_bytes_(lpbiInput->biSizeImage) LPVOID lpBits,
196  _Out_opt_ LPDWORD lpckid,
197  _Out_opt_ LPDWORD lpdwFlags,
198  _In_ LONG lFrameNum,
199  _In_ DWORD dwFrameSize,
200  _In_ DWORD dwQuality,
201  _In_opt_ LPBITMAPINFOHEADER lpbiPrev,
202  _In_reads_bytes_opt_(lpbiPrev->biSizeImage) LPVOID lpPrev);
203 
204 #define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \
205  ICSendMessage( \
206  hic,ICM_COMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput), \
207  (DWORD_PTR)(LPVOID)(lpbiOutput) \
208  )
209 
210 #define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
211 
212 #define ICCompressBegin(hic, lpbiInput, lpbiOutput) \
213  ICSendMessage( \
214  hic, ICM_COMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(lpbiInput), \
215  (DWORD_PTR)(LPVOID)(lpbiOutput) \
216  )
217 
218 #define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \
219  ICSendMessage( \
220  hic, ICM_COMPRESS_GET_SIZE, (DWORD_PTR)(LPVOID)(lpbiInput), \
221  (DWORD_PTR)(LPVOID)(lpbiOutput) \
222  )
223 
224 #define ICCompressQuery(hic, lpbiInput, lpbiOutput) \
225  ICSendMessage( \
226  hic, ICM_COMPRESS_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), \
227  (DWORD_PTR)(LPVOID)(lpbiOutput) \
228  )
229 
230 #define ICCompressEnd(hic) ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
231 
232 /* ICCOMPRESSFRAMES.dwFlags */
233 #define ICCOMPRESSFRAMES_PADDING 0x00000001
234 typedef struct {
250  LONG (CALLBACK *PutData)(_In_ LPARAM lOutput, _In_ LONG lFrame, _In_reads_bytes_(len) LPVOID lpBits, _In_ LONG len);
252 
253 typedef struct {
256  /* messages for Status callback */
257 #define ICSTATUS_START 0
258 #define ICSTATUS_STATUS 1
259 #define ICSTATUS_END 2
260 #define ICSTATUS_ERROR 3
261 #define ICSTATUS_YIELD 4
262  /* FIXME: some X11 libs define Status as int... */
263  /* LONG (CALLBACK *zStatus)(LPARAM lParam, UINT message, LONG l); */
266 
267 /* Values for wMode of ICOpen() */
268 #define ICMODE_COMPRESS 1
269 #define ICMODE_DECOMPRESS 2
270 #define ICMODE_FASTDECOMPRESS 3
271 #define ICMODE_QUERY 4
272 #define ICMODE_FASTCOMPRESS 5
273 #define ICMODE_DRAW 8
274 
275 /* quality flags */
276 #define ICQUALITY_LOW 0
277 #define ICQUALITY_HIGH 10000
278 #define ICQUALITY_DEFAULT -1
279 
280 typedef struct {
281  DWORD dwSize; /* 00: */
282  DWORD fccType; /* 04:compressor type 'vidc' 'audc' */
283  DWORD fccHandler; /* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/
284  DWORD dwFlags; /* 0c:flags LOWORD is type specific */
285  DWORD dwVersion; /* 10:version of the driver */
286  DWORD dwVersionICM; /* 14:version of the ICM used */
287  /*
288  * under Win32, the driver always returns UNICODE strings.
289  */
290  WCHAR szName[16]; /* 18:short name */
291  WCHAR szDescription[128]; /* 38:long name */
292  WCHAR szDriver[128]; /* 138:driver that contains compressor*/
293  /* 238: */
294 } ICINFO;
295 
296 /* ICINFO.dwFlags */
297 #define VIDCF_QUALITY 0x0001 /* supports quality */
298 #define VIDCF_CRUNCH 0x0002 /* supports crunching to a frame size */
299 #define VIDCF_TEMPORAL 0x0004 /* supports inter-frame compress */
300 #define VIDCF_COMPRESSFRAMES 0x0008 /* wants the compress all frames message */
301 #define VIDCF_DRAW 0x0010 /* supports drawing */
302 #define VIDCF_FASTTEMPORALC 0x0020 /* does not need prev frame on compress */
303 #define VIDCF_FASTTEMPORALD 0x0080 /* does not need prev frame on decompress */
304 #define VIDCF_QUALITYTIME 0x0040 /* supports temporal quality */
305 
306 #define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
307 
308 
309 /* function shortcuts */
310 /* ICM_ABOUT */
311 #define ICMF_ABOUT_QUERY 0x00000001
312 
313 #define ICQueryAbout(hic) \
314  (ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
315 
316 #define ICAbout(hic, hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)(UINT_PTR)(hwnd),0)
317 
318 /* ICM_CONFIGURE */
319 #define ICMF_CONFIGURE_QUERY 0x00000001
320 #define ICQueryConfigure(hic) \
321  (ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
322 
323 #define ICConfigure(hic,hwnd) \
324  ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)(UINT_PTR)(hwnd),0)
325 
326 /* Decompression stuff */
327 #define ICDECOMPRESS_HURRYUP 0x80000000 /* don't draw just buffer (hurry up!) */
328 #define ICDECOMPRESS_UPDATE 0x40000000 /* don't draw just update screen */
329 #define ICDECOMPRESS_PREROLL 0x20000000 /* this frame is before real start */
330 #define ICDECOMPRESS_NULLFRAME 0x10000000 /* repeat last frame */
331 #define ICDECOMPRESS_NOTKEYFRAME 0x08000000 /* this frame is not a key frame */
332 
333 typedef struct {
334  DWORD dwFlags; /* flags (from AVI index...) */
335  LPBITMAPINFOHEADER lpbiInput; /* BITMAPINFO of compressed data */
336  _Field_size_bytes_(lpbiInput->biSizeImage) LPVOID lpInput; /* compressed data */
337  LPBITMAPINFOHEADER lpbiOutput; /* DIB to decompress to */
338  _Field_size_bytes_(lpbiOutput->biSizeImage) LPVOID lpOutput;
339  DWORD ckid; /* ckid from AVI file */
340 } ICDECOMPRESS;
341 
342 typedef struct {
348 
349  /* changed for ICM_DECOMPRESSEX */
350  INT xDst; /* destination rectangle */
354 
355  INT xSrc; /* source rectangle */
360 
361 DWORD
362 VFWAPIV
364  _In_ HIC hic,
366  _In_ LPBITMAPINFOHEADER lpbiFormat,
367  _In_reads_bytes_(lpbiFormat->biSizeImage) LPVOID lpData,
369  _Out_writes_bytes_(lpbi->biSizeImage) LPVOID lpBits);
370 
371 #define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \
372  ICSendMessage( \
373  hic, ICM_DECOMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(lpbiInput), \
374  (DWORD_PTR)(LPVOID)(lpbiOutput) \
375  )
376 
377 #define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \
378  ICSendMessage( \
379  hic,ICM_DECOMPRESS_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), \
380  (DWORD_PTR) (LPVOID)(lpbiOutput) \
381  )
382 
383 #define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \
384  ((LONG)ICSendMessage( \
385  hic,ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)(LPVOID)(lpbiInput), \
386  (DWORD_PTR)(LPVOID)(lpbiOutput) \
387  ))
388 
389 #define ICDecompressGetFormatSize(hic, lpbi) \
390  ICDecompressGetFormat(hic, lpbi, NULL)
391 
392 #define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \
393  ICSendMessage( \
394  hic, ICM_DECOMPRESS_GET_PALETTE, (DWORD_PTR)(LPVOID)(lpbiInput), \
395  (DWORD_PTR)(LPVOID)(lpbiOutput) \
396  )
397 
398 #define ICDecompressSetPalette(hic,lpbiPalette) \
399  ICSendMessage( \
400  hic,ICM_DECOMPRESS_SET_PALETTE, \
401  (DWORD_PTR)(LPVOID)(lpbiPalette),0 \
402  )
403 
404 #define ICDecompressEnd(hic) ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
405 
406 LRESULT
407 VFWAPI
409  _In_ HIC hic,
410  _In_ UINT msg,
411  _In_ DWORD_PTR dw1,
412  _In_ DWORD_PTR dw2);
413 
414 static inline
415 LRESULT
416 VFWAPI
419  _In_ LPBITMAPINFOHEADER lpbiSrc,
420  _In_reads_bytes_(lpbiSrc->biSizeImage) LPVOID lpSrc,
421  _In_ int xSrc,
422  _In_ int ySrc,
423  _In_ int dxSrc,
424  _In_ int dySrc,
425  _In_ LPBITMAPINFOHEADER lpbiDst,
426  _Out_writes_bytes_(lpbiDst->biSizeImage) LPVOID lpDst,
427  _In_ int xDst,
428  _In_ int yDst,
429  _In_ int dxDst,
430  _In_ int dyDst)
431 {
432  ICDECOMPRESSEX ic;
433 
434  ic.dwFlags = dwFlags;
435  ic.lpbiSrc = lpbiSrc;
436  ic.lpSrc = lpSrc;
437  ic.xSrc = xSrc;
438  ic.ySrc = ySrc;
439  ic.dxSrc = dxSrc;
440  ic.dySrc = dySrc;
441  ic.lpbiDst = lpbiDst;
442  ic.lpDst = lpDst;
443  ic.xDst = xDst;
444  ic.yDst = yDst;
445  ic.dxDst = dxDst;
446  ic.dyDst = dyDst;
447  return ICSendMessage(hic, ICM_DECOMPRESSEX, (DWORD_PTR)&ic, sizeof(ic));
448 }
449 
450 static inline
451 LRESULT
452 VFWAPI
455  _In_ LPBITMAPINFOHEADER lpbiSrc,
456  _In_opt_ LPVOID lpSrc,
457  _In_ int xSrc,
458  _In_ int ySrc,
459  _In_ int dxSrc,
460  _In_ int dySrc,
461  _In_ LPBITMAPINFOHEADER lpbiDst,
462  _Out_opt_ LPVOID lpDst,
463  _In_ int xDst,
464  _In_ int yDst,
465  _In_ int dxDst,
466  _In_ int dyDst)
467 {
468  ICDECOMPRESSEX ic;
469 
470  ic.dwFlags = dwFlags;
471  ic.lpbiSrc = lpbiSrc;
472  ic.lpSrc = lpSrc;
473  ic.xSrc = xSrc;
474  ic.ySrc = ySrc;
475  ic.dxSrc = dxSrc;
476  ic.dySrc = dySrc;
477  ic.lpbiDst = lpbiDst;
478  ic.lpDst = lpDst;
479  ic.xDst = xDst;
480  ic.yDst = yDst;
481  ic.dxDst = dxDst;
482  ic.dyDst = dyDst;
483  return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, (DWORD_PTR)&ic, sizeof(ic));
484 }
485 
486 static inline
487 LRESULT
488 VFWAPI
491  _In_ LPBITMAPINFOHEADER lpbiSrc,
492  _Reserved_ LPVOID lpSrc,
493  _In_ int xSrc,
494  _In_ int ySrc,
495  _In_ int dxSrc,
496  _In_ int dySrc,
498  _Out_opt_ LPVOID lpDst,
499  _In_ int xDst,
500  _In_ int yDst,
501  _In_ int dxDst,
502  _In_ int dyDst)
503 {
504  ICDECOMPRESSEX ic;
505 
506  ic.dwFlags = dwFlags;
507  ic.lpbiSrc = lpbiSrc;
508  ic.lpSrc = lpSrc;
509  ic.xSrc = xSrc;
510  ic.ySrc = ySrc;
511  ic.dxSrc = dxSrc;
512  ic.dySrc = dySrc;
513  ic.lpbiDst = lpbiDst;
514  ic.lpDst = lpDst;
515  ic.xDst = xDst;
516  ic.yDst = yDst;
517  ic.dxDst = dxDst;
518  ic.dyDst = dyDst;
519  return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, (DWORD_PTR)&ic, sizeof(ic));
520 }
521 
522 #define ICDecompressExEnd(hic) \
523  ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
524 
525 #define ICDRAW_QUERY 0x00000001L /* test for support */
526 #define ICDRAW_FULLSCREEN 0x00000002L /* draw to full screen */
527 #define ICDRAW_HDC 0x00000004L /* draw to a HDC/HWND */
528 #define ICDRAW_ANIMATE 0x00000008L /* expect palette animation */
529 #define ICDRAW_CONTINUE 0x00000010L /* draw is a continuation of previous draw */
530 #define ICDRAW_MEMORYDC 0x00000020L /* DC is offscreen, by the way */
531 #define ICDRAW_UPDATING 0x00000040L /* We're updating, as opposed to playing */
532 #define ICDRAW_RENDER 0x00000080L /* used to render data not draw it */
533 #define ICDRAW_BUFFER 0x00000100L /* buffer data offscreen, we will need to update it */
534 
535 #define ICDecompressOpen(fccType, fccHandler, lpbiIn, lpbiOut) \
536  ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
537 
538 #define ICDrawOpen(fccType, fccHandler, lpbiIn) \
539  ICLocate(fccType, fccHandler, lpbiIn, NULL, ICMODE_DRAW)
540 
541 HANDLE
542 VFWAPI
544  _In_ HIC hic,
545  _In_ UINT uiFlags,
546  _In_ LPBITMAPINFO lpbiIn,
547  _In_ LPVOID lpBits,
548  _In_opt_ LPBITMAPINFO lpbiOut,
549  _In_ LONG lQuality,
550  _Inout_opt_ LONG* plSize);
551 
552 HANDLE
553 VFWAPI
555  _In_opt_ HIC hic,
556  _In_ UINT uiFlags,
557  _In_ LPBITMAPINFO lpbiIn,
558  _In_ LPVOID lpBits,
559  _In_opt_ LPBITMAPINFO lpbiOut);
560 
561 BOOL
562 VFWAPI
563 ICInfo(
564  _In_ DWORD fccType,
565  _In_ DWORD fccHandler,
566  _Out_ ICINFO * lpicinfo);
567 
568 BOOL
569 VFWAPI
570 ICInstall(
571  _In_ DWORD fccType,
572  _In_ DWORD fccHandler,
574  _In_ LPSTR szDesc,
575  _In_ UINT wFlags);
576 
577 BOOL
578 VFWAPI
579 ICRemove(
580  _In_ DWORD fccType,
581  _In_ DWORD fccHandler,
582  _In_ UINT wFlags);
583 
584 _Success_(return != 0)
585 LRESULT
586 VFWAPI
587 ICGetInfo(
588  _In_ HIC hic,
591 
592 HIC VFWAPI ICOpen(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wMode);
593 
594 HIC
595 VFWAPI
597  _In_ DWORD fccType,
598  _In_ DWORD fccHandler,
599  _In_ UINT wMode,
600  _In_ DRIVERPROC lpfnHandler);
601 
602 LRESULT VFWAPI ICClose(_In_ HIC hic);
603 
604 HIC
605 VFWAPI
606 ICLocate(
607  _In_ DWORD fccType,
608  _In_ DWORD fccHandler,
609  _In_ LPBITMAPINFOHEADER lpbiIn,
611  _In_ WORD wFlags);
612 
613 HIC
614 VFWAPI
616  _In_opt_ HIC hic,
617  _In_ LPBITMAPINFOHEADER lpbiIn,
618  _Out_ LPBITMAPINFOHEADER lpbiOut,
619  _In_ int BitDepth,
620  _In_ int dx,
621  _In_ int dy);
622 
623 /* Values for wFlags of ICInstall() */
624 #define ICINSTALL_UNICODE 0x8000
625 #define ICINSTALL_FUNCTION 0x0001
626 #define ICINSTALL_DRIVER 0x0002
627 #define ICINSTALL_HDRV 0x0004
628 #define ICINSTALL_DRIVERW 0x8002
629 
630 #define ICGetState(hic, pv, cb) \
631  ICSendMessage(hic, ICM_GETSTATE, (DWORD_PTR)(LPVOID)(pv), (DWORD_PTR)(cb))
632 #define ICSetState(hic, pv, cb) \
633  ICSendMessage(hic, ICM_SETSTATE, (DWORD_PTR)(LPVOID)(pv), (DWORD_PTR)(cb))
634 #define ICGetStateSize(hic) \
635  ICGetState(hic, NULL, 0)
636 
637 static inline DWORD ICGetDefaultQuality(HIC hic)
638 {
639  DWORD dwICValue;
640  ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD_PTR)(LPVOID)&dwICValue, sizeof(DWORD));
641  return dwICValue;
642 }
643 
644 static inline DWORD ICGetDefaultKeyFrameRate(HIC hic)
645 {
646  DWORD dwICValue;
647  ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD_PTR)(LPVOID)&dwICValue, sizeof(DWORD));
648  return dwICValue;
649 }
650 
651 #define ICDrawWindow(hic, prc) \
652  ICSendMessage(hic, ICM_DRAW_WINDOW, (DWORD_PTR)(LPVOID)(prc), sizeof(RECT))
653 
654 /* As passed to ICM_DRAW_SUGGESTFORMAT */
655 typedef struct {
664 } ICDRAWSUGGEST;
665 
666 typedef struct {
668  int iStart;
669  int iLen;
671 } ICPALETTE;
672 
673 DWORD
674 VFWAPIV
676  _In_ HIC hic,
678  _In_opt_ HPALETTE hpal,
680  _In_opt_ HDC hdc,
681  _In_ INT xDst,
682  _In_ INT yDst,
683  _In_ INT dxDst,
684  _In_ INT dyDst,
686  _In_ INT xSrc,
687  _In_ INT ySrc,
688  _In_ INT dxSrc,
689  _In_ INT dySrc,
690  _In_ DWORD dwRate,
691  _In_ DWORD dwScale);
692 
693 /* as passed to ICM_DRAW_BEGIN */
694 typedef struct {
696  HPALETTE hpal;
710 } ICDRAWBEGIN;
711 
712 #define ICDRAW_HURRYUP 0x80000000L /* don't draw just buffer (hurry up!) */
713 #define ICDRAW_UPDATE 0x40000000L /* don't draw just update screen */
714 #define ICDRAW_PREROLL 0x20000000L /* this frame is before real start */
715 #define ICDRAW_NULLFRAME 0x10000000L /* repeat last frame */
716 #define ICDRAW_NOTKEYFRAME 0x08000000L /* this frame is not a key frame */
717 
718 typedef struct {
724 } ICDRAW;
725 
726 DWORD
727 VFWAPIV
728 ICDraw(
729  _In_ HIC hic,
732  _In_reads_bytes_opt_(cbData) LPVOID lpData,
733  _In_ DWORD cbData,
734  _In_ LONG lTime);
735 
736 static inline
737 LRESULT
738 VFWAPI
740  _In_ LPBITMAPINFOHEADER lpbiIn,
741  _Out_ LPBITMAPINFOHEADER lpbiOut,
742  _In_ int dxSrc,
743  _In_ int dySrc,
744  _In_ int dxDst,
745  _In_ int dyDst,
746  _In_ HIC hicDecomp)
747 {
748  ICDRAWSUGGEST ic;
749 
750  ic.lpbiIn = lpbiIn;
751  ic.lpbiSuggest = lpbiOut;
752  ic.dxSrc = dxSrc;
753  ic.dySrc = dySrc;
754  ic.dxDst = dxDst;
755  ic.dyDst = dyDst;
756  ic.hicDecompressor = hicDecomp;
757  return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, (DWORD_PTR)&ic, sizeof(ic));
758 }
759 
760 #define ICDrawQuery(hic, lpbiInput) \
761  ICSendMessage(hic, ICM_DRAW_QUERY, (DWORD_PTR)(LPVOID)(lpbiInput), 0L)
762 
763 #define ICDrawChangePalette(hic, lpbiInput) \
764  ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, (DWORD_PTR)(LPVOID)(lpbiInput), 0L)
765 
766 #define ICGetBuffersWanted(hic, lpdwBuffers) \
767  ICSendMessage(hic, ICM_GETBUFFERSWANTED, (DWORD_PTR)(LPVOID)(lpdwBuffers), 0)
768 
769 #define ICDrawEnd(hic) \
770  ICSendMessage(hic, ICM_DRAW_END, 0, 0)
771 
772 #define ICDrawStart(hic) \
773  ICSendMessage(hic, ICM_DRAW_START, 0, 0)
774 
775 #define ICDrawStartPlay(hic, lFrom, lTo) \
776  ICSendMessage(hic, ICM_DRAW_START_PLAY, (DWORD_PTR)(lFrom), (DWORD_PTR)(lTo))
777 
778 #define ICDrawStop(hic) \
779  ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
780 
781 #define ICDrawStopPlay(hic) \
782  ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
783 
784 #define ICDrawGetTime(hic, lplTime) \
785  ICSendMessage(hic, ICM_DRAW_GETTIME, (DWORD_PTR)(LPVOID)(lplTime), 0)
786 
787 #define ICDrawSetTime(hic, lTime) \
788  ICSendMessage(hic, ICM_DRAW_SETTIME, (DWORD_PTR)lTime, 0)
789 
790 #define ICDrawRealize(hic, hdc, fBackground) \
791  ICSendMessage(hic, ICM_DRAW_REALIZE, (DWORD_PTR)(UINT_PTR)(HDC)(hdc), (DWORD_PTR)(BOOL)(fBackground))
792 
793 #define ICDrawFlush(hic) \
794  ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
795 
796 #define ICDrawRenderBuffer(hic) \
797  ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
798 
799 static inline
800 LRESULT
801 VFWAPI
805  _In_ LONG(CALLBACK *fpfnStatus)(_In_ LPARAM, _In_ UINT, _In_ LONG))
806 {
807  ICSETSTATUSPROC ic;
808 
809  ic.dwFlags = dwFlags;
810  ic.lParam = lParam;
811  /* FIXME: see comment in ICSETSTATUSPROC definition */
812  ic.zStatus = fpfnStatus;
813 
814  return ICSendMessage(hic, ICM_SET_STATUS_PROC, (DWORD_PTR)&ic, sizeof(ic));
815 }
816 
817 typedef struct {
820  HIC hic;
834 } COMPVARS, *PCOMPVARS;
835 
836 #define ICMF_COMPVARS_VALID 0x00000001
837 
838 BOOL
839 VFWAPI
842  _In_ UINT uiFlags,
843  _In_opt_ LPVOID pvIn,
844  _In_opt_ LPVOID lpData,
845  _Inout_ PCOMPVARS pc,
846  _In_opt_ LPSTR lpszTitle);
847 
848 #define ICMF_CHOOSE_KEYFRAME 0x0001
849 #define ICMF_CHOOSE_DATARATE 0x0002
850 #define ICMF_CHOOSE_PREVIEW 0x0004
851 #define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008
852 
853 BOOL
854 VFWAPI
856  _In_ PCOMPVARS pc,
857  _In_ LPBITMAPINFO lpbiIn);
858 
860 
861 LPVOID
862 VFWAPI
864  _In_ PCOMPVARS pc,
865  _Reserved_ UINT uiFlags,
866  _In_ LPVOID lpBits,
867  _Out_ BOOL *pfKey,
868  _Inout_opt_ LONG *plSize);
869 
871 
872 /********************* AVIFILE function declarations *************************/
873 
874 #ifndef mmioFOURCC
875 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
876  ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
877  ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
878 #endif
879 
880 #ifndef aviTWOCC
881 #define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
882 #endif
883 
884 typedef WORD TWOCC;
885 
886 #define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
887 #define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
888 
889 #define formtypeAVI mmioFOURCC('A', 'V', 'I', ' ')
890 #define listtypeAVIHEADER mmioFOURCC('h', 'd', 'r', 'l')
891 #define ckidAVIMAINHDR mmioFOURCC('a', 'v', 'i', 'h')
892 #define listtypeSTREAMHEADER mmioFOURCC('s', 't', 'r', 'l')
893 #define ckidSTREAMHEADER mmioFOURCC('s', 't', 'r', 'h')
894 #define ckidSTREAMFORMAT mmioFOURCC('s', 't', 'r', 'f')
895 #define ckidSTREAMHANDLERDATA mmioFOURCC('s', 't', 'r', 'd')
896 #define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
897 
898 #define listtypeAVIMOVIE mmioFOURCC('m', 'o', 'v', 'i')
899 #define listtypeAVIRECORD mmioFOURCC('r', 'e', 'c', ' ')
900 
901 #define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
902 
903 #define streamtypeANY 0UL
904 #define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
905 #define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
906 #define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
907 #define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
908 
909 /* Basic chunk types */
910 #define cktypeDIBbits aviTWOCC('d', 'b')
911 #define cktypeDIBcompressed aviTWOCC('d', 'c')
912 #define cktypePALchange aviTWOCC('p', 'c')
913 #define cktypeWAVEbytes aviTWOCC('w', 'b')
914 
915 /* Chunk id to use for extra chunks for padding. */
916 #define ckidAVIPADDING mmioFOURCC('J', 'U', 'N', 'K')
917 
918 #define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
919 #define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
920  (FromHex(HIBYTE(LOWORD(fcc))))))
921 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
922 #define ToHex(n) ((BYTE)(((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
923 #define MAKEAVICKID(tcc, stream) \
924  MAKELONG((ToHex((stream) & 0x0f) << 8) | \
925  (ToHex(((stream) & 0xf0) >> 4)), tcc)
926 
927 /* AVIFileHdr.dwFlags */
928 #define AVIF_HASINDEX 0x00000010 /* Index at end of file? */
929 #define AVIF_MUSTUSEINDEX 0x00000020
930 #define AVIF_ISINTERLEAVED 0x00000100
931 #define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames*/
932 #define AVIF_WASCAPTUREFILE 0x00010000
933 #define AVIF_COPYRIGHTED 0x00020000
934 
935 #define AVI_HEADERSIZE 2048
936 
938 
939 typedef struct _MainAVIHeader
940 {
952 } MainAVIHeader;
953 
954 /* AVIStreamHeader.dwFlags */
955 #define AVISF_DISABLED 0x00000001
956 #define AVISF_VIDEO_PALCHANGES 0x00010000
957 
958 typedef struct {
961  DWORD dwFlags; /* AVISF_* */
966  DWORD dwRate; /* dwRate / dwScale == samples/second */
968  DWORD dwLength; /* In units above... */
972  struct { SHORT left, top, right, bottom; } rcFrame; /* word.word - word.word in file */
974 
975 /* AVIINDEXENTRY.dwFlags */
976 #define AVIIF_LIST 0x00000001 /* chunk is a 'LIST' */
977 #define AVIIF_TWOCC 0x00000002
978 #define AVIIF_KEYFRAME 0x00000010 /* this frame is a key frame. */
979 #define AVIIF_FIRSTPART 0x00000020
980 #define AVIIF_LASTPART 0x00000040
981 #define AVIIF_MIDPART (AVIIF_LASTPART|AVIIF_FIRSTPART)
982 #define AVIIF_NOTIME 0x00000100 /* this frame doesn't take any time */
983 #define AVIIF_COMPUSE 0x0FFF0000
984 
985 typedef struct _AVIINDEXENTRY {
990 } AVIINDEXENTRY;
991 
992 typedef struct _AVIPALCHANGE {
995  WORD wFlags; /* pad */
997 } AVIPALCHANGE;
998 
999 #define AVIIF_KEYFRAME 0x00000010 /* this frame is a key frame. */
1000 
1001 #define AVIGETFRAMEF_BESTDISPLAYFMT 1
1002 
1003 typedef struct _AVISTREAMINFOA {
1006  DWORD dwFlags; /* AVIIF_* */
1011  DWORD dwRate; /* dwRate / dwScale == samples/second */
1013  DWORD dwLength; /* In units above... */
1023 
1024 typedef struct _AVISTREAMINFOW {
1025  DWORD fccType;
1026  DWORD fccHandler;
1027  DWORD dwFlags;
1028  DWORD dwCaps;
1029  WORD wPriority;
1030  WORD wLanguage;
1031  DWORD dwScale;
1032  DWORD dwRate; /* dwRate / dwScale == samples/second */
1033  DWORD dwStart;
1034  DWORD dwLength; /* In units above... */
1037  DWORD dwQuality;
1039  RECT rcFrame;
1042  WCHAR szName[64];
1044 DECL_WINELIB_TYPE_AW(AVISTREAMINFO)
1045 DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO)
1046 DECL_WINELIB_TYPE_AW(PAVISTREAMINFO)
1047 
1048 #define AVISTREAMINFO_DISABLED 0x00000001
1049 #define AVISTREAMINFO_FORMATCHANGES 0x00010000
1050 
1051 /* AVIFILEINFO.dwFlags */
1052 #define AVIFILEINFO_HASINDEX 0x00000010
1053 #define AVIFILEINFO_MUSTUSEINDEX 0x00000020
1054 #define AVIFILEINFO_ISINTERLEAVED 0x00000100
1055 #define AVIFILEINFO_TRUSTCKTYPE 0x00000800
1056 #define AVIFILEINFO_WASCAPTUREFILE 0x00010000
1057 #define AVIFILEINFO_COPYRIGHTED 0x00020000
1058 
1059 /* AVIFILEINFO.dwCaps */
1060 #define AVIFILECAPS_CANREAD 0x00000001
1061 #define AVIFILECAPS_CANWRITE 0x00000002
1062 #define AVIFILECAPS_ALLKEYFRAMES 0x00000010
1063 #define AVIFILECAPS_NOCOMPRESSION 0x00000020
1064 
1065 typedef struct _AVIFILEINFOW {
1067  DWORD dwFlags;
1068  DWORD dwCaps;
1069  DWORD dwStreams;
1071  DWORD dwWidth;
1072  DWORD dwHeight;
1073  DWORD dwScale;
1074  DWORD dwRate;
1075  DWORD dwLength;
1077  WCHAR szFileType[64];
1079 typedef struct _AVIFILEINFOA {
1093 DECL_WINELIB_TYPE_AW(AVIFILEINFO)
1094 DECL_WINELIB_TYPE_AW(PAVIFILEINFO)
1095 DECL_WINELIB_TYPE_AW(LPAVIFILEINFO)
1096 
1097 /* AVICOMPRESSOPTIONS.dwFlags. determines presence of fields in below struct */
1098 #define AVICOMPRESSF_INTERLEAVE 0x00000001
1099 #define AVICOMPRESSF_DATARATE 0x00000002
1100 #define AVICOMPRESSF_KEYFRAMES 0x00000004
1101 #define AVICOMPRESSF_VALID 0x00000008
1102 
1103 typedef struct {
1104  DWORD fccType; /* stream type, for consistency */
1105  DWORD fccHandler; /* compressor */
1106  DWORD dwKeyFrameEvery; /* keyframe rate */
1107  DWORD dwQuality; /* compress quality 0-10,000 */
1108  DWORD dwBytesPerSecond; /* bytes per second */
1109  DWORD dwFlags; /* flags... see below */
1110  LPVOID lpFormat; /* save format */
1112  LPVOID lpParms; /* compressor options */
1114  DWORD dwInterleaveEvery; /* for non-video streams only */
1116 
1117 #define FIND_DIR 0x0000000FL /* direction mask */
1118 #define FIND_NEXT 0x00000001L /* search forward */
1119 #define FIND_PREV 0x00000004L /* search backward */
1120 #define FIND_FROM_START 0x00000008L /* start at the logical beginning */
1121 
1122 #define FIND_TYPE 0x000000F0L /* type mask */
1123 #define FIND_KEY 0x00000010L /* find a key frame */
1124 #define FIND_ANY 0x00000020L /* find any (non-empty) sample */
1125 #define FIND_FORMAT 0x00000040L /* find a formatchange */
1126 
1127 #define FIND_RET 0x0000F000L /* return mask */
1128 #define FIND_POS 0x00000000L /* return logical position */
1129 #define FIND_LENGTH 0x00001000L /* return logical size */
1130 #define FIND_OFFSET 0x00002000L /* return physical position */
1131 #define FIND_SIZE 0x00003000L /* return physical size */
1132 #define FIND_INDEX 0x00004000L /* return physical index position */
1133 
1134 #include <ole2.h>
1135 
1136 #define DEFINE_AVIGUID(name, l, w1, w2) \
1137  DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
1138 
1139 DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0);
1140 DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0);
1141 DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0);
1142 DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0);
1143 DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0);
1144 
1145 DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009, 0, 0);
1146 DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0);
1147 
1148 /*****************************************************************************
1149  * IAVIStream interface
1150  */
1151 #define INTERFACE IAVIStream
1153 {
1154  /*** IUnknown methods ***/
1158  /*** IAVIStream methods ***/
1159  STDMETHOD(Create)(THIS_ LPARAM lParam1, LPARAM lParam2) PURE;
1161  STDMETHOD_(LONG,FindSample)(THIS_ _In_ LONG lPos, _In_ LONG lFlags) PURE;
1162  STDMETHOD(ReadFormat)(THIS_ _In_ LONG lPos, _Out_writes_bytes_to_opt_(*lpcbFormat, *lpcbFormat) LPVOID lpFormat, _Inout_ LONG *lpcbFormat) PURE;
1163  STDMETHOD(SetFormat)(THIS_ _In_ LONG lPos, _In_reads_bytes_(cbFormat) LPVOID lpFormat, _In_ LONG cbFormat) PURE;
1164  STDMETHOD(Read)(THIS_ _In_ LONG lStart, _In_ LONG lSamples, _Out_writes_bytes_opt_(cbBuffer) LPVOID lpBuffer, _In_ LONG cbBuffer, _Out_opt_ LONG *plBytes, _Out_opt_ LONG *plSamples) PURE;
1165  STDMETHOD(Write)(THIS_ _In_ LONG lStart, _In_ LONG lSamples, _In_reads_bytes_(cbBuffer) LPVOID lpBuffer, _In_ LONG cbBuffer, _In_ DWORD dwFlags, _Out_opt_ LONG *plSampWritten, _Out_opt_ LONG *plBytesWritten) PURE;
1166  STDMETHOD(Delete)(THIS_ _In_ LONG lStart, _In_ LONG lSamples) PURE;
1167  STDMETHOD(ReadData)(THIS_ _In_ DWORD fcc, _Out_writes_bytes_to_opt_(*lpcbBuffer, *lpcbBuffer) LPVOID lpBuffer, _Inout_ LONG *lpcbBuffer) PURE;
1169  STDMETHOD(SetInfo)(THIS_ _In_reads_bytes_(cbInfo) AVISTREAMINFOW *plInfo, _In_ LONG cbInfo) PURE;
1170 };
1171 #undef INTERFACE
1172 
1173 #if !defined(__cplusplus) || defined(CINTERFACE)
1174 /*** IUnknown methods ***/
1175 #define IAVIStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1176 #define IAVIStream_AddRef(p) (p)->lpVtbl->AddRef(p)
1177 #define IAVIStream_Release(p) (p)->lpVtbl->Release(p)
1178 /*** IAVIStream methods ***/
1179 #define IAVIStream_Create(p,a,b) (p)->lpVtbl->Create(p,a,b)
1180 #define IAVIStream_Info(p,a,b) (p)->lpVtbl->Info(p,a,b)
1181 #define IAVIStream_FindSample(p,a,b) (p)->lpVtbl->FindSample(p,a,b)
1182 #define IAVIStream_ReadFormat(p,a,b,c) (p)->lpVtbl->ReadFormat(p,a,b,c)
1183 #define IAVIStream_SetFormat(p,a,b,c) (p)->lpVtbl->SetFormat(p,a,b,c)
1184 #define IAVIStream_Read(p,a,b,c,d,e,f) (p)->lpVtbl->Read(p,a,b,c,d,e,f)
1185 #define IAVIStream_Write(p,a,b,c,d,e,f,g) (p)->lpVtbl->Write(p,a,b,c,d,e,f,g)
1186 #define IAVIStream_Delete(p,a,b) (p)->lpVtbl->Delete(p,a,b)
1187 #define IAVIStream_ReadData(p,a,b,c) (p)->lpVtbl->ReadData(p,a,b,c)
1188 #define IAVIStream_WriteData(p,a,b,c) (p)->lpVtbl->WriteData(p,a,b,c)
1189 #define IAVIStream_SetInfo(p,a,b) (p)->lpVtbl->SetInfo(p,a,b)
1190 #endif
1191 
1192 #define AVISTREAMREAD_CONVENIENT (-1L)
1193 
1196 
1197 HRESULT
1198 WINAPI
1201  _In_ LONG,
1202  _In_ LONG,
1203  _In_opt_ CLSID*);
1204 
1205 HRESULT
1206 WINAPI
1208  _In_ PAVISTREAM iface,
1210  _In_ LONG size);
1211 
1212 HRESULT
1213 WINAPI
1215  _In_ PAVISTREAM iface,
1217  _In_ LONG size);
1218 
1219 #define AVIStreamInfo WINELIB_NAME_AW(AVIStreamInfo)
1220 
1221 LONG
1222 WINAPI
1224  _In_ PAVISTREAM pstream,
1225  _In_ LONG pos,
1226  _In_ LONG flags);
1227 
1228 HRESULT
1229 WINAPI
1231  _In_ PAVISTREAM iface,
1232  _In_ LONG pos,
1233  _Out_writes_bytes_to_opt_(*formatsize, *formatsize) LPVOID format,
1234  _Inout_ LONG *formatsize);
1235 
1236 HRESULT
1237 WINAPI
1239  _In_ PAVISTREAM iface,
1240  _In_ LONG pos,
1241  _In_reads_bytes_(formatsize) LPVOID format,
1242  _In_ LONG formatsize);
1243 
1244 HRESULT
1245 WINAPI
1247  _In_ PAVISTREAM iface,
1248  _In_ LONG start,
1249  _In_ LONG samples,
1250  _Out_writes_bytes_opt_(buffersize) LPVOID buffer,
1251  _In_ LONG buffersize,
1252  _Out_opt_ LONG *bytesread,
1253  _Out_opt_ LONG *samplesread);
1254 
1255 HRESULT
1256 WINAPI
1258  _In_ PAVISTREAM iface,
1259  _In_ LONG start,
1260  _In_ LONG samples,
1261  _In_reads_bytes_(buffersize) LPVOID buffer,
1262  _In_ LONG buffersize,
1263  _In_ DWORD flags,
1264  _Out_opt_ LONG *sampwritten,
1265  _Out_opt_ LONG *byteswritten);
1266 
1267 HRESULT
1268 WINAPI
1270  _In_ PAVISTREAM iface,
1271  _In_ DWORD fcc,
1272  _Out_writes_bytes_to_opt_(*lpread, *lpread) LPVOID lp,
1273  _Inout_ LONG *lpread);
1274 
1275 HRESULT
1276 WINAPI
1278  _In_ PAVISTREAM iface,
1279  _In_ DWORD fcc,
1281  _In_ LONG size);
1282 
1283 PGETFRAME
1284 WINAPI
1286  _In_ PAVISTREAM pavi,
1287  _In_opt_ LPBITMAPINFOHEADER lpbiWanted);
1288 
1291 
1292 HRESULT
1293 WINAPI
1295  _Outptr_ PAVISTREAM *ppsCompressed,
1296  _In_ PAVISTREAM ppsSource,
1297  _In_ AVICOMPRESSOPTIONS *lpOptions,
1298  _In_opt_ CLSID *pclsidHandler);
1299 
1300 HRESULT
1301 WINAPI
1303  _Outptr_ PAVIFILE *ppfile,
1304  _In_ int nStreams,
1305  _In_reads_(nStreams) PAVISTREAM *ppStreams);
1306 
1307 HRESULT
1308 WINAPI
1310  UINT cfFormat,
1311  _In_ HANDLE hGlobal,
1312  _Outptr_ PAVISTREAM * ppstream);
1313 
1314 HRESULT
1315 WINAPI
1317  _Outptr_ PAVISTREAM *ppavi,
1318  _In_ LPCSTR szFile,
1319  _In_ DWORD fccType,
1320  _In_ LONG lParam,
1321  _In_ UINT mode,
1322  _In_opt_ CLSID *pclsidHandler);
1323 
1324 HRESULT
1325 WINAPI
1327  _Outptr_ PAVISTREAM *ppavi,
1328  _In_ LPCWSTR szFile,
1329  _In_ DWORD fccType,
1330  _In_ LONG lParam,
1331  _In_ UINT mode,
1332  _In_opt_ CLSID *pclsidHandler);
1333 
1334 #define AVIStreamOpenFromFile WINELIB_NAME_AW(AVIStreamOpenFromFile)
1335 
1336 LONG
1337 WINAPI
1339  _In_ PAVISTREAM pavi,
1340  _In_ LONG lStart,
1341  _In_ LONG lEnd,
1342  _In_ LONG lRate);
1343 
1345 
1346 HRESULT
1347 WINAPI
1349  _Out_writes_(cbFilter) LPSTR szFilter,
1350  _In_ LONG cbFilter,
1351  _In_ BOOL fSaving);
1352 
1353 HRESULT
1354 WINAPI
1356  _Out_writes_(cbFilter) LPWSTR szFilter,
1357  _In_ LONG cbFilter,
1358  _In_ BOOL fSaving);
1359 
1360 #define AVIBuildFilter WINELIB_NAME_AW(AVIBuildFilter)
1361 
1362 BOOL
1363 WINAPI
1365  _In_ HWND hWnd,
1366  _In_ UINT uFlags,
1367  _In_ INT nStream,
1368  _In_reads_(nStream) PAVISTREAM *ppavi,
1370 
1371 HRESULT
1372 WINAPI
1374  INT nStreams,
1376 
1377 HRESULT
1378 CDECL
1379 AVISaveA(
1380  LPCSTR szFile,
1381  _In_opt_ CLSID *pclsidHandler,
1382  _In_ AVISAVECALLBACK lpfnCallback,
1383  _In_ int nStreams,
1384  _In_ PAVISTREAM pavi,
1385  _In_ LPAVICOMPRESSOPTIONS lpOptions,
1386  ...);
1387 
1388 HRESULT
1389 CDECL
1390 AVISaveW(
1391  LPCWSTR szFile,
1392  _In_opt_ CLSID *pclsidHandler,
1393  _In_ AVISAVECALLBACK lpfnCallback,
1394  _In_ int nStreams,
1395  _In_ PAVISTREAM pavi,
1396  _In_ LPAVICOMPRESSOPTIONS lpOptions,
1397  ...);
1398 
1399 #define AVISave WINELIB_NAME_AW(AVISave)
1400 
1401 HRESULT
1402 WINAPI
1403 AVISaveVA(
1404  LPCSTR szFile,
1405  _In_opt_ CLSID *pclsidHandler,
1406  _In_ AVISAVECALLBACK lpfnCallback,
1407  _In_ int nStream,
1408  _In_reads_(nStream) PAVISTREAM *ppavi,
1409  _In_reads_(nStream) LPAVICOMPRESSOPTIONS *plpOptions);
1410 
1411 HRESULT
1412 WINAPI
1413 AVISaveVW(
1414  LPCWSTR szFile,
1415  _In_opt_ CLSID *pclsidHandler,
1416  _In_ AVISAVECALLBACK lpfnCallback,
1417  _In_ int nStream,
1418  _In_reads_(nStream) PAVISTREAM *ppavi,
1419  _In_reads_(nStream) LPAVICOMPRESSOPTIONS *plpOptions);
1420 
1421 #define AVISaveV WINELIB_NAME_AW(AVISaveV)
1422 
1427 
1428 #define AVIFileClose(pavi) \
1429  AVIFileRelease(pavi)
1430 #define AVIStreamClose(pavi) \
1431  AVIStreamRelease(pavi);
1432 #define AVIStreamEnd(pavi) \
1433  (AVIStreamStart(pavi) + AVIStreamLength(pavi))
1434 #define AVIStreamEndTime(pavi) \
1435  AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
1436 #define AVIStreamFormatSize(pavi, lPos, plSize) \
1437  AVIStreamReadFormat(pavi, lPos, NULL, plSize)
1438 #define AVIStreamLengthTime(pavi) \
1439  AVIStreamSampleToTime(pavi, AVIStreamLength(pavi))
1440 #define AVIStreamSampleSize(pavi,pos,psize) \
1441  AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
1442 #define AVIStreamSampleToSample(pavi1, pavi2, samp2) \
1443  AVIStreamTimeToSample(pavi1, AVIStreamSampleToTime(pavi2, samp2))
1444 #define AVIStreamStartTime(pavi) \
1445  AVIStreamSampleToTime(pavi, AVIStreamStart(pavi))
1446 
1447 #define AVIStreamNextSample(pavi, pos) \
1448  AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_ANY)
1449 #define AVIStreamPrevSample(pavi, pos) \
1450  AVIStreamFindSample(pavi, pos - 1, FIND_PREV | FIND_ANY)
1451 #define AVIStreamNearestSample(pavi, pos) \
1452  AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_ANY)
1453 #define AVStreamNextKeyFrame(pavi,pos) \
1454  AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_KEY)
1455 #define AVStreamPrevKeyFrame(pavi,pos) \
1456  AVIStreamFindSample(pavi, pos - 1, FIND_NEXT | FIND_KEY)
1457 #define AVIStreamNearestKeyFrame(pavi,pos) \
1458  AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_KEY)
1459 #define AVIStreamIsKeyFrame(pavi, pos) \
1460  (AVIStreamNearestKeyFrame(pavi, pos) == pos)
1461 
1462 /*****************************************************************************
1463  * IAVIStreaming interface
1464  */
1465 #define INTERFACE IAVIStreaming
1467 {
1468  /*** IUnknown methods ***/
1472  /*** IAVIStreaming methods ***/
1473  STDMETHOD(Begin)(IAVIStreaming *iface, _In_ LONG lStart, _In_ LONG lEnd, _In_ LONG lRate) PURE;
1474  STDMETHOD(End)(IAVIStreaming *iface) PURE;
1475 };
1476 #undef INTERFACE
1477 
1478 #if !defined(__cplusplus) || defined(CINTERFACE)
1479 /*** IUnknown methods ***/
1480 #define IAVIStreaming_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1481 #define IAVIStreaming_AddRef(p) (p)->lpVtbl->AddRef(p)
1482 #define IAVIStreaming_Release(p) (p)->lpVtbl->Release(p)
1483 /*** IAVIStreaming methods ***/
1484 #define IAVIStreaming_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c)
1485 #define IAVIStreaming_End(p) (p)->lpVtbl->End(p)
1486 #endif
1487 
1488 /*****************************************************************************
1489  * IAVIEditStream interface
1490  */
1491 #define INTERFACE IAVIEditStream
1493 {
1494  /*** IUnknown methods ***/
1498  /*** IAVIEditStream methods ***/
1499  STDMETHOD(Cut)(IAVIEditStream *iface, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Outptr_ PAVISTREAM *ppResult) PURE;
1500  STDMETHOD(Copy)(IAVIEditStream *iface, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Outptr_ PAVISTREAM *ppResult) PURE;
1501  STDMETHOD(Paste)(IAVIEditStream *iface, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Inout_ PAVISTREAM pSource, _In_ LONG lStart, _In_ LONG lEnd) PURE;
1502  STDMETHOD(Clone)(IAVIEditStream *iface, _Outptr_ PAVISTREAM *ppResult) PURE;
1503  STDMETHOD(SetInfo)(IAVIEditStream *iface, _In_reads_bytes_(size) LPAVISTREAMINFOW asi, _In_ LONG size) PURE;
1504 };
1505 #undef INTERFACE
1506 
1507 #if !defined(__cplusplus) || defined(CINTERFACE)
1508 /*** IUnknown methods ***/
1509 #define IAVIEditStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1510 #define IAVIEditStream_AddRef(p) (p)->lpVtbl->AddRef(p)
1511 #define IAVIEditStream_Release(p) (p)->lpVtbl->Release(p)
1512 /*** IAVIEditStream methods ***/
1513 #define IAVIEditStream_Cut(p,a,b,c) (p)->lpVtbl->Cut(p,a,b,c)
1514 #define IAVIEditStream_Copy(p,a,b,c) (p)->lpVtbl->Copy(p,a,b,c)
1515 #define IAVIEditStream_Paste(p,a,b,c,d,e) (p)->lpVtbl->Paste(p,a,b,c,d,e)
1516 #define IAVIEditStream_Clone(p,a) (p)->lpVtbl->Clone(p,a)
1517 #define IAVIEditStream_SetInfo(p,a,b) (p)->lpVtbl->SetInfo(p,a,b)
1518 #endif
1519 
1520 HRESULT
1521 WINAPI
1523  _Outptr_ PAVISTREAM *ppEditable,
1524  _In_ PAVISTREAM pSource);
1525 
1526 HRESULT
1527 WINAPI
1529  _In_ PAVISTREAM pStream,
1530  _Outptr_ PAVISTREAM *ppResult);
1531 
1532 HRESULT
1533 WINAPI
1535  _In_ PAVISTREAM pStream,
1536  _Inout_ LONG *plStart,
1537  _Inout_ LONG *plLength,
1538  _Outptr_ PAVISTREAM *ppResult);
1539 
1540 HRESULT
1541 WINAPI
1543  _In_ PAVISTREAM pStream,
1544  _Inout_ LONG *plStart,
1545  _Inout_ LONG *plLength,
1546  _Outptr_ PAVISTREAM *ppResult);
1547 
1548 HRESULT
1549 WINAPI
1551  _In_ PAVISTREAM pDest,
1552  _Inout_ LONG *plStart,
1553  _Inout_ LONG *plLength,
1554  _In_ PAVISTREAM pSource,
1555  _In_ LONG lStart,
1556  _In_ LONG lEnd);
1557 
1558 HRESULT
1559 WINAPI
1561  _In_ PAVISTREAM pstream,
1563  _In_ LONG size);
1564 
1565 HRESULT
1566 WINAPI
1568  _In_ PAVISTREAM pstream,
1570  _In_ LONG size);
1571 
1572 #define EditStreamSetInfo WINELIB_NAME_AW(EditStreamSetInfo)
1573 
1576 #define EditStreamSetName WINELIB_NAME_AW(EditStreamSetName)
1577 
1578 /*****************************************************************************
1579  * IAVIFile interface
1580  */
1581 /* In Win32 this interface uses UNICODE only */
1582 #define INTERFACE IAVIFile
1584 {
1585  /*** IUnknown methods ***/
1589  /*** IAVIFile methods ***/
1591  STDMETHOD(GetStream)(THIS_ _Outptr_ PAVISTREAM *ppStream, _In_ DWORD fccType, _In_ LONG lParam) PURE;
1592  STDMETHOD(CreateStream)(THIS_ _Outptr_ PAVISTREAM *ppStream, _In_ AVISTREAMINFOW *psi) PURE;
1594  STDMETHOD(ReadData)(THIS_ _In_ DWORD fcc, _Out_writes_bytes_to_(*lpcbBuffer, *lpcbBuffer) LPVOID lpBuffer, _Inout_ LONG *lpcbBuffer) PURE;
1595  STDMETHOD(EndRecord)(THIS) PURE;
1596  STDMETHOD(DeleteStream)(THIS_ _In_ DWORD fccType, _In_ LONG lParam) PURE;
1597 };
1598 #undef INTERFACE
1599 
1600 #if !defined(__cplusplus) || defined(CINTERFACE)
1601 /*** IUnknown methods ***/
1602 #define IAVIFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1603 #define IAVIFile_AddRef(p) (p)->lpVtbl->AddRef(p)
1604 #define IAVIFile_Release(p) (p)->lpVtbl->Release(p)
1605 /*** IAVIFile methods ***/
1606 #define IAVIFile_Info(p,a,b) (p)->lpVtbl->Info(p,a,b)
1607 #define IAVIFile_GetStream(p,a,b,c) (p)->lpVtbl->GetStream(p,a,b,c)
1608 #define IAVIFile_CreateStream(p,a,b) (p)->lpVtbl->CreateStream(p,a,b)
1609 #define IAVIFile_WriteData(p,a,b,c) (p)->lpVtbl->WriteData(p,a,b,c)
1610 #define IAVIFile_ReadData(p,a,b,c) (p)->lpVtbl->ReadData(p,a,b,c)
1611 #define IAVIFile_EndRecord(p) (p)->lpVtbl->EndRecord(p)
1612 #define IAVIFile_DeleteStream(p,a,b) (p)->lpVtbl->DeleteStream(p,a,b)
1613 #endif
1614 
1615 void WINAPI AVIFileInit(void);
1616 void WINAPI AVIFileExit(void);
1617 
1618 HRESULT
1619 WINAPI
1620 AVIFileOpenA(
1621  _Outptr_ PAVIFILE* ppfile,
1622  _In_ LPCSTR szFile,
1623  UINT uMode,
1624  _In_opt_ LPCLSID lpHandler);
1625 
1626 HRESULT
1627 WINAPI
1628 AVIFileOpenW(
1629  _Outptr_ PAVIFILE* ppfile,
1630  _In_ LPCWSTR szFile,
1631  UINT uMode,
1632  _In_opt_ LPCLSID lpHandler);
1633 
1634 #define AVIFileOpen WINELIB_NAME_AW(AVIFileOpen)
1635 
1638 
1639 HRESULT
1640 WINAPI
1641 AVIFileInfoA(
1642  _In_ PAVIFILE pfile,
1643  _Out_writes_bytes_(lSize) PAVIFILEINFOA pfi,
1644  _In_ LONG lSize);
1645 
1646 HRESULT
1647 WINAPI
1648 AVIFileInfoW(
1649  _In_ PAVIFILE pfile,
1650  _Out_writes_bytes_(lSize) PAVIFILEINFOW pfi,
1651  _In_ LONG lSize);
1652 
1653 #define AVIFileInfo WINELIB_NAME_AW(AVIFileInfo)
1654 
1655 HRESULT
1656 WINAPI
1658  _In_ PAVIFILE pfile,
1659  _Outptr_ PAVISTREAM* avis,
1660  _In_ DWORD fccType,
1661  _In_ LONG lParam);
1662 
1663 HRESULT
1664 WINAPI
1666  _In_ PAVIFILE pfile,
1667  _Outptr_ PAVISTREAM* ppavi,
1668  _In_ AVISTREAMINFOA* psi);
1669 
1670 HRESULT
1671 WINAPI
1673  _In_ PAVIFILE pfile,
1674  _Outptr_ PAVISTREAM* ppavi,
1675  _In_ AVISTREAMINFOW* psi);
1676 
1677 #define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
1678 
1679 HRESULT
1680 WINAPI
1682  _In_ PAVIFILE pfile,
1683  _In_ DWORD fcc,
1685  _In_ LONG size);
1686 
1687 HRESULT
1688 WINAPI
1690  _In_ PAVIFILE pfile,
1691  _In_ DWORD fcc,
1693  _Inout_ LPLONG size);
1694 
1696 
1697 /*****************************************************************************
1698  * IGetFrame interface
1699  */
1700 #define INTERFACE IGetFrame
1702 {
1703  /*** IUnknown methods ***/
1707  /*** IGetFrame methods ***/
1708  STDMETHOD_(LPVOID,GetFrame)(THIS_ _In_ LONG lPos) PURE;
1709  STDMETHOD(Begin)(THIS_ _In_ LONG lStart, _In_ LONG lEnd, _In_ LONG lRate) PURE;
1710  STDMETHOD(End)(THIS) PURE;
1712 };
1713 #undef INTERFACE
1714 
1715 #if !defined(__cplusplus) || defined(CINTERFACE)
1716 /*** IUnknown methods ***/
1717 #define IGetFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1718 #define IGetFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
1719 #define IGetFrame_Release(p) (p)->lpVtbl->Release(p)
1720 /*** IGetFrame methods ***/
1721 #define IGetFrame_GetFrame(p,a) (p)->lpVtbl->GetFrame(p,a)
1722 #define IGetFrame_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c)
1723 #define IGetFrame_End(p) (p)->lpVtbl->End(p)
1724 #define IGetFrame_SetFormat(p,a,b,c,d,e,f) (p)->lpVtbl->SetFormat(p,a,b,c,d,e,f)
1725 #endif
1726 
1730 
1731 #ifdef OFN_READONLY
1734 #define GetOpenFileNamePreview WINELIB_NAME_AW(GetOpenFileNamePreview)
1737 #define GetSaveFileNamePreview WINELIB_NAME_AW(GetSaveFileNamePreview)
1738 #endif
1739 
1740 #define AVIERR_OK 0
1741 #define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
1742 
1743 #define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
1744 #define AVIERR_BADFORMAT MAKE_AVIERR(102)
1745 #define AVIERR_MEMORY MAKE_AVIERR(103)
1746 #define AVIERR_INTERNAL MAKE_AVIERR(104)
1747 #define AVIERR_BADFLAGS MAKE_AVIERR(105)
1748 #define AVIERR_BADPARAM MAKE_AVIERR(106)
1749 #define AVIERR_BADSIZE MAKE_AVIERR(107)
1750 #define AVIERR_BADHANDLE MAKE_AVIERR(108)
1751 #define AVIERR_FILEREAD MAKE_AVIERR(109)
1752 #define AVIERR_FILEWRITE MAKE_AVIERR(110)
1753 #define AVIERR_FILEOPEN MAKE_AVIERR(111)
1754 #define AVIERR_COMPRESSOR MAKE_AVIERR(112)
1755 #define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
1756 #define AVIERR_READONLY MAKE_AVIERR(114)
1757 #define AVIERR_NODATA MAKE_AVIERR(115)
1758 #define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
1759 #define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
1760 #define AVIERR_USERABORT MAKE_AVIERR(198)
1761 #define AVIERR_ERROR MAKE_AVIERR(199)
1762 
1764 
1765 HWND
1766 VFWAPIV
1768  _In_opt_ HWND,
1770  _In_ DWORD,
1771  _In_opt_ LPCSTR);
1772 
1773 HWND
1774 VFWAPIV
1776  _In_opt_ HWND,
1778  _In_ DWORD,
1779  _In_opt_ LPCWSTR);
1780 
1781 #define MCIWndCreate WINELIB_NAME_AW(MCIWndCreate)
1782 
1783 #define MCIWNDOPENF_NEW 0x0001
1784 
1785 #define MCIWNDF_NOAUTOSIZEWINDOW 0x0001
1786 #define MCIWNDF_NOPLAYBAR 0x0002
1787 #define MCIWNDF_NOAUTOSIZEMOVIE 0x0004
1788 #define MCIWNDF_NOMENU 0x0008
1789 #define MCIWNDF_SHOWNAME 0x0010
1790 #define MCIWNDF_SHOWPOS 0x0020
1791 #define MCIWNDF_SHOWMODE 0x0040
1792 #define MCIWNDF_SHOWALL 0x0070
1793 
1794 #define MCIWNDF_NOTIFYMODE 0x0100
1795 #define MCIWNDF_NOTIFYPOS 0x0200
1796 #define MCIWNDF_NOTIFYSIZE 0x0400
1797 #define MCIWNDF_NOTIFYERROR 0x1000
1798 #define MCIWNDF_NOTIFYALL 0x1F00
1799 
1800 #define MCIWNDF_NOTIFYANSI 0x0080
1801 
1802 #define MCIWNDF_NOTIFYMEDIAA 0x0880
1803 #define MCIWNDF_NOTIFYMEDIAW 0x0800
1804 #define MCIWNDF_NOTIFYMEDIA WINELIB_NAME_AW(MCIWNDF_NOTIFYMEDIA)
1805 
1806 #define MCIWNDF_RECORD 0x2000
1807 #define MCIWNDF_NOERRORDLG 0x4000
1808 #define MCIWNDF_NOOPEN 0x8000
1809 
1810 #ifdef __cplusplus
1811 #define MCIWndSM ::SendMessage
1812 #else
1813 #define MCIWndSM SendMessage
1814 #endif
1815 
1816 #define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
1817 #define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
1818 #define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
1819 #define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
1820 #define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
1821 #define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
1822 #define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
1823 
1824 #define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
1825 #define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
1826 
1827 #define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
1828 
1829 #define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
1830 #define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
1831 #define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
1832 #define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
1833 #define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
1834 #define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
1835 #define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
1836 #define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
1837 #define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
1838 #define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
1839 
1840 #define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
1841 #define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
1842 
1843 #define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
1844 #define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
1845 
1846 #define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
1847 #define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
1848 
1849 #define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
1850 #define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
1851 #define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO, 0,(LPARAM)(LONG)(lPos))
1852 #define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
1853 
1854 #define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
1855 #define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
1856 #define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1857 #define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
1858 #define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1859 #define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
1860 #define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
1861 #define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
1862 
1863 #define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(LONG)(n))
1864 
1865 #define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
1866 #define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
1867 #define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
1868 #define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
1869 #define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
1870 #define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
1871 #define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
1872 #define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
1873 #define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
1874 #define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
1875 
1876 #define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
1877 #define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
1878 
1879 #define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
1880 #define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
1881 
1882 #define MCIWndSetActiveTimer(hWnd,active) \
1883  (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER, \
1884  (WPARAM)(UINT)(active),0L)
1885 #define MCIWndSetInactiveTimer(hWnd,inactive) \
1886  (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER, \
1887  (WPARAM)(UINT)(inactive),0L)
1888 #define MCIWndSetTimers(hWnd,active,inactive) \
1889  (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),\
1890  (LPARAM)(UINT)(inactive))
1891 #define MCIWndGetActiveTimer(hWnd) \
1892  (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
1893 #define MCIWndGetInactiveTimer(hWnd) \
1894  (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
1895 
1896 #define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
1897 
1898 #define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
1899 #define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1900 #define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1901 
1902 #define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
1903 #define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
1904 
1905 #define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1906 #define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
1907 
1908 #define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
1909 #define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
1910 
1911 #define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
1912 
1913 #define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
1914 
1915 #define MCIWNDM_GETDEVICEID (WM_USER + 100)
1916 #define MCIWNDM_GETSTART (WM_USER + 103)
1917 #define MCIWNDM_GETLENGTH (WM_USER + 104)
1918 #define MCIWNDM_GETEND (WM_USER + 105)
1919 #define MCIWNDM_EJECT (WM_USER + 107)
1920 #define MCIWNDM_SETZOOM (WM_USER + 108)
1921 #define MCIWNDM_GETZOOM (WM_USER + 109)
1922 #define MCIWNDM_SETVOLUME (WM_USER + 110)
1923 #define MCIWNDM_GETVOLUME (WM_USER + 111)
1924 #define MCIWNDM_SETSPEED (WM_USER + 112)
1925 #define MCIWNDM_GETSPEED (WM_USER + 113)
1926 #define MCIWNDM_SETREPEAT (WM_USER + 114)
1927 #define MCIWNDM_GETREPEAT (WM_USER + 115)
1928 #define MCIWNDM_REALIZE (WM_USER + 118)
1929 #define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
1930 #define MCIWNDM_PLAYFROM (WM_USER + 122)
1931 #define MCIWNDM_PLAYTO (WM_USER + 123)
1932 #define MCIWNDM_GETPALETTE (WM_USER + 126)
1933 #define MCIWNDM_SETPALETTE (WM_USER + 127)
1934 #define MCIWNDM_SETTIMERS (WM_USER + 129)
1935 #define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
1936 #define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
1937 #define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
1938 #define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
1939 #define MCIWNDM_CHANGESTYLES (WM_USER + 135)
1940 #define MCIWNDM_GETSTYLES (WM_USER + 136)
1941 #define MCIWNDM_GETALIAS (WM_USER + 137)
1942 #define MCIWNDM_PLAYREVERSE (WM_USER + 139)
1943 #define MCIWNDM_GET_SOURCE (WM_USER + 140)
1944 #define MCIWNDM_PUT_SOURCE (WM_USER + 141)
1945 #define MCIWNDM_GET_DEST (WM_USER + 142)
1946 #define MCIWNDM_PUT_DEST (WM_USER + 143)
1947 #define MCIWNDM_CAN_PLAY (WM_USER + 144)
1948 #define MCIWNDM_CAN_WINDOW (WM_USER + 145)
1949 #define MCIWNDM_CAN_RECORD (WM_USER + 146)
1950 #define MCIWNDM_CAN_SAVE (WM_USER + 147)
1951 #define MCIWNDM_CAN_EJECT (WM_USER + 148)
1952 #define MCIWNDM_CAN_CONFIG (WM_USER + 149)
1953 #define MCIWNDM_PALETTEKICK (WM_USER + 150)
1954 #define MCIWNDM_OPENINTERFACE (WM_USER + 151)
1955 #define MCIWNDM_SETOWNER (WM_USER + 152)
1956 
1957 #define MCIWNDM_SENDSTRINGA (WM_USER + 101)
1958 #define MCIWNDM_GETPOSITIONA (WM_USER + 102)
1959 #define MCIWNDM_GETMODEA (WM_USER + 106)
1960 #define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
1961 #define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
1962 #define MCIWNDM_GETFILENAMEA (WM_USER + 124)
1963 #define MCIWNDM_GETDEVICEA (WM_USER + 125)
1964 #define MCIWNDM_GETERRORA (WM_USER + 128)
1965 #define MCIWNDM_NEWA (WM_USER + 134)
1966 #define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
1967 #define MCIWNDM_OPENA (WM_USER + 153)
1968 
1969 #define MCIWNDM_SENDSTRINGW (WM_USER + 201)
1970 #define MCIWNDM_GETPOSITIONW (WM_USER + 202)
1971 #define MCIWNDM_GETMODEW (WM_USER + 206)
1972 #define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
1973 #define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
1974 #define MCIWNDM_GETFILENAMEW (WM_USER + 224)
1975 #define MCIWNDM_GETDEVICEW (WM_USER + 225)
1976 #define MCIWNDM_GETERRORW (WM_USER + 228)
1977 #define MCIWNDM_NEWW (WM_USER + 234)
1978 #define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
1979 #define MCIWNDM_OPENW (WM_USER + 252)
1980 
1981 #define MCIWNDM_SENDSTRING WINELIB_NAME_AW(MCIWNDM_SENDSTRING)
1982 #define MCIWNDM_GETPOSITION WINELIB_NAME_AW(MCIWNDM_GETPOSITION)
1983 #define MCIWNDM_GETMODE WINELIB_NAME_AW(MCIWNDM_GETMODE)
1984 #define MCIWNDM_SETTIMEFORMAT WINELIB_NAME_AW(MCIWNDM_SETTIMEFORMAT)
1985 #define MCIWNDM_GETTIMEFORMAT WINELIB_NAME_AW(MCIWNDM_GETTIMEFORMAT)
1986 #define MCIWNDM_GETFILENAME WINELIB_NAME_AW(MCIWNDM_GETFILENAME)
1987 #define MCIWNDM_GETDEVICE WINELIB_NAME_AW(MCIWNDM_GETDEVICE)
1988 #define MCIWNDM_GETERROR WINELIB_NAME_AW(MCIWNDM_GETERROR)
1989 #define MCIWNDM_NEW WINELIB_NAME_AW(MCIWNDM_NEW)
1990 #define MCIWNDM_RETURNSTRING WINELIB_NAME_AW(MCIWNDM_RETURNSTRING)
1991 #define MCIWNDM_OPEN WINELIB_NAME_AW(MCIWNDM_OPEN)
1992 
1993 #define MCIWNDM_NOTIFYMODE (WM_USER + 200)
1994 #define MCIWNDM_NOTIFYPOS (WM_USER + 201)
1995 #define MCIWNDM_NOTIFYSIZE (WM_USER + 202)
1996 #define MCIWNDM_NOTIFYMEDIA (WM_USER + 203)
1997 #define MCIWNDM_NOTIFYERROR (WM_USER + 205)
1998 
1999 #define MCIWND_START -1
2000 #define MCIWND_END -2
2001 
2002 /********************************************
2003  * DrawDib declarations
2004  */
2005 
2006 typedef struct
2007 {
2016 
2017 HDRAWDIB VFWAPI DrawDibOpen( void );
2018 
2019 UINT
2020 VFWAPI
2022  _In_ HDRAWDIB hdd,
2023  _In_ HDC hdc,
2024  _In_ BOOL fBackground);
2025 
2026 BOOL
2027 VFWAPI
2028 DrawDibBegin(
2029  _In_ HDRAWDIB hdd,
2030  _In_opt_ HDC hdc,
2031  _In_ INT dxDst,
2032  _In_ INT dyDst,
2033  _In_ LPBITMAPINFOHEADER lpbi,
2034  _In_ INT dxSrc,
2035  _In_ INT dySrc,
2036  _In_ UINT wFlags);
2037 
2038 BOOL
2039 VFWAPI
2040 DrawDibDraw(
2041  _In_ HDRAWDIB hdd,
2042  _In_ HDC hdc,
2043  _In_ INT xDst,
2044  _In_ INT yDst,
2045  _In_ INT dxDst,
2046  _In_ INT dyDst,
2048  _In_opt_ LPVOID lpBits,
2049  _In_ INT xSrc,
2050  _In_ INT ySrc,
2051  _In_ INT dxSrc,
2052  _In_ INT dySrc,
2053  _In_ UINT wFlags);
2054 
2055 /* DrawDibDraw flags */
2056 
2057 #define DDF_UPDATE 0x0002
2058 #define DDF_SAME_HDC 0x0004
2059 #define DDF_SAME_DRAW 0x0008
2060 #define DDF_DONTDRAW 0x0010
2061 #define DDF_ANIMATE 0x0020
2062 #define DDF_BUFFER 0x0040
2063 #define DDF_JUSTDRAWIT 0x0080
2064 #define DDF_FULLSCREEN 0x0100
2065 #define DDF_BACKGROUNDPAL 0x0200
2066 #define DDF_NOTKEYFRAME 0x0400
2067 #define DDF_HURRYUP 0x0800
2068 #define DDF_HALFTONE 0x1000
2069 
2070 #define DDF_PREROLL DDF_DONTDRAW
2071 #define DDF_SAME_DIB DDF_SAME_DRAW
2072 #define DDF_SAME_SIZE DDF_SAME_DRAW
2073 
2074 BOOL VFWAPI DrawDibSetPalette(_In_ HDRAWDIB hdd, _In_opt_ HPALETTE hpal);
2075 HPALETTE VFWAPI DrawDibGetPalette(_In_ HDRAWDIB hdd);
2076 
2077 BOOL
2078 VFWAPI
2080  _In_ HDRAWDIB hdd,
2081  _In_ int iStart,
2082  _In_ int iLen,
2083  _In_reads_(iLen) LPPALETTEENTRY lppe);
2084 
2085 LPVOID
2086 VFWAPI
2088  _In_ HDRAWDIB hdd,
2090  _In_ DWORD dwSize,
2091  _In_ DWORD dwFlags);
2092 
2095 
2096 #define DrawDibUpdate(hdd, hdc, x, y) \
2097  DrawDibDraw(hdd, hdc, x, y, 0, 0, NULL, NULL, 0, 0, 0, 0, DDF_UPDATE)
2098 
2102 
2103 /* display profiling */
2104 #define PD_CAN_DRAW_DIB 0x0001
2105 #define PD_CAN_STRETCHDIB 0x0002
2106 #define PD_STRETCHDIB_1_1_OK 0x0004
2107 #define PD_STRETCHDIB_1_2_OK 0x0008
2108 #define PD_STRETCHDIB_1_N_OK 0x0010
2109 
2111 
2112 DECLARE_HANDLE(HVIDEO);
2113 typedef HVIDEO *LPHVIDEO;
2114 
2116 
2117 LONG VFWAPI InitVFW(void);
2118 LONG VFWAPI TermVFW(void);
2119 
2120 #define DV_ERR_OK (0)
2121 #define DV_ERR_BASE (1)
2122 #define DV_ERR_NONSPECIFIC (DV_ERR_BASE)
2123 #define DV_ERR_BADFORMAT (DV_ERR_BASE + 1)
2124 #define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2)
2125 #define DV_ERR_UNPREPARED (DV_ERR_BASE + 3)
2126 #define DV_ERR_SYNC (DV_ERR_BASE + 4)
2127 #define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
2128 #define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6)
2129 #define DV_ERR_BADINSTALL (DV_ERR_BASE + 7)
2130 #define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
2131 #define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9)
2132 #define DV_ERR_PARAM1 (DV_ERR_BASE + 10)
2133 #define DV_ERR_PARAM2 (DV_ERR_BASE + 11)
2134 #define DV_ERR_CONFIG1 (DV_ERR_BASE + 12)
2135 #define DV_ERR_CONFIG2 (DV_ERR_BASE + 13)
2136 #define DV_ERR_FLAGS (DV_ERR_BASE + 14)
2137 #define DV_ERR_13 (DV_ERR_BASE + 15)
2138 
2139 #define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16)
2140 #define DV_ERR_NOMEM (DV_ERR_BASE + 17)
2141 #define DV_ERR_ALLOCATED (DV_ERR_BASE + 18)
2142 #define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19)
2143 #define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20)
2144 #define DV_ERR_BADERRNUM (DV_ERR_BASE + 21)
2145 #define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22)
2146 
2147 #define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23)
2148 #define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24)
2149 #define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25)
2150 #define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26)
2151 #define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27)
2152 #define DV_ERR_LASTERROR (DV_ERR_BASE + 27)
2153 
2154 #define DV_ERR_USER_MSG (DV_ERR_BASE + 1000)
2155 
2156 #ifndef MM_DRVM_OPEN
2157 #define MM_DRVM_OPEN 0x3D0
2158 #define MM_DRVM_CLOSE 0x3D1
2159 #define MM_DRVM_DATA 0x3D2
2160 #define MM_DRVM_ERROR 0x3D3
2161 
2162 #define DV_VM_OPEN MM_DRVM_OPEN
2163 #define DV_VM_CLOSE MM_DRVM_CLOSE
2164 #define DV_VM_DATA MM_DRVM_DATA
2165 #define DV_VM_ERROR MM_DRVM_ERROR
2166 #endif
2167 
2168 typedef struct videohdr_tag {
2177 
2178 #define VHDR_DONE 0x00000001
2179 #define VHDR_PREPARED 0x00000002
2180 #define VHDR_INQUEUE 0x00000004
2181 #define VHDR_KEYFRAME 0x00000008
2182 
2183 typedef struct channel_caps_tag {
2194 
2195 #define VCAPS_OVERLAY 0x00000001
2196 #define VCAPS_SRC_CAN_CLIP 0x00000002
2197 #define VCAPS_DST_CAN_CLIP 0x00000004
2198 #define VCAPS_CAN_SCALE 0x00000008
2199 
2200 #define VIDEO_EXTERNALIN 0x0001
2201 #define VIDEO_EXTERNALOUT 0x0002
2202 #define VIDEO_IN 0x0004
2203 #define VIDEO_OUT 0x0008
2204 
2205 #define VIDEO_DLG_QUERY 0x0010
2206 
2207 #define VIDEO_CONFIGURE_QUERY 0x8000
2208 
2209 #define VIDEO_CONFIGURE_SET 0x1000
2210 
2211 #define VIDEO_CONFIGURE_GET 0x2000
2212 #define VIDEO_CONFIGURE_QUERYSIZE 0x0001
2213 
2214 #define VIDEO_CONFIGURE_CURRENT 0x0010
2215 #define VIDEO_CONFIGURE_NOMINAL 0x0020
2216 #define VIDEO_CONFIGURE_MIN 0x0040
2217 #define VIDEO_CONFIGURE_MAX 0x0080
2218 
2219 #define DVM_USER 0x4000
2220 
2221 #define DVM_CONFIGURE_START 0x1000
2222 #define DVM_CONFIGURE_END 0x1FFF
2223 
2224 #define DVM_PALETTE (DVM_CONFIGURE_START + 1)
2225 #define DVM_FORMAT (DVM_CONFIGURE_START + 2)
2226 #define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
2227 #define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
2228 #define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
2229 
2230 #define AVICapSM(hwnd,m,w,l) ((IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)
2231 
2232 #define WM_CAP_START WM_USER
2233 
2234 #define WM_CAP_UNICODE_START WM_USER+100
2235 
2236 #define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START + 1)
2237 
2238 #define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START + 2)
2239 #define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START + 3)
2240 #define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START + 2)
2241 #define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START+ 3)
2242 
2243 #define WM_CAP_SET_CALLBACK_ERROR WINELIB_NAME_AW(WM_CAP_SET_CALLBACK_ERROR)
2244 #define WM_CAP_SET_CALLBACK_STATUS WINELIB_NAME_AW(WM_CAP_SET_CALLBACK_STATUS)
2245 
2246 #define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START + 4)
2247 #define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START + 5)
2248 #define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START + 6)
2249 #define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START + 7)
2250 #define WM_CAP_GET_USER_DATA (WM_CAP_START + 8)
2251 #define WM_CAP_SET_USER_DATA (WM_CAP_START + 9)
2252 
2253 #define WM_CAP_DRIVER_CONNECT (WM_CAP_START + 10)
2254 #define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START + 11)
2255 
2256 #define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START + 12)
2257 #define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START + 13)
2258 #define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START + 12)
2259 #define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START + 13)
2260 
2261 #define WM_CAP_DRIVER_GET_NAME WINELIB_NAME_AW(WM_CAP_DRIVER_GET_NAME)
2262 #define WM_CAP_DRIVER_GET_VERSION WINELIB_NAME_AW(WM_CAP_DRIVER_GET_VERSION)
2263 
2264 #define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START + 14)
2265 
2266 #define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START + 20)
2267 #define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START + 21)
2268 #define WM_CAP_FILE_ALLOCATE (WM_CAP_START + 22)
2269 #define WM_CAP_FILE_SAVEASA (WM_CAP_START + 23)
2270 #define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START + 24)
2271 #define WM_CAP_FILE_SAVEDIBA (WM_CAP_START + 25)
2272 #define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START + 20)
2273 #define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START + 21)
2274 #define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START + 23)
2275 #define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START + 25)
2276 
2277 #define WM_CAP_FILE_SET_CAPTURE_FILE WINELIB_NAME_AW(WM_CAP_FILE_SET_CAPTURE_FILE)
2278 #define WM_CAP_FILE_GET_CAPTURE_FILE WINELIB_NAME_AW(WM_CAP_FILE_GET_CAPTURE_FILE)
2279 #define WM_CAP_FILE_SAVEAS WINELIB_NAME_AW(WM_CAP_FILE_SAVEAS)
2280 #define WM_CAP_FILE_SAVEDIB WINELIB_NAME_AW(WM_CAP_FILE_SAVEDIB)
2281 
2282 #define WM_CAP_EDIT_COPY (WM_CAP_START + 30)
2283 
2284 #define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START + 35)
2285 #define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START + 36)
2286 
2287 #define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START + 41)
2288 #define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START + 42)
2289 #define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START + 43)
2290 #define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START + 44)
2291 #define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START + 45)
2292 #define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START + 46)
2293 
2294 #define WM_CAP_SET_PREVIEW (WM_CAP_START + 50)
2295 #define WM_CAP_SET_OVERLAY (WM_CAP_START + 51)
2296 #define WM_CAP_SET_PREVIEWRATE (WM_CAP_START + 52)
2297 #define WM_CAP_SET_SCALE (WM_CAP_START + 53)
2298 #define WM_CAP_GET_STATUS (WM_CAP_START + 54)
2299 #define WM_CAP_SET_SCROLL (WM_CAP_START + 55)
2300 
2301 #define WM_CAP_GRAB_FRAME (WM_CAP_START + 60)
2302 #define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START + 61)
2303 
2304 #define WM_CAP_SEQUENCE (WM_CAP_START + 62)
2305 #define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START + 63)
2306 #define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START + 64)
2307 #define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START + 65)
2308 
2309 #define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START + 66)
2310 #define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START + 67)
2311 #define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START + 66)
2312 #define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START + 67)
2313 
2314 #define WM_CAP_SET_MCI_DEVICE WINELIB_NAME_AW(WM_CAP_SET_MCI_DEVICE)
2315 #define WM_CAP_GET_MCI_DEVICE WINELIB_NAME_AW(WM_CAP_GET_MCI_DEVICE)
2316 
2317 #define WM_CAP_STOP (WM_CAP_START + 68)
2318 #define WM_CAP_ABORT (WM_CAP_START + 69)
2319 
2320 #define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START + 70)
2321 #define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START + 71)
2322 #define WM_CAP_SINGLE_FRAME (WM_CAP_START + 72)
2323 
2324 #define WM_CAP_PAL_OPENA (WM_CAP_START + 80)
2325 #define WM_CAP_PAL_SAVEA (WM_CAP_START + 81)
2326 #define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START + 80)
2327 #define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START + 81)
2328 
2329 #define WM_CAP_PAL_OPEN WINELIB_NAME_AW(WM_CAP_PAL_OPEN)
2330 #define WM_CAP_PAL_SAVE WINELIB_NAME_AW(WM_CAP_PAL_SAVE)
2331 
2332 #define WM_CAP_PAL_PASTE (WM_CAP_START + 82)
2333 #define WM_CAP_PAL_AUTOCREATE (WM_CAP_START + 83)
2334 #define WM_CAP_PAL_MANUALCREATE (WM_CAP_START + 84)
2335 
2336 #define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START + 85)
2337 
2338 #define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW
2339 #define WM_CAP_END WM_CAP_UNICODE_END
2340 
2341 typedef struct tagCapDriverCaps {
2354 
2355 typedef struct tagCapStatus {
2369  HPALETTE hPalCurrent;
2375 
2376 
2377 typedef struct tagCaptureParms {
2403 
2405 
2406 typedef LRESULT
2408  _In_ HWND hWnd,
2409  _In_ int nID,
2410  _In_ LPCWSTR lpsz);
2411 
2412 typedef LRESULT
2414  _In_ HWND hWnd,
2415  _In_ int nID,
2416  LPCWSTR lpsz);
2417 
2418 typedef LRESULT
2420  _In_ HWND hWnd,
2421  _In_ int nID,
2422  LPCSTR lpsz);
2423 
2424 typedef LRESULT
2426  _In_ HWND hWnd,
2427  _In_ int nID,
2428  LPCSTR lpsz);
2429 
2430 typedef LRESULT
2432  _In_ HWND hWnd,
2433  _In_ LPVIDEOHDR lpVHdr);
2434 
2435 typedef LRESULT
2437  _In_ HWND hWnd,
2438  _In_ LPWAVEHDR lpWHdr);
2439 
2440 typedef LRESULT
2442  _In_ HWND hWnd,
2443  _In_ int nState);
2444 
2445 HWND
2446 VFWAPI
2448  LPCSTR,
2449  _In_ DWORD,
2450  _In_ INT,
2451  _In_ INT,
2452  _In_ INT,
2453  _In_ INT,
2454  _In_opt_ HWND,
2455  _In_ INT);
2456 
2457 HWND
2458 VFWAPI
2460  LPCWSTR,
2461  _In_ DWORD,
2462  _In_ INT,
2463  _In_ INT,
2464  _In_ INT,
2465  _In_ INT,
2466  _In_opt_ HWND,
2467  _In_ INT);
2468 
2469 #define capCreateCaptureWindow WINELIB_NAME_AW(capCreateCaptureWindow)
2470 
2471 BOOL
2472 VFWAPI
2474  WORD,
2475  _Out_writes_(cbName) LPSTR,
2476  _In_ INT cbName,
2477  _Out_writes_(cbVer) LPSTR,
2478  _In_ INT cbVer);
2479 
2480 BOOL
2481 VFWAPI
2483  WORD,
2484  _Out_writes_(cbName) LPWSTR,
2485  _In_ INT cbName,
2486  _Out_writes_(cbVer) LPWSTR,
2487  _In_ INT cbVer);
2488 
2489 #define capGetDriverDescription WINELIB_NAME_AW(capGetDriverDescription)
2490 
2491 #ifdef __cplusplus
2492 }
2493 #endif /* __cplusplus */
2494 
2495 #endif /* __WINE_VFW_H */
#define ICM_DECOMPRESSEX_QUERY
Definition: vfw.h:139
INT yDst
Definition: vfw.h:700
struct tagCapDriverCaps CAPDRIVERCAPS
LRESULT(CALLBACK * DRIVERPROC)(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM)
Definition: mmsystem.h:1001
DWORD dwOverheadPerFrame
Definition: vfw.h:247
DWORD dwFlags
Definition: vfw.h:944
LRESULT(CALLBACK * CAPVIDEOCALLBACK)(_In_ HWND hWnd, _In_ LPVIDEOHDR lpVHdr)
Definition: vfw.h:2431
DWORD dwInitialFrames
Definition: vfw.h:964
#define ICM_DECOMPRESSEX_BEGIN
Definition: vfw.h:138
INT dxSrc
Definition: vfw.h:357
DWORD dwFlags
Definition: vfw.h:2174
struct _AVIFILEINFOA AVIFILEINFOA
LRESULT(CALLBACK * CAPSTATUSCALLBACKW)(_In_ HWND hWnd, _In_ int nID, _In_ LPCWSTR lpsz)
Definition: vfw.h:2407
DECLARE_HANDLE(HIC)
DWORD dwRequestMicroSecPerFrame
Definition: vfw.h:2378
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
GLsizei samples
Definition: glext.h:7006
LPVOID lpFormat
Definition: vfw.h:1110
struct _AVIINDEXENTRY AVIINDEXENTRY
DWORD dwVersion
Definition: vfw.h:285
DWORD dwStart
Definition: vfw.h:1012
#define _Field_size_bytes_(size)
Definition: no_sal2.h:190
WORD wLanguage
Definition: vfw.h:1009
_In_ BOOLEAN Read
Definition: strmini.h:479
return
Definition: dirsup.c:529
int iLen
Definition: vfw.h:669
DWORD dwSampleSize
Definition: avifil32.idl:42
HRESULT WINAPI AVIStreamWrite(_In_ PAVISTREAM iface, _In_ LONG start, _In_ LONG samples, _In_reads_bytes_(buffersize) LPVOID buffer, _In_ LONG buffersize, _In_ DWORD flags, _Out_opt_ LONG *sampwritten, _Out_opt_ LONG *byteswritten)
int iStart
Definition: vfw.h:668
#define REFIID
Definition: guiddef.h:113
struct channel_caps_tag CHANNEL_CAPS
HRESULT WINAPI EditStreamCopy(_In_ PAVISTREAM pStream, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Outptr_ PAVISTREAM *ppResult)
struct tagCapStatus * PCAPSTATUS
LPVOID lpSrc
Definition: vfw.h:345
struct videohdr_tag * LPVIDEOHDR
DWORD dwCaps
Definition: vfw.h:1082
DWORD cbData
Definition: vfw.h:722
DWORD dwReserved2
Definition: vfw.h:248
LONG lKeyCount
Definition: vfw.h:831
HRESULT WINAPI AVIFileOpenA(_Outptr_ PAVIFILE *ppfile, _In_ LPCSTR szFile, UINT uMode, _In_opt_ LPCLSID lpHandler)
HRESULT WINAPI EditStreamSetNameW(_In_ PAVISTREAM pstream, _In_ LPCWSTR szName)
HRESULT WINAPI AVIStreamWriteData(_In_ PAVISTREAM iface, _In_ DWORD fcc, _In_reads_bytes_(size) LPVOID lp, _In_ LONG size)
#define THIS_
Definition: basetyps.h:65
DWORD dwSize
Definition: vfw.h:281
HANDLE VFWAPI ICImageDecompress(_In_opt_ HIC hic, _In_ UINT uiFlags, _In_ LPBITMAPINFO lpbiIn, _In_ LPVOID lpBits, _In_opt_ LPBITMAPINFO lpbiOut)
LONG timeSetDIBits
Definition: vfw.h:2014
HRESULT WINAPI AVIStreamReadData(_In_ PAVISTREAM iface, _In_ DWORD fcc, _Out_writes_bytes_to_opt_(*lpread, *lpread) LPVOID lp, _Inout_ LONG *lpread)
LPBITMAPINFOHEADER lpbi
Definition: vfw.h:703
LONG timeDraw
Definition: vfw.h:2009
_In_ BOOLEAN Release
Definition: classpnp.h:929
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
static VOID Paste(PGUI_CONSOLE_DATA GuiData)
Definition: conwnd.c:1981
struct channel_caps_tag * LPCHANNEL_CAPS
DWORD dwFormatChangeCount
Definition: vfw.h:1020
HRESULT WINAPI AVIFileGetStream(_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM *avis, _In_ DWORD fccType, _In_ LONG lParam)
DWORD dwSuggestedBufferSize
Definition: avifil32.idl:40
DWORD dwFlags
Definition: avifil32.idl:71
PALETTEENTRY peNew[1]
Definition: vfw.h:996
DWORD dwFlags
Definition: vfw.h:284
DWORD dwCurrentWaveSamples
Definition: vfw.h:2367
#define _Out_writes_bytes_to_opt_(size, count)
Definition: no_sal2.h:375
DWORD dnDevNode
Definition: vfw.h:166
LRESULT dwError
Definition: vfw.h:163
BOOL fStepMCIDevice
Definition: vfw.h:2394
UINT wNumVideoRequested
Definition: vfw.h:2385
#define THIS
Definition: basetyps.h:66
DWORD dwRate
Definition: vfw.h:1011
BOOL fScale
Definition: vfw.h:2360
HWND VFWAPI capCreateCaptureWindowA(LPCSTR, _In_ DWORD, _In_ INT, _In_ INT, _In_ INT, _In_ INT, _In_opt_ HWND, _In_ INT)
LPVOID lpFormat
Definition: vfw.h:720
DWORD dwInitialFrames
Definition: vfw.h:1014
DWORD dwDstRectXMod
Definition: vfw.h:2189
_In_ DWORD cb
Definition: vfw.h:590
ULONG WINAPI AVIStreamAddRef(PAVISTREAM iface)
Definition: api.c:435
struct tagCapStatus CAPSTATUS
REFIID riid
Definition: precomp.h:44
DWORD dwInitialFrames
Definition: vfw.h:946
DWORD dwSrcRectHeightMod
Definition: vfw.h:2188
_Success_(return !=0) LRESULT VFWAPI ICGetInfo(_In_ HIC hic
Definition: fsctrl.c:3139
BOOL VFWAPI DrawDibClose(_In_ HDRAWDIB hdd)
_In_ BOOLEAN Create
Definition: pstypes.h:511
DWORD dwQuality
Definition: vfw.h:1016
BOOL VFWAPI ICCompressorChoose(_In_opt_ HWND hwnd, _In_ UINT uiFlags, _In_opt_ LPVOID pvIn, _In_opt_ LPVOID lpData, _Inout_ PCOMPVARS pc, _In_opt_ LPSTR lpszTitle)
LRESULT(CALLBACK * CAPSTATUSCALLBACKA)(_In_ HWND hWnd, _In_ int nID, LPCSTR lpsz)
Definition: vfw.h:2419
GLint dy
Definition: linetemp.h:97
#define _In_reads_(size)
Definition: no_sal2.h:228
struct _AVIFILEINFOW AVIFILEINFOW
char CHAR
Definition: xmlstorage.h:175
#define _In_reads_bytes_opt_(size)
Definition: no_sal2.h:230
#define ICM_GETDEFAULTQUALITY
Definition: vfw.h:88
_In_ LONG lFrame
Definition: vfw.h:249
INT xDst
Definition: vfw.h:350
DWORD dwLength
Definition: vfw.h:968
DWORD dwChunkOffset
Definition: vfw.h:988
DWORD dwKeyFrameEvery
Definition: vfw.h:1106
HANDLE hVideoExtIn
Definition: vfw.h:2351
#define INT
Definition: polytest.cpp:20
UINT wNumAudioAllocated
Definition: vfw.h:2373
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:27
HWND hWnd
Definition: settings.c:17
#define _Outptr_
Definition: no_sal2.h:396
LPBITMAPINFOHEADER lpbiIn
Definition: vfw.h:657
ULONG WINAPI AVIFileAddRef(PAVIFILE pfile)
Definition: api.c:277
LPBITMAPINFOHEADER lpbiInput
Definition: vfw.h:335
HWND hwnd
Definition: vfw.h:697
DWORD VFWAPIV ICDecompress(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LPBITMAPINFOHEADER lpbiFormat, _In_reads_bytes_(lpbiFormat->biSizeImage) LPVOID lpData, _In_ LPBITMAPINFOHEADER lpbi, _Out_writes_bytes_(lpbi->biSizeImage) LPVOID lpBits)
HANDLE hVideoOut
Definition: vfw.h:2350
void WINAPI AVIFileExit(void)
Definition: api.c:183
UINT uiImageHeight
Definition: vfw.h:2357
UINT wDeviceIndex
Definition: vfw.h:2342
DWORD dwFlags
Definition: vfw.h:1081
HRESULT WINAPI AVIMakeFileFromStreams(_Outptr_ PAVIFILE *ppfile, _In_ int nStreams, _In_reads_(nStreams) PAVISTREAM *ppStreams)
DWORD dwTimeCaptured
Definition: vfw.h:2172
LPARAM lParam
Definition: vfw.h:255
GLuint buffer
Definition: glext.h:5915
_In_ UINT iStart
Definition: wingdi.h:3598
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
DWORD dwStart
Definition: vfw.h:967
struct tagCaptureParms CAPTUREPARMS
struct IGetFrame * PGETFRAME
Definition: vfw.h:40
HRESULT WINAPI EditStreamSetNameA(_In_ PAVISTREAM pstream, _In_ LPCSTR szName)
HRESULT WINAPI AVIFileCreateStreamW(_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM *ppavi, _In_ AVISTREAMINFOW *psi)
DWORD fccType
Definition: vfw.h:1004
UINT AVStreamMaster
Definition: vfw.h:2401
LONG timeDither
Definition: vfw.h:2011
struct _AVISTREAMINFOA * PAVISTREAMINFOA
int rate
Definition: pcmconverter.c:98
UINT uFlags
Definition: api.c:60
LONG VFWAPI InitVFW(void)
NTSTATUS QueryInterface(IN PDEVICE_OBJECT DeviceObject, IN CONST GUID InterfaceType, IN LONG Size, IN LONG Version, OUT PVOID Interface)
Definition: fdo.c:532
DWORD dwFlags
Definition: vfw.h:961
DWORD fccType
Definition: vfw.h:159
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
Definition: vmhorizon.c:15
char * LPSTR
Definition: xmlstorage.h:182
DWORD dwSize
Definition: vfw.h:158
LPVOID WINAPI AVIStreamGetFrame(_In_ PGETFRAME pg, _In_ LONG pos)
DWORD dwFlags
Definition: vfw.h:2184
UINT wTimeLimit
Definition: vfw.h:2392
HRESULT WINAPI AVIFileEndRecord(_In_ PAVIFILE pfile)
LONG WINAPI AVIStreamFindSample(_In_ PAVISTREAM pstream, _In_ LONG pos, _In_ LONG flags)
#define BOOL
Definition: nt_native.h:43
DWORD dwFlags
Definition: vfw.h:1006
LPBITMAPINFOHEADER lpbiInput
Definition: vfw.h:238
DWORD fccType
Definition: vfw.h:1104
struct IAVIFile * PAVIFILE
Definition: vfw.h:39
int32_t INT
Definition: typedefs.h:56
DWORD dwRate
Definition: vfw.h:708
Definition: vfw.h:666
DWORD dwCurrentVideoFrame
Definition: vfw.h:2365
static LRESULT VFWAPI ICDecompressExQuery(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LPBITMAPINFOHEADER lpbiSrc, _Reserved_ LPVOID lpSrc, _In_ int xSrc, _In_ int ySrc, _In_ int dxSrc, _In_ int dySrc, _In_opt_ LPBITMAPINFOHEADER lpbiDst, _Out_opt_ LPVOID lpDst, _In_ int xDst, _In_ int yDst, _In_ int dxDst, _In_ int dyDst)
Definition: vfw.h:489
static LRESULT VFWAPI ICDecompressEx(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LPBITMAPINFOHEADER lpbiSrc, _In_reads_bytes_(lpbiSrc->biSizeImage) LPVOID lpSrc, _In_ int xSrc, _In_ int ySrc, _In_ int dxSrc, _In_ int dySrc, _In_ LPBITMAPINFOHEADER lpbiDst, _Out_writes_bytes_(lpbiDst->biSizeImage) LPVOID lpDst, _In_ int xDst, _In_ int yDst, _In_ int dxDst, _In_ int dyDst)
Definition: vfw.h:417
HRESULT WINAPI AVIFileOpenW(_Outptr_ PAVIFILE *ppfile, _In_ LPCWSTR szFile, UINT uMode, _In_opt_ LPCLSID lpHandler)
DWORD fccHandler
Definition: vfw.h:283
DWORD dwMicroSecPerFrame
Definition: vfw.h:941
LPBITMAPINFOHEADER lpbiSuggest
Definition: vfw.h:658
struct TraceInfo Info
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define _In_opt_
Definition: no_sal2.h:213
#define STDMETHOD(m)
Definition: basetyps.h:62
DWORD dwSuggestedBufferSize
Definition: vfw.h:1015
UINT wPercentDropForError
Definition: vfw.h:2380
BOOL fLiveWindow
Definition: vfw.h:2358
BOOL fDisableWriteCache
Definition: vfw.h:2400
BOOL fHasOverlay
Definition: vfw.h:2343
INT dxDst
Definition: vfw.h:701
UINT wChunkGranularity
Definition: vfw.h:2383
LONG lDataRate
Definition: vfw.h:243
#define _Out_writes_(size)
Definition: no_sal2.h:367
BOOL fAbortRightMouse
Definition: vfw.h:2390
LPARAM lOutput
Definition: vfw.h:237
LONG lTime
Definition: vfw.h:723
HRESULT WINAPI AVIStreamOpenFromFileA(_Outptr_ PAVISTREAM *ppavi, _In_ LPCSTR szFile, _In_ DWORD fccType, _In_ LONG lParam, _In_ UINT mode, _In_opt_ CLSID *pclsidHandler)
BOOL fCaptureAudio
Definition: vfw.h:2386
BOOL fHasDlgVideoFormat
Definition: vfw.h:2345
FOURCC fccHandler
Definition: vfw.h:960
HDC hdc
Definition: vfw.h:698
BOOL fUsingDefaultPalette
Definition: vfw.h:2362
HRESULT WINAPI EditStreamCut(_In_ PAVISTREAM pStream, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Outptr_ PAVISTREAM *ppResult)
DWORD dwEditCount
Definition: vfw.h:1090
BOOL VFWAPI ICRemove(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wFlags)
DWORD dwSrcRectWidthMod
Definition: vfw.h:2187
LONG lDataRate
Definition: vfw.h:829
BOOL fYield
Definition: vfw.h:2381
HRESULT WINAPI AVIStreamSetFormat(_In_ PAVISTREAM iface, _In_ LONG pos, _In_reads_bytes_(formatsize) LPVOID format, _In_ LONG formatsize)
LPBITMAPINFO lpbiIn
Definition: vfw.h:823
unsigned char * LPBYTE
Definition: typedefs.h:52
DWORD dwBytesPerSecond
Definition: vfw.h:1108
Definition: vfw.h:718
LPBITMAPINFOHEADER lpbiOutput
Definition: vfw.h:174
HPALETTE hPalCurrent
Definition: vfw.h:2369
HRESULT WINAPI AVIPutFileOnClipboard(_In_ PAVIFILE pfile)
LPBITMAPINFO lpbiOut
Definition: vfw.h:824
struct _AVISTREAMINFOA * LPAVISTREAMINFOA
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
DWORD dwBytesUsed
Definition: vfw.h:2171
INT xSrc
Definition: vfw.h:704
LPVOID lpDst
Definition: vfw.h:347
#define DECL_WINELIB_TYPE_AW(type)
Definition: windef.h:386
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
HRESULT WINAPI EditStreamPaste(_In_ PAVISTREAM pDest, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _In_ PAVISTREAM pSource, _In_ LONG lStart, _In_ LONG lEnd)
CHAR szFileType[64]
Definition: vfw.h:1091
struct videohdr_tag VIDEOHDR
LPBITMAPINFOHEADER lpbiSrc
Definition: vfw.h:344
CHAR szName[64]
Definition: vfw.h:1021
LRESULT(CALLBACK * CAPERRORCALLBACKA)(_In_ HWND hWnd, _In_ int nID, LPCSTR lpsz)
Definition: vfw.h:2425
DWORD dwScale
Definition: vfw.h:246
short SHORT
Definition: pedump.c:59
LPARAM lInput
Definition: vfw.h:239
DWORD VFWAPI DrawDibProfileDisplay(_In_ LPBITMAPINFOHEADER lpbi)
UINT wNumVideoAllocated
Definition: vfw.h:2372
DWORD VFWAPIV ICDraw(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LPVOID lpFormat, _In_reads_bytes_opt_(cbData) LPVOID lpData, _In_ DWORD cbData, _In_ LONG lTime)
DWORD dwIndexSize
Definition: vfw.h:2382
ULONG WINAPI AVIFileRelease(PAVIFILE pfile)
Definition: api.c:292
LONG lStartFrame
Definition: vfw.h:240
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:173
LONG WINAPI AVIStreamTimeToSample(_In_ PAVISTREAM pstream, _In_ LONG lTime)
struct _AVISTREAMINFOW * PAVISTREAMINFOW
UINT message
Definition: vfw.h:264
BOOL fLimitEnabled
Definition: vfw.h:2391
HRESULT WINAPI AVIGetFromClipboard(_Outptr_ PAVIFILE *ppfile)
#define _Out_writes_bytes_opt_(a)
Definition: btrfs_drv.h:171
DWORD VFWAPI VideoForWindowsVersion(void)
Definition: msvideo_main.c:301
struct COMPVARS * PCOMPVARS
DWORD fccHandler
Definition: vfw.h:160
struct channel_caps_tag * PCHANNEL_CAPS
DWORD dwInitialFrames
Definition: avifil32.idl:39
HRESULT WINAPI EditStreamClone(_In_ PAVISTREAM pStream, _Outptr_ PAVISTREAM *ppResult)
struct IAVIStream * PAVISTREAM
Definition: vfw.h:38
_Out_writes_bytes_to_(cb, return) ICINFO *picinfo
LPVOID lpBitsPrev
Definition: vfw.h:826
INT nStreams
Definition: api.c:61
#define _Out_writes_bytes_(size)
Definition: no_sal2.h:370
#define _Out_
Definition: no_sal2.h:323
LONG WINAPI AVIStreamSampleToTime(_In_ PAVISTREAM pstream, _In_ LONG lSample)
DWORD dwFlags
Definition: vfw.h:254
INT dySrc
Definition: vfw.h:358
LONG_PTR LPARAM
Definition: windef.h:208
LPTSTR szFilter
Definition: mplay32.c:30
GLint GLint bottom
Definition: glext.h:7726
BOOL VFWAPI DrawDibTime(_In_ HDRAWDIB hdd, _Out_ LPDRAWDIBTIME lpddtime)
HRESULT WINAPI AVISaveVW(LPCWSTR szFile, _In_opt_ CLSID *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStream, _In_reads_(nStream) PAVISTREAM *ppavi, _In_reads_(nStream) LPAVICOMPRESSOPTIONS *plpOptions)
DWORD dwSampleSize
Definition: vfw.h:1017
LRESULT(CALLBACK * CAPCONTROLCALLBACK)(_In_ HWND hWnd, _In_ int nState)
Definition: vfw.h:2441
LONG timeStretch
Definition: vfw.h:2012
DWORD fccType
Definition: vfw.h:821
DWORD dwReturn
Definition: vfw.h:2371
DWORD dwLength
Definition: vfw.h:1089
LRESULT(CALLBACK * CAPWAVECALLBACK)(_In_ HWND hWnd, _In_ LPWAVEHDR lpWHdr)
Definition: vfw.h:2436
FOURCC fccType
Definition: vfw.h:959
HANDLE HDRAWDIB
Definition: vfw.h:33
LPVOID VFWAPI ICSeqCompressFrame(_In_ PCOMPVARS pc, _Reserved_ UINT uiFlags, _In_ LPVOID lpBits, _Out_ BOOL *pfKey, _Inout_opt_ LONG *plSize)
const char * LPCSTR
Definition: xmlstorage.h:183
INT dyDst
Definition: vfw.h:702
DWORD dwSrcRectYMod
Definition: vfw.h:2186
struct _AVISTREAMINFOA AVISTREAMINFOA
HANDLE hVideoIn
Definition: vfw.h:2349
struct tagCaptureParms * LPCAPTUREPARMS
LONG timeCount
Definition: vfw.h:2008
DWORD dwScale
Definition: vfw.h:1010
HRESULT WINAPI AVIStreamOpenFromFileW(_Outptr_ PAVISTREAM *ppavi, _In_ LPCWSTR szFile, _In_ DWORD fccType, _In_ LONG lParam, _In_ UINT mode, _In_opt_ CLSID *pclsidHandler)
DWORD dwStreams
Definition: vfw.h:947
INT dxDst
Definition: vfw.h:661
struct videohdr_tag * PVIDEOHDR
static LRESULT VFWAPI ICSetStatusProc(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LRESULT lParam, _In_ LONG(CALLBACK *fpfnStatus)(_In_ LPARAM, _In_ UINT, _In_ LONG))
Definition: vfw.h:802
DWORD dwScale
Definition: vfw.h:1087
INT dyDst
Definition: vfw.h:662
DWORD dwStreams
Definition: vfw.h:1083
r l[0]
Definition: byte_order.h:167
BYTE bFirstEntry
Definition: vfw.h:993
struct tagCapStatus * LPCAPSTATUS
BOOL VFWAPI capGetDriverDescriptionA(WORD, _Out_writes_(cbName) LPSTR, _In_ INT cbName, _Out_writes_(cbVer) LPSTR, _In_ INT cbVer)
#define ICM_DRAW_SUGGESTFORMAT
Definition: vfw.h:131
DWORD dwCaps
Definition: vfw.h:1007
DWORD dwFlags
Definition: vfw.h:667
BOOL VFWAPI ICSeqCompressFrameStart(_In_ PCOMPVARS pc, _In_ LPBITMAPINFO lpbiIn)
BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn)
WORD wPriority
Definition: vfw.h:962
BOOL VFWAPI DrawDibStart(_In_ HDRAWDIB hdd, _In_ DWORD rate)
DWORD dwChunkLength
Definition: vfw.h:989
#define _Out_opt_
Definition: no_sal2.h:339
INT dxSrc
Definition: vfw.h:706
LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb)
Definition: msvideo_main.c:601
struct _MainAVIHeader MainAVIHeader
GLsizeiptr size
Definition: glext.h:5919
DWORD dwFlags
Definition: vfw.h:695
DWORD dwWidth
Definition: avifil32.idl:75
LRESULT VFWAPI ICClose(_In_ HIC hic)
LONG timeBlt
Definition: vfw.h:2013
BOOL fMakeUserHitOKToCapture
Definition: vfw.h:2379
HRESULT WINAPI AVIBuildFilterA(_Out_writes_(cbFilter) LPSTR szFilter, _In_ LONG cbFilter, _In_ BOOL fSaving)
ULONG WINAPI AVIStreamRelease(PAVISTREAM iface)
Definition: api.c:450
__wchar_t WCHAR
Definition: xmlstorage.h:180
HIC hic
Definition: vfw.h:820
DWORD_PTR dwUser
Definition: vfw.h:2173
Definition: vfw.h:157
BYTE bNumEntries
Definition: vfw.h:994
LPVOID VFWAPI DrawDibGetBuffer(_In_ HDRAWDIB hdd, _Out_ LPBITMAPINFOHEADER lpbi, _In_ DWORD dwSize, _In_ DWORD dwFlags)
LONG HRESULT
Definition: typedefs.h:77
INT ySrc
Definition: vfw.h:356
BOOL fAudioHardware
Definition: vfw.h:2363
DECLARE_INTERFACE_(IAVIStream, IUnknown)
Definition: vfw.h:1152
DWORD dwLength
Definition: avifil32.idl:79
DWORD dwHeight
Definition: avifil32.idl:76
DWORD dwEditCount
Definition: avifil32.idl:44
DWORD dwScale
Definition: avifil32.idl:77
DWORD dwSuggestedBufferSize
Definition: vfw.h:969
struct _AVIFILEINFOA * LPAVIFILEINFOA
#define WINAPI
Definition: msvc.h:8
LONG lFrameCount
Definition: vfw.h:241
DWORD fccHandler
Definition: vfw.h:1105
unsigned short WORD
Definition: ntddk_ex.h:93
struct ICOPEN * LPICOPEN
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD fccType
Definition: vfw.h:282
BOOL fCapFileExists
Definition: vfw.h:2364
GLint left
Definition: glext.h:7726
DWORD dwCurrentVideoFramesDropped
Definition: vfw.h:2366
DWORD biSizeImage
Definition: amvideo.idl:36
BOOL fUsingDOSMemory
Definition: vfw.h:2384
INT ySrc
Definition: vfw.h:705
WCHAR szFileType[64]
Definition: avifil32.idl:81
LONG lQ
Definition: vfw.h:830
#define _Inout_
Definition: no_sal2.h:244
DWORD dwMaxBytesPerSec
Definition: vfw.h:942
LPVOID lpBitsOut
Definition: vfw.h:825
BOOL VFWAPI DrawDibDraw(_In_ HDRAWDIB hdd, _In_ HDC hdc, _In_ INT xDst, _In_ INT yDst, _In_ INT dxDst, _In_ INT dyDst, _In_opt_ LPBITMAPINFOHEADER lpbi, _In_opt_ LPVOID lpBits, _In_ INT xSrc, _In_ INT ySrc, _In_ INT dxSrc, _In_ INT dySrc, _In_ UINT wFlags)
GLdouble GLdouble right
Definition: glext.h:10859
WORD TWOCC
Definition: vfw.h:884
HIC VFWAPI ICOpen(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wMode)
HDRAWDIB VFWAPI DrawDibOpen(void)
Definition: drawdib.c:80
DWORD dwMCIStartTime
Definition: vfw.h:2395
void WINAPI AVIFileInit(void)
Definition: api.c:176
WORD wFlags
Definition: vfw.h:995
GLbitfield flags
Definition: glext.h:7161
DWORD dwMaxBytesPerSec
Definition: vfw.h:1080
struct IAVIEditStream * PAVIEDITSTREAM
Definition: vfw.h:41
LONG VFWAPI TermVFW(void)
DWORD dwFlags
Definition: vfw.h:334
RECT rcFrame
Definition: vfw.h:1018
UINT vKeyAbort
Definition: vfw.h:2388
BOOL fHasDlgVideoSource
Definition: vfw.h:2344
struct AVICOMPRESSOPTIONS * LPAVICOMPRESSOPTIONS
#define VFWAPIV
Definition: vfw.h:27
DWORD dwSuggestedBufferSize
Definition: avifil32.idl:74
#define _Reserved_
Definition: no_sal2.h:573
DWORD dwCurrentTimeElapsedMS
Definition: vfw.h:2368
LONG WINAPI AVIStreamBeginStreaming(_In_ PAVISTREAM pavi, _In_ LONG lStart, _In_ LONG lEnd, _In_ LONG lRate)
DWORD dwQuality
Definition: vfw.h:970
struct _AVIFILEINFOW * LPAVIFILEINFOW
LRESULT VFWAPI ICSendMessage(_In_ HIC hic, _In_ UINT msg, _In_ DWORD_PTR dw1, _In_ DWORD_PTR dw2)
INT dySrc
Definition: vfw.h:660
BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn)
LONG lKey
Definition: vfw.h:828
UINT wStepCaptureAverageFrames
Definition: vfw.h:2398
HDC hdc
Definition: main.c:9
DWORD fccHandler
Definition: vfw.h:1005
struct tagCapDriverCaps * LPCAPDRIVERCAPS
DWORD dwDstRectWidthMod
Definition: vfw.h:2191
DWORD dwQuality
Definition: vfw.h:1107
DWORD dwInterleaveEvery
Definition: vfw.h:1114
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
DWORD dwScale
Definition: vfw.h:709
BOOL VFWAPI DrawDibSetPalette(_In_ HDRAWDIB hdd, _In_opt_ HPALETTE hpal)
HRESULT WINAPI CreateEditableStream(_Outptr_ PAVISTREAM *ppEditable, _In_ PAVISTREAM pSource)
DWORD dwSampleSize
Definition: vfw.h:971
GLenum GLsizei len
Definition: glext.h:6722
unsigned char BYTE
Definition: mem.h:68
BOOL fCaptureInitialized
Definition: vfw.h:2347
#define LRESULT
Definition: ole.h:14
LPBYTE lpData
Definition: vfw.h:2169
DWORD dwAudioBufferSize
Definition: vfw.h:2399
BOOL(CALLBACK * AVISAVECALLBACK)(INT)
Definition: vfw.h:937
REFIID LPVOID * ppvObject
Definition: precomp.h:44
DWORD dwTotalFrames
Definition: vfw.h:945
LPCWSTR lpFormat
Definition: trayclock.cpp:32
DWORD dwDstRectYMod
Definition: vfw.h:2190
BOOL VFWAPI DrawDibEnd(_In_ HDRAWDIB hdd)
uint32_t DWORD_PTR
Definition: typedefs.h:63
GLenum mode
Definition: glext.h:6217
DWORD dwSuggestedBufferSize
Definition: vfw.h:948
DWORD fccHandler
Definition: vfw.h:822
#define _In_reads_bytes_(size)
Definition: no_sal2.h:229
LONG timeDecompress
Definition: vfw.h:2010
LPVOID lpState
Definition: vfw.h:832
BOOL fAbortLeftMouse
Definition: vfw.h:2389
DWORD FOURCC
Definition: dmdls.h:25
DWORD dwFlags
Definition: vfw.h:1109
BOOL VFWAPI DrawDibBegin(_In_ HDRAWDIB hdd, _In_opt_ HDC hdc, _In_ INT dxDst, _In_ INT dyDst, _In_ LPBITMAPINFOHEADER lpbi, _In_ INT dxSrc, _In_ INT dySrc, _In_ UINT wFlags)
#define ICM_SET_STATUS_PROC
Definition: vfw.h:144
static DWORD ICGetDefaultKeyFrameRate(HIC hic)
Definition: vfw.h:644
UINT VFWAPI DrawDibRealize(_In_ HDRAWDIB hdd, _In_ HDC hdc, _In_ BOOL fBackground)
DWORD dwFlags
Definition: vfw.h:162
struct AVICOMPRESSOPTIONS * PAVICOMPRESSOPTIONS
HRESULT WINAPI AVIStreamInfoA(_In_ PAVISTREAM iface, _Out_writes_bytes_(size) AVISTREAMINFOA *asi, _In_ LONG size)
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:519
#define _In_
Definition: no_sal2.h:204
Definition: vfw.h:280
DWORD dwRate
Definition: vfw.h:245
#define VFWAPI
Definition: vfw.h:26
DWORD dwSuggestedBufferSize
Definition: vfw.h:1084
LONG WINAPI AVIStreamEndStreaming(_In_ PAVISTREAM pavi)
BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn)
static LRESULT VFWAPI ICDecompressExBegin(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LPBITMAPINFOHEADER lpbiSrc, _In_opt_ LPVOID lpSrc, _In_ int xSrc, _In_ int ySrc, _In_ int dxSrc, _In_ int dySrc, _In_ LPBITMAPINFOHEADER lpbiDst, _Out_opt_ LPVOID lpDst, _In_ int xDst, _In_ int yDst, _In_ int dxDst, _In_ int dyDst)
Definition: vfw.h:453
#define DEFINE_AVIGUID(name, l, w1, w2)
Definition: vfw.h:1136
VOID Copy(PVOID Src, PVOID Dst, ULONG NumBytes)
Definition: mmixer.c:131
HRESULT CDECL AVISaveW(LPCWSTR szFile, _In_opt_ CLSID *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStreams, _In_ PAVISTREAM pavi, _In_ LPAVICOMPRESSOPTIONS lpOptions,...)
LONG lQuality
Definition: vfw.h:242
LRESULT(CALLBACK * CAPYIELDCALLBACK)(_In_ HWND hWnd)
Definition: vfw.h:2404
UINT uiImageWidth
Definition: vfw.h:2356
int32_t * LPLONG
Definition: typedefs.h:56
INT dxSrc
Definition: vfw.h:659
BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn)
BOOL WINAPI AVISaveOptions(_In_ HWND hWnd, _In_ UINT uFlags, _In_ INT nStream, _In_reads_(nStream) PAVISTREAM *ppavi, _Inout_updates_(nStream) LPAVICOMPRESSOPTIONS *ppOptions)
BOOL fCapturingNow
Definition: vfw.h:2370
HWND VFWAPIV MCIWndCreateA(_In_opt_ HWND, _In_opt_ HINSTANCE, _In_ DWORD, _In_opt_ LPCSTR)
DWORD dwRate
Definition: avifil32.idl:78
HIC VFWAPI ICOpenFunction(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wMode, _In_ DRIVERPROC lpfnHandler)
#define CDECL
Definition: compat.h:21
BOOL VFWAPI DrawDibChangePalette(_In_ HDRAWDIB hdd, _In_ int iStart, _In_ int iLen, _In_reads_(iLen) LPPALETTEENTRY lppe)
HPALETTE hpal
Definition: vfw.h:696
GLuint start
Definition: gl.h:1545
static BYTE * GetData(BYTE *pData, ULONG *pLength)
Definition: assembly.c:113
DWORD dwEditCount
Definition: avifil32.idl:80
struct _AVIPALCHANGE AVIPALCHANGE
HRESULT WINAPI AVIStreamRead(_In_ PAVISTREAM iface, _In_ LONG start, _In_ LONG samples, _Out_writes_bytes_opt_(buffersize) LPVOID buffer, _In_ LONG buffersize, _Out_opt_ LONG *bytesread, _Out_opt_ LONG *samplesread)
DWORD dwWidth
Definition: vfw.h:1085
DWORD dwStreams
Definition: avifil32.idl:73
HRESULT WINAPI EditStreamSetInfoW(_In_ PAVISTREAM pstream, _In_reads_bytes_(size) LPAVISTREAMINFOW asi, _In_ LONG size)
HRESULT WINAPI AVIFileWriteData(_In_ PAVIFILE pfile, _In_ DWORD fcc, _In_reads_bytes_(size) LPVOID lp, _In_ LONG size)
DWORD dwWidth
Definition: vfw.h:949
DWORD dwHeight
Definition: vfw.h:1086
INT dxDst
Definition: vfw.h:352
LPBITMAPINFOHEADER lpbiOutput
Definition: vfw.h:236
LPAVICOMPRESSOPTIONS * ppOptions
Definition: api.c:63
LONG WINAPI AVIStreamStart(_In_ PAVISTREAM iface)
DWORD fccHandler
Definition: avifil32.idl:30
DWORD dwScale
Definition: vfw.h:965
#define PURE
Definition: basetyps.h:64
DWORD dwFlags
Definition: vfw.h:719
WCHAR szName[64]
Definition: avifil32.idl:46
unsigned int UINT
Definition: ndis.h:50
HRESULT WINAPI AVIFileInfoW(_In_ PAVIFILE pfile, _Out_writes_bytes_(lSize) PAVIFILEINFOW pfi, _In_ LONG lSize)
struct tagCapDriverCaps * PCAPDRIVERCAPS
HRESULT WINAPI AVIFileReadData(_In_ PAVIFILE pfile, _In_ DWORD fcc, _Out_writes_bytes_to_(*size, *size) LPVOID lp, _Inout_ LPLONG size)
DWORD cbParms
Definition: vfw.h:1113
DWORD dwFlags
Definition: vfw.h:987
BOOL VFWAPI DrawDibStop(_In_ HDRAWDIB hdd)
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
LONG cbSize
Definition: vfw.h:818
BOOL fStepCaptureAt2x
Definition: vfw.h:2397
HANDLE VFWAPI ICImageCompress(_In_ HIC hic, _In_ UINT uiFlags, _In_ LPBITMAPINFO lpbiIn, _In_ LPVOID lpBits, _In_opt_ LPBITMAPINFO lpbiOut, _In_ LONG lQuality, _Inout_opt_ LONG *plSize)
HPALETTE VFWAPI DrawDibGetPalette(_In_ HDRAWDIB hdd)
SHORT top
Definition: vfw.h:972
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dx
Definition: linetemp.h:97
LONG cbState
Definition: vfw.h:833
static LRESULT VFWAPI ICDrawSuggestFormat(_In_ HIC hic, _In_ LPBITMAPINFOHEADER lpbiIn, _Out_ LPBITMAPINFOHEADER lpbiOut, _In_ int dxSrc, _In_ int dySrc, _In_ int dxDst, _In_ int dyDst, _In_ HIC hicDecomp)
Definition: vfw.h:739
struct _AVIFILEINFOA * PAVIFILEINFOA
_In_ ULONG _In_ ULONG _Inout_updates_(8 *8) ULONG *pul)
Definition: winddi.h:3522
DWORD ckid
Definition: vfw.h:986
struct tagCaptureParms * PCAPTUREPARMS
DWORD dwSrcRectXMod
Definition: vfw.h:2185
LPBITMAPINFOHEADER lpbiDst
Definition: vfw.h:346
HRESULT WINAPI AVIMakeStreamFromClipboard(UINT cfFormat, _In_ HANDLE hGlobal, _Outptr_ PAVISTREAM *ppstream)
DWORD dwEditCount
Definition: vfw.h:1019
DWORD dwFlags
Definition: vfw.h:235
HIC VFWAPI ICLocate(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ LPBITMAPINFOHEADER lpbiIn, _In_opt_ LPBITMAPINFOHEADER lpbiOut, _In_ WORD wFlags)
DWORD dwFlags
Definition: vfw.h:343
#define msg(x)
Definition: auth_time.c:54
DWORD dwDstRectHeightMod
Definition: vfw.h:2192
DWORD cbFormat
Definition: vfw.h:1111
HRESULT WINAPI EditStreamSetInfoA(_In_ PAVISTREAM pstream, _In_reads_bytes_(size) LPAVISTREAMINFOA asi, _In_ LONG size)
DWORD dwMaxBytesPerSec
Definition: avifil32.idl:70
HRESULT CDECL AVISaveA(LPCSTR szFile, _In_opt_ CLSID *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStreams, _In_ PAVISTREAM pavi, _In_ LPAVICOMPRESSOPTIONS lpOptions,...)
HRESULT WINAPI AVIClearClipboard(void)
Definition: api.c:2195
static const WCHAR szName[]
Definition: msipriv.h:1194
UINT wNumAudioRequested
Definition: vfw.h:2387
HWND VFWAPIV MCIWndCreateW(_In_opt_ HWND, _In_opt_ HINSTANCE, _In_ DWORD, _In_opt_ LPCWSTR)
DWORD dwLength
Definition: vfw.h:1013
LONG lKeyRate
Definition: vfw.h:244
LRESULT(CALLBACK * CAPERRORCALLBACKW)(_In_ HWND hWnd, _In_ int nID, LPCWSTR lpsz)
Definition: vfw.h:2413
HRESULT WINAPI AVIStreamInfoW(_In_ PAVISTREAM iface, _Out_writes_bytes_(size) AVISTREAMINFOW *asi, _In_ LONG size)
HIC hicDecompressor
Definition: vfw.h:663
struct _AVISTREAMINFOW * LPAVISTREAMINFOW
LPVOID lpParms
Definition: vfw.h:1112
uint32_t * LPDWORD
Definition: typedefs.h:57
BOOL VFWAPI ICInstall(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ LPARAM lParam, _In_ LPSTR szDesc, _In_ UINT wFlags)
BOOL fDriverSuppliesPalettes
Definition: vfw.h:2348
LPVOID pV1Reserved
Definition: vfw.h:164
INT dyDst
Definition: vfw.h:353
HANDLE hVideoExtOut
Definition: vfw.h:2352
LONG WINAPI AVIStreamLength(_In_ PAVISTREAM iface)
HRESULT WINAPI AVIStreamGetFrameClose(_In_ PGETFRAME pg)
LPVOID pV2Reserved
Definition: vfw.h:165
unsigned int ULONG
Definition: retypes.h:1
HRESULT WINAPI AVIStreamReadFormat(_In_ PAVISTREAM iface, _In_ LONG pos, _Out_writes_bytes_to_opt_(*formatsize, *formatsize) LPVOID format, _Inout_ LONG *formatsize)
DWORD VFWAPIV ICDrawBegin(_In_ HIC hic, _In_ DWORD dwFlags, _In_opt_ HPALETTE hpal, _In_opt_ HWND hwnd, _In_opt_ HDC hdc, _In_ INT xDst, _In_ INT yDst, _In_ INT dxDst, _In_ INT dyDst, _In_ LPBITMAPINFOHEADER lpbi, _In_ INT xSrc, _In_ INT ySrc, _In_ INT dxSrc, _In_ INT dySrc, _In_ DWORD dwRate, _In_ DWORD dwScale)
DWORD dwCaps
Definition: avifil32.idl:72
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char UINT32 const char BOOLEAN Begin
Definition: acpixf.h:1275
DWORD dwFormatChangeCount
Definition: avifil32.idl:45
BOOL fHasDlgVideoDisplay
Definition: vfw.h:2346
HRESULT WINAPI AVIStreamCreate(_Outptr_ PAVISTREAM *, _In_ LONG, _In_ LONG, _In_opt_ CLSID *)
DWORD dwPaddingGranularity
Definition: vfw.h:943
DWORD dwFlags
Definition: vfw.h:819
Definition: vfw.h:817
DWORD dwBufferLength
Definition: vfw.h:2170
HRESULT WINAPI AVIMakeCompressedStream(_Outptr_ PAVISTREAM *ppsCompressed, _In_ PAVISTREAM ppsSource, _In_ AVICOMPRESSOPTIONS *lpOptions, _In_opt_ CLSID *pclsidHandler)
#define ICM_DECOMPRESSEX
Definition: vfw.h:140
DWORD dwFlags
Definition: vfw.h:173
DWORD dwVersionICM
Definition: vfw.h:286
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL VFWAPIV MCIWndRegisterClass(void)
Definition: mciwnd.c:73
POINT ptScroll
Definition: vfw.h:2361
LONG_PTR LRESULT
Definition: windef.h:209
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
BOOL VFWAPI capGetDriverDescriptionW(WORD, _Out_writes_(cbName) LPWSTR, _In_ INT cbName, _Out_writes_(cbVer) LPWSTR, _In_ INT cbVer)
DWORD VFWAPIV ICCompress(_In_ HIC hic, _In_ DWORD dwFlags, _In_ LPBITMAPINFOHEADER lpbiOutput, _Out_writes_bytes_(lpbiOutput->biSizeImage) LPVOID lpData, _In_ LPBITMAPINFOHEADER lpbiInput, _In_reads_bytes_(lpbiInput->biSizeImage) LPVOID lpBits, _Out_opt_ LPDWORD lpckid, _Out_opt_ LPDWORD lpdwFlags, _In_ LONG lFrameNum, _In_ DWORD dwFrameSize, _In_ DWORD dwQuality, _In_opt_ LPBITMAPINFOHEADER lpbiPrev, _In_reads_bytes_opt_(lpbiPrev->biSizeImage) LPVOID lpPrev)
void VFWAPI ICSeqCompressFrameEnd(_In_ PCOMPVARS pc)
HRESULT WINAPI AVISaveVA(LPCSTR szFile, _In_opt_ CLSID *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStream, _In_reads_(nStream) PAVISTREAM *ppavi, _In_reads_(nStream) LPAVICOMPRESSOPTIONS *plpOptions)
LPVOID lpData
Definition: vfw.h:721
DWORD dwFlags
Definition: vfw.h:656
BOOL Delete(LPCTSTR ServiceName)
Definition: delete.c:12
#define ICM_GETDEFAULTKEYFRAMERATE
Definition: vfw.h:136
DWORD dwHeight
Definition: vfw.h:950
HWND VFWAPI capCreateCaptureWindowW(LPCWSTR, _In_ DWORD, _In_ INT, _In_ INT, _In_ INT, _In_ INT, _In_opt_ HWND, _In_ INT)
WORD wLanguage
Definition: vfw.h:963
LPARAM lParam
Definition: combotst.c:139
void VFWAPI ICCompressorFree(_In_ PCOMPVARS pc)
WORD wPriority
Definition: vfw.h:1008
HRESULT WINAPI AVIFileInfoA(_In_ PAVIFILE pfile, _Out_writes_bytes_(lSize) PAVIFILEINFOA pfi, _In_ LONG lSize)
INT yDst
Definition: vfw.h:351
static VOID WriteData(USHORT Data)
Definition: hardware.c:25
struct _AVIFILEINFOW * PAVIFILEINFOW
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54
HRESULT WINAPI AVIFileCreateStreamA(_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM *ppavi, _In_ AVISTREAMINFOA *psi)
PGETFRAME WINAPI AVIStreamGetFrameOpen(_In_ PAVISTREAM pavi, _In_opt_ LPBITMAPINFOHEADER lpbiWanted)
static DWORD ICGetDefaultQuality(HIC hic)
Definition: vfw.h:637
LPPALETTEENTRY lppe
Definition: vfw.h:670
DWORD dwRate
Definition: vfw.h:1088
DWORD dwRate
Definition: vfw.h:966
HVIDEO * LPHVIDEO
Definition: vfw.h:2113
BOOL VFWAPI ICInfo(_In_ DWORD fccType, _In_ DWORD fccHandler, _Out_ ICINFO *lpicinfo)
struct _AVISTREAMINFOW AVISTREAMINFOW
static const WCHAR szDescription[]
Definition: provider.c:52
HRESULT WINAPI AVIBuildFilterW(_Out_writes_(cbFilter) LPWSTR szFilter, _In_ LONG cbFilter, _In_ BOOL fSaving)
BOOL fMCIControl
Definition: vfw.h:2393
INT dySrc
Definition: vfw.h:707
HIC VFWAPI ICGetDisplayFormat(_In_opt_ HIC hic, _In_ LPBITMAPINFOHEADER lpbiIn, _Out_ LPBITMAPINFOHEADER lpbiOut, _In_ int BitDepth, _In_ int dx, _In_ int dy)
#define _Inout_opt_
Definition: no_sal2.h:258
DWORD dwMCIStopTime
Definition: vfw.h:2396
BOOL fOverlayWindow
Definition: vfw.h:2359
DWORD dwVersion
Definition: vfw.h:161
INT xDst
Definition: vfw.h:699
HRESULT WINAPI AVISaveOptionsFree(INT nStreams, _In_reads_(nStreams) LPAVICOMPRESSOPTIONS *ppOptions)
LONG lFrame
Definition: vfw.h:827
INT xSrc
Definition: vfw.h:355
struct DRAWDIBTIME * LPDRAWDIBTIME