diff options
author | attila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-01-10 09:10:52 +0000 |
---|---|---|
committer | attila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-01-10 09:10:52 +0000 |
commit | c27b831927bfccb6086e107f6ad7329208ac3dbd (patch) | |
tree | ebb1c141583d7555d8b08518306354bd0327c6a8 | |
parent | 8e3155be878303137f739aa629aeeed404a94693 (diff) |
use -mixer with alsa9
patch by Roland Kuhn <rkuhn@e18.physik.tu-muenchen.de>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11765 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libao2/ao_alsa1x.c | 20 | ||||
-rw-r--r-- | libao2/ao_alsa9.c | 20 |
2 files changed, 36 insertions, 4 deletions
diff --git a/libao2/ao_alsa1x.c b/libao2/ao_alsa1x.c index ce43b7e843..4648ef956a 100644 --- a/libao2/ao_alsa1x.c +++ b/libao2/ao_alsa1x.c @@ -18,6 +18,7 @@ #include <sys/poll.h> #include "../config.h" +#include "../mixer.h" #if HAVE_SYS_ASOUNDLIB_H #include <sys/asoundlib.h> @@ -96,13 +97,28 @@ static int control(int cmd, void *arg) snd_mixer_elem_t *elem; snd_mixer_selem_id_t *sid; - const char *mix_name = "PCM"; - char *card = "default"; + static const char *mix_name = NULL; + static char *card = NULL; long pmin, pmax; long get_vol, set_vol; float calc_vol, diff, f_multi; + if(mix_name == NULL){ + if(mixer_device) { + card = strdup(mixer_device); + mix_name = strchr(card, '/'); + if(mix_name) { + *mix_name++ = 0; + } else { + mix_name = "PCM"; + } + } else { + mix_name = "PCM"; + card = "default"; + } + } + if(ao_data.format == AFMT_AC3) return CONTROL_TRUE; diff --git a/libao2/ao_alsa9.c b/libao2/ao_alsa9.c index ce43b7e843..4648ef956a 100644 --- a/libao2/ao_alsa9.c +++ b/libao2/ao_alsa9.c @@ -18,6 +18,7 @@ #include <sys/poll.h> #include "../config.h" +#include "../mixer.h" #if HAVE_SYS_ASOUNDLIB_H #include <sys/asoundlib.h> @@ -96,13 +97,28 @@ static int control(int cmd, void *arg) snd_mixer_elem_t *elem; snd_mixer_selem_id_t *sid; - const char *mix_name = "PCM"; - char *card = "default"; + static const char *mix_name = NULL; + static char *card = NULL; long pmin, pmax; long get_vol, set_vol; float calc_vol, diff, f_multi; + if(mix_name == NULL){ + if(mixer_device) { + card = strdup(mixer_device); + mix_name = strchr(card, '/'); + if(mix_name) { + *mix_name++ = 0; + } else { + mix_name = "PCM"; + } + } else { + mix_name = "PCM"; + card = "default"; + } + } + if(ao_data.format == AFMT_AC3) return CONTROL_TRUE; |