diff --git a/audio/pulseaudio/Makefile b/audio/pulseaudio/Makefile index fc5b453dab17..c5165e5dc123 100644 --- a/audio/pulseaudio/Makefile +++ b/audio/pulseaudio/Makefile @@ -1,112 +1,111 @@ # # !!!NOTE!!! Any PORTVERSION update to this port must be accompanied by # PORTREVISION bumps of depending ports. PORTNAME= pulseaudio -DISTVERSION= 16.1 -PORTREVISION= 4 +DISTVERSION= 17.0 CATEGORIES= audio MASTER_SITES= https://freedesktop.org/software/pulseaudio/releases/ MAINTAINER= desktop@FreeBSD.org COMMENT= Sound server for UNIX WWW= https://pulseaudio.org/ LICENSE= LGPL21 LICENSE_FILE= ${WRKSRC}/LGPL BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser LIB_DEPENDS= libsndfile.so:audio/libsndfile \ libfftw3.so:math/fftw3 \ libfftw3f.so:math/fftw3-float \ libdbus-1.so:devel/dbus \ libltdl.so:devel/libltdl \ libck-connector.so:sysutils/consolekit2 USES= compiler:c11 cpe gettext-tools gmake gnome iconv localbase:ldflags \ meson pathfix pkgconfig python:run shebangfix ssl tar:xz USE_GNOME= glib20 USE_LDCONFIG= yes # Some symbols in the linker version script map-file are only defined when # building the mainloop-glib shared library. Suppress errors with lld >= 17 due # to these undefined symbols. LDFLAGS+= -Wl,--undefined-version SHEBANG_FILES= shell-completion/bash/pactl \ src/utils/pa-info \ src/utils/qpaeq bash_CMD= ${SETENV} bash SUB_FILES= pkg-message USERS= pulse GROUPS= pulse pulse-access pulse-rt OPTIONS_SUB= yes OPTIONS_DEFINE= AVAHI GSETTINGS SIMD TEST X11 OPTIONS_DEFAULT=AVAHI SIMD SIMPLE SOXR SPEEX WEBRTC_AEC X11 AVAHI_MESON_ENABLED= avahi AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app GSETTINGS_DESC= GSettings configuration backend support GSETTINGS_MESON_ENABLED= gsettings GSETTINGS_VARS= GLIB_SCHEMAS=org.freedesktop.pulseaudio.gschema.xml SIMD_MESON_ENABLED= orc SIMD_LIB_DEPENDS= liborc-0.4.so:devel/orc TEST_MESON_TRUE= tests TEST_BUILD_DEPENDS= check>0:devel/check X11_MESON_ENABLED= x11 X11_USES= xorg X11_USE= XORG=ice,sm,x11,xcb,xtst OPTIONS_GROUP= AUDIO OPTIONS_GROUP_AUDIO= ALSA JACK SOXR SPEEX WEBRTC_AEC AUDIO_DESC= Audio support ALSA_MESON_ENABLED= alsa ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib JACK_MESON_ENABLED= jack JACK_LIB_DEPENDS= libjack.so:audio/jack SOXR_MESON_ENABLED= soxr SOXR_LIB_DEPENDS= libsoxr.so:audio/libsoxr SPEEX_DESC= Speex resampler and AEC support SPEEX_MESON_ENABLED= speex SPEEX_LIB_DEPENDS= libspeexdsp.so:audio/speexdsp WEBRTC_AEC_DESC= WebRTC-based echo canceller -WEBRTC_AEC_LIB_DEPENDS= libwebrtc_audio_processing.so:audio/webrtc-audio-processing0 +WEBRTC_AEC_LIB_DEPENDS= libwebrtc-audio-processing-1.so:audio/webrtc-audio-processing WEBRTC_AEC_MESON_ENABLED= webrtc-aec OPTIONS_SINGLE= DATABASE OPTIONS_SINGLE_DATABASE= TDB GDBM SIMPLE DATABASE_DESC= Database support GDBM_DESC= GNU database manager support GDBM_MESON_ON= -Ddatabase=gdbm GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm SIMPLE_DESC= Simple database support SIMPLE_MESON_ON= -Ddatabase=simple TDB_DESC= Trivial database support TDB_MESON_ON= -Ddatabase=tdb TDB_LIB_DEPENDS= libtdb.so:databases/tdb MESON_ARGS= -Db_lundef=false -Dasyncns=disabled -Dbluez5=disabled -Dbluez5-gstreamer=disabled -Ddoxygen=false -Delogind=disabled -Dgstreamer=disabled -Dgtk=disabled -Dlirc=disabled -Dsystemd=disabled -Dvalgrind=disabled PULSE_VERSION= ${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} PLIST_SUB= PULSE_VERSION=${PULSE_VERSION} post-patch: @${REINPLACE_CMD} -e 's|/usr/share|${LOCALBASE}/share|g' \ ${WRKSRC}/src/daemon/default.pa.in @${REINPLACE_CMD} -e 's|/etc|${PREFIX}/etc|g' \ -e 's|--directory|-d|g' \ ${WRKSRC}/src/utils/pa-info post-install: ${RM} -r ${STAGEDIR}/lib @${MKDIR} ${STAGEDIR}${PREFIX}/etc/pulse .for ii in default.pa daemon.conf client.conf system.pa ${MV} ${STAGEDIR}${PREFIX}/etc/pulse/${ii} \ ${STAGEDIR}${PREFIX}/etc/pulse/${ii}.sample .endfor # Delete ${STAGEDIR}${PREFIX}/libexec/pulse directory, if it's empty ${RMDIR} ${STAGEDIR}${PREFIX}/libexec || ${TRUE} .include diff --git a/audio/pulseaudio/distinfo b/audio/pulseaudio/distinfo index 8c1090c39ef1..19cf7e42263e 100644 --- a/audio/pulseaudio/distinfo +++ b/audio/pulseaudio/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1691308577 -SHA256 (pulseaudio-16.1.tar.xz) = 8eef32ce91d47979f95fd9a935e738cd7eb7463430dabc72863251751e504ae4 -SIZE (pulseaudio-16.1.tar.xz) = 1545596 +TIMESTAMP = 1731932849 +SHA256 (pulseaudio-17.0.tar.xz) = 053794d6671a3e397d849e478a80b82a63cb9d8ca296bd35b73317bb5ceb87b5 +SIZE (pulseaudio-17.0.tar.xz) = 1566556 diff --git a/audio/pulseaudio/files/patch-src_modules_echo-cancel_meson.build b/audio/pulseaudio/files/patch-src_modules_echo-cancel_meson.build index 2c05f455c3d5..d16853bd4edd 100644 --- a/audio/pulseaudio/files/patch-src_modules_echo-cancel_meson.build +++ b/audio/pulseaudio/files/patch-src_modules_echo-cancel_meson.build @@ -1,11 +1,11 @@ ---- src/modules/echo-cancel/meson.build.orig 2022-06-21 10:54:48 UTC +--- src/modules/echo-cancel/meson.build.orig 2024-01-12 17:22:09 UTC +++ src/modules/echo-cancel/meson.build -@@ -15,7 +15,7 @@ libwebrtc_util = shared_library('webrtc-util', +@@ -24,7 +24,7 @@ libwebrtc_util = shared_library('webrtc-util', cpp_args : [pa_c_args, server_c_args], include_directories : [configinc, topinc], dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libatomic_ops_dep, webrtc_dep, libintl_dep], -- link_args : [nodelete_link_args, '-Wl,--unresolved-symbols=ignore-in-object-files'], +- link_args : [nodelete_link_args, ignore_unresolved_symbols_link_args], + link_args : [nodelete_link_args], install : true, install_rpath : privlibdir, install_dir : modlibexecdir, diff --git a/audio/pulseaudio/files/patch-src_modules_meson.build b/audio/pulseaudio/files/patch-src_modules_meson.build index ecbab7e19ad2..e637784c4983 100644 --- a/audio/pulseaudio/files/patch-src_modules_meson.build +++ b/audio/pulseaudio/files/patch-src_modules_meson.build @@ -1,11 +1,11 @@ ---- src/modules/meson.build.orig 2022-06-21 10:54:48 UTC +--- src/modules/meson.build.orig 2024-01-12 17:22:09 UTC +++ src/modules/meson.build -@@ -209,7 +209,7 @@ endif +@@ -221,7 +221,7 @@ endif ] endif -if udev_dep.found() +if udev_dep.found() and host_machine.system() != 'freebsd' all_modules += [ [ 'module-udev-detect', 'module-udev-detect.c', [], [], [udev_dep] ] ] if get_option('hal-compat') all_modules += [ [ 'module-hal-detect', 'module-hal-detect-compat.c' ] ] diff --git a/audio/pulseaudio/files/patch-src_modules_oss_module-oss.c b/audio/pulseaudio/files/patch-src_modules_oss_module-oss.c index e2339d08210f..f4cf49db102a 100644 --- a/audio/pulseaudio/files/patch-src_modules_oss_module-oss.c +++ b/audio/pulseaudio/files/patch-src_modules_oss_module-oss.c @@ -1,280 +1,280 @@ ---- src/modules/oss/module-oss.c.orig 2022-06-21 10:54:48 UTC +--- src/modules/oss/module-oss.c.orig 2024-01-12 17:22:09 UTC +++ src/modules/oss/module-oss.c @@ -121,9 +121,6 @@ struct userdata { int fd; int mode; - int mixer_fd; - int mixer_devmask; - int nfrags, frag_size, orig_frag_size; bool shutdown; @@ -819,75 +816,145 @@ static int source_set_state_in_io_thread_cb(pa_source return 0; } +static int open_mixer(struct userdata *u, int *p_devmask) { + int mixer_fd; + + mixer_fd = pa_oss_open_mixer_for_device(u->device_name); + if (mixer_fd < 0) + return (mixer_fd); + + if (ioctl(mixer_fd, SOUND_MIXER_READ_DEVMASK, p_devmask) < 0) { + pa_log_warn("SOUND_MIXER_READ_DEVMASK failed: %s", pa_cstrerror(errno)); + pa_close(mixer_fd); + return (-1); + } + return (mixer_fd); +} + +static void oss_get_dummy_volume(const pa_sample_spec *ss, pa_cvolume *volume) { + char cv[PA_CVOLUME_SNPRINT_VERBOSE_MAX]; + unsigned vol; + + pa_assert(ss); + pa_assert(volume); + + vol = 100 | (100 << 8); + + pa_cvolume_reset(volume, ss->channels); + + volume->values[0] = PA_CLAMP_VOLUME(((vol & 0xFF) * PA_VOLUME_NORM) / 100); + + if (volume->channels >= 2) + volume->values[1] = PA_CLAMP_VOLUME((((vol >> 8) & 0xFF) * PA_VOLUME_NORM) / 100); + + pa_log_debug("Read dummy settings: %s", pa_cvolume_snprint_verbose(cv, sizeof(cv), volume, NULL, false)); +} + static void sink_get_volume(pa_sink *s) { struct userdata *u; + int mixer_fd; + int mixer_devmask; + pa_assert_se(u = s->userdata); - pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM)); + mixer_fd = open_mixer(u, &mixer_devmask); + if (mixer_fd < 0) { + oss_get_dummy_volume(&s->sample_spec, &s->real_volume); + return; + } - if (u->mixer_devmask & SOUND_MASK_VOLUME) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->real_volume) >= 0) - return; + if (mixer_devmask & SOUND_MASK_VOLUME) + if (pa_oss_get_volume(mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->real_volume) >= 0) + goto done; - if (u->mixer_devmask & SOUND_MASK_PCM) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->real_volume) >= 0) - return; + if (mixer_devmask & SOUND_MASK_PCM) + if (pa_oss_get_volume(mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->real_volume) >= 0) + goto done; + oss_get_dummy_volume(&s->sample_spec, &s->real_volume); + pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno)); +done: + pa_close(mixer_fd); } static void sink_set_volume(pa_sink *s) { struct userdata *u; + int mixer_fd; + int mixer_devmask; + pa_assert_se(u = s->userdata); - pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM)); + mixer_fd = open_mixer(u, &mixer_devmask); + if (mixer_fd < 0) + return; - if (u->mixer_devmask & SOUND_MASK_VOLUME) - (void) pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->real_volume); + if (mixer_devmask & SOUND_MASK_VOLUME) + (void) pa_oss_set_volume(mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->real_volume); - if (u->mixer_devmask & SOUND_MASK_PCM) - (void) pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->real_volume); + if (mixer_devmask & SOUND_MASK_PCM) + (void) pa_oss_set_volume(mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->real_volume); + + pa_close(mixer_fd); } static void source_get_volume(pa_source *s) { struct userdata *u; + int mixer_fd; + int mixer_devmask; + pa_assert_se(u = s->userdata); - pa_assert(u->mixer_devmask & (SOUND_MASK_MIC|SOUND_MASK_IGAIN|SOUND_MASK_RECLEV)); + mixer_fd = open_mixer(u, &mixer_devmask); + if (mixer_fd < 0) { + oss_get_dummy_volume(&s->sample_spec, &s->real_volume); + return; + } - if (u->mixer_devmask & SOUND_MASK_IGAIN) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->real_volume) >= 0) - return; + if (mixer_devmask & SOUND_MASK_IGAIN) + if (pa_oss_get_volume(mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->real_volume) >= 0) + goto done; - if (u->mixer_devmask & SOUND_MASK_RECLEV) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->real_volume) >= 0) - return; + if (mixer_devmask & SOUND_MASK_RECLEV) + if (pa_oss_get_volume(mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->real_volume) >= 0) + goto done; - if (u->mixer_devmask & SOUND_MASK_MIC) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_MIC, &s->sample_spec, &s->real_volume) >= 0) - return; + if (mixer_devmask & SOUND_MASK_MIC) + if (pa_oss_get_volume(mixer_fd, SOUND_MIXER_READ_MIC, &s->sample_spec, &s->real_volume) >= 0) + goto done; + oss_get_dummy_volume(&s->sample_spec, &s->real_volume); + pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno)); +done: + pa_close(mixer_fd); } static void source_set_volume(pa_source *s) { struct userdata *u; + int mixer_fd; + int mixer_devmask; + pa_assert_se(u = s->userdata); - pa_assert(u->mixer_devmask & (SOUND_MASK_MIC|SOUND_MASK_IGAIN|SOUND_MASK_RECLEV)); + mixer_fd = open_mixer(u, &mixer_devmask); + if (mixer_fd < 0) + return; - if (u->mixer_devmask & SOUND_MASK_IGAIN) - (void) pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->real_volume); + if (mixer_devmask & SOUND_MASK_IGAIN) + (void) pa_oss_set_volume(mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->real_volume); - if (u->mixer_devmask & SOUND_MASK_RECLEV) - (void) pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->real_volume); + if (mixer_devmask & SOUND_MASK_RECLEV) + (void) pa_oss_set_volume(mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->real_volume); - if (u->mixer_devmask & SOUND_MASK_MIC) - (void) pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_MIC, &s->sample_spec, &s->real_volume); + if (mixer_devmask & SOUND_MASK_MIC) + (void) pa_oss_set_volume(mixer_fd, SOUND_MIXER_WRITE_MIC, &s->sample_spec, &s->real_volume); + + pa_close(mixer_fd); } static void thread_func(void *userdata) { @@ -1158,16 +1225,6 @@ static void thread_func(void *userdata) { revents = pollfd->revents; } else revents = 0; - - /* check for mixer shutdown, if any */ - if ((revents & (POLLOUT | POLLIN)) == 0) { - int mixer_fd = u->mixer_fd; - int devmask; - if (mixer_fd > -1 && ioctl(mixer_fd, SOUND_MIXER_READ_DEVMASK, &devmask) < 0) { - pa_log("Mixer shutdown."); - goto fail; - } - } } fail: @@ -1245,6 +1302,8 @@ int pa__init(pa_module*m) { } #ifndef __FreeBSD__ +/* Disable mmap. The OSS on FreeBSD doesn't support read & write on + the same socket */ if (use_mmap && mode == O_WRONLY) { pa_log_info("Device opened for playback only, cannot do memory mapping, falling back to UNIX write() mode."); use_mmap = false; @@ -1277,8 +1336,6 @@ int pa__init(pa_module*m) { u->module = m; m->userdata = u; u->fd = fd; - u->mixer_fd = -1; - u->mixer_devmask = 0; u->use_getospace = u->use_getispace = true; u->use_getodelay = true; u->mode = mode; @@ -1449,36 +1506,19 @@ int pa__init(pa_module*m) { u->out_mmap_memblocks = pa_xnew0(pa_memblock*, u->out_nfrags); } - if ((u->mixer_fd = pa_oss_open_mixer_for_device(u->device_name)) >= 0) { - bool do_close = true; - - if (ioctl(u->mixer_fd, SOUND_MIXER_READ_DEVMASK, &u->mixer_devmask) < 0) - pa_log_warn("SOUND_MIXER_READ_DEVMASK failed: %s", pa_cstrerror(errno)); - else { - if (u->sink && (u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM))) { - pa_log_debug("Found hardware mixer track for playback."); - pa_sink_set_get_volume_callback(u->sink, sink_get_volume); - pa_sink_set_set_volume_callback(u->sink, sink_set_volume); - u->sink->n_volume_steps = 101; - do_close = false; - } - - if (u->source && (u->mixer_devmask & (SOUND_MASK_MIC|SOUND_MASK_RECLEV|SOUND_MASK_IGAIN))) { - pa_log_debug("Found hardware mixer track for recording."); - pa_source_set_get_volume_callback(u->source, source_get_volume); - pa_source_set_set_volume_callback(u->source, source_set_volume); - u->source->n_volume_steps = 101; - do_close = false; - } - } - - if (do_close) { - pa_close(u->mixer_fd); - u->mixer_fd = -1; - u->mixer_devmask = 0; - } + if (u->sink) { + pa_log_debug("Found hardware mixer track for playback."); + pa_sink_set_get_volume_callback(u->sink, sink_get_volume); + pa_sink_set_set_volume_callback(u->sink, sink_set_volume); + u->sink->n_volume_steps = 101; } + if (u->source) { + pa_log_debug("Found hardware mixer track for recording."); + pa_source_set_get_volume_callback(u->source, source_get_volume); + pa_source_set_set_volume_callback(u->source, source_set_volume); + u->source->n_volume_steps = 101; + } go_on: pa_assert(u->source || u->sink); @@ -1594,9 +1634,6 @@ void pa__done(pa_module*m) { if (u->fd >= 0) pa_close(u->fd); - - if (u->mixer_fd >= 0) - pa_close(u->mixer_fd); pa_xfree(u->device_name); diff --git a/audio/pulseaudio/files/patch-src_pulsecore_core-util.c b/audio/pulseaudio/files/patch-src_pulsecore_core-util.c index 18e3bc74ead5..77becf674591 100644 --- a/audio/pulseaudio/files/patch-src_pulsecore_core-util.c +++ b/audio/pulseaudio/files/patch-src_pulsecore_core-util.c @@ -1,24 +1,24 @@ ---- src/pulsecore/core-util.c.orig 2024-04-04 06:44:07 UTC +--- src/pulsecore/core-util.c.orig 2024-01-12 17:22:09 UTC +++ src/pulsecore/core-util.c -@@ -2849,12 +2849,19 @@ int pa_close_allv(const int except_fds[]) { +@@ -2850,12 +2850,19 @@ int pa_close_allv(const int except_fds[]) { } #endif - +#if defined(__FreeBSD__) + maxfd = 0; + for (int i = 0; except_fds[i] >= 0; i++) + if (except_fds[i] > maxfd) + maxfd = except_fds[i]; + maxfd++; + closefrom(maxfd); +#else if (getrlimit(RLIMIT_NOFILE, &rl) >= 0) maxfd = (int) rl.rlim_max; else maxfd = sysconf(_SC_OPEN_MAX); - +#endif for (fd = 3; fd < maxfd; fd++) { int i; bool found; diff --git a/audio/pulseaudio/pkg-plist b/audio/pulseaudio/pkg-plist index fecd5631269a..545ea19cadcf 100644 --- a/audio/pulseaudio/pkg-plist +++ b/audio/pulseaudio/pkg-plist @@ -1,310 +1,310 @@ bin/pa-info bin/pacat bin/pacmd bin/pactl bin/padsp bin/pamon bin/paplay bin/parec bin/parecord bin/pasuspender %%X11%%bin/pax11publish bin/pulseaudio bin/qpaeq %%X11%%bin/start-pulseaudio-x11 -etc/dbus-1/system.d/pulseaudio-system.conf +share/dbus-1/system.d/pulseaudio-system.conf @sample etc/pulse/client.conf.sample @sample etc/pulse/daemon.conf.sample @sample etc/pulse/default.pa.sample @sample etc/pulse/system.pa.sample %%X11%%etc/xdg/Xwayland-session.d/00-pulseaudio-x11 %%X11%%etc/xdg/autostart/pulseaudio.desktop include/pulse/cdecl.h include/pulse/channelmap.h include/pulse/context.h include/pulse/def.h include/pulse/direction.h include/pulse/error.h include/pulse/ext-device-manager.h include/pulse/ext-device-restore.h include/pulse/ext-stream-restore.h include/pulse/format.h include/pulse/gccmacro.h include/pulse/glib-mainloop.h include/pulse/introspect.h include/pulse/mainloop-api.h include/pulse/mainloop-signal.h include/pulse/mainloop.h include/pulse/operation.h include/pulse/proplist.h include/pulse/pulseaudio.h include/pulse/rtclock.h include/pulse/sample.h include/pulse/scache.h include/pulse/simple.h include/pulse/stream.h include/pulse/subscribe.h include/pulse/thread-mainloop.h include/pulse/timeval.h include/pulse/utf8.h include/pulse/util.h include/pulse/version.h include/pulse/volume.h include/pulse/xmalloc.h lib/cmake/PulseAudio/PulseAudioConfig.cmake lib/cmake/PulseAudio/PulseAudioConfigVersion.cmake lib/libpulse-mainloop-glib.so lib/libpulse-mainloop-glib.so.0 lib/libpulse-mainloop-glib.so.0.0.6 lib/libpulse-simple.so lib/libpulse-simple.so.0 lib/libpulse-simple.so.0.1.1 lib/libpulse.so lib/libpulse.so.0 -lib/libpulse.so.0.24.2 +lib/libpulse.so.0.24.3 %%AVAHI%%lib/pulseaudio/modules/libavahi-wrap.so %%ALSA%%lib/pulseaudio/modules/libalsa-util.so lib/pulseaudio/modules/libcli.so lib/pulseaudio/modules/liboss-util.so lib/pulseaudio/modules/libprotocol-cli.so lib/pulseaudio/modules/libprotocol-http.so lib/pulseaudio/modules/libprotocol-native.so lib/pulseaudio/modules/libprotocol-simple.so lib/pulseaudio/modules/libraop.so lib/pulseaudio/modules/librtp.so %%WEBRTC_AEC%%lib/pulseaudio/modules/libwebrtc-util.so %%ALSA%%lib/pulseaudio/modules/module-allow-passthrough.so %%ALSA%%lib/pulseaudio/modules/module-alsa-card.so %%ALSA%%lib/pulseaudio/modules/module-alsa-sink.so %%ALSA%%lib/pulseaudio/modules/module-alsa-source.so lib/pulseaudio/modules/module-always-sink.so lib/pulseaudio/modules/module-always-source.so lib/pulseaudio/modules/module-augment-properties.so lib/pulseaudio/modules/module-card-restore.so lib/pulseaudio/modules/module-cli-protocol-tcp.so lib/pulseaudio/modules/module-cli-protocol-unix.so lib/pulseaudio/modules/module-cli.so lib/pulseaudio/modules/module-combine-sink.so lib/pulseaudio/modules/module-combine.so lib/pulseaudio/modules/module-console-kit.so lib/pulseaudio/modules/module-dbus-protocol.so lib/pulseaudio/modules/module-default-device-restore.so lib/pulseaudio/modules/module-detect.so lib/pulseaudio/modules/module-devd-detect.so lib/pulseaudio/modules/module-device-manager.so lib/pulseaudio/modules/module-device-restore.so lib/pulseaudio/modules/module-echo-cancel.so lib/pulseaudio/modules/module-equalizer-sink.so lib/pulseaudio/modules/module-filter-apply.so lib/pulseaudio/modules/module-filter-heuristics.so %%GSETTINGS%%lib/pulseaudio/modules/module-gsettings.so lib/pulseaudio/modules/module-http-protocol-tcp.so lib/pulseaudio/modules/module-http-protocol-unix.so lib/pulseaudio/modules/module-intended-roles.so %%JACK%%lib/pulseaudio/modules/module-jackdbus-detect.so %%JACK%%lib/pulseaudio/modules/module-jack-sink.so %%JACK%%lib/pulseaudio/modules/module-jack-source.so lib/pulseaudio/modules/module-ladspa-sink.so lib/pulseaudio/modules/module-loopback.so lib/pulseaudio/modules/module-match.so lib/pulseaudio/modules/module-native-protocol-fd.so lib/pulseaudio/modules/module-native-protocol-tcp.so lib/pulseaudio/modules/module-native-protocol-unix.so lib/pulseaudio/modules/module-null-sink.so lib/pulseaudio/modules/module-null-source.so lib/pulseaudio/modules/module-oss.so lib/pulseaudio/modules/module-pipe-sink.so lib/pulseaudio/modules/module-pipe-source.so lib/pulseaudio/modules/module-position-event-sounds.so %%AVAHI%%lib/pulseaudio/modules/module-raop-discover.so lib/pulseaudio/modules/module-raop-sink.so lib/pulseaudio/modules/module-remap-sink.so lib/pulseaudio/modules/module-remap-source.so lib/pulseaudio/modules/module-rescue-streams.so lib/pulseaudio/modules/module-role-cork.so lib/pulseaudio/modules/module-role-ducking.so lib/pulseaudio/modules/module-rtp-recv.so lib/pulseaudio/modules/module-rtp-send.so lib/pulseaudio/modules/module-rygel-media-server.so lib/pulseaudio/modules/module-simple-protocol-tcp.so lib/pulseaudio/modules/module-simple-protocol-unix.so lib/pulseaudio/modules/module-sine-source.so lib/pulseaudio/modules/module-sine.so lib/pulseaudio/modules/module-stream-restore.so lib/pulseaudio/modules/module-suspend-on-idle.so lib/pulseaudio/modules/module-switch-on-connect.so lib/pulseaudio/modules/module-switch-on-port-available.so lib/pulseaudio/modules/module-tunnel-sink-new.so lib/pulseaudio/modules/module-tunnel-sink.so lib/pulseaudio/modules/module-tunnel-source-new.so lib/pulseaudio/modules/module-tunnel-source.so lib/pulseaudio/modules/module-virtual-sink.so lib/pulseaudio/modules/module-virtual-source.so lib/pulseaudio/modules/module-virtual-surround-sink.so lib/pulseaudio/modules/module-volume-restore.so %%X11%%lib/pulseaudio/modules/module-x11-bell.so %%X11%%lib/pulseaudio/modules/module-x11-cork-request.so %%X11%%lib/pulseaudio/modules/module-x11-publish.so %%X11%%lib/pulseaudio/modules/module-x11-xsmp.so %%AVAHI%%lib/pulseaudio/modules/module-zeroconf-discover.so %%AVAHI%%lib/pulseaudio/modules/module-zeroconf-publish.so lib/pulseaudio/libpulsecommon-%%PULSE_VERSION%%.so lib/pulseaudio/libpulsecore-%%PULSE_VERSION%%.so lib/pulseaudio/libpulsedsp.so libdata/pkgconfig/libpulse-mainloop-glib.pc libdata/pkgconfig/libpulse-simple.pc libdata/pkgconfig/libpulse.pc %%GSETTINGS%%libexec/pulse/gsettings-helper share/man/man1/pacat.1.gz share/man/man1/pacmd.1.gz share/man/man1/pactl.1.gz share/man/man1/padsp.1.gz share/man/man1/pamon.1.gz share/man/man1/paplay.1.gz share/man/man1/parec.1.gz share/man/man1/parecord.1.gz share/man/man1/pasuspender.1.gz %%X11%%share/man/man1/pax11publish.1.gz share/man/man1/pulseaudio.1.gz %%X11%%share/man/man1/start-pulseaudio-x11.1.gz share/man/man5/default.pa.5.gz share/man/man5/pulse-cli-syntax.5.gz share/man/man5/pulse-client.conf.5.gz share/man/man5/pulse-daemon.conf.5.gz %%GSETTINGS%%share/GConf/gsettings/pulseaudio.convert share/bash-completion/completions/pacat share/bash-completion/completions/pacmd share/bash-completion/completions/pactl share/bash-completion/completions/padsp share/bash-completion/completions/paplay share/bash-completion/completions/parec share/bash-completion/completions/parecord share/bash-completion/completions/pasuspender share/bash-completion/completions/pulseaudio share/locale/af/LC_MESSAGES/pulseaudio.mo share/locale/as/LC_MESSAGES/pulseaudio.mo share/locale/be/LC_MESSAGES/pulseaudio.mo share/locale/bg/LC_MESSAGES/pulseaudio.mo share/locale/bn_IN/LC_MESSAGES/pulseaudio.mo share/locale/ca/LC_MESSAGES/pulseaudio.mo share/locale/cs/LC_MESSAGES/pulseaudio.mo share/locale/da/LC_MESSAGES/pulseaudio.mo share/locale/de/LC_MESSAGES/pulseaudio.mo share/locale/de_CH/LC_MESSAGES/pulseaudio.mo share/locale/el/LC_MESSAGES/pulseaudio.mo share/locale/eo/LC_MESSAGES/pulseaudio.mo share/locale/es/LC_MESSAGES/pulseaudio.mo share/locale/fi/LC_MESSAGES/pulseaudio.mo share/locale/fr/LC_MESSAGES/pulseaudio.mo share/locale/gl/LC_MESSAGES/pulseaudio.mo share/locale/gu/LC_MESSAGES/pulseaudio.mo share/locale/he/LC_MESSAGES/pulseaudio.mo share/locale/hi/LC_MESSAGES/pulseaudio.mo share/locale/hr/LC_MESSAGES/pulseaudio.mo share/locale/hu/LC_MESSAGES/pulseaudio.mo share/locale/id/LC_MESSAGES/pulseaudio.mo share/locale/it/LC_MESSAGES/pulseaudio.mo share/locale/ja/LC_MESSAGES/pulseaudio.mo share/locale/ka/LC_MESSAGES/pulseaudio.mo share/locale/kk/LC_MESSAGES/pulseaudio.mo share/locale/kn/LC_MESSAGES/pulseaudio.mo share/locale/ko/LC_MESSAGES/pulseaudio.mo share/locale/lt/LC_MESSAGES/pulseaudio.mo share/locale/ml/LC_MESSAGES/pulseaudio.mo share/locale/mr/LC_MESSAGES/pulseaudio.mo share/locale/nl/LC_MESSAGES/pulseaudio.mo share/locale/nn/LC_MESSAGES/pulseaudio.mo share/locale/oc/LC_MESSAGES/pulseaudio.mo share/locale/or/LC_MESSAGES/pulseaudio.mo share/locale/pa/LC_MESSAGES/pulseaudio.mo share/locale/pl/LC_MESSAGES/pulseaudio.mo share/locale/pt/LC_MESSAGES/pulseaudio.mo share/locale/pt_BR/LC_MESSAGES/pulseaudio.mo share/locale/ru/LC_MESSAGES/pulseaudio.mo share/locale/si/LC_MESSAGES/pulseaudio.mo share/locale/sk/LC_MESSAGES/pulseaudio.mo share/locale/sr/LC_MESSAGES/pulseaudio.mo share/locale/sr@latin/LC_MESSAGES/pulseaudio.mo share/locale/sv/LC_MESSAGES/pulseaudio.mo share/locale/ta/LC_MESSAGES/pulseaudio.mo share/locale/te/LC_MESSAGES/pulseaudio.mo share/locale/tr/LC_MESSAGES/pulseaudio.mo share/locale/uk/LC_MESSAGES/pulseaudio.mo share/locale/zh_CN/LC_MESSAGES/pulseaudio.mo share/locale/zh_TW/LC_MESSAGES/pulseaudio.mo %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-aux.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-dock-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-fm.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-front-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-headphone-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-headset-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-internal-mic-always.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-internal-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-linein.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-mic-line.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-mic.conf.common %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-rear-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-tvtuner.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input-video.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-input.conf.common %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-chat.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-headphones-2.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-headphones.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-lineout.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-mono.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-speaker-always.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output-speaker.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/analog-output.conf.common %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-0.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-1.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-10.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-2.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-3.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-4.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-5.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-6.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-7.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-8.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/hdmi-output-9.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/iec958-stereo-input.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/iec958-stereo-output.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/steelseries-arctis-output-chat-common.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/steelseries-arctis-output-game-common.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/usb-gaming-headset-input.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/usb-gaming-headset-output-mono.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/usb-gaming-headset-output-stereo.conf %%ALSA%%%%DATADIR%%/alsa-mixer/paths/virtual-surround-7.1.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/audigy.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/cmedia-high-speed-true-hdaudio.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/default.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/dell-dock-tb16-usb-audio.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/force-speaker-and-int-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/force-speaker.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/hp-tbt-dock-120w-g2.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/hp-tbt-dock-audio-module.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/kinect-audio.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/maudio-fasttrack-pro.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-audio4dj.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-audio8dj.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-komplete-audio6.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-korecontroller.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-traktor-audio10.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-traktor-audio2.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-traktor-audio6.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/native-instruments-traktorkontrol-s4.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/sb-omni-surround-5.1.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/sennheiser-gsx.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/simple-headphones-mic.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/steelseries-arctis-common-usb-audio.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/texas-instruments-pcm2902.conf %%ALSA%%%%DATADIR%%/alsa-mixer/profile-sets/usb-gaming-headset.conf share/vala/vapi/libpulse-mainloop-glib.deps share/vala/vapi/libpulse-mainloop-glib.vapi share/vala/vapi/libpulse-simple.deps share/vala/vapi/libpulse-simple.vapi share/vala/vapi/libpulse.deps share/vala/vapi/libpulse.vapi share/zsh/site-functions/_pulseaudio