void(*GetFileInfo)(char*file,char*title,int*length_in_ms);// if file == NULL, current playing is used
int(*InfoBox)(char*file,HWNDhwndParent);
int(*IsOurFile)(char*fn);// called before extension checks, to allow detection of mms://, etc
// playback stuff
int(*Play)(char*fn);// return zero on success, -1 on file-not-found, some other value on other (stopping winamp) error
void(*Pause)();// pause stream
void(*UnPause)();// unpause stream
int(*IsPaused)();// ispaused? return 1 if paused, 0 if not
void(*Stop)();// stop (unload) stream
// time stuff
int(*GetLength)();// get length in ms
int(*GetOutputTime)();// returns current output time in ms. (usually returns outMod->GetOutputTime()
void(*SetOutputTime)(inttime_in_ms);// seeks to point in stream (in ms). Usually you signal yoru thread to seek, which seeks and calls outMod->Flush()..
// volume stuff
void(*SetVolume)(intvolume);// from 0 to 255.. usually just call outMod->SetVolume
void(*SetPan)(intpan);// from -127 to 127.. usually just call outMod->SetPan
// in-window builtin vis stuff
void(*SAVSAInit)(intmaxlatency_in_ms,intsrate);// call once in Play(). maxlatency_in_ms should be the value returned from outMod->Open()
// call after opening audio device with max latency in ms and samplerate