/* _______ ____ __ ___ ___ * \ _ \ \ / \ / \ \ / / ' ' ' * | | \ \ | | || | \/ | . . * | | | | | | || ||\ /| | * | | | | | | || || \/ | | ' ' ' * | | | | | | || || | | . . * | |_/ / \ \__// || | | * /_______/ynamic \____/niversal /__\ /____\usic /| . . ibliotheque * / \ * / . \ * out.h - Winamp plug-in header file. / / \ \ * | < / \_ * By Bob. | \/ /\ / * \_ / > / * | \ / / * | ' / * \__/ */ #define OUT_VER 0x10 typedef struct { int version; // module version (OUT_VER) char *description; // description of module, with version string int id; // module id. each input module gets its own. non-nullsoft modules should // be >= 65536. HWND hMainWindow; // winamp's main window (filled in by winamp) HINSTANCE hDllInstance; // DLL instance handle (filled in by winamp) void (*Config)(HWND hwndParent); // configuration dialog void (*About)(HWND hwndParent); // about dialog void (*Init)(); // called when loaded void (*Quit)(); // called when unloaded int (*Open)(int samplerate, int numchannels, int bitspersamp, int bufferlenms, int prebufferms); // returns >=0 on success, <0 on failure // NOTENOTENOTE: bufferlenms and prebufferms are ignored in most if not all output plug-ins. // ... so don't expect the max latency returned to be what you asked for. // returns max latency in ms (0 for diskwriters, etc) // bufferlenms and prebufferms must be in ms. 0 to use defaults. // prebufferms must be <= bufferlenms void (*Close)(); // close the ol' output device. int (*Write)(char *buf, int len); // 0 on success. Len == bytes to write (<= 8192 always). buf is straight audio data. // 1 returns not able to write (yet). Non-blocking, always. int (*CanWrite)(); // returns number of bytes possible to write at a given time. // Never will decrease unless you call Write (or Close, heh) int (*IsPlaying)(); // non0 if output is still going or if data in buffers waiting to be // written (i.e. closing while IsPlaying() returns 1 would truncate the song int (*Pause)(int pause); // returns previous pause state void (*SetVolume)(int volume); // volume is 0-255 void (*SetPan)(int pan); // pan is -128 to 128 void (*Flush)(int t); // flushes buffers and restarts output at time t (in ms) // (used for seeking) int (*GetOutputTime)(); // returns played time in MS int (*GetWrittenTime)(); // returns time written in MS (used for synching up vis stuff) } Out_Module;