diff options
Diffstat (limited to 'src/libjin/audio/sdl/audio.h')
-rw-r--r-- | src/libjin/audio/sdl/audio.h | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/libjin/audio/sdl/audio.h b/src/libjin/audio/sdl/audio.h index 920f56a..969fbd9 100644 --- a/src/libjin/audio/sdl/audio.h +++ b/src/libjin/audio/sdl/audio.h @@ -1,6 +1,7 @@ #ifndef __JIN_AUDIO_SDL_H #define __JIN_AUDIO_SDL_H +#include <vector> #include "../audio.h" namespace jin @@ -8,23 +9,21 @@ namespace jin namespace audio { + class SDLSource; + class SDLAudio : public Audio { - - public: - + + public: + struct Setting : SettingBase { int rate; // int resolution; // ֱ char channels; // int samples; // ȡ - SDL_AudioCallback callback; // Ƶص - void* userdata; // Զ }; - static void defaultCallback(void *udata, Uint8 *stream, int len); - static inline Audio* get() { return audio != NULL ? audio : (audio = new SDLAudio()); @@ -41,7 +40,7 @@ namespace audio void setVolume(float volume) override; float getVolume() override; - private: + private: SDLAudio() {} ~SDLAudio() {} @@ -49,6 +48,16 @@ namespace audio onlyonce bool _init(const SettingBase* setting) override; onlyonce void _quit() override; + unsigned int audioDevice; + + std::vector<SDLSource*> sources; + + static void defaultCallback(void *udata, Uint8 *stream, int len); + + /* process functions*/ + void processCommands(); + void processSources(int len); + }; typedef SDLAudio::Setting SDLAudioSetting; |