From 2f92e2a67ad3fcd98ccff4482fdb75cd6eb33be3 Mon Sep 17 00:00:00 2001 From: Anton Yabchinskiy Date: Sat, 22 Nov 2014 02:58:32 +0300 Subject: Open/close libao audio device --- drivers/ao/audio_driver_ao.cpp | 15 +++++++++++++++ drivers/ao/audio_driver_ao.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/drivers/ao/audio_driver_ao.cpp b/drivers/ao/audio_driver_ao.cpp index 29c90b5bdf..d143b4aa6e 100644 --- a/drivers/ao/audio_driver_ao.cpp +++ b/drivers/ao/audio_driver_ao.cpp @@ -43,6 +43,17 @@ Error AudioDriverAO::init() { output_format = OUTPUT_STEREO; channels = 2; + ao_sample_format format; + + format.bits = 16; + format.rate = mix_rate; + format.channels = channels; + format.byte_format = AO_FMT_LITTLE; + format.matrix = "L,R"; + + device = ao_open_live(ao_default_driver_id(), &format, 0); + ERR_FAIL_COND_V(device == 0, ERR_CANT_OPEN); + int latency = GLOBAL_DEF("audio/output_latency",25); buffer_size = nearest_power_of_2( latency * mix_rate / 1000 ); @@ -114,6 +125,10 @@ void AudioDriverAO::finish() { memdelete(thread); if (mutex) memdelete(mutex); + + if (device) + ao_close(device); + thread = NULL; }; diff --git a/drivers/ao/audio_driver_ao.h b/drivers/ao/audio_driver_ao.h index d59bb6969c..b64b8dce9d 100644 --- a/drivers/ao/audio_driver_ao.h +++ b/drivers/ao/audio_driver_ao.h @@ -40,6 +40,8 @@ class AudioDriverAO : public AudioDriverSW { Thread* thread; Mutex* mutex; + ao_device* device; + int32_t* samples_in; static void thread_func(void* p_udata); -- cgit v1.2.3