summaryrefslogtreecommitdiffstats
path: root/audio_out.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio_out.c')
-rw-r--r--audio_out.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/audio_out.c b/audio_out.c
index 2ea2db8..538438b 100644
--- a/audio_out.c
+++ b/audio_out.c
@@ -30,6 +30,7 @@
#define EFFECT_UUID_NULL EFFECT_UUID_NULL_OUT
#define EFFECT_UUID_NULL_STR EFFECT_UUID_NULL_STR_OUT
#include "audio_hw.h"
+#include "mixer.h"
/*
* Functions
@@ -107,8 +108,25 @@ static uint32_t audio_out_get_latency(const struct audio_stream_out *stream)
static int audio_out_set_volume(struct audio_stream_out *stream, float left,
float right)
{
+ struct tinyalsa_audio_stream_out *stream_out;
+ float volume;
+
LOGD("%s(%p, %f, %f)", __func__, stream, left, right);
+ if(stream == NULL)
+ return -1;
+
+ stream_out = (struct tinyalsa_audio_stream_out *) stream;
+
+ if(stream_out->device == NULL || stream_out->device->mixer == NULL)
+ return -1;
+
+ volume = (left + right) / 2;
+
+ // FIXME: Select the device
+ tinyalsa_mixer_set_output_volume(stream_out->device->mixer,
+ AUDIO_DEVICE_IN_DEFAULT, stream_out->device->mode, volume);
+
return 0;
}
@@ -176,7 +194,7 @@ int audio_hw_open_output_stream(struct audio_hw_device *dev,
if(tinyalsa_audio_stream_out == NULL)
return -ENOMEM;
- tinyalsa_audio_stream_out->dev = tinyalsa_audio_device;
+ tinyalsa_audio_stream_out->device = tinyalsa_audio_device;
stream = &(tinyalsa_audio_stream_out->stream);
stream->common.get_sample_rate = audio_out_get_sample_rate;