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

📄 ieds.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{!!
<FS>TIEDirectShow.RepaintVideo

<FM>Declaration<FC>
procedure RepaintVideo(hwnd:THandle; hdc:THandle);

<FM>Description<FN>
Used internally by <A TImageEnView> in order to repaint display when <A TIEDirectShow.RenderVideo> is true.
!!}
    procedure RepaintVideo(hwnd:THandle; hdc:THandle);

    // DVD

{!!
<FS>TIEDirectShow.DVDInputPath

<FM>Declaration<FC>
property DVDInputPath:WideString;

<FM>Description<FN>
Specifies the driver letter of DVD reader. You can set 'Default' to select default DVD reader.
In order to play DVD inside Delphi IDE please disable "Integrated Debugging".

<FM>Example<FC>
with ImageEnView1.IO.DShowParams do
begin
  DVDInputPath:='Default';
  RenderVideo:=true;
  RenderAudio:=true;
  Connect;
  // Set bitmap size
  GetVideoRenderNativeSize(w,h);
  ImageEnView1.Proc.ImageResize(w,h);
  Run;
end;

<FM>Demos<FN>
capture\VMR_DVD
!!}
    property DVDInputPath:widestring read fDVDInputPath write fDVDInputPath;

{!!
<FS>TIEDirectShow.DVDSelectAt

<FM>Declaration<FC>
procedure DVDSelectAt(x,y:integer);

<FM>Description<FN>
Select a button in DVD menu, at specified position. To actually press the button call <A TIEDirectShow.DVDActivateButton>.
In order to play DVD inside Delphi IDE please disable "Integrated Debugging".

<FM>Example<FC>
procedure TForm1.ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  ImageEnView1.IO.DShowParams.DVDSelectAt(x,y);
end;

<FM>Demos<FN>
capture\VMR_DVD
!!}
    procedure DVDSelectAt(x,y:integer);

{!!
<FS>TIEDirectShow.DVDActivateButton

<FM>Declaration<FC>
procedure DVDActivateButton;

<FM>Description<FN>
Press a button in DVD menu. To select a position call <A TIEDirectShow.DVDSelectAt>.
In order to play DVD inside Delphi IDE please disable "Integrated Debugging".

<FM>Example<FC>
procedure TForm1.ImageEnView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ImageEnView1.IO.DShowParams.DVDActivateButton;
end;

<FM>Demos<FN>
capture\VMR_DVD
!!}
    procedure DVDActivateButton;

  end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// TIEMediaReader

{!!
<FS>TIEMediaReader

<FM>Description<FN>
This class allows to get frames from a media file (wmv, mpeg...).
TIEMediaReader is a simple stand-alone class, with one single method to copy the wanted frame to a <A TIEBitmap> object.
Reading of frames could be slow.

<FM>Example<FC>

var media:TIEMediaReader;

media:=TIEMediaReader.Create('video.wmv');

// get frame 0 and save to sample0.jpeg
media.GetSample( 0, ImageEnView1.IEBitmap );
ImageEnView1.IO.SaveToFile('sample0.jpeg');

// get frame 1 and save to sample1.jpeg
media.GetSample( 1, ImageEnView1.IEBitmap );
ImageEnView1.IO.SaveToFile('sample1.jpeg');

...etc...

media.free;

<FM>Methods<FN>

    <A TIEMediaReader.GetSample>


<FM>Properties<FN>

    <A TIEMediaReader.FrameCount>
    <A TIEMediaReader.FrameHeight>
    <A TIEMediaReader.FrameRate>
    <A TIEMediaReader.FrameWidth>
    <A TIEMediaReader.Length>
!!}
  TIEMediaReader = class
  private
    fFileName:string;
    fMediaDet:IMediaDet;
    fFrameRate:double;  // frames per seconds
    fLength:double;     // stream length in seconds
    fFrameCount:int64;  // frame count
    fFrameWidth,fFrameHeight:integer;
    fFrameBuffer:pointer;
  public
    constructor Create(const FileName:string);
    destructor Destroy; override;

{!!
<FS>TIEMediaReader.FrameRate

<FM>Declaration<FC>
property FrameRate:double;

<FM>Description<FN>
Returns the frame rate.
!!}
    property FrameRate:double read fFrameRate;

{!!
<FS>TIEMediaReader.Length

<FM>Declaration<FC>
property Length:double;

<FM>Description<FN>
Returns the video length;
!!}
    property Length:double read fLength;

{!!
<FS>TIEMediaReader.FrameCount

<FM>Declaration<FC>
property FrameCount:int64;

<FM>Description<FN>
Returns the number of frames (samples).
!!}
    property FrameCount:int64 read fFrameCount;

    procedure GetSample(frame:int64; OutBitmap:TIEBitmap);

