aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/audio/sdl/audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/audio/sdl/audio.h')
-rw-r--r--src/libjin/audio/sdl/audio.h25
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;