]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Check for existence of a hardware mixer before messing with it.
authorMike Brady <mikebrady@eircom.net>
Tue, 26 Jan 2016 22:32:51 +0000 (22:32 +0000)
committerMike Brady <mikebrady@eircom.net>
Tue, 26 Jan 2016 22:32:51 +0000 (22:32 +0000)
audio_alsa.c

index 26f50d9a0a4fcec8a0cf55c1348eaeae887bf47d..a389ee28754e2d5539712941a2b9c8a39d991517 100644 (file)
@@ -81,6 +81,8 @@ static char *alsa_out_dev = "default";
 static char *alsa_mix_dev = NULL;
 static char *alsa_mix_ctrl = "Master";
 static int alsa_mix_index = 0;
+static int hardware_mixer = 0;
+
 
 static int play_number;
 static int64_t accumulated_delay, accumulated_da_delay;
@@ -94,27 +96,29 @@ static void help(void) {
 }
 
 int open_mixer() {
-  debug(3, "Open Mixer");
-  int ret = 0;
-  snd_mixer_selem_id_alloca(&alsa_mix_sid);
-  snd_mixer_selem_id_set_index(alsa_mix_sid, alsa_mix_index);
-  snd_mixer_selem_id_set_name(alsa_mix_sid, alsa_mix_ctrl);
-
-  if ((snd_mixer_open(&alsa_mix_handle, 0)) < 0)
-    die("Failed to open mixer");
-  debug(3, "Mixer device name is \"%s\".", alsa_mix_dev);
-  if ((snd_mixer_attach(alsa_mix_handle, alsa_mix_dev)) < 0)
-    die("Failed to attach mixer");
-  if ((snd_mixer_selem_register(alsa_mix_handle, NULL, NULL)) < 0)
-    die("Failed to register mixer element");
-
-  ret = snd_mixer_load(alsa_mix_handle);
-  if (ret < 0)
-    die("Failed to load mixer element");
-  debug(3, "Mixer Control name is \"%s\".", alsa_mix_ctrl);
-  alsa_mix_elem = snd_mixer_find_selem(alsa_mix_handle, alsa_mix_sid);
-  if (!alsa_mix_elem)
-    die("Failed to find mixer element");
+  if (hardware_mixer) {
+    debug(3, "Open Mixer");
+    int ret = 0;
+    snd_mixer_selem_id_alloca(&alsa_mix_sid);
+    snd_mixer_selem_id_set_index(alsa_mix_sid, alsa_mix_index);
+    snd_mixer_selem_id_set_name(alsa_mix_sid, alsa_mix_ctrl);
+
+    if ((snd_mixer_open(&alsa_mix_handle, 0)) < 0)
+      die("Failed to open mixer");
+    debug(3, "Mixer device name is \"%s\".", alsa_mix_dev);
+    if ((snd_mixer_attach(alsa_mix_handle, alsa_mix_dev)) < 0)
+      die("Failed to attach mixer");
+    if ((snd_mixer_selem_register(alsa_mix_handle, NULL, NULL)) < 0)
+      die("Failed to register mixer element");
+
+    ret = snd_mixer_load(alsa_mix_handle);
+    if (ret < 0)
+      die("Failed to load mixer element");
+    debug(3, "Mixer Control name is \"%s\".", alsa_mix_ctrl);
+    alsa_mix_elem = snd_mixer_find_selem(alsa_mix_handle, alsa_mix_sid);
+    if (!alsa_mix_elem)
+      die("Failed to find mixer element");
+  }
 }
 
 static int init(int argc, char **argv) {
@@ -122,8 +126,6 @@ static int init(int argc, char **argv) {
   const char *str;
   int value;
 
-  int hardware_mixer = 0;
-
   config.audio_backend_latency_offset = 0; // this is the default for ALSA
   config.audio_backend_buffer_desired_length =
       6615; // default for alsa with a software mixer