Mercurial > mplayer.hg
annotate loader/wine/vfw.h @ 29672:bc094de7968e
Sync with current FFmpeg HEAD.
author | diego |
---|---|
date | Thu, 24 Sep 2009 10:09:14 +0000 |
parents | 0f1b5b68af32 |
children | 837cd9762b4e |
rev | line source |
---|---|
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
13182
diff
changeset
|
1 /* |
18783 | 2 * Modified for use with MPlayer, detailed changelog at |
3 * http://svn.mplayerhq.hu/mplayer/trunk/ | |
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
13182
diff
changeset
|
4 */ |
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
13182
diff
changeset
|
5 |
26045 | 6 #ifndef MPLAYER_VFW_H |
7 #define MPLAYER_VFW_H | |
1 | 8 //#include "pshpack1.h" |
9 #ifdef __cplusplus | |
10 extern "C" { | |
11 #endif | |
12 | |
3131 | 13 typedef struct __attribute__((__packed__)) |
1 | 14 { |
15 short bfType; | |
16 long bfSize; | |
17 short bfReserved1; | |
18 short bfReserved2; | |
19 long bfOffBits; | |
20 } BITMAPFILEHEADER; | |
21 | |
26109
e53dac3c60ee
Revert fixing illegal identifiers to fix compilation on MinGW. Unfortunately
diego
parents:
26106
diff
changeset
|
22 #ifndef _BITMAPINFOHEADER_ |
e53dac3c60ee
Revert fixing illegal identifiers to fix compilation on MinGW. Unfortunately
diego
parents:
26106
diff
changeset
|
23 #define _BITMAPINFOHEADER_ |
3131 | 24 typedef struct __attribute__((__packed__)) |
1 | 25 { |
13182 | 26 long biSize; |
27 long biWidth; | |
28 long biHeight; | |
1 | 29 short biPlanes; |
30 short biBitCount; | |
13182 | 31 long biCompression; |
32 long biSizeImage; | |
33 long biXPelsPerMeter; | |
34 long biYPelsPerMeter; | |
35 long biClrUsed; | |
36 long biClrImportant; | |
1 | 37 } BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER; |
38 typedef struct { | |
39 BITMAPINFOHEADER bmiHeader; | |
40 int bmiColors[1]; | |
41 } BITMAPINFO, *LPBITMAPINFO; | |
42 #endif | |
128 | 43 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
44 #define VFWAPI |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
45 #define VFWAPIV |
26045 | 46 #ifndef MPLAYER_WINDEF_H |
1 | 47 typedef long (__stdcall__ *DRIVERPROC)(long,HDRVR,unsigned int,long,long); |
48 #endif | |
49 | |
50 | |
51 | |
52 #ifndef mmioFOURCC | |
53 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \ | |
54 ( (long)(unsigned char)(ch0) | ( (long)(unsigned char)(ch1) << 8 ) | \ | |
55 ( (long)(unsigned char)(ch2) << 16 ) | ( (long)(unsigned char)(ch3) << 24 ) ) | |
56 #endif | |
57 | |
58 #ifndef aviTWOCC | |
59 #define aviTWOCC(ch0, ch1) ((short)(unsigned char)(ch0) | ((short)(unsigned char)(ch1) << 8)) | |
60 #endif | |
61 | |
62 #define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c') | |
63 #define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c') | |
64 | |
65 | |
66 /* Installable Compressor M? */ | |
67 | |
68 /* HIC struct (same layout as Win95 one) */ | |
69 typedef struct tagWINE_HIC { | |
70 long magic; /* 00: 'Smag' */ | |
71 HANDLE curthread; /* 04: */ | |
72 long type; /* 08: */ | |
73 long handler; /* 0C: */ | |
74 HDRVR hdrv; /* 10: */ | |
7386 | 75 long driverid; /* 14:(handled by SendDriverMessage)*/ |
1 | 76 DRIVERPROC driverproc; /* 18:(handled by SendDriverMessage)*/ |
77 long x1; /* 1c: name? */ | |
78 short x2; /* 20: */ | |
79 long x3; /* 22: */ | |
80 /* 26: */ | |
81 } WINE_HIC; | |
82 | |
83 /* error return codes */ | |
84 #define ICERR_OK 0 | |
85 #define ICERR_DONTDRAW 1 | |
86 #define ICERR_NEWPALETTE 2 | |
87 #define ICERR_GOTOKEYFRAME 3 | |
88 #define ICERR_STOPDRAWING 4 | |
89 | |
90 #define ICERR_UNSUPPORTED -1 | |
91 #define ICERR_BADFORMAT -2 | |
92 #define ICERR_MEMORY -3 | |
93 #define ICERR_INTERNAL -4 | |
94 #define ICERR_BADFLAGS -5 | |
95 #define ICERR_BADPARAM -6 | |
96 #define ICERR_BADSIZE -7 | |
97 #define ICERR_BADHANDLE -8 | |
98 #define ICERR_CANTUPDATE -9 | |
99 #define ICERR_ABORT -10 | |
100 #define ICERR_ERROR -100 | |
101 #define ICERR_BADBITDEPTH -200 | |
102 #define ICERR_BADIMAGESIZE -201 | |
103 | |
104 #define ICERR_CUSTOM -400 | |
105 | |
106 /* ICM Messages */ | |
107 #define ICM_USER (DRV_USER+0x0000) | |
108 | |
109 /* ICM driver message range */ | |
110 #define ICM_RESERVED_LOW (DRV_USER+0x1000) | |
111 #define ICM_RESERVED_HIGH (DRV_USER+0x2000) | |
112 #define ICM_RESERVED ICM_RESERVED_LOW | |
113 | |
114 #define ICM_GETSTATE (ICM_RESERVED+0) | |
115 #define ICM_SETSTATE (ICM_RESERVED+1) | |
116 #define ICM_GETINFO (ICM_RESERVED+2) | |
117 | |
118 #define ICM_CONFIGURE (ICM_RESERVED+10) | |
119 #define ICM_ABOUT (ICM_RESERVED+11) | |
120 /* */ | |
121 | |
122 #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30) | |
123 #define ICM_GETQUALITY (ICM_RESERVED+31) | |
124 #define ICM_SETQUALITY (ICM_RESERVED+32) | |
125 | |
126 #define ICM_SET (ICM_RESERVED+40) | |
127 #define ICM_GET (ICM_RESERVED+41) | |
128 | |
129 /* 2 constant FOURCC codes */ | |
130 #define ICM_FRAMERATE mmioFOURCC('F','r','m','R') | |
131 #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R') | |
132 | |
133 #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4) | |
134 #define ICM_COMPRESS_GET_SIZE (ICM_USER+5) | |
135 #define ICM_COMPRESS_QUERY (ICM_USER+6) | |
136 #define ICM_COMPRESS_BEGIN (ICM_USER+7) | |
137 #define ICM_COMPRESS (ICM_USER+8) | |
138 #define ICM_COMPRESS_END (ICM_USER+9) | |
139 | |
140 #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10) | |
141 #define ICM_DECOMPRESS_QUERY (ICM_USER+11) | |
142 #define ICM_DECOMPRESS_BEGIN (ICM_USER+12) | |
143 #define ICM_DECOMPRESS (ICM_USER+13) | |
144 #define ICM_DECOMPRESS_END (ICM_USER+14) | |
145 #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29) | |
146 #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30) | |
147 | |
148 #define ICM_DRAW_QUERY (ICM_USER+31) | |
149 #define ICM_DRAW_BEGIN (ICM_USER+15) | |
150 #define ICM_DRAW_GET_PALETTE (ICM_USER+16) | |
151 #define ICM_DRAW_START (ICM_USER+18) | |
152 #define ICM_DRAW_STOP (ICM_USER+19) | |
153 #define ICM_DRAW_END (ICM_USER+21) | |
154 #define ICM_DRAW_GETTIME (ICM_USER+32) | |
155 #define ICM_DRAW (ICM_USER+33) | |
156 #define ICM_DRAW_WINDOW (ICM_USER+34) | |
157 #define ICM_DRAW_SETTIME (ICM_USER+35) | |
158 #define ICM_DRAW_REALIZE (ICM_USER+36) | |
159 #define ICM_DRAW_FLUSH (ICM_USER+37) | |
160 #define ICM_DRAW_RENDERBUFFER (ICM_USER+38) | |
161 | |
162 #define ICM_DRAW_START_PLAY (ICM_USER+39) | |
163 #define ICM_DRAW_STOP_PLAY (ICM_USER+40) | |
164 | |
165 #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50) | |
166 #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51) | |
167 | |
168 #define ICM_GETBUFFERSWANTED (ICM_USER+41) | |
169 | |
170 #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42) | |
171 | |
172 #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60) | |
173 #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61) | |
174 #define ICM_DECOMPRESSEX (ICM_USER+62) | |
175 #define ICM_DECOMPRESSEX_END (ICM_USER+63) | |
176 | |
177 #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70) | |
178 #define ICM_SET_STATUS_PROC (ICM_USER+72) | |
179 | |
180 /* structs */ | |
181 | |
182 typedef struct { | |
183 long dwSize; /* 00: size */ | |
184 long fccType; /* 04: type 'vidc' usually */ | |
185 long fccHandler; /* 08: */ | |
186 long dwVersion; /* 0c: version of compman opening you */ | |
187 long dwFlags; /* 10: LOshort is type specific */ | |
188 LRESULT dwError; /* 14: */ | |
189 void* pV1Reserved; /* 18: */ | |
190 void* pV2Reserved; /* 1c: */ | |
191 long dnDevNode; /* 20: */ | |
192 /* 24: */ | |
193 } ICOPEN,*LPICOPEN; | |
194 | |
195 #define ICCOMPRESS_KEYFRAME 0x00000001L | |
196 | |
197 typedef struct { | |
198 long dwFlags; | |
199 LPBITMAPINFOHEADER lpbiOutput; | |
200 void* lpOutput; | |
201 LPBITMAPINFOHEADER lpbiInput; | |
7386 | 202 const void* lpInput; |
1 | 203 long* lpckid; |
204 long* lpdwFlags; | |
205 long lFrameNum; | |
206 long dwFrameSize; | |
207 long dwQuality; | |
208 LPBITMAPINFOHEADER lpbiPrev; | |
209 void* lpPrev; | |
210 } ICCOMPRESS; | |
211 | |
212 long VFWAPIV ICCompress( | |
7386 | 213 HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiOutput,void* lpData, |
214 LPBITMAPINFOHEADER lpbiInput,void* lpBits,long* lpckid, | |
1 | 215 long* lpdwFlags,long lFrameNum,long dwFrameSize,long dwQuality, |
7386 | 216 LPBITMAPINFOHEADER lpbiPrev,void* lpPrev |
1 | 217 ); |
218 | |
219 | |
220 #define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \ | |
221 ICSendMessage( \ | |
222 hic,ICM_COMPRESS_GET_FORMAT,(long)(void*)(lpbiInput), \ | |
223 (long)(void*)(lpbiOutput) \ | |
224 ) | |
225 | |
226 #define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL) | |
227 | |
228 #define ICGetDefaultKeyFrameRate(hic,lpint) \ | |
229 ICSendMessage( \ | |
230 hic, ICM_GETDEFAULTKEYFRAMERATE, \ | |
231 (long)(void*)(lpint), \ | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
232 0 ) |
1 | 233 |
234 #define ICGetDefaultQuality(hic,lpint) \ | |
235 ICSendMessage( \ | |
236 hic, ICM_GETDEFAULTQUALITY, \ | |
237 (long)(void*)(lpint), \ | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
238 0 ) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
239 |
1 | 240 |
241 #define ICCompressBegin(hic, lpbiInput, lpbiOutput) \ | |
242 ICSendMessage( \ | |
243 hic, ICM_COMPRESS_BEGIN, (long)(void*)(lpbiInput), \ | |
244 (long)(void*)(lpbiOutput) \ | |
245 ) | |
246 | |
247 #define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \ | |
248 ICSendMessage( \ | |
249 hic, ICM_COMPRESS_GET_SIZE, (long)(void*)(lpbiInput), \ | |
250 (long)(void*)(lpbiOutput) \ | |
251 ) | |
252 | |
253 #define ICCompressQuery(hic, lpbiInput, lpbiOutput) \ | |
254 ICSendMessage( \ | |
255 hic, ICM_COMPRESS_QUERY, (long)(void*)(lpbiInput), \ | |
256 (long)(void*)(lpbiOutput) \ | |
257 ) | |
258 | |
259 | |
260 #define ICCompressEnd(hic) ICSendMessage(hic, ICM_COMPRESS_END, 0, 0) | |
261 | |
262 /* ICCOMPRESSFRAMES.dwFlags */ | |
263 #define ICCOMPRESSFRAMES_PADDING 0x00000001 | |
264 typedef struct { | |
265 long dwFlags; | |
266 LPBITMAPINFOHEADER lpbiOutput; | |
267 LPARAM lOutput; | |
268 LPBITMAPINFOHEADER lpbiInput; | |
269 LPARAM lInput; | |
270 long lStartFrame; | |
271 long lFrameCount; | |
272 long lQuality; | |
273 long lDataRate; | |
274 long lKeyRate; | |
275 long dwRate; | |
276 long dwScale; | |
277 long dwOverheadPerFrame; | |
278 long dwReserved2; | |
279 long CALLBACK (*GetData)(LPARAM lInput,long lFrame,void* lpBits,long len); | |
280 long CALLBACK (*PutData)(LPARAM lOutput,long lFrame,void* lpBits,long len); | |
281 } ICCOMPRESSFRAMES; | |
282 | |
283 /* Values for wMode of ICOpen() */ | |
284 #define ICMODE_COMPRESS 1 | |
285 #define ICMODE_DECOMPRESS 2 | |
286 #define ICMODE_FASTDECOMPRESS 3 | |
287 #define ICMODE_QUERY 4 | |
288 #define ICMODE_FASTCOMPRESS 5 | |
289 #define ICMODE_DRAW 8 | |
290 | |
291 /* quality flags */ | |
292 #define ICQUALITY_LOW 0 | |
293 #define ICQUALITY_HIGH 10000 | |
294 #define ICQUALITY_DEFAULT -1 | |
295 | |
296 typedef struct { | |
297 long dwSize; /* 00: */ | |
298 long fccType; /* 04:compressor type 'vidc' 'audc' */ | |
299 long fccHandler; /* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/ | |
300 long dwFlags; /* 0c:flags LOshort is type specific */ | |
301 long dwVersion; /* 10:version of the driver */ | |
302 long dwVersionICM; /* 14:version of the ICM used */ | |
303 /* | |
304 * under Win32, the driver always returns UNICODE strings. | |
305 */ | |
306 WCHAR szName[16]; /* 18:short name */ | |
307 WCHAR szDescription[128]; /* 38:long name */ | |
308 WCHAR szDriver[128]; /* 138:driver that contains compressor*/ | |
309 /* 238: */ | |
310 } ICINFO; | |
311 | |
312 /* ICINFO.dwFlags */ | |
313 #define VIDCF_QUALITY 0x0001 /* supports quality */ | |
314 #define VIDCF_CRUNCH 0x0002 /* supports crunching to a frame size */ | |
315 #define VIDCF_TEMPORAL 0x0004 /* supports inter-frame compress */ | |
316 #define VIDCF_COMPRESSFRAMES 0x0008 /* wants the compress all frames message */ | |
317 #define VIDCF_DRAW 0x0010 /* supports drawing */ | |
318 #define VIDCF_FASTTEMPORALC 0x0020 /* does not need prev frame on compress */ | |
319 #define VIDCF_FASTTEMPORALD 0x0080 /* does not need prev frame on decompress */ | |
320 #define VIDCF_QUALITYTIME 0x0040 /* supports temporal quality */ | |
321 | |
322 #define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD) | |
323 | |
324 | |
325 /* function shortcuts */ | |
326 /* ICM_ABOUT */ | |
327 #define ICMF_ABOUT_QUERY 0x00000001 | |
328 | |
329 #define ICQueryAbout(hic) \ | |
330 (ICSendMessage(hic,ICM_ABOUT,(long)-1,ICMF_ABOUT_QUERY)==ICERR_OK) | |
331 | |
332 #define ICAbout(hic, hwnd) ICSendMessage(hic,ICM_ABOUT,(long)(unsigned int)(hwnd),0) | |
333 | |
334 /* ICM_CONFIGURE */ | |
335 #define ICMF_CONFIGURE_QUERY 0x00000001 | |
336 #define ICQueryConfigure(hic) \ | |
337 (ICSendMessage(hic,ICM_CONFIGURE,(long)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK) | |
338 | |
339 #define ICConfigure(hic,hwnd) \ | |
340 ICSendMessage(hic,ICM_CONFIGURE,(long)(unsigned int)(hwnd),0) | |
341 | |
342 /* Decompression stuff */ | |
343 #define ICDECOMPRESS_HURRYUP 0x80000000 /* don't draw just buffer (hurry up!) */ | |
344 #define ICDECOMPRESS_UPDATE 0x40000000 /* don't draw just update screen */ | |
345 #define ICDECOMPRESS_PREROL 0x20000000 /* this frame is before real start */ | |
346 #define ICDECOMPRESS_NULLFRAME 0x10000000 /* repeat last frame */ | |
347 #define ICDECOMPRESS_NOTKEYFRAME 0x08000000 /* this frame is not a key frame */ | |
348 | |
349 typedef struct { | |
350 long dwFlags; /* flags (from AVI index...) */ | |
351 LPBITMAPINFOHEADER lpbiInput; /* BITMAPINFO of compressed data */ | |
7386 | 352 const void* lpInput; /* compressed data */ |
1 | 353 LPBITMAPINFOHEADER lpbiOutput; /* DIB to decompress to */ |
354 void* lpOutput; | |
355 long ckid; /* ckid from AVI file */ | |
356 } ICDECOMPRESS; | |
357 | |
358 typedef struct { | |
359 long dwFlags; | |
7386 | 360 LPBITMAPINFOHEADER lpbiSrc; |
361 const void* lpSrc; | |
1 | 362 LPBITMAPINFOHEADER lpbiDst; |
363 void* lpDst; | |
364 | |
365 /* changed for ICM_DECOMPRESSEX */ | |
366 INT xDst; /* destination rectangle */ | |
367 INT yDst; | |
368 INT dxDst; | |
369 INT dyDst; | |
370 | |
371 INT xSrc; /* source rectangle */ | |
372 INT ySrc; | |
373 INT dxSrc; | |
374 INT dySrc; | |
375 } ICDECOMPRESSEX; | |
376 | |
377 | |
378 long VFWAPIV ICDecompress(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits); | |
1297 | 379 long VFWAPIV ICDecompressEx(HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiFormat,void* lpData,LPBITMAPINFOHEADER lpbi,void* lpBits); |
1312 | 380 long VFWAPIV ICUniversalEx(HIC hic,int command,LPBITMAPINFOHEADER lpbiFormat,LPBITMAPINFOHEADER lpbi); |
1 | 381 |
382 | |
383 #define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \ | |
384 ICSendMessage( \ | |
385 hic, ICM_DECOMPRESS_BEGIN, (long)(void*)(lpbiInput), \ | |
386 (long)(void*)(lpbiOutput) \ | |
387 ) | |
388 | |
1297 | 389 #define ICDecompressBeginEx(hic, lpbiInput, lpbiOutput) \ |
390 ICUniversalEx( \ | |
1321
2712e787f872
Remove some superfluous casts. Fixes a few compile warnings.
jkeil
parents:
1312
diff
changeset
|
391 hic, ICM_DECOMPRESSEX_BEGIN, (lpbiInput), \ |
2712e787f872
Remove some superfluous casts. Fixes a few compile warnings.
jkeil
parents:
1312
diff
changeset
|
392 (lpbiOutput) \ |
1297 | 393 ) |
394 | |
1321
2712e787f872
Remove some superfluous casts. Fixes a few compile warnings.
jkeil
parents:
1312
diff
changeset
|
395 #define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \ |
1 | 396 ICSendMessage( \ |
397 hic,ICM_DECOMPRESS_QUERY, (long)(void*)(lpbiInput), \ | |
398 (long) (void*)(lpbiOutput) \ | |
399 ) | |
400 | |
1297 | 401 #define ICDecompressQueryEx(hic, lpbiInput, lpbiOutput) \ |
402 ICUniversalEx( \ | |
1321
2712e787f872
Remove some superfluous casts. Fixes a few compile warnings.
jkeil
parents:
1312
diff
changeset
|
403 hic,ICM_DECOMPRESSEX_QUERY, (lpbiInput), \ |
2712e787f872
Remove some superfluous casts. Fixes a few compile warnings.
jkeil
parents:
1312
diff
changeset
|
404 (lpbiOutput) \ |
1297 | 405 ) |
406 | |
1 | 407 #define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \ |
408 ((long)ICSendMessage( \ | |
409 hic,ICM_DECOMPRESS_GET_FORMAT, (long)(void*)(lpbiInput), \ | |
410 (long)(void*)(lpbiOutput) \ | |
411 )) | |
412 | |
413 #define ICDecompressGetFormatSize(hic, lpbi) \ | |
414 ICDecompressGetFormat(hic, lpbi, NULL) | |
415 | |
416 #define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \ | |
417 ICSendMessage( \ | |
418 hic, ICM_DECOMPRESS_GET_PALETTE, (long)(void*)(lpbiInput), \ | |
419 (long)(void*)(lpbiOutput) \ | |
420 ) | |
421 | |
422 #define ICDecompressSetPalette(hic,lpbiPalette) \ | |
423 ICSendMessage( \ | |
424 hic,ICM_DECOMPRESS_SET_PALETTE, \ | |
425 (long)(void*)(lpbiPalette),0 \ | |
426 ) | |
427 | |
428 #define ICDecompressEnd(hic) ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0) | |
7678
693a19e1c98e
VfwEx uninit crash fixed, bugreport by Wolfgang Thiess <wollet1@gmx.net>
arpi
parents:
7386
diff
changeset
|
429 #define ICDecompressEndEx(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END, 0, 0) |
1 | 430 |
431 #define ICDRAW_QUERY 0x00000001L /* test for support */ | |
432 #define ICDRAW_FULLSCREEN 0x00000002L /* draw to full screen */ | |
433 #define ICDRAW_HDC 0x00000004L /* draw to a HDC/HWND */ | |
434 | |
435 | |
436 WIN_BOOL VFWAPI ICInfo(long fccType, long fccHandler, ICINFO * lpicinfo); | |
437 LRESULT VFWAPI ICGetInfo(HIC hic,ICINFO *picinfo, long cb); | |
438 HIC VFWAPI ICOpen(long fccType, long fccHandler, UINT wMode); | |
7386 | 439 //HIC VFWAPI ICOpenFunction(long fccType, long fccHandler, unsigned int wMode, void* lpfnHandler); |
1 | 440 |
441 LRESULT VFWAPI ICClose(HIC hic); | |
442 LRESULT VFWAPI ICSendMessage(HIC hic, unsigned int msg, long dw1, long dw2); | |
7386 | 443 //HIC VFWAPI ICLocate(long fccType, long fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, short wFlags); |
1 | 444 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1297
diff
changeset
|
445 int VFWAPI ICDoSomething(void); |
1 | 446 |
447 long VFWAPIV ICDrawBegin( | |
448 HIC hic, | |
449 long dwFlags,/* flags */ | |
450 HPALETTE hpal, /* palette to draw with */ | |
451 HWND hwnd, /* window to draw to */ | |
452 HDC hdc, /* HDC to draw to */ | |
453 INT xDst, /* destination rectangle */ | |
454 INT yDst, | |
455 INT dxDst, | |
456 INT dyDst, | |
457 LPBITMAPINFOHEADER lpbi, /* format of frame to draw */ | |
458 INT xSrc, /* source rectangle */ | |
459 INT ySrc, | |
460 INT dxSrc, | |
461 INT dySrc, | |
462 long dwRate, /* frames/second = (dwRate/dwScale) */ | |
463 long dwScale | |
464 ); | |
465 | |
466 /* as passed to ICM_DRAW_BEGIN (FIXME: correct only for Win32?) */ | |
467 typedef struct { | |
468 long dwFlags; | |
469 HPALETTE hpal; | |
470 HWND hwnd; | |
471 HDC hdc; | |
472 INT xDst; | |
473 INT yDst; | |
474 INT dxDst; | |
475 INT dyDst; | |
476 LPBITMAPINFOHEADER lpbi; | |
477 INT xSrc; | |
478 INT ySrc; | |
479 INT dxSrc; | |
480 INT dySrc; | |
481 long dwRate; | |
482 long dwScale; | |
483 } ICDRAWBEGIN; | |
484 | |
485 #define ICDRAW_HURRYUP 0x80000000L /* don't draw just buffer (hurry up!) */ | |
486 #define ICDRAW_UPDATE 0x40000000L /* don't draw just update screen */ | |
487 #define ICDRAW_PREROLL 0x20000000L /* this frame is before real start */ | |
488 #define ICDRAW_NULLFRAME 0x10000000L /* repeat last frame */ | |
489 #define ICDRAW_NOTKEYFRAME 0x08000000L /* this frame is not a key frame */ | |
490 | |
491 typedef struct { | |
492 long dwFlags; | |
493 void* lpFormat; | |
494 void* lpData; | |
495 long cbData; | |
496 long lTime; | |
497 } ICDRAW; | |
498 | |
499 long VFWAPIV ICDraw(HIC hic,long dwFlags,void* lpFormat,void* lpData,long cbData,long lTime); | |
500 | |
501 | |
502 #define AVIGETFRAMEF_BESTDISPLAYFMT 1 | |
503 | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24422
diff
changeset
|
504 typedef struct AVISTREAMINFOA { |
1 | 505 long fccType; |
506 long fccHandler; | |
507 long dwFlags; /* AVIIF_* */ | |
508 long dwCaps; | |
509 short wPriority; | |
510 short wLanguage; | |
511 long dwScale; | |
512 long dwRate; /* dwRate / dwScale == samples/second */ | |
513 long dwStart; | |
514 long dwLength; /* In units above... */ | |
515 long dwInitialFrames; | |
516 long dwSuggestedBufferSize; | |
517 long dwQuality; | |
518 long dwSampleSize; | |
519 RECT rcFrame; | |
520 long dwEditCount; | |
521 long dwFormatChangeCount; | |
522 char szName[64]; | |
523 } AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA; | |
524 | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24422
diff
changeset
|
525 typedef struct AVISTREAMINFOW { |
1 | 526 long fccType; |
527 long fccHandler; | |
528 long dwFlags; | |
529 long dwCaps; | |
530 short wPriority; | |
531 short wLanguage; | |
532 long dwScale; | |
533 long dwRate; /* dwRate / dwScale == samples/second */ | |
534 long dwStart; | |
535 long dwLength; /* In units above... */ | |
536 long dwInitialFrames; | |
537 long dwSuggestedBufferSize; | |
538 long dwQuality; | |
539 long dwSampleSize; | |
540 RECT rcFrame; | |
541 long dwEditCount; | |
542 long dwFormatChangeCount; | |
543 short szName[64]; | |
544 } AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW; | |
545 DECL_WINELIB_TYPE_AW(AVISTREAMINFO) | |
546 DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO) | |
547 DECL_WINELIB_TYPE_AW(PAVISTREAMINFO) | |
548 | |
549 #define AVISTREAMINFO_DISABLED 0x00000001 | |
550 #define AVISTREAMINFO_FORMATCHANGES 0x00010000 | |
551 | |
552 /* AVIFILEINFO.dwFlags */ | |
553 #define AVIFILEINFO_HASINDEX 0x00000010 | |
554 #define AVIFILEINFO_MUSTUSEINDEX 0x00000020 | |
555 #define AVIFILEINFO_ISINTERLEAVED 0x00000100 | |
556 #define AVIFILEINFO_WASCAPTUREFILE 0x00010000 | |
557 #define AVIFILEINFO_COPYRIGHTED 0x00020000 | |
558 | |
559 /* AVIFILEINFO.dwCaps */ | |
560 #define AVIFILECAPS_CANREAD 0x00000001 | |
561 #define AVIFILECAPS_CANWRITE 0x00000002 | |
562 #define AVIFILECAPS_ALLKEYFRAMES 0x00000010 | |
563 #define AVIFILECAPS_NOCOMPRESSION 0x00000020 | |
564 | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24422
diff
changeset
|
565 typedef struct AVIFILEINFOW { |
1 | 566 long dwMaxBytesPerSec; |
567 long dwFlags; | |
568 long dwCaps; | |
569 long dwStreams; | |
570 long dwSuggestedBufferSize; | |
571 long dwWidth; | |
572 long dwHeight; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
573 long dwScale; |
1 | 574 long dwRate; |
575 long dwLength; | |
576 long dwEditCount; | |
577 short szFileType[64]; | |
578 } AVIFILEINFOW, * LPAVIFILEINFOW, *PAVIFILEINFOW; | |
579 | |
25794
2c8cdb9123b8
Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents:
24422
diff
changeset
|
580 typedef struct AVIFILEINFOA { |
1 | 581 long dwMaxBytesPerSec; |
582 long dwFlags; | |
583 long dwCaps; | |
584 long dwStreams; | |
585 long dwSuggestedBufferSize; | |
586 long dwWidth; | |
587 long dwHeight; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26109
diff
changeset
|
588 long dwScale; |
1 | 589 long dwRate; |
590 long dwLength; | |
591 long dwEditCount; | |
592 char szFileType[64]; | |
593 } AVIFILEINFOA, * LPAVIFILEINFOA, *PAVIFILEINFOA; | |
594 | |
595 DECL_WINELIB_TYPE_AW(AVIFILEINFO) | |
596 DECL_WINELIB_TYPE_AW(PAVIFILEINFO) | |
597 DECL_WINELIB_TYPE_AW(LPAVIFILEINFO) | |
598 | |
599 /* AVICOMPRESSOPTIONS.dwFlags. determines presence of fields in below struct */ | |
600 #define AVICOMPRESSF_INTERLEAVE 0x00000001 | |
601 #define AVICOMPRESSF_DATARATE 0x00000002 | |
602 #define AVICOMPRESSF_KEYFRAMES 0x00000004 | |
603 #define AVICOMPRESSF_VALID 0x00000008 | |
604 | |
605 typedef struct { | |
606 long fccType; /* stream type, for consistency */ | |
607 long fccHandler; /* compressor */ | |
608 long dwKeyFrameEvery; /* keyframe rate */ | |
609 long dwQuality; /* compress quality 0-10,000 */ | |
610 long dwBytesPerSecond; /* unsigned chars per second */ | |
611 long dwFlags; /* flags... see below */ | |
612 void* lpFormat; /* save format */ | |
613 long cbFormat; | |
614 void* lpParms; /* compressor options */ | |
615 long cbParms; | |
616 long dwInterleaveEvery; /* for non-video streams only */ | |
617 } AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS; | |
618 | |
619 | |
620 | |
621 typedef struct { | |
622 long cbSize; // set to sizeof(COMPVARS) before | |
623 // calling ICCompressorChoose | |
624 long dwFlags; // see below... | |
625 HIC hic; // HIC of chosen compressor | |
626 long fccType; // basically ICTYPE_VIDEO | |
627 long fccHandler; // handler of chosen compressor or | |
628 // "" or "DIB " | |
629 LPBITMAPINFO lpbiIn; // input format | |
630 LPBITMAPINFO lpbiOut; // output format - will compress to this | |
631 void* lpBitsOut; | |
632 void* lpBitsPrev; | |
633 long lFrame; | |
634 long lKey; // key frames how often? | |
635 long lDataRate; // desired data rate KB/Sec | |
636 long lQ; // desired quality | |
637 long lKeyCount; | |
638 void* lpState; // state of compressor | |
639 long cbState; // size of the state | |
640 } COMPVARS, *PCOMPVARS; | |
641 | |
642 // FLAGS for dwFlags element of COMPVARS structure: | |
643 | |
644 | |
645 #define AVIERR_OK 0 | |
646 #define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error) | |
647 | |
648 #define AVIERR_UNSUPPORTED MAKE_AVIERR(101) | |
649 #define AVIERR_BADFORMAT MAKE_AVIERR(102) | |
650 #define AVIERR_MEMORY MAKE_AVIERR(103) | |
651 #define AVIERR_INTERNAL MAKE_AVIERR(104) | |
652 #define AVIERR_BADFLAGS MAKE_AVIERR(105) | |
653 #define AVIERR_BADPARAM MAKE_AVIERR(106) | |
654 #define AVIERR_BADSIZE MAKE_AVIERR(107) | |
655 #define AVIERR_BADHANDLE MAKE_AVIERR(108) | |
656 #define AVIERR_FILEREAD MAKE_AVIERR(109) | |
657 #define AVIERR_FILEWRITE MAKE_AVIERR(110) | |
658 #define AVIERR_FILEOPEN MAKE_AVIERR(111) | |
659 #define AVIERR_COMPRESSOR MAKE_AVIERR(112) | |
660 #define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113) | |
661 #define AVIERR_READONLY MAKE_AVIERR(114) | |
662 #define AVIERR_NODATA MAKE_AVIERR(115) | |
663 #define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116) | |
664 #define AVIERR_CANTCOMPRESS MAKE_AVIERR(117) | |
665 #define AVIERR_USERABORT MAKE_AVIERR(198) | |
666 #define AVIERR_ERROR MAKE_AVIERR(199) | |
667 | |
668 #ifdef __cplusplus | |
669 } | |
670 #endif | |
26045 | 671 #endif /* MPLAYER_VFW_H */ |