File Annotation

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