unit VFW;
interface
uses
Windows,
MMSystem,
Messages,
CommDlg,
Ole2;
type
PDWORD = ^DWORD;
PLONG = PDWORD;
UDWORD = DWORD;
PVOID = Pointer;
int = Integer;
function VideoForWindowsVersion: DWord; pascal;
function MKFOURCC(ch0, ch1, ch2, ch3: Char): FOURCC;
const
ICVERSION = $0104 ;
type
HIC = THandle;
const
BI_1632 = $32333631;
function mmioFOURCC(ch0, ch1, ch2, ch3: Char): FOURCC;
type
TWOCC = Word;
function aviTWOCC(ch0, ch1: Char): TWOCC;
const
ICTYPE_VIDEO = $63646976; ICTYPE_AUDIO = $63647561;
const
ICERR_OK = 0 ;
ICERR_DONTDRAW = 1 ;
ICERR_NEWPALETTE = 2 ;
ICERR_GOTOKEYFRAME = 3 ;
ICERR_STOPDRAWING = 4 ;
ICERR_UNSUPPORTED = -1 ;
ICERR_BADFORMAT = -2 ;
ICERR_MEMORY = -3 ;
ICERR_INTERNAL = -4 ;
ICERR_BADFLAGS = -5 ;
ICERR_BADPARAM = -6 ;
ICERR_BADSIZE = -7 ;
ICERR_BADHANDLE = -8 ;
ICERR_CANTUPDATE = -9 ;
ICERR_ABORT = -10 ;
ICERR_ERROR = -100 ;
ICERR_BADBITDEPTH = -200 ;
ICERR_BADIMAGESIZE = -201 ;
ICERR_CUSTOM = -400 ;
ICMODE_COMPRESS = 1 ;
ICMODE_DECOMPRESS = 2 ;
ICMODE_FASTDECOMPRESS = 3 ;
ICMODE_QUERY = 4 ;
ICMODE_FASTCOMPRESS = 5 ;
ICMODE_DRAW = 8 ;
AVIIF_LIST = $00000001 ;
AVIIF_TWOCC = $00000002 ;
AVIIF_KEYFRAME = $00000010 ;
ICQUALITY_LOW = 0 ;
ICQUALITY_HIGH = 10000 ;
ICQUALITY_DEFAULT = -1 ;
ICM_USER = (DRV_USER+$0000) ;
ICM_RESERVED_LOW = (DRV_USER+$1000) ;
ICM_RESERVED_HIGH = (DRV_USER+$2000) ;
ICM_RESERVED = ICM_RESERVED_LOW ;
ICM_GETSTATE = (ICM_RESERVED+0) ; ICM_SETSTATE = (ICM_RESERVED+1) ; ICM_GETINFO = (ICM_RESERVED+2) ;
ICM_CONFIGURE = (ICM_RESERVED+10); ICM_ABOUT = (ICM_RESERVED+11);
ICM_GETDEFAULTQUALITY = (ICM_RESERVED+30); ICM_GETQUALITY = (ICM_RESERVED+31); ICM_SETQUALITY = (ICM_RESERVED+32);
ICM_SET = (ICM_RESERVED+40); ICM_GET = (ICM_RESERVED+41);
ICM_FRAMERATE = $526D7246; ICM_KEYFRAMERATE = $5279654B;
ICM_COMPRESS_GET_FORMAT = (ICM_USER+4) ; ICM_COMPRESS_GET_SIZE = (ICM_USER+5) ; ICM_COMPRESS_QUERY = (ICM_USER+6) ; ICM_COMPRESS_BEGIN = (ICM_USER+7) ; ICM_COMPRESS = (ICM_USER+8) ; ICM_COMPRESS_END = (ICM_USER+9) ;
ICM_DECOMPRESS_GET_FORMAT = (ICM_USER+10) ; ICM_DECOMPRESS_QUERY = (ICM_USER+11) ; ICM_DECOMPRESS_BEGIN = (ICM_USER+12) ; ICM_DECOMPRESS = (ICM_USER+13) ; ICM_DECOMPRESS_END = (ICM_USER+14) ; ICM_DECOMPRESS_SET_PALETTE = (ICM_USER+29) ; ICM_DECOMPRESS_GET_PALETTE = (ICM_USER+30) ;
ICM_DRAW_QUERY = (ICM_USER+31) ; ICM_DRAW_BEGIN = (ICM_USER+15) ; ICM_DRAW_GET_PALETTE = (ICM_USER+16) ; ICM_DRAW_START = (ICM_USER+18) ; ICM_DRAW_STOP = (ICM_USER+19) ; ICM_DRAW_END = (ICM_USER+21) ; ICM_DRAW_GETTIME = (ICM_USER+32) ; ICM_DRAW = (ICM_USER+33) ; ICM_DRAW_WINDOW = (ICM_USER+34) ; ICM_DRAW_SETTIME = (ICM_USER+35) ; ICM_DRAW_REALIZE = (ICM_USER+36) ; ICM_DRAW_FLUSH = (ICM_USER+37) ; ICM_DRAW_RENDERBUFFER = (ICM_USER+38) ;
ICM_DRAW_START_PLAY = (ICM_USER+39) ; ICM_DRAW_STOP_PLAY = (ICM_USER+40) ;
ICM_DRAW_SUGGESTFORMAT = (ICM_USER+50) ; ICM_DRAW_CHANGEPALETTE = (ICM_USER+51) ;
ICM_GETBUFFERSWANTED = (ICM_USER+41) ;
ICM_GETDEFAULTKEYFRAMERATE = (ICM_USER+42) ;
ICM_DECOMPRESSEX_BEGIN = (ICM_USER+60) ; ICM_DECOMPRESSEX_QUERY = (ICM_USER+61) ; ICM_DECOMPRESSEX = (ICM_USER+62) ; ICM_DECOMPRESSEX_END = (ICM_USER+63) ;
ICM_COMPRESS_FRAMES_INFO = (ICM_USER+70) ; ICM_SET_STATUS_PROC = (ICM_USER+72) ;
type
PICOPEN = ^TICOPEN;
TICOPEN = record
dwSize : DWORD ; fccType : DWORD ; fccHandler : DWORD ; dwVersion : DWORD ; dwFlags : DWORD ; dwError : DWORD ; pV1Reserved : PVOID ; pV2Reserved : PVOID ; dnDevNode : DWORD ; end;
PICINFO = ^TICINFO ;
TICINFO = record
dwSize : DWORD; fccType : DWORD; fccHandler : DWORD; dwFlags : DWORD; dwVersion : DWORD; dwVersionICM : DWORD; szName : array[0..15] of WideChar ; szDescription : array[0..127] of WideChar ; szDriver : array[0..127] of WideChar ; end;
const
VIDCF_QUALITY = $0001 ; VIDCF_CRUNCH = $0002 ; VIDCF_TEMPORAL = $0004 ; VIDCF_COMPRESSFRAMES = $0008 ; VIDCF_DRAW = $0010 ; VIDCF_FASTTEMPORALC = $0020 ; VIDCF_FASTTEMPORALD = $0080 ;
ICCOMPRESS_KEYFRAME = $00000001;
type
PICCOMPRESS = ^TICCOMPRESS;
TICCOMPRESS = record
dwFlags : DWORD;
lpbiOutput : PBITMAPINFOHEADER ; lpOutput : PVOID ;
lpbiInput : PBITMAPINFOHEADER ; lpInput : PVOID ;
lpckid : PDWORD ; lpdwFlags : PDWORD; lFrameNum : DWORD ; dwFrameSize : DWORD ;
dwQuality : DWORD ;
lpbiPrev : PBITMAPINFOHEADER ; lpPrev : PVOID ; end;
const
ICCOMPRESSFRAMES_PADDING = $00000001 ;
type
TICCompressProc = function(lInput: LPARAM; lFrame: DWORD; lpBits: PVOID; len: DWORD): DWORD; stdcall;
PICCOMPRESSFRAMES = ^TICCOMPRESSFRAMES;
TICCOMPRESSFRAMES = record
dwFlags : DWORD ;
lpbiOutput : PBITMAPINFOHEADER ; lOutput : LPARAM ;
lpbiInput : PBITMAPINFOHEADER ; lInput : LPARAM ;
lStartFrame : DWORD ; lFrameCount : DWORD ;
lQuality : DWORD ; lDataRate : DWORD ; lKeyRate : DWORD ;
dwRate : DWORD ; dwScale : DWORD ;
dwOverheadPerFrame : DWORD ;
dwReserved2 : DWORD ;
GetData : TICCompressProc;
PutData : TICCompressProc;
end;
const
ICSTATUS_START = 0 ;
ICSTATUS_STATUS = 1 ; ICSTATUS_END = 2 ;
ICSTATUS_ERROR = 3 ; ICSTATUS_YIELD = 4 ;
type
TICStatusProc = function(lParam: LPARAM; message: UINT; l: DWORD): DWORD; stdcall;
PICSETSTATUSPROC = ^TICSETSTATUSPROC;
TICSETSTATUSPROC = record
dwFlags : DWORD ;
lParam : LPARAM ;
Status : TICStatusProc;
end;
const
ICDECOMPRESS_HURRYUP = $80000000 ; ICDECOMPRESS_UPDATE = $40000000 ; ICDECOMPRESS_PREROLL = $20000000 ; ICDECOMPRESS_NULLFRAME = $10000000 ; ICDECOMPRESS_NOTKEYFRAME = $08000000 ;
type
PICDECOMPRESS = ^TICDECOMPRESS;
TICDECOMPRESS = record
dwFlags : DWORD ; lpbiInput : PBITMAPINFOHEADER ; lpInput : PVOID ; lpbiOutput : PBITMAPINFOHEADER ; lpOutput : PVOID ;
ckid : DWORD ; end;
PICDECOMPRESSEX = ^TICDECOMPRESSEX;
TICDECOMPRESSEX = record
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER; lpSrc : PVOID; lpbiDst : PBITMAPINFOHEADER; lpDst : PVOID;
xDst : int ; yDst : int ;
dxDst : int ;
dyDst : int ;
xSrc : int ; ySrc : int ;
dxSrc : int ;
dySrc : int ;
end;
const
ICDRAW_QUERY = $00000001 ; ICDRAW_FULLSCREEN = $00000002 ; ICDRAW_HDC = $00000004 ; ICDRAW_ANIMATE = $00000008 ; ICDRAW_CONTINUE = $00000010 ; ICDRAW_MEMORYDC = $00000020 ; ICDRAW_UPDATING = $00000040 ; ICDRAW_RENDER = $00000080 ; ICDRAW_BUFFER = $00000100 ;
type
PICDRAWBEGIN = ^TICDRAWBEGIN;
TICDRAWBEGIN = record
dwFlags : DWORD ;
hpal : HPALETTE ; hwnd : HWND ; hdc : HDC ;
xDst : int ; yDst : int ;
dxDst : int ;
dyDst : int ;
lpbi : PBITMAPINFOHEADER ;
xSrc : int ; ySrc : int ;
dxSrc : int ;
dySrc : int ;
dwRate : DWORD ; dwScale : DWORD ;
end;
const
ICDRAW_HURRYUP = $80000000 ; ICDRAW_UPDATE = $40000000 ; ICDRAW_PREROLL = $20000000 ; ICDRAW_NULLFRAME = $10000000 ; ICDRAW_NOTKEYFRAME = $08000000 ;
type
PICDRAW = ^TICDRAW;
TICDRAW = record
dwFlags : DWORD ; lpFormat : PVOID ; lpData : PVOID ; cbData : DWORD ;
lTime : DWORD ; end;
PICDRAWSUGGEST = ^TICDRAWSUGGEST;
TICDRAWSUGGEST = record
lpbiIn : PBITMAPINFOHEADER ; lpbiSuggest : PBITMAPINFOHEADER ; dxSrc : int ; dySrc : int ;
dxDst : int ; dyDst : int ;
hicDecompressor : HIC ; end;
PICPALETTE = ^TICPALETTE;
TICPALETTE = record
dwFlags : DWORD ; iStart : int ; iLen : int ; lppe : PPALETTEENTRY ; end;
function ICInfo(fccType, fccHandler: DWORD; lpicinfo: PICINFO) : BOOL ; stdcall ;
function ICInstall(fccType, fccHandler: DWORD; lParam: LPARAM; szDesc: LPSTR; wFlags: UINT) : BOOL ; stdcall ;
function ICRemove(fccType, fccHandler: DWORD; wFlags: UINT) : BOOL ; stdcall ;
function ICGetInfo(hic: HIC; picinfo: PICINFO; cb: DWORD) : DWORD ; stdcall ;
function ICOpen(fccType, fccHandler: DWORD; wMode: UINT) : HIC ; stdcall ;
function ICOpenFunction(fccType, fccHandler: DWORD; wMode: UINT; lpfnHandler: TFarProc) : HIC ; stdcall ;
function ICClose(hic: HIC) : DWORD; stdcall ;
function ICSendMessage(hic: HIC; msg: UINT; dw1, dw2: DWORD) : DWORD ; stdcall ;
const
ICINSTALL_UNICODE = $8000 ;
ICINSTALL_FUNCTION = $0001 ; ICINSTALL_DRIVER = $0002 ; ICINSTALL_HDRV = $0004 ;
ICINSTALL_DRIVERW = $8002 ;
ICMF_CONFIGURE_QUERY = $00000001 ;
ICMF_ABOUT_QUERY = $00000001 ;
function ICQueryAbout(hic: HIC): BOOL;
function ICAbout(hic: HIC; hwnd: HWND): DWORD;
function ICQueryConfigure(hic: HIC): BOOL;
function ICConfigure(hic: HIC; hwnd: HWND): DWORD;
function ICGetState(hic: HIC; pv: PVOID; cb: DWORD): DWORD;
function ICSetState(hic: HIC; pv: PVOID; cb: DWORD): DWORD;
function ICGetStateSize(hic: HIC): DWORD;
function ICGetDefaultQuality(hic: HIC): DWORD;
function ICGetDefaultKeyFrameRate(hic: HIC): DWORD;
function ICDrawWindow(hic: HIC; prc: PRECT): DWORD;
function ICCompress(
hic : HIC;
dwFlags : DWORD; lpbiOutput : PBITMAPINFOHEADER; lpData : PVOID; lpbiInput : PBITMAPINFOHEADER; lpBits : PVOID; lpckid : PDWORD; lpdwFlags : PDWORD; lFrameNum : DWORD; dwFrameSize : DWORD; dwQuality : DWORD; lpbiPrev : PBITMAPINFOHEADER; lpPrev : PVOID ) : DWORD; cdecl;
function ICCompressBegin(hic: HIC; lpbiInput: PBITMAPINFOHEADER; lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICCompressQuery(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICCompressGetFormat(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICCompressGetFormatSize(hic: HIC; lpbi: PBITMAPINFOHEADER): DWORD;
function ICCompressGetSize(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICCompressEnd(hic: HIC): DWORD;
function ICDecompress(
hic : HIC;
dwFlags : DWORD; lpbiFormat : PBITMAPINFOHEADER; lpData : PVOID; lpbi : PBITMAPINFOHEADER; lpBits : PVOID
): DWORD; cdecl;
function ICDecompressBegin(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICDecompressQuery(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICDecompressGetFormat(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICDecompressGetFormatSize(hic: HIC; lpbi: PBITMAPINFOHEADER): DWORD;
function ICDecompressGetPalette(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
function ICDecompressSetPalette(hic: HIC; lpbiPalette: PBITMAPINFOHEADER): DWORD;
function ICDecompressEnd(hic: HIC): DWORD;
function ICDecompressEx(
hic : HIC;
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER;
lpSrc : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
lpbiDst : PBITMAPINFOHEADER;
lpDst : PVOID;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int
): DWORD; stdcall;
function ICDecompressExBegin(
hic : HIC;
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER;
lpSrc : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
lpbiDst : PBITMAPINFOHEADER;
lpDst : PVOID;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int
): DWORD; stdcall;
function ICDecompressExQuery(
hic : HIC;
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER;
lpSrc : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
lpbiDst : PBITMAPINFOHEADER;
lpDst : PVOID;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int
): DWORD; stdcall;
function ICDecompressExEnd(hic: HIC): DWORD;
function ICDrawBegin(
hic : HIC;
dwFlags : DWORD; hpal : HPALETTE; hwnd : HWND; hdc : HDC; xDst : int; yDst : int;
dxDst : int;
dyDst : int;
lpbi : PBITMAPINFOHEADER; xSrc : int; ySrc : int;
dxSrc : int;
dySrc : int;
dwRate : DWORD; dwScale : DWORD
): DWORD; cdecl;
function ICDraw(
hic : HIC;
dwFlags : DWORD; lpFormat : PVOID; lpData : PVOID; cbData : DWORD; lTime : DWORD ): DWORD; cdecl;
function ICDrawSuggestFormat(
hic : HIC;
lpbiIn : PBITMAPINFOHEADER;
lpbiOut : PBITMAPINFOHEADER;
dxSrc : int;
dySrc : int;
dxDst : int;
dyDst : int;
hicDecomp : HIC
): DWORD; stdcall;
function ICDrawQuery(hic: HIC; lpbiInput: PBITMAPINFOHEADER): DWORD;
function ICDrawChangePalette(hic: HIC; lpbiInput: PBITMAPINFOHEADER): DWORD;
function ICGetBuffersWanted(hic: HIC; lpdwBuffers: PDWORD): DWORD;
function ICDrawEnd(hic: HIC): DWORD;
function ICDrawStart(hic: HIC): DWORD;
function ICDrawStartPlay(hic: HIC; lFrom, lTo: DWORD): DWORD;
function ICDrawStop(hic: HIC): DWORD;
function ICDrawStopPlay(hic: HIC): DWORD;
function ICDrawGetTime(hic: HIC; lplTime: PDWORD): DWORD;
function ICDrawSetTime(hic: HIC; lTime: DWORD): DWORD;
function ICDrawRealize(hic: HIC; hdc: HDC; fBackground: BOOL): DWORD;
function ICDrawFlush(hic: HIC): DWORD;
function ICDrawRenderBuffer(hic: HIC): DWORD;
function ICSetStatusProc(
hic : HIC;
dwFlags : DWORD;
lParam : DWORD;
fpfnStatus : TICStatusProc
): DWORD; stdcall;
function ICLocate(fccType, fccHandler: DWORD; lpbiIn, lpbiOut: PBITMAPINFOHEADER; wFlags: WORD): HIC; stdcall;
function ICGetDisplayFormat(hic: HIC; lpbiIn, lpbiOut: PBITMAPINFOHEADER; BitDepth: int; dx, dy: int): HIC; stdcall;
function ICDecompressOpen(fccType, fccHandler: DWORD; lpbiIn, lpbiOut: PBITMAPINFOHEADER): HIC;
function ICDrawOpen(fccType, fccHandler: DWORD; lpbiIn: PBITMAPINFOHEADER): HIC;
function ICImageCompress(
hic : HIC; uiFlags : UINT; lpbiIn : PBITMAPINFO; lpBits : PVOID; lpbiOut : PBITMAPINFO; lQuality : DWORD; plSize : PDWORD ): THANDLE; stdcall;
function ICImageDecompress(
hic : HIC; uiFlags : UINT; lpbiIn : PBITMAPINFO; lpBits : PVOID; lpbiOut : PBITMAPINFO ): THANDLE; stdcall;
type
PCOMPVARS = ^TCOMPVARS;
TCOMPVARS = record
cbSize : DWORD; dwFlags : DWORD; hic : HIC; fccType : DWORD; fccHandler : DWORD; lpbiIn : PBITMAPINFO; lpbiOut : PBITMAPINFO; lpBitsOut : PVOID;
lpBitsPrev : PVOID;
lFrame : DWORD;
lKey : DWORD; lDataRate : DWORD; lQ : DWORD; lKeyCount : DWORD;
lpState : PVOID; cbState : DWORD; end;
const
ICMF_COMPVARS_VALID = $00000001;
function ICCompressorChoose(
hwnd : HWND; uiFlags : UINT; pvIn : PVOID; lpData : PVOID; pc : PCOMPVARS; lpszTitle : LPSTR ): BOOL; stdcall;
const
ICMF_CHOOSE_KEYFRAME = $0001; ICMF_CHOOSE_DATARATE = $0002; ICMF_CHOOSE_PREVIEW = $0004; ICMF_CHOOSE_ALLCOMPRESSORS = $0008;
function ICSeqCompressFrameStart(pc: PCOMPVARS; lpbiIn: PBITMAPINFO): BOOL; stdcall;
procedure ICSeqCompressFrameEnd(pc: PCOMPVARS); stdcall;
function ICSeqCompressFrame(
pc : PCOMPVARS; uiFlags : UINT; lpBits : PVOID; pfKey : PBOOL; plSize : PDWORD ): PVOID; stdcall;
procedure ICCompressorFree(pc: PCOMPVARS); stdcall;
type
HDRAWDIB = THandle;
const
DDF_UPDATE = $0002; DDF_SAME_HDC = $0004; DDF_SAME_DRAW = $0008; DDF_DONTDRAW = $0010; DDF_ANIMATE = $0020; DDF_BUFFER = $0040; DDF_JUSTDRAWIT = $0080; DDF_FULLSCREEN = $0100; DDF_BACKGROUNDPAL = $0200; DDF_NOTKEYFRAME = $0400; DDF_HURRYUP = $0800; DDF_HALFTONE = $1000;
DDF_PREROLL = DDF_DONTDRAW; DDF_SAME_DIB = DDF_SAME_DRAW;
DDF_SAME_SIZE = DDF_SAME_DRAW;
function DrawDibOpen: HDRAWDIB; stdcall;
function DrawDibClose(hdd: HDRAWDIB): BOOL; stdcall;
function DrawDibGetBuffer(hdd: HDRAWDIB; lpbi: PBITMAPINFOHEADER; dwSize: DWORD; dwFlags: DWORD): PVOID; stdcall;
function DrawDibGetPalette(hdd: HDRAWDIB): HPALETTE; stdcall;
function DrawDibSetPalette(hdd: HDRAWDIB; hpal: HPALETTE): BOOL; stdcall;
function DrawDibChangePalette(hdd: HDRAWDIB; iStart, iLen: int; lppe: PPALETTEENTRY): BOOL; stdcall;
function DrawDibRealize(hdd: HDRAWDIB; hdc: HDC; fBackground: BOOL): UINT; stdcall;
function DrawDibStart(hdd: HDRAWDIB; rate: DWORD): BOOL; stdcall;
function DrawDibStop(hdd: HDRAWDIB): BOOL; stdcall;
function DrawDibBegin(
hdd : HDRAWDIB;
hdc : HDC;
dxDst : int;
dyDst : int;
lpbi : PBITMAPINFOHEADER;
dxSrc : int;
dySrc : int;
wFlags : UINT
): BOOL; stdcall;
function DrawDibDraw(
hdd : HDRAWDIB;
hdc : HDC;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int;
lpbi : PBITMAPINFOHEADER;
lpBits : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
wFlags : UINT
): BOOL; stdcall;
function DrawDibUpdate(hdd: HDRAWDIB; hdc: HDC; x, y: int): BOOL;
function DrawDibEnd(hdd: HDRAWDIB): BOOL; stdcall;
type
PDRAWDIBTIME = ^TDRAWDIBTIME;
TDRAWDIBTIME = record
timeCount : DWORD;
timeDraw : DWORD;
timeDecompress : DWORD;
timeDither : DWORD;
timeStretch : DWORD;
timeBlt : DWORD;
timeSetDIBits : DWORD;
end;
function DrawDibTime(hdd: HDRAWDIB; lpddtime: PDRAWDIBTIME): BOOL; stdcall;
const
PD_CAN_DRAW_DIB = $0001; PD_CAN_STRETCHDIB = $0002; PD_STRETCHDIB_1_1_OK = $0004; PD_STRETCHDIB_1_2_OK = $0008; PD_STRETCHDIB_1_N_OK = $0010;
function DrawDibProfileDisplay(lpbi: PBITMAPINFOHEADER): DWORD; stdcall;
const
formtypeAVI = $20495641; listtypeAVIHEADER = $6C726468; ckidAVIMAINHDR = $68697661; listtypeSTREAMHEADER = $6C727473; ckidSTREAMHEADER = $68727473; ckidSTREAMFORMAT = $66727473; ckidSTREAMHANDLERDATA = $64727473; ckidSTREAMNAME = $6E727473;
listtypeAVIMOVIE = $69766F6D; listtypeAVIRECORD = $20636572;
ckidAVINEWINDEX = $31786469;
streamtypeVIDEO = $73646976; streamtypeAUDIO = $73647561; streamtypeMIDI = $7364696D; streamtypeTEXT = $73747874;
cktypeDIBbits = $6264; cktypeDIBcompressed = $6364; cktypePALchange = $6370; cktypeWAVEbytes = $6277;
ckidAVIPADDING = $4B4E554A;
function FromHex(n: BYTE): BYTE;
function StreamFromFOURCC(fcc: DWORD): BYTE;
function TWOCCFromFOURCC(fcc: DWORD): WORD;
function ToHex(n: BYTE): BYTE;
function MAKEAVICKID(tcc: WORD; stream: BYTE): DWORD;
const
AVIF_HASINDEX = $00000010; AVIF_MUSTUSEINDEX = $00000020;
AVIF_ISINTERLEAVED = $00000100;
AVIF_TRUSTCKTYPE = $00000800; AVIF_WASCAPTUREFILE = $00010000;
AVIF_COPYRIGHTED = $00020000;
const
AVI_HEADERSIZE = 2048;
type
PMainAVIHeader = ^TMainAVIHeader;
TMainAVIHeader = record
dwMicroSecPerFrame : DWORD; dwMaxBytesPerSec : DWORD; dwPaddingGranularity : DWORD; dwFlags : DWORD; dwTotalFrames : DWORD; dwInitialFrames : DWORD;
dwStreams : DWORD;
dwSuggestedBufferSize : DWORD;
dwWidth : DWORD;
dwHeight : DWORD;
dwReserved : array[0..3] of DWORD;
end;
const
AVISF_DISABLED = $00000001;
AVISF_VIDEO_PALCHANGES = $00010000;
type
PAVIStreamHeader = ^TAVIStreamHeader;
TAVIStreamHeader = record
fccType : FOURCC;
fccHandler : FOURCC;
dwFlags : DWORD; wPriority : WORD;
wLanguage : WORD;
dwInitialFrames : DWORD;
dwScale : DWORD;
dwRate : DWORD; dwStart : DWORD;
dwLength : DWORD; dwSuggestedBufferSize : DWORD;
dwQuality : DWORD;
dwSampleSize : DWORD;
rcFrame : TRECT;
end;
const
AVIIF_NOTIME = $00000100; AVIIF_COMPUSE = $0FFF0000;
type
PAVIINDEXENTRY = ^TAVIINDEXENTRY;
TAVIINDEXENTRY = record
ckid : DWORD;
dwFlags : DWORD;
dwChunkOffset : DWORD; dwChunkLength : DWORD; end;
PAVIPALCHANGE = ^TAVIPALCHANGE;
TAVIPALCHANGE = record
bFirstEntry : BYTE; bNumEntries : BYTE; wFlags : WORD; end;
const
AVIGETFRAMEF_BESTDISPLAYFMT = 1;
type
PAVISTREAMINFOW = ^TAVISTREAMINFOW;
TAVISTREAMINFOW = record
fccType : DWORD;
fccHandler : DWORD;
dwFlags : DWORD; dwCaps : DWORD;
wPriority : WORD;
wLanguage : WORD;
dwScale : DWORD;
dwRate : DWORD; dwStart : DWORD;
dwLength : DWORD; dwInitialFrames : DWORD;
dwSuggestedBufferSize : DWORD;
dwQuality : DWORD;
dwSampleSize : DWORD;
rcFrame : TRECT ;
dwEditCount : DWORD;
dwFormatChangeCount : DWORD;
szName : array[0..63] of WideChar;
end;
PAVISTREAMINFOA = ^TAVISTREAMINFOA;
TAVISTREAMINFOA = record
fccType : DWORD;
fccHandler : DWORD;
dwFlags : DWORD; dwCaps : DWORD;
wPriority : WORD;
wLanguage : WORD;
dwScale : DWORD;
dwRate : DWORD; dwStart : DWORD;
dwLength : DWORD; dwInitialFrames : DWORD;
dwSuggestedBufferSize : DWORD;
dwQuality : DWORD;
dwSampleSize : DWORD;
rcFrame : TRECT ;
dwEditCount : DWORD;
dwFormatChangeCount : DWORD;
szName : array[0..63] of AnsiChar;
end;
TAVISTREAMINFO = TAVISTREAMINFOA;
PAVISTREAMINFO = PAVISTREAMINFOA;
const
AVISTREAMINFO_DISABLED = $00000001;
AVISTREAMINFO_FORMATCHANGES = $00010000;
type
PAVIFILEINFOW = ^TAVIFILEINFOW;
TAVIFILEINFOW = record
dwMaxBytesPerSec : DWORD; dwFlags : DWORD; dwCaps : DWORD;
dwStreams : DWORD;
dwSuggestedBufferSize : DWORD;
dwWidth : DWORD;
dwHeight : DWORD;
dwScale : DWORD;
dwRate : DWORD; dwLength : DWORD;
dwEditCount : DWORD;
szFileType : array[0..63] of WideChar;
end;
PAVIFILEINFOA = ^TAVIFILEINFOA;
TAVIFILEINFOA = record
dwMaxBytesPerSec : DWORD; dwFlags : DWORD; dwCaps : DWORD;
dwStreams : DWORD;
dwSuggestedBufferSize : DWORD;
dwWidth : DWORD;
dwHeight : DWORD;
dwScale : DWORD;
dwRate : DWORD; dwLength : DWORD;
dwEditCount : DWORD;
szFileType : array[0..63] of AnsiChar;
end;
TAVIFILEINFO = TAVIFILEINFOA;
PAVIFILEINFO = PAVIFILEINFOA;
const
AVIFILEINFO_HASINDEX = $00000010;
AVIFILEINFO_MUSTUSEINDEX = $00000020;
AVIFILEINFO_ISINTERLEAVED = $00000100;
AVIFILEINFO_WASCAPTUREFILE = $00010000;
AVIFILEINFO_COPYRIGHTED = $00020000;
AVIFILECAPS_CANREAD = $00000001;
AVIFILECAPS_CANWRITE = $00000002;
AVIFILECAPS_ALLKEYFRAMES = $00000010;
AVIFILECAPS_NOCOMPRESSION = $00000020;
type
TAVISAVECALLBACK = function(i: int): BOOL; pascal;
type
PAVICOMPRESSOPTIONS = ^TAVICOMPRESSOPTIONS;
TAVICOMPRESSOPTIONS = record
fccType : DWORD; fccHandler : DWORD; dwKeyFrameEvery : DWORD; dwQuality : DWORD; dwBytesPerSecond : DWORD; dwFlags : DWORD; lpFormat : PVOID; cbFormat : DWORD;
lpParms : PVOID; cbParms : DWORD;
dwInterleaveEvery : DWORD; end;
const
AVICOMPRESSF_INTERLEAVE = $00000001; AVICOMPRESSF_DATARATE = $00000002; AVICOMPRESSF_KEYFRAMES = $00000004; AVICOMPRESSF_VALID = $00000008;
type
PAVIStream = ^IAVIStream;
IAVIStream = class(IUnknown)
public
function Create(lParam1, lParam2: LPARAM): HResult; virtual; stdcall; abstract;
function Info(psi: PAVISTREAMINFOW; lSize: DWORD): HResult; virtual; stdcall; abstract;
function FindSample(lPos: DWORD; lFlags: DWORD): DWORD; virtual; stdcall; abstract;
function ReadFormat(lPos: DWORD; lpFormat: PVOID; lpcbFormat: PDWORD): HResult; virtual; stdcall; abstract;
function SetFormat(lPos: DWORD; lpFormat: PVOID; cbFormat: DWORD): HResult; virtual; stdcall; abstract;
function Read(lStart: DWORD; lSamples: DWORD; lpBuffer: PVOID; cbBuffer: DWORD; plBytes, plSamples: PDWORD): HResult; virtual; stdcall; abstract;
function Write(lStart: DWORD; lSamples: DWORD; lpBuffer: PVOID; cbBuffer: DWORD; dwFlags: DWORD; plSampWritten, plBytesWritten: PDWORD): HResult; virtual; stdcall; abstract;
function Delete(lStart: DWORD; lSamples: DWORD): HResult; virtual; stdcall; abstract;
function ReadData(fcc: DWORD; lp: PVOID; lpcb: PDWORD): HResult; virtual; stdcall; abstract;
function WriteData(fcc: DWORD; lp: PVOID; cb: DWORD): HResult; virtual; stdcall; abstract;
function SetInfo(lpInfo: PAVISTREAMINFOW; cbInfo: DWORD): HResult; virtual; stdcall; abstract;
end;
PAVIStreaming = ^IAVIStreaming;
IAVIStreaming = class(IUnknown)
public
function _Begin(
lStart, lEnd : DWORD; lRate : DWORD ): HResult; virtual; stdcall; abstract;
function _End: HResult; virtual; stdcall; abstract;
end;
PAVIEditStream = ^IAVIEditStream;
IAVIEditStream = class(IUnknown)
public
function Cut(plStart, plLength: PDWORD; var ppResult: PAVISTREAM): HResult; virtual; stdcall; abstract;
function Copy(plStart, plLength: PDWORD; var ppResult: PAVISTREAM): HResult; virtual; stdcall; abstract;
function Paste(plPos: PDWORD; plLength: PDWORD; pstream: PAVISTREAM; lStart, lEnd: DWORD): HResult; virtual; stdcall; abstract;
function Clone(var ppResult: PAVISTREAM): HResult; virtual; stdcall; abstract;
function SetInfo(lpInfo: PAVISTREAMINFOW; cbInfo: DWORD): HResult; virtual; stdcall; abstract;
end;
PAVIFile = ^IAVIFile;
IAVIFile = class(IUnknown)
function Info(pfi: PAVIFILEINFOW; lSize: DWORD): HResult; virtual; stdcall; abstract;
function GetStream(var ppStream: PAVISTREAM; fccType: DWORD; lParam: DWORD): HResult; virtual; stdcall; abstract;
function CreateStream(var ppStream: PAVISTREAM; psi: PAVISTREAMINFOW): HResult; virtual; stdcall; abstract;
function WriteData(ckid: DWORD; lpData: PVOID; cbData: DWORD): HResult; virtual; stdcall; abstract;
function ReadData(ckid: DWORD; lpData: PVOID; lpcbData: PDWORD): HResult; virtual; stdcall; abstract;
function EndRecord: HResult; virtual; stdcall; abstract;
function DeleteStream(fccType: DWORD; lParam: DWORD): HResult; virtual; stdcall; abstract;
end;
PGetFrame = ^IGetFrame;
IGetFrame = class(IUnknown)
public
function GetFrame(lPos: DWORD): PVOID; virtual; stdcall; abstract;
function _Begin(lStart, lEnd: DWORD; lRate: DWORD): HResult; virtual; stdcall; abstract;
function _End: HResult; virtual; stdcall; abstract;
function SetFormat(lpbi: PBITMAPINFOHEADER; lpBits: PVOID; x, y, dx, dy: int): HResult; virtual; stdcall; abstract;
end;
const
IID_IAVIFile : TGUID =
(D1: $00020020; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
IID_IAVIStream : TGUID =
(D1: $00020021; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
IID_IAVIStreaming : TGUID =
(D1: $00020022; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
IID_IGetFrame : TGUID =
(D1: $00020023; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
IID_IAVIEditStream : TGUID =
(D1: $00020024; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
CLSID_AVISimpleUnMarshal : TGUID =
(D1: $00020009; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
CLSID_AVIFile : TGUID =
(D1: $00020000; D2: $0; D3: $0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
AVIFILEHANDLER_CANREAD = $0001;
AVIFILEHANDLER_CANWRITE = $0002;
AVIFILEHANDLER_CANACCEPTNONRGB = $0004;
procedure AVIFileInit; stdcall; procedure AVIFileExit; stdcall;
function AVIFileAddRef(pfile: PAVIFILE): UDWORD; stdcall;
function AVIFileRelease(pfile: PAVIFILE): UDWORD; stdcall;
function AVIFileOpenA(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
function AVIFileOpenW(var ppfile: PAVIFILE; szFile: LPCWSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
function AVIFileOpen(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
function AVIFileInfoW(pfile: PAVIFILE; pfi: PAVIFILEINFOW; lSize: DWORD): HResult; stdcall;
function AVIFileInfoA(pfile: PAVIFILE; pfi: PAVIFILEINFOA; lSize: DWORD): HResult; stdcall;
function AVIFileInfo(pfile: PAVIFILE; pfi: PAVIFILEINFOA; lSize: DWORD): HResult; stdcall;
function AVIFileGetStream(pfile: PAVIFILE; var ppavi: PAVISTREAM; fccType: DWORD; lParam: DWORD): HResult; stdcall;
function AVIFileCreateStreamW(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOW): HResult; stdcall;
function AVIFileCreateStreamA(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOA): HResult; stdcall;
function AVIFileCreateStream(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOA): HResult; stdcall;
function AVIFileWriteData(pfile: PAVIFILE; ckid: DWORD; lpData: PVOID; cbData: DWORD): HResult; stdcall;
function AVIFileReadData(pfile: PAVIFILE; ckid: DWORD; lpData: PVOID; lpcbData: PDWORD): HResult; stdcall;
function AVIFileEndRecord(pfile: PAVIFILE): HResult; stdcall;
function AVIStreamAddRef(pavi: PAVISTREAM): UDWORD; stdcall;
function AVIStreamRelease(pavi: PAVISTREAM): UDWORD; stdcall;
function AVIStreamInfoW (pavi: PAVISTREAM; psi: PAVISTREAMINFOW; lSize: DWORD): HResult; stdcall;
function AVIStreamInfoA (pavi: PAVISTREAM; psi: PAVISTREAMINFOA; lSize: DWORD): HResult; stdcall;
function AVIStreamInfo(pavi: PAVISTREAM; psi: PAVISTREAMINFOA; lSize: DWORD): HResult; stdcall;
function AVIStreamFindSample(pavi: PAVISTREAM; lPos: DWORD; lFlags: DWORD): DWORD; stdcall;
function AVIStreamReadFormat(pavi: PAVISTREAM; lPos: DWORD; lpFormat: PVOID; lpcbFormat: PDWORD): HResult; stdcall;
function AVIStreamSetFormat(pavi: PAVISTREAM; lPos: DWORD; lpFormat: PVOID; cbFormat: DWORD): HResult; stdcall;
function AVIStreamReadData(pavi: PAVISTREAM; fcc: DWORD; lp: PVOID; lpcb: PDWORD): HResult; stdcall;
function AVIStreamWriteData(pavi: PAVISTREAM; fcc: DWORD; lp: PVOID; cb: DWORD): HResult; stdcall;
function AVIStreamRead(
pavi : PAVISTREAM;
lStart : DWORD;
lSamples : DWORD;
lpBuffer : PVOID;
cbBuffer : DWORD;
plBytes : PDWORD;
plSamples : PDWORD
): HResult; stdcall;
const
AVISTREAMREAD_CONVENIENT = -1;
function AVIStreamWrite(
pavi : PAVISTREAM;
lStart,
lSamples : DWORD;
lpBuffer : PVOID;
cbBuffer : DWORD;
dwFlags : DWORD;
plSampWritten : PDWORD;
plBytesWritten : PDWORD
): HResult; stdcall;
function AVIStreamStart(pavi: PAVISTREAM): DWORD; stdcall;
function AVIStreamLength(pavi: PAVISTREAM): DWORD; stdcall;
function AVIStreamTimeToSample(pavi: PAVISTREAM; lTime: DWORD): DWORD; stdcall;
function AVIStreamSampleToTime(pavi: PAVISTREAM; lSample: DWORD): DWORD; stdcall;
function AVIStreamBeginStreaming(pavi: PAVISTREAM; lStart, lEnd: DWORD; lRate: DWORD): HResult; stdcall;
function AVIStreamEndStreaming(pavi: PAVISTREAM): HResult; stdcall;
function AVIStreamGetFrameOpen(pavi: PAVISTREAM; lpbiWanted: PBITMAPINFOHEADER): PGETFRAME; stdcall;
function AVIStreamGetFrame(pg: PGETFRAME; lPos: DWORD): PVOID; stdcall;
function AVIStreamGetFrameClose(pg: PGETFRAME): HResult; stdcall;
function AVIStreamOpenFromFileA(var ppavi: PAVISTREAM; szFile: LPCSTR; fccType: DWORD;
lParam: DWORD; mode: UINT; pclsidHandler: PCLSID): HResult; stdcall;
function AVIStreamOpenFromFileW(var ppavi: PAVISTREAM; szFile: LPCWSTR; fccType: DWORD;
lParam: DWORD; mode: UINT; pclsidHandler: PCLSID): HResult; stdcall;
function AVIStreamOpenFromFile(var ppavi: PAVISTREAM; szFile: LPCSTR; fccType: DWORD;
lParam: DWORD; mode: UINT; pclsidHandler: PCLSID): HResult; stdcall;
function AVIStreamCreate(var ppavi: PAVISTREAM; lParam1, lParam2: DWORD;
pclsidHandler: PCLSID): HResult; stdcall;
const
FIND_DIR = $0000000F; FIND_NEXT = $00000001; FIND_PREV = $00000004; FIND_FROM_START = $00000008;
FIND_TYPE = $000000F0; FIND_KEY = $00000010; FIND_ANY = $00000020; FIND_FORMAT = $00000040;
FIND_RET = $0000F000; FIND_POS = $00000000; FIND_LENGTH = $00001000; FIND_OFFSET = $00002000; FIND_SIZE = $00003000; FIND_INDEX = $00004000;
function AVIStreamFindKeyFrame(pavi: PAVISTREAM; lPos: DWORD; lFlags: DWORD): DWORD; stdcall;
function AVIStreamClose(pavi: PAVISTREAM): UDWORD; stdcall; function AVIFileClose(pfile: PAVIFILE): UDWORD; stdcall; procedure AVIStreamInit; stdcall; procedure AVIStreamExit; stdcall;
const
SEARCH_NEAREST = FIND_PREV;
SEARCH_BACKWARD = FIND_PREV;
SEARCH_FORWARD = FIND_NEXT;
SEARCH_KEY = FIND_KEY;
SEARCH_ANY = FIND_ANY;
function AVIStreamSampleToSample(pavi1, pavi2: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamNextSample(pavi: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamPrevSample(pavi: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamNearestSample(pavi: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamNextKeyFrame(pavi: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamPrevKeyFrame(pavi: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamNearestKeyFrame(pavi: PAVISTREAM; l: DWORD): DWORD;
function AVIStreamIsKeyFrame(pavi: PAVISTREAM; l: DWORD): BOOL;
function AVIStreamPrevSampleTime(pavi: PAVISTREAM; t: DWORD): DWORD;
function AVIStreamNextSampleTime(pavi: PAVISTREAM; t: DWORD): DWORD;
function AVIStreamNearestSampleTime(pavi: PAVISTREAM; t: DWORD): DWORD;
function AVIStreamNextKeyFrameTime(pavi: PAVISTREAM; t: DWORD): DWORD;
function AVIStreamPrevKeyFrameTime(pavi: PAVISTREAM; t: DWORD): DWORD;
function AVIStreamNearestKeyFrameTime(pavi: PAVISTREAM; t: DWORD): DWORD;
function AVIStreamStartTime(pavi: PAVISTREAM): DWORD;
function AVIStreamLengthTime(pavi: PAVISTREAM): DWORD;
function AVIStreamEnd(pavi: PAVISTREAM): DWORD;
function AVIStreamEndTime(pavi: PAVISTREAM): DWORD;
function AVIStreamSampleSize(pavi: PAVISTREAM; lPos: DWORD; plSize: PDWORD): DWORD;
function AVIStreamFormatSize(pavi: PAVISTREAM; lPos: DWORD; plSize: PDWORD): HResult;
function AVIStreamDataSize(pavi: PAVISTREAM; fcc: DWORD; plSize: PDWORD): HResult;
const
comptypeDIB = $20424944;
function AVIMakeCompressedStream(
var ppsCompressed : PAVISTREAM;
ppsSource : PAVISTREAM;
lpOptions : PAVICOMPRESSOPTIONS;
pclsidHandler : PCLSID
): HResult; stdcall;
function AVISaveVA(
szFile : LPCSTR;
pclsidHandler : PCLSID;
lpfnCallback : TAVISAVECALLBACK;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): HResult; stdcall;
function AVISaveVW(
szFile : LPCWSTR;
pclsidHandler : PCLSID;
lpfnCallback : TAVISAVECALLBACK;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): HResult; stdcall;
function AVISaveV(
szFile : LPCSTR;
pclsidHandler : PCLSID;
lpfnCallback : TAVISAVECALLBACK;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): HResult; stdcall;
function AVISaveOptions(
hwnd : HWND;
uiFlags : UINT;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): BOOL; stdcall;
function AVISaveOptionsFree(nStreams: int; var plpOptions: PAVICOMPRESSOPTIONS): HResult; stdcall;
function AVIBuildFilterW(lpszFilter: LPWSTR; cbFilter: DWORD; fSaving: BOOL): HResult; stdcall;
function AVIBuildFilterA(lpszFilter: LPSTR; cbFilter: DWORD; fSaving: BOOL): HResult; stdcall;
function AVIBuildFilter(lpszFilter: LPSTR; cbFilter: DWORD; fSaving: BOOL): HResult; stdcall;
function AVIMakeFileFromStreams(var ppfile: PAVIFILE; nStreams: int; var papStreams: PAVISTREAM): HResult; stdcall;
function AVIMakeStreamFromClipboard(cfFormat: UINT; hGlobal: THANDLE; var ppstream: PAVISTREAM): HResult; stdcall;
function AVIPutFileOnClipboard(pf: PAVIFILE): HResult; stdcall;
function AVIGetFromClipboard(var lppf: PAVIFILE): HResult; stdcall;
function AVIClearClipboard: HResult; stdcall;
function CreateEditableStream(var ppsEditable: PAVISTREAM; psSource: PAVISTREAM): HResult; stdcall;
function EditStreamCut(pavi: PAVISTREAM; plStart, plLength: PDWORD; var ppResult: PAVISTREAM): HResult; stdcall;
function EditStreamCopy(pavi: PAVISTREAM; plStart, plLength: PDWORD; var ppResult: PAVISTREAM): HResult; stdcall;
function EditStreamPaste(pavi: PAVISTREAM; plPos, plLength: PDWORD; pstream: PAVISTREAM; lStart, lEnd: DWORD): HResult; stdcall;
function EditStreamClone(pavi: PAVISTREAM; var ppResult: PAVISTREAM): HResult; stdcall;
function EditStreamSetNameA(pavi: PAVISTREAM; lpszName: LPCSTR): HResult; stdcall;
function EditStreamSetNameW(pavi: PAVISTREAM; lpszName: LPCWSTR): HResult; stdcall;
function EditStreamSetInfoW(pavi: PAVISTREAM; lpInfo: PAVISTREAMINFOW; cbInfo: DWORD): HResult; stdcall;
function EditStreamSetInfoA(pavi: PAVISTREAM; lpInfo: PAVISTREAMINFOA; cbInfo: DWORD): HResult; stdcall;
function EditStreamSetInfo(pavi: PAVISTREAM; lpInfo: PAVISTREAMINFOA; cbInfo: DWORD): HResult; stdcall; function EditStreamSetName(pavi: PAVISTREAM; lpszName: LPCSTR): HResult; stdcall;
const
AVIERR_OK = 0;
const
AVIERR_UNSUPPORTED = $80044065; AVIERR_BADFORMAT = $80044066; AVIERR_MEMORY = $80044067; AVIERR_INTERNAL = $80044068; AVIERR_BADFLAGS = $80044069; AVIERR_BADPARAM = $8004406A; AVIERR_BADSIZE = $8004406B; AVIERR_BADHANDLE = $8004406C; AVIERR_FILEREAD = $8004406D; AVIERR_FILEWRITE = $8004406E; AVIERR_FILEOPEN = $8004406F; AVIERR_COMPRESSOR = $80044070; AVIERR_NOCOMPRESSOR = $80044071; AVIERR_READONLY = $80044072; AVIERR_NODATA = $80044073; AVIERR_BUFFERTOOSMALL = $80044074; AVIERR_CANTCOMPRESS = $80044075; AVIERR_USERABORT = $800440C6; AVIERR_ERROR = $800440C7;
function MCIWndSM(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): DWORD;
const
MCIWND_WINDOW_CLASS = 'MCIWndClass' ;
function MCIWndCreateA(hwndParent: HWND; hInstance: HINST; dwStyle: DWORd; szFile: LPCSTR): HWND; cdecl;
function MCIWndCreateW(hwndParent: HWND; hInstance: HINST; dwStyle: DWORd; szFile: LPCWSTR): HWND; cdecl;
function MCIWndCreate(hwndParent: HWND; hInstance: HINST; dwStyle: DWORd; szFile: LPCSTR): HWND; cdecl;
function MCIWndRegisterClass: BOOL; cdecl;
const
MCIWNDOPENF_NEW = $0001;
MCIWNDF_NOAUTOSIZEWINDOW = $0001; MCIWNDF_NOPLAYBAR = $0002; MCIWNDF_NOAUTOSIZEMOVIE = $0004; MCIWNDF_NOMENU = $0008; MCIWNDF_SHOWNAME = $0010; MCIWNDF_SHOWPOS = $0020; MCIWNDF_SHOWMODE = $0040; MCIWNDF_SHOWALL = $0070;
MCIWNDF_NOTIFYMODE = $0100; MCIWNDF_NOTIFYPOS = $0200; MCIWNDF_NOTIFYSIZE = $0400; MCIWNDF_NOTIFYERROR = $1000; MCIWNDF_NOTIFYALL = $1F00;
MCIWNDF_NOTIFYANSI = $0080;
MCIWNDF_NOTIFYMEDIAA = $0880; MCIWNDF_NOTIFYMEDIAW = $0800;
MCIWNDF_NOTIFYMEDIA = MCIWNDF_NOTIFYMEDIAA;
MCIWNDF_RECORD = $2000; MCIWNDF_NOERRORDLG = $4000; MCIWNDF_NOOPEN = $8000;
function MCIWndCanPlay(hwnd: HWND): BOOL;
function MCIWndCanRecord(hwnd: HWND): BOOL;
function MCIWndCanSave(hwnd: HWND): BOOL;
function MCIWndCanWindow(hwnd: HWND): BOOL;
function MCIWndCanEject(hwnd: HWND): BOOL;
function MCIWndCanConfig(hwnd: HWND): BOOL;
function MCIWndPaletteKick(hwnd: HWND): BOOL;
function MCIWndSave(hwnd: HWND; szFile: LPCSTR): DWORD;
function MCIWndSaveDialog(hwnd: HWND): DWORD;
function MCIWndNew(hwnd: HWND; lp: PVOID): DWORD;
function MCIWndRecord(hwnd: HWND): DWORD;
function MCIWndOpen(hwnd: HWND; sz: LPCSTR; f: BOOL): DWORD;
function MCIWndOpenDialog(hwnd: HWND): DWORD;
function MCIWndClose(hwnd: HWND): DWORD;
function MCIWndPlay(hwnd: HWND): DWORD;
function MCIWndStop(hwnd: HWND): DWORD;
function MCIWndPause(hwnd: HWND): DWORD;
function MCIWndResume(hwnd: HWND): DWORD;
function MCIWndSeek(hwnd: HWND; lPos: DWORD): DWORD;
function MCIWndEject(hwnd: HWND): DWORD;
function MCIWndHome(hwnd: HWND): DWORD;
function MCIWndEnd(hwnd: HWND): DWORD;
function MCIWndGetSource(hwnd: HWND; prc: PRECT): DWORD;
function MCIWndPutSource(hwnd: HWND; prc: PRECT): DWORD;
function MCIWndGetDest(hwnd: HWND; prc: PRECT): DWORD;
function MCIWndPutDest(hwnd: HWND; prc: PRECT): DWORD;
function MCIWndPlayReverse(hwnd: HWND): DWORD;
function MCIWndPlayFrom(hwnd: HWND; lPos: DWORD): DWORD;
function MCIWndPlayTo(hwnd: HWND; lPos: DWORD): DWORD;
function MCIWndPlayFromTo(hwnd: HWND; lStart, lEnd: DWORD): DWORD;
function MCIWndGetDeviceID(hwnd: HWND): UINT;
function MCIWndGetAlias(hwnd: HWND): UINT;
function MCIWndGetMode(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
function MCIWndGetPosition(hwnd: HWND): DWORD;
function MCIWndGetPositionString(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
function MCIWndGetStart(hwnd: HWND): DWORD;
function MCIWndGetLength(hwnd: HWND): DWORD;
function MCIWndGetEnd(hwnd: HWND): DWORD;
function MCIWndStep(hwnd: HWND; n: DWORD): DWORD;
procedure MCIWndDestroy(hwnd: HWND);
procedure MCIWndSetZoom(hwnd: HWND; iZoom: UINT);
function MCIWndGetZoom(hwnd: HWND): UINT;
function MCIWndSetVolume(hwnd: HWND; iVol: UINT): DWORD;
function MCIWndGetVolume(hwnd: HWND): DWORD;
function MCIWndSetSpeed(hwnd: HWND; iSpeed: UINT): DWORD;
function MCIWndGetSpeed(hwnd: HWND): DWORD;
function MCIWndSetTimeFormat(hwnd: HWND; lp: LPCSTR): DWORD;
function MCIWndGetTimeFormat(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
procedure MCIWndValidateMedia(hwnd: HWND);
procedure MCIWndSetRepeat(hwnd: HWND; f: BOOL);
function MCIWndGetRepeat(hwnd: HWND): BOOL;
function MCIWndUseFrames(hwnd: HWND): DWORD;
function MCIWndUseTime(hwnd: HWND): DWORD;
procedure MCIWndSetActiveTimer(hwnd: HWND; active: UINT);
procedure MCIWndSetInactiveTimer(hwnd: HWND; inactive: UINT);
procedure MCIWndSetTimers(hwnd: HWND; active, inactive: UINT);
function MCIWndGetActiveTimer(hwnd: HWND): UINT;
function MCIWndGetInactiveTimer(hwnd: HWND): UINT;
function MCIWndRealize(hwnd: HWND; fBkgnd: BOOL): DWORD;
function MCIWndSendString(hwnd: HWND; sz: LPCSTR): DWORD;
function MCIWndReturnString(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
function MCIWndGetError(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
function MCIWndGetPalette(hwnd: HWND): HPALETTE;
function MCIWndSetPalette(hwnd: HWND; hpal: HPALETTE): DWORD;
function MCIWndGetFileName(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
function MCIWndGetDevice(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
function MCIWndGetStyles(hwnd: HWND): UINT;
function MCIWndChangeStyles(hwnd: HWND; mask: UINT; value: DWORD): DWORD;
type
PUnknown = ^IUnknown;
function MCIWndOpenInterface(hwnd: HWND; pUnk: PUnknown): DWORD;
function MCIWndSetOwner(hwnd: HWND; hwndP: HWND): DWORD;
const
MCIWNDM_GETDEVICEID = WM_USER + 100;
MCIWNDM_GETSTART = WM_USER + 103;
MCIWNDM_GETLENGTH = WM_USER + 104;
MCIWNDM_GETEND = WM_USER + 105;
MCIWNDM_EJECT = WM_USER + 107;
MCIWNDM_SETZOOM = WM_USER + 108;
MCIWNDM_GETZOOM = WM_USER + 109;
MCIWNDM_SETVOLUME = WM_USER + 110;
MCIWNDM_GETVOLUME = WM_USER + 111;
MCIWNDM_SETSPEED = WM_USER + 112;
MCIWNDM_GETSPEED = WM_USER + 113;
MCIWNDM_SETREPEAT = WM_USER + 114;
MCIWNDM_GETREPEAT = WM_USER + 115;
MCIWNDM_REALIZE = WM_USER + 118;
MCIWNDM_VALIDATEMEDIA = WM_USER + 121;
MCIWNDM_PLAYFROM = WM_USER + 122;
MCIWNDM_PLAYTO = WM_USER + 123;
MCIWNDM_GETPALETTE = WM_USER + 126;
MCIWNDM_SETPALETTE = WM_USER + 127;
MCIWNDM_SETTIMERS = WM_USER + 129;
MCIWNDM_SETACTIVETIMER = WM_USER + 130;
MCIWNDM_SETINACTIVETIMER = WM_USER + 131;
MCIWNDM_GETACTIVETIMER = WM_USER + 132;
MCIWNDM_GETINACTIVETIMER = WM_USER + 133;
MCIWNDM_CHANGESTYLES = WM_USER + 135;
MCIWNDM_GETSTYLES = WM_USER + 136;
MCIWNDM_GETALIAS = WM_USER + 137;
MCIWNDM_PLAYREVERSE = WM_USER + 139;
MCIWNDM_GET_SOURCE = WM_USER + 140;
MCIWNDM_PUT_SOURCE = WM_USER + 141;
MCIWNDM_GET_DEST = WM_USER + 142;
MCIWNDM_PUT_DEST = WM_USER + 143;
MCIWNDM_CAN_PLAY = WM_USER + 144;
MCIWNDM_CAN_WINDOW = WM_USER + 145;
MCIWNDM_CAN_RECORD = WM_USER + 146;
MCIWNDM_CAN_SAVE = WM_USER + 147;
MCIWNDM_CAN_EJECT = WM_USER + 148;
MCIWNDM_CAN_CONFIG = WM_USER + 149;
MCIWNDM_PALETTEKICK = WM_USER + 150;
MCIWNDM_OPENINTERFACE = WM_USER + 151;
MCIWNDM_SETOWNER = WM_USER + 152;
MCIWNDM_SENDSTRINGA = WM_USER + 101;
MCIWNDM_GETPOSITIONA = WM_USER + 102;
MCIWNDM_GETMODEA = WM_USER + 106;
MCIWNDM_SETTIMEFORMATA = WM_USER + 119;
MCIWNDM_GETTIMEFORMATA = WM_USER + 120;
MCIWNDM_GETFILENAMEA = WM_USER + 124;
MCIWNDM_GETDEVICEA = WM_USER + 125;
MCIWNDM_GETERRORA = WM_USER + 128;
MCIWNDM_NEWA = WM_USER + 134;
MCIWNDM_RETURNSTRINGA = WM_USER + 138;
MCIWNDM_OPENA = WM_USER + 153;
MCIWNDM_SENDSTRINGW = WM_USER + 201;
MCIWNDM_GETPOSITIONW = WM_USER + 202;
MCIWNDM_GETMODEW = WM_USER + 206;
MCIWNDM_SETTIMEFORMATW = WM_USER + 219;
MCIWNDM_GETTIMEFORMATW = WM_USER + 220;
MCIWNDM_GETFILENAMEW = WM_USER + 224;
MCIWNDM_GETDEVICEW = WM_USER + 225;
MCIWNDM_GETERRORW = WM_USER + 228;
MCIWNDM_NEWW = WM_USER + 234;
MCIWNDM_RETURNSTRINGW = WM_USER + 238;
MCIWNDM_OPENW = WM_USER + 252;
MCIWNDM_SENDSTRING = MCIWNDM_SENDSTRINGA;
MCIWNDM_GETPOSITION = MCIWNDM_GETPOSITIONA;
MCIWNDM_GETMODE = MCIWNDM_GETMODEA;
MCIWNDM_SETTIMEFORMAT = MCIWNDM_SETTIMEFORMATA;
MCIWNDM_GETTIMEFORMAT = MCIWNDM_GETTIMEFORMATA;
MCIWNDM_GETFILENAME = MCIWNDM_GETFILENAMEA;
MCIWNDM_GETDEVICE = MCIWNDM_GETDEVICEA;
MCIWNDM_GETERROR = MCIWNDM_GETERRORA;
MCIWNDM_NEW = MCIWNDM_NEWA;
MCIWNDM_RETURNSTRING = MCIWNDM_RETURNSTRINGA;
MCIWNDM_OPEN = MCIWNDM_OPENA;
const
MCIWNDM_NOTIFYMODE = WM_USER + 200; MCIWNDM_NOTIFYPOS = WM_USER + 201; MCIWNDM_NOTIFYSIZE = WM_USER + 202; MCIWNDM_NOTIFYMEDIA = WM_USER + 203; MCIWNDM_NOTIFYERROR = WM_USER + 205;
MCIWND_START = -1 ;
MCIWND_END = -2 ;
type
HVIDEO = THandle;
PHVIDEO = ^HVIDEO;
const
DV_ERR_OK = 0; DV_ERR_BASE = 1; DV_ERR_NONSPECIFIC = DV_ERR_BASE;
DV_ERR_BADFORMAT = DV_ERR_BASE + 1; DV_ERR_STILLPLAYING = DV_ERR_BASE + 2; DV_ERR_UNPREPARED = DV_ERR_BASE + 3; DV_ERR_SYNC = DV_ERR_BASE + 4; DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5; DV_ERR_NOTDETECTED = DV_ERR_BASE + 6; DV_ERR_BADINSTALL = DV_ERR_BASE + 7; DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8;
DV_ERR_SIZEFIELD = DV_ERR_BASE + 9;
DV_ERR_PARAM1 = DV_ERR_BASE + 10;
DV_ERR_PARAM2 = DV_ERR_BASE + 11;
DV_ERR_CONFIG1 = DV_ERR_BASE + 12;
DV_ERR_CONFIG2 = DV_ERR_BASE + 13;
DV_ERR_FLAGS = DV_ERR_BASE + 14;
DV_ERR_13 = DV_ERR_BASE + 15;
DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16; DV_ERR_NOMEM = DV_ERR_BASE + 17; DV_ERR_ALLOCATED = DV_ERR_BASE + 18; DV_ERR_BADDEVICEID = DV_ERR_BASE + 19;
DV_ERR_INVALHANDLE = DV_ERR_BASE + 20;
DV_ERR_BADERRNUM = DV_ERR_BASE + 21;
DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22;
DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23; DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24; DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25; DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26; DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27; DV_ERR_LASTERROR = DV_ERR_BASE + 27;
DV_ERR_USER_MSG = DV_ERR_BASE + 1000;
const
DV_VM_OPEN = MM_DRVM_OPEN; DV_VM_CLOSE = MM_DRVM_CLOSE;
DV_VM_DATA = MM_DRVM_DATA;
DV_VM_ERROR = MM_DRVM_ERROR;
type
PVIDEOHDR = ^TVIDEOHDR;
TVIDEOHDR = record
lpData : PBYTE; dwBufferLength : DWORD; dwBytesUsed : DWORD; dwTimeCaptured : DWORD; dwUser : DWORD; dwFlags : DWORD; dwReserved : array[0..3] of DWORD; end;
const
VHDR_DONE = $00000001; VHDR_PREPARED = $00000002; VHDR_INQUEUE = $00000004; VHDR_KEYFRAME = $00000008;
type
PCHANNEL_CAPS = ^TCHANNEL_CAPS;
TCHANNEL_CAPS = record
dwFlags : DWORD; dwSrcRectXMod : DWORD; dwSrcRectYMod : DWORD; dwSrcRectWidthMod : DWORD; dwSrcRectHeightMod : DWORD; dwDstRectXMod : DWORD; dwDstRectYMod : DWORD; dwDstRectWidthMod : DWORD; dwDstRectHeightMod : DWORD; end;
const
VCAPS_OVERLAY = $00000001; VCAPS_SRC_CAN_CLIP = $00000002; VCAPS_DST_CAN_CLIP = $00000004; VCAPS_CAN_SCALE = $00000008;
const
VIDEO_EXTERNALIN = $0001;
VIDEO_EXTERNALOUT = $0002;
VIDEO_IN = $0004;
VIDEO_OUT = $0008;
VIDEO_DLG_QUERY = $0010;
VIDEO_CONFIGURE_QUERY = $8000;
VIDEO_CONFIGURE_SET = $1000;
VIDEO_CONFIGURE_GET = $2000;
VIDEO_CONFIGURE_QUERYSIZE = $0001;
VIDEO_CONFIGURE_CURRENT = $0010;
VIDEO_CONFIGURE_NOMINAL = $0020;
VIDEO_CONFIGURE_MIN = $0040;
VIDEO_CONFIGURE_MAX = $0080;
DVM_USER = $4000;
DVM_CONFIGURE_START = $1000;
DVM_CONFIGURE_END = $1FFF;
DVM_PALETTE = DVM_CONFIGURE_START + 1;
DVM_FORMAT = DVM_CONFIGURE_START + 2;
DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3;
DVM_SRC_RECT = DVM_CONFIGURE_START + 4;
DVM_DST_RECT = DVM_CONFIGURE_START + 5;
function AVICapSM(hwnd: HWND; m: UINT; w: WPARAM; l: LPARAM): DWORD;
const
WM_CAP_START = WM_USER;
WM_CAP_UNICODE_START = WM_USER + 100;
WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1;
WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2;
WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3;
WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2;
WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3;
WM_CAP_SET_CALLBACK_ERROR = WM_CAP_SET_CALLBACK_ERRORA;
WM_CAP_SET_CALLBACK_STATUS = WM_CAP_SET_CALLBACK_STATUSA;
WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4;
WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5;
WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6;
WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7;
WM_CAP_GET_USER_DATA = WM_CAP_START + 8;
WM_CAP_SET_USER_DATA = WM_CAP_START + 9;
WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12;
WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13;
WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12;
WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13;
WM_CAP_DRIVER_GET_NAME = WM_CAP_DRIVER_GET_NAMEA;
WM_CAP_DRIVER_GET_VERSION = WM_CAP_DRIVER_GET_VERSIONA;
WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14;
WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21;
WM_CAP_FILE_SAVEASA = WM_CAP_START + 23;
WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25;
WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20;
WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21;
WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23;
WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25;
WM_CAP_FILE_SET_CAPTURE_FILE = WM_CAP_FILE_SET_CAPTURE_FILEA;
WM_CAP_FILE_GET_CAPTURE_FILE = WM_CAP_FILE_GET_CAPTURE_FILEA;
WM_CAP_FILE_SAVEAS = WM_CAP_FILE_SAVEASA;
WM_CAP_FILE_SAVEDIB = WM_CAP_FILE_SAVEDIBA;
WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22;
WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24;
WM_CAP_EDIT_COPY = WM_CAP_START + 30;
WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35;
WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36;
WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41;
WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42;
WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43;
WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44;
WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45;
WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46;
WM_CAP_SET_PREVIEW = WM_CAP_START + 50;
WM_CAP_SET_OVERLAY = WM_CAP_START + 51;
WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52;
WM_CAP_SET_SCALE = WM_CAP_START + 53;
WM_CAP_GET_STATUS = WM_CAP_START + 54;
WM_CAP_SET_SCROLL = WM_CAP_START + 55;
WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61;
WM_CAP_SEQUENCE = WM_CAP_START + 62;
WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63;
WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64;
WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65;
WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66;
WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67;
WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66;
WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67;
WM_CAP_SET_MCI_DEVICE = WM_CAP_SET_MCI_DEVICEA;
WM_CAP_GET_MCI_DEVICE = WM_CAP_GET_MCI_DEVICEA;
WM_CAP_STOP = WM_CAP_START + 68;
WM_CAP_ABORT = WM_CAP_START + 69;
WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70;
WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71;
WM_CAP_SINGLE_FRAME = WM_CAP_START + 72;
WM_CAP_PAL_OPENA = WM_CAP_START + 80;
WM_CAP_PAL_SAVEA = WM_CAP_START + 81;
WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80;
WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81;
WM_CAP_PAL_OPEN = WM_CAP_PAL_OPENA;
WM_CAP_PAL_SAVE = WM_CAP_PAL_SAVEA;
WM_CAP_PAL_PASTE = WM_CAP_START + 82;
WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83;
WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84;
WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85;
WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW;
WM_CAP_END = WM_CAP_UNICODE_END;
type
TCAPYIELDCALLBACK = function(hWnd: HWND): DWORD; stdcall;
TCAPSTATUSCALLBACKW = function(hWnd: HWND; nID: int; lpsz: LPCWSTR): DWORD; stdcall;
TCAPERRORCALLBACKW = function(hWnd: HWND; nID: int; lpsz: LPCWSTR): DWORD; stdcall;
TCAPSTATUSCALLBACKA = function(hWnd: HWND; nID: int; lpsz: LPCSTR): DWORD; stdcall;
TCAPERRORCALLBACKA = function(hWnd: HWND; nID: int; lpsz: LPCSTR): DWORD; stdcall;
TCAPSTATUSCALLBACK = TCAPSTATUSCALLBACKA;
TCAPERRORCALLBACK = TCAPERRORCALLBACKA;
TCAPVIDEOCALLBACK = function(hWnd: HWND; lpVHdr: PVIDEOHDR): DWORD; stdcall;
TCAPWAVECALLBACK = function(hWnd: HWND; lpWHdr: PWAVEHDR): DWORD; stdcall;
TCAPCONTROLCALLBACK = function(hWnd: HWND; nState: int): DWORD; stdcall;
type
PCAPDRIVERCAPS = ^TCAPDRIVERCAPS;
TCAPDRIVERCAPS = record
wDeviceIndex : UINT; fHasOverlay : BOOL; fHasDlgVideoSource : BOOL; fHasDlgVideoFormat : BOOL; fHasDlgVideoDisplay : BOOL; fCaptureInitialized : BOOL; fDriverSuppliesPalettes : BOOL;
hVideoIn : THANDLE; hVideoOut : THANDLE; hVideoExtIn : THANDLE; hVideoExtOut : THANDLE; end;
PCAPSTATUS = ^TCAPSTATUS;
TCAPSTATUS = record
uiImageWidth : UINT ; uiImageHeight : UINT ; fLiveWindow : BOOL ; fOverlayWindow : BOOL ; fScale : BOOL ; ptScroll : TPOINT ; fUsingDefaultPalette : BOOL ; fAudioHardware : BOOL ; fCapFileExists : BOOL ; dwCurrentVideoFrame : DWORD ; dwCurrentVideoFramesDropped : DWORD ; dwCurrentWaveSamples : DWORD ; dwCurrentTimeElapsedMS : DWORD ; hPalCurrent : HPALETTE; fCapturingNow : BOOL ; dwReturn : DWORD ; wNumVideoAllocated : UINT ; wNumAudioAllocated : UINT ; end;
PCAPTUREPARMS = ^TCAPTUREPARMS;
TCAPTUREPARMS = record
dwRequestMicroSecPerFrame : DWORD ; fMakeUserHitOKToCapture : BOOL ; wPercentDropForError : UINT ; fYield : BOOL ; dwIndexSize : DWORD ; wChunkGranularity : UINT ; fUsingDOSMemory : BOOL ; wNumVideoRequested : UINT ; fCaptureAudio : BOOL ; wNumAudioRequested : UINT ; vKeyAbort : UINT ; fAbortLeftMouse : BOOL ; fAbortRightMouse : BOOL ; fLimitEnabled : BOOL ; wTimeLimit : UINT ; fMCIControl : BOOL ; fStepMCIDevice : BOOL ; dwMCIStartTime : DWORD ; dwMCIStopTime : DWORD ; fStepCaptureAt2x : BOOL ; wStepCaptureAverageFrames : UINT ; dwAudioBufferSize : DWORD ; fDisableWriteCache : BOOL ; AVStreamMaster : UINT ; end;
const
AVSTREAMMASTER_AUDIO = 0; AVSTREAMMASTER_NONE = 1;
type
PCAPINFOCHUNK = ^TCAPINFOCHUNK;
TCAPINFOCHUNK = record
fccInfoID : FOURCC; lpData : PVOID; cbData : DWORD; end;
const
CONTROLCALLBACK_PREROLL = 1; CONTROLCALLBACK_CAPTURING = 2;
function capSetCallbackOnError(hwnd: HWND; fpProc: TCAPERRORCALLBACK): BOOL;
function capSetCallbackOnStatus(hwnd: HWND; fpProc: TCAPSTATUSCALLBACK): BOOL;
function capSetCallbackOnYield(hwnd: HWND; fpProc: TCAPYIELDCALLBACK): BOOL;
function capSetCallbackOnFrame(hwnd: HWND; fpProc: TCAPVIDEOCALLBACK): BOOL;
function capSetCallbackOnVideoStream(hwnd: HWND; fpProc: TCAPVIDEOCALLBACK): BOOL;
function capSetCallbackOnWaveStream(hwnd: HWND; fpProc: TCAPWAVECALLBACK): BOOL;
function capSetCallbackOnCapControl(hwnd: HWND; fpProc: TCAPCONTROLCALLBACK): BOOL;
function capSetUserData(hwnd: HWND; lUser: DWORD): BOOL;
function capGetUserData(hwnd: HWND): DWORD;
function capDriverConnect(hwnd: HWND; i: INT): BOOL;
function capDriverDisconnect(hwnd: HWND): BOOL;
function capDriverGetName(hwnd: HWND; szName: LPSTR; wSize: WORD): BOOL;
function capDriverGetVersion(hwnd: HWND; szVer: LPSTR; wSize: WORD): BOOL;
function capDriverGetCaps(hwnd: HWND; s: PCAPDRIVERCAPS; wSize: WORD): BOOL;
function capFileSetCaptureFile(hwnd: HWND; szName: LPCSTR): BOOL;
function capFileGetCaptureFile(hwnd: HWND; szName: LPSTR; wSize: WORD): BOOL;
function capFileAlloc(hwnd: HWND; dwSize: DWORD): BOOL;
function capFileSaveAs(hwnd: HWND; szName: LPCSTR): BOOL;
function capFileSetInfoChunk(hwnd: HWND; lpInfoChunk: PCAPINFOCHUNK): BOOL;
function capFileSaveDIB(hwnd: HWND; szName: LPCSTR): BOOL;
function capEditCopy(hwnd: HWND): BOOL;
function capSetAudioFormat(hwnd: HWND; s: PWAVEFORMATEX; wSize: WORD): BOOL;
function capGetAudioFormat(hwnd: HWND; s: PWAVEFORMATEX; wSize: WORD): DWORD;
function capGetAudioFormatSize(hwnd: HWND): DWORD;
function capDlgVideoFormat(hwnd: HWND): BOOL;
function capDlgVideoSource(hwnd: HWND): BOOL;
function capDlgVideoDisplay(hwnd: HWND): BOOL;
function capDlgVideoCompression(hwnd: HWND): BOOL;
function capGetVideoFormat(hwnd: HWND; s: PVOID; wSize: WORD): DWORD;
function capGetVideoFormatSize(hwnd: HWND): DWORD;
function capSetVideoFormat(hwnd: HWND; s: PVOID; wSize: WORD): BOOL;
function capPreview(hwnd: HWND; f: BOOL): BOOL;
function capPreviewRate(hwnd: HWND; wMS: WORD): BOOL;
function capOverlay(hwnd: HWND; f: BOOL): BOOL;
function capPreviewScale(hwnd: HWND; f: BOOL): BOOL;
function capGetStatus(hwnd: HWND; s: PCAPSTATUS; wSize: WORD): BOOL;
function capSetScrollPos(hwnd: HWND; lpP: PPOINT): BOOL;
function capGrabFrame(hwnd: HWND): BOOL;
function capGrabFrameNoStop(hwnd: HWND): BOOL;
function capCaptureSequence(hwnd: HWND): BOOL;
function capCaptureSequenceNoFile(hwnd: HWND): BOOL;
function capCaptureStop(hwnd: HWND): BOOL;
function capCaptureAbort(hwnd: HWND): BOOL;
function capCaptureSingleFrameOpen(hwnd: HWND): BOOL;
function capCaptureSingleFrameClose(hwnd: HWND): BOOL;
function capCaptureSingleFrame(hwnd: HWND): BOOL;
function capCaptureGetSetup(hwnd: HWND; s: PCAPTUREPARMS; wSize: WORD): BOOL;
function capCaptureSetSetup(hwnd: HWND; s: PCAPTUREPARMS; wSize: WORD): BOOL;
function capSetMCIDeviceName(hwnd: HWND; szName: LPCSTR): BOOL;
function capGetMCIDeviceName(hwnd: HWND; szName: LPSTR; wSize: WORD): BOOL;
function capPaletteOpen(hwnd: HWND; szName: LPCSTR): BOOL;
function capPaletteSave(hwnd: HWND; szName: LPCSTR): BOOL;
function capPalettePaste(hwnd: HWND): BOOL;
function capPaletteAuto(hwnd: HWND; iFrames, iColors: INT): BOOL;
function capPaletteManual(hwnd: HWND; fGrab: BOOL; iColors: INT): BOOL;
function capCreateCaptureWindowA(
lpszWindowName : LPCSTR;
dwStyle : DWORD;
x, y : int;
nWidth, nHeight : int;
hwndParent : HWND;
nID : int
): HWND; stdcall;
function capGetDriverDescriptionA(
wDriverIndex : UINT;
lpszName : LPSTR;
cbName : int;
lpszVer : LPSTR;
cbVer : int
): BOOL; stdcall;
function capCreateCaptureWindowW(
lpszWindowName : LPCWSTR;
dwStyle : DWORD;
x, y : int;
nWidth, nHeight : int;
hwndParent : HWND;
nID : int
): HWND; stdcall;
function capGetDriverDescriptionW(
wDriverIndex : UINT;
lpszName : LPWSTR;
cbName : int;
lpszVer : LPWSTR;
cbVer : int
): BOOL; stdcall;
function capCreateCaptureWindow(
lpszWindowName : LPCSTR;
dwStyle : DWORD;
x, y : int;
nWidth, nHeight : int;
hwndParent : HWND;
nID : int
): HWND; stdcall;
function capGetDriverDescription(
wDriverIndex : UINT;
lpszName : LPSTR;
cbName : int;
lpszVer : LPSTR;
cbVer : int
): BOOL; stdcall;
const
infotypeDIGITIZATION_TIME = $54494449; infotypeSMPTE_TIME = $504D5349;
IDS_CAP_BEGIN = 300; IDS_CAP_END = 301;
IDS_CAP_INFO = 401; IDS_CAP_OUTOFMEM = 402; IDS_CAP_FILEEXISTS = 403; IDS_CAP_ERRORPALOPEN = 404; IDS_CAP_ERRORPALSAVE = 405; IDS_CAP_ERRORDIBSAVE = 406; IDS_CAP_DEFAVIEXT = 407; IDS_CAP_DEFPALEXT = 408; IDS_CAP_CANTOPEN = 409; IDS_CAP_SEQ_MSGSTART = 410; IDS_CAP_SEQ_MSGSTOP = 411;
IDS_CAP_VIDEDITERR = 412; IDS_CAP_READONLYFILE = 413; IDS_CAP_WRITEERROR = 414; IDS_CAP_NODISKSPACE = 415; IDS_CAP_SETFILESIZE = 416; IDS_CAP_SAVEASPERCENT = 417;
IDS_CAP_DRIVER_ERROR = 418;
IDS_CAP_WAVE_OPEN_ERROR = 419; IDS_CAP_WAVE_ALLOC_ERROR = 420; IDS_CAP_WAVE_PREPARE_ERROR = 421; IDS_CAP_WAVE_ADD_ERROR = 422; IDS_CAP_WAVE_SIZE_ERROR = 423;
IDS_CAP_VIDEO_OPEN_ERROR = 424; IDS_CAP_VIDEO_ALLOC_ERROR = 425; IDS_CAP_VIDEO_PREPARE_ERROR = 426; IDS_CAP_VIDEO_ADD_ERROR = 427; IDS_CAP_VIDEO_SIZE_ERROR = 428;
IDS_CAP_FILE_OPEN_ERROR = 429; IDS_CAP_FILE_WRITE_ERROR = 430; IDS_CAP_RECORDING_ERROR = 431; IDS_CAP_RECORDING_ERROR2 = 432; IDS_CAP_AVI_INIT_ERROR = 433; IDS_CAP_NO_FRAME_CAP_ERROR = 434; IDS_CAP_NO_PALETTE_WARN = 435; IDS_CAP_MCI_CONTROL_ERROR = 436; IDS_CAP_MCI_CANT_STEP_ERROR = 437; IDS_CAP_NO_AUDIO_CAP_ERROR = 438; IDS_CAP_AVI_DRAWDIB_ERROR = 439; IDS_CAP_COMPRESSOR_ERROR = 440; IDS_CAP_AUDIO_DROP_ERROR = 441;
IDS_CAP_STAT_LIVE_MODE = 500; IDS_CAP_STAT_OVERLAY_MODE = 501; IDS_CAP_STAT_CAP_INIT = 502; IDS_CAP_STAT_CAP_FINI = 503; IDS_CAP_STAT_PALETTE_BUILD = 504; IDS_CAP_STAT_OPTPAL_BUILD = 505; IDS_CAP_STAT_I_FRAMES = 506; IDS_CAP_STAT_L_FRAMES = 507; IDS_CAP_STAT_CAP_L_FRAMES = 508; IDS_CAP_STAT_CAP_AUDIO = 509; IDS_CAP_STAT_VIDEOCURRENT = 510; IDS_CAP_STAT_VIDEOAUDIO = 511; IDS_CAP_STAT_VIDEOONLY = 512; IDS_CAP_STAT_FRAMESDROPPED = 513;
function GetOpenFileNamePreviewA(lpofn: POPENFILENAMEA): BOOL; stdcall;
function GetSaveFileNamePreviewA(lpofn: POPENFILENAMEA): BOOL; stdcall;
function GetOpenFileNamePreviewW(lpofn: POPENFILENAMEW): BOOL; stdcall;
function GetSaveFileNamePreviewW(lpofn: POPENFILENAMEW): BOOL; stdcall;
function GetOpenFileNamePreview(lpofn: POPENFILENAMEA): BOOL; stdcall; function GetSaveFileNamePreview(lpofn: POPENFILENAMEA): BOOL; stdcall;
implementation
function MKFOURCC( ch0, ch1, ch2, ch3: Char ): FOURCC;
begin
Result := (DWord(Ord(ch0))) or
(DWord(Ord(ch1)) shl 8) or
(DWord(Ord(ch2)) shl 16) or
(DWord(Ord(ch3)) shl 24);
end;
function mmioFOURCC( ch0, ch1, ch2, ch3: Char ): FOURCC;
begin
Result := MKFOURCC(ch0,ch1,ch2,ch3);
end;
function aviTWOCC(ch0, ch1: Char): TWOCC;
begin
Result := (Word(Ord(ch0))) or
(Word(Ord(ch1)) shl 8);
end;
function ICQueryAbout(hic: HIC): BOOL;
begin
Result := ICSendMessage(hic, ICM_ABOUT, 0, ICMF_ABOUT_QUERY) = ICERR_OK;
end;
function ICAbout(hic: HIC; hwnd: HWND): DWORD;
begin
Result := ICSendMessage(hic, ICM_ABOUT, hwnd, 0);
end;
function ICQueryConfigure(hic: HIC): BOOL;
begin
Result := ICSendMessage(hic, ICM_CONFIGURE, 0, ICMF_CONFIGURE_QUERY) = ICERR_OK;
end;
function ICConfigure(hic: HIC; hwnd: HWND): DWORD;
begin
Result := ICSendMessage(hic, ICM_CONFIGURE, hwnd, 0);
end;
function ICGetState(hic: HIC; pv: PVOID; cb: DWORD): DWORD;
begin
Result := ICSendMessage(hic, ICM_GETSTATE, DWORD(pv), cb);
end;
function ICSetState(hic: HIC; pv: PVOID; cb: DWORD): DWORD;
begin
Result := ICSendMessage(hic, ICM_SETSTATE, DWORD(pv), cb);
end;
function ICGetStateSize(hic: HIC): DWORD;
begin
Result := ICGetState(hic, nil, 0);
end;
function ICGetDefaultQuality(hic: HIC): DWORD;
begin
ICSendMessage(hic, ICM_GETDEFAULTQUALITY, DWORD(@Result), sizeof(Result));
end;
function ICGetDefaultKeyFrameRate(hic: HIC): DWORD;
begin
ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, DWORD(@Result), sizeof(Result));
end;
function ICDrawWindow(hic: HIC; prc: PRECT): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_WINDOW, DWORD(prc), sizeof(prc^));
end;
function ICCompressBegin(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_COMPRESS_BEGIN, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICCompressQuery(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_COMPRESS_QUERY, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICCompressGetFormat(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICCompressGetFormatSize(hic: HIC; lpbi: PBITMAPINFOHEADER): DWORD;
begin
Result := ICCompressGetFormat(hic, lpbi, nil);
end;
function ICCompressGetSize(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICCompressEnd(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_COMPRESS_END, 0, 0);
end;
function ICDecompressBegin(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICDecompressQuery(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESS_QUERY, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICDecompressGetFormat(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICDecompressGetFormatSize(hic: HIC; lpbi: PBITMAPINFOHEADER): DWORD;
begin
Result := ICDecompressGetFormat(hic, lpbi, nil);
end;
function ICDecompressGetPalette(hic: HIC; lpbiInput, lpbiOutput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, DWORD(lpbiInput), DWORD(lpbiOutput));
end;
function ICDecompressSetPalette(hic: HIC; lpbiPalette: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, DWORD(lpbiPalette), 0);
end;
function ICDecompressEnd(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0);
end;
function ICDecompressEx(
hic : HIC;
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER;
lpSrc : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
lpbiDst : PBITMAPINFOHEADER;
lpDst : PVOID;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int
): DWORD; stdcall;
var
ic : TICDECOMPRESSEX;
begin
ic.dwFlags := dwFlags;
ic.lpbiSrc := lpbiSrc;
ic.lpSrc := lpSrc;
ic.xSrc := xSrc;
ic.ySrc := ySrc;
ic.dxSrc := dxSrc;
ic.dySrc := dySrc;
ic.lpbiDst := lpbiDst;
ic.lpDst := lpDst;
ic.xDst := xDst;
ic.yDst := yDst;
ic.dxDst := dxDst;
ic.dyDst := dyDst;
Result := ICSendMessage(hic, ICM_DECOMPRESSEX, DWORD(@ic), sizeof(ic));
end;
function ICDecompressExBegin(
hic : HIC;
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER;
lpSrc : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
lpbiDst : PBITMAPINFOHEADER;
lpDst : PVOID;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int
): DWORD; stdcall;
var
ic : TICDECOMPRESSEX ;
begin
ic.dwFlags := dwFlags;
ic.lpbiSrc := lpbiSrc;
ic.lpSrc := lpSrc;
ic.xSrc := xSrc;
ic.ySrc := ySrc;
ic.dxSrc := dxSrc;
ic.dySrc := dySrc;
ic.lpbiDst := lpbiDst;
ic.lpDst := lpDst;
ic.xDst := xDst;
ic.yDst := yDst;
ic.dxDst := dxDst;
ic.dyDst := dyDst;
Result := ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, DWORD(@ic), sizeof(ic));
end;
function ICDecompressExQuery(
hic : HIC;
dwFlags : DWORD;
lpbiSrc : PBITMAPINFOHEADER;
lpSrc : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
lpbiDst : PBITMAPINFOHEADER;
lpDst : PVOID;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int
): DWORD; stdcall;
var
ic : TICDECOMPRESSEX;
begin
ic.dwFlags := dwFlags;
ic.lpbiSrc := lpbiSrc;
ic.lpSrc := lpSrc;
ic.xSrc := xSrc;
ic.ySrc := ySrc;
ic.dxSrc := dxSrc;
ic.dySrc := dySrc;
ic.lpbiDst := lpbiDst;
ic.lpDst := lpDst;
ic.xDst := xDst;
ic.yDst := yDst;
ic.dxDst := dxDst;
ic.dyDst := dyDst;
Result := ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, DWORD(@ic), sizeof(ic));
end;
function ICDecompressExEnd(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
end;
function ICDrawSuggestFormat(
hic : HIC;
lpbiIn : PBITMAPINFOHEADER;
lpbiOut : PBITMAPINFOHEADER;
dxSrc : int;
dySrc : int;
dxDst : int;
dyDst : int;
hicDecomp : HIC
): DWORD; stdcall;
var
ic : TICDRAWSUGGEST;
begin
ic.lpbiIn := lpbiIn;
ic.lpbiSuggest := lpbiOut;
ic.dxSrc := dxSrc;
ic.dySrc := dySrc;
ic.dxDst := dxDst;
ic.dyDst := dyDst;
ic.hicDecompressor := hicDecomp;
Result := ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, DWORD(@ic), sizeof(ic));
end;
function ICDrawQuery(hic: HIC; lpbiInput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_QUERY, DWORD(lpbiInput), 0);
end;
function ICDrawChangePalette(hic: HIC; lpbiInput: PBITMAPINFOHEADER): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, DWORD(lpbiInput), 0);
end;
function ICGetBuffersWanted(hic: HIC; lpdwBuffers: PDWORD): DWORD;
begin
Result := ICSendMessage(hic, ICM_GETBUFFERSWANTED, DWORD(lpdwBuffers), 0);
end;
function ICDrawEnd(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_END, 0, 0);
end;
function ICDrawStart(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_START, 0, 0);
end;
function ICDrawStartPlay(hic: HIC; lFrom, lTo: DWORD): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_START_PLAY, lFrom, lTo);
end;
function ICDrawStop(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_STOP, 0, 0);
end;
function ICDrawStopPlay(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0);
end;
function ICDrawGetTime(hic: HIC; lplTime: PDWORD): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_GETTIME, DWORD(lplTime), 0);
end;
function ICDrawSetTime(hic: HIC; lTime: DWORD): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_SETTIME, lTime, 0);
end;
function ICDrawRealize(hic: HIC; hdc: HDC; fBackground: BOOL): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_REALIZE, DWORD(hdc), DWORD(fBackground));
end;
function ICDrawFlush(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0);
end;
function ICDrawRenderBuffer(hic: HIC): DWORD;
begin
Result := ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0);
end;
function ICSetStatusProc(
hic : HIC;
dwFlags : DWORD;
lParam : DWORD;
fpfnStatus : TICStatusProc
): DWORD; stdcall;
var
ic : TICSETSTATUSPROC;
begin
ic.dwFlags := dwFlags;
ic.lParam := lParam;
ic.Status := fpfnStatus;
Result := ICSendMessage(hic, ICM_SET_STATUS_PROC, DWORD(@ic), sizeof(ic));
end;
function ICDecompressOpen(fccType, fccHandler: DWORD; lpbiIn, lpbiOut: PBITMAPINFOHEADER): HIC;
begin
Result := ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS);
end;
function ICDrawOpen(fccType, fccHandler: DWORD; lpbiIn: PBITMAPINFOHEADER): HIC;
begin
Result := ICLocate(fccType, fccHandler, lpbiIn, nil, ICMODE_DRAW);
end;
function DrawDibUpdate(hdd: HDRAWDIB; hdc: HDC; x, y: int): BOOL;
begin
Result := DrawDibDraw(hdd, hdc, x, y, 0, 0, nil, nil, 0, 0, 0, 0, DDF_UPDATE);
end;
function FromHex(n: BYTE): BYTE;
begin
if n >= Ord('A') then
Result := Ord(n) + 10 - Ord('A')
else
Result := Ord(n) - Ord('0');
end;
function StreamFromFOURCC(fcc: DWORD): BYTE;
begin
Result := (FromHex(Lo(LoWord(fcc))) shl 4) + FromHex(Hi(LoWord(fcc)));
end;
function TWOCCFromFOURCC(fcc: DWORD): WORD;
begin
Result := HiWord(fcc);
end;
function ToHex(n: BYTE): BYTE;
begin
if n > 9 then
Result := n - 10 + Ord('A')
else
Result := n + Ord('0');
end;
function MAKEAVICKID(tcc: WORD; stream: BYTE): DWORD;
begin
Result := MakeLONG((ToHex(stream and $0F) shl 8) or ToHex((stream and $F0) shr 4),tcc);
end;
function AVIStreamSampleToSample(pavi1, pavi2: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l));
end;
function AVIStreamNextSample(pavi: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamFindSample(pavi,l+1,FIND_NEXT or FIND_ANY);
end;
function AVIStreamPrevSample(pavi: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamFindSample(pavi,l-1,FIND_PREV or FIND_ANY);
end;
function AVIStreamNearestSample(pavi: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamFindSample(pavi,l,FIND_PREV or FIND_ANY);
end;
function AVIStreamNextKeyFrame(pavi: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamFindSample(pavi,l+1,FIND_NEXT or FIND_KEY);
end;
function AVIStreamPrevKeyFrame(pavi: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamFindSample(pavi,l-1,FIND_PREV or FIND_KEY);
end;
function AVIStreamNearestKeyFrame(pavi: PAVISTREAM; l: DWORD): DWORD;
begin
Result := AVIStreamFindSample(pavi,l,FIND_PREV or FIND_KEY)
end;
function AVIStreamIsKeyFrame(pavi: PAVISTREAM; l: DWORD): BOOL;
begin
Result := AVIStreamNearestKeyFrame(pavi,l) = l;
end;
function AVIStreamPrevSampleTime(pavi: PAVISTREAM; t: DWORD): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t)));
end;
function AVIStreamNextSampleTime(pavi: PAVISTREAM; t: DWORD): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t)));
end;
function AVIStreamNearestSampleTime(pavi: PAVISTREAM; t: DWORD): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t)));
end;
function AVIStreamNextKeyFrameTime(pavi: PAVISTREAM; t: DWORD): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t)));
end;
function AVIStreamPrevKeyFrameTime(pavi: PAVISTREAM; t: DWORD): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t)));
end;
function AVIStreamNearestKeyFrameTime(pavi: PAVISTREAM; t: DWORD): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t)));
end;
function AVIStreamStartTime(pavi: PAVISTREAM): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamStart(pavi));
end;
function AVIStreamLengthTime(pavi: PAVISTREAM): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamLength(pavi));
end;
function AVIStreamEnd(pavi: PAVISTREAM): DWORD;
begin
Result := AVIStreamStart(pavi) + AVIStreamLength(pavi);
end;
function AVIStreamEndTime(pavi: PAVISTREAM): DWORD;
begin
Result := AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi));
end;
function AVIStreamSampleSize(pavi: PAVISTREAM; lPos: DWORD; plSize: PDWORD): DWORD;
begin
Result := AVIStreamRead(pavi,lPos,1,nil,0,plSize,nil);
end;
function AVIStreamFormatSize(pavi: PAVISTREAM; lPos: DWORD; plSize: PDWORD): HResult;
begin
Result := AVIStreamReadFormat(pavi,lPos,nil,plSize);
end;
function AVIStreamDataSize(pavi: PAVISTREAM; fcc: DWORD; plSize: PDWORD): HResult;
begin
Result := AVIStreamReadData(pavi,fcc,nil,plSize)
end;
function MCIWndSM(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): DWORD;
begin
Result := SendMessage(hWnd, Msg, wParam, lParam);
end;
function MCIWndCanPlay(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_CAN_PLAY,0,0) <> 0;
end;
function MCIWndCanRecord(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_CAN_RECORD,0,0) <> 0;
end;
function MCIWndCanSave(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_CAN_SAVE,0,0) <> 0;
end;
function MCIWndCanWindow(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_CAN_WINDOW,0,0) <> 0;
end;
function MCIWndCanEject(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_CAN_EJECT,0,0) <> 0;
end;
function MCIWndCanConfig(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_CAN_CONFIG,0,0) <> 0;
end;
function MCIWndPaletteKick(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd,MCIWNDM_PALETTEKICK,0,0) <> 0;
end;
function MCIWndSave(hwnd: HWND; szFile: LPCSTR): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_SAVE, 0, LPARAM(szFile));
end;
function MCIWndSaveDialog(hwnd: HWND): DWORD;
begin
Result := MCIWndSave(hwnd, LPCSTR(-1));
end;
function MCIWndNew(hwnd: HWND; lp: PVOID): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_NEW, 0, LPARAM(lp));
end;
function MCIWndRecord(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_RECORD, 0, 0);
end;
function MCIWndOpen(hwnd: HWND; sz: LPCSTR; f: BOOL): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_OPEN, WPARAM(f), LPARAM(sz));
end;
function MCIWndOpenDialog(hwnd: HWND): DWORD;
begin
Result := MCIWndOpen(hwnd, LPCSTR(-1), False);
end;
function MCIWndClose(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_CLOSE, 0, 0);
end;
function MCIWndPlay(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_PLAY, 0, 0);
end;
function MCIWndStop(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_STOP, 0, 0);
end;
function MCIWndPause(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_PAUSE, 0, 0);
end;
function MCIWndResume(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_RESUME, 0, 0);
end;
function MCIWndSeek(hwnd: HWND; lPos: DWORD): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_SEEK, 0, lPos);
end;
function MCIWndEject(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_EJECT, 0, 0);
end;
function MCIWndHome(hwnd: HWND): DWORD;
begin
result := 0;
end;
function MCIWndEnd(hwnd: HWND): DWORD;
begin
result := 0;
end;
function MCIWndGetSource(hwnd: HWND; prc: PRECT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GET_SOURCE, 0, LPARAM(prc));
end;
function MCIWndPutSource(hwnd: HWND; prc: PRECT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_PUT_SOURCE, 0, LPARAM(prc));
end;
function MCIWndGetDest(hwnd: HWND; prc: PRECT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GET_DEST, 0, LPARAM(prc));
end;
function MCIWndPutDest(hwnd: HWND; prc: PRECT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_PUT_DEST, 0, LPARAM(prc));
end;
function MCIWndPlayReverse(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_PLAYREVERSE, 0, 0);
end;
function MCIWndPlayFrom(hwnd: HWND; lPos: DWORD): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_PLAYFROM, 0, lPos);
end;
function MCIWndPlayTo(hwnd: HWND; lPos: DWORD): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_PLAYTO, 0, lPos);
end;
function MCIWndPlayFromTo(hwnd: HWND; lStart, lEnd: DWORD): DWORD;
begin
MCIWndSeek(hwnd, lStart);
Result := MCIWndPlayTo(hwnd, lEnd);
end;
function MCIWndGetDeviceID(hwnd: HWND): UINT;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETDEVICEID, 0, 0);
end;
function MCIWndGetAlias(hwnd: HWND): UINT;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETALIAS, 0, 0);
end;
function MCIWndGetMode(hwnd: HWND; lp: LPCSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETMODE, len, LPARAM(lp));
end;
function MCIWndGetPosition(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETPOSITION, 0, 0);
end;
function MCIWndGetPositionString(hwnd: HWND; lp: LPCSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETPOSITION, len, LPARAM(lp));
end;
function MCIWndGetStart(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETSTART, 0, 0);
end;
function MCIWndGetLength(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETLENGTH, 0, 0);
end;
function MCIWndGetEnd(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETEND, 0, 0);
end;
function MCIWndStep(hwnd: HWND; n: DWORD): DWORD;
begin
Result := MCIWndSM(hwnd, MCI_STEP, 0, n);
end;
procedure MCIWndDestroy(hwnd: HWND);
begin
MCIWndSM(hwnd, WM_CLOSE, 0, 0);
end;
procedure MCIWndSetZoom(hwnd: HWND; iZoom: UINT);
begin
MCIWndSM(hwnd, MCIWNDM_SETZOOM, 0, iZoom);
end;
function MCIWndGetZoom(hwnd: HWND): UINT;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETZOOM, 0, 0);
end;
function MCIWndSetVolume(hwnd: HWND; iVol: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_SETVOLUME, 0, iVol);
end;
function MCIWndGetVolume(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETVOLUME, 0, 0);
end;
function MCIWndSetSpeed(hwnd: HWND; iSpeed: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_SETSPEED, 0, iSpeed);
end;
function MCIWndGetSpeed(hwnd: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETSPEED, 0, 0);
end;
function MCIWndSetTimeFormat(hwnd: HWND; lp: LPCSTR): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_SETTIMEFORMAT, 0, LPARAM(lp));
end;
function MCIWndGetTimeFormat(hwnd: HWND; lp: LPCSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETTIMEFORMAT, len, LPARAM(lp));
end;
procedure MCIWndValidateMedia(hwnd: HWND);
begin
MCIWndSM(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0);
end;
procedure MCIWndSetRepeat(hwnd: HWND; f: BOOL);
begin
MCIWndSM(hwnd, MCIWNDM_SETREPEAT, 0, LPARAM(f));
end;
function MCIWndGetRepeat(hwnd: HWND): BOOL;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETREPEAT, 0, 0) <> 0;
end;
function MCIWndUseFrames(hwnd: HWND): DWORD;
begin
Result := MCIWndSetTimeFormat(hwnd, 'frames');
end;
function MCIWndUseTime(hwnd: HWND): DWORD;
begin
Result := MCIWndSetTimeFormat(hwnd, 'ms');
end;
procedure MCIWndSetActiveTimer(hwnd: HWND; active: UINT);
begin
MCIWndSM(hwnd, MCIWNDM_SETACTIVETIMER, active, 0);
end;
procedure MCIWndSetInactiveTimer(hwnd: HWND; inactive: UINT);
begin
MCIWndSM(hwnd, MCIWNDM_SETINACTIVETIMER, inactive, 0);
end;
procedure MCIWndSetTimers(hwnd: HWND; active, inactive: UINT);
begin
MCIWndSM(hwnd, MCIWNDM_SETTIMERS, active, inactive);
end;
function MCIWndGetActiveTimer(hwnd: HWND): UINT;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0);
end;
function MCIWndGetInactiveTimer(hwnd: HWND): UINT;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0);
end;
function MCIWndRealize(hwnd: HWND; fBkgnd: BOOL): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_REALIZE, WPARAM(fBkgnd), 0);
end;
function MCIWndSendString(hwnd: HWND; sz: LPCSTR): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_SENDSTRING, 0, LPARAM(sz));
end;
function MCIWndReturnString(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_RETURNSTRING, len, LPARAM(lp));
end;
function MCIWndGetError(hwnd: HWND; lp: LPSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETERROR, len, LPARAM(lp));
end;
function MCIWndGetPalette(hwnd: HWND): HPALETTE;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETPALETTE, 0, 0);
end;
function MCIWndSetPalette(hwnd: HWND; hpal: HPALETTE): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_SETPALETTE, hpal, 0);
end;
function MCIWndGetFileName(hwnd: HWND; lp: LPCSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETFILENAME, len, LPARAM(lp));
end;
function MCIWndGetDevice(hwnd: HWND; lp: LPCSTR; len: UINT): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETDEVICE, len, LPARAM(lp));
end;
function MCIWndGetStyles(hwnd: HWND): UINT;
begin
Result := MCIWndSM(hwnd, MCIWNDM_GETSTYLES, 0, 0);
end;
function MCIWndChangeStyles(hwnd: HWND; mask: UINT; value: DWORD): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_CHANGESTYLES, mask, value);
end;
function MCIWndOpenInterface(hwnd: HWND; pUnk: PUNKNOWN): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_OPENINTERFACE, 0, LPARAM(pUnk));
end;
function MCIWndSetOwner(hwnd: HWND; hwndP: HWND): DWORD;
begin
Result := MCIWndSM(hwnd, MCIWNDM_SETOWNER, hwndP, 0);
end;
function AVICapSM(hwnd: HWND; m: UINT; w: WPARAM; l: LPARAM): DWORD;
begin
if IsWindow(hwnd) then
Result := SendMessage(hwnd,m,w,l)
else
Result := 0;
end;
function capSetCallbackOnError(hwnd: HWND; fpProc: TCAPERRORCALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_ERROR, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetCallbackOnStatus(hwnd: HWND; fpProc: TCAPSTATUSCALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_STATUS, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetCallbackOnYield(hwnd: HWND; fpProc: TCAPYIELDCALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_YIELD, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetCallbackOnFrame(hwnd: HWND; fpProc: TCAPVIDEOCALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_FRAME, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetCallbackOnVideoStream(hwnd: HWND; fpProc: TCAPVIDEOCALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetCallbackOnWaveStream(hwnd: HWND; fpProc: TCAPWAVECALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetCallbackOnCapControl(hwnd: HWND; fpProc: TCAPCONTROLCALLBACK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, LPARAM(@fpProc)) <> 0;
end;
function capSetUserData(hwnd: HWND; lUser: DWORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_USER_DATA, 0, lUser) <> 0;
end;
function capGetUserData(hwnd: HWND): DWORD;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_USER_DATA, 0, 0);
end;
function capDriverConnect(hwnd: HWND; i: INT): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DRIVER_CONNECT, i, 0) <> 0;
end;
function capDriverDisconnect(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0) <> 0;
end;
function capDriverGetName(hwnd: HWND; szName: LPSTR; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DRIVER_GET_NAME, wSize, LPARAM(szName)) <> 0;
end;
function capDriverGetVersion(hwnd: HWND; szVer: LPSTR; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DRIVER_GET_VERSION, wSize, LPARAM(szVer)) <> 0;
end;
function capDriverGetCaps(hwnd: HWND; s: PCAPDRIVERCAPS; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DRIVER_GET_CAPS, wSize, LPARAM(s)) <> 0;
end;
function capFileSetCaptureFile(hwnd: HWND; szName: LPCSTR): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, LPARAM(szName)) <> 0;
end;
function capFileGetCaptureFile(hwnd: HWND; szName: LPSTR; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, LPARAM(szName)) <> 0;
end;
function capFileAlloc(hwnd: HWND; dwSize: DWORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_FILE_ALLOCATE, 0, dwSize) <> 0;
end;
function capFileSaveAs(hwnd: HWND; szName: LPCSTR): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_FILE_SAVEAS, 0, LPARAM(szName)) <> 0;
end;
function capFileSetInfoChunk(hwnd: HWND; lpInfoChunk: PCAPINFOCHUNK): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_FILE_SET_INFOCHUNK, 0, LPARAM(lpInfoChunk)) <> 0;
end;
function capFileSaveDIB(hwnd: HWND; szName: LPCSTR): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_FILE_SAVEDIB, 0, LPARAM(szName)) <> 0;
end;
function capEditCopy(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_EDIT_COPY, 0, 0) <> 0;
end;
function capSetAudioFormat(hwnd: HWND; s: PWAVEFORMATEX; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_AUDIOFORMAT, wSize, LPARAM(s)) <> 0;
end;
function capGetAudioFormat(hwnd: HWND; s: PWAVEFORMATEX; wSize: WORD): DWORD;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, wSize, LPARAM(s));
end;
function capGetAudioFormatSize(hwnd: HWND): DWORD;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, 0, 0);
end;
function capDlgVideoFormat(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0) <> 0;
end;
function capDlgVideoSource(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0) <> 0;
end;
function capDlgVideoDisplay(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0) <> 0;
end;
function capDlgVideoCompression(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0) <> 0;
end;
function capGetVideoFormat(hwnd: HWND; s: PVOID; wSize: WORD): DWORD;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, wSize, LPARAM(s));
end;
function capGetVideoFormatSize(hwnd: HWND): DWORD;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0);
end;
function capSetVideoFormat(hwnd: HWND; s: PVOID; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_VIDEOFORMAT, wSize, LPARAM(s)) <> 0;
end;
function capPreview(hwnd: HWND; f: BOOL): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_PREVIEW, WPARAM(f), 0) <> 0;
end;
function capPreviewRate(hwnd: HWND; wMS: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0) <> 0;
end;
function capOverlay(hwnd: HWND; f: BOOL): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_OVERLAY, WPARAM(f), 0) <> 0;
end;
function capPreviewScale(hwnd: HWND; f: BOOL): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_SCALE, WPARAM(f), 0) <> 0;
end;
function capGetStatus(hwnd: HWND; s: PCAPSTATUS; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_STATUS, wSize, LPARAM(s)) <> 0;
end;
function capSetScrollPos(hwnd: HWND; lpP: PPOINT): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_SCROLL, 0, LPARAM(lpP)) <> 0;
end;
function capGrabFrame(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_GRAB_FRAME, 0, 0) <> 0;
end;
function capGrabFrameNoStop(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0) <> 0;
end;
function capCaptureSequence(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SEQUENCE, 0, 0) <> 0;
end;
function capCaptureSequenceNoFile(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SEQUENCE_NOFILE, 0, 0) <> 0;
end;
function capCaptureStop(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_STOP, 0, 0) <> 0;
end;
function capCaptureAbort(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_ABORT, 0, 0) <> 0;
end;
function capCaptureSingleFrameOpen(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0) <> 0;
end;
function capCaptureSingleFrameClose(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0) <> 0;
end;
function capCaptureSingleFrame(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SINGLE_FRAME, 0, 0) <> 0;
end;
function capCaptureGetSetup(hwnd: HWND; s: PCAPTUREPARMS; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, LPARAM(s)) <> 0;
end;
function capCaptureSetSetup(hwnd: HWND; s: PCAPTUREPARMS; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, LPARAM(s)) <> 0;
end;
function capSetMCIDeviceName(hwnd: HWND; szName: LPCSTR): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_SET_MCI_DEVICE, 0, LPARAM(szName)) <> 0;
end;
function capGetMCIDeviceName(hwnd: HWND; szName: LPSTR; wSize: WORD): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_GET_MCI_DEVICE, wSize, LPARAM(szName)) <> 0;
end;
function capPaletteOpen(hwnd: HWND; szName: LPCSTR): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_PAL_OPEN, 0, LPARAM(szName)) <> 0;
end;
function capPaletteSave(hwnd: HWND; szName: LPCSTR): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_PAL_SAVE, 0, LPARAM(szName)) <> 0;
end;
function capPalettePaste(hwnd: HWND): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_PAL_PASTE, 0, 0) <> 0;
end;
function capPaletteAuto(hwnd: HWND; iFrames, iColors: INT): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors) <> 0;
end;
function capPaletteManual(hwnd: HWND; fGrab: BOOL; iColors: INT): BOOL;
begin
Result := AVICapSM(hwnd, WM_CAP_PAL_MANUALCREATE, WPARAM(fGrab), iColors) <> 0;
end;
const
VFWDLL = 'MSVFW32.DLL';
AVIFILDLL = 'AVIFIL32.DLL';
AVICAPDLL = 'AVICAP32.DLL';
function VideoForWindowsVersion: DWord; pascal; external VFWDLL;
function ICInfo(fccType, fccHandler: DWORD; lpicinfo: PICINFO) : BOOL ; stdcall ; external VFWDLL;
function ICInstall(fccType, fccHandler: DWORD; lParam: LPARAM; szDesc: LPSTR; wFlags: UINT) : BOOL ; stdcall ; external VFWDLL;
function ICRemove(fccType, fccHandler: DWORD; wFlags: UINT) : BOOL ; stdcall ; external VFWDLL;
function ICGetInfo(hic: HIC; picinfo: PICINFO; cb: DWORD) : DWORD ; stdcall ; external VFWDLL;
function ICOpen(fccType, fccHandler: DWORD; wMode: UINT) : HIC ; stdcall ; external VFWDLL;
function ICOpenFunction(fccType, fccHandler: DWORD; wMode: UINT; lpfnHandler: TFarProc) : HIC ; stdcall ; external VFWDLL;
function ICClose(hic: HIC) : DWORD ; stdcall ; external VFWDLL;
function ICSendMessage(hic: HIC; msg: UINT; dw1, dw2: DWORD) : DWORD ; stdcall ; external VFWDLL;
function ICCompress(
hic : HIC;
dwFlags : DWORD; lpbiOutput : PBITMAPINFOHEADER; lpData : PVOID; lpbiInput : PBITMAPINFOHEADER; lpBits : PVOID; lpckid : PDWORD; lpdwFlags : PDWORD; lFrameNum : DWORD; dwFrameSize : DWORD; dwQuality : DWORD; lpbiPrev : PBITMAPINFOHEADER; lpPrev : PVOID ) : DWORD; cdecl; external VFWDLL;
function ICDecompress(
hic : HIC;
dwFlags : DWORD; lpbiFormat : PBITMAPINFOHEADER; lpData : PVOID; lpbi : PBITMAPINFOHEADER; lpBits : PVOID
): DWORD; cdecl; external VFWDLL;
function ICDrawBegin(
hic : HIC;
dwFlags : DWORD; hpal : HPALETTE; hwnd : HWND; hdc : HDC; xDst : int; yDst : int;
dxDst : int;
dyDst : int;
lpbi : PBITMAPINFOHEADER; xSrc : int; ySrc : int;
dxSrc : int;
dySrc : int;
dwRate : DWORD; dwScale : DWORD
): DWORD; cdecl; external VFWDLL;
function ICDraw(
hic : HIC;
dwFlags : DWORD; lpFormat : PVOID; lpData : PVOID; cbData : DWORD; lTime : DWORD ): DWORD; cdecl; external VFWDLL;
function ICLocate(fccType, fccHandler: DWORD; lpbiIn, lpbiOut: PBITMAPINFOHEADER; wFlags: WORD): HIC; stdcall; external VFWDLL;
function ICGetDisplayFormat(hic: HIC; lpbiIn, lpbiOut: PBITMAPINFOHEADER; BitDepth: int; dx, dy: int): HIC; stdcall; external VFWDLL;
function ICImageCompress(
hic : HIC; uiFlags : UINT; lpbiIn : PBITMAPINFO; lpBits : PVOID; lpbiOut : PBITMAPINFO; lQuality : DWORD; plSize : PDWORD ): THANDLE; stdcall; external VFWDLL;
function ICImageDecompress(
hic : HIC; uiFlags : UINT; lpbiIn : PBITMAPINFO; lpBits : PVOID; lpbiOut : PBITMAPINFO ): THANDLE; stdcall; external VFWDLL;
function ICCompressorChoose(
hwnd : HWND; uiFlags : UINT; pvIn : PVOID; lpData : PVOID; pc : PCOMPVARS; lpszTitle : LPSTR ): BOOL; stdcall; external VFWDLL;
function ICSeqCompressFrameStart(pc: PCOMPVARS; lpbiIn: PBITMAPINFO): BOOL; stdcall; external VFWDLL;
procedure ICSeqCompressFrameEnd(pc: PCOMPVARS); stdcall; external VFWDLL;
function ICSeqCompressFrame(
pc : PCOMPVARS; uiFlags : UINT; lpBits : PVOID; pfKey : PBOOL; plSize : PDWORD ): PVOID; stdcall; external VFWDLL;
procedure ICCompressorFree(pc: PCOMPVARS); stdcall; external VFWDLL;
function DrawDibOpen: HDRAWDIB; stdcall; external VFWDLL;
function DrawDibClose(hdd: HDRAWDIB): BOOL; stdcall; external VFWDLL;
function DrawDibGetBuffer(hdd: HDRAWDIB; lpbi: PBITMAPINFOHEADER; dwSize: DWORD; dwFlags: DWORD): PVOID; stdcall; external VFWDLL;
function DrawDibGetPalette(hdd: HDRAWDIB): HPALETTE; stdcall; external VFWDLL;
function DrawDibSetPalette(hdd: HDRAWDIB; hpal: HPALETTE): BOOL; stdcall; external VFWDLL;
function DrawDibChangePalette(hdd: HDRAWDIB; iStart, iLen: int; lppe: PPALETTEENTRY): BOOL; stdcall; external VFWDLL;
function DrawDibRealize(hdd: HDRAWDIB; hdc: HDC; fBackground: BOOL): UINT; stdcall; external VFWDLL;
function DrawDibStart(hdd: HDRAWDIB; rate: DWORD): BOOL; stdcall; external VFWDLL;
function DrawDibStop(hdd: HDRAWDIB): BOOL; stdcall; external VFWDLL;
function DrawDibBegin(
hdd : HDRAWDIB;
hdc : HDC;
dxDst : int;
dyDst : int;
lpbi : PBITMAPINFOHEADER;
dxSrc : int;
dySrc : int;
wFlags : UINT
): BOOL; stdcall; external VFWDLL;
function DrawDibDraw(
hdd : HDRAWDIB;
hdc : HDC;
xDst : int;
yDst : int;
dxDst : int;
dyDst : int;
lpbi : PBITMAPINFOHEADER;
lpBits : PVOID;
xSrc : int;
ySrc : int;
dxSrc : int;
dySrc : int;
wFlags : UINT
): BOOL; stdcall; external VFWDLL;
function DrawDibEnd(hdd: HDRAWDIB): BOOL; stdcall; external VFWDLL;
function DrawDibTime(hdd: HDRAWDIB; lpddtime: PDRAWDIBTIME): BOOL; stdcall; external VFWDLL;
function DrawDibProfileDisplay(lpbi: PBITMAPINFOHEADER): DWORD; stdcall; external VFWDLL;
procedure AVIFileInit; stdcall; external AVIFILDLL; procedure AVIFileExit; stdcall; external AVIFILDLL;
function AVIFileAddRef(pfile: PAVIFILE): UDWORD; stdcall; external AVIFILDLL;
function AVIFileRelease(pfile: PAVIFILE): UDWORD; stdcall; external AVIFILDLL;
function AVIFileOpenA(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; external AVIFILDLL;
function AVIFileOpenW(var ppfile: PAVIFILE; szFile: LPCWSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; external AVIFILDLL;
function AVIFileOpen(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; external AVIFILDLL name 'AVIFileOpenA';
function AVIFileInfoW(pfile: PAVIFILE; pfi: PAVIFILEINFOW; lSize: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIFileInfoA(pfile: PAVIFILE; pfi: PAVIFILEINFOA; lSize: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIFileInfo(pfile: PAVIFILE; pfi: PAVIFILEINFOA; lSize: DWORD): HResult; stdcall; external AVIFILDLL name 'AVIFileInfoA';
function AVIFileGetStream(pfile: PAVIFILE; var ppavi: PAVISTREAM; fccType: DWORD; lParam: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIFileCreateStreamW(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOW): HResult; stdcall; external AVIFILDLL;
function AVIFileCreateStreamA(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOA): HResult; stdcall; external AVIFILDLL;
function AVIFileCreateStream(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOA): HResult; stdcall; external AVIFILDLL name 'AVIFileCreateStreamA';
function AVIFileWriteData(pfile: PAVIFILE; ckid: DWORD; lpData: PVOID; cbData: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIFileReadData(pfile: PAVIFILE; ckid: DWORD; lpData: PVOID; lpcbData: PDWORD): HResult; stdcall; external AVIFILDLL;
function AVIFileEndRecord(pfile: PAVIFILE): HResult; stdcall; external AVIFILDLL;
function AVIStreamAddRef(pavi: PAVISTREAM): UDWORD; stdcall; external AVIFILDLL;
function AVIStreamRelease(pavi: PAVISTREAM): UDWORD; stdcall; external AVIFILDLL;
function AVIStreamInfoW (pavi: PAVISTREAM; psi: PAVISTREAMINFOW; lSize: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamInfoA (pavi: PAVISTREAM; psi: PAVISTREAMINFOA; lSize: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamInfo(pavi: PAVISTREAM; psi: PAVISTREAMINFOA; lSize: DWORD): HResult; stdcall; external AVIFILDLL name 'AVIStreamInfoA';
function AVIStreamFindSample(pavi: PAVISTREAM; lPos: DWORD; lFlags: DWORD): DWORD; stdcall; external AVIFILDLL;
function AVIStreamReadFormat(pavi: PAVISTREAM; lPos: DWORD; lpFormat: PVOID; lpcbFormat: PDWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamSetFormat(pavi: PAVISTREAM; lPos: DWORD; lpFormat: PVOID; cbFormat: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamReadData(pavi: PAVISTREAM; fcc: DWORD; lp: PVOID; lpcb: PDWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamWriteData(pavi: PAVISTREAM; fcc: DWORD; lp: PVOID; cb: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamRead(
pavi : PAVISTREAM;
lStart : DWORD;
lSamples : DWORD;
lpBuffer : PVOID;
cbBuffer : DWORD;
plBytes : PDWORD;
plSamples : PDWORD
): HResult; stdcall; external AVIFILDLL;
function AVIStreamWrite(
pavi : PAVISTREAM;
lStart,
lSamples : DWORD;
lpBuffer : PVOID;
cbBuffer : DWORD;
dwFlags : DWORD;
plSampWritten : PDWORD;
plBytesWritten : PDWORD
): HResult; stdcall; external AVIFILDLL;
function AVIStreamStart(pavi: PAVISTREAM): DWORD; stdcall; external AVIFILDLL;
function AVIStreamLength(pavi: PAVISTREAM): DWORD; stdcall; external AVIFILDLL;
function AVIStreamTimeToSample(pavi: PAVISTREAM; lTime: DWORD): DWORD; stdcall; external AVIFILDLL;
function AVIStreamSampleToTime(pavi: PAVISTREAM; lSample: DWORD): DWORD; stdcall; external AVIFILDLL;
function AVIStreamBeginStreaming(pavi: PAVISTREAM; lStart, lEnd: DWORD; lRate: DWORD): HResult; stdcall; external AVIFILDLL;
function AVIStreamEndStreaming(pavi: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function AVIStreamGetFrameOpen(pavi: PAVISTREAM; lpbiWanted: PBITMAPINFOHEADER): PGETFRAME; stdcall; external AVIFILDLL;
function AVIStreamGetFrame(pg: PGETFRAME; lPos: DWORD): PVOID; stdcall; external AVIFILDLL;
function AVIStreamGetFrameClose(pg: PGETFRAME): HResult; stdcall; external AVIFILDLL;
function AVIStreamOpenFromFileA(var ppavi: PAVISTREAM; szFile: LPCSTR; fccType: DWORD;
lParam: DWORD; mode: UINT; pclsidHandler: PCLSID): HResult; stdcall; external AVIFILDLL;
function AVIStreamOpenFromFileW(var ppavi: PAVISTREAM; szFile: LPCWSTR; fccType: DWORD;
lParam: DWORD; mode: UINT; pclsidHandler: PCLSID): HResult; stdcall; external AVIFILDLL;
function AVIStreamOpenFromFile(var ppavi: PAVISTREAM; szFile: LPCSTR; fccType: DWORD;
lParam: DWORD; mode: UINT; pclsidHandler: PCLSID): HResult; stdcall; external AVIFILDLL name 'AVIStreamOpenFromFileA';
function AVIStreamCreate(var ppavi: PAVISTREAM; lParam1, lParam2: DWORD;
pclsidHandler: PCLSID): HResult; stdcall; external AVIFILDLL;
function AVIStreamFindKeyFrame(pavi: PAVISTREAM; lPos: DWORD; lFlags: DWORD): DWORD; stdcall; external AVIFILDLL name 'AVIStreamFindSample';
function AVIStreamClose(pavi: PAVISTREAM): UDWORD; stdcall; external AVIFILDLL name 'AVIStreamRelease';
function AVIFileClose(pfile: PAVIFILE): UDWORD; stdcall; external AVIFILDLL name 'AVIFileRelease';
procedure AVIStreamInit; stdcall; external AVIFILDLL name 'AVIFileInit';
procedure AVIStreamExit; stdcall; external AVIFILDLL name 'AVIFileExit';
function AVIMakeCompressedStream(
var ppsCompressed : PAVISTREAM;
ppsSource : PAVISTREAM;
lpOptions : PAVICOMPRESSOPTIONS;
pclsidHandler : PCLSID
): HResult; stdcall; external AVIFILDLL;
function AVISaveVA(
szFile : LPCSTR;
pclsidHandler : PCLSID;
lpfnCallback : TAVISAVECALLBACK;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): HResult; stdcall; external AVIFILDLL;
function AVISaveVW(
szFile : LPCWSTR;
pclsidHandler : PCLSID;
lpfnCallback : TAVISAVECALLBACK;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): HResult; stdcall; external AVIFILDLL;
function AVISaveV(
szFile : LPCSTR;
pclsidHandler : PCLSID;
lpfnCallback : TAVISAVECALLBACK;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): HResult; stdcall; external AVIFILDLL name 'AVISaveVA';
function AVISaveOptions(
hwnd : HWND;
uiFlags : UINT;
nStreams : int;
var ppavi : PAVISTREAM;
var plpOptions : PAVICOMPRESSOPTIONS
): BOOL; stdcall; external AVIFILDLL;
function AVISaveOptionsFree(nStreams: int; var plpOptions: PAVICOMPRESSOPTIONS): HResult; stdcall; external AVIFILDLL;
function AVIBuildFilterW(lpszFilter: LPWSTR; cbFilter: DWORD; fSaving: BOOL): HResult; stdcall; external AVIFILDLL;
function AVIBuildFilterA(lpszFilter: LPSTR; cbFilter: DWORD; fSaving: BOOL): HResult; stdcall; external AVIFILDLL;
function AVIBuildFilter(lpszFilter: LPSTR; cbFilter: DWORD; fSaving: BOOL): HResult; stdcall; external AVIFILDLL name 'AVIBuildFilterA';
function AVIMakeFileFromStreams(var ppfile: PAVIFILE; nStreams: int; var papStreams: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function AVIMakeStreamFromClipboard(cfFormat: UINT; hGlobal: THANDLE; var ppstream: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function AVIPutFileOnClipboard(pf: PAVIFILE): HResult; stdcall; external AVIFILDLL;
function AVIGetFromClipboard(var lppf: PAVIFILE): HResult; stdcall; external AVIFILDLL;
function AVIClearClipboard: HResult; stdcall; external AVIFILDLL;
function CreateEditableStream(var ppsEditable: PAVISTREAM; psSource: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function EditStreamCut(pavi: PAVISTREAM; plStart, plLength: PDWORD; var ppResult: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function EditStreamCopy(pavi: PAVISTREAM; plStart, plLength: PDWORD; var ppResult: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function EditStreamPaste(pavi: PAVISTREAM; plPos, plLength: PDWORD; pstream: PAVISTREAM; lStart, lEnd: DWORD): HResult; stdcall; external AVIFILDLL;
function EditStreamClone(pavi: PAVISTREAM; var ppResult: PAVISTREAM): HResult; stdcall; external AVIFILDLL;
function EditStreamSetNameA(pavi: PAVISTREAM; lpszName: LPCSTR): HResult; stdcall; external AVIFILDLL;
function EditStreamSetNameW(pavi: PAVISTREAM; lpszName: LPCWSTR): HResult; stdcall; external AVIFILDLL;
function EditStreamSetInfoW(pavi: PAVISTREAM; lpInfo: PAVISTREAMINFOW; cbInfo: DWORD): HResult; stdcall; external AVIFILDLL;
function EditStreamSetInfoA(pavi: PAVISTREAM; lpInfo: PAVISTREAMINFOA; cbInfo: DWORD): HResult; stdcall; external AVIFILDLL;
function EditStreamSetInfo(pavi: PAVISTREAM; lpInfo: PAVISTREAMINFOA; cbInfo: DWORD): HResult; stdcall; external AVIFILDLL name 'EditStreamSetInfoA';
function EditStreamSetName(pavi: PAVISTREAM; lpszName: LPCSTR): HResult; stdcall; external AVIFILDLL name 'EditStreamSetNameA';
function MCIWndCreateA(hwndParent: HWND; hInstance: HINST; dwStyle: DWORd; szFile: LPCSTR): HWND; cdecl; external VFWDLL;
function MCIWndCreateW(hwndParent: HWND; hInstance: HINST; dwStyle: DWORd; szFile: LPCWSTR): HWND; cdecl; external VFWDLL;
function MCIWndCreate(hwndParent: HWND; hInstance: HINST; dwStyle: DWORd; szFile: LPCSTR): HWND; cdecl; external VFWDLL name 'MCIWndCreateA';
function MCIWndRegisterClass: BOOL; cdecl; external VFWDLL;
function capCreateCaptureWindowA(
lpszWindowName : LPCSTR;
dwStyle : DWORD;
x, y : int;
nWidth, nHeight : int;
hwndParent : HWND;
nID : int
): HWND; stdcall; external AVICAPDLL;
function capGetDriverDescriptionA(
wDriverIndex : UINT;
lpszName : LPSTR;
cbName : int;
lpszVer : LPSTR;
cbVer : int
): BOOL; stdcall; external AVICAPDLL;
function capCreateCaptureWindowW(
lpszWindowName : LPCWSTR;
dwStyle : DWORD;
x, y : int;
nWidth, nHeight : int;
hwndParent : HWND;
nID : int
): HWND; stdcall; external AVICAPDLL;
function capGetDriverDescriptionW(
wDriverIndex : UINT;
lpszName : LPWSTR;
cbName : int;
lpszVer : LPWSTR;
cbVer : int
): BOOL; stdcall; external AVICAPDLL;
function capCreateCaptureWindow(
lpszWindowName : LPCSTR;
dwStyle : DWORD;
x, y : int;
nWidth, nHeight : int;
hwndParent : HWND;
nID : int
): HWND; stdcall; external AVICAPDLL name 'capCreateCaptureWindowA';
function capGetDriverDescription(
wDriverIndex : UINT;
lpszName : LPSTR;
cbName : int;
lpszVer : LPSTR;
cbVer : int
): BOOL; stdcall; external AVICAPDLL name 'capGetDriverDescriptionA';
function GetOpenFileNamePreviewA(lpofn: POPENFILENAMEA): BOOL; stdcall; external VFWDLL;
function GetSaveFileNamePreviewA(lpofn: POPENFILENAMEA): BOOL; stdcall; external VFWDLL;
function GetOpenFileNamePreviewW(lpofn: POPENFILENAMEW): BOOL; stdcall; external VFWDLL;
function GetSaveFileNamePreviewW(lpofn: POPENFILENAMEW): BOOL; stdcall; external VFWDLL;
function GetOpenFileNamePreview(lpofn: POPENFILENAMEA): BOOL; stdcall; external VFWDLL name 'GetOpenFileNamePreviewA';
function GetSaveFileNamePreview(lpofn: POPENFILENAMEA): BOOL; stdcall; external VFWDLL name 'GetSaveFileNamePreviewA';
end.