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 12extern "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 32extern "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 760extern "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 903extern "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 1923extern "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