📄 vfw.pas
字号:
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));
// AVI class IDs
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;
//
// functions
//
procedure AVIFileInit; stdcall;
procedure AVIFileExit; stdcall;
function AVIFileAddRef (pfile: PAVIFILE): ULONG; stdcall;
function AVIFileRelease(pfile: PAVIFILE): ULONG; stdcall;
function AVIFileOpen(var ppfile: PAVIFile; szFile: LPCSTR; uMode: UINT;
lpHandler: PCLSID): HResult; stdcall;
function AVIFileInfo(pfile: PAVIFile; var pfi: TAVIFileInfo; lSize : Long): HResult; stdcall;
function AVIFileGetStream(pfile: PAVIFile; var ppavi: PAVISTREAM;
fccType : DWORD; lParam : LONG): HResult; stdcall;
function AVIFileCreateStream(pfile: PAVIFile; var ppavi: PAVISTREAM;
var psi: TAVIStreamInfoA): HResult; stdcall;
function AVIFileWriteData(pfile: PAVIFile; ckid: DWORD; lpData: PVOID;
cbData: LONG): HResult; stdcall;
function AVIFileReadData(ckid: DWORD; lpData: PVOID;
var lpcbData: LONG): HResult; stdcall;
function AVIFileEndRecord(pfile: PAVIFile): HResult; stdcall;
function AVIStreamAddRef (pavi: PAVISTREAM): ULONG; stdcall;
function AVIStreamRelease (pavi: PAVISTREAM): ULONG; stdcall;
function AVIStreamInfo(pavi: PAVISTREAM; var psi: TAVISTREAMINFO; lSize:LONG): HResult; stdcall;
function AVIStreamFindSample(pavi: PAVISTREAM; lPos: LONG; lFlags:LONG): LONG; stdcall;
function AVIStreamReadFormat(pavi: PAVISTREAM; lPos:LONG;lpFormat:PVOID;var lpcbFormat:LONG): HResult; stdcall;
function AVIStreamSetFormat(pavi: PAVIStream; lPos: LONG; lpFormat: PVOID;
cbFormat: LONG): HResult; stdcall;
function AVIStreamReadData(pavi: PAVIStream; fcc: DWORD; lp: PVOID;var lpcb: LONG): HResult; stdcall;
function AVIStreamWriteData(pavi: PAVIStream; fcc: DWORD; lp: PVOID;cb: LONG): HResult; stdcall;
function AVIStreamRead(pavi: PAVIStream; lStart: LONG;lSamples: LONG;lpBuffer: PVOID;
cbBuffer: LONG;var plBytes: LONG;var plSamples: LONG): HResult; stdcall;
function AVIStreamWrite(pavi: PAVIStream; lStart, lSamples: LONG;
lpBuffer: PVOID; cbBuffer: LONG; dwFlags: DWORD;
var plSampWritten: LONG; var plBytesWritten: LONG)
: HResult; stdcall;
function AVIStreamStart(pavi: PAVIStream): LONG; stdcall;
function AVIStreamLength(pavi: PAVIStream): LONG; stdcall;
function AVIStreamTimeToSample(pavi: PAVIStream; lTime: LONG): LONG; stdcall;
function AVIStreamSampleToTime(pavi: PAVIStream; lSample: LONG): LONG; stdcall;
function AVIStreamBeginStreaming(pavi: PAVIStream; lStart: LONG; lEnd: LONG; lRate: LONG): LONG; stdcall;
function AVIStreamEndStreaming(pavi: PAVIStream): LONG; stdcall;
//
// helper functions for using IGetFrame
//
function AVIStreamGetFrameOpen(pavi : PAVISTREAM; lpbiWanted : PBITMAPINFOHEADER ):PGETFRAME; stdcall;
function AVIStreamGetFrame(pg: PGETFRAME; lPos: LONG): PVOID; stdcall;
function AVIStreamGetFrameClose(pg: PGETFRAME): HResult; stdcall;
// Shortcut function
function AVIStreamOpenFromFile(var ppavi: PAVISTREAM; szFile: LPCSTR;
fccType: DWORD; lParam: LONG; mode :UINT; pclsidHandler: PCLSID): HResult; stdcall;
// Use to create disembodied streams
function AVIStreamCreate(var ppavi: PAVISTREAM; lParam1: LONG; lParam2 :LONG; pclsidHandler: PCLSID): HResult; stdcall;
Const
//
// flags for AVIStreamFindSample
//
FIND_DIR = $0000000F; // direction
FIND_NEXT = $00000001; // go forward
FIND_PREV = $00000004; // go backward
FIND_TYPE = $000000F0; // type mask
FIND_KEY = $00000010; // find key frame.
FIND_ANY = $00000020; // find any (non-empty) sample
FIND_FORMAT = $00000040; // find format change
FIND_RET = $0000F000; // return mask
FIND_POS = $00000000; // return logical position
FIND_LENGTH = $00001000; // return logical size
FIND_OFFSET = $00002000; // return physical position
FIND_SIZE = $00003000; // return physical size
FIND_INDEX = $00004000; // return physical index position
function AVISaveV(szFile : LPCSTR;pclsidHandler:PCLSID;
lpfnCallback :AVISAVECALLBACK; nStreams: INTEGER;
var ppavi: PAVISTREAM; var plpOptions: PAVICOMPRESSOPTIONS):HResult; stdcall;
function AVISaveOptions(hwnd : HWND;uiFlags:UINT; nStreams : INTEGER;
var pavi : PAVISTREAM; var plpOptions : PAVICOMPRESSOPTIONS ):Boolean; stdcall;
function AVISaveOptionsFree(nStreams : INTEGER; var plpOptions : PAVICOMPRESSOPTIONS ):Boolean; stdcall;
const
AVIERR_OK = 0;
AVIIF_LIST = $01;
AVIIF_TWOCC = $02;
implementation
procedure AVIFileInit; stdcall; external 'avifil32.dll' name 'AVIFileInit';
procedure AVIFileExit; stdcall; external 'avifil32.dll' name 'AVIFileExit';
function AVIFileAddRef (pfile: PAVIFILE): ULONG;
external 'avifil32.dll' name 'AVIFileAddRef';
function AVIFileRelease(pfile: PAVIFILE): ULONG;
external 'avifil32.dll' name 'AVIFileRelease';
function AVIFileOpen(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT;
lpHandler: PCLSID): HResult;
external 'avifil32.dll' name 'AVIFileOpenA';
function AVIFileInfo(pfile: PAVIFile; var pfi: TAVIFileInfo;
lSize : Long): HResult; stdcall;
external 'avifil32.dll' name 'AVIFileInfo';
function AVIFileGetStream(pfile: PAVIFile; var ppavi: PAVIStream;
fccType : DWORD; lParam : LONG): HResult;
external 'avifil32.dll' name 'AVIFileGetStream';
function AVIFileCreateStream(pfile: PAVIFile; var ppavi: PAVIStream;
var psi: TAVIStreamInfoA): HResult;
external 'avifil32.dll' name 'AVIFileCreateStreamA';
function AVIFileWriteData(pfile: PAVIFile; ckid: DWORD; lpData: PVOID;
cbData: LONG): HResult;
external 'avifil32.dll' name 'AVIFileWriteData';
function AVIFileReadData(ckid: DWORD; lpData: PVOID;
var lpcbData: LONG): HResult;
external 'avifil32.dll' name 'AVIFileReadData';
function AVIFileEndRecord(pfile: PAVIFile): HResult;
external 'avifil32.dll' name 'AVIFileEndRecord';
function AVIStreamAddRef (pavi: PAVISTREAM): ULONG;
external 'avifil32.dll' name 'AVIStreamAddRef';
function AVIStreamRelease (pavi: PAVISTREAM): ULONG;
external 'avifil32.dll' name 'AVIStreamRelease';
function AVIStreamInfo(pavi: PAVISTREAM; var psi: TAVISTREAMINFO; lSize:LONG): HResult;
external 'avifil32.dll' name 'AVIStreamInfo';
function AVIStreamFindSample(pavi: PAVISTREAM; lPos: LONG; lFlags:LONG): LONG;
external 'avifil32.dll' name 'AVIStreamFindSample';
function AVIStreamReadFormat(pavi: PAVISTREAM; lPos:LONG;lpFormat:PVOID;var lpcbFormat:LONG): HResult;
external 'avifil32.dll' name 'AVIStreamReadFormat';
function AVIStreamSetFormat(pavi: PAVIStream; lPos: LONG; lpFormat: PVOID;
cbFormat: LONG): HResult;
external 'avifil32.dll' name 'AVIStreamSetFormat';
function AVIStreamReadData(pavi: PAVIStream; fcc: DWORD; lp: PVOID;var lpcb: LONG): HResult;
external 'avifil32.dll' name 'AVIStreamReadData';
function AVIStreamWriteData(pavi: PAVIStream; fcc: DWORD; lp: PVOID;cb: LONG): HResult;
external 'avifil32.dll' name 'AVIStreamWriteData';
function AVIStreamRead(pavi: PAVIStream; lStart: LONG;lSamples: LONG;lpBuffer: PVOID;
cbBuffer: LONG;var plBytes: LONG;var plSamples: LONG): HResult;
external 'avifil32.dll' name 'AVIStreamRead';
function AVIStreamWrite(pavi: PAVIStream; lStart, lSamples: LONG;
lpBuffer: PVOID; cbBuffer: LONG; dwFlags: DWORD;
var plSampWritten: LONG; var plBytesWritten: LONG): HResult;
external 'avifil32.dll' name 'AVIStreamWrite';
function AVIStreamStart(pavi: PAVIStream): LONG;
external 'avifil32.dll' name 'AVIStreamStart';
function AVIStreamLength(pavi: PAVIStream): LONG;
external 'avifil32.dll' name 'AVIStreamLength';
function AVIStreamTimeToSample(pavi: PAVIStream; lTime: LONG): LONG;
external 'avifil32.dll' name 'AVIStreamTimeToSample';
function AVIStreamSampleToTime(pavi: PAVIStream; lSample: LONG): LONG;
external 'avifil32.dll' name 'AVIStreamSampleToTime';
function AVIStreamBeginStreaming(pavi: PAVIStream; lStart: LONG; lEnd: LONG; lRate: LONG): LONG; stdcall;
external 'avifil32.dll' name 'AVIStreamBeginStreaming';
function AVIStreamEndStreaming(pavi: PAVIStream): LONG;
external 'avifil32.dll' name 'AVIStreamEndStreaming';
function AVIStreamGetFrameOpen(pavi : PAVISTREAM; lpbiWanted : PBITMAPINFOHEADER ):PGETFRAME;
external 'avifil32.dll' name 'AVIStreamGetFrameOpen';
function AVIStreamGetFrame(pg: PGETFRAME; lPos: LONG): PVOID;
external 'avifil32.dll' name 'AVIStreamGetFrame';
function AVIStreamGetFrameClose(pg: PGETFRAME): HResult;
external 'avifil32.dll' name 'AVIStreamGetFrameClose';
function AVIStreamOpenFromFile(var ppavi: PAVISTREAM; szFile: LPCSTR;
fccType: DWORD; lParam: LONG; mode :UINT; pclsidHandler: PCLSID): HResult;
external 'avifil32.dll' name 'AVIStreamOpenFromFile';
function AVIStreamCreate(var ppavi: PAVISTREAM; lParam1: LONG; lParam2 :LONG; pclsidHandler: PCLSID): HResult;
external 'avifil32.dll' name 'AVIStreamCreate';
function AVISaveV(szFile : LPCSTR;pclsidHandler:PCLSID;
lpfnCallback :AVISAVECALLBACK; nStreams: INTEGER;
var ppavi: PAVISTREAM; var plpOptions: PAVICOMPRESSOPTIONS):HResult; stdcall;
external 'avifil32.dll' name 'AVISaveV';
function AVISaveOptions(hwnd : HWND;uiFlags:UINT; nStreams : INTEGER;
var pavi : PAVISTREAM; var plpOptions : PAVICOMPRESSOPTIONS ):Boolean; stdcall;
external 'avifil32.dll' name 'AVISaveOptions';
function AVISaveOptionsFree(nStreams : INTEGER; var plpOptions : PAVICOMPRESSOPTIONS ):Boolean; stdcall;
external 'avifil32.dll' name 'AVISaveOptionsFree';
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -