diff options
author | chai <chaifix@163.com> | 2018-05-21 16:02:00 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-05-21 16:02:00 +0800 |
commit | fa234f9663b992cf50bcf865a1cde6845b42193c (patch) | |
tree | 34ecd41b60ef48c960a79a4077e5e0c8536102fd /src/libjin/audio/audio.h | |
parent | 51ba9cb2a6b0b9395a2912eadeb954c95e4c1d3c (diff) |
修改audio模块
Diffstat (limited to 'src/libjin/audio/audio.h')
-rw-r--r-- | src/libjin/audio/audio.h | 52 |
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; - } } |