From 5bad34ac9278831eb65499c8aa887116aafa33b2 Mon Sep 17 00:00:00 2001 From: Manuel Bachmann Date: Mon, 21 Dec 2015 14:11:16 +0100 Subject: [PATCH] Fix Audio API on Renesas Porter/Koelsch boards Porter/Koelsch do not expose a standard "Master" playback mixer on their default interface, as it is common with desktop audio cards. Add a bit of discovery logic for this. Signed-off-by: Manuel Bachmann --- plugins/audio/audio-alsa.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/audio/audio-alsa.c b/plugins/audio/audio-alsa.c index 4ee48045..8e56e52d 100644 --- a/plugins/audio/audio-alsa.c +++ b/plugins/audio/audio-alsa.c @@ -58,6 +58,19 @@ PUBLIC unsigned char _alsa_init (const char *name, audioCtxHandleT *ctx) { snd_mixer_selem_id_set_name (mixer_sid, "Master"); mixer_elm = snd_mixer_find_selem (mixer, mixer_sid); + if (!mixer_elm) { + /* no "Master" mixer ; we are probably on a board... search ! */ + for (mixer_elm = snd_mixer_first_elem (mixer); mixer_elm != NULL; + mixer_elm = snd_mixer_elem_next (mixer_elm)) { + if (snd_mixer_elem_info (mixer_elm) < 0) + continue; + snd_mixer_selem_get_id (mixer_elm, mixer_sid); + if (strstr (snd_mixer_selem_id_get_name (mixer_sid), "Master") || + strstr (snd_mixer_selem_id_get_name (mixer_sid), "Playback")) + break; + } + } + if (mixer_elm) { snd_mixer_selem_get_playback_volume_range (mixer_elm, &vol_min, &vol_max); snd_mixer_selem_get_playback_volume (mixer_elm, SND_MIXER_SCHN_FRONT_LEFT, &vol); -- 2.16.6