#include "audiostream.h" #ifdef USE_LIBAO #include static ao_device *aodevice; static ao_sample_format aoformat; static void libao_init() { ao_initialize(); memset(&aoformat, 0, sizeof(aoformat)); aoformat.bits = 16; aoformat.channels = 2; aoformat.rate = 44100; aoformat.byte_format = AO_FMT_LITTLE; aodevice = ao_open_live(ao_default_driver_id(), &aoformat, NULL); // Live output if (!aodevice) aodevice = ao_open_live(ao_driver_id("null"), &aoformat, NULL); } static u32 libao_push(const void* frame, u32 samples, bool wait) { if (aodevice) ao_play(aodevice, (char*)frame, samples * 4); return 1; } static void libao_term() { if (aodevice) { ao_close(aodevice); ao_shutdown(); } } static audiobackend_t audiobackend_libao = { "libao", // Slug "libao", // Name &libao_init, &libao_push, &libao_term, NULL }; static bool ao = RegisterAudioBackend(&audiobackend_libao); #endif