aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/audio/audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/audio/audio.h')
-rw-r--r--src/libjin/audio/audio.h52
1 files changed, 25 insertions, 27 deletions
diff --git a/src/libjin/audio/audio.h b/src/libjin/audio/audio.h
index 80e463f..6d57cd2 100644
--- a/src/libjin/audio/audio.h
+++ b/src/libjin/audio/audio.h
@@ -10,44 +10,42 @@ namespace jin
{
namespace audio
{
-
- class Audio : public common::Subsystem
+ class Source;
+
+ class IAudio
{
+
public:
-
- struct Setting : SettingBase
- {
- int freq;
- int format;
- char channels;
- int samples;
- SDL_AudioCallback callback;
- void* userdata;
- };
-
- bool init(const SettingBase* setting) override;
- void quit() override;
- static inline Audio* get()
- {
- return (audio == NULL ? (audio = new Audio()) : audio);
- }
+ virtual void play() = 0;
+ virtual void stop() = 0;
+ virtual bool pause() = 0;
+ virtual bool pause(Source* source) = 0;
+ virtual bool resume() = 0;
+ virtual bool resume(Source* source) = 0;
+ virtual void rewind() = 0;
+ virtual void setVolume(float volume) = 0;
+ virtual float getVolume() = 0;
- static void defaultCallback(void *udata, Uint8 *stream, int len);
+ };
- private:
+ class Audio : public common::Subsystem, IAudio
+ {
- Audio() {};
- ~Audio() {};
+ public:
+
+ Audio() {};
+ virtual ~Audio() {};
+
+ bool init(const SettingBase* setting) override;
+ void quit() override;
+
+ protected:
static Audio* audio;
- onlyonce bool _init(const SettingBase* setting) override;
- onlyonce void _quit() override;
};
- typedef Audio::Setting AudioSetting;
-
}
}