diff options
| author | miguel <miguel@debian-acer.softwarefools.com> | 2017-09-22 19:14:34 +0200 |
|---|---|---|
| committer | miguel <miguel@debian-acer.softwarefools.com> | 2017-09-22 19:14:34 +0200 |
| commit | d0e7bac91ee97f48e8e11a54c56c48d050a10c46 (patch) | |
| tree | b6dfda01a7c6288c3698958ae1e28a93ee8470be /audiotest.cpp | |
| parent | 91a0bc329297a7b3c597e9ae98535f8ccc3af4d7 (diff) | |
added minimal template for browser version and audio testing
Diffstat (limited to 'audiotest.cpp')
| -rw-r--r-- | audiotest.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/audiotest.cpp b/audiotest.cpp new file mode 100644 index 0000000..f6b5a92 --- /dev/null +++ b/audiotest.cpp @@ -0,0 +1,101 @@ +//emcc -o test.html main.cpp -O2 -s USE_SDL=2 + +#include <stdlib.h> + +#if defined(_MSC_VER) +#include "SDL.h" +#else +#include "SDL2/SDL.h" +#endif + +#include <math.h> +#include <stdio.h> + +#ifdef __EMSCRIPTEN__ +#include "emscripten.h" +#endif + + + +void audiomixer(void *userdata, Uint8 *stream, int len) +{ + int samples = len / 4; + short *buf = (short*)stream; + + int i; + for (i = 0; i < samples*2; i++) + { + buf[i] = i * 655; + } +} + +int sdlstatic_init(unsigned int aSamplerate, unsigned int aBuffer) +{ + SDL_AudioSpec as; + as.freq = aSamplerate; + as.format = AUDIO_S16; + as.channels = 2; + as.samples = aBuffer; + as.callback = audiomixer; + + SDL_AudioSpec as2; + if (SDL_OpenAudio(&as, &as2) < 0) + { + return -1; + } + + SDL_PauseAudio(0); + + return 0; +} + +void mainloop() +{ + // Poll for events, and handle the ones we care about. + SDL_Event event; + while (SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_KEYUP: + // If escape is pressed, return (and thus, quit) + switch (event.key.keysym.sym) + { + case SDLK_ESCAPE: + { + exit(0); + } + break; + } + break; + case SDL_QUIT: + SDL_CloseAudio(); + exit(0); + } + } +} + +int main(int argc, char *argv[]) +{ + printf("SDL INIT OK\n"); + if ( SDL_Init(SDL_INIT_EVERYTHING) < 0 ) + { + fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); + exit(1); + } + printf("SDL INIT OK\n"); + + atexit(SDL_Quit); + + sdlstatic_init(44100, 1024); + +#ifdef __EMSCRIPTEN__ + emscripten_set_main_loop(mainloop, 60, 0); +#else + while (1) + { + mainloop(); + } +#endif + return 0; +} |
