aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/audio/audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/audio/audio.h')
-rw-r--r--src/libjin/audio/audio.h30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/libjin/audio/audio.h b/src/libjin/audio/audio.h
index fd4ab69..80e463f 100644
--- a/src/libjin/audio/audio.h
+++ b/src/libjin/audio/audio.h
@@ -1,5 +1,8 @@
#ifndef __JIN_AUDIO_H
#define __JIN_AUDIO_H
+
+#include <SDL2/SDL.h>
+
#include "../utils/macros.h"
#include "../common/subsystem.h"
@@ -11,15 +14,36 @@ namespace audio
class Audio : public common::Subsystem
{
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;
- private:
+ static inline Audio* get()
+ {
+ return (audio == NULL ? (audio = new Audio()) : audio);
+ }
- onlyonce bool _init(const SettingBase* setting) override;
+ static void defaultCallback(void *udata, Uint8 *stream, int len);
+ private:
+
+ Audio() {};
+ ~Audio() {};
+
+ static Audio* audio;
+
+ onlyonce bool _init(const SettingBase* setting) override;
+ onlyonce void _quit() override;
};
typedef Audio::Setting AudioSetting;