/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef _INC_VFW #define _INC_VFW #include <_mingw_unicode.h> #ifdef __cplusplus extern "C" { #endif #define VFWAPI WINAPI #define VFWAPIV WINAPIV #define VFWAPI_INLINE WINAPI DWORD WINAPI VideoForWindowsVersion(void); LONG WINAPI InitVFW(void); LONG WINAPI TermVFW(void); #ifdef __cplusplus } #endif #if !defined(_INC_MMSYSTEM) && (!defined(NOVIDEO) || !defined(NOAVICAP)) #include <mmsystem.h> #endif #ifdef __cplusplus extern "C" { #endif #ifndef MKFOURCC #define MKFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24)) #endif #if !defined(_INC_MMSYSTEM) #define mmioFOURCC MKFOURCC #endif #ifndef NOCOMPMAN #define ICVERSION 0x0104 DECLARE_HANDLE(HIC); #define BI_1632 0x32333631 #ifndef mmioFOURCC #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24)) #endif #ifndef aviTWOCC #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8)) #endif #ifndef ICTYPE_VIDEO #define ICTYPE_VIDEO mmioFOURCC('v','i','d','c') #define ICTYPE_AUDIO mmioFOURCC('a','u','d','c') #endif #ifndef ICERR_OK #define ICERR_OK __MSABI_LONG(0) #define ICERR_DONTDRAW __MSABI_LONG(1) #define ICERR_NEWPALETTE __MSABI_LONG(2) #define ICERR_GOTOKEYFRAME __MSABI_LONG(3) #define ICERR_STOPDRAWING __MSABI_LONG(4) #define ICERR_UNSUPPORTED __MSABI_LONG(-1) #define ICERR_BADFORMAT __MSABI_LONG(-2) #define ICERR_MEMORY __MSABI_LONG(-3) #define ICERR_INTERNAL __MSABI_LONG(-4) #define ICERR_BADFLAGS __MSABI_LONG(-5) #define ICERR_BADPARAM __MSABI_LONG(-6) #define ICERR_BADSIZE __MSABI_LONG(-7) #define ICERR_BADHANDLE __MSABI_LONG(-8) #define ICERR_CANTUPDATE __MSABI_LONG(-9) #define ICERR_ABORT __MSABI_LONG(-10) #define ICERR_ERROR __MSABI_LONG(-100) #define ICERR_BADBITDEPTH __MSABI_LONG(-200) #define ICERR_BADIMAGESIZE __MSABI_LONG(-201) #define ICERR_CUSTOM __MSABI_LONG(-400) #endif #ifndef ICMODE_COMPRESS #define ICMODE_COMPRESS 1 #define ICMODE_DECOMPRESS 2 #define ICMODE_FASTDECOMPRESS 3 #define ICMODE_QUERY 4 #define ICMODE_FASTCOMPRESS 5 #define ICMODE_DRAW 8 #endif #define AVIIF_LIST __MSABI_LONG(0x00000001) #define AVIIF_TWOCC __MSABI_LONG(0x00000002) #define AVIIF_KEYFRAME __MSABI_LONG(0x00000010) #define ICQUALITY_LOW 0 #define ICQUALITY_HIGH 10000 #define ICQUALITY_DEFAULT -1 #define ICM_USER (DRV_USER+0x0000) #define ICM_RESERVED ICM_RESERVED_LOW #define ICM_RESERVED_LOW (DRV_USER+0x1000) #define ICM_RESERVED_HIGH (DRV_USER+0x2000) #define ICM_GETSTATE (ICM_RESERVED+0) #define ICM_SETSTATE (ICM_RESERVED+1) #define ICM_GETINFO (ICM_RESERVED+2) #define ICM_CONFIGURE (ICM_RESERVED+10) #define ICM_ABOUT (ICM_RESERVED+11) #define ICM_GETERRORTEXT (ICM_RESERVED+12) #define ICM_GETFORMATNAME (ICM_RESERVED+20) #define ICM_ENUMFORMATS (ICM_RESERVED+21) #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30) #define ICM_GETQUALITY (ICM_RESERVED+31) #define ICM_SETQUALITY (ICM_RESERVED+32) #define ICM_SET (ICM_RESERVED+40) #define ICM_GET (ICM_RESERVED+41) #define ICM_FRAMERATE mmioFOURCC('F','r','m','R') #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R') #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4) #define ICM_COMPRESS_GET_SIZE (ICM_USER+5) #define ICM_COMPRESS_QUERY (ICM_USER+6) #define ICM_COMPRESS_BEGIN (ICM_USER+7) #define ICM_COMPRESS (ICM_USER+8) #define ICM_COMPRESS_END (ICM_USER+9) #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10) #define ICM_DECOMPRESS_QUERY (ICM_USER+11) #define ICM_DECOMPRESS_BEGIN (ICM_USER+12) #define ICM_DECOMPRESS (ICM_USER+13) #define ICM_DECOMPRESS_END (ICM_USER+14) #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29) #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30) #define ICM_DRAW_QUERY (ICM_USER+31) #define ICM_DRAW_BEGIN (ICM_USER+15) #define ICM_DRAW_GET_PALETTE (ICM_USER+16) #define ICM_DRAW_UPDATE (ICM_USER+17) #define ICM_DRAW_START (ICM_USER+18) #define ICM_DRAW_STOP (ICM_USER+19) #define ICM_DRAW_BITS (ICM_USER+20) #define ICM_DRAW_END (ICM_USER+21) #define ICM_DRAW_GETTIME (ICM_USER+32) #define ICM_DRAW (ICM_USER+33) #define ICM_DRAW_WINDOW (ICM_USER+34) #define ICM_DRAW_SETTIME (ICM_USER+35) #define ICM_DRAW_REALIZE (ICM_USER+36) #define ICM_DRAW_FLUSH (ICM_USER+37) #define ICM_DRAW_RENDERBUFFER (ICM_USER+38) #define ICM_DRAW_START_PLAY (ICM_USER+39) #define ICM_DRAW_STOP_PLAY (ICM_USER+40) #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50) #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51) #define ICM_DRAW_IDLE (ICM_USER+52) #define ICM_GETBUFFERSWANTED (ICM_USER+41) #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42) #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60) #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61) #define ICM_DECOMPRESSEX (ICM_USER+62) #define ICM_DECOMPRESSEX_END (ICM_USER+63) #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70) #define ICM_COMPRESS_FRAMES (ICM_USER+71) #define ICM_SET_STATUS_PROC (ICM_USER+72) typedef struct { DWORD dwSize; DWORD fccType; DWORD fccHandler; DWORD dwVersion; DWORD dwFlags; LRESULT dwError; LPVOID pV1Reserved; LPVOID pV2Reserved; DWORD dnDevNode; } ICOPEN; typedef struct { DWORD dwSize; DWORD fccType; DWORD fccHandler; DWORD dwFlags; DWORD dwVersion; DWORD dwVersionICM; WCHAR szName[16]; WCHAR szDescription[128]; WCHAR szDriver[128]; } ICINFO; #define VIDCF_QUALITY 0x0001 #define VIDCF_CRUNCH 0x0002 #define VIDCF_TEMPORAL 0x0004 #define VIDCF_COMPRESSFRAMES 0x0008 #define VIDCF_DRAW 0x0010 #define VIDCF_FASTTEMPORALC 0x0020 #define VIDCF_QUALITYTIME 0x0040 #define VIDCF_FASTTEMPORALD 0x0080 #define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD) #define ICCOMPRESS_KEYFRAME __MSABI_LONG(0x00000001) typedef struct { DWORD dwFlags; LPBITMAPINFOHEADER lpbiOutput; LPVOID lpOutput; LPBITMAPINFOHEADER lpbiInput; LPVOID lpInput; LPDWORD lpckid; LPDWORD lpdwFlags; LONG lFrameNum; DWORD dwFrameSize; DWORD dwQuality; LPBITMAPINFOHEADER lpbiPrev; LPVOID lpPrev; } ICCOMPRESS; #define ICCOMPRESSFRAMES_PADDING 0x00000001 typedef struct { DWORD dwFlags; LPBITMAPINFOHEADER lpbiOutput; LPARAM lOutput; LPBITMAPINFOHEADER lpbiInput; LPARAM lInput; LONG lStartFrame; LONG lFrameCount; LONG lQuality; LONG lDataRate; LONG lKeyRate; DWORD dwRate; DWORD dwScale; DWORD dwOverheadPerFrame; DWORD dwReserved2; LONG (CALLBACK *GetData)(LPARAM lInput,LONG lFrame,LPVOID lpBits,LONG len); LONG (CALLBACK *PutData)(LPARAM lOutput,LONG lFrame,LPVOID lpBits,LONG len); } ICCOMPRESSFRAMES; #define ICSTATUS_START 0 #define ICSTATUS_STATUS 1 #define ICSTATUS_END 2 #define ICSTATUS_ERROR 3 #define ICSTATUS_YIELD 4 typedef struct { DWORD dwFlags; LPARAM lParam; LONG (CALLBACK *Status)(LPARAM lParam,UINT message,LONG l); } ICSETSTATUSPROC; #define ICDECOMPRESS_HURRYUP __MSABI_LONG(0x80000000) #define ICDECOMPRESS_UPDATE __MSABI_LONG(0x40000000) #define ICDECOMPRESS_PREROLL __MSABI_LONG(0x20000000) #define ICDECOMPRESS_NULLFRAME __MSABI_LONG(0x10000000) #define ICDECOMPRESS_NOTKEYFRAME __MSABI_LONG(0x08000000) typedef struct { DWORD dwFlags; LPBITMAPINFOHEADER lpbiInput; LPVOID lpInput; LPBITMAPINFOHEADER lpbiOutput; LPVOID lpOutput; DWORD ckid; } ICDECOMPRESS; typedef struct { DWORD dwFlags; LPBITMAPINFOHEADER lpbiSrc; LPVOID lpSrc; LPBITMAPINFOHEADER lpbiDst; LPVOID lpDst; int xDst; int yDst; int dxDst; int dyDst; int xSrc; int ySrc; int dxSrc; int dySrc; } ICDECOMPRESSEX; #define ICDRAW_QUERY __MSABI_LONG(0x00000001) #define ICDRAW_FULLSCREEN __MSABI_LONG(0x00000002) #define ICDRAW_HDC __MSABI_LONG(0x00000004) #define ICDRAW_ANIMATE __MSABI_LONG(0x00000008) #define ICDRAW_CONTINUE __MSABI_LONG(0x00000010) #define ICDRAW_MEMORYDC __MSABI_LONG(0x00000020) #define ICDRAW_UPDATING __MSABI_LONG(0x00000040) #define ICDRAW_RENDER __MSABI_LONG(0x00000080) #define ICDRAW_BUFFER __MSABI_LONG(0x00000100) typedef struct { 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; } ICDRAWBEGIN; #define ICDRAW_HURRYUP __MSABI_LONG(0x80000000) #define ICDRAW_UPDATE __MSABI_LONG(0x40000000) #define ICDRAW_PREROLL __MSABI_LONG(0x20000000) #define ICDRAW_NULLFRAME __MSABI_LONG(0x10000000) #define ICDRAW_NOTKEYFRAME __MSABI_LONG(0x08000000) typedef struct { DWORD dwFlags; LPVOID lpFormat; LPVOID lpData; DWORD cbData; LONG lTime; } ICDRAW; typedef struct { LPBITMAPINFOHEADER lpbiIn; LPBITMAPINFOHEADER lpbiSuggest; int dxSrc; int dySrc; int dxDst; int dyDst; HIC hicDecompressor; } ICDRAWSUGGEST; typedef struct { DWORD dwFlags; int iStart; int iLen; LPPALETTEENTRY lppe; } ICPALETTE; WINBOOL WINAPI ICInfo(DWORD fccType,DWORD fccHandler,ICINFO *lpicinfo); WINBOOL WINAPI ICInstall(DWORD fccType,DWORD fccHandler,LPARAM lParam,LPSTR szDesc,UINT wFlags); WINBOOL WINAPI ICRemove(DWORD fccType,DWORD fccHandler,UINT wFlags); LRESULT WINAPI ICGetInfo(HIC hic,ICINFO *picinfo,DWORD cb); HIC WINAPI ICOpen(DWORD fccType,DWORD fccHandler,UINT wMode); HIC WINAPI ICOpenFunction(DWORD fccType,DWORD fccHandler,UINT wMode,FARPROC lpfnHandler); LRESULT WINAPI ICClose(HIC hic); LRESULT WINAPI ICSendMessage(HIC hic,UINT msg,DWORD_PTR dw1,DWORD_PTR dw2); #define ICINSTALL_UNICODE 0x8000 #define ICINSTALL_FUNCTION 0x0001 #define ICINSTALL_DRIVER 0x0002 #define ICINSTALL_HDRV 0x0004 #define ICINSTALL_DRIVERW 0x8002 #define ICMF_CONFIGURE_QUERY 0x00000001 #define ICMF_ABOUT_QUERY 0x00000001 #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR) -1,ICMF_ABOUT_QUERY)==ICERR_OK) #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD_PTR)(UINT_PTR)(hwnd),(DWORD_PTR)0) #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR) -1,ICMF_CONFIGURE_QUERY)==ICERR_OK) #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD_PTR)(UINT_PTR)(hwnd),(DWORD_PTR)0) #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD_PTR)(LPVOID)(pv),(DWORD_PTR)(cb)) #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD_PTR)(LPVOID)(pv),(DWORD_PTR)(cb)) #define ICGetStateSize(hic) (DWORD) ICGetState(hic,NULL,0) static DWORD dwICValue; #define ICGetDefaultQuality(hic) (ICSendMessage(hic,ICM_GETDEFAULTQUALITY,(DWORD_PTR)(LPVOID)&dwICValue,sizeof(DWORD)),dwICValue) #define ICGetDefaultKeyFrameRate(hic) (ICSendMessage(hic,ICM_GETDEFAULTKEYFRAMERATE,(DWORD_PTR)(LPVOID)&dwICValue,sizeof(DWORD)),dwICValue) #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD_PTR)(LPVOID)(prc),sizeof(RECT)) 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); #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICCompressGetFormatSize(hic,lpbi) (DWORD) ICCompressGetFormat(hic,lpbi,NULL) #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) (DWORD) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDECOMPRESS_HURRYUP __MSABI_LONG(0x80000000) DWORD WINAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat,LPVOID lpData,LPBITMAPINFOHEADER lpbi,LPVOID lpBits); #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) ((LONG) ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput))) #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic,lpbi,NULL) #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD_PTR)(LPVOID)(lpbiOutput)) #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD_PTR)(LPVOID)(lpbiPalette),(DWORD_PTR)0) #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,(DWORD_PTR)0,(DWORD_PTR)0) #ifndef __CRT__NO_INLINE __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) { ICDECOMPRESSEX ic; ic.dwFlags = dwFlags; ic.lpbiSrc = lpbiSrc; ic.lpSrc = lpSrc; ic.xSrc = xSrc; ic.ySrc = ySrc; ic.dxSrc = dxSrc; ic.dySrc = dySrc; ic.lpbiDst = lpbiDst; ic.lpDst = lpDst; ic.xDst = xDst; ic.yDst = yDst; ic.dxDst = dxDst; ic.dyDst = dyDst; return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD_PTR)&ic,sizeof(ic)); } __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) { ICDECOMPRESSEX ic; ic.dwFlags = dwFlags; ic.lpbiSrc = lpbiSrc; ic.lpSrc = lpSrc; ic.xSrc = xSrc; ic.ySrc = ySrc; ic.dxSrc = dxSrc; ic.dySrc = dySrc; ic.lpbiDst = lpbiDst; ic.lpDst = lpDst; ic.xDst = xDst; ic.yDst = yDst; ic.dxDst = dxDst; ic.dyDst = dyDst; return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD_PTR)&ic,sizeof(ic)); } __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) { ICDECOMPRESSEX ic; ic.dwFlags = dwFlags; ic.lpbiSrc = lpbiSrc; ic.lpSrc = lpSrc; ic.xSrc = xSrc; ic.ySrc = ySrc; ic.dxSrc = dxSrc; ic.dySrc = dySrc; ic.lpbiDst = lpbiDst; ic.lpDst = lpDst; ic.xDst = xDst; ic.yDst = yDst; ic.dxDst = dxDst; ic.dyDst = dyDst; return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD_PTR)&ic,sizeof(ic)); } #endif /* !__CRT__NO_INLINE */ #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDRAW_QUERY __MSABI_LONG(0x00000001) #define ICDRAW_FULLSCREEN __MSABI_LONG(0x00000002) #define ICDRAW_HDC __MSABI_LONG(0x00000004) 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); #define ICDRAW_HURRYUP __MSABI_LONG(0x80000000) #define ICDRAW_UPDATE __MSABI_LONG(0x40000000) DWORD WINAPIV ICDraw(HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,LONG lTime); #ifndef __CRT__NO_INLINE __CRT_INLINE LRESULT WINAPI ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,int dxSrc,int dySrc,int dxDst,int dyDst,HIC hicDecomp) { ICDRAWSUGGEST ic; ic.lpbiIn = lpbiIn; ic.lpbiSuggest = lpbiOut; ic.dxSrc = dxSrc; ic.dySrc = dySrc; ic.dxDst = dxDst; ic.dyDst = dyDst; ic.hicDecompressor = hicDecomp; return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD_PTR)&ic,sizeof(ic)); } #endif /* !__CRT__NO_INLINE */ #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD)0) #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD_PTR)(LPVOID)(lpbiInput),(DWORD)0) #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD_PTR)(LPVOID)(lpdwBuffers),(DWORD_PTR)0) #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD_PTR)(lFrom),(DWORD_PTR)(lTo)) #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD_PTR)(LPVOID)(lplTime),(DWORD_PTR)0) #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD_PTR)lTime,(DWORD_PTR)0) #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD_PTR)(UINT_PTR)(HDC)(hdc),(DWORD_PTR)(WINBOOL)(fBackground)) #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,(DWORD_PTR)0,(DWORD_PTR)0) #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,(DWORD_PTR)0,(DWORD_PTR)0) #ifndef __CRT__NO_INLINE __CRT_INLINE LRESULT WINAPI ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG)) { ICSETSTATUSPROC ic; ic.dwFlags = dwFlags; ic.lParam = lParam; ic.Status = fpfnStatus; return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD_PTR)&ic,sizeof(ic)); } #endif /* !__CRT__NO_INLINE */ #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS) #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW) HIC WINAPI ICLocate(DWORD fccType,DWORD fccHandler,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,WORD wFlags); HIC WINAPI ICGetDisplayFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,int BitDepth,int dx,int dy); HANDLE WINAPI ICImageCompress(HIC hic,UINT uiFlags,LPBITMAPINFO lpbiIn,LPVOID lpBits,LPBITMAPINFO lpbiOut,LONG lQuality,LONG *plSize); HANDLE WINAPI ICImageDecompress(HIC hic,UINT uiFlags,LPBITMAPINFO lpbiIn,LPVOID lpBits,LPBITMAPINFO lpbiOut); typedef struct { LONG cbSize; DWORD dwFlags; HIC hic; DWORD fccType; DWORD fccHandler; LPBITMAPINFO lpbiIn; LPBITMAPINFO lpbiOut; LPVOID lpBitsOut; LPVOID lpBitsPrev; LONG lFrame; LONG lKey; LONG lDataRate; LONG lQ; LONG lKeyCount; LPVOID lpState; LONG cbState; } COMPVARS,*PCOMPVARS; #define ICMF_COMPVARS_VALID 0x00000001 WINBOOL WINAPI ICCompressorChoose(HWND hwnd,UINT uiFlags,LPVOID pvIn,LPVOID lpData,PCOMPVARS pc,LPSTR lpszTitle); #define ICMF_CHOOSE_KEYFRAME 0x0001 #define ICMF_CHOOSE_DATARATE 0x0002 #define ICMF_CHOOSE_PREVIEW 0x0004 #define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008 WINBOOL WINAPI ICSeqCompressFrameStart(PCOMPVARS pc,LPBITMAPINFO lpbiIn); void WINAPI ICSeqCompressFrameEnd(PCOMPVARS pc); LPVOID WINAPI ICSeqCompressFrame(PCOMPVARS pc,UINT uiFlags,LPVOID lpBits,WINBOOL *pfKey,LONG *plSize); void WINAPI ICCompressorFree(PCOMPVARS pc); #endif #ifndef NODRAWDIB typedef HANDLE HDRAWDIB; #define DDF_0001 0x0001 #define DDF_UPDATE 0x0002 #define DDF_SAME_HDC 0x0004 #define DDF_SAME_DRAW 0x0008 #define DDF_DONTDRAW 0x0010 #define DDF_ANIMATE 0x0020 #define DDF_BUFFER 0x0040 #define DDF_JUSTDRAWIT 0x0080 #define DDF_FULLSCREEN 0x0100 #define DDF_BACKGROUNDPAL 0x0200 #define DDF_NOTKEYFRAME 0x0400 #define DDF_HURRYUP 0x0800 #define DDF_HALFTONE 0x1000 #define DDF_2000 0x2000 #define DDF_PREROLL DDF_DONTDRAW #define DDF_SAME_DIB DDF_SAME_DRAW #define DDF_SAME_SIZE DDF_SAME_DRAW extern WINBOOL WINAPI DrawDibInit(void); extern HDRAWDIB WINAPI DrawDibOpen(void); extern WINBOOL WINAPI DrawDibClose(HDRAWDIB hdd); extern LPVOID WINAPI DrawDibGetBuffer(HDRAWDIB hdd,LPBITMAPINFOHEADER lpbi,DWORD dwSize,DWORD dwFlags); extern UINT WINAPI DrawDibError(HDRAWDIB hdd); extern HPALETTE WINAPI DrawDibGetPalette(HDRAWDIB hdd); extern WINBOOL WINAPI DrawDibSetPalette(HDRAWDIB hdd,HPALETTE hpal); extern WINBOOL WINAPI DrawDibChangePalette(HDRAWDIB hdd,int iStart,int iLen,LPPALETTEENTRY lppe); extern UINT WINAPI DrawDibRealize(HDRAWDIB hdd,HDC hdc,WINBOOL fBackground); extern WINBOOL WINAPI DrawDibStart(HDRAWDIB hdd,DWORD rate); extern WINBOOL WINAPI DrawDibStop(HDRAWDIB hdd); extern WINBOOL WINAPI DrawDibBegin(HDRAWDIB hdd,HDC hdc,int dxDst,int dyDst,LPBITMAPINFOHEADER lpbi,int dxSrc,int dySrc,UINT wFlags); 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); #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE) extern WINBOOL WINAPI DrawDibEnd(HDRAWDIB hdd); typedef struct { LONG timeCount; LONG timeDraw; LONG timeDecompress; LONG timeDither; LONG timeStretch; LONG timeBlt; LONG timeSetDIBits; } DRAWDIBTIME,*LPDRAWDIBTIME; WINBOOL WINAPI DrawDibTime(HDRAWDIB hdd,LPDRAWDIBTIME lpddtime); #define PD_CAN_DRAW_DIB 0x0001 #define PD_CAN_STRETCHDIB 0x0002 #define PD_STRETCHDIB_1_1_OK 0x0004 #define PD_STRETCHDIB_1_2_OK 0x0008 #define PD_STRETCHDIB_1_N_OK 0x0010 LRESULT WINAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); #ifdef DRAWDIB_INCLUDE_STRETCHDIB 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); #endif #endif #ifndef NOAVIFMT #ifndef _INC_MMSYSTEM typedef DWORD FOURCC; #endif /* This part of the file is duplicated in avifmt.h */ #ifndef mmioFOURCC #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24)) #endif #ifndef aviTWOCC #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8)) #endif typedef WORD TWOCC; #define formtypeAVI mmioFOURCC('A','V','I',' ') #define listtypeAVIHEADER mmioFOURCC('h','d','r','l') #define ckidAVIMAINHDR mmioFOURCC('a','v','i','h') #define listtypeSTREAMHEADER mmioFOURCC('s','t','r','l') #define ckidSTREAMHEADER mmioFOURCC('s','t','r','h') #define ckidSTREAMFORMAT mmioFOURCC('s','t','r','f') #define ckidSTREAMHANDLERDATA mmioFOURCC('s','t','r','d') #define ckidSTREAMNAME mmioFOURCC('s','t','r','n') #define listtypeAVIMOVIE mmioFOURCC('m','o','v','i') #define listtypeAVIRECORD mmioFOURCC('r','e','c',' ') #define ckidAVINEWINDEX mmioFOURCC('i','d','x','1') #define streamtypeANY __MSABI_LONG(0U) #define streamtypeVIDEO mmioFOURCC('v','i','d','s') #define streamtypeAUDIO mmioFOURCC('a','u','d','s') #define streamtypeMIDI mmioFOURCC('m','i','d','s') #define streamtypeTEXT mmioFOURCC('t','x','t','s') #define cktypeDIBbits aviTWOCC('d','b') #define cktypeDIBcompressed aviTWOCC('d','c') #define cktypePALchange aviTWOCC('p','c') #define cktypeWAVEbytes aviTWOCC('w','b') #define ckidAVIPADDING mmioFOURCC('J','U','N','K') #define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0')) #define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc)))))) #define TWOCCFromFOURCC(fcc) HIWORD(fcc) #define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0'))) #define MAKEAVICKID(tcc,stream) MAKELONG((ToHex((stream) & 0x0f) << 8) | (ToHex(((stream) & 0xf0) >> 4)),tcc) #define AVIF_HASINDEX 0x00000010 #define AVIF_MUSTUSEINDEX 0x00000020 #define AVIF_ISINTERLEAVED 0x00000100 #define AVIF_TRUSTCKTYPE 0x00000800 #define AVIF_WASCAPTUREFILE 0x00010000 #define AVIF_COPYRIGHTED 0x00020000 #define AVI_HEADERSIZE 2048 typedef struct { DWORD dwMicroSecPerFrame; DWORD dwMaxBytesPerSec; DWORD dwPaddingGranularity; DWORD dwFlags; DWORD dwTotalFrames; DWORD dwInitialFrames; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwReserved[4]; } MainAVIHeader; #define AVISF_DISABLED 0x00000001 #define AVISF_VIDEO_PALCHANGES 0x00010000 typedef struct { FOURCC fccType; FOURCC fccHandler; DWORD dwFlags; WORD wPriority; WORD wLanguage; DWORD dwInitialFrames; DWORD dwScale; DWORD dwRate; DWORD dwStart; DWORD dwLength; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; } AVIStreamHeader; #define AVIIF_LIST __MSABI_LONG(0x00000001) #define AVIIF_KEYFRAME __MSABI_LONG(0x00000010) #define AVIIF_FIRSTPART __MSABI_LONG(0x00000020) #define AVIIF_LASTPART __MSABI_LONG(0x00000040) #define AVIIF_MIDPART (AVIIF_LASTPART|AVIIF_FIRSTPART) #define AVIIF_NOTIME __MSABI_LONG(0x00000100) #define AVIIF_COMPUSE __MSABI_LONG(0x0FFF0000) typedef struct { DWORD ckid; DWORD dwFlags; DWORD dwChunkOffset; DWORD dwChunkLength; } AVIINDEXENTRY; typedef struct { BYTE bFirstEntry; BYTE bNumEntries; WORD wFlags; PALETTEENTRY peNew[]; } AVIPALCHANGE; #endif /* End of duplication */ #ifdef __cplusplus } #endif #ifndef RC_INVOKED #include "pshpack8.h" #endif #ifndef NOMMREG #include <mmreg.h> #endif #ifdef __cplusplus extern "C" { #endif #ifndef NOAVIFILE #ifndef mmioFOURCC #define mmioFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24)) #endif #ifndef streamtypeVIDEO #define streamtypeANY __MSABI_LONG(0U) #define streamtypeVIDEO mmioFOURCC('v','i','d','s') #define streamtypeAUDIO mmioFOURCC('a','u','d','s') #define streamtypeMIDI mmioFOURCC('m','i','d','s') #define streamtypeTEXT mmioFOURCC('t','x','t','s') #endif #ifndef AVIIF_KEYFRAME #define AVIIF_KEYFRAME __MSABI_LONG(0x00000010) #endif #define AVIGETFRAMEF_BESTDISPLAYFMT 1 typedef struct _AVISTREAMINFOW { DWORD fccType; DWORD fccHandler; DWORD dwFlags; DWORD dwCaps; WORD wPriority; WORD wLanguage; DWORD dwScale; DWORD dwRate; DWORD dwStart; DWORD dwLength; DWORD dwInitialFrames; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; DWORD dwEditCount; DWORD dwFormatChangeCount; WCHAR szName[64]; } AVISTREAMINFOW,*LPAVISTREAMINFOW; typedef struct _AVISTREAMINFOA { DWORD fccType; DWORD fccHandler; DWORD dwFlags; DWORD dwCaps; WORD wPriority; WORD wLanguage; DWORD dwScale; DWORD dwRate; DWORD dwStart; DWORD dwLength; DWORD dwInitialFrames; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; DWORD dwEditCount; DWORD dwFormatChangeCount; char szName[64]; } AVISTREAMINFOA,*LPAVISTREAMINFOA; #define AVISTREAMINFO __MINGW_NAME_AW(AVISTREAMINFO) #define LPAVISTREAMINFO __MINGW_NAME_AW(LPAVISTREAMINFO) #define AVISTREAMINFO_DISABLED 0x00000001 #define AVISTREAMINFO_FORMATCHANGES 0x00010000 typedef struct _AVIFILEINFOW { DWORD dwMaxBytesPerSec; DWORD dwFlags; DWORD dwCaps; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwScale; DWORD dwRate; DWORD dwLength; DWORD dwEditCount; WCHAR szFileType[64]; } AVIFILEINFOW,*LPAVIFILEINFOW; typedef struct _AVIFILEINFOA { DWORD dwMaxBytesPerSec; DWORD dwFlags; DWORD dwCaps; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwScale; DWORD dwRate; DWORD dwLength; DWORD dwEditCount; char szFileType[64]; } AVIFILEINFOA,*LPAVIFILEINFOA; #define AVIFILEINFO __MINGW_NAME_AW(AVIFILEINFO) #define LPAVIFILEINFO __MINGW_NAME_AW(LPAVIFILEINFO) #define AVIFILEINFO_HASINDEX 0x00000010 #define AVIFILEINFO_MUSTUSEINDEX 0x00000020 #define AVIFILEINFO_ISINTERLEAVED 0x00000100 #define AVIFILEINFO_TRUSTCKTYPE 0x00000800 #define AVIFILEINFO_WASCAPTUREFILE 0x00010000 #define AVIFILEINFO_COPYRIGHTED 0x00020000 #define AVIFILECAPS_CANREAD 0x00000001 #define AVIFILECAPS_CANWRITE 0x00000002 #define AVIFILECAPS_ALLKEYFRAMES 0x00000010 #define AVIFILECAPS_NOCOMPRESSION 0x00000020 typedef WINBOOL (WINAPI *AVISAVECALLBACK)(int); typedef struct { DWORD fccType; DWORD fccHandler; DWORD dwKeyFrameEvery; DWORD dwQuality; DWORD dwBytesPerSecond; DWORD dwFlags; LPVOID lpFormat; DWORD cbFormat; LPVOID lpParms; DWORD cbParms; DWORD dwInterleaveEvery; } AVICOMPRESSOPTIONS, FAR *LPAVICOMPRESSOPTIONS; #define AVICOMPRESSF_INTERLEAVE 0x00000001 #define AVICOMPRESSF_DATARATE 0x00000002 #define AVICOMPRESSF_KEYFRAMES 0x00000004 #define AVICOMPRESSF_VALID 0x00000008 #ifdef __cplusplus } #endif #include <ole2.h> #ifdef __cplusplus extern "C" { #endif #undef INTERFACE #define INTERFACE IAVIStream DECLARE_INTERFACE_(IAVIStream,IUnknown) { STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Create) (THIS_ LPARAM lParam1,LPARAM lParam2) PURE; STDMETHOD(Info) (THIS_ AVISTREAMINFOW *psi,LONG lSize) PURE; STDMETHOD_(LONG,FindSample)(THIS_ LONG lPos,LONG lFlags) PURE; STDMETHOD(ReadFormat) (THIS_ LONG lPos,LPVOID lpFormat,LONG *lpcbFormat) PURE; STDMETHOD(SetFormat) (THIS_ LONG lPos,LPVOID lpFormat,LONG cbFormat) PURE; STDMETHOD(Read) (THIS_ LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG *plBytes,LONG *plSamples) PURE; STDMETHOD(Write) (THIS_ LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG *plSampWritten,LONG *plBytesWritten) PURE; STDMETHOD(Delete) (THIS_ LONG lStart,LONG lSamples) PURE; STDMETHOD(ReadData) (THIS_ DWORD fcc,LPVOID lp,LONG *lpcb) PURE; STDMETHOD(WriteData) (THIS_ DWORD fcc,LPVOID lp,LONG cb) PURE; STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW *lpInfo,LONG cbInfo) PURE; }; typedef IAVIStream *PAVISTREAM; #undef INTERFACE #define INTERFACE IAVIStreaming DECLARE_INTERFACE_(IAVIStreaming,IUnknown) { STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Begin) (THIS_ LONG lStart,LONG lEnd,LONG lRate) PURE; STDMETHOD(End) (THIS) PURE; }; typedef IAVIStreaming *PAVISTREAMING; #undef INTERFACE #define INTERFACE IAVIEditStream DECLARE_INTERFACE_(IAVIEditStream,IUnknown) { STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Cut) (THIS_ LONG *plStart,LONG *plLength,PAVISTREAM *ppResult) PURE; STDMETHOD(Copy) (THIS_ LONG *plStart,LONG *plLength,PAVISTREAM *ppResult) PURE; STDMETHOD(Paste) (THIS_ LONG *plPos,LONG *plLength,PAVISTREAM pstream,LONG lStart,LONG lEnd) PURE; STDMETHOD(Clone) (THIS_ PAVISTREAM *ppResult) PURE; STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW *lpInfo,LONG cbInfo) PURE; }; typedef IAVIEditStream *PAVIEDITSTREAM; #undef INTERFACE #define INTERFACE IAVIPersistFile DECLARE_INTERFACE_(IAVIPersistFile,IPersistFile) { STDMETHOD(Reserved1)(THIS) PURE; }; typedef IAVIPersistFile *PAVIPERSISTFILE; #undef INTERFACE #define INTERFACE IAVIFile #define PAVIFILE IAVIFile * DECLARE_INTERFACE_(IAVIFile,IUnknown) { STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD(Info) (THIS_ AVIFILEINFOW *pfi,LONG lSize) PURE; STDMETHOD(GetStream) (THIS_ PAVISTREAM *ppStream,DWORD fccType,LONG lParam) PURE; STDMETHOD(CreateStream) (THIS_ PAVISTREAM *ppStream,AVISTREAMINFOW *psi) PURE; STDMETHOD(WriteData) (THIS_ DWORD ckid,LPVOID lpData,LONG cbData) PURE; STDMETHOD(ReadData) (THIS_ DWORD ckid,LPVOID lpData,LONG *lpcbData) PURE; STDMETHOD(EndRecord) (THIS) PURE; STDMETHOD(DeleteStream) (THIS_ DWORD fccType,LONG lParam) PURE; }; #undef PAVIFILE typedef IAVIFile *PAVIFILE; #undef INTERFACE #define INTERFACE IGetFrame #define PGETFRAME IGetFrame * DECLARE_INTERFACE_(IGetFrame,IUnknown) { STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE; STDMETHOD(Begin) (THIS_ LONG lStart,LONG lEnd,LONG lRate) PURE; STDMETHOD(End) (THIS) PURE; STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi,LPVOID lpBits,int x,int y,int dx,int dy) PURE; }; #undef PGETFRAME typedef IGetFrame *PGETFRAME; #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0); DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0); DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0); DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0); DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0); DEFINE_AVIGUID(IID_IAVIPersistFile,0x00020025,0,0); #if !defined(UNICODE) DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal,0x00020009,0,0); #endif DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0); #define AVIFILEHANDLER_CANREAD 0x0001 #define AVIFILEHANDLER_CANWRITE 0x0002 #define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 #define AVIFileOpen __MINGW_NAME_AW(AVIFileOpen) #define AVIFileInfo __MINGW_NAME_AW(AVIFileInfo) #define AVIFileCreateStream __MINGW_NAME_AW(AVIFileCreateStream) #define AVIStreamInfo __MINGW_NAME_AW(AVIStreamInfo) #define AVIStreamOpenFromFile __MINGW_NAME_AW(AVIStreamOpenFromFile) STDAPI_(void) AVIFileInit(void); STDAPI_(void) AVIFileExit(void); STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile); STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); STDAPI AVIFileOpenA (PAVIFILE *ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler); STDAPI AVIFileOpenW (PAVIFILE *ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler); STDAPI AVIFileInfoW (PAVIFILE pfile,LPAVIFILEINFOW pfi,LONG lSize); STDAPI AVIFileInfoA (PAVIFILE pfile,LPAVIFILEINFOA pfi,LONG lSize); STDAPI AVIFileGetStream (PAVIFILE pfile,PAVISTREAM *ppavi,DWORD fccType,LONG lParam); STDAPI AVIFileCreateStreamW (PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOW *psi); STDAPI AVIFileCreateStreamA (PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOA *psi); STDAPI AVIFileWriteData (PAVIFILE pfile,DWORD ckid,LPVOID lpData,LONG cbData); STDAPI AVIFileReadData (PAVIFILE pfile,DWORD ckid,LPVOID lpData,LONG *lpcbData); STDAPI AVIFileEndRecord (PAVIFILE pfile); STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); STDAPI AVIStreamInfoW (PAVISTREAM pavi,LPAVISTREAMINFOW psi,LONG lSize); STDAPI AVIStreamInfoA (PAVISTREAM pavi,LPAVISTREAMINFOA psi,LONG lSize); STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi,LONG lPos,LONG lFlags); STDAPI AVIStreamReadFormat (PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG *lpcbFormat); STDAPI AVIStreamSetFormat (PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG cbFormat); STDAPI AVIStreamReadData (PAVISTREAM pavi,DWORD fcc,LPVOID lp,LONG *lpcb); STDAPI AVIStreamWriteData (PAVISTREAM pavi,DWORD fcc,LPVOID lp,LONG cb); STDAPI AVIStreamRead (PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG *plBytes,LONG *plSamples); #define AVISTREAMREAD_CONVENIENT (__MSABI_LONG(-1)) STDAPI AVIStreamWrite (PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG *plSampWritten,LONG *plBytesWritten); STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi,LONG lTime); STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi,LONG lSample); STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi,LONG lStart,LONG lEnd,LONG lRate); STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted); STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg,LONG lPos); STDAPI AVIStreamGetFrameClose(PGETFRAME pg); STDAPI AVIStreamOpenFromFileA(PAVISTREAM *ppavi,LPCSTR szFile,DWORD fccType,LONG lParam,UINT mode,CLSID *pclsidHandler); STDAPI AVIStreamOpenFromFileW(PAVISTREAM *ppavi,LPCWSTR szFile,DWORD fccType,LONG lParam,UINT mode,CLSID *pclsidHandler); STDAPI AVIStreamCreate(PAVISTREAM *ppavi,LONG lParam1,LONG lParam2,CLSID *pclsidHandler); #define FIND_DIR __MSABI_LONG(0x0000000F) #define FIND_NEXT __MSABI_LONG(0x00000001) #define FIND_PREV __MSABI_LONG(0x00000004) #define FIND_FROM_START __MSABI_LONG(0x00000008) #define FIND_TYPE __MSABI_LONG(0x000000F0) #define FIND_KEY __MSABI_LONG(0x00000010) #define FIND_ANY __MSABI_LONG(0x00000020) #define FIND_FORMAT __MSABI_LONG(0x00000040) #define FIND_RET __MSABI_LONG(0x0000F000) #define FIND_POS __MSABI_LONG(0x00000000) #define FIND_LENGTH __MSABI_LONG(0x00001000) #define FIND_OFFSET __MSABI_LONG(0x00002000) #define FIND_SIZE __MSABI_LONG(0x00003000) #define FIND_INDEX __MSABI_LONG(0x00004000) #define AVIStreamFindKeyFrame AVIStreamFindSample #define FindKeyFrame FindSample #define AVIStreamClose AVIStreamRelease #define AVIFileClose AVIFileRelease #define AVIStreamInit AVIFileInit #define AVIStreamExit AVIFileExit #define SEARCH_NEAREST FIND_PREV #define SEARCH_BACKWARD FIND_PREV #define SEARCH_FORWARD FIND_NEXT #define SEARCH_KEY FIND_KEY #define SEARCH_ANY FIND_ANY #define AVIStreamSampleToSample(pavi1,pavi2,l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,l)) #define AVIStreamNextSample(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY) #define AVIStreamPrevSample(pavi,l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY) #define AVIStreamNearestSample(pavi,l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY) #define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY) #define AVIStreamPrevKeyFrame(pavi,l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY) #define AVIStreamNearestKeyFrame(pavi,l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY) #define AVIStreamIsKeyFrame(pavi,l) (AVIStreamNearestKeyFrame(pavi,l)==l) #define AVIStreamPrevSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t))) #define AVIStreamNextSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t))) #define AVIStreamNearestSampleTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t))) #define AVIStreamNextKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi,t))) #define AVIStreamPrevKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi,t))) #define AVIStreamNearestKeyFrameTime(pavi,t) AVIStreamSampleToTime(pavi,AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi,t))) #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi)) #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi)) #define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi)) #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi)) #define AVIStreamSampleSize(pavi,lPos,plSize) AVIStreamRead(pavi,lPos,1,NULL,(LONG)0,plSize,NULL) #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) #define AVIStreamDataSize(pavi,fcc,plSize) AVIStreamReadData(pavi,fcc,NULL,plSize) #define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_KEY) #define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi, pos - 1, FIND_NEXT | FIND_KEY) #ifndef comptypeDIB #define comptypeDIB mmioFOURCC('D','I','B',' ') #endif #define AVISave __MINGW_NAME_AW(AVISave) #define AVISaveV __MINGW_NAME_AW(AVISaveV) #define AVIBuildFilter __MINGW_NAME_AW(AVIBuildFilter) #define EditStreamSetInfo __MINGW_NAME_AW(EditStreamSetInfo) #define EditStreamSetName __MINGW_NAME_AW(EditStreamSetName) STDAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID *pclsidHandler); EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pfile,LPAVICOMPRESSOPTIONS lpOptions,...); STDAPI AVISaveVA(LPCSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions); EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pfile,LPAVICOMPRESSOPTIONS lpOptions,...); STDAPI AVISaveVW(LPCWSTR szFile,CLSID *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions); STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd,UINT uiFlags,int nStreams,PAVISTREAM *ppavi,LPAVICOMPRESSOPTIONS *plpOptions); STDAPI AVISaveOptionsFree(int nStreams,LPAVICOMPRESSOPTIONS *plpOptions); STDAPI AVIBuildFilterW(LPWSTR lpszFilter,LONG cbFilter,WINBOOL fSaving); STDAPI AVIBuildFilterA(LPSTR lpszFilter,LONG cbFilter,WINBOOL fSaving); STDAPI AVIMakeFileFromStreams(PAVIFILE *ppfile,int nStreams,PAVISTREAM *papStreams); STDAPI AVIMakeStreamFromClipboard(UINT cfFormat,HANDLE hGlobal,PAVISTREAM *ppstream); STDAPI AVIPutFileOnClipboard(PAVIFILE pf); STDAPI AVIGetFromClipboard(PAVIFILE *lppf); STDAPI AVIClearClipboard(void); STDAPI CreateEditableStream(PAVISTREAM *ppsEditable,PAVISTREAM psSource); STDAPI EditStreamCut(PAVISTREAM pavi,LONG *plStart,LONG *plLength,PAVISTREAM *ppResult); STDAPI EditStreamCopy(PAVISTREAM pavi,LONG *plStart,LONG *plLength,PAVISTREAM *ppResult); STDAPI EditStreamPaste(PAVISTREAM pavi,LONG *plPos,LONG *plLength,PAVISTREAM pstream,LONG lStart,LONG lEnd); STDAPI EditStreamClone(PAVISTREAM pavi,PAVISTREAM *ppResult); STDAPI EditStreamSetNameA(PAVISTREAM pavi,LPCSTR lpszName); STDAPI EditStreamSetNameW(PAVISTREAM pavi,LPCWSTR lpszName); STDAPI EditStreamSetInfoW(PAVISTREAM pavi,LPAVISTREAMINFOW lpInfo,LONG cbInfo); STDAPI EditStreamSetInfoA(PAVISTREAM pavi,LPAVISTREAMINFOA lpInfo,LONG cbInfo); #ifndef AVIERR_OK #define AVIERR_OK __MSABI_LONG(0) #define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000 + error) #define AVIERR_UNSUPPORTED MAKE_AVIERR(101) #define AVIERR_BADFORMAT MAKE_AVIERR(102) #define AVIERR_MEMORY MAKE_AVIERR(103) #define AVIERR_INTERNAL MAKE_AVIERR(104) #define AVIERR_BADFLAGS MAKE_AVIERR(105) #define AVIERR_BADPARAM MAKE_AVIERR(106) #define AVIERR_BADSIZE MAKE_AVIERR(107) #define AVIERR_BADHANDLE MAKE_AVIERR(108) #define AVIERR_FILEREAD MAKE_AVIERR(109) #define AVIERR_FILEWRITE MAKE_AVIERR(110) #define AVIERR_FILEOPEN MAKE_AVIERR(111) #define AVIERR_COMPRESSOR MAKE_AVIERR(112) #define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113) #define AVIERR_READONLY MAKE_AVIERR(114) #define AVIERR_NODATA MAKE_AVIERR(115) #define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116) #define AVIERR_CANTCOMPRESS MAKE_AVIERR(117) #define AVIERR_USERABORT MAKE_AVIERR(198) #define AVIERR_ERROR MAKE_AVIERR(199) #endif #endif #ifndef NOMCIWND #ifdef __cplusplus #define MCIWndSM ::SendMessage #else #define MCIWndSM SendMessage #endif #define MCIWND_WINDOW_CLASS TEXT("MCIWndClass") #define MCIWndCreate __MINGW_NAME_AW(MCIWndCreate) HWND WINAPIV MCIWndCreateA(HWND hwndParent,HINSTANCE hInstance,DWORD dwStyle,LPCSTR szFile); HWND WINAPIV MCIWndCreateW(HWND hwndParent,HINSTANCE hInstance,DWORD dwStyle,LPCWSTR szFile); WINBOOL WINAPIV MCIWndRegisterClass(void); #define MCIWNDOPENF_NEW 0x0001 #define MCIWNDF_NOAUTOSIZEWINDOW 0x0001 #define MCIWNDF_NOPLAYBAR 0x0002 #define MCIWNDF_NOAUTOSIZEMOVIE 0x0004 #define MCIWNDF_NOMENU 0x0008 #define MCIWNDF_SHOWNAME 0x0010 #define MCIWNDF_SHOWPOS 0x0020 #define MCIWNDF_SHOWMODE 0x0040 #define MCIWNDF_SHOWALL 0x0070 #define MCIWNDF_NOTIFYMODE 0x0100 #define MCIWNDF_NOTIFYPOS 0x0200 #define MCIWNDF_NOTIFYSIZE 0x0400 #define MCIWNDF_NOTIFYERROR 0x1000 #define MCIWNDF_NOTIFYALL 0x1F00 #define MCIWNDF_NOTIFYANSI 0x0080 #define MCIWNDF_NOTIFYMEDIAA 0x0880 #define MCIWNDF_NOTIFYMEDIAW 0x0800 #define MCIWNDF_NOTIFYMEDIA __MINGW_NAME_AW(MCIWNDF_NOTIFYMEDIA) #define MCIWNDF_RECORD 0x2000 #define MCIWNDF_NOERRORDLG 0x4000 #define MCIWNDF_NOOPEN 0x8000 #define MCIWndCanPlay(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_PLAY,(WPARAM)0,(LPARAM)0) #define MCIWndCanRecord(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_RECORD,(WPARAM)0,(LPARAM)0) #define MCIWndCanSave(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_SAVE,(WPARAM)0,(LPARAM)0) #define MCIWndCanWindow(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_WINDOW,(WPARAM)0,(LPARAM)0) #define MCIWndCanEject(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_EJECT,(WPARAM)0,(LPARAM)0) #define MCIWndCanConfig(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_CAN_CONFIG,(WPARAM)0,(LPARAM)0) #define MCIWndPaletteKick(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_PALETTEKICK,(WPARAM)0,(LPARAM)0) #define MCIWndSave(hwnd,szFile) (LONG)MCIWndSM(hwnd,MCI_SAVE,(WPARAM)0,(LPARAM)(LPVOID)(szFile)) #define MCIWndSaveDialog(hwnd) MCIWndSave(hwnd,-1) #define MCIWndNew(hwnd,lp) (LONG)MCIWndSM(hwnd,MCIWNDM_NEW,(WPARAM)0,(LPARAM)(LPVOID)(lp)) #define MCIWndRecord(hwnd) (LONG)MCIWndSM(hwnd,MCI_RECORD,(WPARAM)0,(LPARAM)0) #define MCIWndOpen(hwnd,sz,f) (LONG)MCIWndSM(hwnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz)) #define MCIWndOpenDialog(hwnd) MCIWndOpen(hwnd,-1,0) #define MCIWndClose(hwnd) (LONG)MCIWndSM(hwnd,MCI_CLOSE,(WPARAM)0,(LPARAM)0) #define MCIWndPlay(hwnd) (LONG)MCIWndSM(hwnd,MCI_PLAY,(WPARAM)0,(LPARAM)0) #define MCIWndStop(hwnd) (LONG)MCIWndSM(hwnd,MCI_STOP,(WPARAM)0,(LPARAM)0) #define MCIWndPause(hwnd) (LONG)MCIWndSM(hwnd,MCI_PAUSE,(WPARAM)0,(LPARAM)0) #define MCIWndResume(hwnd) (LONG)MCIWndSM(hwnd,MCI_RESUME,(WPARAM)0,(LPARAM)0) #define MCIWndSeek(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCI_SEEK,(WPARAM)0,(LPARAM)(LONG)(lPos)) #define MCIWndEject(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_EJECT,(WPARAM)0,(LPARAM)0) #define MCIWndHome(hwnd) MCIWndSeek(hwnd,MCIWND_START) #define MCIWndEnd(hwnd) MCIWndSeek(hwnd,MCIWND_END) #define MCIWndGetSource(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_GET_SOURCE,(WPARAM)0,(LPARAM)(LPRECT)(prc)) #define MCIWndPutSource(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_PUT_SOURCE,(WPARAM)0,(LPARAM)(LPRECT)(prc)) #define MCIWndGetDest(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_GET_DEST,(WPARAM)0,(LPARAM)(LPRECT)(prc)) #define MCIWndPutDest(hwnd,prc) (LONG)MCIWndSM(hwnd,MCIWNDM_PUT_DEST,(WPARAM)0,(LPARAM)(LPRECT)(prc)) #define MCIWndPlayReverse(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYREVERSE,(WPARAM)0,(LPARAM)0) #define MCIWndPlayFrom(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYFROM,(WPARAM)0,(LPARAM)(LONG)(lPos)) #define MCIWndPlayTo(hwnd,lPos) (LONG)MCIWndSM(hwnd,MCIWNDM_PLAYTO,(WPARAM)0,(LPARAM)(LONG)(lPos)) #define MCIWndPlayFromTo(hwnd,lStart,lEnd) (MCIWndSeek(hwnd,lStart),MCIWndPlayTo(hwnd,lEnd)) #define MCIWndGetDeviceID(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETDEVICEID,(WPARAM)0,(LPARAM)0) #define MCIWndGetAlias(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETALIAS,(WPARAM)0,(LPARAM)0) #define MCIWndGetMode(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp)) #define MCIWndGetPosition(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETPOSITION,(WPARAM)0,(LPARAM)0) #define MCIWndGetPositionString(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp)) #define MCIWndGetStart(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETSTART,(WPARAM)0,(LPARAM)0) #define MCIWndGetLength(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETLENGTH,(WPARAM)0,(LPARAM)0) #define MCIWndGetEnd(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETEND,(WPARAM)0,(LPARAM)0) #define MCIWndStep(hwnd,n) (LONG)MCIWndSM(hwnd,MCI_STEP,(WPARAM)0,(LPARAM)(__LONG32)(n)) #define MCIWndDestroy(hwnd) (VOID)MCIWndSM(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0) #define MCIWndSetZoom(hwnd,iZoom) (VOID)MCIWndSM(hwnd,MCIWNDM_SETZOOM,(WPARAM)0,(LPARAM)(UINT)(iZoom)) #define MCIWndGetZoom(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETZOOM,(WPARAM)0,(LPARAM)0) #define MCIWndSetVolume(hwnd,iVol) (LONG)MCIWndSM(hwnd,MCIWNDM_SETVOLUME,(WPARAM)0,(LPARAM)(UINT)(iVol)) #define MCIWndGetVolume(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETVOLUME,(WPARAM)0,(LPARAM)0) #define MCIWndSetSpeed(hwnd,iSpeed) (LONG)MCIWndSM(hwnd,MCIWNDM_SETSPEED,(WPARAM)0,(LPARAM)(UINT)(iSpeed)) #define MCIWndGetSpeed(hwnd) (LONG)MCIWndSM(hwnd,MCIWNDM_GETSPEED,(WPARAM)0,(LPARAM)0) #define MCIWndSetTimeFormat(hwnd,lp) (LONG)MCIWndSM(hwnd,MCIWNDM_SETTIMEFORMAT,(WPARAM)0,(LPARAM)(LPTSTR)(lp)) #define MCIWndGetTimeFormat(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp)) #define MCIWndValidateMedia(hwnd) (VOID)MCIWndSM(hwnd,MCIWNDM_VALIDATEMEDIA,(WPARAM)0,(LPARAM)0) #define MCIWndSetRepeat(hwnd,f) (void)MCIWndSM(hwnd,MCIWNDM_SETREPEAT,(WPARAM)0,(LPARAM)(WINBOOL)(f)) #define MCIWndGetRepeat(hwnd) (WINBOOL)MCIWndSM(hwnd,MCIWNDM_GETREPEAT,(WPARAM)0,(LPARAM)0) #define MCIWndUseFrames(hwnd) MCIWndSetTimeFormat(hwnd,TEXT("frames")) #define MCIWndUseTime(hwnd) MCIWndSetTimeFormat(hwnd,TEXT("ms")) #define MCIWndSetActiveTimer(hwnd,active) (VOID)MCIWndSM(hwnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),(LPARAM)0) #define MCIWndSetInactiveTimer(hwnd,inactive) (VOID)MCIWndSM(hwnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),(LPARAM)0) #define MCIWndSetTimers(hwnd,active,inactive) (VOID)MCIWndSM(hwnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive)) #define MCIWndGetActiveTimer(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETACTIVETIMER,(WPARAM)0,(LPARAM)0); #define MCIWndGetInactiveTimer(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETINACTIVETIMER,(WPARAM)0,(LPARAM)0); #define MCIWndRealize(hwnd,fBkgnd) (LONG)MCIWndSM(hwnd,MCIWNDM_REALIZE,(WPARAM)(WINBOOL)(fBkgnd),(LPARAM)0) #define MCIWndSendString(hwnd,sz) (LONG)MCIWndSM(hwnd,MCIWNDM_SENDSTRING,(WPARAM)0,(LPARAM)(LPTSTR)(sz)) #define MCIWndReturnString(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) #define MCIWndGetError(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) #define MCIWndGetPalette(hwnd) (HPALETTE)MCIWndSM(hwnd,MCIWNDM_GETPALETTE,(WPARAM)0,(LPARAM)0) #define MCIWndSetPalette(hwnd,hpal) (LONG)MCIWndSM(hwnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),(LPARAM)0) #define MCIWndGetFileName(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) #define MCIWndGetDevice(hwnd,lp,len) (LONG)MCIWndSM(hwnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) #define MCIWndGetStyles(hwnd) (UINT)MCIWndSM(hwnd,MCIWNDM_GETSTYLES,(WPARAM)0,(LPARAM)0) #define MCIWndChangeStyles(hwnd,mask,value) (LONG)MCIWndSM(hwnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value)) #define MCIWndOpenInterface(hwnd,pUnk) (LONG)MCIWndSM(hwnd,MCIWNDM_OPENINTERFACE,(WPARAM)0,(LPARAM)(LPUNKNOWN)(pUnk)) #define MCIWndSetOwner(hwnd,hwndP) (LONG)MCIWndSM(hwnd,MCIWNDM_SETOWNER,(WPARAM)(hwndP),(LPARAM)0) #define MCIWNDM_GETDEVICEID (WM_USER + 100) #define MCIWNDM_GETSTART (WM_USER + 103) #define MCIWNDM_GETLENGTH (WM_USER + 104) #define MCIWNDM_GETEND (WM_USER + 105) #define MCIWNDM_EJECT (WM_USER + 107) #define MCIWNDM_SETZOOM (WM_USER + 108) #define MCIWNDM_GETZOOM (WM_USER + 109) #define MCIWNDM_SETVOLUME (WM_USER + 110) #define MCIWNDM_GETVOLUME (WM_USER + 111) #define MCIWNDM_SETSPEED (WM_USER + 112) #define MCIWNDM_GETSPEED (WM_USER + 113) #define MCIWNDM_SETREPEAT (WM_USER + 114) #define MCIWNDM_GETREPEAT (WM_USER + 115) #define MCIWNDM_REALIZE (WM_USER + 118) #define MCIWNDM_VALIDATEMEDIA (WM_USER + 121) #define MCIWNDM_PLAYFROM (WM_USER + 122) #define MCIWNDM_PLAYTO (WM_USER + 123) #define MCIWNDM_GETPALETTE (WM_USER + 126) #define MCIWNDM_SETPALETTE (WM_USER + 127) #define MCIWNDM_SETTIMERS (WM_USER + 129) #define MCIWNDM_SETACTIVETIMER (WM_USER + 130) #define MCIWNDM_SETINACTIVETIMER (WM_USER + 131) #define MCIWNDM_GETACTIVETIMER (WM_USER + 132) #define MCIWNDM_GETINACTIVETIMER (WM_USER + 133) #define MCIWNDM_CHANGESTYLES (WM_USER + 135) #define MCIWNDM_GETSTYLES (WM_USER + 136) #define MCIWNDM_GETALIAS (WM_USER + 137) #define MCIWNDM_PLAYREVERSE (WM_USER + 139) #define MCIWNDM_GET_SOURCE (WM_USER + 140) #define MCIWNDM_PUT_SOURCE (WM_USER + 141) #define MCIWNDM_GET_DEST (WM_USER + 142) #define MCIWNDM_PUT_DEST (WM_USER + 143) #define MCIWNDM_CAN_PLAY (WM_USER + 144) #define MCIWNDM_CAN_WINDOW (WM_USER + 145) #define MCIWNDM_CAN_RECORD (WM_USER + 146) #define MCIWNDM_CAN_SAVE (WM_USER + 147) #define MCIWNDM_CAN_EJECT (WM_USER + 148) #define MCIWNDM_CAN_CONFIG (WM_USER + 149) #define MCIWNDM_PALETTEKICK (WM_USER + 150) #define MCIWNDM_OPENINTERFACE (WM_USER + 151) #define MCIWNDM_SETOWNER (WM_USER + 152) #define MCIWNDM_SENDSTRINGA (WM_USER + 101) #define MCIWNDM_GETPOSITIONA (WM_USER + 102) #define MCIWNDM_GETMODEA (WM_USER + 106) #define MCIWNDM_SETTIMEFORMATA (WM_USER + 119) #define MCIWNDM_GETTIMEFORMATA (WM_USER + 120) #define MCIWNDM_GETFILENAMEA (WM_USER + 124) #define MCIWNDM_GETDEVICEA (WM_USER + 125) #define MCIWNDM_GETERRORA (WM_USER + 128) #define MCIWNDM_NEWA (WM_USER + 134) #define MCIWNDM_RETURNSTRINGA (WM_USER + 138) #define MCIWNDM_OPENA (WM_USER + 153) #define MCIWNDM_SENDSTRINGW (WM_USER + 201) #define MCIWNDM_GETPOSITIONW (WM_USER + 202) #define MCIWNDM_GETMODEW (WM_USER + 206) #define MCIWNDM_SETTIMEFORMATW (WM_USER + 219) #define MCIWNDM_GETTIMEFORMATW (WM_USER + 220) #define MCIWNDM_GETFILENAMEW (WM_USER + 224) #define MCIWNDM_GETDEVICEW (WM_USER + 225) #define MCIWNDM_GETERRORW (WM_USER + 228) #define MCIWNDM_NEWW (WM_USER + 234) #define MCIWNDM_RETURNSTRINGW (WM_USER + 238) #define MCIWNDM_OPENW (WM_USER + 252) #define MCIWNDM_SENDSTRING __MINGW_NAME_AW(MCIWNDM_SENDSTRING) #define MCIWNDM_GETPOSITION __MINGW_NAME_AW(MCIWNDM_GETPOSITION) #define MCIWNDM_GETMODE __MINGW_NAME_AW(MCIWNDM_GETMODE) #define MCIWNDM_SETTIMEFORMAT __MINGW_NAME_AW(MCIWNDM_SETTIMEFORMAT) #define MCIWNDM_GETTIMEFORMAT __MINGW_NAME_AW(MCIWNDM_GETTIMEFORMAT) #define MCIWNDM_GETFILENAME __MINGW_NAME_AW(MCIWNDM_GETFILENAME) #define MCIWNDM_GETDEVICE __MINGW_NAME_AW(MCIWNDM_GETDEVICE) #define MCIWNDM_GETERROR __MINGW_NAME_AW(MCIWNDM_GETERROR) #define MCIWNDM_NEW __MINGW_NAME_AW(MCIWNDM_NEW) #define MCIWNDM_RETURNSTRING __MINGW_NAME_AW(MCIWNDM_RETURNSTRING) #define MCIWNDM_OPEN __MINGW_NAME_AW(MCIWNDM_OPEN) #define MCIWNDM_NOTIFYMODE (WM_USER + 200) #define MCIWNDM_NOTIFYPOS (WM_USER + 201) #define MCIWNDM_NOTIFYSIZE (WM_USER + 202) #define MCIWNDM_NOTIFYMEDIA (WM_USER + 203) #define MCIWNDM_NOTIFYERROR (WM_USER + 205) #define MCIWND_START -1 #define MCIWND_END -2 #ifndef MCI_PLAY #define MCI_CLOSE 0x0804 #define MCI_PLAY 0x0806 #define MCI_SEEK 0x0807 #define MCI_STOP 0x0808 #define MCI_PAUSE 0x0809 #define MCI_STEP 0x080E #define MCI_RECORD 0x080F #define MCI_SAVE 0x0813 #define MCI_CUT 0x0851 #define MCI_COPY 0x0852 #define MCI_PASTE 0x0853 #define MCI_RESUME 0x0855 #define MCI_DELETE 0x0856 #endif #ifndef MCI_MODE_NOT_READY #define MCI_MODE_NOT_READY (524) #define MCI_MODE_STOP (525) #define MCI_MODE_PLAY (526) #define MCI_MODE_RECORD (527) #define MCI_MODE_SEEK (528) #define MCI_MODE_PAUSE (529) #define MCI_MODE_OPEN (530) #endif #endif #if !defined(NOAVICAP) || !defined(NOVIDEO) #ifndef _RCINVOKED DECLARE_HANDLE(HVIDEO); typedef HVIDEO *LPHVIDEO; #endif DWORD WINAPI VideoForWindowsVersion(void); #define DV_ERR_OK (0) #define DV_ERR_BASE (1) #define DV_ERR_NONSPECIFIC (DV_ERR_BASE) #define DV_ERR_BADFORMAT (DV_ERR_BASE + 1) #define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2) #define DV_ERR_UNPREPARED (DV_ERR_BASE + 3) #define DV_ERR_SYNC (DV_ERR_BASE + 4) #define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5) #define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6) #define DV_ERR_BADINSTALL (DV_ERR_BASE + 7) #define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8) #define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9) #define DV_ERR_PARAM1 (DV_ERR_BASE + 10) #define DV_ERR_PARAM2 (DV_ERR_BASE + 11) #define DV_ERR_CONFIG1 (DV_ERR_BASE + 12) #define DV_ERR_CONFIG2 (DV_ERR_BASE + 13) #define DV_ERR_FLAGS (DV_ERR_BASE + 14) #define DV_ERR_13 (DV_ERR_BASE + 15) #define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16) #define DV_ERR_NOMEM (DV_ERR_BASE + 17) #define DV_ERR_ALLOCATED (DV_ERR_BASE + 18) #define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19) #define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20) #define DV_ERR_BADERRNUM (DV_ERR_BASE + 21) #define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22) #define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23) #define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24) #define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25) #define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26) #define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27) #define DV_ERR_LASTERROR (DV_ERR_BASE + 27) #define DV_ERR_USER_MSG (DV_ERR_BASE + 1000) #ifndef _RCINVOKED #ifndef MM_DRVM_OPEN #define MM_DRVM_OPEN 0x3D0 #define MM_DRVM_CLOSE 0x3D1 #define MM_DRVM_DATA 0x3D2 #define MM_DRVM_ERROR 0x3D3 #endif #define DV_VM_OPEN MM_DRVM_OPEN #define DV_VM_CLOSE MM_DRVM_CLOSE #define DV_VM_DATA MM_DRVM_DATA #define DV_VM_ERROR MM_DRVM_ERROR typedef struct videohdr_tag { LPBYTE lpData; DWORD dwBufferLength; DWORD dwBytesUsed; DWORD dwTimeCaptured; DWORD_PTR dwUser; DWORD dwFlags; DWORD_PTR dwReserved[4]; } VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR; #define VHDR_DONE 0x00000001 #define VHDR_PREPARED 0x00000002 #define VHDR_INQUEUE 0x00000004 #define VHDR_KEYFRAME 0x00000008 #define VHDR_VALID 0x0000000F typedef struct channel_caps_tag { DWORD dwFlags; DWORD dwSrcRectXMod; DWORD dwSrcRectYMod; DWORD dwSrcRectWidthMod; DWORD dwSrcRectHeightMod; DWORD dwDstRectXMod; DWORD dwDstRectYMod; DWORD dwDstRectWidthMod; DWORD dwDstRectHeightMod; } CHANNEL_CAPS,NEAR *PCHANNEL_CAPS,*LPCHANNEL_CAPS; #define VCAPS_OVERLAY 0x00000001 #define VCAPS_SRC_CAN_CLIP 0x00000002 #define VCAPS_DST_CAN_CLIP 0x00000004 #define VCAPS_CAN_SCALE 0x00000008 #define VIDEO_EXTERNALIN 0x0001 #define VIDEO_EXTERNALOUT 0x0002 #define VIDEO_IN 0x0004 #define VIDEO_OUT 0x0008 #define VIDEO_DLG_QUERY 0x0010 #define VIDEO_CONFIGURE_QUERY 0x8000 #define VIDEO_CONFIGURE_SET 0x1000 #define VIDEO_CONFIGURE_GET 0x2000 #define VIDEO_CONFIGURE_QUERYSIZE 0x0001 #define VIDEO_CONFIGURE_CURRENT 0x0010 #define VIDEO_CONFIGURE_NOMINAL 0x0020 #define VIDEO_CONFIGURE_MIN 0x0040 #define VIDEO_CONFIGURE_MAX 0x0080 #define DVM_USER 0X4000 #define DVM_CONFIGURE_START 0x1000 #define DVM_CONFIGURE_END 0x1FFF #define DVM_PALETTE (DVM_CONFIGURE_START + 1) #define DVM_FORMAT (DVM_CONFIGURE_START + 2) #define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3) #define DVM_SRC_RECT (DVM_CONFIGURE_START + 4) #define DVM_DST_RECT (DVM_CONFIGURE_START + 5) #endif #endif #ifndef NOAVICAP #ifdef __cplusplus #define AVICapSM(hwnd,m,w,l) ((::IsWindow(hwnd)) ? ::SendMessage(hwnd,m,w,l) : 0) #else #define AVICapSM(hwnd,m,w,l) ((IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0) #endif #ifndef RC_INVOKED #define WM_CAP_START WM_USER #define WM_CAP_UNICODE_START WM_USER+100 #define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START+ 1) #define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START+ 2) #define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START+ 3) #define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START+ 2) #define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START+ 3) #define WM_CAP_SET_CALLBACK_ERROR __MINGW_NAME_AW(WM_CAP_SET_CALLBACK_ERROR) #define WM_CAP_SET_CALLBACK_STATUS __MINGW_NAME_AW(WM_CAP_SET_CALLBACK_STATUS) #define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START+ 4) #define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START+ 5) #define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START+ 6) #define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START+ 7) #define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8) #define WM_CAP_SET_USER_DATA (WM_CAP_START+ 9) #define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10) #define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+ 11) #define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START+ 12) #define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START+ 13) #define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START+ 12) #define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START+ 13) #define WM_CAP_DRIVER_GET_NAME __MINGW_NAME_AW(WM_CAP_DRIVER_GET_NAME) #define WM_CAP_DRIVER_GET_VERSION __MINGW_NAME_AW(WM_CAP_DRIVER_GET_VERSION) #define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+ 14) #define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START+ 20) #define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START+ 21) #define WM_CAP_FILE_SAVEASA (WM_CAP_START+ 23) #define WM_CAP_FILE_SAVEDIBA (WM_CAP_START+ 25) #define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 20) #define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 21) #define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START+ 23) #define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START+ 25) #define WM_CAP_FILE_SET_CAPTURE_FILE __MINGW_NAME_AW(WM_CAP_FILE_SET_CAPTURE_FILE) #define WM_CAP_FILE_GET_CAPTURE_FILE __MINGW_NAME_AW(WM_CAP_FILE_GET_CAPTURE_FILE) #define WM_CAP_FILE_SAVEAS __MINGW_NAME_AW(WM_CAP_FILE_SAVEAS) #define WM_CAP_FILE_SAVEDIB __MINGW_NAME_AW(WM_CAP_FILE_SAVEDIB) #define WM_CAP_FILE_ALLOCATE (WM_CAP_START+ 22) #define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START+ 24) #define WM_CAP_EDIT_COPY (WM_CAP_START+ 30) #define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START+ 35) #define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START+ 36) #define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START+ 41) #define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START+ 42) #define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START+ 43) #define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START+ 44) #define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START+ 45) #define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START+ 46) #define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50) #define WM_CAP_SET_OVERLAY (WM_CAP_START+ 51) #define WM_CAP_SET_PREVIEWRATE (WM_CAP_START+ 52) #define WM_CAP_SET_SCALE (WM_CAP_START+ 53) #define WM_CAP_GET_STATUS (WM_CAP_START+ 54) #define WM_CAP_SET_SCROLL (WM_CAP_START+ 55) #define WM_CAP_GRAB_FRAME (WM_CAP_START+ 60) #define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START+ 61) #define WM_CAP_SEQUENCE (WM_CAP_START+ 62) #define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START+ 63) #define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START+ 64) #define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START+ 65) #define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START+ 66) #define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START+ 67) #define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 66) #define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 67) #define WM_CAP_SET_MCI_DEVICE __MINGW_NAME_AW(WM_CAP_SET_MCI_DEVICE) #define WM_CAP_GET_MCI_DEVICE __MINGW_NAME_AW(WM_CAP_GET_MCI_DEVICE) #define WM_CAP_STOP (WM_CAP_START+ 68) #define WM_CAP_ABORT (WM_CAP_START+ 69) #define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START+ 70) #define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START+ 71) #define WM_CAP_SINGLE_FRAME (WM_CAP_START+ 72) #define WM_CAP_PAL_OPENA (WM_CAP_START+ 80) #define WM_CAP_PAL_SAVEA (WM_CAP_START+ 81) #define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START+ 80) #define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START+ 81) #define WM_CAP_PAL_OPEN __MINGW_NAME_AW(WM_CAP_PAL_OPEN) #define WM_CAP_PAL_SAVE __MINGW_NAME_AW(WM_CAP_PAL_SAVE) #define WM_CAP_PAL_PASTE (WM_CAP_START+ 82) #define WM_CAP_PAL_AUTOCREATE (WM_CAP_START+ 83) #define WM_CAP_PAL_MANUALCREATE (WM_CAP_START+ 84) #define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START+ 85) #define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW #define WM_CAP_END WM_CAP_UNICODE_END #define capSetCallbackOnError(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_ERROR,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnStatus(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_STATUS,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnYield(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_YIELD,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnFrame(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_FRAME,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnVideoStream(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_VIDEOSTREAM,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnWaveStream(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_WAVESTREAM,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnCapControl(hwnd,fpProc) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_CALLBACK_CAPCONTROL,(WPARAM)0,(LPARAM)(LPVOID)(fpProc))) #define capSetUserData(hwnd,lUser) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_USER_DATA,(WPARAM)0,(LPARAM)lUser)) #define capGetUserData(hwnd) (AVICapSM(hwnd,WM_CAP_GET_USER_DATA,(WPARAM)0,(LPARAM)0)) #define capDriverConnect(hwnd,i) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_CONNECT,(WPARAM)(i),(LPARAM)0)) #define capDriverDisconnect(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_DISCONNECT,(WPARAM)0,(LPARAM)0)) #define capDriverGetName(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_NAME,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capDriverGetVersion(hwnd,szVer,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_VERSION,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szVer))) #define capDriverGetCaps(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DRIVER_GET_CAPS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(s))) #define capFileSetCaptureFile(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SET_CAPTURE_FILE,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capFileGetCaptureFile(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_GET_CAPTURE_FILE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capFileAlloc(hwnd,dwSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_ALLOCATE,(WPARAM)0,(LPARAM)(DWORD)(dwSize))) #define capFileSaveAs(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SAVEAS,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capFileSetInfoChunk(hwnd,lpInfoChunk) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SET_INFOCHUNK,(WPARAM)0,(LPARAM)(LPCAPINFOCHUNK)(lpInfoChunk))) #define capFileSaveDIB(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_FILE_SAVEDIB,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capEditCopy(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_EDIT_COPY,(WPARAM)0,(LPARAM)0)) #define capSetAudioFormat(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(s))) #define capGetAudioFormat(hwnd,s,wSize) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPWAVEFORMATEX)(s))) #define capGetAudioFormatSize(hwnd) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_AUDIOFORMAT,(WPARAM)0,(LPARAM)0)) #define capDlgVideoFormat(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOFORMAT,(WPARAM)0,(LPARAM)0)) #define capDlgVideoSource(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOSOURCE,(WPARAM)0,(LPARAM)0)) #define capDlgVideoDisplay(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEODISPLAY,(WPARAM)0,(LPARAM)0)) #define capDlgVideoCompression(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_DLG_VIDEOCOMPRESSION,(WPARAM)0,(LPARAM)0)) #define capGetVideoFormat(hwnd,s,wSize) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(s))) #define capGetVideoFormatSize(hwnd) ((DWORD)AVICapSM(hwnd,WM_CAP_GET_VIDEOFORMAT,(WPARAM)0,(LPARAM)0)) #define capSetVideoFormat(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_VIDEOFORMAT,(WPARAM)(wSize),(LPARAM)(LPVOID)(s))) #define capPreview(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_PREVIEW,(WPARAM)(WINBOOL)(f),(LPARAM)0)) #define capPreviewRate(hwnd,wMS) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_PREVIEWRATE,(WPARAM)(wMS),(LPARAM)0)) #define capOverlay(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_OVERLAY,(WPARAM)(WINBOOL)(f),(LPARAM)0)) #define capPreviewScale(hwnd,f) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SCALE,(WPARAM)(WINBOOL)f,(LPARAM)0)) #define capGetStatus(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_STATUS,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPSTATUS)(s))) #define capSetScrollPos(hwnd,lpP) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SCROLL,(WPARAM)0,(LPARAM)(LPPOINT)(lpP))) #define capGrabFrame(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GRAB_FRAME,(WPARAM)0,(LPARAM)0)) #define capGrabFrameNoStop(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GRAB_FRAME_NOSTOP,(WPARAM)0,(LPARAM)0)) #define capCaptureSequence(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SEQUENCE,(WPARAM)0,(LPARAM)0)) #define capCaptureSequenceNoFile(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SEQUENCE_NOFILE,(WPARAM)0,(LPARAM)0)) #define capCaptureStop(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_STOP,(WPARAM)0,(LPARAM)0)) #define capCaptureAbort(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_ABORT,(WPARAM)0,(LPARAM)0)) #define capCaptureSingleFrameOpen(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME_OPEN,(WPARAM)0,(LPARAM)0)) #define capCaptureSingleFrameClose(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME_CLOSE,(WPARAM)0,(LPARAM)0)) #define capCaptureSingleFrame(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SINGLE_FRAME,(WPARAM)0,(LPARAM)0)) #define capCaptureGetSetup(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s))) #define capCaptureSetSetup(hwnd,s,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_SEQUENCE_SETUP,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPCAPTUREPARMS)(s))) #define capSetMCIDeviceName(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_SET_MCI_DEVICE,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capGetMCIDeviceName(hwnd,szName,wSize) ((WINBOOL)AVICapSM(hwnd,WM_CAP_GET_MCI_DEVICE,(WPARAM)(wSize),(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capPaletteOpen(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_OPEN,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capPaletteSave(hwnd,szName) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_SAVE,(WPARAM)0,(LPARAM)(LPVOID)(LPTSTR)(szName))) #define capPalettePaste(hwnd) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_PASTE,(WPARAM) 0,(LPARAM)0)) #define capPaletteAuto(hwnd,iFrames,iColors) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_AUTOCREATE,(WPARAM)(iFrames),(LPARAM)(DWORD)(iColors))) #define capPaletteManual(hwnd,fGrab,iColors) ((WINBOOL)AVICapSM(hwnd,WM_CAP_PAL_MANUALCREATE,(WPARAM)(fGrab),(LPARAM)(DWORD)(iColors))) typedef struct tagCapDriverCaps { UINT wDeviceIndex; WINBOOL fHasOverlay; WINBOOL fHasDlgVideoSource; WINBOOL fHasDlgVideoFormat; WINBOOL fHasDlgVideoDisplay; WINBOOL fCaptureInitialized; WINBOOL fDriverSuppliesPalettes; HANDLE hVideoIn; HANDLE hVideoOut; HANDLE hVideoExtIn; HANDLE hVideoExtOut; } CAPDRIVERCAPS,*PCAPDRIVERCAPS,*LPCAPDRIVERCAPS; typedef struct tagCapStatus { UINT uiImageWidth; UINT uiImageHeight; WINBOOL fLiveWindow; WINBOOL fOverlayWindow; WINBOOL fScale; POINT ptScroll; WINBOOL fUsingDefaultPalette; WINBOOL fAudioHardware; WINBOOL fCapFileExists; DWORD dwCurrentVideoFrame; DWORD dwCurrentVideoFramesDropped; DWORD dwCurrentWaveSamples; DWORD dwCurrentTimeElapsedMS; HPALETTE hPalCurrent; WINBOOL fCapturingNow; DWORD dwReturn; UINT wNumVideoAllocated; UINT wNumAudioAllocated; } CAPSTATUS,*PCAPSTATUS,*LPCAPSTATUS; typedef struct tagCaptureParms { DWORD dwRequestMicroSecPerFrame; WINBOOL fMakeUserHitOKToCapture; UINT wPercentDropForError; WINBOOL fYield; DWORD dwIndexSize; UINT wChunkGranularity; WINBOOL fUsingDOSMemory; UINT wNumVideoRequested; WINBOOL fCaptureAudio; UINT wNumAudioRequested; UINT vKeyAbort; WINBOOL fAbortLeftMouse; WINBOOL fAbortRightMouse; WINBOOL fLimitEnabled; UINT wTimeLimit; WINBOOL fMCIControl; WINBOOL fStepMCIDevice; DWORD dwMCIStartTime; DWORD dwMCIStopTime; WINBOOL fStepCaptureAt2x; UINT wStepCaptureAverageFrames; DWORD dwAudioBufferSize; WINBOOL fDisableWriteCache; UINT AVStreamMaster; } CAPTUREPARMS,*PCAPTUREPARMS,*LPCAPTUREPARMS; #define AVSTREAMMASTER_AUDIO 0 #define AVSTREAMMASTER_NONE 1 typedef struct tagCapInfoChunk { FOURCC fccInfoID; LPVOID lpData; LONG cbData; } CAPINFOCHUNK,*PCAPINFOCHUNK,*LPCAPINFOCHUNK; typedef LRESULT (CALLBACK *CAPYIELDCALLBACK)(HWND hWnd); typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKW)(HWND hWnd,int nID,LPCWSTR lpsz); typedef LRESULT (CALLBACK *CAPERRORCALLBACKW)(HWND hWnd,int nID,LPCWSTR lpsz); typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKA)(HWND hWnd,int nID,LPCSTR lpsz); typedef LRESULT (CALLBACK *CAPERRORCALLBACKA)(HWND hWnd,int nID,LPCSTR lpsz); #define CAPSTATUSCALLBACK __MINGW_NAME_AW(CAPSTATUSCALLBACK) #define CAPERRORCALLBACK __MINGW_NAME_AW(CAPERRORCALLBACK) typedef LRESULT (CALLBACK *CAPVIDEOCALLBACK)(HWND hWnd,LPVIDEOHDR lpVHdr); typedef LRESULT (CALLBACK *CAPWAVECALLBACK)(HWND hWnd,LPWAVEHDR lpWHdr); typedef LRESULT (CALLBACK *CAPCONTROLCALLBACK)(HWND hWnd,int nState); #define CONTROLCALLBACK_PREROLL 1 #define CONTROLCALLBACK_CAPTURING 2 HWND WINAPI capCreateCaptureWindowA (LPCSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,int nID); WINBOOL WINAPI capGetDriverDescriptionA (UINT wDriverIndex,LPSTR lpszName,int cbName,LPSTR lpszVer,int cbVer); HWND WINAPI capCreateCaptureWindowW (LPCWSTR lpszWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hwndParent,int nID); WINBOOL WINAPI capGetDriverDescriptionW (UINT wDriverIndex,LPWSTR lpszName,int cbName,LPWSTR lpszVer,int cbVer); #define capCreateCaptureWindow __MINGW_NAME_AW(capCreateCaptureWindow) #define capGetDriverDescription __MINGW_NAME_AW(capGetDriverDescription) #endif #define infotypeDIGITIZATION_TIME mmioFOURCC ('I','D','I','T') #define infotypeSMPTE_TIME mmioFOURCC ('I','S','M','P') #define IDS_CAP_BEGIN 300 #define IDS_CAP_END 301 #define IDS_CAP_INFO 401 #define IDS_CAP_OUTOFMEM 402 #define IDS_CAP_FILEEXISTS 403 #define IDS_CAP_ERRORPALOPEN 404 #define IDS_CAP_ERRORPALSAVE 405 #define IDS_CAP_ERRORDIBSAVE 406 #define IDS_CAP_DEFAVIEXT 407 #define IDS_CAP_DEFPALEXT 408 #define IDS_CAP_CANTOPEN 409 #define IDS_CAP_SEQ_MSGSTART 410 #define IDS_CAP_SEQ_MSGSTOP 411 #define IDS_CAP_VIDEDITERR 412 #define IDS_CAP_READONLYFILE 413 #define IDS_CAP_WRITEERROR 414 #define IDS_CAP_NODISKSPACE 415 #define IDS_CAP_SETFILESIZE 416 #define IDS_CAP_SAVEASPERCENT 417 #define IDS_CAP_DRIVER_ERROR 418 #define IDS_CAP_WAVE_OPEN_ERROR 419 #define IDS_CAP_WAVE_ALLOC_ERROR 420 #define IDS_CAP_WAVE_PREPARE_ERROR 421 #define IDS_CAP_WAVE_ADD_ERROR 422 #define IDS_CAP_WAVE_SIZE_ERROR 423 #define IDS_CAP_VIDEO_OPEN_ERROR 424 #define IDS_CAP_VIDEO_ALLOC_ERROR 425 #define IDS_CAP_VIDEO_PREPARE_ERROR 426 #define IDS_CAP_VIDEO_ADD_ERROR 427 #define IDS_CAP_VIDEO_SIZE_ERROR 428 #define IDS_CAP_FILE_OPEN_ERROR 429 #define IDS_CAP_FILE_WRITE_ERROR 430 #define IDS_CAP_RECORDING_ERROR 431 #define IDS_CAP_RECORDING_ERROR2 432 #define IDS_CAP_AVI_INIT_ERROR 433 #define IDS_CAP_NO_FRAME_CAP_ERROR 434 #define IDS_CAP_NO_PALETTE_WARN 435 #define IDS_CAP_MCI_CONTROL_ERROR 436 #define IDS_CAP_MCI_CANT_STEP_ERROR 437 #define IDS_CAP_NO_AUDIO_CAP_ERROR 438 #define IDS_CAP_AVI_DRAWDIB_ERROR 439 #define IDS_CAP_COMPRESSOR_ERROR 440 #define IDS_CAP_AUDIO_DROP_ERROR 441 #define IDS_CAP_AUDIO_DROP_COMPERROR 442 #define IDS_CAP_STAT_LIVE_MODE 500 #define IDS_CAP_STAT_OVERLAY_MODE 501 #define IDS_CAP_STAT_CAP_INIT 502 #define IDS_CAP_STAT_CAP_FINI 503 #define IDS_CAP_STAT_PALETTE_BUILD 504 #define IDS_CAP_STAT_OPTPAL_BUILD 505 #define IDS_CAP_STAT_I_FRAMES 506 #define IDS_CAP_STAT_L_FRAMES 507 #define IDS_CAP_STAT_CAP_L_FRAMES 508 #define IDS_CAP_STAT_CAP_AUDIO 509 #define IDS_CAP_STAT_VIDEOCURRENT 510 #define IDS_CAP_STAT_VIDEOAUDIO 511 #define IDS_CAP_STAT_VIDEOONLY 512 #define IDS_CAP_STAT_FRAMESDROPPED 513 #endif #ifdef __cplusplus } #endif #ifndef NOMSACM #include <msacm.h> #endif #ifdef __cplusplus extern "C" { #endif #ifdef OFN_READONLY WINBOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); WINBOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); WINBOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); WINBOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); #define GetOpenFileNamePreview __MINGW_NAME_AW(GetOpenFileNamePreview) #define GetSaveFileNamePreview __MINGW_NAME_AW(GetSaveFileNamePreview) #endif #ifndef RC_INVOKED #include "poppack.h" #endif #ifdef __cplusplus } #endif #endif