From fa234f9663b992cf50bcf865a1cde6845b42193c Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 21 May 2018 16:02:00 +0800 Subject: =?UTF-8?q?=E4=BF=AE=E6=94=B9audio=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/audio/sdl/audio.h | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/libjin/audio/sdl/audio.h (limited to 'src/libjin/audio/sdl/audio.h') diff --git a/src/libjin/audio/sdl/audio.h b/src/libjin/audio/sdl/audio.h new file mode 100644 index 0000000..920f56a --- /dev/null +++ b/src/libjin/audio/sdl/audio.h @@ -0,0 +1,59 @@ +#ifndef __JIN_AUDIO_SDL_H +#define __JIN_AUDIO_SDL_H + +#include "../audio.h" + +namespace jin +{ +namespace audio +{ + + class SDLAudio : public Audio + { + + 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()); + } + + /* IAudio interface */ + void play() override; + void stop() override; + bool pause() override; + bool pause(Source* source) override; + bool resume() override; + bool resume(Source* source) override; + void rewind() override; + void setVolume(float volume) override; + float getVolume() override; + + private: + + SDLAudio() {} + ~SDLAudio() {} + + onlyonce bool _init(const SettingBase* setting) override; + onlyonce void _quit() override; + + }; + + typedef SDLAudio::Setting SDLAudioSetting; + +} +} + +#endif \ No newline at end of file -- cgit v1.1-26-g67d0