BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/VideoCapture/DirectShow5/umain.pas

107 lines
2.5 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ieview, imageenview, Buttons, ieds, ComCtrls, ExtCtrls, Menus,
iemview, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers;
type
Tfmain = class(TForm)
ImageEnView1: TImageEnView;
Label2: TLabel;
Label3: TLabel;
ImageEnView2: TImageEnView;
Label4: TLabel;
ImageEnView3: TImageEnView;
GroupBox1: TGroupBox;
Label1: TLabel;
ComboBox1: TComboBox;
SpeedButton1: TSpeedButton;
procedure FormActivate(Sender: TObject);
procedure ImageEnView1DShowNewFrame(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Connect;
procedure Disconnect;
end;
var
fmain: Tfmain;
implementation
uses imageenio;
{$R *.DFM}
{$R WindowsTheme.res}
procedure Tfmain.FormActivate(Sender: TObject);
begin
// Fill video source combobox
ComboBox1.Items.Assign(ImageEnView1.IO.DShowParams.VideoInputs);
// Select first item
ComboBox1.ItemIndex := 0;
end;
// We have got a new frame
procedure Tfmain.ImageEnView1DShowNewFrame(Sender: TObject);
begin
// copy current sample to ImageEnView bitmap
ImageEnView1.IO.DShowParams.GetSample(ImageEnView1.IEBitmap);
// refresh ImageEnView1
ImageEnView1.Update;
end;
procedure Tfmain.Connect;
begin
if (not ImageEnView1.IO.DShowParams.Connected) then
begin
// set video source as index of IO.DShowParams.VideoInputs
ImageEnView1.IO.DShowParams.SetVideoInput(ComboBox1.ItemIndex, 0); // set the second parameter if you have more than one camera with same name
// enable frame grabbing
ImageEnView1.IO.DShowParams.EnableSampleGrabber := true;
// connect to the video input
ImageEnView1.IO.DShowParams.Connect;
// start capture
ImageEnView1.IO.DShowParams.Run;
// set ImageEnView2 and ImageEnView3 as receivers for post frames
ImageEnView1.BeginPostFrames( ImageEnView2, 5000, 60);
ImageEnView1.BeginPostFrames( ImageEnView3, 10000, 60);
end;
end;
procedure Tfmain.Disconnect;
begin
// stop post frames
ImageEnView1.EndPostFrames( ImageEnView2 );
ImageEnView1.EndPostFrames( ImageEnView3 );
// stop and disconnect
ImageEnView1.IO.DShowParams.Disconnect;
end;
// Capture button
procedure Tfmain.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Down then
Connect
else
Disconnect;
end;
end.