Hello community, here is the log from the commit of package pipewire for openSUSE:Factory checked in at 2020-05-26 17:14:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pipewire (Old) and /work/SRC/openSUSE:Factory/.pipewire.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pipewire" Tue May 26 17:14:29 2020 rev:9 rq:807946 version:0.3.5 Changes: -------- --- /work/SRC/openSUSE:Factory/pipewire/pipewire.changes 2020-04-07 10:20:15.345758042 +0200 +++ /work/SRC/openSUSE:Factory/.pipewire.new.2738/pipewire.changes 2020-05-26 17:15:49.611522005 +0200 @@ -1,0 +2,80 @@ +Thu May 21 08:50:18 UTC 2020 - Antonio Larrosa <[email protected]> + +- Filter out libpulse.so.0 and libjack.so.0 automatic provides so + this is not considered an alternative when resolving dependencies + in the distribution. + +------------------------------------------------------------------- +Thu May 21 07:51:29 UTC 2020 - Antonio Larrosa <[email protected]> + +- Add patch to fix build in SLE/Leap where alsa doesn't have a + snd_pcm_ioplug_hw_avail function: + * do-not-use-snd_pcm_ioplug_hw_avail.patch + +------------------------------------------------------------------- +Tue May 19 07:54:52 UTC 2020 - Antonio Larrosa <[email protected]> + +- Update to version 0.3.5: + * Compiler fixes + * Add pw-midiplay and pw-midirecord aliases + * Add pw-mididump tool + * Add pw-metadata tool to inspect, add and remove metadata + for objects. + * Docs updates, man pages + * install alsa config files + * Fix linked sink/source in pulseaudio + * ratelimit graph processing warnings + * improve buffer handling in GStreamer elements + * Fix power usage by removing the queue for the alsa + sequencer system announce messages. + * Fix metadata clear() method dispatch. + * Improve parameter enumeration, make it possible to detect + missing parameters vs no-compatible parameters so that we + can use defaults in the first case and error in the second + case. + * Fix cleanup of proxy objects. Stability improvements on + plug/unplug in session manager. + * Make it possible to set log level from config file + * improve debug of param negotiation errors. Log the + parameters to stderr/journal. + * Make it possible to configure global logger + implementation. + * Fix NEON detection + * JACK and PulseAudio compatibility improvements + +- Update to version 0.3.4: + * A quick update with some important stability fixes. + +- Update to version 0.3.3: + * NEON optimizations for audio conversion (32 and 64 bits) + * rework of session manager implementation + * Add option to disable modules in the session manager + * Release midi hardware devices when suspended + * various build fixes + * Clean up options of various utils + * Stability improvements + * Mayor improvements in pulseaudio emulation. Improved + timings and compatibility. + * Implementation of drain and flush in pulse and alsa + emulation. + * Implement poll on file descriptors. + * Improvement of metadata for jack emulation. + * Fix memory and thread problems in jack emulation. + * Simplification of state changes. Should make more use + cases work in the jack emulation. + * Improvements in the gstreamer elements. Removal of + extra internal queue. pipewiresink can now be used to + play audio. + * Add pw-jack and pw-pulse scripts to run pulseaudio and + jack applications with the right library path. + +- Replace libpulse* replacement packages with a single + pipewire-libpulse-0_3 package that includes all libraries + installed in the non-standard directory + %{_libdir}/pipewire-0.3/pulse and a new pw-pulse wrapper script. + Likewise for the jack replacement libraries in a new + pipewire-libjack-0_3 package. + +- Use update-alternatives for the wrapper scripts. + +------------------------------------------------------------------- Old: ---- pipewire-0.3.2.obscpio New: ---- do-not-use-snd_pcm_ioplug_hw_avail.patch pipewire-0.3.5.obscpio pipewire-rpmlintrc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pipewire.spec ++++++ --- /var/tmp/diff_new_pack.Z44jGZ/_old 2020-05-26 17:15:51.823526801 +0200 +++ /var/tmp/diff_new_pack.Z44jGZ/_new 2020-05-26 17:15:51.827526810 +0200 @@ -17,21 +17,30 @@ # -%define libpipewire libpipewire-0_3-0 -%define sover 0_3_2 +%define _use_internal_dependency_generator 0 + +%global provfind sh -c "grep -v -e 'libpulse.*\\.so' -e 'libjack.*\\.so' | %__find_provides" +%global __find_provides %provfind + +%define sover 0_3_5 %define apiver 0.3 +%define apiver_str 0_3 %define spa_ver 0.2 %define spa_ver_str 0_2 +%define libpipewire libpipewire-%{apiver_str}-0 + Name: pipewire -Version: 0.3.2 +Version: 0.3.5 Release: 0 Summary: A Multimedia Framework designed to be an audio and video server and more License: MIT Group: Development/Libraries/C and C++ URL: https://pipewire.org/ Source0: %{name}-%{version}.tar.xz +Source1: %{name}-rpmlintrc Patch0: fix-memfd_create-call.patch +Patch1: do-not-use-snd_pcm_ioplug_hw_avail.patch BuildRequires: doxygen BuildRequires: fdupes @@ -104,12 +113,14 @@ This package provides the PipeWire shared library. -%package -n libjack-pw%{sover} -Summary: A Multimedia Framework designed to be an audio and video server and more +%package libjack-%{apiver_str} +Summary: PipeWire libjack replacement libraries License: MIT Group: Development/Libraries/C and C++ +Requires(post): update-alternatives +Requires(postun): update-alternatives -%description -n libjack-pw%{sover} +%description libjack-%{apiver_str} PipeWire is a server and user space API to deal with multimedia pipelines. Some of its features include: @@ -120,51 +131,17 @@ * GStreamer plugins for easy use and integration in current applications; * Sandboxed applications support. -This package provides the PipeWire shared library. - - -%package -n libpulse-mainloop-glib-pw%{sover} -Summary: A Multimedia Framework designed to be an audio and video server and more -License: LGPL-2.1-or-later -Group: Development/Libraries/C and C++ - -%description -n libpulse-mainloop-glib-pw%{sover} -PipeWire is a server and user space API to deal with multimedia pipelines. - -Some of its features include: - - * Capture and playback of audio and video with minimal latency; - * Real-time Multimedia processing on audio and video; - * Multiprocess architecture to let applications share multimedia content; - * GStreamer plugins for easy use and integration in current applications; - * Sandboxed applications support. +This package provides the PipeWire replacement libraries for libjack. -This package provides the PipeWire shared library. -%package -n libpulse-pw%{sover} +%package libpulse-%{apiver_str} Summary: A Multimedia Framework designed to be an audio and video server and more License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ +Requires(post): update-alternatives +Requires(postun): update-alternatives -%description -n libpulse-pw%{sover} -PipeWire is a server and user space API to deal with multimedia pipelines. - -Some of its features include: - - * Capture and playback of audio and video with minimal latency; - * Real-time Multimedia processing on audio and video; - * Multiprocess architecture to let applications share multimedia content; - * GStreamer plugins for easy use and integration in current applications; - * Sandboxed applications support. - -This package provides the PipeWire shared library. - -%package -n libpulse-simple-pw%{sover} -Summary: A Multimedia Framework designed to be an audio and video server and more -License: LGPL-2.1-or-later -Group: Development/Libraries/C and C++ - -%description -n libpulse-simple-pw%{sover} +%description libpulse-%{apiver_str} PipeWire is a server and user space API to deal with multimedia pipelines. Some of its features include: @@ -274,6 +251,10 @@ %patch0 -p1 %endif +%if %{pkg_vcmp alsa-devel < 1.2.2} +%patch1 -p1 +%endif + %build %if %{pkg_vcmp gcc < 8} export CC=gcc-9 @@ -285,11 +266,26 @@ -Dffmpeg=true \ -Dsystemd=true \ -Dvulkan=true \ + -Dtest=true \ + -Daudiotestsrc=true \ %{nil} %meson_build %install %meson_install + +mkdir -p %{buildroot}%{_sysconfdir}/alsa/conf.d/ +for filename in 50-pipewire.conf \ + 99-pipewire-default.conf ; do + cp -a pipewire-alsa/conf/"$filename" %{buildroot}%{_sysconfdir}/alsa/conf.d/ +done + +mkdir -p %{buildroot}%{_sysconfdir}/alternatives +for wrapper in pw-pulse pw-jack ; do + mv %{buildroot}%{_bindir}/$wrapper %{buildroot}%{_bindir}/$wrapper-%{apiver} + ln -s -f %{_sysconfdir}/alternatives/$wrapper %{buildroot}%{_bindir}/$wrapper +done + %fdupes -s %{buildroot}/%{_datadir}/doc/pipewire/html %check @@ -298,17 +294,21 @@ %post -n %{libpipewire} -p /sbin/ldconfig %postun -n %{libpipewire} -p /sbin/ldconfig -%post -n libjack-pw%{sover} -p /sbin/ldconfig -%postun -n libjack-pw%{sover} -p /sbin/ldconfig - -%post -n libpulse-mainloop-glib-pw%{sover} -p /sbin/ldconfig -%postun -n libpulse-mainloop-glib-pw%{sover} -p /sbin/ldconfig +%post libpulse-%{apiver_str} +%{_sbindir}/update-alternatives --install %{_bindir}/pw-pulse pw-pulse %{_bindir}/pw-pulse-%{apiver} 20 -%post -n libpulse-pw%{sover} -p /sbin/ldconfig -%postun -n libpulse-pw%{sover} -p /sbin/ldconfig - -%post -n libpulse-simple-pw%{sover} -p /sbin/ldconfig -%postun -n libpulse-simple-pw%{sover} -p /sbin/ldconfig +%postun libpulse-%{apiver_str} +if [ ! -e %{_bindir}/pw-pulse-%{apiver} ] ; then + %{_sbindir}/update-alternatives --remove pw-pulse %{_bindir}/pw-pulse-%{apiver} +fi + +%post libjack-%{apiver_str} +%{_sbindir}/update-alternatives --install %{_bindir}/pw-jack pw-jack %{_bindir}/pw-jack-%{apiver} 20 + +%postun libjack-%{apiver_str} +if [ ! -e %{_bindir}/pw-jack-%{apiver} ] ; then + %{_sbindir}/update-alternatives --remove pw-jack %{_bindir}/pw-jack-%{apiver} +fi %files %{_bindir}/pipewire @@ -323,26 +323,37 @@ %dir %{_libdir}/alsa-lib %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so +%dir %{_datadir}/alsa/alsa.conf.d +%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf +%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf +%dir %{_sysconfdir}/alsa +%dir %{_sysconfdir}/alsa/conf.d +%config(noreplace) %{_sysconfdir}/alsa/conf.d/50-pipewire.conf +%config(noreplace) %{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf %files -n %{libpipewire} %license LICENSE COPYING %doc README.md %{_libdir}/libpipewire-%{apiver}.so.* -%files -n libjack-pw%{sover} -%{_libdir}/libjack-pw.so.* - -%files -n libpulse-mainloop-glib-pw%{sover} -%license pipewire-pulseaudio/LICENSE -%{_libdir}/libpulse-mainloop-glib-pw.so.* - -%files -n libpulse-pw%{sover} -%license pipewire-pulseaudio/LICENSE -%{_libdir}/libpulse-pw.so.* +%files libjack-%{apiver_str} +%dir %{_libdir}/pipewire-%{apiver}/jack +%{_libdir}/pipewire-%{apiver}/jack/libjack.so* +%{_libdir}/pipewire-%{apiver}/jack/libjacknet.so* +%{_libdir}/pipewire-%{apiver}/jack/libjackserver.so* +%ghost %{_sysconfdir}/alternatives/pw-jack +%{_bindir}/pw-jack-%{apiver} +%{_bindir}/pw-jack -%files -n libpulse-simple-pw%{sover} +%files libpulse-%{apiver_str} %license pipewire-pulseaudio/LICENSE -%{_libdir}/libpulse-simple-pw.so.* +%dir %{_libdir}/pipewire-%{apiver}/pulse +%{_libdir}/pipewire-%{apiver}/pulse/libpulse.so* +%{_libdir}/pipewire-%{apiver}/pulse/libpulse-simple.so* +%{_libdir}/pipewire-%{apiver}/pulse/libpulse-mainloop-glib.so* +%ghost %{_sysconfdir}/alternatives/pw-pulse +%{_bindir}/pw-pulse-%{apiver} +%{_bindir}/pw-pulse %files -n gstreamer-plugin-pipewire %{_libdir}/gstreamer-1.0/libgstpipewire.so @@ -355,8 +366,17 @@ %{_bindir}/pw-cat %{_bindir}/pw-play %{_bindir}/pw-record +%{_bindir}/pw-metadata +%{_bindir}/pw-mididump +%{_bindir}/pw-midiplay +%{_bindir}/pw-midirecord %{_mandir}/man1/pw-cli.1%{ext_man} %{_mandir}/man1/pw-mon.1%{ext_man} +%{_mandir}/man1/pw-cat.1%{ext_man} +%{_mandir}/man1/pw-dot.1%{ext_man} +%{_mandir}/man1/pw-metadata.1%{ext_man} +%{_mandir}/man1/pw-mididump.1%{ext_man} +%{_mandir}/man1/pw-profiler.1%{ext_man} %files spa-tools %{_bindir}/spa-inspect @@ -392,6 +412,8 @@ %{_libdir}/spa-%{spa_ver}/v4l2/libspa-v4l2.so %{_libdir}/spa-%{spa_ver}/videoconvert/libspa-videoconvert.so %{_libdir}/spa-%{spa_ver}/vulkan/libspa-vulkan.so +%{_libdir}/spa-%{spa_ver}/audiotestsrc/libspa-audiotestsrc.so +%{_libdir}/spa-%{spa_ver}/test/libspa-test.so %dir %{_libdir}/spa-%{spa_ver} %dir %{_libdir}/spa-%{spa_ver}/alsa @@ -405,13 +427,11 @@ %dir %{_libdir}/spa-%{spa_ver}/v4l2 %dir %{_libdir}/spa-%{spa_ver}/videoconvert %dir %{_libdir}/spa-%{spa_ver}/vulkan +%dir %{_libdir}/spa-%{spa_ver}/audiotestsrc +%dir %{_libdir}/spa-%{spa_ver}/test %files devel %{_libdir}/libpipewire-%{apiver}.so -%{_libdir}/libjack-pw.so -%{_libdir}/libpulse-mainloop-glib-pw.so -%{_libdir}/libpulse-pw.so -%{_libdir}/libpulse-simple-pw.so %{_libdir}/pkgconfig/libpipewire-%{apiver}.pc %{_libdir}/pkgconfig/libspa-%{spa_ver}.pc %{_includedir}/pipewire-%{apiver}/ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Z44jGZ/_old 2020-05-26 17:15:51.883526930 +0200 +++ /var/tmp/diff_new_pack.Z44jGZ/_new 2020-05-26 17:15:51.887526940 +0200 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="disabled"> <param name="scm">git</param> <param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param> - <param name="revision">0.3.2</param> + <param name="revision">0.3.5</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ do-not-use-snd_pcm_ioplug_hw_avail.patch ++++++ From: Antonio Larrosa <[email protected]> Subject: Fix build with old alsa-devel Revert part of https://github.com/PipeWire/pipewire/commit/c658574c0119d3a1f199fe17091fc4d5f37f1e71 since the alsa version in SLE/Leap doesn't have a snd_pcm_ioplug_hw_avail function. Index: pipewire-0.3.5/pipewire-alsa/alsa-plugins/pcm_pipewire.c =================================================================== --- pipewire-0.3.5.orig/pipewire-alsa/alsa-plugins/pcm_pipewire.c +++ pipewire-0.3.5/pipewire-alsa/alsa-plugins/pcm_pipewire.c @@ -192,7 +192,6 @@ snd_pcm_pipewire_process_playback(snd_pc index = 0; avail = maxsize - filled; avail = SPA_MIN(avail, pw->min_avail * bpf); - avail = SPA_MIN(avail, *hw_avail * bpf); do { offset = index % maxsize; @@ -236,7 +235,8 @@ snd_pcm_pipewire_process_playback(snd_pc pw->hw_ptr -= pw->boundary; xfer += frames; } - *hw_avail -= xfer; + + pcm_poll_unblock_check(io); /* unblock socket for polling if needed */ done: index += nbytes; @@ -271,7 +271,7 @@ snd_pcm_pipewire_process_record(snd_pcm_ d = b->buffer->datas; maxsize = d[0].chunk->size; - avail = SPA_MIN(maxsize, *hw_avail * bpf); + avail = maxsize; index = d[0].chunk->offset; do { @@ -309,7 +309,9 @@ snd_pcm_pipewire_process_record(snd_pcm_ pw->hw_ptr -= pw->boundary; xfer += frames; } - *hw_avail -= xfer; + + pcm_poll_unblock_check(io); /* unblock socket for polling if needed */ + avail -= nbytes; index += nbytes; } while (avail > 0); @@ -355,9 +357,6 @@ static void on_stream_process(void *data snd_pcm_pipewire_t *pw = data; snd_pcm_ioplug_t *io = &pw->io; struct pw_buffer *b; - snd_pcm_uframes_t hw_avail; - - hw_avail = snd_pcm_ioplug_hw_avail(io, pw->hw_ptr, io->appl_ptr); if (pw->drained) { pcm_poll_unblock_check(io); /* unblock socket for polling if needed */ @@ -369,13 +368,13 @@ static void on_stream_process(void *data return; if (io->stream == SND_PCM_STREAM_PLAYBACK) - snd_pcm_pipewire_process_playback(pw, b, &hw_avail); + snd_pcm_pipewire_process_playback(pw, b, 0L); else - snd_pcm_pipewire_process_record(pw, b, &hw_avail); + snd_pcm_pipewire_process_record(pw, b, 0L); pw_stream_queue_buffer(pw->stream, b); - if (io->state == SND_PCM_STATE_DRAINING && !pw->draining && hw_avail == 0) { + if (io->state == SND_PCM_STATE_DRAINING && !pw->draining == 0) { pw_stream_flush(pw->stream, true); pw->draining = true; pw->drained = false; ++++++ pipewire-0.3.2.obscpio -> pipewire-0.3.5.obscpio ++++++ ++++ 24148 lines of diff (skipped) ++++++ pipewire-rpmlintrc ++++++ # .so files in pipewire-libjack and pipewire-libpulse aren't # really devel files addFilter("devel-file-in-non-devel-package.*/jack/libjack") addFilter("devel-file-in-non-devel-package.*/pulse/libpulse") ++++++ pipewire.obsinfo ++++++ --- /var/tmp/diff_new_pack.Z44jGZ/_old 2020-05-26 17:15:52.415528084 +0200 +++ /var/tmp/diff_new_pack.Z44jGZ/_new 2020-05-26 17:15:52.419528093 +0200 @@ -1,5 +1,5 @@ name: pipewire -version: 0.3.2 -mtime: 1585222494 -commit: f0f3a0a66032cf693a979dae6187cac07fa353ee +version: 0.3.5 +mtime: 1589196932 +commit: ba215efed0da8d6c9f3f2414d76a8e2c75352501
