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