{!!
<FS>TIEMediaReader.FrameWidth

<FM>Declaration<FC>
property FrameWidth:integer;

<FM>Description<FN>
Returns the frame bitmap width.
!!}
    property FrameWidth:integer read fFrameWidth;

{!!
<FS>TIEMediaReader.FrameHeight

<FM>Declaration<FC>
property FrameHeight:integer;
<FM>Description<FN>
Returns the frame bitmap height.
!!}
    property FrameHeight:integer read fFrameHeight;

  end;

// TIEMediaReader
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////



implementation

const
  ole32 = 'ole32.dll';

function CoCreateInstance(const clsid: TGUID; unkOuter: IUnknown; dwClsContext: Longint; const iid: TGUID; out pv): HResult; stdcall; external ole32 name 'CoCreateInstance';

function OleInitialize(pwReserved: Pointer): HResult; stdcall; external ole32 name 'OleInitialize';

procedure OleUninitialize; stdcall; external ole32 name 'OleUninitialize';

procedure CoTaskMemFree(pv: pointer); stdcall; external ole32 name 'CoTaskMemFree';
//procedure ReleaseStgMedium(pmedium:pointer); stdcall; external ole32 name 'ReleaseStgMedium';

function FreePropVariantArray(cVariants: ULONG; rgvars: pointer): HRESULT; stdcall; external ole32 name 'FreePropVariantArray';

procedure SysFreeString(pstr: pointer); stdcall; external 'oleaut32.dll' name 'SysFreeString';

function StgCreateDocfile(pwcsName: PWideChar; grfMode: dword; reserved: dword; var ppstgOpen: IIEStorage): HRESULT; stdcall; external ole32 name 'StgCreateDocfile';

function OleCreatePropertyFrame(hwndOwner: THandle; x, y: dword; lpszCaption: pchar; cObjects: dword; lplpUnk: pointer; cPages: dword; lpPageClsID: PGUID; lcid: PGUID; dwReserved: dword; lpvReserved: pointer): HRESULT; stdcall; external 'olepro32.dll' name 'OleCreatePropertyFrame';

