summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/ao/audio_driver_ao.cpp15
-rw-r--r--drivers/ao/audio_driver_ao.h2
2 files changed, 17 insertions, 0 deletions
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);