/*****************************************************************************\ Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. This file is licensed under the Snes9x License. For further information, consult the LICENSE file in the root directory. \*****************************************************************************/ #ifndef IS9XSOUNDOUTPUT_H #define IS9XSOUNDOUTPUT_H #include "../port.h" /* IS9xSoundOutput Interface for the sound output. */ class IS9xSoundOutput { public: // InitSoundOutput should initialize the sound output but not start playback virtual bool InitSoundOutput(void)=0; // DeInitSoundOutput should stop playback and uninitialize the output virtual void DeInitSoundOutput(void)=0; // SetupSound should apply the current sound settings for outputbuffers/devices and // (re)start playback virtual bool SetupSound()=0; // SetVolume should set a new volume level (between 0.0 and 1.0) virtual void SetVolume(double volume) = 0; // ProcessSound should call S9xFinalizeSamples and queue new available samples into the // Host sound system. If the sound system is callback based, ProcessSound should do a syncronized // S9xFinalizeSamples and return. virtual void ProcessSound()=0; }; #endif