const

  IEGUIDNULL: TGUID = '{00000000-0000-0000-0000-000000000000}';

  CLSID_SystemDeviceEnum: TGUID = '{62BE5D10-60EB-11d0-BD3B-00A0C911CE86}';
  CLSID_FilterGraph: TGUID = '{e436ebb3-524f-11ce-9f53-0020af0ba770}';
  CLSID_CaptureGraphBuilder2: TGUID = '{BF87B6E1-8C27-11d0-B3F0-00AA003761C5}';
  CLSID_MediaDet: TGUID = '{65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA}';

  CLSID_VideoInputDeviceCategory: TGUID = '{860BB310-5D01-11d0-BD3B-00A0C911CE86}';
  CLSID_LegacyAmFilterCategory: TGUID = '{083863F1-70DE-11d0-BD40-00A0C911CE86}';
  CLSID_VideoCompressorCategory: TGUID = '{33D9A760-90C8-11d0-BD43-00A0C911CE86}';
  CLSID_AudioCompressorCategory: TGUID = '{33D9A761-90C8-11d0-BD43-00A0C911CE86}';
  CLSID_AudioInputDeviceCategory: TGUID = '{33D9A762-90C8-11d0-BD43-00A0C911CE86}';
  CLSID_AudioRendererCategory: TGUID = '{E0F158E1-CB04-11d0-BD4E-00A0C911CE86}';
  CLSID_MidiRendererCategory: TGUID = '{4EFE2452-168A-11d1-BC76-00C04FB9453B}';
  CLSID_SampleGrabber: TGUID = '{C1F400A0-3F08-11d3-9F0B-006008039E37}';
  CLSID_NullRenderer: TGUID = '{C1F400A4-3F08-11d3-9F0B-006008039E37}';

  CLSID_DvdGraphBuilder: TGUID = '{FCC152B7-F372-11d0-8E00-00C04FD7C08B}';

  CLSID_Colour: TGUID = '{1643e180-90f5-11ce-97d5-00aa0055595a}';

  CLSID_VideoMixingRenderer: TGUID = '{B87BEB7B-8D29-423f-AE4D-6582C10175AC}';
  CLSID_VideoMixingRenderer9: TGUID = '{51b4abf3-748f-4e3b-a276-c828330e926a}';

  CLSID_DVDNavigator: TGUID = '{9B8C4620-2C1A-11d0-8493-00A02438AD48}';

  CLSID_DSoundRender: TGUID = '{79376820-07D0-11cf-A24D-0020AFD79767}';

  CLSID_SystemClock: TGUID = '{e436ebb1-524f-11ce-9f53-0020af0ba770}';

  MEDIASUBTYPE_Avi: TGUID = '{e436eb88-524f-11ce-9f53-0020af0ba770}';
  MEDIASUBTYPE_Asf: TGUID = '{3DB80F90-9412-11d1-ADED-0000F8754B99}';
  MEDIASUBTYPE_WAVE: TGUID = '{e436eb8b-524f-11ce-9f53-0020af0ba770}';
  MEDIASUBTYPE_MPEG1Video: TGUID = '{e436eb86-524f-11ce-9f53-0020af0ba770}';


  PIN_CATEGORY_CAPTURE: TGUID = '{fb6c4281-0353-11d1-905f-0000c0cc16ba}';
  PIN_CATEGORY_PREVIEW: TGUID = '{fb6c4282-0353-11d1-905f-0000c0cc16ba}';

  MEDIATYPE_Video: TGUID = '{73646976-0000-0010-8000-00AA00389B71}';
  MEDIATYPE_Audio: TGUID = '{73647561-0000-0010-8000-00AA00389B71}';
  FORMAT_VideoInfo: TGUID = '{05589f80-c356-11ce-bf01-00aa0055595a}';

  CLSCTX_LOCAL_SERVER = 4;
  CLSCTX_REMOTE_SERVER = $10;
  CLSCTX_INPROC_HANDLER = 2;
  CLSCTX_INPROC_SERVER = 1;
  CLSCTX_INPROC = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER;

  STGM_CREATE = $00001000;
  STGM_TRANSACTED = $00010000;
  STGM_READWRITE = $00000002;
  STGM_SHARE_EXCLUSIVE = $00000010;
  STGM_WRITE = $00000001;
  STGC_DEFAULT = 0;

  AM_SEEKING_NoPositioning = 0;
  AM_SEEKING_AbsolutePositioning = $1;
  AM_SEEKING_RelativePositioning = $2;
  AM_SEEKING_IncrementalPositioning = $3;
  AM_SEEKING_PositioningBitsMask = $3;
  AM_SEEKING_SeekToKeyFrame = $4;
  AM_SEEKING_ReturnTime = $8;
  AM_SEEKING_Segment = $10;
  AM_SEEKING_NoFlush = $20;

  TIME_FORMAT_NONE: TGUID = '{00000000-0000-0000-0000-000000000000}';
  TIME_FORMAT_FRAME: TGUID = '{7b785570-8c82-11cf-bc0c-00aa00ac74f6}';
  TIME_FORMAT_BYTE: TGUID = '{7b785571-8c82-11cf-bc0c-00aa00ac74f6}';
  TIME_FORMAT_SAMPLE: TGUID = '{7b785572-8c82-11cf-bc0c-00aa00ac74f6}';
  TIME_FORMAT_FIELD: TGUID = '{7b785573-8c82-11cf-bc0c-00aa00ac74f6}';
  TIME_FORMAT_MEDIA_TIME: TGUID = '{7b785574-8c82-11cf-bc0c-00aa00ac74f6}';

  INFINITE = $FFFFFFFF;

  MEDIASUBTYPE_CLPL: TGUID = (D1: $4C504C43; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_YUYV: TGUID = (D1: $56595559; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_IYUV: TGUID = (D1: $56555949; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_YVU9: TGUID = (D1: $39555659; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_Y411: TGUID = (D1: $31313459; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_Y41P: TGUID = (D1: $50313459; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_YUY2: TGUID = (D1: $32595559; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_YVYU: TGUID = (D1: $55595659; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_UYVY: TGUID = (D1: $59565955; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_Y211: TGUID = (D1: $31313259; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_YV12: TGUID = (D1: $32315659; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_CLJR: TGUID = (D1: $524A4C43; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_IF09: TGUID = (D1: $39304649; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_CPLA: TGUID = (D1: $414C5043; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_MJPG: TGUID = (D1: $47504A4D; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_TVMJ: TGUID = (D1: $4A4D5654; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_WAKE: TGUID = (D1: $454B4157; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_CFCC: TGUID = (D1: $43434643; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_IJPG: TGUID = (D1: $47504A49; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_Plum: TGUID = (D1: $6D756C50; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYPE_DVCS: TGUID = (D1: $53435644; D2: $0000; D3: $0010; D4: ($80, $00, $00, $AA, $00, $38, $9B, $71));
  MEDIASUBTYP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -