aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/utils/unittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/utils/unittest.cpp')
-rw-r--r--src/libjin/utils/unittest.cpp33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/libjin/utils/unittest.cpp b/src/libjin/utils/unittest.cpp
index 764a2bd..5b73312 100644
--- a/src/libjin/utils/unittest.cpp
+++ b/src/libjin/utils/unittest.cpp
@@ -2,32 +2,41 @@
#if UNITTEST
#include <stdio.h>
-#include "../audio/audio.h"
+#include "../audio/sdl/audio.h"
using namespace jin::audio;
-void fill_audio(void *udata, Uint8 *stream, int len)
+int sample_nr = 0;
+
+void fill_audio(void *user_data, Uint8 *raw_buffer, int bytes)
{
- printf("%d\n", len);
- memset(stream, 0x11, len);
+ Sint16 *buffer = (Sint16*)raw_buffer;
+ int length = bytes / 2; // 2 bytes per sample for AUDIO_S16SYS
+ int &sample_nr(*(int*)user_data);
+
+ for (int i = 0; i < length; i++, sample_nr++)
+ {
+ double time = (double)sample_nr / (double)44100;
+ buffer[i] = (Sint16)(28000 * sin(2.0f * M_PI * 441.0f * time)); // render 441 HZ sine wave
+ }
}
int main(int argc, char* argv[])
{
- Audio* audio = Audio::get();
-
- AudioSetting setting;
- setting.freq = 22050;
- setting.format = AUDIO_S16;
- setting.channels = 2;
+ Audio* audio = SDLAudio::get();
+ SDLAudioSetting setting;
+ setting.rate = 44100;
+ setting.resolution = AUDIO_S16SYS;
+ setting.channels = 1;
setting.callback = fill_audio;
- setting.samples = 1024;
- setting.userdata = NULL;
+ setting.samples = 44100;
+ setting.userdata = &sample_nr;
audio->init(&setting);
while (true)
{
SDL_Delay(100);
}
+ audio->quit();
return 0;
}