// DSP plugin interface

// notes:
// any window that remains in foreground should optimally pass unused
// keystrokes to the parent (winamp's) window, so that the user
// can still control it. As for storing configuration,
// Configuration data should be stored in <dll directory>\plugin.ini
// (look at the vis plugin for configuration code)

unit _WM_DSP;

interface

uses Windows;

type
  PwinampDSPModule=^winampDSPModule;
  winampDSPModule=record
    description:pchar;
    hwndParent:HWND;
    hDllInstance:LongWord;//HINSTANCE;

    config:procedure(this_mod:PwinampDSPModule);Cdecl;
    init:function(this_mod:PwinampDSPModule):integer;Cdecl;
//    ModifySamples:function(this_mod:PwinampDSPModule;var samples:shortint;numsamples,bps,nch,srate:integer):integer;Cdecl;
    ModifySamples:function(this_mod:PwinampDSPModule;psamples:pointer;numsamples,bps,nch,srate:integer):integer;Cdecl;
    Quit:procedure(this_mod:PwinampDSPModule);Cdecl;
    userData:procedure;Stdcall;
  end;

  PwinampDSPHeader=^winampDSPHeader;
  winampDSPHeader=record
    version:integer;
    description:pchar;
    getModule:function(which:integer):PwinampDSPModule;cdecl;
  end;

const DSP_HDRVER=$20;

var
  winampDSPGetHeader2:function:PwinampDSPHeader;Stdcall;

implementation

end.

