From b855ebb91ad8d97617ec1aa418b4add84670a07d Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 27 Jul 2018 00:01:34 +0800 Subject: *change name --- src/libjin/Audio/SDL/Audio.h | 68 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 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..6da6605 --- /dev/null +++ b/src/libjin/Audio/SDL/Audio.h @@ -0,0 +1,68 @@ +#ifndef __JIN_AUDIO_SDL_H +#define __JIN_AUDIO_SDL_H +#include "../../modules.h" +#if JIN_MODULES_AUDIO && JIN_AUDIO_SDLAUDIO + +#include +#include "../audio.h" + +namespace jin +{ +namespace audio +{ + +#define SDLAUDIO_BITDEPTH 16 +#define SDLAUDIO_BYTEDEPTH (SDLAUDIO_BITDEPTH >> 3) +#define SDLAUDIO_CHANNELS 2 + + class SDLAudio : public AudioSystem + { + + public: + + struct Setting : SettingBase + { + public: + int samplerate; // 采样频率 + int samples; // 缓冲区的sample数,<=samplerate + }; + + /* 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; + + /* process functions*/ + void processCommands(); + void processSources(void* buffer, size_t len); + + void lock(); + void unlock(); + + private: + + SDLAudio() {}; + ~SDLAudio() {}; + + SINGLETON(SDLAudio); + + onlyonce bool initSystem(const SettingBase* setting) override; + onlyonce void quitSystem() override; + + unsigned int audioDevice; + + }; + + typedef SDLAudio::Setting SDLAudioSetting; + +} +} + +#endif // JIN_MODULES_AUDIO && JIN_AUDIO_SDLAUDIO +#endif \ No newline at end of file -- cgit v1.1-26-g67d0