//GiGaHeRz's SPU2 Driver //Copyright (c) 2003-2008, David Quintana // //This library is free software; you can redistribute it and/or //modify it under the terms of the GNU Lesser General Public //License as published by the Free Software Foundation; either //version 2.1 of the License, or (at your option) any later version. // //This library is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU //Lesser General Public License for more details. // //You should have received a copy of the GNU Lesser General Public //License along with this library; if not, write to the Free Software //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // 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 \plugin.ini // (look at the vis plugin for configuration code) typedef struct winampDSPModule { char *description; // description HWND hwndParent; // parent window (filled in by calling app) HINSTANCE hDllInstance; // instance handle to this DLL (filled in by calling app) void (*Config)(struct winampDSPModule *this_mod); // configuration dialog (if needed) int (*Init)(struct winampDSPModule *this_mod); // 0 on success, creates window, etc (if needed) // modify waveform samples: returns number of samples to actually write // (typically numsamples, but no more than twice numsamples, and no less than half numsamples) // numsamples should always be at least 128. should, but I'm not sure int (*ModifySamples)(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate); void (*Quit)(struct winampDSPModule *this_mod); // called when unloading void *userData; // user data, optional } winampDSPModule; typedef struct { int version; // DSP_HDRVER char *description; // description of library winampDSPModule* (*getModule)(int); // module retrieval function } winampDSPHeader; // exported symbols typedef winampDSPHeader* (*winampDSPGetHeaderType)(); // header version: 0x20 == 0.20 == winamp 2.0 #define DSP_HDRVER 0x20