From d6100972a531839cce9e7480f67f5665d4d24007 Mon Sep 17 00:00:00 2001 From: reimar Date: Wed, 22 Sep 2004 14:12:53 +0000 Subject: allow to select an alsa mixer channel index. Patch by Eric Yagerlener [eyager (at) chartermi (dot) net]. Applied with slight modifications, see also bugzilla bug #69. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13435 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libao2/ao_alsa.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'libao2/ao_alsa.c') diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c index 8729dac257..7089e8810f 100644 --- a/libao2/ao_alsa.c +++ b/libao2/ao_alsa.c @@ -101,12 +101,28 @@ static int control(int cmd, void *arg) static char *mix_name = "PCM"; static char *card = "default"; + static int mix_index = 0; long pmin, pmax; long get_vol, set_vol; float f_multi; - if(mixer_channel) mix_name = mixer_channel; + if(mixer_channel) { + char *test_mix_index; + + mix_name = strdup(mixer_channel); + if (test_mix_index = strchr(mix_name, ',')){ + *test_mix_index = 0; + test_mix_index++; + mix_index = strtol(test_mix_index, &test_mix_index, 0); + + if (*test_mix_index){ + mp_msg(MSGT_AO,MSGL_ERR, + "alsa-control: invalid mixer index. Defaulting to 0\n"); + mix_index = 0 ; + } + } + } if(mixer_device) card = mixer_device; if(ao_data.format == AFMT_AC3) @@ -116,9 +132,14 @@ static int control(int cmd, void *arg) snd_mixer_selem_id_alloca(&sid); //sets simple-mixer index and name - snd_mixer_selem_id_set_index(sid, 0); + snd_mixer_selem_id_set_index(sid, mix_index); snd_mixer_selem_id_set_name(sid, mix_name); + if (mixer_channel) { + free(mix_name); + mix_name = NULL; + } + if ((err = snd_mixer_open(&handle, 0)) < 0) { mp_msg(MSGT_AO,MSGL_ERR,"alsa-control: mixer open error: %s\n", snd_strerror(err)); return CONTROL_ERROR; -- cgit v1.2.3