⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ievfw.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -