📄 ievfw.pas
字号:
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;
plSampWritten: pointer; plBytesWritten: pointer)
: 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;
function CreateEditableStream(var ppsEditable: PAVISTREAM; psSource: PAVISTREAM): HResult; stdcall;
function EditStreamSetInfo(pavi: PAVISTREAM; lpinfo: PAVISTREAMINFOA; cbinfo: LONG): HResult; stdcall;
function AVIMakeCompressedStream(var ppsCompressed: PAVISTREAM; psSource: PAVISTREAM; lpOptions: PAVICOMPRESSOPTIONS; pclsid: 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;
pavi: pointer; plpOptions: pointer): Boolean; stdcall;
function AVISaveOptionsFree(nStreams: INTEGER; var plpOptions: PAVICOMPRESSOPTIONS): Boolean; stdcall;
function mmioFOURCC(cc: string): integer;
const
AVIERR_OK = 0;
AVIIF_LIST = $01;
AVIIF_TWOCC = $02;
implementation
{$R-}
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;
plSampWritten: pointer; plBytesWritten: pointer): 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;
pavi: pointer; plpOptions: pointer): Boolean; stdcall;
external 'avifil32.dll' name 'AVISaveOptions';
function AVISaveOptionsFree(nStreams: INTEGER; var plpOptions: PAVICOMPRESSOPTIONS): Boolean; stdcall;
external 'avifil32.dll' name 'AVISaveOptionsFree';
function CreateEditableStream(var ppsEditable: PAVISTREAM; psSource: PAVISTREAM): HResult; stdcall;
external 'avifil32.dll' name 'CreateEditableStream';
function EditStreamSetInfo(pavi: PAVISTREAM; lpinfo: PAVISTREAMINFOA; cbinfo: LONG): HResult; stdcall;
external 'avifil32.dll' name 'EditStreamSetInfo';
function AVIMakeCompressedStream(var ppsCompressed: PAVISTREAM; psSource: PAVISTREAM; lpOptions: PAVICOMPRESSOPTIONS; pclsid: PCLSID): HResult; stdcall;
external 'avifil32.dll' name 'AVIMakeCompressedStream';
function mmioFOURCC(cc: string): integer;
begin
result := ord(cc[1]) or (ord(cc[2]) shl 8) or (ord(cc[3]) shl 16) or (ord(cc[4]) shl 24);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -