summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authorattila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-01-10 09:10:52 +0000
committerattila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-01-10 09:10:52 +0000
commitc27b831927bfccb6086e107f6ad7329208ac3dbd (patch)
treeebb1c141583d7555d8b08518306354bd0327c6a8 /libao2
parent8e3155be878303137f739aa629aeeed404a94693 (diff)
downloadmpv-c27b831927bfccb6086e107f6ad7329208ac3dbd.tar.bz2
mpv-c27b831927bfccb6086e107f6ad7329208ac3dbd.tar.xz
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
Diffstat (limited to 'libao2')
-rw-r--r--libao2/ao_alsa1x.c20
-rw-r--r--libao2/ao_alsa9.c20
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;