diff options
Diffstat (limited to 'src/libjin/audio/audio.h')
-rw-r--r-- | src/libjin/audio/audio.h | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/libjin/audio/audio.h b/src/libjin/audio/audio.h index fd4ab69..80e463f 100644 --- a/src/libjin/audio/audio.h +++ b/src/libjin/audio/audio.h @@ -1,5 +1,8 @@ #ifndef __JIN_AUDIO_H #define __JIN_AUDIO_H + +#include <SDL2/SDL.h> + #include "../utils/macros.h" #include "../common/subsystem.h" @@ -11,15 +14,36 @@ namespace audio class Audio : public common::Subsystem { 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; - private: + static inline Audio* get() + { + return (audio == NULL ? (audio = new Audio()) : audio); + } - onlyonce bool _init(const SettingBase* setting) override; + static void defaultCallback(void *udata, Uint8 *stream, int len); + private: + + Audio() {}; + ~Audio() {}; + + static Audio* audio; + + onlyonce bool _init(const SettingBase* setting) override; + onlyonce void _quit() override; }; typedef Audio::Setting AudioSetting; |