diff options
Diffstat (limited to 'src/libjin/utils/unittest.cpp')
-rw-r--r-- | src/libjin/utils/unittest.cpp | 33 |
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; } |