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

📄 unit1.pas

📁 winamp 的Plugin 的Delphi接口包
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ioplug,
  StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    TrackBar1: TTrackBar;
    Button6: TButton;
    Button7: TButton;
    Memo1: TMemo;
    Button8: TButton;
    OpenDialog1: TOpenDialog;
    OpenDialog2: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var imod:^TIn_module;
    omod:^TOut_module;

procedure SetInfo1(bitrate,srate,stereo,synched:integer);cdecl; // if -1, changes ignored? :)
begin
end;

function dsp_isactive1:integer;cdecl;
begin
  result:=0;
end;

function dsp_dosamples1(samples:pointer; numsamples, bps,  nch, srate:integer):integer;cdecl;
begin
 result:=numsamples;

end;


procedure SAVSAInit1(maxlatency_in_ms:integer;srate:integer);cdecl;
begin
end;

procedure SAVSADeInit1;cdecl;	// call in Stop()
begin
end;
procedure SAAddPCMData1(PCMData:pointer;nch:integer;bps:integer;timestamp:integer);cdecl;
begin
end;
function SAGetMode1:integer;cdecl;		// gets csa (the current type (4=ws,2=osc,1=spec))
begin
end;
procedure SAAdd1(data:pointer; timestamp:integer;csa:integer);cdecl; // sets the spec data, filled in by winamp
begin
end;
procedure VSAAddPCMData1(PCMData:pointer;nch: integer ; bps:integer;timestamp:integer);cdecl; // sets the vis data directly from PCM data
begin
end;
function VSAGetMode1(var specNch:integer; var waveNch:integer):integer;cdecl; // use to figure out what to give to VSAAdd
begin
end;
procedure VSAAdd1(data:pointer; timestamp:integer);cdecl; // filled in by winamp, called by plug-in
begin
end;
procedure VSASetInfo1(nch:integer;srate:integer);cdecl;
begin
end;

var s:string;

procedure TForm1.Button1Click(Sender: TObject);
begin
   S:= InputBox('', 'Enter File:', '');
   if s='' then begin opendialog2.execute;s:=opendialog2.filename;end;

end;

procedure TForm1.Button8Click(Sender: TObject);
begin
 halt;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  if not opendialog1.Execute then exit;
  if not initInputDll(opendialog1.FileName) then begin
    memo1.Lines.Add('Failed to load input plugin !');
    exit;
  end;
  memo1.Lines.Add('Input plugin loaded !');

   imod:=getinmodule;
   imod.hMainWindow:=application.Handle;
   imod.hDllInstance:=InputDllHandle;
   imod.outMod:=omod;
   imod.init;

   imod.SetInfo:=SetInfo1;
   imod.dsp_IsActive:=dsp_isactive1;
   imod.dsp_dosamples:=dsp_dosamples1;
   imod.SAVSAInit:=SAVSAInit1;
   imod.SAVSADeInit:=SAVSADeinit1;
   imod.SAAddPCMData:=SAAddPCMData1;
   imod.SAGetMode:=SAGetMode1;
   imod.SAAdd:=SAADD1;
   imod.VSASetInfo:=VSASetInfo1;
   imod.VSAAddPCMData:=VSAAddPCMData1;
   imod.VSAGetMode:=VSAGetMode1;
   imod.VSAAdd:=VSAAdd1;

   imod.About(0);

end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  if imod=nil then begin
     memo1.Lines.add('Load input plugin first !');
     exit;
  end;

  if not opendialog1.Execute then exit;
  if not initOutputDll(opendialog1.FileName) then begin
    memo1.Lines.Add('Failed to load output plugin !');
    exit;
  end;
  memo1.Lines.Add('Output plugin loaded !');

  omod:=getoutmodule;

   omod.hMainWindow:=application.Handle;
   omod.hDllInstance:=OutputDllHandle;

   omod.init;
   omod.about(0);

   omod.setvolume(128);

  imod.outMod:=omod;
  button1.enabled:=true;
  button2.enabled:=true;
  button3.enabled:=true;
  button6.enabled:=true;
  button7.enabled:=true;

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
   imod.config(application.handle);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  omod.config(application.handle);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   omod.setvolume(trackbar1.position);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if imod.Play(Pchar(s))=0 then memo1.lines.add('Playing '+s) else  memo1.lines.add('Can not playing '+s);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  imod.Stop;
end;

end.

⌨️ 快捷键说明

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