aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/utils/unittest.cpp
blob: 5b7331206c2ab946e49ea9eeeb9fa2df7a286fcc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "utils.h"
#if UNITTEST

#include <stdio.h>
#include "../audio/sdl/audio.h"

using namespace jin::audio;

int sample_nr = 0;

void fill_audio(void *user_data, Uint8 *raw_buffer, int bytes)
{
    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 = SDLAudio::get();
    SDLAudioSetting setting; 
    setting.rate = 44100;
    setting.resolution = AUDIO_S16SYS;
    setting.channels = 1;
    setting.callback = fill_audio;
    setting.samples = 44100; 
    setting.userdata = &sample_nr;
    audio->init(&setting);
    while (true)
    {
        SDL_Delay(100);
    }
    audio->quit();
    return 0;
}

#endif