Audio plugin: choose between Pulse/ALSA at runtime
authorManuel Bachmann <manuel.bachmann@iot.bzh>
Wed, 17 Feb 2016 10:31:59 +0000 (11:31 +0100)
committerManuel Bachmann <manuel.bachmann@iot.bzh>
Wed, 17 Feb 2016 10:31:59 +0000 (11:31 +0100)
If the AFB_AUDIO_OUTPUT environment variable is defined
to "Pulse/Alsa", it will try to initialize the given
backend (still falling back to Alsa for now).

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
plugins/audio/audio-alsa.c
plugins/audio/audio-api.c
plugins/audio/audio-pulse.c

index 7310ea8..bc777fc 100644 (file)
@@ -130,6 +130,8 @@ PUBLIC unsigned char _alsa_init (const char *name, audioCtxHandleT *ctx) {
     ctx->mute = _alsa_get_mute (num);
     ctx->idx = num;
 
+    if (verbose) fprintf (stderr, "Successfully initialized ALSA backend.\n");
+
     return 0;
 }
 
index 4a8d0da..637f9d0 100644 (file)
 
 void _backend_init (const char *name, audioCtxHandleT *ctx) {
 
+    char *backend_env = getenv ("AFB_AUDIO_OUTPUT");
+    unsigned char res = -1;
+
 # ifdef HAVE_PULSE
-    if (_pulse_init (name, ctx) < 0)
-# endif
-    _alsa_init (name, ctx);
+    if (!backend_env || (strcasecmp (backend_env, "Alsa") != 0))
+        res = _pulse_init (name, ctx);
+    if (res < 0)
+#endif
+    res = _alsa_init (name, ctx);
+
+    if (res < 0 && verbose)
+        fprintf (stderr, "Could not initialize Audio backend\n");
 }
 
 void _backend_free (audioCtxHandleT *ctx) {
index 4caf3db..ceffcf7 100644 (file)
@@ -94,6 +94,8 @@ PUBLIC unsigned char _pulse_init (const char *name, audioCtxHandleT *ctx) {
 
     client_count++;
 
+    if (verbose) fprintf (stderr, "Successfully initialized PulseAudio backend.\n");
+
     return 0;
 }