ReactOS 0.4.16-dev-311-g9382aa2
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
30extern "C" {
31#endif /* __cplusplus */
32
34
35/*****************************************************************************
36 * Predeclare the interfaces
37 */
38typedef struct IAVIStream *PAVISTREAM;
39typedef struct IAVIFile *PAVIFILE;
40typedef struct IGetFrame *PGETFRAME;
41typedef struct IAVIEditStream *PAVIEDITSTREAM;
42
43/* Installable Compressor Manager */
44
45#define ICVERSION 0x0104
46
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
157typedef 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: */
166 DWORD dnDevNode; /* 20: */
167 /* 24: */
169
170#define ICCOMPRESS_KEYFRAME 0x00000001L
171
172typedef 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
187DWORD
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,
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
234typedef struct {
250 LONG (CALLBACK *PutData)(_In_ LPARAM lOutput, _In_ LONG lFrame, _In_reads_bytes_(len) LPVOID lpBits, _In_ LONG len);
252
253typedef 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
280typedef 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
333typedef 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 */
341
342typedef struct {
348
349 /* changed for ICM_DECOMPRESSEX */
350 INT xDst; /* destination rectangle */
354
355 INT xSrc; /* source rectangle */
360
361DWORD
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
407VFWAPI
409 _In_ HIC hic,
410 _In_ UINT msg,
411 _In_ DWORD_PTR dw1,
412 _In_ DWORD_PTR dw2);
413
414static inline
416VFWAPI
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{
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
450static inline
452VFWAPI
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{
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
486static inline
488VFWAPI
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{
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
541HANDLE
542VFWAPI
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
552HANDLE
553VFWAPI
555 _In_opt_ HIC hic,
556 _In_ UINT uiFlags,
557 _In_ LPBITMAPINFO lpbiIn,
558 _In_ LPVOID lpBits,
559 _In_opt_ LPBITMAPINFO lpbiOut);
560
561BOOL
562VFWAPI
564 _In_ DWORD fccType,
565 _In_ DWORD fccHandler,
566 _Out_ ICINFO * lpicinfo);
567
568BOOL
569VFWAPI
571 _In_ DWORD fccType,
572 _In_ DWORD fccHandler,
574 _In_ LPSTR szDesc,
576
577BOOL
578VFWAPI
580 _In_ DWORD fccType,
581 _In_ DWORD fccHandler,
583
584_Success_(return != 0)
586VFWAPI
588 _In_ HIC hic,
591
592HIC VFWAPI ICOpen(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wMode);
593
594HIC
595VFWAPI
597 _In_ DWORD fccType,
598 _In_ DWORD fccHandler,
599 _In_ UINT wMode,
600 _In_ DRIVERPROC lpfnHandler);
601
603
604HIC
605VFWAPI
607 _In_ DWORD fccType,
608 _In_ DWORD fccHandler,
612
613HIC
614VFWAPI
616 _In_opt_ HIC hic,
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
637static 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
644static inline DWORD ICGetDefaultKeyFrameRate(HIC hic)
645{
646 DWORD dwICValue;
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 */
655typedef struct {
665
666typedef struct {
669 int iLen;
671} ICPALETTE;
672
673DWORD
676 _In_ HIC hic,
678 _In_opt_ HPALETTE hpal,
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 */
694typedef struct {
696 HPALETTE hpal;
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
718typedef struct {
724} ICDRAW;
725
726DWORD
729 _In_ HIC hic,
732 _In_reads_bytes_opt_(cbData) LPVOID lpData,
733 _In_ DWORD cbData,
734 _In_ LONG lTime);
735
736static inline
738VFWAPI
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
799static inline
801VFWAPI
805 _In_ LONG(CALLBACK *fpfnStatus)(_In_ LPARAM, _In_ UINT, _In_ LONG))
806{
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
817typedef struct {
820 HIC hic;
835
836#define ICMF_COMPVARS_VALID 0x00000001
837
838BOOL
839VFWAPI
842 _In_ UINT uiFlags,
843 _In_opt_ LPVOID pvIn,
844 _In_opt_ LPVOID lpData,
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
853BOOL
854VFWAPI
856 _In_ PCOMPVARS pc,
857 _In_ LPBITMAPINFO lpbiIn);
858
860
861LPVOID
862VFWAPI
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
884typedef 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
939typedef struct _MainAVIHeader
940{
953
954/* AVIStreamHeader.dwFlags */
955#define AVISF_DISABLED 0x00000001
956#define AVISF_VIDEO_PALCHANGES 0x00010000
957
958typedef 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
985typedef struct _AVIINDEXENTRY {
991
992typedef struct _AVIPALCHANGE {
995 WORD wFlags; /* pad */
998
999#define AVIIF_KEYFRAME 0x00000010 /* this frame is a key frame. */
1000
1001#define AVIGETFRAMEF_BESTDISPLAYFMT 1
1002
1003typedef struct _AVISTREAMINFOA {
1006 DWORD dwFlags; /* AVIIF_* */
1011 DWORD dwRate; /* dwRate / dwScale == samples/second */
1013 DWORD dwLength; /* In units above... */
1023
1024typedef struct _AVISTREAMINFOW {
1025 DWORD fccType;
1027 DWORD dwFlags;
1028 DWORD dwCaps;
1031 DWORD dwScale;
1032 DWORD dwRate; /* dwRate / dwScale == samples/second */
1033 DWORD dwStart;
1034 DWORD dwLength; /* In units above... */
1039 RECT rcFrame;
1042 WCHAR szName[64];
1044DECL_WINELIB_TYPE_AW(AVISTREAMINFO)
1045DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO)
1046DECL_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
1065typedef struct _AVIFILEINFOW {
1067 DWORD dwFlags;
1068 DWORD dwCaps;
1071 DWORD dwWidth;
1073 DWORD dwScale;
1074 DWORD dwRate;
1077 WCHAR szFileType[64];
1079typedef struct _AVIFILEINFOA {
1093DECL_WINELIB_TYPE_AW(AVIFILEINFO)
1094DECL_WINELIB_TYPE_AW(PAVIFILEINFO)
1095DECL_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
1103typedef 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
1139DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0);
1140DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0);
1141DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0);
1142DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0);
1143DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0);
1144
1145DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009, 0, 0);
1146DEFINE_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
1197HRESULT
1198WINAPI
1201 _In_ LONG,
1202 _In_ LONG,
1203 _In_opt_ CLSID*);
1204
1205HRESULT
1206WINAPI
1208 _In_ PAVISTREAM iface,
1210 _In_ LONG size);
1211
1212HRESULT
1213WINAPI
1215 _In_ PAVISTREAM iface,
1217 _In_ LONG size);
1218
1219#define AVIStreamInfo WINELIB_NAME_AW(AVIStreamInfo)
1220
1221LONG
1222WINAPI
1224 _In_ PAVISTREAM pstream,
1225 _In_ LONG pos,
1226 _In_ LONG flags);
1227
1228HRESULT
1229WINAPI
1231 _In_ PAVISTREAM iface,
1232 _In_ LONG pos,
1233 _Out_writes_bytes_to_opt_(*formatsize, *formatsize) LPVOID format,
1234 _Inout_ LONG *formatsize);
1235
1236HRESULT
1237WINAPI
1239 _In_ PAVISTREAM iface,
1240 _In_ LONG pos,
1241 _In_reads_bytes_(formatsize) LPVOID format,
1242 _In_ LONG formatsize);
1243
1244HRESULT
1245WINAPI
1247 _In_ PAVISTREAM iface,
1248 _In_ LONG start,
1251 _In_ LONG buffersize,
1252 _Out_opt_ LONG *bytesread,
1253 _Out_opt_ LONG *samplesread);
1254
1255HRESULT
1256WINAPI
1258 _In_ PAVISTREAM iface,
1259 _In_ LONG start,
1261 _In_reads_bytes_(buffersize) LPVOID buffer,
1262 _In_ LONG buffersize,
1264 _Out_opt_ LONG *sampwritten,
1265 _Out_opt_ LONG *byteswritten);
1266
1267HRESULT
1268WINAPI
1270 _In_ PAVISTREAM iface,
1271 _In_ DWORD fcc,
1272 _Out_writes_bytes_to_opt_(*lpread, *lpread) LPVOID lp,
1273 _Inout_ LONG *lpread);
1274
1275HRESULT
1276WINAPI
1278 _In_ PAVISTREAM iface,
1279 _In_ DWORD fcc,
1281 _In_ LONG size);
1282
1284WINAPI
1286 _In_ PAVISTREAM pavi,
1287 _In_opt_ LPBITMAPINFOHEADER lpbiWanted);
1288
1291
1292HRESULT
1293WINAPI
1295 _Outptr_ PAVISTREAM *ppsCompressed,
1296 _In_ PAVISTREAM ppsSource,
1297 _In_ AVICOMPRESSOPTIONS *lpOptions,
1298 _In_opt_ CLSID *pclsidHandler);
1299
1300HRESULT
1301WINAPI
1303 _Outptr_ PAVIFILE *ppfile,
1304 _In_ int nStreams,
1305 _In_reads_(nStreams) PAVISTREAM *ppStreams);
1306
1307HRESULT
1308WINAPI
1310 UINT cfFormat,
1311 _In_ HANDLE hGlobal,
1312 _Outptr_ PAVISTREAM * ppstream);
1313
1314HRESULT
1315WINAPI
1317 _Outptr_ PAVISTREAM *ppavi,
1318 _In_ LPCSTR szFile,
1319 _In_ DWORD fccType,
1321 _In_ UINT mode,
1322 _In_opt_ CLSID *pclsidHandler);
1323
1324HRESULT
1325WINAPI
1327 _Outptr_ PAVISTREAM *ppavi,
1328 _In_ LPCWSTR szFile,
1329 _In_ DWORD fccType,
1331 _In_ UINT mode,
1332 _In_opt_ CLSID *pclsidHandler);
1333
1334#define AVIStreamOpenFromFile WINELIB_NAME_AW(AVIStreamOpenFromFile)
1335
1336LONG
1337WINAPI
1339 _In_ PAVISTREAM pavi,
1340 _In_ LONG lStart,
1341 _In_ LONG lEnd,
1342 _In_ LONG lRate);
1343
1345
1346HRESULT
1347WINAPI
1349 _Out_writes_(cbFilter) LPSTR szFilter,
1350 _In_ LONG cbFilter,
1351 _In_ BOOL fSaving);
1352
1353HRESULT
1354WINAPI
1356 _Out_writes_(cbFilter) LPWSTR szFilter,
1357 _In_ LONG cbFilter,
1358 _In_ BOOL fSaving);
1359
1360#define AVIBuildFilter WINELIB_NAME_AW(AVIBuildFilter)
1361
1362BOOL
1363WINAPI
1365 _In_ HWND hWnd,
1367 _In_ INT nStream,
1368 _In_reads_(nStream) PAVISTREAM *ppavi,
1370
1371HRESULT
1372WINAPI
1374 INT nStreams,
1376
1377HRESULT
1378CDECL
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
1388HRESULT
1389CDECL
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
1401HRESULT
1402WINAPI
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
1411HRESULT
1412WINAPI
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
1520HRESULT
1521WINAPI
1523 _Outptr_ PAVISTREAM *ppEditable,
1524 _In_ PAVISTREAM pSource);
1525
1526HRESULT
1527WINAPI
1529 _In_ PAVISTREAM pStream,
1531
1532HRESULT
1533WINAPI
1535 _In_ PAVISTREAM pStream,
1536 _Inout_ LONG *plStart,
1537 _Inout_ LONG *plLength,
1539
1540HRESULT
1541WINAPI
1543 _In_ PAVISTREAM pStream,
1544 _Inout_ LONG *plStart,
1545 _Inout_ LONG *plLength,
1547
1548HRESULT
1549WINAPI
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
1558HRESULT
1559WINAPI
1561 _In_ PAVISTREAM pstream,
1563 _In_ LONG size);
1564
1565HRESULT
1566WINAPI
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
1615void WINAPI AVIFileInit(void);
1616void WINAPI AVIFileExit(void);
1617
1618HRESULT
1619WINAPI
1621 _Outptr_ PAVIFILE* ppfile,
1622 _In_ LPCSTR szFile,
1623 UINT uMode,
1624 _In_opt_ LPCLSID lpHandler);
1625
1626HRESULT
1627WINAPI
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
1639HRESULT
1640WINAPI
1642 _In_ PAVIFILE pfile,
1644 _In_ LONG lSize);
1645
1646HRESULT
1647WINAPI
1649 _In_ PAVIFILE pfile,
1651 _In_ LONG lSize);
1652
1653#define AVIFileInfo WINELIB_NAME_AW(AVIFileInfo)
1654
1655HRESULT
1656WINAPI
1658 _In_ PAVIFILE pfile,
1659 _Outptr_ PAVISTREAM* avis,
1660 _In_ DWORD fccType,
1661 _In_ LONG lParam);
1662
1663HRESULT
1664WINAPI
1666 _In_ PAVIFILE pfile,
1667 _Outptr_ PAVISTREAM* ppavi,
1668 _In_ AVISTREAMINFOA* psi);
1669
1670HRESULT
1671WINAPI
1673 _In_ PAVIFILE pfile,
1674 _Outptr_ PAVISTREAM* ppavi,
1675 _In_ AVISTREAMINFOW* psi);
1676
1677#define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
1678
1679HRESULT
1680WINAPI
1682 _In_ PAVIFILE pfile,
1683 _In_ DWORD fcc,
1685 _In_ LONG size);
1686
1687HRESULT
1688WINAPI
1690 _In_ PAVIFILE pfile,
1691 _In_ DWORD fcc,
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
1765HWND
1766VFWAPIV
1768 _In_opt_ HWND,
1770 _In_ DWORD,
1772
1773HWND
1774VFWAPIV
1776 _In_opt_ HWND,
1778 _In_ DWORD,
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
2006typedef struct
2007{
2016
2018
2019UINT
2020VFWAPI
2022 _In_ HDRAWDIB hdd,
2023 _In_ HDC hdc,
2024 _In_ BOOL fBackground);
2025
2026BOOL
2027VFWAPI
2029 _In_ HDRAWDIB hdd,
2031 _In_ INT dxDst,
2032 _In_ INT dyDst,
2034 _In_ INT dxSrc,
2035 _In_ INT dySrc,
2036 _In_ UINT wFlags);
2037
2038BOOL
2039VFWAPI
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
2076
2077BOOL
2078VFWAPI
2080 _In_ HDRAWDIB hdd,
2081 _In_ int iStart,
2082 _In_ int iLen,
2083 _In_reads_(iLen) LPPALETTEENTRY lppe);
2084
2085LPVOID
2086VFWAPI
2088 _In_ HDRAWDIB hdd,
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
2113typedef HVIDEO *LPHVIDEO;
2114
2116
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
2168typedef 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
2183typedef 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
2341typedef struct tagCapDriverCaps {
2354
2355typedef struct tagCapStatus {
2369 HPALETTE hPalCurrent;
2375
2376
2377typedef struct tagCaptureParms {
2403
2405
2406typedef LRESULT
2408 _In_ HWND hWnd,
2409 _In_ int nID,
2410 _In_ LPCWSTR lpsz);
2411
2412typedef LRESULT
2414 _In_ HWND hWnd,
2415 _In_ int nID,
2416 LPCWSTR lpsz);
2417
2418typedef LRESULT
2420 _In_ HWND hWnd,
2421 _In_ int nID,
2422 LPCSTR lpsz);
2423
2424typedef LRESULT
2426 _In_ HWND hWnd,
2427 _In_ int nID,
2428 LPCSTR lpsz);
2429
2430typedef LRESULT
2432 _In_ HWND hWnd,
2433 _In_ LPVIDEOHDR lpVHdr);
2434
2435typedef LRESULT
2437 _In_ HWND hWnd,
2438 _In_ LPWAVEHDR lpWHdr);
2439
2440typedef LRESULT
2442 _In_ HWND hWnd,
2443 _In_ int nState);
2444
2445HWND
2446VFWAPI
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
2457HWND
2458VFWAPI
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
2471BOOL
2472VFWAPI
2474 WORD,
2475 _Out_writes_(cbName) LPSTR,
2476 _In_ INT cbName,
2477 _Out_writes_(cbVer) LPSTR,
2478 _In_ INT cbVer);
2479
2480BOOL
2481VFWAPI
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 */
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:1301
@ ReadData
Definition: amstream.idl:63
#define msg(x)
Definition: auth_time.c:54
HWND hWnd
Definition: settings.c:17
BOOL Delete(LPCTSTR ServiceName)
Definition: delete.c:12
@ Create
Definition: registry.c:563
#define DECLARE_INTERFACE_(i, b)
Definition: basetyps.h:78
#define PURE
Definition: basetyps.h:64
#define THIS_
Definition: basetyps.h:65
#define THIS
Definition: basetyps.h:66
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
#define STDMETHOD(m)
Definition: basetyps.h:62
return
Definition: dirsup.c:529
_In_ BOOLEAN Release
Definition: cdrom.h:920
LPARAM lParam
Definition: combotst.c:139
static VOID Paste(PGUI_CONSOLE_DATA GuiData)
Definition: conwnd.c:2080
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
static const WCHAR szDescription[]
Definition: provider.c:55
UINT uFlags
Definition: api.c:59
INT nStreams
Definition: api.c:60
LPAVICOMPRESSOPTIONS * ppOptions
Definition: api.c:62
#define CDECL
Definition: compat.h:29
#define CALLBACK
Definition: compat.h:35
VOID Copy(PVOID Src, PVOID Dst, ULONG NumBytes)
Definition: mmixer.c:126
DWORD FOURCC
Definition: dmdls.h:25
static VOID WriteData(_In_ UCHAR Data)
Definition: hardware.c:41
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
static BYTE * GetData(BYTE *pData, ULONG *pLength)
Definition: assembly.c:114
GLuint start
Definition: gl.h:1545
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLsizeiptr size
Definition: glext.h:5919
GLsizei samples
Definition: glext.h:7006
GLuint buffer
Definition: glext.h:5915
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLdouble GLdouble right
Definition: glext.h:10859
GLenum mode
Definition: glext.h:6217
GLint left
Definition: glext.h:7726
GLbitfield flags
Definition: glext.h:7161
GLenum GLsizei len
Definition: glext.h:6722
REFIID riid
Definition: atlbase.h:39
GLint dy
Definition: linetemp.h:97
GLint dx
Definition: linetemp.h:97
#define DECLARE_HANDLE(name)
Definition: mimeole.idl:23
LRESULT(CALLBACK * DRIVERPROC)(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM)
Definition: mmsystem.h:1001
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
LPTSTR szFilter
Definition: mplay32.c:30
BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn)
LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb)
Definition: msvideo_main.c:594
BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn)
BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn)
BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
enum _tagppResult ppResult
unsigned int UINT
Definition: ndis.h:50
#define _In_reads_bytes_(s)
Definition: no_sal2.h:170
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Out_opt_
Definition: no_sal2.h:214
#define _Inout_updates_(s)
Definition: no_sal2.h:182
#define _Inout_
Definition: no_sal2.h:162
#define _Success_(c)
Definition: no_sal2.h:84
#define _Field_size_bytes_(s)
Definition: no_sal2.h:336
#define _Outptr_
Definition: no_sal2.h:262
#define _Out_writes_bytes_opt_(s)
Definition: no_sal2.h:228
#define _Out_writes_bytes_to_(s, c)
Definition: no_sal2.h:190
#define _Inout_opt_
Definition: no_sal2.h:216
#define _Out_writes_(s)
Definition: no_sal2.h:176
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define _Out_writes_bytes_to_opt_(s, c)
Definition: no_sal2.h:240
#define _Reserved_
Definition: no_sal2.h:504
#define _Out_writes_bytes_(s)
Definition: no_sal2.h:178
#define _In_reads_bytes_opt_(s)
Definition: no_sal2.h:224
#define BOOL
Definition: nt_native.h:43
#define LRESULT
Definition: ole.h:14
int rate
Definition: pcmconverter.c:97
short SHORT
Definition: pedump.c:59
long LONG
Definition: pedump.c:60
#define INT
Definition: polytest.cpp:20
static const WCHAR szName[]
Definition: powrprof.c:45
#define REFIID
Definition: guiddef.h:118
_In_ BOOLEAN Read
Definition: strmini.h:479
DWORD dwQuality
Definition: vfw.h:1107
DWORD dwBytesPerSecond
Definition: vfw.h:1108
DWORD dwInterleaveEvery
Definition: vfw.h:1114
DWORD dwFlags
Definition: vfw.h:1109
DWORD cbFormat
Definition: vfw.h:1111
DWORD dwKeyFrameEvery
Definition: vfw.h:1106
DWORD cbParms
Definition: vfw.h:1113
DWORD fccType
Definition: vfw.h:1104
DWORD fccHandler
Definition: vfw.h:1105
LPVOID lpParms
Definition: vfw.h:1112
LPVOID lpFormat
Definition: vfw.h:1110
DWORD dwInitialFrames
Definition: vfw.h:964
DWORD dwStart
Definition: vfw.h:967
DWORD dwQuality
Definition: vfw.h:970
WORD wLanguage
Definition: vfw.h:963
SHORT bottom
Definition: vfw.h:972
DWORD dwSampleSize
Definition: vfw.h:971
FOURCC fccHandler
Definition: vfw.h:960
DWORD dwScale
Definition: vfw.h:965
FOURCC fccType
Definition: vfw.h:959
DWORD dwFlags
Definition: vfw.h:961
DWORD dwLength
Definition: vfw.h:968
DWORD dwSuggestedBufferSize
Definition: vfw.h:969
DWORD dwRate
Definition: vfw.h:966
WORD wPriority
Definition: vfw.h:962
DWORD biSizeImage
Definition: amvideo.idl:36
Definition: vfw.h:817
DWORD dwFlags
Definition: vfw.h:819
LPVOID lpState
Definition: vfw.h:832
LONG lKey
Definition: vfw.h:828
LPVOID lpBitsPrev
Definition: vfw.h:826
DWORD fccHandler
Definition: vfw.h:822
LONG cbSize
Definition: vfw.h:818
LONG lKeyCount
Definition: vfw.h:831
LPBITMAPINFO lpbiOut
Definition: vfw.h:824
LONG lQ
Definition: vfw.h:830
HIC hic
Definition: vfw.h:820
LPVOID lpBitsOut
Definition: vfw.h:825
LONG cbState
Definition: vfw.h:833
DWORD fccType
Definition: vfw.h:821
LPBITMAPINFO lpbiIn
Definition: vfw.h:823
LONG lFrame
Definition: vfw.h:827
LONG lDataRate
Definition: vfw.h:829
LONG timeDraw
Definition: vfw.h:2009
LONG timeStretch
Definition: vfw.h:2012
LONG timeBlt
Definition: vfw.h:2013
LONG timeCount
Definition: vfw.h:2008
LONG timeDither
Definition: vfw.h:2011
LONG timeSetDIBits
Definition: vfw.h:2014
LONG timeDecompress
Definition: vfw.h:2010
_In_ LONG _In_reads_bytes_(len) LPVOID lpBits
LONG lKeyRate
Definition: vfw.h:244
DWORD dwFlags
Definition: vfw.h:235
DWORD dwReserved2
Definition: vfw.h:248
DWORD dwScale
Definition: vfw.h:246
LONG lStartFrame
Definition: vfw.h:240
DWORD dwOverheadPerFrame
Definition: vfw.h:247
LPBITMAPINFOHEADER lpbiInput
Definition: vfw.h:238
DWORD dwRate
Definition: vfw.h:245
LONG lDataRate
Definition: vfw.h:243
LPARAM lInput
Definition: vfw.h:239
LONG lQuality
Definition: vfw.h:242
LPARAM lOutput
Definition: vfw.h:237
_In_ LONG _Out_writes_bytes_(len) LPVOID lpBits
LONG lFrameCount
Definition: vfw.h:241
LPBITMAPINFOHEADER lpbiOutput
Definition: vfw.h:236
DWORD dwFlags
Definition: vfw.h:173
LPBITMAPINFOHEADER lpbiOutput
Definition: vfw.h:174
_Field_size_bytes_(lpbiOutput->biSizeImage) LPVOID lpOutput
INT dxDst
Definition: vfw.h:352
INT yDst
Definition: vfw.h:351
LPBITMAPINFOHEADER lpbiSrc
Definition: vfw.h:344
LPVOID lpDst
Definition: vfw.h:347
LPVOID lpSrc
Definition: vfw.h:345
INT ySrc
Definition: vfw.h:356
INT dySrc
Definition: vfw.h:358
LPBITMAPINFOHEADER lpbiDst
Definition: vfw.h:346
INT xSrc
Definition: vfw.h:355
INT dxSrc
Definition: vfw.h:357
INT dyDst
Definition: vfw.h:353
INT xDst
Definition: vfw.h:350
DWORD dwFlags
Definition: vfw.h:343
DWORD dwFlags
Definition: vfw.h:334
LPBITMAPINFOHEADER lpbiInput
Definition: vfw.h:335
_Field_size_bytes_(lpbiInput->biSizeImage) LPVOID lpInput
INT dyDst
Definition: vfw.h:702
INT yDst
Definition: vfw.h:700
DWORD dwRate
Definition: vfw.h:708
INT xSrc
Definition: vfw.h:704
HDC hdc
Definition: vfw.h:698
LPBITMAPINFOHEADER lpbi
Definition: vfw.h:703
INT dxDst
Definition: vfw.h:701
HPALETTE hpal
Definition: vfw.h:696
DWORD dwScale
Definition: vfw.h:709
DWORD dwFlags
Definition: vfw.h:695
HWND hwnd
Definition: vfw.h:697
INT ySrc
Definition: vfw.h:705
INT dxSrc
Definition: vfw.h:706
INT xDst
Definition: vfw.h:699
INT dySrc
Definition: vfw.h:707
INT dySrc
Definition: vfw.h:660
DWORD dwFlags
Definition: vfw.h:656
INT dxSrc
Definition: vfw.h:659
LPBITMAPINFOHEADER lpbiIn
Definition: vfw.h:657
HIC hicDecompressor
Definition: vfw.h:663
INT dxDst
Definition: vfw.h:661
INT dyDst
Definition: vfw.h:662
LPBITMAPINFOHEADER lpbiSuggest
Definition: vfw.h:658
Definition: vfw.h:718
LONG lTime
Definition: vfw.h:723
DWORD cbData
Definition: vfw.h:722
LPVOID lpData
Definition: vfw.h:721
LPVOID lpFormat
Definition: vfw.h:720
DWORD dwFlags
Definition: vfw.h:719
Definition: vfw.h:280
DWORD dwSize
Definition: vfw.h:281
DWORD dwVersionICM
Definition: vfw.h:286
DWORD fccType
Definition: vfw.h:282
DWORD dwFlags
Definition: vfw.h:284
DWORD dwVersion
Definition: vfw.h:285
DWORD fccHandler
Definition: vfw.h:283
Definition: vfw.h:157
LRESULT dwError
Definition: vfw.h:163
LPVOID pV1Reserved
Definition: vfw.h:164
DWORD dnDevNode
Definition: vfw.h:166
LPVOID pV2Reserved
Definition: vfw.h:165
DWORD dwSize
Definition: vfw.h:158
DWORD dwVersion
Definition: vfw.h:161
DWORD fccHandler
Definition: vfw.h:160
DWORD dwFlags
Definition: vfw.h:162
DWORD fccType
Definition: vfw.h:159
Definition: vfw.h:666
int iLen
Definition: vfw.h:669
LPPALETTEENTRY lppe
Definition: vfw.h:670
int iStart
Definition: vfw.h:668
DWORD dwFlags
Definition: vfw.h:667
UINT LONG l
Definition: vfw.h:264
DWORD dwFlags
Definition: vfw.h:254
LPARAM lParam
Definition: vfw.h:255
DWORD dwCaps
Definition: vfw.h:1082
CHAR szFileType[64]
Definition: vfw.h:1091
DWORD dwScale
Definition: vfw.h:1087
DWORD dwMaxBytesPerSec
Definition: vfw.h:1080
DWORD dwEditCount
Definition: vfw.h:1090
DWORD dwLength
Definition: vfw.h:1089
DWORD dwWidth
Definition: vfw.h:1085
DWORD dwHeight
Definition: vfw.h:1086
DWORD dwStreams
Definition: vfw.h:1083
DWORD dwSuggestedBufferSize
Definition: vfw.h:1084
DWORD dwFlags
Definition: vfw.h:1081
DWORD dwRate
Definition: vfw.h:1088
DWORD dwRate
Definition: avifil32.idl:78
WCHAR szFileType[64]
Definition: avifil32.idl:81
DWORD dwMaxBytesPerSec
Definition: avifil32.idl:70
DWORD dwWidth
Definition: avifil32.idl:75
DWORD dwCaps
Definition: avifil32.idl:72
DWORD dwStreams
Definition: avifil32.idl:73
DWORD dwSuggestedBufferSize
Definition: avifil32.idl:74
DWORD dwHeight
Definition: avifil32.idl:76
DWORD dwScale
Definition: avifil32.idl:77
DWORD dwEditCount
Definition: avifil32.idl:80
DWORD dwFlags
Definition: avifil32.idl:71
DWORD dwLength
Definition: avifil32.idl:79
DWORD dwChunkLength
Definition: vfw.h:989
DWORD dwChunkOffset
Definition: vfw.h:988
DWORD ckid
Definition: vfw.h:986
DWORD dwFlags
Definition: vfw.h:987
PALETTEENTRY peNew[1]
Definition: vfw.h:996
BYTE bNumEntries
Definition: vfw.h:994
WORD wFlags
Definition: vfw.h:995
BYTE bFirstEntry
Definition: vfw.h:993
DWORD dwScale
Definition: vfw.h:1010
DWORD dwSampleSize
Definition: vfw.h:1017
WORD wPriority
Definition: vfw.h:1008
WORD wLanguage
Definition: vfw.h:1009
DWORD dwEditCount
Definition: vfw.h:1019
DWORD dwFlags
Definition: vfw.h:1006
RECT rcFrame
Definition: vfw.h:1018
DWORD dwFormatChangeCount
Definition: vfw.h:1020
DWORD dwCaps
Definition: vfw.h:1007
DWORD dwStart
Definition: vfw.h:1012
DWORD dwQuality
Definition: vfw.h:1016
DWORD fccHandler
Definition: vfw.h:1005
CHAR szName[64]
Definition: vfw.h:1021
DWORD dwInitialFrames
Definition: vfw.h:1014
DWORD dwLength
Definition: vfw.h:1013
DWORD dwRate
Definition: vfw.h:1011
DWORD dwSuggestedBufferSize
Definition: vfw.h:1015
DWORD fccType
Definition: vfw.h:1004
DWORD dwSuggestedBufferSize
Definition: avifil32.idl:40
DWORD dwInitialFrames
Definition: avifil32.idl:39
DWORD fccHandler
Definition: avifil32.idl:30
WCHAR szName[64]
Definition: avifil32.idl:46
DWORD dwEditCount
Definition: avifil32.idl:44
DWORD dwFormatChangeCount
Definition: avifil32.idl:45
DWORD dwSampleSize
Definition: avifil32.idl:42
DWORD dwWidth
Definition: vfw.h:949
DWORD dwSuggestedBufferSize
Definition: vfw.h:948
DWORD dwHeight
Definition: vfw.h:950
DWORD dwPaddingGranularity
Definition: vfw.h:943
DWORD dwStreams
Definition: vfw.h:947
DWORD dwMaxBytesPerSec
Definition: vfw.h:942
DWORD dwInitialFrames
Definition: vfw.h:946
DWORD dwFlags
Definition: vfw.h:944
DWORD dwMicroSecPerFrame
Definition: vfw.h:941
DWORD dwTotalFrames
Definition: vfw.h:945
DWORD dwSrcRectWidthMod
Definition: vfw.h:2187
DWORD dwSrcRectXMod
Definition: vfw.h:2185
DWORD dwSrcRectYMod
Definition: vfw.h:2186
DWORD dwDstRectHeightMod
Definition: vfw.h:2192
DWORD dwSrcRectHeightMod
Definition: vfw.h:2188
DWORD dwDstRectYMod
Definition: vfw.h:2190
DWORD dwDstRectWidthMod
Definition: vfw.h:2191
DWORD dwDstRectXMod
Definition: vfw.h:2189
DWORD dwFlags
Definition: vfw.h:2184
Definition: format.c:58
Definition: tftpd.h:60
BOOL fHasDlgVideoDisplay
Definition: vfw.h:2346
HANDLE hVideoIn
Definition: vfw.h:2349
UINT wDeviceIndex
Definition: vfw.h:2342
HANDLE hVideoExtIn
Definition: vfw.h:2351
BOOL fHasOverlay
Definition: vfw.h:2343
BOOL fHasDlgVideoFormat
Definition: vfw.h:2345
HANDLE hVideoOut
Definition: vfw.h:2350
BOOL fDriverSuppliesPalettes
Definition: vfw.h:2348
HANDLE hVideoExtOut
Definition: vfw.h:2352
BOOL fHasDlgVideoSource
Definition: vfw.h:2344
BOOL fCaptureInitialized
Definition: vfw.h:2347
DWORD dwCurrentVideoFramesDropped
Definition: vfw.h:2366
DWORD dwCurrentVideoFrame
Definition: vfw.h:2365
DWORD dwReturn
Definition: vfw.h:2371
UINT wNumVideoAllocated
Definition: vfw.h:2372
UINT uiImageWidth
Definition: vfw.h:2356
BOOL fCapturingNow
Definition: vfw.h:2370
BOOL fLiveWindow
Definition: vfw.h:2358
POINT ptScroll
Definition: vfw.h:2361
BOOL fCapFileExists
Definition: vfw.h:2364
DWORD dwCurrentTimeElapsedMS
Definition: vfw.h:2368
BOOL fUsingDefaultPalette
Definition: vfw.h:2362
HPALETTE hPalCurrent
Definition: vfw.h:2369
BOOL fAudioHardware
Definition: vfw.h:2363
UINT wNumAudioAllocated
Definition: vfw.h:2373
UINT uiImageHeight
Definition: vfw.h:2357
BOOL fScale
Definition: vfw.h:2360
BOOL fOverlayWindow
Definition: vfw.h:2359
DWORD dwCurrentWaveSamples
Definition: vfw.h:2367
BOOL fStepCaptureAt2x
Definition: vfw.h:2397
BOOL fDisableWriteCache
Definition: vfw.h:2400
UINT AVStreamMaster
Definition: vfw.h:2401
DWORD dwIndexSize
Definition: vfw.h:2382
BOOL fMakeUserHitOKToCapture
Definition: vfw.h:2379
BOOL fAbortRightMouse
Definition: vfw.h:2390
UINT wNumVideoRequested
Definition: vfw.h:2385
BOOL fMCIControl
Definition: vfw.h:2393
BOOL fStepMCIDevice
Definition: vfw.h:2394
UINT wTimeLimit
Definition: vfw.h:2392
UINT wPercentDropForError
Definition: vfw.h:2380
UINT vKeyAbort
Definition: vfw.h:2388
BOOL fUsingDOSMemory
Definition: vfw.h:2384
BOOL fLimitEnabled
Definition: vfw.h:2391
DWORD dwRequestMicroSecPerFrame
Definition: vfw.h:2378
DWORD dwAudioBufferSize
Definition: vfw.h:2399
BOOL fAbortLeftMouse
Definition: vfw.h:2389
BOOL fYield
Definition: vfw.h:2381
BOOL fCaptureAudio
Definition: vfw.h:2386
UINT wNumAudioRequested
Definition: vfw.h:2387
DWORD dwMCIStartTime
Definition: vfw.h:2395
DWORD dwMCIStopTime
Definition: vfw.h:2396
UINT wStepCaptureAverageFrames
Definition: vfw.h:2398
UINT wChunkGranularity
Definition: vfw.h:2383
DWORD dwTimeCaptured
Definition: vfw.h:2172
DWORD dwBufferLength
Definition: vfw.h:2170
DWORD dwFlags
Definition: vfw.h:2174
DWORD_PTR dwUser
Definition: vfw.h:2173
LPBYTE lpData
Definition: vfw.h:2169
DWORD dwBytesUsed
Definition: vfw.h:2171
LPCWSTR lpFormat
Definition: trayclock.cpp:32
uint32_t DWORD_PTR
Definition: typedefs.h:65
unsigned char * LPBYTE
Definition: typedefs.h:53
int32_t * LPLONG
Definition: typedefs.h:58
uint32_t * LPDWORD
Definition: typedefs.h:59
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
struct AVICOMPRESSOPTIONS * PAVICOMPRESSOPTIONS
#define VFWAPIV
Definition: vfw.h:27
struct _MainAVIHeader MainAVIHeader
struct videohdr_tag VIDEOHDR
HRESULT WINAPI AVIFileReadData(_In_ PAVIFILE pfile, _In_ DWORD fcc, _Out_writes_bytes_to_(*size, *size) LPVOID lp, _Inout_ LPLONG size)
LPVOID VFWAPI DrawDibGetBuffer(_In_ HDRAWDIB hdd, _Out_ LPBITMAPINFOHEADER lpbi, _In_ DWORD dwSize, _In_ DWORD dwFlags)
struct _AVIFILEINFOW * PAVIFILEINFOW
BOOL VFWAPI DrawDibClose(_In_ HDRAWDIB hdd)
HRESULT CDECL AVISaveW(LPCWSTR szFile, _In_opt_ CLSID *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStreams, _In_ PAVISTREAM pavi, _In_ LPAVICOMPRESSOPTIONS lpOptions,...)
HRESULT WINAPI AVIFileCreateStreamA(_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM *ppavi, _In_ AVISTREAMINFOA *psi)
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
WORD TWOCC
Definition: vfw.h:884
LRESULT(CALLBACK * CAPERRORCALLBACKA)(_In_ HWND hWnd, _In_ int nID, LPCSTR lpsz)
Definition: vfw.h:2425
HRESULT WINAPI AVIFileEndRecord(_In_ PAVIFILE pfile)
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 _AVISTREAMINFOW AVISTREAMINFOW
struct _AVISTREAMINFOW * PAVISTREAMINFOW
BOOL VFWAPI DrawDibSetPalette(_In_ HDRAWDIB hdd, _In_opt_ HPALETTE hpal)
HPALETTE VFWAPI DrawDibGetPalette(_In_ HDRAWDIB hdd)
HWND VFWAPIV MCIWndCreateA(_In_opt_ HWND, _In_opt_ HINSTANCE, _In_ DWORD, _In_opt_ LPCSTR)
struct tagCaptureParms * PCAPTUREPARMS
BOOL WINAPI AVISaveOptions(_In_ HWND hWnd, _In_ UINT uFlags, _In_ INT nStream, _In_reads_(nStream) PAVISTREAM *ppavi, _Inout_updates_(nStream) LPAVICOMPRESSOPTIONS *ppOptions)
struct videohdr_tag * LPVIDEOHDR
HWND VFWAPI capCreateCaptureWindowW(LPCWSTR, _In_ DWORD, _In_ INT, _In_ INT, _In_ INT, _In_ INT, _In_opt_ HWND, _In_ INT)
BOOL VFWAPIV MCIWndRegisterClass(void)
Definition: mciwnd.c:72
LRESULT VFWAPI ICClose(_In_ HIC hic)
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
struct tagCaptureParms CAPTUREPARMS
BOOL VFWAPI ICInstall(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ LPARAM lParam, _In_ LPSTR szDesc, _In_ UINT wFlags)
#define ICM_GETDEFAULTKEYFRAMERATE
Definition: vfw.h:136
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)
LONG WINAPI AVIStreamSampleToTime(_In_ PAVISTREAM pstream, _In_ LONG lSample)
struct DRAWDIBTIME * LPDRAWDIBTIME
BOOL VFWAPI DrawDibChangePalette(_In_ HDRAWDIB hdd, _In_ int iStart, _In_ int iLen, _In_reads_(iLen) LPPALETTEENTRY lppe)
HRESULT WINAPI AVIMakeFileFromStreams(_Outptr_ PAVIFILE *ppfile, _In_ int nStreams, _In_reads_(nStreams) PAVISTREAM *ppStreams)
HRESULT WINAPI AVIStreamReadFormat(_In_ PAVISTREAM iface, _In_ LONG pos, _Out_writes_bytes_to_opt_(*formatsize, *formatsize) LPVOID format, _Inout_ LONG *formatsize)
HRESULT WINAPI AVIMakeStreamFromClipboard(UINT cfFormat, _In_ HANDLE hGlobal, _Outptr_ PAVISTREAM *ppstream)
HIC VFWAPI ICOpenFunction(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wMode, _In_ DRIVERPROC lpfnHandler)
BOOL VFWAPI DrawDibTime(_In_ HDRAWDIB hdd, _Out_ LPDRAWDIBTIME lpddtime)
HANDLE HDRAWDIB
Definition: vfw.h:33
static DWORD ICGetDefaultKeyFrameRate(HIC hic)
Definition: vfw.h:644
#define VFWAPI
Definition: vfw.h:26
HRESULT WINAPI AVIMakeCompressedStream(_Outptr_ PAVISTREAM *ppsCompressed, _In_ PAVISTREAM ppsSource, _In_ AVICOMPRESSOPTIONS *lpOptions, _In_opt_ CLSID *pclsidHandler)
HRESULT WINAPI EditStreamSetInfoA(_In_ PAVISTREAM pstream, _In_reads_bytes_(size) LPAVISTREAMINFOA asi, _In_ LONG size)
HRESULT WINAPI AVIStreamOpenFromFileW(_Outptr_ PAVISTREAM *ppavi, _In_ LPCWSTR szFile, _In_ DWORD fccType, _In_ LONG lParam, _In_ UINT mode, _In_opt_ CLSID *pclsidHandler)
HRESULT WINAPI AVIFileOpenW(_Outptr_ PAVIFILE *ppfile, _In_ LPCWSTR szFile, UINT uMode, _In_opt_ LPCLSID lpHandler)
struct tagCapDriverCaps * PCAPDRIVERCAPS
BOOL VFWAPI ICRemove(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wFlags)
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)
LRESULT(CALLBACK * CAPWAVECALLBACK)(_In_ HWND hWnd, _In_ LPWAVEHDR lpWHdr)
Definition: vfw.h:2436
HRESULT WINAPI EditStreamSetNameA(_In_ PAVISTREAM pstream, _In_ LPCSTR szName)
void VFWAPI ICCompressorFree(_In_ PCOMPVARS pc)
struct _AVIFILEINFOW * LPAVIFILEINFOW
#define DEFINE_AVIGUID(name, l, w1, w2)
Definition: vfw.h:1136
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)
HRESULT WINAPI AVIStreamReadData(_In_ PAVISTREAM iface, _In_ DWORD fcc, _Out_writes_bytes_to_opt_(*lpread, *lpread) LPVOID lp, _Inout_ LONG *lpread)
LRESULT(CALLBACK * CAPYIELDCALLBACK)(_In_ HWND hWnd)
Definition: vfw.h:2404
LONG WINAPI AVIStreamStart(_In_ PAVISTREAM iface)
#define ICM_DECOMPRESSEX_BEGIN
Definition: vfw.h:138
struct channel_caps_tag CHANNEL_CAPS
HWND VFWAPIV MCIWndCreateW(_In_opt_ HWND, _In_opt_ HINSTANCE, _In_ DWORD, _In_opt_ LPCWSTR)
HRESULT WINAPI AVIGetFromClipboard(_Outptr_ PAVIFILE *ppfile)
DWORD VFWAPI VideoForWindowsVersion(void)
Definition: msvideo_main.c:255
HRESULT WINAPI EditStreamPaste(_In_ PAVISTREAM pDest, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _In_ PAVISTREAM pSource, _In_ LONG lStart, _In_ LONG lEnd)
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)
#define ICM_SET_STATUS_PROC
Definition: vfw.h:144
struct IAVIEditStream * PAVIEDITSTREAM
Definition: vfw.h:41
HRESULT WINAPI AVIStreamInfoW(_In_ PAVISTREAM iface, _Out_writes_bytes_(size) AVISTREAMINFOW *asi, _In_ LONG size)
LONG WINAPI AVIStreamTimeToSample(_In_ PAVISTREAM pstream, _In_ LONG lTime)
HRESULT WINAPI EditStreamCut(_In_ PAVISTREAM pStream, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Outptr_ PAVISTREAM *ppResult)
BOOL VFWAPI DrawDibEnd(_In_ HDRAWDIB hdd)
struct _AVISTREAMINFOA AVISTREAMINFOA
HRESULT WINAPI AVIFileWriteData(_In_ PAVIFILE pfile, _In_ DWORD fcc, _In_reads_bytes_(size) LPVOID lp, _In_ LONG size)
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)
HRESULT WINAPI AVIFileInfoW(_In_ PAVIFILE pfile, _Out_writes_bytes_(lSize) PAVIFILEINFOW pfi, _In_ LONG lSize)
struct tagCapStatus CAPSTATUS
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)
PGETFRAME WINAPI AVIStreamGetFrameOpen(_In_ PAVISTREAM pavi, _In_opt_ LPBITMAPINFOHEADER lpbiWanted)
ULONG WINAPI AVIStreamAddRef(PAVISTREAM iface)
Definition: api.c:434
HVIDEO * LPHVIDEO
Definition: vfw.h:2113
struct tagCapDriverCaps CAPDRIVERCAPS
void WINAPI AVIFileExit(void)
Definition: api.c:182
#define ICM_DECOMPRESSEX
Definition: vfw.h:140
struct _AVIPALCHANGE AVIPALCHANGE
LRESULT(CALLBACK * CAPERRORCALLBACKW)(_In_ HWND hWnd, _In_ int nID, LPCWSTR lpsz)
Definition: vfw.h:2413
BOOL VFWAPI capGetDriverDescriptionA(WORD, _Out_writes_(cbName) LPSTR, _In_ INT cbName, _Out_writes_(cbVer) LPSTR, _In_ INT cbVer)
LONG VFWAPI TermVFW(void)
struct _AVISTREAMINFOA * LPAVISTREAMINFOA
struct _AVIFILEINFOA AVIFILEINFOA
LONG WINAPI AVIStreamEndStreaming(_In_ PAVISTREAM pavi)
HRESULT WINAPI EditStreamSetInfoW(_In_ PAVISTREAM pstream, _In_reads_bytes_(size) LPAVISTREAMINFOW asi, _In_ LONG size)
struct ICOPEN * LPICOPEN
struct tagCaptureParms * LPCAPTUREPARMS
LRESULT VFWAPI ICSendMessage(_In_ HIC hic, _In_ UINT msg, _In_ DWORD_PTR dw1, _In_ DWORD_PTR dw2)
struct _AVISTREAMINFOW * LPAVISTREAMINFOW
BOOL VFWAPI ICInfo(_In_ DWORD fccType, _In_ DWORD fccHandler, _Out_ ICINFO *lpicinfo)
BOOL VFWAPI capGetDriverDescriptionW(WORD, _Out_writes_(cbName) LPWSTR, _In_ INT cbName, _Out_writes_(cbVer) LPWSTR, _In_ INT cbVer)
LRESULT(CALLBACK * CAPVIDEOCALLBACK)(_In_ HWND hWnd, _In_ LPVIDEOHDR lpVHdr)
Definition: vfw.h:2431
HIC VFWAPI ICOpen(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ UINT wMode)
struct tagCapDriverCaps * LPCAPDRIVERCAPS
BOOL VFWAPI DrawDibStop(_In_ HDRAWDIB hdd)
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)
void WINAPI AVIFileInit(void)
Definition: api.c:175
#define ICM_DECOMPRESSEX_QUERY
Definition: vfw.h:139
BOOL VFWAPI ICSeqCompressFrameStart(_In_ PCOMPVARS pc, _In_ LPBITMAPINFO lpbiIn)
HANDLE VFWAPI ICImageDecompress(_In_opt_ HIC hic, _In_ UINT uiFlags, _In_ LPBITMAPINFO lpbiIn, _In_ LPVOID lpBits, _In_opt_ LPBITMAPINFO lpbiOut)
struct _AVIFILEINFOW AVIFILEINFOW
HRESULT WINAPI AVIStreamGetFrameClose(_In_ PGETFRAME pg)
HRESULT WINAPI AVIFileCreateStreamW(_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM *ppavi, _In_ AVISTREAMINFOW *psi)
HIC VFWAPI ICGetDisplayFormat(_In_opt_ HIC hic, _In_ LPBITMAPINFOHEADER lpbiIn, _Out_ LPBITMAPINFOHEADER lpbiOut, _In_ int BitDepth, _In_ int dx, _In_ int dy)
#define ICM_DRAW_SUGGESTFORMAT
Definition: vfw.h:131
struct channel_caps_tag * PCHANNEL_CAPS
struct _AVIFILEINFOA * PAVIFILEINFOA
LONG WINAPI AVIStreamBeginStreaming(_In_ PAVISTREAM pavi, _In_ LONG lStart, _In_ LONG lEnd, _In_ LONG lRate)
HRESULT WINAPI AVIBuildFilterW(_Out_writes_(cbFilter) LPWSTR szFilter, _In_ LONG cbFilter, _In_ BOOL fSaving)
struct tagCapStatus * LPCAPSTATUS
struct AVICOMPRESSOPTIONS * LPAVICOMPRESSOPTIONS
BOOL(CALLBACK * AVISAVECALLBACK)(INT)
Definition: vfw.h:937
struct tagCapStatus * PCAPSTATUS
HRESULT WINAPI AVIStreamOpenFromFileA(_Outptr_ PAVISTREAM *ppavi, _In_ LPCSTR szFile, _In_ DWORD fccType, _In_ LONG lParam, _In_ UINT mode, _In_opt_ CLSID *pclsidHandler)
HRESULT WINAPI AVIStreamWriteData(_In_ PAVISTREAM iface, _In_ DWORD fcc, _In_reads_bytes_(size) LPVOID lp, _In_ LONG size)
#define ICM_GETDEFAULTQUALITY
Definition: vfw.h:88
ULONG WINAPI AVIFileRelease(PAVIFILE pfile)
Definition: api.c:291
struct _AVISTREAMINFOA * PAVISTREAMINFOA
ULONG WINAPI AVIStreamRelease(PAVISTREAM iface)
Definition: api.c:449
HRESULT WINAPI AVIStreamSetFormat(_In_ PAVISTREAM iface, _In_ LONG pos, _In_reads_bytes_(formatsize) LPVOID format, _In_ LONG formatsize)
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)
HRESULT WINAPI AVIStreamCreate(_Outptr_ PAVISTREAM *, _In_ LONG, _In_ LONG, _In_opt_ CLSID *)
HIC VFWAPI ICLocate(_In_ DWORD fccType, _In_ DWORD fccHandler, _In_ LPBITMAPINFOHEADER lpbiIn, _In_opt_ LPBITMAPINFOHEADER lpbiOut, _In_ WORD wFlags)
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)
struct videohdr_tag * PVIDEOHDR
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)
LONG WINAPI AVIStreamLength(_In_ PAVISTREAM iface)
HRESULT WINAPI AVIFileOpenA(_Outptr_ PAVIFILE *ppfile, _In_ LPCSTR szFile, UINT uMode, _In_opt_ LPCLSID lpHandler)
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
ULONG WINAPI AVIFileAddRef(PAVIFILE pfile)
Definition: api.c:276
LPVOID WINAPI AVIStreamGetFrame(_In_ PGETFRAME pg, _In_ LONG pos)
LONG VFWAPI InitVFW(void)
HRESULT WINAPI CreateEditableStream(_Outptr_ PAVISTREAM *ppEditable, _In_ PAVISTREAM pSource)
BOOL VFWAPI DrawDibStart(_In_ HDRAWDIB hdd, _In_ DWORD rate)
HRESULT WINAPI AVIBuildFilterA(_Out_writes_(cbFilter) LPSTR szFilter, _In_ LONG cbFilter, _In_ BOOL fSaving)
struct IAVIStream * PAVISTREAM
Definition: vfw.h:38
HRESULT WINAPI EditStreamSetNameW(_In_ PAVISTREAM pstream, _In_ LPCWSTR szName)
LRESULT(CALLBACK * CAPSTATUSCALLBACKW)(_In_ HWND hWnd, _In_ int nID, _In_ LPCWSTR lpsz)
Definition: vfw.h:2407
struct COMPVARS * PCOMPVARS
LPVOID VFWAPI ICSeqCompressFrame(_In_ PCOMPVARS pc, _Reserved_ UINT uiFlags, _In_ LPVOID lpBits, _Out_ BOOL *pfKey, _Inout_opt_ LONG *plSize)
struct IAVIFile * PAVIFILE
Definition: vfw.h:39
static DWORD ICGetDefaultQuality(HIC hic)
Definition: vfw.h:637
void VFWAPI ICSeqCompressFrameEnd(_In_ PCOMPVARS pc)
struct _AVIINDEXENTRY AVIINDEXENTRY
HDRAWDIB VFWAPI DrawDibOpen(void)
Definition: drawdib.c:80
LRESULT(CALLBACK * CAPCONTROLCALLBACK)(_In_ HWND hWnd, _In_ int nState)
Definition: vfw.h:2441
HWND VFWAPI capCreateCaptureWindowA(LPCSTR, _In_ DWORD, _In_ INT, _In_ INT, _In_ INT, _In_ INT, _In_opt_ HWND, _In_ INT)
HRESULT WINAPI EditStreamClone(_In_ PAVISTREAM pStream, _Outptr_ PAVISTREAM *ppResult)
HRESULT WINAPI AVIStreamInfoA(_In_ PAVISTREAM iface, _Out_writes_bytes_(size) AVISTREAMINFOA *asi, _In_ LONG size)
DWORD VFWAPI DrawDibProfileDisplay(_In_ LPBITMAPINFOHEADER lpbi)
HRESULT CDECL AVISaveA(LPCSTR szFile, _In_opt_ CLSID *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStreams, _In_ PAVISTREAM pavi, _In_ LPAVICOMPRESSOPTIONS lpOptions,...)
struct _AVIFILEINFOA * LPAVIFILEINFOA
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)
HRESULT WINAPI AVIClearClipboard(void)
Definition: api.c:2194
struct IGetFrame * PGETFRAME
Definition: vfw.h:40
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)
struct channel_caps_tag * LPCHANNEL_CAPS
HRESULT WINAPI AVIFileInfoA(_In_ PAVIFILE pfile, _Out_writes_bytes_(lSize) PAVIFILEINFOA pfi, _In_ LONG lSize)
HRESULT WINAPI AVIFileGetStream(_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM *avis, _In_ DWORD fccType, _In_ LONG lParam)
LONG WINAPI AVIStreamFindSample(_In_ PAVISTREAM pstream, _In_ LONG pos, _In_ LONG flags)
HRESULT WINAPI AVIPutFileOnClipboard(_In_ PAVIFILE pfile)
UINT VFWAPI DrawDibRealize(_In_ HDRAWDIB hdd, _In_ HDC hdc, _In_ BOOL fBackground)
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
HRESULT WINAPI EditStreamCopy(_In_ PAVISTREAM pStream, _Inout_ LONG *plStart, _Inout_ LONG *plLength, _Outptr_ PAVISTREAM *ppResult)
LRESULT(CALLBACK * CAPSTATUSCALLBACKA)(_In_ HWND hWnd, _In_ int nID, LPCSTR lpsz)
Definition: vfw.h:2419
_In_ DWORD cb
Definition: vfw.h:590
HRESULT WINAPI AVISaveOptionsFree(INT nStreams, _In_reads_(nStreams) LPAVICOMPRESSOPTIONS *ppOptions)
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
Definition: vmhorizon.c:15
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define DECL_WINELIB_TYPE_AW(type)
Definition: windef.h:401
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
#define WINAPI
Definition: msvc.h:6
_In_ UINT iStart
Definition: wingdi.h:3620
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
char CHAR
Definition: xmlstorage.h:175
unsigned char BYTE
Definition: xxhash.c:193