diff options
Diffstat (limited to 'test/load ogg.cpp')
-rw-r--r-- | test/load ogg.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/load ogg.cpp b/test/load ogg.cpp new file mode 100644 index 0000000..afa5b60 --- /dev/null +++ b/test/load ogg.cpp @@ -0,0 +1,60 @@ +#include "utils.h" +#if UNITTEST + +#include <iostream> +#include <stdio.h> +#include <fstream> +#include "../audio/sdl/source.h" +#include "../audio/sdl/audio.h" + +using namespace jin::audio; +using namespace std; + +struct OGG +{ + int samples; + int channel, samplerate; + short* data; + int pos; +}; + +OGG ogg; + +static void callbackfunc(void *userdata, Uint8 *stream, int len) +{ + int16_t* buffer = (int16_t*)stream; + int16_t* oggbuf = (int16_t*)ogg.data; + oggbuf += ogg.pos; + for (int i = 0; i < len / 2; ++i) + { + buffer[i] = oggbuf[i]; + } + ogg.pos += len / 2; +} + +int main(int argc, char* argv[]) +{ + Audio* audio = SDLAudio::get(); + ifstream fs; + fs.open("a.ogg", ios::binary); + fs.seekg(0, ios::end); + int size = fs.tellg(); + fs.seekg(0, ios::beg); + char* buffer = new char[size]; + memset(buffer, 0, size); + fs.read(buffer, size); + ogg.samples = stb_vorbis_decode_memory((unsigned char*)buffer, size, &ogg.channel, &ogg.samplerate, &ogg.data); + ogg.pos = 0; + SDLAudioSetting setting; + SDL_AudioSpec spe; + setting.callback = callbackfunc; + audio->init(&setting); + while (true) + { + SDL_Delay(100); + } + audio->quit(); + return 0; +} + +#endif
\ No newline at end of file |