Merge pull request #152 from hean01-cendio/pulseaudio

Add support for pulseaudio backend
This commit is contained in:
Henrik Andersson 2017-11-24 08:01:01 +01:00 committed by GitHub
commit b5917bc9a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 1410 additions and 2 deletions

View File

@ -276,7 +276,7 @@ AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET")
sound="yes" sound="yes"
AC_ARG_WITH(sound, AC_ARG_WITH(sound,
[ --with-sound select sound system ("oss", "sgi", "sun", "alsa" or "libao") ], [ --with-sound select sound system ("oss", "sgi", "sun", "alsa", "pulse" or "libao") ],
[ [
sound="$withval" sound="$withval"
]) ])
@ -292,6 +292,7 @@ AC_ARG_ENABLE(static-libsamplerate,
if test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG"; then
PKG_CHECK_MODULES(LIBAO, ao, [HAVE_LIBAO=1], [HAVE_LIBAO=0]) PKG_CHECK_MODULES(LIBAO, ao, [HAVE_LIBAO=1], [HAVE_LIBAO=0])
PKG_CHECK_MODULES(PULSE, libpulse, [HAVE_PULSE=1], [HAVE_PULSE=0])
PKG_CHECK_MODULES(ALSA, alsa, [HAVE_ALSA=1], [HAVE_ALSA=0]) PKG_CHECK_MODULES(ALSA, alsa, [HAVE_ALSA=1], [HAVE_ALSA=0])
PKG_CHECK_MODULES(LIBSAMPLERATE, samplerate, [HAVE_LIBSAMPLERATE=1], [HAVE_LIBSAMPLERATE=0]) PKG_CHECK_MODULES(LIBSAMPLERATE, samplerate, [HAVE_LIBSAMPLERATE=1], [HAVE_LIBSAMPLERATE=0])
if test x"$HAVE_LIBSAMPLERATE" = "x1"; then if test x"$HAVE_LIBSAMPLERATE" = "x1"; then
@ -336,6 +337,13 @@ case $sound in
AC_DEFINE(RDPSND_ALSA) AC_DEFINE(RDPSND_ALSA)
fi fi
if test x"$HAVE_PULSE" = "x1"; then
SOUNDOBJ="$SOUNDOBJ rdpsnd_pulse.o"
CFLAGS="$CFLAGS $PULSE_CFLAGS"
LIBS="$LIBS $PULSE_LIBS"
AC_DEFINE(RDPSND_PULSE)
fi
if test x"$HAVE_LIBAO" = "x1"; then if test x"$HAVE_LIBAO" = "x1"; then
SOUNDOBJ="$SOUNDOBJ rdpsnd_libao.o" SOUNDOBJ="$SOUNDOBJ rdpsnd_libao.o"
CFLAGS="$CFLAGS $LIBAO_CFLAGS" CFLAGS="$CFLAGS $LIBAO_CFLAGS"
@ -384,6 +392,17 @@ case $sound in
fi fi
;; ;;
pulse)
if test x"$HAVE_PULSE" = "x1"; then
SOUNDOBJ="$SOUNDOBJ rdpsnd_pulse.o"
CFLAGS="$CFLAGS $PULSE_CFLAGS"
LIBS="$LIBS $PULSE_LIBS"
AC_DEFINE(RDPSND_PULSE)
else
AC_MSG_ERROR([Selected sound system is not available.])
fi
;;
libao) libao)
if test x"$HAVE_LIBAO" = "x1"; then if test x"$HAVE_LIBAO" = "x1"; then
SOUNDOBJ="$SOUNDOBJ rdpsnd_libao.o" SOUNDOBJ="$SOUNDOBJ rdpsnd_libao.o"
@ -400,7 +419,7 @@ case $sound in
*) *)
AC_MSG_WARN([sound support disabled]) AC_MSG_WARN([sound support disabled])
AC_MSG_WARN([Currently supported systems are Open Sound System (oss), SGI AL (sgi), Sun/BSD (sun), ALSA (alsa) and libao]) AC_MSG_WARN([Currently supported systems are Open Sound System (oss), SGI AL (sgi), Sun/BSD (sun), ALSA (alsa), PulseAudio (pulse) and libao])
;; ;;
esac esac

View File

@ -3,6 +3,7 @@
Sound Channel Process Functions Sound Channel Process Functions
Copyright 2006-2010 Pierre Ossman <ossman@cendio.se> for Cendio AB Copyright 2006-2010 Pierre Ossman <ossman@cendio.se> for Cendio AB
Copyright 2009-2011 Peter Astrand <astrand@cendio.se> for Cendio AB Copyright 2009-2011 Peter Astrand <astrand@cendio.se> for Cendio AB
Copyright 2017 Henrik Andersson <hean01@cendio.se> for Cendio AB
Copyright (C) Matthew Chapman <matthewc.unsw.edu.au> 2003-2008 Copyright (C) Matthew Chapman <matthewc.unsw.edu.au> 2003-2008
Copyright (C) GuoJunBo <guojunbo@ict.ac.cn> 2003 Copyright (C) GuoJunBo <guojunbo@ict.ac.cn> 2003
Copyright 2017 Karl Mikaelsson <derfian@cendio.se> for Cendio AB Copyright 2017 Karl Mikaelsson <derfian@cendio.se> for Cendio AB
@ -462,6 +463,11 @@ rdpsnd_register_drivers(char *options)
/* The order of registrations define the probe-order /* The order of registrations define the probe-order
when opening the device for the first time */ when opening the device for the first time */
reg = &drivers; reg = &drivers;
#if defined(RDPSND_PULSE)
*reg = pulse_register(options);
assert(*reg);
reg = &((*reg)->next);
#endif
#if defined(RDPSND_ALSA) #if defined(RDPSND_ALSA)
*reg = alsa_register(options); *reg = alsa_register(options);
assert(*reg); assert(*reg);

View File

@ -52,6 +52,7 @@ struct audio_driver
}; };
/* Driver register functions */ /* Driver register functions */
struct audio_driver *pulse_register(char *options);
struct audio_driver *alsa_register(char *options); struct audio_driver *alsa_register(char *options);
struct audio_driver *libao_register(char *options); struct audio_driver *libao_register(char *options);
struct audio_driver *oss_register(char *options); struct audio_driver *oss_register(char *options);

1382
rdpsnd_pulse.c Normal file

File diff suppressed because it is too large Load Diff