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