Rather than GStreamer/PulseAudio backend being mutually exclusive at compile-time, this commit allows to enable both at the same time. PulseAudio will then be favoured, with a fallback to GStreamer if it's not available. Note that --with-audio is kept for backward compatibility. Signed-off-by: Francois Gouget <fgouget@xxxxxxxxxxxxxxx> --- configure.ac | 71 +++++++++++++++++++++++++++++-------------------------- src/Makefile.am | 4 ++-- src/spice-audio.c | 11 +++++---- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/configure.ac b/configure.ac index dea9a30..734b73c 100644 --- a/configure.ac +++ b/configure.ac @@ -292,49 +292,53 @@ AS_IF([test "x$have_phodav" = "xyes"], AM_CONDITIONAL([WITH_PHODAV], [test "x$have_phodav" = "xyes"]) AC_ARG_WITH([audio], - AS_HELP_STRING([--with-audio=@<:@gstreamer/pulse/auto/no@:>@], [Select audio backend @<:@default=auto@:>@]), - [], - [with_audio="auto"]) - -case "$with_audio" in - gstreamer|pulse|auto*) - PKG_CHECK_MODULES(GSTAUDIO, gstreamer-1.0 gstreamer-base-1.0 gstreamer-app-1.0 gstreamer-audio-1.0, [have_gstaudio=yes], [have_gstaudio=no]) - PKG_CHECK_MODULES(PULSE, libpulse libpulse-mainloop-glib, [have_pulse=yes], [have_pulse=no]) - ;; - no*) - ;; - *) AC_MSG_ERROR(Unsupported audio backend) -esac - -AS_IF([test "x$with_audio" = "xauto" && test "x$have_pulse" = "xyes"], - [with_audio=pulse]) - -AS_IF([test "x$with_audio" = "xauto" && test "x$have_gstaudio" = "xyes"], - [with_audio=gstreamer]) - -AS_IF([test "x$with_audio" = "xauto"], - [with_audio=no]) + AS_HELP_STRING([--with-audio=@<:@gstreamer/pulse/auto/no@:>@], [For legacy compatibility only]), + [SPICE_WARNING([--with-audio is deprecated. Use --enable-pulse and/or --enable-gstaudio instead]) + case "$with_audio" in + pulse) enable_pulse="yes"; enable_gstaudio="no" ;; + gstreamer) enable_pulse="no"; enable_gstaudio="yes" ;; + no) enable_pulse="no"; enable_gstaudio="no" ;; + esac +]) -AS_IF([test "x$with_audio" = "xpulse"], - [AS_IF([test "x$have_pulse" = "xyes"], - [AC_DEFINE([WITH_PULSE], 1, [Have pulseaudio?])], - [AC_MSG_ERROR([PulseAudio requested but not found]) +AC_ARG_ENABLE([pulse], + AS_HELP_STRING([--enable-pulse=@<:@yes/auto/no@:>@], [Enable the PulseAudio backend @<:@default=auto@:>@]), + [], + [enable_pulse="auto"]) +AS_IF([test "x$enable_pulse" != "xno"], + [PKG_CHECK_MODULES(PULSE, [libpulse libpulse-mainloop-glib], + [AC_DEFINE([HAVE_PULSE], 1, [Have PulseAudio support?]) + enable_pulse="yes"], + [AS_IF([test "x$enable_pulse" = "xyes"], + AC_MSG_ERROR([PulseAudio requested but not found])) + enable_pulse="no" ]) ]) -AM_CONDITIONAL([WITH_PULSE], [test "x$have_pulse" = "xyes"]) +AM_CONDITIONAL([SUPPORT_PULSE], [test "x$enable_pulse" = "xyes"]) AC_SUBST(PULSE_CFLAGS) AC_SUBST(PULSE_LIBS) -AS_IF([test "x$with_audio" = "xgstreamer"], - [AS_IF([test "x$have_gstaudio" = "xyes"], - [AC_DEFINE([WITH_GSTAUDIO], 1, [Have GStreamer 1.0 audio?])], - [AC_MSG_ERROR([GStreamer 1.0 audio requested but not found]) +AC_ARG_ENABLE([gstaudio], + AS_HELP_STRING([--enable-gstaudio=@<:@yes/auto/no@:>@], [Enable the GStreamer 1.0 audio backend @<:@default=auto@:>@]), + [], + [enable_gstaudio="auto"]) +AS_IF([test "x$enable_gstaudio" != "xno"], + [PKG_CHECK_MODULES(GSTAUDIO, [gstreamer-1.0 gstreamer-base-1.0 gstreamer-app-1.0 gstreamer-audio-1.0], + [AC_DEFINE([HAVE_GSTAUDIO], 1, [Have GStreamer 1.0 audio support?]) + enable_gstaudio="yes"], + [AS_IF([test "x$enable_gstaudio" = "xyes"], + AC_MSG_ERROR([GStreamer 1.0 audio requested but not found])) + enable_gstaudio="no" ]) ]) -AM_CONDITIONAL([WITH_GSTAUDIO], [test "x$have_gstaudio" = "xyes"]) +AM_CONDITIONAL([SUPPORT_GSTAUDIO], [test "x$enable_gstaudio" = "xyes"]) AC_SUBST(GSTAUDIO_CFLAGS) AC_SUBST(GSTAUDIO_LIBS) +AS_IF([test "x$enable_pulse$enable_gstaudio" = "xnono"], + [SPICE_WARNING([No PulseAudio or GStreamer 1.0 audio decoder, audio will not be streamed]) +]) + AC_CHECK_LIB(jpeg, jpeg_destroy_decompress, AC_MSG_CHECKING([for jpeglib.h]) AC_TRY_CPP( @@ -741,7 +745,8 @@ AC_MSG_NOTICE([ Gtk: ${with_gtk} Coroutine: ${with_coroutine} - Audio: ${with_audio} + PulseAudio: ${enable_pulse} + GStreamer Audio: ${enable_gstaudio} SASL support: ${enable_sasl} Smartcard support: ${have_smartcard} USB redirection support: ${have_usbredir} ${with_usbredir_hotplug} diff --git a/src/Makefile.am b/src/Makefile.am index 99a8a1f..af95562 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -330,14 +330,14 @@ dist_libspice_client_glibinclude_DATA = \ spice-channel-enums.h \ $(NULL) -if WITH_PULSE +if SUPPORT_PULSE libspice_client_glib_2_0_la_SOURCES += \ spice-pulse.c \ spice-pulse.h \ $(NULL) endif -if WITH_GSTAUDIO +if SUPPORT_GSTAUDIO libspice_client_glib_2_0_la_SOURCES += \ spice-gstaudio.c \ spice-gstaudio.h \ diff --git a/src/spice-audio.c b/src/spice-audio.c index 75742d7..550d02a 100644 --- a/src/spice-audio.c +++ b/src/spice-audio.c @@ -42,10 +42,10 @@ #include "spice-channel-priv.h" #include "spice-audio-priv.h" -#ifdef WITH_PULSE +#ifdef HAVE_PULSE #include "spice-pulse.h" #endif -#if defined(WITH_GSTAUDIO) +#ifdef HAVE_GST_AUDIO #include "spice-gstaudio.h" #endif @@ -261,11 +261,12 @@ SpiceAudio *spice_audio_new(SpiceSession *session, GMainContext *context, if (name == NULL) name = g_get_application_name(); -#ifdef WITH_PULSE +#ifdef HAVE_PULSE self = SPICE_AUDIO(spice_pulse_new(session, context, name)); #endif -#if defined(WITH_GSTAUDIO) - self = SPICE_AUDIO(spice_gstaudio_new(session, context, name)); +#ifdef HAVE_GST_AUDIO + if (!self) + self = SPICE_AUDIO(spice_gstaudio_new(session, context, name)); #endif if (!self) return NULL; -- 2.6.2 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel