4 #pragma GCC system_header
13 #if !defined (_OLE2_H) && !defined (__OBJC__)
18 #define VFWAPIV WINAPIV
27 #define ICERR_DONTDRAW 1
28 #define ICERR_NEWPALETTE 2
29 #define ICERR_GOTOKEYFRAME 3
30 #define ICERR_STOPDRAWING 4
31 #define ICERR_UNSUPPORTED -1
32 #define ICERR_BADFORMAT -2
33 #define ICERR_MEMORY -3
34 #define ICERR_INTERNAL -4
35 #define ICERR_BADFLAGS -5
36 #define ICERR_BADPARAM -6
37 #define ICERR_BADSIZE -7
38 #define ICERR_BADHANDLE -8
39 #define ICERR_CANTUPDATE -9
40 #define ICERR_ABORT -10
41 #define ICERR_ERROR -100
42 #define ICERR_BADBITDEPTH -200
43 #define ICERR_BADIMAGESIZE -201
44 #define ICERR_CUSTOM -400
45 #define ICCOMPRESSFRAMES_PADDING 0x01
46 #define ICM_USER (DRV_USER+0x0000)
47 #define ICM_RESERVED_LOW (DRV_USER+0x1000)
48 #define ICM_RESERVED_HIGH (DRV_USER+0x2000)
49 #define ICM_RESERVED ICM_RESERVED_LOW
50 #define ICM_GETSTATE (ICM_RESERVED+0)
51 #define ICM_SETSTATE (ICM_RESERVED+1)
52 #define ICM_GETINFO (ICM_RESERVED+2)
53 #define ICM_CONFIGURE (ICM_RESERVED+10)
54 #define ICM_ABOUT (ICM_RESERVED+11)
55 #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
56 #define ICM_GETQUALITY (ICM_RESERVED+31)
57 #define ICM_SETQUALITY (ICM_RESERVED+32)
58 #define ICM_SET (ICM_RESERVED+40)
59 #define ICM_GET (ICM_RESERVED+41)
60 #define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
61 #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
62 #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
63 #define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
64 #define ICM_COMPRESS_QUERY (ICM_USER+6)
65 #define ICM_COMPRESS_BEGIN (ICM_USER+7)
66 #define ICM_COMPRESS (ICM_USER+8)
67 #define ICM_COMPRESS_END (ICM_USER+9)
68 #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
69 #define ICM_DECOMPRESS_QUERY (ICM_USER+11)
70 #define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
71 #define ICM_DECOMPRESS (ICM_USER+13)
72 #define ICM_DECOMPRESS_END (ICM_USER+14)
73 #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
74 #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
75 #define ICM_DRAW_QUERY (ICM_USER+31)
76 #define ICM_DRAW_BEGIN (ICM_USER+15)
77 #define ICM_DRAW_GET_PALETTE (ICM_USER+16)
78 #define ICM_DRAW_START (ICM_USER+18)
79 #define ICM_DRAW_STOP (ICM_USER+19)
80 #define ICM_DRAW_END (ICM_USER+21)
81 #define ICM_DRAW_GETTIME (ICM_USER+32)
82 #define ICM_DRAW (ICM_USER+33)
83 #define ICM_DRAW_WINDOW (ICM_USER+34)
84 #define ICM_DRAW_SETTIME (ICM_USER+35)
85 #define ICM_DRAW_REALIZE (ICM_USER+36)
86 #define ICM_DRAW_FLUSH (ICM_USER+37)
87 #define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
88 #define ICM_DRAW_START_PLAY (ICM_USER+39)
89 #define ICM_DRAW_STOP_PLAY (ICM_USER+40)
90 #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
91 #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
92 #define ICM_GETBUFFERSWANTED (ICM_USER+41)
93 #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
94 #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
95 #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
96 #define ICM_DECOMPRESSEX (ICM_USER+62)
97 #define ICM_DECOMPRESSEX_END (ICM_USER+63)
98 #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
99 #define ICM_SET_STATUS_PROC (ICM_USER+72)
100 #define ICMF_CONFIGURE_QUERY 0x01
101 #define ICCOMPRESS_KEYFRAME 0x01
102 #define ICSTATUS_START 0
103 #define ICSTATUS_STATUS 1
104 #define ICSTATUS_END 2
105 #define ICSTATUS_ERROR 3
106 #define ICSTATUS_YIELD 4
107 #define ICMODE_COMPRESS 1
108 #define ICMODE_DECOMPRESS 2
109 #define ICMODE_FASTDECOMPRESS 3
110 #define ICMODE_QUERY 4
111 #define ICMODE_FASTCOMPRESS 5
112 #define ICMODE_DRAW 8
113 #define ICQUALITY_LOW 0
114 #define ICQUALITY_HIGH 10000
115 #define ICQUALITY_DEFAULT -1
116 #define VIDCF_QUALITY 0x01
117 #define VIDCF_CRUNCH 0x02
118 #define VIDCF_TEMPORAL 0x04
119 #define VIDCF_COMPRESSFRAMES 0x08
120 #define VIDCF_DRAW 0x10
121 #define VIDCF_FASTTEMPORALC 0x20
122 #define VIDCF_FASTTEMPORALD 0x80
123 #define VIDCF_QUALITYTIME 0x40
124 #define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
125 #define ICMF_ABOUT_QUERY 0x01
126 #define ICDECOMPRESS_HURRYUP 0x80000000
127 #define ICDECOMPRESS_UPDATE 0x40000000
128 #define ICDECOMPRESS_PREROLL 0x20000000
129 #define ICDECOMPRESS_NULLFRAME 0x10000000
130 #define ICDECOMPRESS_NOTKEYFRAME 0x8000000
131 #define ICDRAW_QUERY 0x01L
132 #define ICDRAW_FULLSCREEN 0x02L
133 #define ICDRAW_HDC 0x04L
134 #define ICDRAW_ANIMATE 0x08L
135 #define ICDRAW_CONTINUE 0x10L
136 #define ICDRAW_MEMORYDC 0x20L
137 #define ICDRAW_UPDATING 0x40L
138 #define ICDRAW_RENDER 0x80L
139 #define ICDRAW_BUFFER 0x100L
140 #define ICINSTALL_UNICODE 0x8000
141 #define ICINSTALL_FUNCTION 0x01
142 #define ICINSTALL_DRIVER 0x02
143 #define ICINSTALL_HDRV 0x04
144 #define ICINSTALL_DRIVERW 0x8002
145 #define ICDRAW_HURRYUP 0x80000000L
146 #define ICDRAW_UPDATE 0x40000000L
147 #define ICDRAW_PREROLL 0x20000000L
148 #define ICDRAW_NULLFRAME 0x10000000L
149 #define ICDRAW_NOTKEYFRAME 0x8000000L
150 #define ICMF_COMPVARS_VALID 0x01
151 #define ICMF_CHOOSE_KEYFRAME 0x01
152 #define ICMF_CHOOSE_DATARATE 0x02
153 #define ICMF_CHOOSE_PREVIEW 0x04
154 #define ICMF_CHOOSE_ALLCOMPRESSORS 0x08
155 #define ICTYPE_VIDEO mmioFOURCC('v','i','d','c')
156 #define ICTYPE_AUDIO mmioFOURCC('a','u','d','c')
157 #define formtypeAVI mmioFOURCC('A','V','I',' ')
158 #define listtypeAVIHEADER mmioFOURCC('h','d','r','l')
159 #define ckidAVIMAINHDR mmioFOURCC('a','v','i','h')
160 #define listtypeSTREAMHEADER mmioFOURCC('s','t','r','l')
161 #define ckidSTREAMHEADER mmioFOURCC('s','t','r','h')
162 #define ckidSTREAMFORMAT mmioFOURCC('s','t','r','f')
163 #define ckidSTREAMHANDLERDATA mmioFOURCC('s','t','r','d')
164 #define ckidSTREAMNAME mmioFOURCC('s','t','r','n')
165 #define listtypeAVIMOVIE mmioFOURCC('m','o','v','i')
166 #define listtypeAVIRECORD mmioFOURCC('r','e','c',' ')
167 #define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
168 #define streamtypeANY 0UL
169 #define streamtypeVIDEO mmioFOURCC('v','i','d','s')
170 #define streamtypeAUDIO mmioFOURCC('a','u','d','s')
171 #define streamtypeMIDI mmioFOURCC('m','i','d','s')
172 #define streamtypeTEXT mmioFOURCC('t','x','t','s')
173 #define cktypeDIBbits aviTWOCC('d','b')
174 #define cktypeDIBcompressed aviTWOCC('d','c')
175 #define cktypePALchange aviTWOCC('p','c')
176 #define cktypeWAVEbytes aviTWOCC('w','b')
177 #define ckidAVIPADDING mmioFOURCC('J','U','N','K')
178 #define FromHex(n) (((n)>='A')?((n)+10-'A'):((n)-'0'))
179 #define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc)))<<4)+(FromHex(HIBYTE(LOWORD(fcc))))))
180 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
181 #define ToHex(n) ((BYTE)(((n)>9)?((n)-10+'A'):((n)+'0')))
182 #define MAKEAVICKID(tcc, stream) MAKELONG((ToHex((stream)&0x0f)<<8)|(ToHex(((stream)&0xf0)>>4)),tcc)
183 #define AVIF_HASINDEX 0x10
184 #define AVIF_MUSTUSEINDEX 0x20
185 #define AVIF_ISINTERLEAVED 0x100
186 #define AVIF_TRUSTCKTYPE 0x800
187 #define AVIF_WASCAPTUREFILE 0x10000
188 #define AVIF_COPYRIGHTED 0x20000
189 #define AVI_HEADERSIZE 2048
190 #define AVISF_DISABLED 0x01
191 #define AVISF_VIDEO_PALCHANGES 0x10000
192 #define AVIIF_LIST 0x01
193 #define AVIIF_TWOCC 0x02
194 #define AVIIF_KEYFRAME 0x10
195 #define AVIIF_NOTIME 0x100
196 #define AVIIF_COMPUSE 0xfff0000
197 #define AVIIF_KEYFRAME 0x10
198 #define AVIGETFRAMEF_BESTDISPLAYFMT 1
199 #define AVISTREAMINFO_DISABLED 0x01
200 #define AVISTREAMINFO_FORMATCHANGES 0x10000
201 #define AVIFILEINFO_HASINDEX 0x10
202 #define AVIFILEINFO_MUSTUSEINDEX 0x20
203 #define AVIFILEINFO_ISINTERLEAVED 0x100
204 #define AVIFILEINFO_TRUSTCKTYPE 0x800
205 #define AVIFILEINFO_WASCAPTUREFILE 0x10000
206 #define AVIFILEINFO_COPYRIGHTED 0x20000
207 #define AVIFILECAPS_CANREAD 0x01
208 #define AVIFILECAPS_CANWRITE 0x02
209 #define AVIFILECAPS_ALLKEYFRAMES 0x10
210 #define AVIFILECAPS_NOCOMPRESSION 0x20
211 #define AVICOMPRESSF_INTERLEAVE 0x01
212 #define AVICOMPRESSF_DATARATE 0x02
213 #define AVICOMPRESSF_KEYFRAMES 0x04
214 #define AVICOMPRESSF_VALID 0x08
215 #define FIND_DIR 0x0000000fL
216 #define FIND_NEXT 0x00000001L
217 #define FIND_PREV 0x00000004L
218 #define FIND_FROM_START 0x00000008L
219 #define FIND_TYPE 0x000000f0L
220 #define FIND_KEY 0x00000010L
221 #define FIND_ANY 0x00000020L
222 #define FIND_FORMAT 0x00000040L
223 #define FIND_RET 0x0000f000L
224 #define FIND_POS 0x00000000L
225 #define FIND_LENGTH 0x00001000L
226 #define FIND_OFFSET 0x00002000L
227 #define FIND_SIZE 0x00003000L
228 #define FIND_INDEX 0x00004000L
230 #define MAKE_AVIERR(e) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+e)
231 #define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
232 #define AVIERR_BADFORMAT MAKE_AVIERR(102)
233 #define AVIERR_MEMORY MAKE_AVIERR(103)
234 #define AVIERR_INTERNAL MAKE_AVIERR(104)
235 #define AVIERR_BADFLAGS MAKE_AVIERR(105)
236 #define AVIERR_BADPARAM MAKE_AVIERR(106)
237 #define AVIERR_BADSIZE MAKE_AVIERR(107)
238 #define AVIERR_BADHANDLE MAKE_AVIERR(108)
239 #define AVIERR_FILEREAD MAKE_AVIERR(109)
240 #define AVIERR_FILEWRITE MAKE_AVIERR(110)
241 #define AVIERR_FILEOPEN MAKE_AVIERR(111)
242 #define AVIERR_COMPRESSOR MAKE_AVIERR(112)
243 #define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
244 #define AVIERR_READONLY MAKE_AVIERR(114)
245 #define AVIERR_NODATA MAKE_AVIERR(115)
246 #define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
247 #define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
248 #define AVIERR_USERABORT MAKE_AVIERR(198)
249 #define AVIERR_ERROR MAKE_AVIERR(199)
250 #define MCIWNDOPENF_NEW 0x0001
251 #define MCIWNDF_NOAUTOSIZEWINDOW 0x0001
252 #define MCIWNDF_NOPLAYBAR 0x0002
253 #define MCIWNDF_NOAUTOSIZEMOVIE 0x0004
254 #define MCIWNDF_NOMENU 0x0008
255 #define MCIWNDF_SHOWNAME 0x0010
256 #define MCIWNDF_SHOWPOS 0x0020
257 #define MCIWNDF_SHOWMODE 0x0040
258 #define MCIWNDF_SHOWALL 0x0070
259 #define MCIWNDF_NOTIFYMODE 0x0100
260 #define MCIWNDF_NOTIFYPOS 0x0200
261 #define MCIWNDF_NOTIFYSIZE 0x0400
262 #define MCIWNDF_NOTIFYERROR 0x1000
263 #define MCIWNDF_NOTIFYALL 0x1F00
264 #define MCIWNDF_NOTIFYANSI 0x0080
265 #define MCIWNDF_NOTIFYMEDIAA 0x0880
266 #define MCIWNDF_NOTIFYMEDIAW 0x0800
267 #define MCIWNDF_RECORD 0x2000
268 #define MCIWNDF_NOERRORDLG 0x4000
269 #define MCIWNDF_NOOPEN 0x8000
270 #define MCIWNDM_GETDEVICEID (WM_USER + 100)
271 #define MCIWNDM_GETSTART (WM_USER + 103)
272 #define MCIWNDM_GETLENGTH (WM_USER + 104)
273 #define MCIWNDM_GETEND (WM_USER + 105)
274 #define MCIWNDM_EJECT (WM_USER + 107)
275 #define MCIWNDM_SETZOOM (WM_USER + 108)
276 #define MCIWNDM_GETZOOM (WM_USER + 109)
277 #define MCIWNDM_SETVOLUME (WM_USER + 110)
278 #define MCIWNDM_GETVOLUME (WM_USER + 111)
279 #define MCIWNDM_SETSPEED (WM_USER + 112)
280 #define MCIWNDM_GETSPEED (WM_USER + 113)
281 #define MCIWNDM_SETREPEAT (WM_USER + 114)
282 #define MCIWNDM_GETREPEAT (WM_USER + 115)
283 #define MCIWNDM_REALIZE (WM_USER + 118)
284 #define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
285 #define MCIWNDM_PLAYFROM (WM_USER + 122)
286 #define MCIWNDM_PLAYTO (WM_USER + 123)
287 #define MCIWNDM_GETPALETTE (WM_USER + 126)
288 #define MCIWNDM_SETPALETTE (WM_USER + 127)
289 #define MCIWNDM_SETTIMERS (WM_USER + 129)
290 #define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
291 #define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
292 #define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
293 #define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
294 #define MCIWNDM_CHANGESTYLES (WM_USER + 135)
295 #define MCIWNDM_GETSTYLES (WM_USER + 136)
296 #define MCIWNDM_GETALIAS (WM_USER + 137)
297 #define MCIWNDM_PLAYREVERSE (WM_USER + 139)
298 #define MCIWNDM_GET_SOURCE (WM_USER + 140)
299 #define MCIWNDM_PUT_SOURCE (WM_USER + 141)
300 #define MCIWNDM_GET_DEST (WM_USER + 142)
301 #define MCIWNDM_PUT_DEST (WM_USER + 143)
302 #define MCIWNDM_CAN_PLAY (WM_USER + 144)
303 #define MCIWNDM_CAN_WINDOW (WM_USER + 145)
304 #define MCIWNDM_CAN_RECORD (WM_USER + 146)
305 #define MCIWNDM_CAN_SAVE (WM_USER + 147)
306 #define MCIWNDM_CAN_EJECT (WM_USER + 148)
307 #define MCIWNDM_CAN_CONFIG (WM_USER + 149)
308 #define MCIWNDM_PALETTEKICK (WM_USER + 150)
309 #define MCIWNDM_OPENINTERFACE (WM_USER + 151)
310 #define MCIWNDM_SETOWNER (WM_USER + 152)
311 #define MCIWNDM_SENDSTRINGA (WM_USER + 101)
312 #define MCIWNDM_GETPOSITIONA (WM_USER + 102)
313 #define MCIWNDM_GETMODEA (WM_USER + 106)
314 #define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
315 #define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
316 #define MCIWNDM_GETFILENAMEA (WM_USER + 124)
317 #define MCIWNDM_GETDEVICEA (WM_USER + 125)
318 #define MCIWNDM_GETERRORA (WM_USER + 128)
319 #define MCIWNDM_NEWA (WM_USER + 134)
320 #define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
321 #define MCIWNDM_OPENA (WM_USER + 153)
322 #define MCIWNDM_SENDSTRINGW (WM_USER + 201)
323 #define MCIWNDM_GETPOSITIONW (WM_USER + 202)
324 #define MCIWNDM_GETMODEW (WM_USER + 206)
325 #define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
326 #define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
327 #define MCIWNDM_GETFILENAMEW (WM_USER + 224)
328 #define MCIWNDM_GETDEVICEW (WM_USER + 225)
329 #define MCIWNDM_GETERRORW (WM_USER + 228)
330 #define MCIWNDM_NEWW (WM_USER + 234)
331 #define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
332 #define MCIWNDM_OPENW (WM_USER + 252)
333 #define MCIWNDM_NOTIFYMODE (WM_USER + 200)
334 #define MCIWNDM_NOTIFYPOS (WM_USER + 201)
335 #define MCIWNDM_NOTIFYSIZE (WM_USER + 202)
336 #define MCIWNDM_NOTIFYMEDIA (WM_USER + 203)
337 #define MCIWNDM_NOTIFYERROR (WM_USER + 205)
338 #define MCIWND_START -1
339 #define MCIWND_END -2
340 #define DDF_UPDATE 0x02
341 #define DDF_SAME_HDC 0x04
342 #define DDF_SAME_DRAW 0x08
343 #define DDF_DONTDRAW 0x10
344 #define DDF_ANIMATE 0x20
345 #define DDF_BUFFER 0x40
346 #define DDF_JUSTDRAWIT 0x80
347 #define DDF_FULLSCREEN 0x100
348 #define DDF_BACKGROUNDPAL 0x200
349 #define DDF_NOTKEYFRAME 0x400
350 #define DDF_HURRYUP 0x800
351 #define DDF_HALFTONE 0x1000
352 #define DDF_PREROLL DDF_DONTDRAW
353 #define DDF_SAME_DIB DDF_SAME_DRAW
354 #define DDF_SAME_SIZE DDF_SAME_DRAW
355 #define PD_CAN_DRAW_DIB 0x01
356 #define PD_CAN_STRETCHDIB 0x02
357 #define PD_STRETCHDIB_1_1_OK 0x04
358 #define PD_STRETCHDIB_1_2_OK 0x08
359 #define PD_STRETCHDIB_1_N_OK 0x10
361 #define mmioFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
364 #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0)|((WORD)(BYTE)(ch1)<<8))
369 DECLARE_HANDLE(HDRAWDIB
);
371 typedef BOOL (CALLBACK
*AVISAVECALLBACK
)(INT
);
385 LPBITMAPINFOHEADER lpbiOutput
;
387 LPBITMAPINFOHEADER lpbiInput
;
394 LPBITMAPINFOHEADER lpbiPrev
;
399 LPBITMAPINFOHEADER lpbiOutput
;
401 LPBITMAPINFOHEADER lpbiInput
;
410 DWORD dwOverheadPerFrame
;
412 LONG (CALLBACK
*GetData
)(LPARAM
,LONG
,LPVOID
,LONG
);
413 LONG (CALLBACK
*PutData
)(LPARAM
,LONG
,LPVOID
,LONG
);
418 LONG (CALLBACK
*Status
)(LPARAM
,UINT
,LONG
);
428 WCHAR szDescription
[128];
433 LPBITMAPINFOHEADER lpbiInput
;
435 LPBITMAPINFOHEADER lpbiOutput
;
441 LPBITMAPINFOHEADER lpbiSrc
;
443 LPBITMAPINFOHEADER lpbiDst
;
456 LPBITMAPINFOHEADER lpbiIn
;
457 LPBITMAPINFOHEADER lpbiSuggest
;
479 LPBITMAPINFOHEADER lpbi
;
501 LPBITMAPINFO lpbiOut
;
511 } COMPVARS
, *PCOMPVARS
;
512 typedef struct _MainAVIHeader
514 DWORD dwMicroSecPerFrame
;
515 DWORD dwMaxBytesPerSec
;
516 DWORD dwPaddingGranularity
;
519 DWORD dwInitialFrames
;
521 DWORD dwSuggestedBufferSize
;
532 DWORD dwInitialFrames
;
537 DWORD dwSuggestedBufferSize
;
542 typedef struct _AVIINDEXENTRY
{
548 typedef struct _AVIPALCHANGE
{
552 PALETTEENTRY peNew
[1];
554 typedef struct _AVISTREAMINFOA
{
565 DWORD dwInitialFrames
;
566 DWORD dwSuggestedBufferSize
;
571 DWORD dwFormatChangeCount
;
573 } AVISTREAMINFOA
, * LPAVISTREAMINFOA
, *PAVISTREAMINFOA
;
574 typedef struct _AVISTREAMINFOW
{
585 DWORD dwInitialFrames
;
586 DWORD dwSuggestedBufferSize
;
591 DWORD dwFormatChangeCount
;
593 } AVISTREAMINFOW
, * LPAVISTREAMINFOW
, *PAVISTREAMINFOW
;
594 typedef struct _AVIFILEINFOW
{
595 DWORD dwMaxBytesPerSec
;
599 DWORD dwSuggestedBufferSize
;
606 WCHAR szFileType
[64];
607 } AVIFILEINFOW
, *LPAVIFILEINFOW
, *PAVIFILEINFOW
;
608 typedef struct _AVIFILEINFOA
{
609 DWORD dwMaxBytesPerSec
;
613 DWORD dwSuggestedBufferSize
;
621 } AVIFILEINFOA
, *LPAVIFILEINFOA
, *PAVIFILEINFOA
;
622 typedef struct _AVICOMPRESSOPTIONS
{
625 DWORD dwKeyFrameEvery
;
627 DWORD dwBytesPerSecond
;
633 DWORD dwInterleaveEvery
;
634 } AVICOMPRESSOPTIONS
, *LPAVICOMPRESSOPTIONS
,*PAVICOMPRESSOPTIONS
;
636 #if !defined (__OBJC__)
637 #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
638 DEFINE_AVIGUID(IID_IAVIFile
,0x00020020,0,0);
639 DEFINE_AVIGUID(IID_IAVIStream
,0x00020021,0,0);
640 DEFINE_AVIGUID(IID_IAVIStreaming
,0x00020022,0,0);
641 DEFINE_AVIGUID(IID_IGetFrame
,0x00020023,0,0);
642 DEFINE_AVIGUID(IID_IAVIEditStream
,0x00020024,0,0);
643 DEFINE_AVIGUID(CLSID_AVIFile
,0x00020000,0,0);
645 #define INTERFACE IAVIStream
646 DECLARE_INTERFACE_(IAVIStream
, IUnknown
)
648 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
649 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
650 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
651 STDMETHOD(Create
)(THIS_ LPARAM
,LPARAM
) PURE
;
652 STDMETHOD(Info
)(THIS_ AVISTREAMINFOW
*,LONG
) PURE
;
653 STDMETHOD_(LONG
,FindSample
)(THIS_ LONG
,LONG
) PURE
;
654 STDMETHOD(ReadFormat
)(THIS_ LONG
,LPVOID
,LONG
*) PURE
;
655 STDMETHOD(SetFormat
)(THIS_ LONG
,LPVOID
,LONG
) PURE
;
656 STDMETHOD(Read
)(THIS_ LONG
,LONG
,LPVOID
,LONG
,LONG
*,LONG
*) PURE
;
657 STDMETHOD(Write
)(THIS_ LONG
,LONG
,LPVOID
,LONG
,DWORD
,LONG
*,LONG
*) PURE
;
658 STDMETHOD(Delete
)(THIS_ LONG
,LONG
) PURE
;
659 STDMETHOD(ReadData
)(THIS_ DWORD
,LPVOID
,LONG
*) PURE
;
660 STDMETHOD(WriteData
)(THIS_ DWORD
,LPVOID
,LONG
) PURE
;
661 STDMETHOD(SetInfo
)(THIS_ AVISTREAMINFOW
*,LONG
) PURE
;
663 typedef IAVIStream
*PAVISTREAM
;
665 #define INTERFACE IAVIStreaming
666 DECLARE_INTERFACE_(IAVIStreaming
, IUnknown
)
668 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
669 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
670 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
671 STDMETHOD(Begin
)(THIS_ LONG
,LONG
,LONG
) PURE
;
672 STDMETHOD(End
)(THIS
) PURE
;
675 typedef IAVIStreaming
*PAVISTREAMING
;
677 #define INTERFACE IAVIEditStream
678 DECLARE_INTERFACE_(IAVIEditStream
, IUnknown
)
680 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
681 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
682 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
683 STDMETHOD(Cut
)(THIS_ LONG
*,LONG
*,PAVISTREAM
*) PURE
;
684 STDMETHOD(Copy
)(THIS_ LONG
*,LONG
*,PAVISTREAM
*) PURE
;
685 STDMETHOD(Paste
)(THIS_ LONG
*,LONG
*,PAVISTREAM
,LONG
,LONG
) PURE
;
686 STDMETHOD(Clone
)(THIS_ PAVISTREAM
*) PURE
;
687 STDMETHOD(SetInfo
)(THIS_ LPAVISTREAMINFOW
,LONG
) PURE
;
689 typedef IAVIEditStream
*PAVIEDITSTREAM
;
691 #define INTERFACE IAVIFile
692 DECLARE_INTERFACE_(IAVIFile
, IUnknown
)
694 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
695 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
696 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
697 STDMETHOD(Info
)(THIS_ AVIFILEINFOW
*,LONG
) PURE
;
698 STDMETHOD(GetStream
)(THIS_ PAVISTREAM
*,DWORD
,LONG
) PURE
;
699 STDMETHOD(CreateStream
)(THIS_ PAVISTREAM
*,AVISTREAMINFOW
*) PURE
;
700 STDMETHOD(WriteData
)(THIS_ DWORD
,LPVOID
,LONG
) PURE
;
701 STDMETHOD(ReadData
)(THIS_ DWORD
,LPVOID
,LONG
*) PURE
;
702 STDMETHOD(EndRecord
)(THIS
) PURE
;
703 STDMETHOD(DeleteStream
)(THIS_ DWORD
,LONG
) PURE
;
706 typedef IAVIFile
*PAVIFILE
;
708 #define INTERFACE IGetFrame
709 DECLARE_INTERFACE_(IGetFrame
, IUnknown
)
711 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
712 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
713 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
714 STDMETHOD_(LPVOID
,GetFrame
)(THIS_ LONG
) PURE
;
715 STDMETHOD(Begin
)(THIS_ LONG
,LONG
,LONG
) PURE
;
716 STDMETHOD(End
)(THIS
) PURE
;
717 STDMETHOD(SetFormat
)(THIS_ LPBITMAPINFOHEADER
,LPVOID
,INT
,INT
,INT
,INT
) PURE
;
720 typedef IGetFrame
*PGETFRAME
;
721 #endif /* !defined (__OBJC__) */
723 DWORD VFWAPI
VideoForWindowsVersion(VOID
);
724 LONG VFWAPI
InitVFW(VOID
);
725 LONG VFWAPI
TermVFW(VOID
);
726 DWORD VFWAPIV
ICCompress(HIC
,DWORD
,LPBITMAPINFOHEADER
,LPVOID
,LPBITMAPINFOHEADER
,LPVOID
,LPDWORD
,LPDWORD
,LONG
,DWORD
,DWORD
,LPBITMAPINFOHEADER
,LPVOID
);
727 DWORD VFWAPIV
ICDecompress(HIC
,DWORD
,LPBITMAPINFOHEADER
,LPVOID
,LPBITMAPINFOHEADER
,LPVOID
);
728 LRESULT VFWAPI
ICSendMessage(HIC
,UINT
,DWORD
,DWORD
);
729 HANDLE VFWAPI
ICImageCompress(HIC
,UINT
,LPBITMAPINFO
,LPVOID
,LPBITMAPINFO
,LONG
,LONG
*);
730 HANDLE VFWAPI
ICImageDecompress(HIC
,UINT
,LPBITMAPINFO
,LPVOID
,LPBITMAPINFO
);
731 BOOL VFWAPI
ICInfo(DWORD
,DWORD
,ICINFO
*);
732 BOOL VFWAPI
ICInstall(DWORD
,DWORD
,LPARAM
,LPSTR
,UINT
);
733 BOOL VFWAPI
ICRemove(DWORD
,DWORD
,UINT
);
734 LRESULT VFWAPI
ICGetInfo(HIC
,ICINFO
*,DWORD
);
735 HIC VFWAPI
ICOpen(DWORD
,DWORD
,UINT
);
736 HIC VFWAPI
ICOpenFunction(DWORD
,DWORD
,UINT
,FARPROC
);
737 LRESULT VFWAPI
ICClose(HIC hic
);
738 HIC VFWAPI
ICLocate(DWORD
,DWORD
,LPBITMAPINFOHEADER
,LPBITMAPINFOHEADER
,WORD
);
739 HIC VFWAPI
ICGetDisplayFormat(HIC
,LPBITMAPINFOHEADER
,LPBITMAPINFOHEADER
,INT
,INT
,INT
);
740 DWORD VFWAPIV
ICDrawBegin(HIC
,DWORD
,HPALETTE
,HWND
,HDC
,INT
,INT
,INT
,INT
,LPBITMAPINFOHEADER
,INT
,INT
,INT
,INT
,DWORD
,DWORD
);
741 DWORD VFWAPIV
ICDraw(HIC
,DWORD
,LPVOID
,LPVOID
,DWORD
,LONG
);
742 BOOL VFWAPI
ICCompressorChoose(HWND
,UINT
,LPVOID
,LPVOID
,PCOMPVARS
,LPSTR
);
743 BOOL VFWAPI
ICSeqCompressFrameStart(PCOMPVARS
,LPBITMAPINFO
);
744 void VFWAPI
ICSeqCompressFrameEnd(PCOMPVARS
);
745 LPVOID VFWAPI
ICSeqCompressFrame(PCOMPVARS
,UINT
,LPVOID
,BOOL
*,LONG
*);
746 void VFWAPI
ICCompressorFree(PCOMPVARS
);
747 #if !defined (__OBJC__)
748 ULONG WINAPI
AVIStreamAddRef(PAVISTREAM
);
749 ULONG WINAPI
AVIStreamRelease(PAVISTREAM
);
750 HRESULT WINAPI
AVIStreamCreate(PAVISTREAM
*,LONG
,LONG
,CLSID
*);
751 HRESULT WINAPI
AVIStreamInfoA(PAVISTREAM
,AVISTREAMINFOA
*,LONG
);
752 HRESULT WINAPI
AVIStreamInfoW(PAVISTREAM
,AVISTREAMINFOW
*,LONG
);
753 HRESULT WINAPI
AVIStreamFindSample(PAVISTREAM
,LONG
,DWORD
);
754 HRESULT WINAPI
AVIStreamReadFormat(PAVISTREAM
,LONG
,LPVOID
,LONG
*);
755 HRESULT WINAPI
AVIStreamSetFormat(PAVISTREAM
,LONG
,LPVOID
,LONG
);
756 HRESULT WINAPI
AVIStreamRead(PAVISTREAM
,LONG
,LONG
,LPVOID
,LONG
,LONG
*,LONG
*);
757 HRESULT WINAPI
AVIStreamWrite(PAVISTREAM
,LONG
,LONG
,LPVOID
,LONG
,DWORD
,LONG
*,LONG
*);
758 HRESULT WINAPI
AVIStreamReadData(PAVISTREAM
,DWORD
,LPVOID
,LONG
*);
759 HRESULT WINAPI
AVIStreamWriteData(PAVISTREAM
,DWORD
,LPVOID
,LONG
);
760 PGETFRAME WINAPI
AVIStreamGetFrameOpen(PAVISTREAM
,LPBITMAPINFOHEADER
);
761 LPVOID WINAPI
AVIStreamGetFrame(PGETFRAME
,LONG
);
762 HRESULT WINAPI
AVIStreamGetFrameClose(PGETFRAME
);
763 HRESULT WINAPI
AVIMakeCompressedStream(PAVISTREAM
*,PAVISTREAM
,AVICOMPRESSOPTIONS
*,CLSID
*);
764 HRESULT WINAPI
AVIMakeFileFromStreams(PAVIFILE
*,INT
,PAVISTREAM
*);
765 HRESULT WINAPI
AVIStreamOpenFromFileA(PAVISTREAM
*,LPCSTR
,DWORD
,LONG
,UINT
,CLSID
*);
766 HRESULT WINAPI
AVIStreamOpenFromFileW(PAVISTREAM
*,LPCWSTR
,DWORD
,LONG
,UINT
,CLSID
*);
767 HRESULT WINAPI
AVIBuildFilterA(LPSTR
,LONG
,BOOL
);
768 HRESULT WINAPI
AVIBuildFilterW(LPWSTR
,LONG
,BOOL
);
769 BOOL WINAPI
AVISaveOptions(HWND
,UINT
,INT
,PAVISTREAM
*,LPAVICOMPRESSOPTIONS
*);
770 HRESULT WINAPI
AVISaveOptionsFree(INT
,LPAVICOMPRESSOPTIONS
*);
771 HRESULT WINAPI
AVISaveVA(LPCSTR
,CLSID
*,AVISAVECALLBACK
,INT
,PAVISTREAM
*,LPAVICOMPRESSOPTIONS
*);
772 HRESULT WINAPI
AVISaveVW(LPCWSTR
,CLSID
*,AVISAVECALLBACK
,INT
,PAVISTREAM
*,LPAVICOMPRESSOPTIONS
*);
773 LONG WINAPI
AVIStreamStart(PAVISTREAM
);
774 LONG WINAPI
AVIStreamLength(PAVISTREAM
);
775 LONG WINAPI
AVIStreamSampleToTime(PAVISTREAM
,LONG
);
776 LONG WINAPI
AVIStreamTimeToSample(PAVISTREAM
,LONG
);
777 HRESULT WINAPI
CreateEditableStream(PAVISTREAM
*,PAVISTREAM
);
778 HRESULT WINAPI
EditStreamClone(PAVISTREAM
,PAVISTREAM
*);
779 HRESULT WINAPI
EditStreamCopy(PAVISTREAM
,LONG
*,LONG
*,PAVISTREAM
*);
780 HRESULT WINAPI
EditStreamCut(PAVISTREAM
,LONG
*,LONG
*,PAVISTREAM
*);
781 HRESULT WINAPI
EditStreamPaste(PAVISTREAM
,LONG
*,LONG
*,PAVISTREAM
,LONG
,LONG
);
782 HRESULT WINAPI
EditStreamSetInfoA(PAVISTREAM
,LPAVISTREAMINFOA
,LONG
);
783 HRESULT WINAPI
EditStreamSetInfoW(PAVISTREAM
,LPAVISTREAMINFOW
,LONG
);
784 HRESULT WINAPI
EditStreamSetNameA(PAVISTREAM
,LPCSTR
);
785 HRESULT WINAPI
EditStreamSetNameW(PAVISTREAM
,LPCWSTR
);
786 HRESULT WINAPI
CreateEditableStream(PAVISTREAM
*,PAVISTREAM
);
787 HRESULT WINAPI
EditStreamClone(PAVISTREAM
,PAVISTREAM
*);
788 HRESULT WINAPI
EditStreamCopy(PAVISTREAM
,LONG
*,LONG
*,PAVISTREAM
*);
789 HRESULT WINAPI
EditStreamCut(PAVISTREAM
,LONG
*,LONG
*,PAVISTREAM
*);
790 HRESULT WINAPI
EditStreamPaste(PAVISTREAM
,LONG
*,LONG
*,PAVISTREAM
,LONG
,LONG
);
791 HRESULT WINAPI
EditStreamSetInfoA(PAVISTREAM
,LPAVISTREAMINFOA
,LONG
);
792 HRESULT WINAPI
EditStreamSetInfoW(PAVISTREAM
,LPAVISTREAMINFOW
,LONG
);
793 HRESULT WINAPI
EditStreamSetNameA(PAVISTREAM
,LPCSTR
);
794 HRESULT WINAPI
EditStreamSetNameW(PAVISTREAM
,LPCWSTR
);
795 VOID WINAPI
AVIFileInit(void);
796 VOID WINAPI
AVIFileExit(void);
797 HRESULT WINAPI
AVIFileOpenA(PAVIFILE
*,LPCSTR
,UINT
,LPCLSID
);
798 HRESULT WINAPI
AVIFileOpenW(PAVIFILE
*,LPCWSTR
,UINT
,LPCLSID
);
799 ULONG WINAPI
AVIFileAddRef(PAVIFILE
);
800 ULONG WINAPI
AVIFileRelease(PAVIFILE
);
801 HRESULT WINAPI
AVIFileInfoA(PAVIFILE
,PAVIFILEINFOA
,LONG
);
802 HRESULT WINAPI
AVIFileInfoW(PAVIFILE
,PAVIFILEINFOW
,LONG
);
803 HRESULT WINAPI
AVIFileGetStream(PAVIFILE
,PAVISTREAM
*,DWORD
,LONG
);
804 HRESULT WINAPI
AVIFileCreateStreamA(PAVIFILE
,PAVISTREAM
*,AVISTREAMINFOA
*);
805 HRESULT WINAPI
AVIFileCreateStreamW(PAVIFILE
,PAVISTREAM
*,AVISTREAMINFOW
*);
806 HRESULT WINAPI
AVIFileWriteData(PAVIFILE
,DWORD
,LPVOID
,LONG
);
807 HRESULT WINAPI
AVIFileReadData(PAVIFILE
,DWORD
,LPVOID
,LPLONG
);
808 HRESULT WINAPI
AVIFileEndRecord(PAVIFILE
);
809 HRESULT WINAPI
AVIClearClipboard(VOID
);
810 HRESULT WINAPI
AVIGetFromClipboard(PAVIFILE
*);
811 HRESULT WINAPI
AVIPutFileOnClipboard(PAVIFILE
);
812 #endif /* __OBJC__ */
814 BOOL WINAPI
GetOpenFileNamePreviewA(LPOPENFILENAMEA
);
815 BOOL WINAPI
GetOpenFileNamePreviewW(LPOPENFILENAMEW
);
816 BOOL WINAPI
GetSaveFileNamePreviewA(LPOPENFILENAMEA
);
817 BOOL WINAPI
GetSaveFileNamePreviewW(LPOPENFILENAMEW
);
819 HWND VFWAPIV
MCIWndCreateA(HWND
,HINSTANCE
,DWORD
,LPCSTR
);
820 HWND VFWAPIV
MCIWndCreateW(HWND
,HINSTANCE
,DWORD
,LPCWSTR
);
821 HDRAWDIB VFWAPI
DrawDibOpen(VOID
);
822 UINT VFWAPI
DrawDibRealize(HDRAWDIB
,HDC
,BOOL
);
823 BOOL VFWAPI
DrawDibBegin(HDRAWDIB
,HDC
,INT
,INT
,LPBITMAPINFOHEADER
,INT
,INT
,UINT
);
824 BOOL VFWAPI
DrawDibDraw(HDRAWDIB
,HDC
,INT
,INT
,INT
,INT
,LPBITMAPINFOHEADER
,LPVOID
,INT
,INT
,INT
,INT
,UINT
);
825 BOOL VFWAPI
DrawDibSetPalette(HDRAWDIB
,HPALETTE
);
826 HPALETTE VFWAPI
DrawDibGetPalette(HDRAWDIB
);
827 BOOL VFWAPI
DrawDibChangePalette(HDRAWDIB
,int,int,LPPALETTEENTRY
);
828 LPVOID VFWAPI
DrawDibGetBuffer(HDRAWDIB
,LPBITMAPINFOHEADER
,DWORD
,DWORD
);
829 BOOL VFWAPI
DrawDibStart(HDRAWDIB
,DWORD
);
830 BOOL VFWAPI
DrawDibStop(HDRAWDIB
);
831 BOOL VFWAPI
DrawDibEnd(HDRAWDIB
);
832 BOOL VFWAPI
DrawDibClose(HDRAWDIB
);
833 DWORD VFWAPI
DrawDibProfileDisplay(LPBITMAPINFOHEADER
);
835 #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
836 #define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
837 #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
838 #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
839 #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
840 #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0)
841 #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
842 #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD)(hwnd),0)
843 #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
844 #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(hwnd),0)
845 #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
846 #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
847 #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) (LONG)ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
848 #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic, lpbi, NULL)
849 #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
850 #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD)(lpbiPalette),0)
851 #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0)
852 #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0)
853 #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
854 #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
855 #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD)(pv),(DWORD)(cb))
856 #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD)(pv),(DWORD)(cb))
857 #define ICGetStateSize(hic) ICGetState(hic,NULL,0)
858 #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD)(prc),sizeof(RECT))
859 #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD)(lpbiInput),0)
860 #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD)(lpbiInput),0)
861 #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD)(lpdwBuffers),0)
862 #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0)
863 #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0)
864 #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD)(lFrom),(DWORD)(lTo))
865 #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0)
866 #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0)
867 #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD)(lplTime),0)
868 #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD)lTime,0)
869 #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD)(hdc),(DWORD)(fBackground))
870 #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0)
871 #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0)
872 #define AVIFileClose(pavi) AVIFileRelease(pavi)
873 #define AVIStreamClose(pavi) AVIStreamRelease(pavi);
874 #define AVIStreamEnd(pavi) (AVIStreamStart(pavi)+AVIStreamLength(pavi))
875 #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
876 #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
877 #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
878 #define AVIStreamSampleSize(pavi,pos,psize) AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
879 #define AVIStreamSampleToSample(pavi1,pavi2,samp2) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,samp2))
880 #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
881 #define AVIStreamNextSample(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_ANY)
882 #define AVIStreamPrevSample(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_PREV|FIND_ANY)
883 #define AVIStreamNearestSample(pavi, pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_ANY)
884 #define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_KEY)
885 #define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_NEXT|FIND_KEY)
886 #define AVIStreamNearestKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_KEY)
887 #define AVIStreamIsKeyFrame(pavi, pos) (AVIStreamNearestKeyFrame(pavi,pos) == pos)
889 #define MCIWndSM ::SendMessage
891 #define MCIWndSM SendMessage
893 #define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
894 #define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
895 #define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
896 #define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
897 #define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
898 #define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
899 #define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
900 #define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
901 #define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
902 #define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
903 #define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
904 #define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
905 #define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
906 #define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
907 #define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
908 #define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
909 #define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
910 #define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
911 #define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
912 #define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
913 #define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
914 #define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
915 #define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
916 #define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
917 #define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
918 #define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
919 #define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
920 #define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
921 #define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO, 0,(LPARAM)(LONG)(lPos))
922 #define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
923 #define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
924 #define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
925 #define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
926 #define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
927 #define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
928 #define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
929 #define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
930 #define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
931 #define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n))
932 #define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
933 #define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
934 #define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
935 #define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
936 #define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
937 #define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
938 #define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
939 #define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
940 #define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
941 #define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
942 #define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
943 #define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
944 #define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
945 #define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
946 #define MCIWndSetActiveTimer(hWnd,active) (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L)
947 #define MCIWndSetInactiveTimer(hWnd,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L)
948 #define MCIWndSetTimers(hWnd,active,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
949 #define MCIWndGetActiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
950 #define MCIWndGetInactiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
951 #define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
952 #define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
953 #define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
954 #define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
955 #define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
956 #define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
957 #define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
958 #define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
959 #define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
960 #define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
961 #define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
962 #define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
963 #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
964 static __inline DWORD
965 ICGetDefaultQuality(HIC hic
)
968 ICSendMessage(hic
, ICM_GETDEFAULTQUALITY
, (DWORD
)(LPVOID
)&dwICValue
, sizeof(DWORD
));
971 static __inline DWORD
972 ICGetDefaultKeyFrameRate(HIC hic
)
975 ICSendMessage(hic
, ICM_GETDEFAULTKEYFRAMERATE
, (DWORD
)(LPVOID
)&dwICValue
, sizeof(DWORD
));
978 static __inline LRESULT
979 ICDrawSuggestFormat(HIC hic
,LPBITMAPINFOHEADER lpbiIn
,LPBITMAPINFOHEADER lpbiOut
,INT dxSrc
,INT dySrc
,INT dxDst
,INT dyDst
,HIC hicDecomp
)
983 ic
.lpbiSuggest
= lpbiOut
;
988 ic
.hicDecompressor
= hicDecomp
;
989 return ICSendMessage(hic
,ICM_DRAW_SUGGESTFORMAT
,(DWORD
)&ic
,sizeof(ic
));
991 static __inline LRESULT
992 ICSetStatusProc(HIC hic
,DWORD dwFlags
,LRESULT lParam
,LONG (CALLBACK
*fpfnStatus
)(LPARAM
,UINT
,LONG
))
995 ic
.dwFlags
= dwFlags
;
997 ic
.Status
= fpfnStatus
;
998 return ICSendMessage(hic
,ICM_SET_STATUS_PROC
,(DWORD
)&ic
,sizeof(ic
));
1000 static __inline LRESULT
1001 ICDecompressEx(HIC hic
,DWORD dwFlags
,LPBITMAPINFOHEADER lpbiSrc
,LPVOID lpSrc
,INT xSrc
,INT ySrc
,INT dxSrc
,INT dySrc
,LPBITMAPINFOHEADER lpbiDst
,LPVOID lpDst
,INT xDst
,INT yDst
,INT dxDst
,INT dyDst
)
1004 ic
.dwFlags
= dwFlags
;
1005 ic
.lpbiSrc
= lpbiSrc
;
1011 ic
.lpbiDst
= lpbiDst
;
1017 return ICSendMessage(hic
,ICM_DECOMPRESSEX
,(DWORD
)&ic
,sizeof(ic
));
1019 static __inline LRESULT
1020 ICDecompressExBegin(HIC hic
,DWORD dwFlags
,LPBITMAPINFOHEADER lpbiSrc
,LPVOID lpSrc
,INT xSrc
,INT ySrc
,INT dxSrc
,INT dySrc
,LPBITMAPINFOHEADER lpbiDst
,LPVOID lpDst
,INT xDst
,INT yDst
,INT dxDst
,INT dyDst
)
1023 ic
.dwFlags
= dwFlags
;
1024 ic
.lpbiSrc
= lpbiSrc
;
1030 ic
.lpbiDst
= lpbiDst
;
1036 return ICSendMessage(hic
,ICM_DECOMPRESSEX_BEGIN
,(DWORD
)&ic
,sizeof(ic
));
1038 static __inline LRESULT
1039 ICDecompressExQuery(HIC hic
,DWORD dwFlags
,LPBITMAPINFOHEADER lpbiSrc
,LPVOID lpSrc
,INT xSrc
,INT ySrc
,INT dxSrc
,INT dySrc
,LPBITMAPINFOHEADER lpbiDst
,LPVOID lpDst
,INT xDst
,INT yDst
,INT dxDst
,INT dyDst
)
1042 ic
.dwFlags
= dwFlags
;
1043 ic
.lpbiSrc
= lpbiSrc
;
1049 ic
.lpbiDst
= lpbiDst
;
1055 return ICSendMessage(hic
,ICM_DECOMPRESSEX_QUERY
,(DWORD
)&ic
,sizeof(ic
));
1059 #define AVISTREAMINFO AVISTREAMINFOW
1060 #define LPAVISTREAMINFO LPAVISTREAMINFOW
1061 #define PAVISTREAMINFO PAVISTREAMINFOW
1062 #define AVIFILEINFO AVIFILEINFOW
1063 #define PAVIFILEINFO PAVIFILEINFOW
1064 #define LPAVIFILEINFO LPAVIFILEINFOW
1065 #define AVIStreamInfo AVIStreamInfoW
1066 #define AVIStreamOpenFromFile AVIStreamOpenFromFileW
1067 #define AVIBuildFilter AVIBuildFilterW
1068 #define AVISaveV AVISaveVW
1069 #define EditStreamSetInfo EditStreamSetInfoW
1070 #define EditStreamSetName EditStreamSetNameW
1071 #define AVIFileOpen AVIFileOpenW
1072 #define AVIFileInfo AVIFileInfoW
1073 #define AVIFileCreateStream AVIFileCreateStreamW
1074 #define GetOpenFileNamePreview GetOpenFileNamePreviewW
1075 #define GetSaveFileNamePreview GetSaveFileNamePreviewW
1076 #define MCIWndCreate MCIWndCreateW
1077 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
1078 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
1079 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
1080 #define MCIWNDM_GETMODE MCIWNDM_GETMODEW
1081 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
1082 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
1083 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
1084 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
1085 #define MCIWNDM_GETERROR MCIWNDM_GETERRORW
1086 #define MCIWNDM_NEW MCIWNDM_NEWW
1087 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
1088 #define MCIWNDM_OPEN MCIWNDM_OPENW
1090 #define AVISTREAMINFO AVISTREAMINFOA
1091 #define LPAVISTREAMINFO LPAVISTREAMINFOA
1092 #define PAVISTREAMINFO PAVISTREAMINFOA
1093 #define AVIFILEINFO AVIFILEINFOA
1094 #define PAVIFILEINFO PAVIFILEINFOA
1095 #define LPAVIFILEINFO LPAVIFILEINFOA
1096 #define AVIStreamInfo AVIStreamInfoA
1097 #define AVIStreamOpenFromFile AVIStreamOpenFromFileA
1098 #define AVIBuildFilter AVIBuildFilterA
1099 #define AVISaveV AVISaveVA
1100 #define EditStreamSetInfo EditStreamSetInfoA
1101 #define EditStreamSetName EditStreamSetNameA
1102 #define AVIFileOpen AVIFileOpenA
1103 #define AVIFileInfo AVIFileInfoA
1104 #define AVIFileCreateStream AVIFileCreateStreamA
1105 #define GetOpenFileNamePreview GetOpenFileNamePreviewA
1106 #define GetSaveFileNamePreview GetSaveFileNamePreviewA
1107 #define MCIWndCreate MCIWndCreateA
1108 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
1109 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
1110 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
1111 #define MCIWNDM_GETMODE MCIWNDM_GETMODEA
1112 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
1113 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
1114 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
1115 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
1116 #define MCIWNDM_GETERROR MCIWNDM_GETERRORA
1117 #define MCIWNDM_NEW MCIWNDM_NEWA
1118 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
1119 #define MCIWNDM_OPEN MCIWNDM_OPENA
1122 #endif /* RC_INVOKED */
1127 #include <poppack.h>