aboutsummaryrefslogtreecommitdiff
path: root/test/load ogg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/load ogg.cpp')
-rw-r--r--test/load ogg.cpp60
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