commit 658ef7dbf1cb75fe2549db11db2e3115f76334d7 Author: Adrian Schröter Date: Sat Feb 10 20:14:05 2024 +0100 Sync from SUSE:ALP:Source:Standard:1.0 pipewire revision 950fa7e0521e519ab16990810e14feac diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/_service b/_service new file mode 100644 index 0000000..c984b45 --- /dev/null +++ b/_service @@ -0,0 +1,20 @@ + + + + git + https://gitlab.freedesktop.org/pipewire/pipewire.git + 1.0.3 + @PARENT_TAG@ + + + + + *.tar + xz + + + + diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..9057fd1 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,14 @@ +libpipewire-0_3-0 + requires "pipewire-spa-plugins-0_2- = " + requires "pipewire-modules-0_3- = " +pipewire-alsa + requires "libpipewire-0_3-0- = " +pipewire-libjack-0_3 + requires "libpipewire-0_3-0- = " +pipewire-modules-0_3 + requires "libpipewire-0_3-0- = " + provides "pipewire-modules- = " + obsoletes "pipewire-modules- < " +pipewire-spa-plugins-0_2 + requires "libpipewire-0_3-0- = " + diff --git a/pipewire-1.0.3.obscpio b/pipewire-1.0.3.obscpio new file mode 100644 index 0000000..5b90d20 --- /dev/null +++ b/pipewire-1.0.3.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab709313076d865cb51f77d81a92afcf40f99d7a3967f912a2497698db738307 +size 12437517 diff --git a/pipewire.changes b/pipewire.changes new file mode 100644 index 0000000..ca3e32e --- /dev/null +++ b/pipewire.changes @@ -0,0 +1,6874 @@ +------------------------------------------------------------------- +Sat Feb 3 16:44:06 UTC 2024 - Alexei Sorokin + +- Update to version 1.0.3: + * Highlights + - Fix ALSA version check. This should allow the alsa plugin to + work again. + - Some small fixes and improvements. + * PipeWire + - Escape @DEFAULT_SINK@ in the conf files. + * Modules + - Improve logging in module-pipe-tunnel. + * SPA + - Always recheck rate matching in ALSA when moving drivers. + This fixes a potential issue where the adaptive resampler + would not be activated in some cases. + * ALSA + - Fix ALSA version check. This should allow the alsa plugin to + work again. + +------------------------------------------------------------------- +Wed Jan 31 15:45:16 UTC 2024 - Antonio Larrosa + +- Update to version 1.0.2: + * Highlights + - Fix v4l2 enumeration with filter. This should fix negotiation + in some GStreamer pipelines with capsfilter. Also probe for + EXPBUF support before using it. + - Fix max-latency property and Buffer param when dealing with + small ALSA device buffers. This should fix stuttering with + some AMD based soundcards. + - More small cleanups an improvements. + * Modules + - Improve netjack2 channel positions. + - Improve RAOP module state after suspend/resume. (#3778) + - Avoid crash in some LV2 plugins by configuring the Atom + ports. (#3815) + * SPA + - Bump libcamera requirements to 0.2.0. + - Try to avoid unaligned load exceptions. (#3790) + - Fix v4l2 enumeration with filter. (#1793) + - Fix max-latency property and Buffer param when dealing with + small ALSA device buffers. This should fix stuttering with + some AMD based soundcards. (#3744,#3622) + - Add a resync.ms option to node.driver to make it possible to + resync fast to clock jumps. + - Probe for EXPBUF support in v4l2 before using it. (#3821) + * pulse-server + - Also emit change events when the port list change. + * Bluetooth + - Log a more verbose explanation when other soundservers seem + to be interfering with bluetooth. + - Add quirks for Rockbox Brick. (#3786) + - Add quirks for SoundCore mini2. (#2927) + * JACK + - Improve check for the running state of clients. (#3794) +- Drop patches already included by upstream: + * 0001-spa-libcamera-use-CameraConfigurationorientation.patch + * 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch + +------------------------------------------------------------------- +Mon Jan 22 11:34:04 UTC 2024 - Antonio Larrosa + +- Add patches from upstream to fix building the package in Factory + with libcamera 0.2.0: + * 0001-spa-libcamera-use-CameraConfigurationorientation.patch + * 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch + +------------------------------------------------------------------- +Thu Jan 11 11:09:02 UTC 2024 - Antonio Larrosa + +- Update to version 1.0.1: + * Highlights + - Work around the buggy ALSA backend in libcanberra by forcing + the pulse backend in module-x11-bell. + - Fix a race in the device info updates in pulse-server. + - Fix timing and rate matching in ALSA sequencer. + - Improve timing information in JACK and from the ALSA driver. + - More small fixes and improvements. + * PipeWire + - Fix a build issue when examples where disabled. + - Avoid some compiler warnings. + - Avoid some bitfield data races. (#3706) + * Modules + - Bump the PTP driver priority. (#3217) + - Support the previous "allowed" permission in the access + module. + - Fix filename leak in module-filter-chain. + - Work around the buggy ALSA backend in libcanberra by forcing + the pulse backend in module-x11-bell. (#3688) + - Fix a race in the device info updates in pulse-server. + - Fix compatibility in RAOP. (#3698) + * SPA + - Handle ALSA picth control errors correctly + - Clamp buffer-frames correctly. (#3000) + - Fix timing and rate matching in ALSA sequencer. (#3657) + - Revert a commit that could result in current time in the + future in the timing updates. + - Improve adapter state checks. + - Remove the timer from the ALSA pcm. + - Fix timeout in freewheel driver. + * Pulse-server + - Also handle active ports for monitor sources. + - Fix zeroconf-publish format properties. + * JACK + - Improve timing and transport calculations. + - Handle -ENOENT from the core and don't error out. + * GStreamer + - Handle node port removal in the device provider. (#3708) + - Improve error handling while connecting. + - Fix dts_offset. + +------------------------------------------------------------------- +Sun Nov 26 10:39:13 UTC 2023 - Antonio Larrosa + +- Update to version 1.0.0 (El Presidente): + * Highlights + - Fix a memfd/dmabuf leak when uploading buffers while shutting + down. + - Handle concurrent jack_port_get_buffer() calls because ardour + seems to be doing this. + - Improve time reporting (less jitter) in ALSA when using IRQ. + - Many doc improvements. + * PipeWire + - Respect PIPEWIRE_DLCLOSE everywhere, remove pw_in_valgrind(). + - Remove a warning when a client tries to change ignored + properties. + * Modules + - Fix a memfd/dmabuf leak when uploading buffers while shutting + down. + - Fix a potential segfault when copying mix structures. (#3658) + - Avoid races in setrlimit in module-rt. + - Fix a memory leak in filter-chain. + - Set rtp.ptime on senders, not receivers. + - The ROC modules were ported to ROC 0.3 + * SPA + - Improve time reporting (less jitter) in ALSA when using IRQ. + (#3657) + - Add latency param query in libcamera. + - Fix some compiler warnings. + - The EVL plugin was updated. + * Bluetooth + - LC3 codec and compatibility improvements. + * Pulse server + - Fix emission of events when a sink/source state changes. + (#3660) + * JACK + - Improve transport and time handling. Use unique ids to make + consistent snapshots of the current time and transport. + - Avoid enumerating port params that we are not going to use. + - Optimize buffer reuse. + - Handle concurrent jack_port_get_buffer() calls because ardour + seems to be doing this. (#3632) + * Docs + - Many doc improvements. + - Add man pages for pw-dump, pw-loopback, modules, + pipewire-pulse. + - Manpages are now made with Doxygen. + - Add docs for pulse-modules + +------------------------------------------------------------------- +Thu Nov 16 15:26:42 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.85 (1.0RC5): + * Highlights + - Fix an issue where a link could end up paused while not + negotiated. + - Fix an infinite recursion issue when finding runnable nodes. + - Support XDG base directories when loading ACP config. + - Fix MIDI event recording preview in Ardour. + - Many more small fixes, cleanups and improvements. + * PipeWire + - Fix an issue where a link could end up paused while not + negotiated. (#3619) + - Fix an infinite recursion issue when finding runnable nodes + by stopping the scan on feedback links around the driver. + (#3621) + - The system service now has better socket permissions. + * Modules + - Add support for uclamp. This allows the scheduler to make + better informed decisions about where tasks should be placed, + and what pstate to set for the CPU it is running on. + - Emit warnings when applications are not doing the right + locking instead of crashing. + - Improve media.name for RAOP sinks. (#3801) + - Support pause/resume in pipe-tunnel. (#3197) + - Remove time rlimit when probing for realtime to avoid + SIGXCPU. + * SPA + - Fix a bug where the resampler would be activated even when + there is an ALSA pitch element. (#3628) + - Improve resume from suspend in ALSA. (#3646) + - Add option to expose ALSA controls as prop params. + - Support XDG base directories when loading ACP config. This + makes it possible to override the ACP config files. + * Bluetooth + - Schedule nodes in the same ISO group together. + - More BAP fixes and cleanups. + * JACK + - Fix MIDI events from peer ports. This makes the MIDI event + recording preview of Ardour work correctly. + * GStreamer + - Fix some error handling in the source and sink. + * ALSA plugin + - Improve poll descriptor handling. (#3648) + * Docs + - Many improvements to the layout and organization. + +------------------------------------------------------------------- +Thu Nov 2 11:44:33 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.84 (1.0RC4): + * Highlights + - Fix a regression with openal because the queued buffers in + the stream were not reported correctly. + - Fix a bug in port busy counters that could cause random + silent links. + - Fix a regression in echo-cancel because it was not reporting + its streams as ASYNC. + - Fix a JACK regression where not all ports were enumerated in + all cases. + - Many more fixes and improvements. + * PipeWire + - pw_stream now reports the queued buffers more accurately. + This fixes a regression when using openal. (#3592) + - The port busy counters were not updated correctly in some + cases. This could lead to negotiation errors and silent + links. (#3547) + - Ignore latency maximum when forcing rate/quantum. (#3613) + - Nodes can now be added to multiple groups and link-groups. + (#3612) + * Modules + - The filter-chain now also handles notify port dependencies + correctly. (#3596) + - Filter-chain has support for new linear, clamp, recip, exp, + log, mult, sine builtin plugins. + - The echo-cancel module now correctly reports its playback and + capture streams as ASYNC to avoid running out of buffers. + (#3593) + - It is now possible to specify an array of remote names to + connect to with the native protocol. + - module-rtp-sap and module-rtp-sink now try to bind to the + specified interface. + * SPA + - The alsa plugin now removes the runtime properties such as + period-num, period-size and max-latency when suspended. + (#3613) + * Bluetooth + - BAP Locations/Context is now set on endpoints as required by + new bluez. + - Improve selection of BAP leader. + * JACK + - Add a jack_set_sample_rate() extension function. + - Make sure we get the info of all nodes/ports before + completing the jack_client_open() operation so that we can + enumerate the ports correctly in all cases. (#3618) + * GStreamer + - Fix types of metadata in pipewiresink. + - Also copy metadata in buffers in all cases. + - Fix size allocation in bufferpool for compressed formats. + - Don't stop streaming thread when unlinked. (#3620) + * ALSA + - The ALSA plugin now handles NULL values from mmap_areas. + (#3600) + +------------------------------------------------------------------- +Mon Oct 30 16:49:02 UTC 2023 - Antonio Larrosa + +- Disable the WebRTC-based echo canceller in big endian + architectures since webrtc-audio-processing is not available + there. + +------------------------------------------------------------------- +Thu Oct 19 15:30:51 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.83: + * Highlights + - A quantum change regression was fixed. + - Use a 2 socket server now for the manager and the + applications with (when wireplumber is updated) different + permissions. + - Reduce memory usage a little in audioconvert and use fewer + buffers. + - Some JACK deadlocks were fixed. + - More bugfixes and improvements. + * PipeWire + - Fix quantum change regression. + - Use a 2 socket server by default. One for the session-manager + and one for applications. + - Fix a potential use-after-free in node and device cleanup. + * modules + - Some hardcoded buffer size limits were removed. + - Fix ASYNC flag on combined-streams. + - Add support for on-demand combined-streams using metadata. + * SPA + - alsa-udev will now ignore PCMs with the ACP_IGNORE udev + environment variable. + - The audioadapter now uses at least 2 buffers when the + follower is async. + - The number of buffers used by plugins was tweaked a little. + Most plugins now only ask 1 buffer. + - Memory usage in audioconvert was reduced. + - Fix some unaligned reads and writes and undefined left shifts + reported by ASAN. + - Rework vulkan dependency checking. + - Don't try to link ALSA devices when prepare fails. This + fixes some crashes. + - Fix a stall when the allowed codecs are changed in ALSA. + - Improve ALSA rate control for sources to avoid xruns. + - Try to fix IEC958 TrueHD and DTS playback. + * Bluetooth + - Improve fallback SCO mtu when the kernel doesn't tell us. + * JACK + - The fixed buffer size limit was removed. + - Add an option to make input buffers writable (default true). + - A potential deadlock was fixed when applications lock the + process function. + - Use a separate thread to dispatch notifications to avoid + deadlocks. + - Potentially fix silent export in ardour in some cases. + +------------------------------------------------------------------- +Fri Oct 13 14:10:56 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.82: + * Highlights + - Fix a regression in some devices when the Pro-Audio profile + was selected. + Only enable the IRQ based scheduling and device linking in + specific safe cases. + - Improve rate switching. In some cases the graph rate would + not switch correctly. + - Fix regression in alsa wakeups that would cause silence in + VMs. + - Fix a leak in the SBC codecs for SCO. + - More improvements to the RAOP module. + - Other small improvements and fixes. + * PipeWire + - Improve client property checks. + - Allow non-power-of-2 quantums when forced. + - Improve rate switching. In some cases the graph rate would + not switch correctly. + - The PIPEWIRE_QUANTUM env variable now forces the size and + rate in the graph for the duration of the application. + The softer PIPEWIRE_LATENCY and PIPEWIRE_RATE can still be + used to merely suggest a maximum latency and a rate. + * modules + - Remove the RTSP FLUSH request in RAOP because it does not + seem necessary. + - The RAOP module now uses the common RTP stream functions. + - Add sockets option to protocol-native to make pipewire listen + on multiple sockets. + * SPA + - Clean up some of the log functions. + - Add an option in ALSA to disable linking devices together. + - Only link pcms together when 1 capture and 1 playback pcm. + For more complex devices we can't be sure which ones can be + linked. + - Disable tsched only when using linked devices. + - Add some extra checks in ALSA to avoid segfaults. + - Add Tag support to alsa-sink and alsa-source. + - Use dynamic pod builder when we can. + - Set priority.driver on midi-bridge to allow it as a fallback + driver. + - Fix regression in alsa wakeups. + - The PTP clock can now be found from the interface in + node-driver. + * pulse-server + - Some small cleanups and internal improvements. + - Add some memory debugging messages. + - Add Tag messages to streams. + * Bluetooth + - Fix a leak in the SBC codecs for SCO. + * JACK + - Patch up midi events in the destination buffer instead of + writing to the source buffer. + - Group all jack clients together to avoid transport issues. + * ALSA-plugins + - Add also.deny option to block alsa clients from opening the + PCM. +- Drop patches already included upstream: + * 0001-alsa-add-api.alsa.auto-link-option.patch + * 0002-acp-fix-compilation.patch + * 0003-acp-only-join-and-link-when-1-capture-and-1-playback.patch + * 0004-acp-only-disable-tsched-when-linking.patch + * 0001-alsa-dont-check-early-wakeup-when-PCM-stopped.patch + +------------------------------------------------------------------- +Fri Oct 13 08:33:28 UTC 2023 - Antonio Larrosa + +- Add patches from upstream that fix pro-audio not producing any + sound in 0.3.81: + * 0001-alsa-add-api.alsa.auto-link-option.patch + * 0002-acp-fix-compilation.patch + * 0003-acp-only-join-and-link-when-1-capture-and-1-playback.patch + * 0004-acp-only-disable-tsched-when-linking.patch +- Add patch from upstream that fixes issues when PCM is stopped, + which includes fixing sound in qemu: + * 0001-alsa-dont-check-early-wakeup-when-PCM-stopped.patch + +------------------------------------------------------------------- +Mon Oct 9 11:34:40 UTC 2023 - Antonio Larrosa + +- Pipewire now requires vulkan 1.3, so we have to disable vulkan + support if this requirement is not fulfilled in order to build + correctly in Leap. + +------------------------------------------------------------------- +Sat Oct 7 15:11:14 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.81: + * Highlights + - jackdbus support is now enabled by default. + - IRQ based scheduling in ALSA was improved and enabled by + default for Pro-Audio profile. It will also link the pcms + together to get lower latency. This now matches what JACK + does and gives equal latency to PipeWire for Pro-Audio + profiles. + - Support both old and new versions of webrtc-audio-processing + to make the transition easier. + - Forced quantum changes by nodes or metadata will now also + force a suspend and resume of the graph, like the rate + changes to make sure all nodes adapt to the new quantum. + This is important for Pro-Audio nodes that need to + reconfigure the hardware to a new period in IRQ-based + scheduling. + - Fix a regression in regex parsing. + - Many bugfixes and improvements. + * PipeWire + - jackdbus is by default enabled now. The idea is that when + jackdbus is installed, the real libjack.so is in the path and + we can become a real JACK client. + - Forces quantum changes by nodes or metadata will now also + force a suspend and resume in the graph, like the rate + changes to make sure all nodes adapt to the new quantum. + This is important for Pro-Audio nodes that need to + reconfigure the hardware to a new period. + - The stream now has an EARLY_PROCESS option that can be used + to implement custom buffer fill levels. + - Fix a regression in regex parsing. + - Fix a bug in position reporting in the driver node. + - Destroying a link will now recalculate the graph correctly. + - Fix the rate comparison for finding the best rate in the + graph. + - Use malloc_trim() when available to release memory. + * Tools + - pw-cat now supports DFF DSD files. + - pw-cli avoid some NULL derefs in some cases. + * Modules + - The RAOP sink has seen some cleanups and improvements. + It will now ask for feedback every 2 seconds to keep some + devices alive. + - A bug in filter-chain was fixed where it would fail to apply + the gain when when mixing just one source. + - The filter-chain can now pass the stream volume to a control + in the filter-chain graph. + - Improve volume handling in RAOP sink. + * Pulse-server + - Some cleanup in the pending_stream handling. + - Fix a regression in the event emission code where it failed + to emit a changed event when a node was linked. + - Lower the realtime priority of pulseaudio clients. + - Set pulse.module.id on the echo-cancel streams. + * SPA + - Support both old and new versions of webrtc-audio-processing + to make the transition easier. + - The ALSA driver now does the synch of all followers directly + from the wakeup event. This results in more stable rate + matching. + - IRQ based scheduling in ALSA was improved and enabled by + default for Pro-Audio profile. It will also link the pcms + together to get lower latency. This now matches what JACK + does and gives equal latency to PipeWire for Pro-Audio + profiles. + - GNU/Hurd support was added. + - Some improvements to passthrough handling. + * Bluetooth + - Improvements to the codec handling when PipeWire is used as + Audio Gateway. + - Adapt to new Bluez API for BAP devices. + * JACK + - When the jack library is set in the default library path, + avoid using LD_LIBRARY_PATH because this can cause confusion. + - Handle clearing the latency on a port. + - jack_property now always manages to actually change the + metadata because it waits for a roundtrip before exiting. + +------------------------------------------------------------------- +Thu Sep 14 12:01:09 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.80: + * Highlights + - A new Tag param was added that allows arbitrary metadata to + be transported out-of-band in the graph. + - Vulkan DMA buf support was merged. + - The echo-canceller was ported to webrtc-audio-processing-1. + - Fix a regression in locating monitor sources by id in + pulse-server. + - Mixer io areas updates are now synchronized correctly with + the data thread to avoid potential crashes. + - Many more bugfixes and improvements. + * PipeWire + - Handle driver nodes that refuse to change the quantum or + rate. + - A new Tag param was added that allows arbitrary metadata to + be transported out-of-band in the graph. + * Modules + - The pipe-tunnel source has been reworked to use a ringbuffer + and rate adaption to keep the latency constant. It can now + also function as a driver to reduce resampling. (#3478) + * Tools + - pw-cat will now place media properties in Tag params. + - pw-mon can now filter props and params. + * SPA + - ALSA refuses to change quantum and rate when in IRQ mode. + - ALSA will now be smarter in selecting the period size for + batch devices and will make it depend on the samplerate. + (#3444) + - Vulkan DMA buf support was merged. + - ALSA latency will now be reported in the time domain of the + graph. + - Add udev based autodetection for compress-offload devices. + - The echo-canceller was ported to webrtc-audio-processing-1. + - The v4l2 inotify code was rewritten to avoid a use-after-free + and by using a separate watch (but same fd) for each device. + (#3439) + - The tag and latency handling was improved in audioadpter. + - Don't use -Ofast on alpha because it can crash on + denormalized values. (#3489) + - The mixers now synchronize spa_io_buffers updates with the + data thread to avoid crashes. + - Handle NULL param updates. (#3504) + * Pulse-server + - Fix a regression in locating monitor sources by id. (#3476) + - Add support for use_system_clock_for_timing in + module-pipe-sink. + - Add support for checking module arguments. + - Avoid some useless change events. + * Bluetooth + - Ports are now marked as physical, which makes the bluetooth + devices show up as hardware devices in Ardour and other JACK + apps. (#3418) + - Some fixes for LE audio support (#3479) + * JACK + - Also emit unregister notify even when suppressed when + creating the client. + - The notify callbacks now match JACK2 behaviour more. + - The mixer io areas are updated and handled safely now to + avoid crashes. (#3506) +- Drop patches already included upstream: + * 0001-pulse-server-allow-monitors-when-selecting-source-by-index.patch + * 0001-Revert-v4l2-handle-inotify-errors.patch + * 0002-Revert-v4l2-dont-set-inotify-on-_dev.patch + * 0003-spa-v4l2-use-a-separate-watch-for-each-device.patch + +------------------------------------------------------------------- +Mon Sep 11 09:56:03 UTC 2023 - Antonio Larrosa + +- Add patch from upstream to fix a regression introduced in 0.3.77 + which made it fail to open a monitor device as source: + * 0001-pulse-server-allow-monitors-when-selecting-source-by-index.patch +- Add patch from upstream to fix a bug which caused 100% cpu usage + under some circumstances: + * 0001-Revert-v4l2-handle-inotify-errors.patch + * 0002-Revert-v4l2-dont-set-inotify-on-_dev.patch + * 0003-spa-v4l2-use-a-separate-watch-for-each-device.patch + +------------------------------------------------------------------- +Tue Aug 29 17:32:30 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.79: + * Highlights + - Fix a regression in suspend that could cause silence. + - Fix a regression in JACK port registration that could cause + all kinds of JACK problems. + - Fix a typo in the neon sample conversion functions that could + cause distortion. + - Add BAP broadcast source and sink support. + - pw-top now has a batch mode to dump the output to stdout. + - Many more bugfixes and improvements. + * PipeWire + - Fix a regression in shutdown where a node might not first + suspend properly. This cause loss of sound in some cases. + - Failure to compile a regular expression in the config file + will now be reported and ! can be used to negate the match. + - Fix a regression where some nodes might not set running in + some cases. + - Nodes are now suspended before the format is cleared, which + might fix some crashes. + * Tools + - pw-top now has a batch mode to dump the output to stdout. + * SPA + - The queued samples in audioconvert are now correctly reported + in the delay. + - Make it easier to add a custom profile in ACP. + - Fix a typo in the neon sample conversion functions that could + cause distortion. + - device.profile.pro=true is added for pro audio nodes. + - An xrun counter was added to spa_io_clock to detect and track + skipped data because of xruns. + * Pulse-server + - Add alsa-sink and alsa-source modules. + * Bluetooth + - Fix a regression where only the BAP off profile is shown. + - Add BAP broadcast source and sink support. + * JACK + - Also emit a latency notify when the buffer size changes. + - Fix a regression in JACK port registration. + - jack_port_tie() is now supported. + * ALSA + - Improve property handling, support lists and ranges in + addition to fixed values. +- Remove patches already included upstream: + * 0001-jack-make-sure-we-can-always-find-our-own-ports.patch + * 0001-audioconvert-fix-typo-in-neon-function.patch + * 0001-impl-node-improve-suspend.patch + * 0001-bluez5-fix-BAP-profiles-showing.patch + +------------------------------------------------------------------- +Fri Aug 25 09:15:38 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.78: + * Highlights + - An old regression was fixed with where some nodes would not + run. + - A regression was fixed where removed events would not be + shown in some cases. This would result in duplicate entries + in audio clients. + - Fix an off-by-one in the vban audio receiver. Tweak the rate + adaption a little. + - ACP will now set a UCM verb before probing the pro-audio + devices. + - More bugfixes and improvements. + * PipeWire + - An old regression was fixed with where some nodes would not + run. (#3405) + - Suspend was improved a little to avoid races when the session + manager would suspend right when a driver was starting. + * Modules + - module-rtp-sap does not use the deprecated inet_aton anymore. + - Fix an off-by-one in the vban audio receiver. Tweak the rate + adaption a little. (#3380) + * SPA + - ACP will now set a UCM verb before probing the pro-audio + devices. (#3407) + - The mandatory flag will be set now on the video modifiers. + - EVL was updated to Xenomai4 r46 and xbuf creation was + improved. + - An option was added to force colors in the log even when + logging to !tty. + - The return type of spa_pod_builder_control() was fixed. + - inotify errors are handled better now. (#3439) + * pulse-server + - A regression was fixed where removed events would not be + shown in some cases. (#3414) + * Bluetooth + - Improve compatibility with more devices, avoid reusing the + same transport for different media-sink instances to avoid + encoder resets. + - Improve enumeration of codec profiles for BAP and A2DP. + * JACK + - Ensure we can't iterate ports from a deactivated client. Also + make sure the JACK clients with the node.always-process=false + always show their ports. (#3416) + * GStreamer + - A potential crash was fixed in the device provider when + stopping. +- Remove patches already included upstream: + * 0001-context-Dont-stop-setting-runnable-when-meeting-the-driving.patch + * 0001-gst-Prevent-a-crash-when-stopping-device-provider.patch + * 0001-jack-ports-become-visible-when-the-registration-is-queued.patch + * 0002-jack-handle-node.always-process-=-false-jack-nodes.patch + * 0001-pulse-server-set-all-change_mask-flags-when-removing.patch +- Add patch from upstream to fix jack clients: + * 0001-jack-make-sure-we-can-always-find-our-own-ports.patch +- Add patch from upstream to fix typo in neon function that makes + pipewire produce noise: + * 0001-audioconvert-fix-typo-in-neon-function.patch +- Add patch from upstream to fix (among others) a race when a node + is suspended at the same time it is started causing silence: + * 0001-impl-node-improve-suspend.patch +- Add patch from upstream to fix BAP only showing off profile: + * 0001-bluez5-fix-BAP-profiles-showing.patch + +------------------------------------------------------------------- +Fri Aug 18 12:01:36 UTC 2023 - Antonio Larrosa + +- Fix from upstream to ensure effect and sink nodes are set to + running: + * 0001-context-Dont-stop-setting-runnable-when-meeting-the-driving.patch + +- Fix from upstream to prevent a crash when stopping a device + provider: + * 0001-gst-Prevent-a-crash-when-stopping-device-provider.patch + +- Fix from upstream to fix a regression that makes plugins/effects + disappear in Carla Patchbay when there's no playback: + * 0001-jack-ports-become-visible-when-the-registration-is-queued.patch + * 0002-jack-handle-node.always-process-=-false-jack-nodes.patch + +- Fix from upstream to fix pavucontrol and plasma-pa showing + duplicated sinks after resume or switching audio device profiles + (boo#1214374): + * 0001-pulse-server-set-all-change_mask-flags-when-removing.patch + +------------------------------------------------------------------- +Sat Aug 5 12:23:12 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.77: + * Highlights + - Fix a bug in ALSA source where the available number of + samples was miscaluclated and resulted in xruns in some + cases. + - A new L permission was added to make it possible to force a + link between nodes even when the nodes can't see eachother. + - The VBAN module now supports midi send and receive as well. + - Many cleanups and small fixes. + * PipeWire + - Global objects now only show permissions that apply to them. + The permissions required to perform various API calls are + documented. + - A new L permission was added to make it possible to force a + link between nodes even when the nodes can't see eachother. + - Config files need to end with .conf. + - The client.api is added the to global properties of a node. + * modules + - The VBAN module now supports midi send and receive as well. + - Fix module-profiler alignment and make sure we don't overrun + our buffers with many nodes. + - Protect libcanberra calls with a mutex because it is not + thread safe. + * SPA + - Support older compilers for spa_clear_ptr(). + - Fix a bug in ALSA source where the available number of + samples was miscaluclated and resulted in xruns. + - Don't set inotify on /dev but on the videoX devices directly. + Setting inotify on /dev would cause a lot of spurious wakeups + and lock contention in the fsnotify subsystem on some + benchmarks. + - Audioconvert now rate limits the warnings when it runs out of + buffers. + * pulse-server + - Some bugs and inconsistencies were fixed in device lookup. + - Improve subscribe event emission, detect changes to the sink + or the monitor and send the right sink/source event. + * JACK + - The libjack.so now has a minor version of 3 and a micro + version of the pipewire version. + - JACK clients will now see portregistration from other jack + clients when they activate/deactivate like real JACK. + * bluetooth + - Use some more autoptr cleanups, fix some leaks. + +------------------------------------------------------------------- +Fri Jul 28 10:35:03 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.76: + * Highlights + - Fix a regression that would cause the MPV pipewire backend + to fail because of a spurious thread-loop signal. + - Fix a crash when DBus is not found. + - ALSA hires timestamps are now disabled by default. + - Some more fixes and improvements. + * PipeWire + - A new option was added to pw-thread-loop to signal when the + thread starts. + - This is only used in module-rt to avoid regressions in mpv. + (#3374) + - Fix a compilation problem. + - Stream flags now only set the properties when not already + set. This fixes a regression with node autoconnect. (#3382) + * Tools + - pw-cat will now stop when the stream is disconnected. (#2731) + - Improve the pw-cat man page, mention that stdin/stdout + handling is only on raw data. + * modules + - module-rt will now not crash when dbus is not available but + error out as before. + - A new VBAN (vb-audio.com) sender and receiver was added. + (#3380) + * SPA + - Add an option in audioconvert to disable volume updates. + (#3361) + - ALSA hires timestamps are disabled by default because many + drivers seem to give wrong timestamps and cause extra delay. + * bluetooth + - LE Audio support is now enabled by default when liblc3 is + available now that bluez has support for detecting the + hardware features. + +------------------------------------------------------------------- +Tue Jul 25 08:19:55 UTC 2023 - Antonio Larrosa + +- Add code in the spec file to modify the patch file + reduce-meson-dependency.patch (used to build in SLE/Leap) so that + we don't need to rebase it manually for every version update. +- Use gcc 11 in SLE/Leap since gcc 9 fails to build 0.3.75 with + ../spa/include/spa/utils/cleanup.h:52:13: error: dereferencing pointer to incomplete type ‘DIR’ {aka ‘struct __dirstream’} + 52 | __typeof__(*(ptr)) *_old_value = spa_steal_ptr(ptr); \ + +------------------------------------------------------------------- +Sun Jul 23 01:16:45 UTC 2023 - llyyr + +- Update to version 0.3.75: + * Highlights + - Link permissions between nodes are now enforced. This avoids + potential portal managed screencast nodes to link to the + camera even though it was not assigned permissions to do so + by the session manager (boo#1213682). + - Libcamera and v4l2 devices now have properties so that + duplicates can be filtered out by the session manager. + - A bug with draining was fixed where a buffer would be marked + EMPTY and would not play when it contained drained samples. + - Many fixes and improvements. + * PipeWire + - Permissions for links between nodes are now enforced. The + link will now check that the owner clients of the nodes can + see each other before allowing the link. This avoids + screensharing clients to accidentally being linked to the + camera nodes by the session manager. A side effect is that + patchbay tools will no longer be able to link portal managed + screencast nodes to the camera, for this we need a new + permission for those patchbay clients. + - The stream.rules/filter.rules are now evaluated when + connecting the stream/filter so that more properties can be + matched. + - Move some internal events from the context to the nodes to + better handle per-node threads in the future. + - The thread-loop will now signal when the thread is started. + * modules + - A timestamp workaround in module-raop was reverted because it + does not work in all cases. Instead latency was increased to + 1.5 seconds, which also makes the problematic device in + question work. + - The profiler module was reworked a bit to use the new node + realtime events. It should now also handle dynamically added + and removed drivers. + - The module-rt now does the rtkit calls from a separate thread + so that it does not block the main thread. This could cause + deadlocks during startup in some cases. + * SPA + - Atomic operation macros were move from internal pipewire API + to public API. + - The video-info structure now has a new + SPA_VIDEO_FLAG_MODIFIER_FIXATION_REQUIRED flag to instruct + the application to fixate the modifiers. This simplifies some + logic in applications a lot. + - The libcamera and v4l2 nodes now have properties to enumerate + the device id they are using. This can be used to match v4l2 + devices and libcamera devices and filter out duplicates. + - A bug with draining was fixed where a buffer would be marked + EMPTY and would not + +------------------------------------------------------------------- +Wed Jul 12 10:03:52 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.74: + * Highlights + - Fix a critical bug where audio to bluetooth devices would cut + out randomly. + - Improve RAOP compatibility. + - Avoid crashes after an update. + - Small fixes and improvements. + * PipeWire + - Mix info on port is now created explicitly. + - Remove the node as a driver peer when stopping. This caused + some problem with playback on and other remote bluetooth + devices. + - Work on avoiding crashes when loading new modules that use + internal API with old libpipewire. This is typical after an + update where the old library is still loaded by an + application but when a new stream is created, updated modules + are loaded. + * Modules + - The RTP source module now has an option to ignore the SSRC, + which is useful to continue to receive the stream when the + sender is restarted. + - The native protocol will refuse to load twice now instead of + silently ignoring the error. + - module-raop is compatible with more devices. + * SPA + - plugins will now warn when running out of buffers. This is + always a bad thing. + - Merge scope based cleanup macros. + - Add ratelimit function. + +------------------------------------------------------------------- +Sat Jul 8 15:24:48 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.73: + * Highlights + - Fixes an ALSA resume after suspend error. + - Handle and disable seemingly wrong hires timestamps from + ALSA. + - Filter-chain now has loadable plugin modules. The LV2 and + sofa plugins are moved to a separate .so file to make things + more modular. + - Rate changes in the graph should now be handled more + gracefully by loopback and filter-chain. + - A regression in the rtp-sap module was fixed where it would + in some cases fail to start. + - A potential crash in the peaks resampler was fixed. + - Many cleanups and other small bug fixes. + * PipeWire + - Fix a potential segfault when no fallback driver was set in + the config. + - Improve OPUS detection. + - Add ASYNC flag to pw-filter and pw-stream when queue/dequeue + is not called from the process function. This ensure we + allocate an extra buffer. + - Discard pending process callbacks when disconnecting. + - Cleanups and improvements to the debug environment variable + parsing. + - The graph rate was tweaked to better handle very low rates +  such as those requested by pavucontrol when it does the + signal monitoring. + * Modules + - An example filter module was added. + - Filter-chain and loopback now disable the resamplers if no + rate is specified and will always follow the graph rate. + - Improve setup of filter-chain. The graph is now created when + starting because this ensure the target graph rate is known. + - Filter-chain can now link notify ports to control ports in + the graph. + - Filter-chain now has loadable plugin modules. The LV2 and + sofa plugins are moved to a separate .so file. + - A regression in the rtp-sap module was fixed where it would + in some cases fail to start. + - Module-rt now has options to disable rlimits, portal and + rtkit. + - module-raop-discover now has an options to set the latency. + * Tools + - pw-cat now supports overriding all stream properties. + * SPA + - Disable rate negotiation when the resampler is disabled. We + will always follow the graph rate. + - Set device.icon property for UCM ports as well. + - Improve ALSA recover when using hires timestamps. This fixes + some problems after resume from suspend. + - ALSA will now warn and disable hires timestamp when they seem + wrong. + They can also be disabled manually with a property. + - V4l2 will now gracefully handle ENOTTY when enumerating frame + sizes and frame rates. + - A potential crash in the peaks resampler was fixed. + * pulse-server + - A client crash in pavucontrol is avoided by always setting a + card name. + - The graph rate is now taken correctly when using the FIX + flags. + - An option was added to ignore the FIX flags of a stream. Also + the documentation for those options was updated. + - module-raop-discover now support latency_msec. + * Bluetooth + - Remove an assert and issue a warning/recover instead when a + buffer is too small. + * GStreamer + - The device provider does locking when destroying the + registry. + +------------------------------------------------------------------- +Mon Jun 26 09:30:37 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.72: + * Highlights + - Fix a critical bug that would refuse to update the samplerate + or buffersize in JACK clients. + - A new module-netjack2-driver and module-netjack2-manager were + added that are compatible with NETJACK2. This allows PipeWire + to become a NETJACK2 manager or a driver between JACK2 or + PipeWire servers. + - Support was added for firewire devices with FFADO. This is + untested for now and MIDI is not implemented yet. + - The node scheduling was optimized some more. External drivers + are now as efficient as in-server ones. This should improve + performance of various drivers such as bluetooth and JACK + based drivers. + - Many, many bug fixes and a ton of improvements. + * PipeWire + - pw-filter can now be used to write sinks and sources. + - The node activation for drivers was changed. The driver now + does not need to go to the server to start the processing + cycle. This makes out-of-server drivers as efficient as + in-server drivers. + - Don't try to use drivers with 0 priority as fallback drivers. + This avoids making the screencast driver a driver for audio. + - Improve xrun count reporting in pw-top and the profiler. Now + each node has their own xrun counter updated when it fails to + complete processing during the cycle. + - pw-filter now also has support for TRIGGER. + - A potential fd leak was found when fds were send to a zombie + client. + - Fix a bug where monitor or capture streams were logged twice + in the profiler. + - Remove stream hooks safely. + - A bug in serialization of container properties was fixed. + This could result in truncated property values. + - The PIPEWIRE_AUTOCONNECT environment variable now always + overrides the autoconnect settings of streams. + - Node, port and link destroy now avoids some useless work. + - Port will now try to renegotiate a new format when idle. + * Modules + - The module-sap now is more compatible with AES67. + - A new FFADO driver module was added. This is completely + untested because of lack of hardware. Please test and report + issues. + - A new NETJACK2 driver and a NETJACK2 manager module were + added. These should be drop in replacements for the JACK2 + parts. + - The RAOP discover module now tries harder to only list + devices once. + - The zeroconf discover module now tries harder to only list + devices once. + - The RAOP sink module now handles latency better and is + compatible with some more devices. + - The loopback and filter-chain modules now always dequeue the + last input buffer to avoid stuttering in some cases. + - The SPA node factory module can now also export nodes. This + is used to export the PTP clock from the AES67 config file. + - A bug in module-jack-tunnel was fixed that would cause + stuttering and corrupted output in some cases. + - The resampler is now disabled in module-loopback and + filter-chain when the samplerate is set to follow the graph + rate. + - The way the mixer peer is sent to clients was improved. It is + now also possible to let a remote node know about mixer port + removes, which can avoid memory leaks and some code + simplifications. + * SPA + - Monitor ports now report latency correctly. + - The ALSA plugin now uses htimestamp to get a more accurate + ringbuffer position to estimate the clock skew. + - The channelmixer now has min/max-volume settings to limit or + fix the volume. + - The ALSA plugin can now control the playback and capture rate + of USB gadgets. This can avoid resampling and instead use the + USB feedback to control the rate. + - The ALSA output to multiple devices has been improved, some + lockups are avoided when the device ringbuffer is full. + - The compress-offload sink has improved negotiation. + * pulse-server + - Only try to use GSettings when the schema exists. + - @DEFAULT_SOURCE@, @DEFAULT_SINK@ and @DEFAULT_MONITOR@ are + now correctly handled as targets in playback and capture + streams. + - 2 new quirks are added to disable volume updates on + sinks/sources. + - The virtual-sink and virtual-source modules were added. These + are really example modules but actually also work and are + useful on PulseAudio so implement them as well. + - Fix initial stream volumes. + * Bluetooth + - Only register A2DP or BAP when we have codecs. + - Include codec into the media.name + * JACK + - Fix a critical bug that would refuse to update the samplerate + or buffersize. + - Improve updates of samplerate/buffersize, delay the updates + until the client is activated. + - Use the new mix-info updates to simplify the mixer setup and + peer detection. + * GStreamer + - Fill default strides instead of 0 on pipewire video buffers. +- Remove patch already included upstream: + * 0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch +- Move libjack* conflicts from package pipewire-libjack-0_3 (which + has coinstallable libraries) to pipewire-jack (which includes + the ld.so.conf.d file). + +------------------------------------------------------------------- +Wed May 31 06:50:17 UTC 2023 - Dominique Leuenberger + +- Have pipewire-spa-plugins-0_2 suggest pipewire-libjack-%{apiver_str}: + this package requires libjack.so.0, so we best use our own + implementation. + +------------------------------------------------------------------- +Fri May 19 17:26:12 UTC 2023 - Alexei Sorokin + +- Add patch from upstream to fix JACK buffersize updates: + * 0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch +- Create a pipewire-jack package that provides jack-daemon (and + conflicts with any other) and requires the pipewire-libjack + library. + Move the ld configuration from pipewire-libjack, so that only + pipewire-jack forces PipeWire to be the default JACK. + +------------------------------------------------------------------- +Wed May 17 15:18:10 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.71: + * Highlights + - A new zero-latency jackdbus bridge was added. This works + similar to what PulseAudio has to offer and creates a + sink/source when jackdbus is started. It is however much more + efficient and runs the complete PipeWire graph as a + synchronous JACK client with no added latency. + - Many performance improvements. Activation of remote nodes is + more efficient, fewer eventfds are required on the clients, + less callback overhead in performence critical paths and an + optimized poll function was added. This was mainly driven by + the jackdbus module to get the lowest possible overhead when + running the graph. + - The JACK notify callback implementation was reworked to + emulate better what JACK does, improving compatibility with + ardour7 and the JACK stress test. + - More work on BAP devices. Device latency is now passed on to + applications also for multi-device headsets, and channel + allocation is handled better. + - Many more improvements and bugfixes. + * PipeWire + - Remove the hardcoded limit on io_areas. This is used to link + nodes together and exchange buffers, it was limited to 2048 + but now dynamically scales based on requirements. + - Rate and quantum changes are now applied correctly in more + cases. (#3159) + - Updates to client-node to more efficiently process the + driver. + - The profiler information was improved to be more accurate. + It should now work better for remote drivers. + - Some potential memory map errors were fixed in the protocol + because in some case with large messages, some fds were + closed too soon. + - pw-filter now implements the pw_filter_set_active() method. + - A potential out-of-buffers case was fixed in capture + pw-streams where buffers were not moved to the recycle queue + when the node suspended. + - Nodes are now always woken up with the eventfd. Previously + there were some optimiztions in the server to directly call + into the node process function but that optimization is not + necessary. Without this optimization it is now possible to + run nodes in different threads. + - pw-stream trigger is now implemented correctly in all cases. + - Remote nodes now use one eventfd less because they get + triggered with the node eventfd directly. + - Monitor ports are now ignored in latency updates. + - A potential race when reporting an error to a client was + fixed. (#3192) + - Fix a bug where always_process nodes would sometimes IDLE. + (#3189) + - Optimize peer activation. Nodes are now activated more + efficiently and independent of the number of links. It also + reduces the number of eventfds and memory in remote clients. + - A bug in property serialization was fixed. Values with spaces + would only serialize the first part of the value. + * Modules + - Correctly handle the echo-canceler plugin init method + fallback. The samplerate was not correctly configured. This + is only a regression for people that have external + echo-canceler plugins. + - RAOP sink now only sets the volume on the remote end when the + stream is recording. (#3175) + - RAOP discover now tries to deduplicate entries from the same + host. + - A new zero-latency jackdbus bridge was added. This works + similar to what pulseaudio has to offer and creates a + sink/source when jackdbus is started. It is however much more + efficient and runs the complete PipeWire graph as a + synchronous JACK client. + - The access module uses a more secure way to check the + application executable. + - module-combine-stream now has configurable delay and latency + for each stream. This can be used to align sinks/sources with + different latencies. + - A potential crash in module-pulse-tunnel was fixed when + shutting down. (#3199) + - Module-rt will now clamp the nice value to the min allowed + value to avoid errors from rtkit. (#3186) + - Fix a bug with the session counters in module-rtp-sap. Also + use the right format for L24. Improve the AES67 example + config. + - Improve some warning and info messages in module-rt. (#3194) + - module-rtp-session should now do something when started + without arguments. + - A potential crash in module-rtp-session was fixed. (#3217) + - module-filter-chain has better error reporting when a + convolver fails to load. (#3223) + * SPA + - Move some things around to avoid compiler warnings. (#3171) + - Increase mixer ports. Reorganize some things and bump mixer + input ports from 128 to 512. + - Fix a potential crash when a node is scheduled before it + completes the setup. + - The JACK sink and source SPA plugins have seen some + improvements. + - Allow the peaks resampler still if we disabled resampling. + - Perform more cleanup in audioadapter when in error. + - An optimized non-cancellable loop implementation was added. + - Callbacks were optimized with a _fast() varsion that doesn't + check the version and method. When this check is performed + earlier, it can be skipped in performance critical places. + - Some of the callbacks and system methods are now using the + fast function calls in critical paths. + - A potential division by zero was fixed in the ALSA plugins. + - Improve rate and quantum when starting audioconvert. + - Make it possible to override node.driver in the SPA + null-audio-driver. (#3220) + * pulse-server + - The audio info parameter parsing was refactored and improved. + - Fix some races with clients exiting when playing samples. + - An option was added to change or disable the dbus name + registration. (#2987) + * Bluetooth + - Implement battery reporting using AT+XEVENT. + - Disable hardware volume for 3M WorkTunes. + - Implement BAP audio locations (channel positions) by using + the new bluez properties. + * JACK + - Fix some errors reported by JACK test.cpp. (#2638) + - Add jack.show-midi option to show/hide midi ports. + - Add jack.max-client-ports option. JACK also has a port limit + and so PipeWire needs it as well to make the tests happy. + - Call the shutdown callback only when the server stopped, not + when there is a random error. (#3070) + - Avoid registering the same port name twice. + - Call port registration callbacks in activate/deactivate. + - Improve jack_port_connected(). + - Improve some error reporting. + - The JACK headers were updated to a newer version. + - JACK callbacks are now managed with an event queue to + simulate more what JACK does. This avoids emiting callbacks + when a method is blocking for a reply and causing deadlocks. + (#3183) + - Assign unique names to JACK clients. (#2833) + - Fix a potential crash when the thread_utils was used after + free. + - Aliases are now not filled in by default to improve JACK + compatibility. (#3154) + * ALSA + - The ALSA plugin will now wait for negotiation to complete or + an error before _prepare() completes. This makes more + applications deal correctly with the potential errors. + * Docs + - A new document about how scheduling is implemented was added. + - Update the pw-cli man page. (#2988) + - Document the SPA Pod serialization. + - Document the PipeWire native protocol. + +------------------------------------------------------------------- +Tue May 2 11:41:03 UTC 2023 - Alexei Sorokin + +- Make pipewire-alsa conflict with alsa-plugins-pulse as both + provide /etc/alsa/conf.d/99-*-default.conf +- Replace "ffmpeg-5" with the ffmpeg_pref macro. +- Drop patches already included upstream: + * 0001-Revert-alsa-mixer-allow-to-re-attach-the-mixer-control.patch + * 0002-alsa-fix-area-pointers.patch + +------------------------------------------------------------------- +Thu Apr 20 15:41:53 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.70: + * Highlights: + - Fix a regression in the scheduler that could keep some nodes + IDLE. + - Fix a regression in the biquad filters in filter-chain. + - Fix a regression and potential crash in the ALSA mixer + probing. + - Fix a regression in pipewiresrc with timestamps that could + cause cheese to record video with wrong timestamps. + - Beamforming support was enabled in the echo-canceler. + - pulse-tunnel and raop-sink will now proxy local volume + changes to the remote end. + - More bugfixes and improvements. + * PipeWire + - Fix a bug in the graph scheduler where some nodes might stay + IDLE in some cases (like when connecting the source of the + echo-canceler to the sink). + - pw-metadata can now be created from the factory with initial + values for the metadata. (#3076) + - Conditions were added to the pipewire config file to make it + possible to configure the access module and the exec sections. + - Support was added in pw-stream to intercept and override + properties for the adapter. This can be used to implement + custom volume control, for example. + * Tools + - pw-metadata can now list all available metadata objects with + the -l option. + - A new pw-config tool was added to debug configuration file + loading and parsing. + * Modules + - The webrtc echo canceler now supports beamforming. You can + provide the coordinates of the microphones and let webrtc + perform beamforming on the captured samples to improve + quality and remove noise. + - Fix a regression in the filter-chain with biquad filters. + (#3161) and improve error reporting. + - The pulse-tunnel will now proxy the volume changes to the + remote end. + - The RAOP sink will now send volume parameters to control the + volume remotely. (#2061) + * SPA + - One ALSA commit was not correctly reverted and might cause + crashes. + - The ALSA sink and source now calculate the ALSA ringbuffer + memory location more correctly wich might improve + compatibility with some hardware. + - v4l2 now sets the values of the controls in the Props param. + * Pulse-server + - The echo-canceler aec_args are now parsed like they would be + under pulseaudio. + * Bluetooth + - More work on synchronizing BAP devices. + * GStreamer + - The GStreamer source can now renegotiate the format when it + changes. + - The GStreamer source now uses the BaseSrc clocking code to + implement the clock and timing code. +- Rebase patch: + * reduce-meson-dependency.patch +- Enable the ffmpeg plugin only in TW, since ffmpeg-5-mini doesn't + seem to be available in Leap/SLE + +------------------------------------------------------------------- +Tue Apr 18 20:14:27 UTC 2023 - Dirk Müller + +- reenable ffmpeg plugin by building against ffmpeg-5-mini + +------------------------------------------------------------------- +Sat Apr 15 10:08:51 UTC 2023 - Alexei Sorokin + +- Add patch from upstream for https://bugs.archlinux.org/task/78195 + * 0001-Revert-alsa-mixer-allow-to-re-attach-the-mixer-control.patch +- Add patch from upstream to fix some potentially broken devices: + * 0002-alsa-fix-area-pointers.patch + +------------------------------------------------------------------- +Fri Apr 14 11:10:46 UTC 2023 - Bjørn Lie + +- Only apply reduce-meson-dependency.patch when meson present + during build is too old. + +------------------------------------------------------------------- +Fri Apr 14 08:58:53 UTC 2023 - Antonio Larrosa + +- Add patch to build pipewire in Leap 15.4: + * reduce-meson-dependency.patch + +------------------------------------------------------------------- +Thu Apr 13 19:23:05 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.69: + * Highlights: + - Reverted the UCM changes, they seem to cause regressions + causing audio to be muted in some cases. + - Fix a regression in the scheduler where a driver node might + not be marked as runnable in some cases, like when + echo-cancel is used. + - Handle links from the driver to itself. This makes the midi + bridge work again. + - ALSA rate matching for sources was fixed. It would previously + wait too long for rate matching and then cause drift. This + should reduce crackling and stuttering whan capturing in + low latency. + - Fix the GStreamer clock to make cheese video recording work + again. + - More fixes and improvements. + * PipeWire: + - Fix a regression in the scheduler where a driver node might + not be marked as runnable in some cases, like when + echo-cancel is used. + - Handle links from the driver to itself. This makes the midi + bridge work again. + - Some man pages were improved. + - Fix a potential crash when thread-loop is destroyed before + the loop. + * Modules: + - A new raw biquad filter was added to filter-chain. You can + manually set the 6 parameters and you can use this to create + custom filters per sample rate. + - The echo-canceller now supports different channels for the + capture and playback streams. + * SPA: + - A SB Audigy specific profile set was added to make better use + of the controls. + - More ALSA IRQ based scheduling improvements. + - ALSA rate matching for sources was fixed. It would previously + wait too long for rate matching and then cause drift. This + should reduce crackling and stuttering whan capturing in + low latency. + - The echo-cancel plugin API has a new method to make it + possible to have different channels for capture, source and + playback. + - Reverted the UCM changes, they seem to cause regressions + causing audio to be muted in some cases. + * Bluetooth: + - Many more BAP fixes and improvements. Devices are now + created as a set and can be combined into one device by the + session manager. + * GStreamer: + - Fix the GStreamer clock to make cheese video recording work + again. +- Enable gstreamer-device-provider (rh#2183691). + +------------------------------------------------------------------- +Thu Apr 6 14:12:51 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.68: + * Highlights: + - Symbolic links to the pipewire binary are now used instead of + recompiling the same binary multiple times. + - Changes to the graph scheduler related to quantum/rate + updates and calculation of the node states. Things should + start and switch between quantums and rates more smoothly now + and especially virtual devices should now only run when + required. + - A new RTP session module was added. This uses the Apple MIDI + protocol to configure low-latency bidirectional MIDI (and + with a PipeWire specific extension, also audio) between + machines. OPUS encoding was added to the RTP formats. + The SAP module was separated from the rtp-sink/source module + to make it more usable. + - A new runtime debug property was added to all streams and + nodes to trigger a save of the raw samples to a wav file. + Support for this has also been added to the echo-canceler to + debug potential issues. + - Module pulse-tunnel has improved rate matching and + synchronisation support. It should also not drift anymore for + capture devices. + - The link-factory now ignores by default the link.passive + property. This means that tools like pw-link or jack clients + and wireplumber can't make passive links anymore. The reason + is that there is now much more advanced logic in PipeWire + itself to handle passive links based on node and port + properties. + - The RAOP sink was ported to new OpenSSL functions. Digest + passwords are handled correctly now and support for more + devices was added. + - The ACP code was updated with new PulseAudio UCM code: + "Create multiple profiles per verb for conflicting devices". + This might change the names of devices, profiles and ports so + scripts might need to be updated. + - Upmixing is disabled again by default. We now ship config + files that distros can install to enable upmixing again. The + reason being that PipeWire should not apply fancy DSP + processing to audio by default. + - Many cleanups and bugfixes, including some crashes and memory + corruption bugs. + * PipeWire: + - Don't crash when calling _connect twice in stream/filter. + - Links are now installed instead of compiling the pipewire + binary multiple times. + - There is now a new core event bound_props that augments the + bound_id event with the global properties. This can be used + to get the global.serial among other global properties. + It also makes it possible in the future to let the server + allocate unique names or uuids. + - Fix a bug where the server could go into an infinite + reconfigure loop when the samplerate of a driver would + change. + - When a samplerate was forced, restore the previous best + samplerate when the samplerate is no longer forced. + - Rework how the states of the nodes in the graph are + calculated. A more refined algorithm is now used that only + runs nodes that need to run. + - Rework how the quantum change is applied to the graph. + Drivers are now responsible for using the new updated + rate/quantum before starting a new cycle. This avoids + starting a cycle with an old quantum first. + - pw-stream and pw-filter will now ensure that the Trigger + event is called from the main thread. + - node.force-rate=0 will now force the node.rate on the graph, + forcefully switching the hardware into the new rate if + possible. + - Additional checks were added to the thread-loop to check + locking order. + - Additional checks were added to pw-stream and pw-filter to + check if methods are called from the right thread context. + * modules: + - A new RTP session module was added. This uses the Apple MIDI + protocol to configure bidirectional MIDI (or audio) between + machines. + - SAP support was removed from module-rtp-source and + module-rtp-sink and moved to a separate module. This makes it + possible to use the RTP modules without SAP support as well. + - The echo-cancel module now has support to save the signals to + a wav file for debugging purposes. + - The RTP modules now have support for the OPUS codec. + - The RAOP module was ported to new openssl encryption + functions and handles digest passwords correctly now. + - module-raop-discover now has match rules to be able to select + the streams and set properties. + - Module pulse-tunnel has improved rate matching and + synchronisation support. + - Fix potential memory corruption and infinite loops because + module-pulse-tunnel was unloaded from the wrong thread. + - The link-factory now ignores by default the link.passive + property. This means that tools like pw-link or jack clients + and wireplumber can't make passive links anymore. The reason + is that there is now much more advanced logic in PipeWire + itself to handle passive links based on node and port + properties. + - module-echo-cancel will now clear its buffers after a suspend + to avoid playing stray samples. + - module-raop-sink will now handle 0 timing_port replies. + * SPA: + - The adapter module now has support for saving the raw audio +  to a wav file for debugging purposes. + - The ACP code was updated with new PulseAudio UCM code: + "Create multiple profiles per verb for conflicting devices". + This might change the names of devices, profiles and ports so + scripts might need to be updated. + - Upmixing was disabled again by default. We now ship config + files that distros can install to enable upmixing again. + - audioadapter and audioconvert have seen improvements in the + experimental non-DSP/passthrough mode. + - Fix a potential race where the dummy drivers could fail to + stop a timer and cause endless warnings in the logs. + - The ALSA plugin has experimental support for IRQ based + scheduling. This should decrease latency for some + (mostly USB) drivers. This should bring latency within JACK + latency. + - Audioconvert now has support for volume ramping. + - A new loop method was added the check if a thread is + currently running the loop. + - channelmix.disable and resample.disable now generate an error + when true and channelmixing or resampling is required in the + converter. + * Bluetooth: + - Fix a crash in some cases when a device was disconnected. + - Support async transport state changes. This avoids some + lockups when the bluetooth backend is having issues. + - Align BAP sinks. This improves synchronization between + earpieces. + * ALSA: + - Improve properties in pw-top and pavucontrol. + * pulse-server: + - Improve error handling from pulse-tunnel. + - Generate silence correctly for unsigned formats as well. + - Review buffer params. The streams should now just work with + 1 or 2 buffers. + - module-rtp-send and module-rtp-recv now have support for the + OPUS codec. + * JACK: + - Make sure we don't call any callbacks anymore when + deactivating. + * GStreamer: + - Sort the device by priority in deviceprovider. + +------------------------------------------------------------------- +Sun Mar 19 08:51:17 UTC 2023 - Bjørn Lie + +- Add pkgconfig(lc3) BuildRequires, and pass + bluez5-codec-lc3=enabled to meson. + +------------------------------------------------------------------- +Thu Mar 9 13:57:10 UTC 2023 - Bjørn Lie + +- Update to version 0.3.67: + * Highlights: + - The loopback module and other couples streams will now not + randomly fail in some cases. + - The RTP module now has support for sending and receiving MIDI + as well. + - The compress offload sink has seen many improvements. It now + uses ioctls directly to bypass limitations of tinycompress + (to be able to detect the available codecs, for example). + - Pulse server compatibility was improved for some apps by + improving the format parsing and FIX_ stream flag handling. + - The min quantum in the pulse server was changed from + 256/48000 to 128/48000 to fix some issues with games that + expect 5ms or less of latency. + - The Bluetooth plugin has seen many improvements in packet + scheduling to attempt to reduce stuttering on some devices. + - The ALSA plugin now handles some impossible cases better. + This fixes recording in QEMU again. + * PipeWire: + - SPDX tags were added to the code for copyright information. + - The random number functions were made more usable. + - The port property code was moved from the adapter to the port + implementation itself to make it more useful and unified for + the cases where no adapter is used (midi and video). + - Fix a potential overflow in mixer areas. + - Improve runnable state calculations of nodes. This is part of + ongoing work to avoid running nodes that should not need to + run. + - The stream will now always call the process function when + using trigger, even if there are no buffers. This avoids + stalls of the processing graph in some cases. + - Links are now marked as passive by PipeWire itself so that + the right thing happens in all cases. + - Implement the in/out/true values for the node.passive + property. + - Place a passive state on ports to make passive links on a + port by port basis. + * Tools: pw-cat has seen improvements in the encoded file + playback case. + * Modules: + - The rtp module has support for MIDI now. + - DSCP is now configurable in the RTP module. + - The loopback module doesn't randomly fail to work anymore. + * SPA: + - The null-audio sink can now be given a format and it will + return this instead of the default float ones. This makes it + possible to make a null-sink that has a given format. + - The compress offload sink has seen many improvements. It now + no longer uses tinycompress to be able to detect the + available codecs. + - The ALSA plugin now handles some impossible cases better. + - Fix compilation on older compilers. + * Pulse-server: + - The FIX_ flags are now implemented more correctly by fixating + the stream to the format of the sink/source they ask to be + connected to. + - There is now also an option to override the fixation based on + rules. + - Format parsing was improved and should now support all format + strings supported by pulseaudio including upper and lower + case variants and shortcuts. + - Channelmap parsing was improved and should now reject invalid + channelmaps as well as support the shortcuts supported by + pulseaudio. + - Escape codes in module arguments now work as it does in + pulseaudio. + - The min quantum was changed from 256/48000 to 128/48000 to + fix some issues with games that expect 5ms or less of + latency. + * JACK: + - jack.passive-links can now be used to have a JACK client make + passive links and the node.passive property is no longer used + for this because it has a different function. + - The qsynth rule was updated to the new node.passive features. + It is now only passive on the output side. + * Bluetooth: + - BAP delay and transport latency are handled now. + - A2DP and SCO can now use bigger buffers to improve quality + when the reception is jittery. + - The AT+BCC command is now implemented. + - Packet encoding now happens ahead of time when possible to + avoid delays before sending it. + - Source should now always produce complete (padded) buffers to + avoid sync problems. + - Don't set unnecessary socket options. + * GStreamer: + - The pipewiresrc now has an autoconnect argument. + - The metadata plane count is now handled correctly in more + cases. + - Stream errors are now handled correctly to stop the GStreamer + elements. + +------------------------------------------------------------------- +Tue Feb 28 13:08:53 UTC 2023 - Dirk Müller + +- add a suggests on the pipewire-jack packages to avoid the jack + versions getting picked for dependency resolution + +------------------------------------------------------------------- +Thu Feb 16 13:08:02 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.66: + * Highlights + - Fix a regression in the pulseaudio module-combine-stream + because the new module-combine-stream was not installed. + - PipeWire can now generate a limits.d config file with our + recommended settings for priorities and memlock. + - Modules, exec and objects can now be loaded depending on + conditions. One example is the X11-bell module that can now + be disabled with a custom property override. + - Filter-chain has a new mysofa based spacialiser plugin. + - Support was added for different clocks that allow the RTP + modules to work with a PTP clock, for example. + - Many bugfixes and improvements. + * PipeWire + - Avoid rate switches when the graph is idle. + - The rate selection algorithm was improved. This ensures + minimal performance and quality loss when resampling. + - The default min.quantum was set to 32 again after it got + erronously changed to (the too low) 16 in version 0.3.45. + - Fix compilation issues with rust bindings because of macros + in defines. Work around it for now. + - Invalid file mappings are now refused. + - Modules, exec and objects can now be loaded depending on + conditions. One example is the X11-bell module that can now + be disabled with a custom property override. + - Filter now also supports _trigger_process() to drive the + graph. + - TID is now added to the journald log. + - PipeWire generates and installs + `/etc/security/limits.d/25-pw-rlimits.conf` that by default + contains project's recommended settings. Creation of the + pipewire group is left to the distro or user + ( `groupadd -r pipewire` ). See the rlimits-* Meson options + for controlling this behaviour. + - Additionally there is now by default disabled Meson option + that will install + `/etc/security/limits.d/20-pw-defaults.conf` with the current + Linux default memlock value. Distros with only kernels >=5.16 + or always using systemd v251 or newer do not need this. + But all other builds should set the + `-Dpam-defaults-install=true` Meson option to ensure that the + memlock value is always large enough. + * modules + - Install module-combine-stream. + - RTP source now has support for custom channel names. + - RTP source will now stop when inactive. + - Filter-chain has a new mysofa based spacializer plugin. + - The RTP modules can now use direct clock timestamps to send + and receive packets. This makes it possible to synchronise + sender and receiver with a PTP clock, for example. + - Filter-chain now has an invert plugin to invert the polarity + of a signal. + * SPA + - There is now an option to set the channels used for probing + Pro Audio devices. This could unlock more samplerates for + some devices when they are probed with fewer channels. + - Support was added for other clocks than the MONOTONIC clock + in the driver nodes. This can be used to synchronise the + graph to a PTP clock, for example. + - The ALSA source has some more headroom when rate matching to + avoid stuttering when following another driver. + - libcamera controls are now mapped to standard PipeWire + property values. + - The channelmixer has seen some improvements. + MONO and undefined channel layouts are now upmixed and + downmixed more correctly. + * Bluetooth + - Many BAP support fixes. + * GStreamer + - The gstreamer elements now support buffer video metadata so + that strides are correctly handled. + - pipewiresrc will now error out correctly in more cases. + * JACK + - The frame to/from time functions are improved to also work + with negative time and frame offsets. +- Drop patches already included upstream: + * 0001-modules-also-install-module-combine-stream.patch + +------------------------------------------------------------------- +Thu Jan 26 12:21:31 UTC 2023 - Alexei Sorokin + +- Update to version 0.3.65: + * Highlights + - Add back the deprecated symbols but make sure a deprecated + warning is emitted for them. This fixes compilation issues in + bindings. + - Fix an error in the AVX code that could cause crackling in + filter-chain when using the mixer. + - The convolver in filter-chain can now select an IR from a + list of IRs that best matches the current samplerate. Also + resampling of the IR has been improved. + - A new native module-combine-stream was added. You can use + this to create a 5.1 device from 3 stereo soundcards, for + example, or direct the output to multiple sinks at once. + - Support for Bluetooth MIDI was added. This requires a + wireplumber addition as well. + - An ALSA plugin rule was added to tweak the buffer settings in + Davinci Resolve so that it now runs with acceptable latency. + - Support for compress offload was added using tinycompress. + This allows compressed formats to be decoded in hardware + using ALSA on some devices. + - Many more buffixes and improvements. + * PipeWire + - Add back the deprecated symbols but make sure a deprecated + warning is emitted for them. + - Fix a regression when running older servers and newer clients + (such as flatpaks on older server) where the server would run + clients too soon, causing crashes. + - Ensure that environment variables override any config values. + * Tools + - pw-cli has received some improvements in the output. + - pw-cat can now use ffmpeg to demux streams for compress + offload. + * modules + - The convolver IR volume is now preserved after resampling. + - Adapter ports can now have a custom prefix. + - module-rt now clamps the realtime priority to the user + allowed one if it is within an acceptable range. Before it + would fall back to RTKit immediately. + - The module-echo-cancel can now have per stream channel + layouts which makes it possible to link to specific audio + ports on a device. + - Fix an error in the AVX code that could cause crackling in + filter-chain when using the mixer. + - The convolver in filter-chain can now select an IR from a + list of IRs that best matches the current sample-rate. + - module-pipe-* now better matches the pulseaudio properties. + - A new combine-stream module was added to combine multiple + sinks into one sink. It is also possible to merge multiple + sources into one. + - module-rtp-source now has match rules to select what SAP + sessions to stream from. There were also improvements to the + buffering and latency handling. + - module-rtp-sink now handles multicast loopback correctly. + - module-rtp-sink implements min-ptime and max-ptime to control + the send packet latency. + * SPA + - A new modifier flag was added to the video format parser + helper to allow 0 (linear) as a valid modifier. + - Params includes were reorganized to make it more scalable. + Many compressed audio formats were added. + - The alsa pcm plugin now handles invalid values from the + driver gracefully. + - Fix some potential stuttering cause by wrong scaling and + overflow of the output buffers in audioconvert. + - Debug output is now also sent to the log instead of stdout. + - A debug context was added to debug macros to implement custom + debug handling. This is used to redirect the debug of pods to + the debug log instead of using some custom duplicated code. + - Fix some warnings for potentially undefined shifts in format + conversion. + - Support for compress offload was added using tinycompress. + This is mostly used on some embedded hardware where decoding + of audio formats can be done in hardware. + * Bluetooth + - Some fixes for LE audio were added. + - Support for Bluetooth MIDI was added. This requires a + wireplumber addition as well. + - Reply OK to empty commands. + - Improve compatibility with some devices that send stray \n + such as the Sennheiser HD 350BT. + * pulse-server + - Devices with unsupported formats (by the pulseaudio API) are + now also listed in the pulseaudio API (with invalid formats). + - The native module-combine-stream is used for + module-combine-sink. + * JACK + - Make jack.merge-monitor default to true to better match the + jack1/2 behaviour. Add an exception for mixxx, which is more + usable with unmerged monitors. + * ALSA + - The property handling in the ALSA plugin was improved. + alsa.properties and alsa.rules can now be added to the config + file. + - A rule was added to tweak the buffer settings in + Davinci Resolve so that it can run with acceptable latency. + - ALSA volume will now also use cubic volumes, like pulseaudio. + - The ALSA ctl plugin now also uses the client-rt.conf file. + - A new alsa.volume-method was added to configure cubic or + linear volume. + This can be set per application using the rules. + * GStreamer + - pipewiresrc will now advertise DMABUF support if the pipeline + supports this. + - pipewiresrc will now always be a live source unless told + otherwise. +- Drop reduce-meson-dependency.patch: openSUSE Leap 15.3 is + no longer supported. +- Add patch to install module-combine-stream: + * 0001-modules-also-install-module-combine-stream.patch +- Drop patches already included upstream: + * 0001-cpu-arm-Fix-incorrect-free.patch + * 0001-alsa-guard-against-some-invalid-values.patch + * 0001-spa-Fix-audioconvert-overflow-when-scaling.patch + +------------------------------------------------------------------- +Tue Jan 17 08:28:49 UTC 2023 - Antonio Larrosa + +- Add patch from upstream to avoid division by 0 and other issues + with invalid values (glfo#pipewire/pipewire#2953): + * 0001-alsa-guard-against-some-invalid-values.patch +- Add patch from upstream to fix causing an overflow resulting in + choppy sound in some cases (glfo#pipewire/pipewire#2680): + * 0001-spa-Fix-audioconvert-overflow-when-scaling.patch + +------------------------------------------------------------------- +Mon Jan 16 08:21:05 UTC 2023 - Antonio Larrosa + +- Add patch from upstream to fix a crash on arm: + * 0001-cpu-arm-Fix-incorrect-free.patch + +------------------------------------------------------------------- +Fri Jan 13 07:46:11 UTC 2023 - Antonio Larrosa + +- Update to version 0.3.64: + * Highlights + - Clear old buffer memory on ports to fix some SIGBUS errors. + - It is now possible to assign custom port names to the ports + from an adapter. This feature is helpful to those who use a + multichannel interface with long-term connections. This way + they can label each port with its designation, such as an + instrument name or anything else to be displayed in a + patchbay or DAW. + - Fix some issues with node suspend and quantum and rate + calculations. + - Fix some regressions in pulse-tunnel and RTP-source adaptive + resampling that could cause synchronization problems. + - UCM devices now also have a Pro Audio profile. + - NODE_TARGET (with the object.id) is now deprecated, use + TARGET_OBJECT (with the object.serial, which is not reused + and can avoid races). + * PipeWire + - Clear all peer input port buffers when suspending. This fixes + some SIGBUS errors when some plugins were using old memory. + (glfo#pipewire/pipewire#2914) + - Fix a case where nodes that were not supposed to be + suspended, were kept suspended on a rate change. + (glfo#pipewire/pipewire#2929) + - Fix an error in the quantum and rate calculations that could + cause nodes to run with wrong quantum and rates when multiple + rates were allowed. (glfo#pipewire/pipewire#2925) + * Tools + - pw-dump will now sort dictionaries to make it easier to + compare different outputs. + - Improve output of pw-reserve. + - pw-loopback uses TARGET_OBJECT so you will need to use the + serial id (or better the name) as the target instead of the + object id. + * modules + - The filter-chain modules has seen some cleanups, refactoring + and optimizations in the various DSP functions. + - The ROC module now supports setting a custom samplerate. + - ROC 0.2.X is now required. + - The pulse tunnel and RTP source were not updating the rate + field correctly which could cause synchronization problems. + (glfo#pipewire/pipewire#2891) + - The filter-chain now supports an arbitrary number of control + properties. (glfo#pipewire/pipewire#2933) + - It is now possible to assign custom port names to the ports + from an adapter with the PW_KEY_NODE_CHANNELNAMES. + - Support was added for capture and playback props in + echo-cancel. (glfo#pipewire/pipewire#2939) + * SPA + - The ACP code now has an option to set the probe samplerate. + (glfo#pipewire/pipewire#1599) + - UCM devices now also have a Pro Audio profile. + - Filtering of Step ranges is now implemented. + * Pulse-Server + - The channel-map is now set correctly on the echo-cancel + module. + - source_master and sink_master are now correctly handled in + module echo-cancel. + - Fix a regression in DRAIN where resuming after a DRAIN would + fail. This caused problems for espeak. + (glfo#pipewire/pipewire#2928) + - TARGET_OBJECT is now used to make it possible to use the + indexes as a target. + - ladspa-source and remap-source can now also link to monitors. + * ALSA + - The ALSA plugin now handles the target.object correctly when + set to -1. (glfo#pipewire/pipewire#2893) + * V4L2 + - The v4l2 replacement library now also follows symlinks. + - Support for getting and setting controls was added. + - Support for G_PARM was added. + - The environment variable PIPEWIRE_V4L2_TARGET can be used to + force an application onto a specific camera. + * Bluetooth + - Fix compilation without ldac_abr. + - Fix a missing brace in CIND reply. This could cause some + devices to fail. + - Fix configuration of the initial latency. + * GStreamer + - The device provider now supports setting an fd so that it can + connect to PipeWire sessions from the portal. + - DMABuf support was re-enabled in gstpipewiresrc. +- Rebase reduce-meson-dependency.patch. +- Remove patches from upstream + * 0001-pulse-server-add-channel-map-in-echo-cancel-module.patch + * 0003-bluez5-backend-native-fix-missing-brace-in-CIND-reply.patch + * 0001-alsa-dont-set--1-as-node.target.patch + * 0001-modules-fix-rate-update.patch + * 0001-alsa-fix-memory-leak-of-properties.patch + * 0001-module-rt-fix-warning-when-xdg-desktop-portal-isnt-running.patch + * 0001-midifile-error-won-invalid-track-size.patch + * 0001-impl-node-move-2-state-variables-to-private.patch + * 0001-context-rename-a-method.patch + * 0002-impl-node-restore-running-state-after-reconfigure.patch + * 0001-context-keep-per-node-quantum-and-rate-settings.patch + * 0001-fix-use_buffers-checks.patch + * 0001-pulse-server-clear-the-drained-state-correctly.patch + +------------------------------------------------------------------- +Wed Jan 11 09:44:52 UTC 2023 - Antonio Larrosa + +- Add several patches from upstream to fix several issues + (glfo#pipewire/pipewire#2925, glfo#pipewire/pipewire#2928, + glfo#pipewire/pipewire#2929): + * 0001-module-rt-fix-warning-when-xdg-desktop-portal-isnt-running.patch + * 0001-midifile-error-won-invalid-track-size.patch + * 0001-impl-node-move-2-state-variables-to-private.patch + * 0001-context-rename-a-method.patch + * 0002-impl-node-restore-running-state-after-reconfigure.patch + * 0001-context-keep-per-node-quantum-and-rate-settings.patch + * 0001-fix-use_buffers-checks.patch + * 0001-pulse-server-clear-the-drained-state-correctly.patch + +------------------------------------------------------------------- +Thu Jan 5 20:07:10 UTC 2023 - Bjørn Lie + +- Disable ffmpeg support, only needed for pw-play and pw-record. + Break a circular dependency with ffmpeg-5. Do this via disabling + pkgconfig(libavcodec), pkgconfig(libavfilter) and + pkgconfig(libavformat) BuildRequires as well as passing + ffmpeg=disabled to meson. + +------------------------------------------------------------------- +Wed Jan 4 11:25:48 UTC 2023 - Antonio Larrosa + +- Add patch from upstream to fix pulse tunnel getting out of + sync/overruns (glfo#pipewire/pipewire#2891): + * 0001-modules-fix-rate-update.patch +- Add patch from upstream to fix memory leak of properties: + * 0001-alsa-fix-memory-leak-of-properties.patch + +------------------------------------------------------------------- +Fri Dec 30 13:45:32 UTC 2022 - Predrag Ivanović + +- Ship only X11 bell module in module-x11 sub-package + +------------------------------------------------------------------- +Tue Dec 27 20:12:09 UTC 2022 - Alexei Sorokin + +- Split the X11 bell implementation into a separate package + (overlaps with implementations in e.g. Marco). +- Add patch from upstream to fix a Bluetooth regression + (glfo#pipewire/pipewire#2898): + * 0003-bluez5-backend-native-fix-missing-brace-in-CIND-reply.patch + +------------------------------------------------------------------- +Mon Dec 19 11:00:49 UTC 2022 - Antonio Larrosa + +- Add patch from upstream to remember last routing after a reboot + (glfo#pipewire/pipewire#2893): + * 0001-alsa-dont-set--1-as-node.target.patch + +------------------------------------------------------------------- +Thu Dec 15 17:37:52 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.63: + * Highlights + - Fix a critical bug that causes audio distortion in some cases + when using AVX2. + - Fix a crash in mpv caused by deinit of PipeWire. + - Resample the convolver IR to match the graph samplerate for + better results. + - Many more small bugfixes and improvements. + * PipeWire + - Fix a segfault in the PipeWire deinit code triggered by mpv + in some cases. + - Fix docs about SPA_PLUGIN_DIR. + - Always dlclose by default (even under valgrind). Add an + option with PIPEWIRE_DLCLOSE to select alternative behaviour. + - Improve PIPEWIRE_DEBUG category handling. + * modules + - Resample the IR for the convolver when the IR samplerate and + graph rate don't match. + * SPA + - Handle spurious reads from timerfd gracefully. + - Fix potential stack-use-after-scope when starting Audacity. + - Fix distorted audio when using AVX2. + - Remove fallback to default channel map in channelmix. + - Improve sorting of MIDI events, use the same order as Ardour. + - Enable LFE downmixing by default. + - Make IEC958/AC3 and IEC958/DTS work better by enforcing a + fixed minimal buffering for the encoder to avoid stuttering. + * Pulse-Server + - Add a new pulse.cmd config section to execute pulse commands, + currently only for loading modules. This removes the + dependency on pactl. + - Improve debug of messages. +- Rebase reduce-meson-dependency.patch. +- Add patch to add channel-map in the echo-cancel module: + * 0001-pulse-server-add-channel-map-in-echo-cancel-module.patch + +------------------------------------------------------------------- +Sat Dec 10 14:04:50 UTC 2022 - Predrag Ivanović + +- Refresh reduce-meson-dependency.patch + +------------------------------------------------------------------- +Fri Dec 9 13:25:35 UTC 2022 - Predrag Ivanović + +- Update to version 0.3.62: + * Highlights + - A regression in screensharing was fixed. It was caused by a race when + activating links and driver nodes. + - Video transform metadata was added so that cameras and screen sharing + can report the video orientation and transformations. + - Support for the PulseAudio module-gsettings was added to make paprefs + work. + - Support for bluetooth offloading was added. This allows for the bluetooth + reception, decoding and playback to happen completely in hardware. + This also requires some support in WirePlumber. + - Many bugfixes and improvements. + + * PipeWire + - More work on stopping nodes in a more controlled way. + - Fix a race in starting nodes and drivers. In some cases the driver + node would already be started while the link to the peer node was not + ready yet. This caused regressions in screen sharing. The driver is + now only started after all the followers and links completed. + - Fix a case where a slow capture stream would not recycle buffers + anymore and stall. (glfo#pipewire/pipewire#2874) + - Fix a subtle bug in pw_loop_invoke that could cause callbacks to be + delayed and cause crashes in some cases. + - Fix a case where IPC was done from the data-thread and could cause + crashes. + + * Tools + - Silence some expected errors in the pw-top output. + + * modules + - The filter-chain has seen some optimizations in the copy plugin and + the convolver. + - The zeroconf plugin will now only unpublish services from the server + that was removed. + - Fix a potential crash when stopping pw-loopback. + - Some harmless errors were turned into info messages. + - Fix some cases where pw_stream methods were called from the data-thread + that could cause segfaults. (glfo#pipewire/pipewire#2633) + + * SPA + - There is now a video transform metadata that indicates how a video + frame was transformed (rotated/flipped). libcamera and the GStreamer + elements now have support for this metadata. + - The SPA volume plugin is now disabled from the default build. + - Handle missing control info in libcamera. + - Handle errors from loop better, don't call the callbacks on errors. + - Somewhat improve performance in some audioconvert AVX2 code for format + conversion. + - Fix PortConfig and EnumPortConfig params in audioconvert and + audioadapter to reflect what is actually going on instead of using + hardcoded values. + - Pass ignore-dB property correctly in all cases. + - Probing is now done in 48KHz again. (glfo#pipewire/pipewire#2857) + + * Pulse-server + - IPv4 addresses are now added first to the list and exposed first with + zeroconf discover. + - module-gsettings was added to make paprefs work. + - The pulse.idle.timeout option was disabled by default and only enabled + for selected apps (speech-dispatcher) because it caused some problems + for other apps. (glfo#pipewire/pipewire#2880) + + * JACK + - Only process valid ports. Could fix some crashes. (glfo#pipewire/pipewire#2863) + + * Bluetooth + - Support was added for offloading bluetooth handling. Some hardware can + receive, decode and play the bluetooth audio directly in hardware. + +------------------------------------------------------------------- +Sun Dec 4 15:48:22 UTC 2022 - Jan Engelhardt + +- Drop dependency on SDL2; this leads to a build cycle with SDL2 + itself, and is only needed for pipewire example code anyway. + +------------------------------------------------------------------- +Thu Nov 24 22:05:43 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.61: + * Highlights + - Fix a bug in audioadapter that could cause crashes when + switching bluetooth profiles. + - Fix sound in QEMU, deadbeef and openal again. + - libcamera plugin fixes, dynamic add and remove should now + work with the next wireplumber version. + - Fix a regression in pw-midiplay where the first buffer would + not play and some events would be missing. + - The network module now doesn't export other network sources + anymore. + - pulse-server now detects clients that keep underrunning for a + long time and will pause them to save power. + - Many more bugfixes and improvements. + * PipeWire + - Optimise away some useless graph recalculations. + - Increase alternative sample rates from 16 to 32. + - Silence some module loading errors when the error can be + ignored. + - Fix initial buffer requested size for pw-stream when + operating in async mode. This also indirectly fixes the first + buffer in pw-midiplay. + * Modules + - Set the network property on pulse-tunnel streams so that they + are not exported anymore. + - Filter-chain has optimized mix functions now. + * SPA + - Handle some errors in libcamera better. + - Fix libcamera remove events. Fix the id allocation for + devices. + - Fix a bug in audioadapter where it would not renegotiate + after a port reconfiguration, leading to crashes, especially + when automatically switching profiles in bluetooth. + - Do ALSA probing in 44100Hz again. Some devices seem to fail + otherwise for some unknown reason. + - Force playback start when the ALSA buffer is full. This fixes + sound in QEMU. + - Support Digital 5.1 AC3 for Asus Xonar SE. + - Improve format renegotiation in audioadapter. This makes the + ALSA plugin work again for deadbeef. + - Fix latency reporting on adapter DSP ports. + * pulse-server + - Fix a bug where openal based applications would hang. + - Improve zeroconf publish. Only publish on the address of the + first running server. This avoids duplicate entries for IPv4 + and IPv6. + Add support for republish entries when new servers are + started. + - Add a pulse.idle.timeout option (default to 5 seconds) to + pause streams that have been underrunning for this amount of + time. Badly behaving clients will then not keep the graph and + device busy so that devices can be suspended to save battery. + This should give better default behaviour with + speech-dispatcher. + * JACK + - Add an option to configure the filter character. + - Fix connect_callbacks. It was only called once for output + ports. + - Add option to set node.passive on jack clients. Make some + quirks for qsynth to make it suspend and fade out better. +- Rebase reduce-meson-dependency.patch. +- Drop patches already included upstream: + * 0001-audioadapter-perform-setup-again-after-a-PortConfig.patch + * 0001-pulse-server-also-advance-read-pointer-in-underrun.patch + * 0002-audioconvert-redo-setup-when-format-changes.patch + * 0003-acp-do-probing-in-44100Hz-again.patch + * 0004-alsa-force-playback-start-when-buffer-is-full.patch + +------------------------------------------------------------------- +Thu Nov 17 07:47:37 UTC 2022 - Antonio Larrosa + +- Add patch from upstream that fixes audio in qemu where the buffer + is very small (glfo#pipewire/pipewire#2830): + * 0004-alsa-force-playback-start-when-buffer-is-full.patch + +------------------------------------------------------------------- +Wed Nov 16 11:32:06 UTC 2022 - Antonio Larrosa + +- Add more patches from upstream to perform setup in more cases: + * 0001-audioadapter-perform-setup-again-after-a-PortConfig.patch + * 0002-audioconvert-redo-setup-when-format-changes.patch +- Renumber patch 0001-acp-do-probing-in-44100Hz-again.patch to + * 0003-acp-do-probing-in-44100Hz-again.patch + +------------------------------------------------------------------- +Wed Nov 16 11:16:01 UTC 2022 - Antonio Larrosa + +- Add patch from upstream to fix some devices that don't seem to + work in 48000Hz: + * 0001-acp-do-probing-in-44100Hz-again.patch +- Require pulseaudio-utils from pipewire-pulseaudio to have pactl + available to load modules. + +------------------------------------------------------------------- +Thu Nov 10 16:07:42 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.60: + * Highlights + - The filter-chain now handles errors better and has fixes for + many crasher bugs. + - A new RTP module was added with a sender and receiver. + It uses SAP to announce and consume RTP streams and is + compatible with the PulseAudio RTP modules. + - Many small bluetooth improvements and fixes. + - The alsa plugin will now only start playback when there is + data. This results in better synch and lower latency between + capture and playback. + - The v4l2 and libcamera plugins have seen a lot of + improvements. They support control properties now. Also + pw-v4l2 has seen many improvements and mostly passes the + v4l2-compliance test now. + - Many more bugfixes and improvements. + * PipeWire + - Code cleanups, compiler warning fixes. + - Add some extra checks to avoid scheduling an inactive node. + - Rework the sequence of events to start and stop nodes. + - Improve param enumeration. + - An option was added to give priority to the Buffer params of + the consumer. This makes it possible to use the default + values of the consumer (instead of the producer) when + capturing from a source. + - The graph rate selection was improved to pick a rate closest + to the requested one (instead of picking the default). + * Modules + - Fix some crashes in filter-chain. + - X11 Bell module will now be loaded by default when available. + - A new RTP module was added with a sender and receiver. It + uses SAP to announce and consume RTP streams and is + compatible with the PulseAudio RTP modules. + - Improve RAOP compatibility. + - The echo-cancel module now uses the resampler prefill option + to align input and output samples without buffering. Better + latency control when starting and stopping has been + implemented. + - The pulse tunnel will now write aligned samples to pulseaudio + even when the ringbuffer wraps around. This fixes playback + issues with multichannel sinks. + - Add a delay option to module-loopback using a ringbuffer. + - Implement echo-cancel params. + - The filter-chain module has better error reporting. + - The LADSPA search path was extended with some more common + paths. + - The echo-cancel input can now also be a monitor of a sink. + This improves compatibility with some proton games that + expect a real sink instead of a virtual one. + * Tools + - Better error reporting in pw-link. + - pw-top now also shows IEC958 passthrough formats and + JPEG/H264 video formats. + - pw-top refreshes the screen faster. + - pw-top now prints the state of the node and shows less info + for inactive nodes. + - pw-dump now uses the new seq field in the spa_param_info to + discard old param updates and avoid duplicate params in the + output. + * Bluetooth + - Add ModemManager support in the native backend. + - Clean up GetManagedObjects handling. + - Handle QoS from the endpoints in the codec. + - Increase the socket buffer to have more control over the rate + and QoS. + - Simplify the packet flushing code. + - Stop processing nodes before destroying them. + - Fix timers when a source switches drivers. + - Codecs can now share endpoints. This reduces the amount of + endpoints and avoids problems with devices that can't handle + a large amount of codec endpoints. + - Report batery status to UPower for HFP AG. + - Fix bitpool increase. + * SPA + - The audioresampler now avoids clicks and pops between + activating and deactivating the adaptive resampler when used + by the stream API. + - Use default locale to parse float parameters. + - The upmix functions now have SSE optimisations. + - Avoid recalculating the complete channelmix setup when only + the volume changes. + - The alsa plugin will now only start playback when there is + data. This results in better synch and lower latency between + capture and playback. + - The ALSA MIDI sequencer will now pull data from the graph + even when it did not output anything. Fixes some graph stalls + with the sequencer in some cases. + - v4l2 and libcamera sources now recycle buffers when nothing + is consuming them. This avoids stalling the graph. + - libcamera now suggests a more appropriate frame size than the + smallest poster frame. + - Improve state changes in audioconvert. + - A new seq field was added to spa_param_info to keep track of + pending param updates. + - Support speaker output only on RealTek ALC4080. + - The v4l2 source now supports setting controls. + - The libcamera plugin now supports enumerating and setting + controls. + - A new unit test for 6.1 channel mapping was added. + More debug info was added to audioconvert for the channel + matrix. + - Audioconvert will now also upmix a rear-center channel when + needed. + * pulse-server + - Add support for the RTP send and recv modules with the new + native RTP module. + - Add option to set latency for pulse-tunnel streams and + module-zeroconf-discover. + - The socket will now be given the same permissions as what + pulseaudio did (0777). + - Implement module-loopback latency_msec correctly with the new + delay parameter. + - sysfs.path is now filled with the same data as pulseaudio. + - The manager now uses the new seq field in the spa_param_info. + - Fix a bug where in some cases the read pointer would get out + of synch and cause too large requests. + * ALSA + - The alsa plugin now reuses the stream in prepare which + results in better performance. + - Some deadlocks have been fixed in the ALSA plugin. + - The ALSA plugin reports more accurate timing information in + some cases. + * V4l2 + - The v4l2 compatibility layer has received a lot of updates. + - Improved node names and format enumeration. + - Support for multiple /dev/videoX devices, each mapped to a + unique PipeWire node. + - Passes the v4l2-compliance test now with both the v4l2 and + libcamera backend in PipeWire. + - Improved mmap support for inline buffer memory. + This makes it possible to consume PipeWire streams. + - Negotiation works more reliably now. + * JACK + - Implement jack_acquire_real_time_scheduling() and + jack_drop_real_time_scheduling() by keeping the thread utils + in a global state. + - Fix jack_client_thread_id() to return NULL when the client is + not active, just like jack1 and jack2. + - An option was added to let the jack_set_buffer_size() + function update the global metadata. A quirk was added so + that jack_bufsize uses this new feature to make the buffer + size settings persistent and global, just like jack. + - jack_port_register() and jack_port_unregister() can be called + on an active client so make this thread safe. +- Rebase reduce-meson-dependency.patch. +- Drop patches already included upstream: + * 0001-filter-chain-iterate-the-port-correctly.patch + * 0002-spa-support-the-speakers-output-only-case-in-report_.patch +- Add patch to make Telegram playback work again: + * 0001-pulse-server-also-advance-read-pointer-in-underrun.patch + +------------------------------------------------------------------- +Wed Nov 2 12:48:20 UTC 2022 - Takashi Iwai + +- Fix regression with Dell WD15 Dock and others (bsc#1204719): + 0002-spa-support-the-speakers-output-only-case-in-report_.patch + +------------------------------------------------------------------- +Sat Oct 8 20:46:58 UTC 2022 - Alexei Sorokin + +- Add 0001-filter-chain-iterate-the-port-correctly.patch: Fix + filter-chain convolver segfault at start. + +------------------------------------------------------------------- +Sat Oct 1 18:25:10 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.59: + * Highlights + - Fix possible wrong samplerate in loopback streams after + suspend and rate switch. + - module-filter-chain can now adapt to the graph samplerate. + - Fix some potential stuttering and crackling in pulse-server. + - Add Bluetooth LE support. This requires experimental kernel + and bluez support. + - The ALSA plugin has more options to control the buffer size. + This can be used to work around high latency in + davinci resolve. + - Many bugfixes and improvements. + * PipeWire + - Add audio capture example with volume meter. + - Fix a case where a rate switch would not suspend all the + nodes of the driver first. This could cause wrong samplerates + in streams. + - Fix a case where a node would be Paused while still added to + the graph, causing potential crashes. + * Modules + - module-filter-chain and module-loopback now use the + resample.prefill option to avoid buffering extra samples and + causing unwanted latency when resampling is activated. + - module-filter-chain can now adapt to the graph samplerate. + - Improve module-raop to support the ALAC codec as raw PCM. + - Improve RTSP parsing to improve compatibility. + * Tools + - Fix 100% CPU in pw-cli monitor mode. + - spa-acp-tool can now be exited with ctrl-D. + * SPA + - Various libcamera fixes and improvements. + - Set stride on audioconvert output buffers. + - Make sure we always place the last requested size from the + resampler on the buffers in pw-stream. + - Add resample.prefill option in the resampler to fill the + history with 0 so that we don't have smaller buffers at the + start. + - Make sure that when an overflow corrupts a POD, that it will + always stay corrupted. + - Rate limit some ALSA warnings and reduce some unwanted + warnings. + - Don't recalculate the audioconverter state for each + pause/play. + - Fix some POD parsing inconsistencies and potential overflows. + - Add support for Asus Xonar SE. + - Fix Flush command handling. It should not stop playback. + - Refactor the peaks function and add some unit tests and + optimisations. + - The channelmix has an optimized nXm converter and new + unit tests. + - Normalisation in the channelmixer was fixed. + * pulse-server + - The requested latency of record streams was reduced to fix + some stuttering in Teamspeak. + - Tweak the max amount of bytes sent to a client. + - Improve maxlength calculations, this fixes some crackling + noise with high samplerate and channel counts in some + players (audacious). + * Bluetooth + - Merge Bluetooth LE support. + - Make sure we are backward compatible with WirePlumber. + - Fix some HFP and HSP AT command parsing. + - Use HFP by default over HSP. + * ALSA + - Increase max number of periods. + - The parameters handling was improved. There is now an option + to set the buffer-bytes of the ALSA plugin. + - PIPEWIRE_ALSA can now be used as an environment variable to + restrict the plugin formats and buffer size. +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Thu Sep 15 09:26:22 UTC 2022 - Antonio Larrosa + +- Update to version 0.3.58: + * Highlights + - Fix a regression that could cause audio crackling. + - Fix a regression in RTKit because rlimit was not set + correctly. + - JAVA sound applications will now alsa work with the + pulseaudio-alsa plugin. + - pw-top will now show the negotiated formats of devices + and streams. + - Fix some potential crashes when starting streams. + - The ALSA plugin has had improved timing reporting and poll + descriptor handling that should improve compatibility. + - Many more improvements and bugfixes. + * PipeWire + - Avoid scheduling nodes before they are added to the graph. + This could avoid some crashes when scheduling nodes that + were not completely started yet. (#2677) + * Tools + - pw-top now also shows the negotiated formats of streams and + devices. (#2566) + - pw-top prints microseconds as "us" now to avoid unicode + problems. + * Modules + - Fix compilation with newer lv2. + - Fix setting realtime priority with RTKit, it was not setting + rlimit correctly and RTKit would refuse to change the + priority. + - Fix some playback problems with RAOP sink. (#2673) + - Filter chain will now warn when a non-existing control + property is used in the config file. (#2685) + - Filter chain can now handle control port names with ":" + in the name. (#2685) + - The echo-cancel module and interface now has + activate/deactivate functions to make it possible for plugins + to reset their state. + * SPA + - Make sure audioconvert uses the given channelmap and channels + for the volumes, even when not negotiated yet. This makes it + possible to change the volume before the node has been + negotiated. + - Refactor the peaks resampler. Fix an error in the SSE code. + - Fix DSD min/max rates, avoid exposing impossible rates. + - Set monitor port buffer size correctly. This could cause some + crackling and hickups. (#2677) + - Make ALSA sequencer port names unique. + * Pulse-server + - Rework the capture buffer attributes to better match + pulseaudio. This fixes a regression where opening pavucontrol + could cause crackling. (#2671) + - Implement TRIGGER and PREBUF methods. + - Handle clients that send more than the requested amount of + data. PipeWire will now also keep this as extra buffered data + like PulseAudio. This fixes JAVA sound applications when they + are running on top of the PulseAudio ALSA plugin. + (#2626,#2674) + - Update the requested amount of bytes more like PulseAudio. + Fixes stuttering after resume with the GStreamer pulseaudio + sink. (#2680) + * ALSA Plugin + - More debug info was added. The time reporting was improved. + - The poll descriptor handling was improved, avoiding some + spurious wakeups. (#1697) + +------------------------------------------------------------------- +Fri Sep 2 10:10:53 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.57: + * Highlights + - Support masking of conf.d/ files. + - Use org.freedesktop.portal.Realtime when available. This does + the correct PID/TID mappings to make realtime also work from + flatpaks. + - Fix rate adjustement logic in pulse-tunnel. This would cause + increasing delays and hickups when using tunnels. + - Add OPUS as a new vendor codec. Add OPUS-A2DP spec. + PipeWire can now send and reveive OPUS data over bluetooth. + - An AAC decoder was added so that PipeWire can now also + function as an A2DP AAC receiver. + - Fix some issues where the wrong samplerate was used. + - Fix rate match for sources. This fixes an error where + follower sources would generate many resync warnings. + - Many more bugfixes and improvements. + * PipeWire + - Support masking of conf.d/ files. + - Add some more debug info to memfd. + - Improve data-loop invoke method. Also flush pending items. + - Add a filter-chain systemd service file than can be used to + start custom filters placed in + ~/.conf/pipewire/filter-chain.d/ + - Improve triggered timestamps for remote nodes. + - Fix some potential cross compilation problems due to wrong + host_machine. + - Check return values of pw_getrandom(). + * Tools + - Updates to pw-cli manpages. + - Remove the pw-cli dump command. It is mostly implemented as + part of wpctl status, pw-dump, pw-link, pw-top and others. + - Clean up resource in pw-cat correctly on errors. + * Modules + - Fix compilation of AVB on big-endian. + Enable AVB only on Linux. + - Use org.freedesktop.portal.Realtime when available. This does + the correct PID/TID mappings to make realtime also work from + flatpaks. + - Fix compilation of ROC module when headers are missing. + - Improve some error cleanup paths in protocol-native. Improve + connect and disconnect. + - Fix a potential crash in FFT unload in filter-chain. + - Implement PIPEWIRE_NOTIFICATION_FD for notification when the + socket is ready. + - Try to use rtkit if set_nice() fails. + - Fix rate adjustement logic in pulse-tunnel. This would cause + increasing delays and hickups when using tunnels. + - Handle disconnect in pulse-tunnel. + * Bluetooth + - Add OPUS as a new vendor codec. Add OPUS-A2DP spec. + PipeWire can now send and reveive OPUS data over bluetooth. + - An AAC decoder was added so that PipeWire can now also + function as an A2DP AAC receiver. + * SPA + - Tweak the resampler window function some more. + - Improve format convert performance in some fallback cases. + - Fix rounding in format conversion on ARM NEON. + - Fix libcamera build error. + - Fix some issues where the wrong samplerate was used. + - Don't wait for more samples that can fit in the ringbuffer + in ALSA. + - Improve buffer size handling in audioconvert, scale the + buffers based on the rate conversion and make things work + with really large rate conversions as well. + - Add more and better debug for ALSA devices. + - Improve channel mix: Filter FC and LFE when copying from a + different layout. Implement STEREO from FC. Avoid generating + REAR from FC in PSD mode. + - Fix rate match for sources. This fixes an error where + follower sources would generate many resynch warnings. + - Improve ALSA format negotiation. If the ALSA node is not + running and there was a previously configured format, close + and reopen the device to enumerate and accept all possible + formats again. + * ALSA + - The alsa plugin will now also save the volumes set with the + control API. This saves the volumes set with alsa-mixer, for + example. + * Pulse-server + - Flatpak apps with devices=all (Zoom) will now be granted + Manager permissions. + - Small tweaks to the amount of data sent to clients to work + around an issue in freerdp. + * JACK + - Clean up the transport correctly when closing a client. + - Match context properties in addition to node properties for + the jack client rules. + - Make sure to return an error when disconnected from the + server. + - Fix thread cast problem in jack_client_thread_id(). + - Increase jack_client_name_size() length and make sure we have + space for the \0 byte. + - JACK clients from the same application will be added to the + same group so that they share the quantum and rate. +- Rebase reduce-meson-dependency.patch. +- Drop patches already included upstream: + * 0001-avb-fix-compilation-on-big-endian.patch + * 0002-avb-fix-compilation-on-big-endian.patch + * 0003-avb-fix-compilation-on-big-endian.patch + +------------------------------------------------------------------- +Mon Aug 1 12:07:38 UTC 2022 - Antonio Larrosa + +- Recommend pipewire-alsa (instead of alsa-plugins-pulse) from + pipewire-pulseaudio (boo#1201409) + +------------------------------------------------------------------- +Tue Jul 19 14:00:39 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.56: + * Highlights + - A critical bug that could crash JACK applications was fixed. + - Some more regressions in audiomixer were fixed. This should + fix crackling and stuttering in some cases as well as some + channel mapping regressions. + - A bug in the alsa plugin was fixed that could cause + stuttering in VMs. + - Bluetooth sources should have improved latency and rate + control. + - Many more bugfixes and improvements. + * Modules + - An experimental AVB module was added. It can expose PipeWire + as an AVB entity and initiate (broken) streaming between + entities. + - module-loopback now handles the cases where the input and + output channels are different without crashing or producing + silence. + - The filter-chain module now correctly calculates the output + size without crashing in some cases. It also skips invalid + ports instead of crashing. + - Handle and report pthread errors better. + * SPA + - The resampler qualities were tweaked a little. + - A bug that would sometimes cut off the last part of a buffer + was fixed in the alsa plugin. This could cause broken audio + in VMs. + - Access to the alsa mixer and devices is now checked more + thoroughly. + - The spa-resample tool can now also handle large downsampling + rates without crashing. + - Audioconverter now uses rounding for float to int + conversions, which reduces distortions. Compilation of the C + subroutines was separated and uses its own optimisation flags + now. + - Noise shaping was improved in audioconvert. A new Wannamaker + 3 tap shaper was added. + - Audioconvert now uses a pattern for generating keep alive + noise. This should have much less energy and be even more + inaudible. + - A channel mapping bug was fixed in audioconvert. + - The dsp audio mixer would sometimes not mix enough and cause + dropouts. + * JACK + - A critical bug in the mixer was fixed. It would cause most + JACK applications to segfault at start-up. + * Bluetooth + - A new rate control algorithm was implemented for the sources. + - The media role on HSP/HFP streams is now fixed. + * Pulse Server + - Add the resampler delay to delay reporting as well. +- Rebase reduce-meson-dependency.patch. +- Drop patches already included upstream: + * 0001-jack-only-mix-when-we-have-input-to-mix.patch + * 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch +- Add patches from upstream to fix compilation on big endian: + * 0001-avb-fix-compilation-on-big-endian.patch + * 0002-avb-fix-compilation-on-big-endian.patch + * 0003-avb-fix-compilation-on-big-endian.patch + +------------------------------------------------------------------- +Wed Jul 13 09:20:57 UTC 2022 - Fabian Vogt + +- Add patch to fix audio after tty switching (boo#1201349): + * 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch + +------------------------------------------------------------------- +Tue Jul 12 16:20:23 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.55: + * Highlights + - Fix some more critical bugs in the new audioconvert and the + queueing in pw-stream that causes stuttering and hickups. + - HFP hardware volumes are now saved and restored. + - Format conversions and mixing was improved. + - Small bug fixes and improvements. + * PipeWire + - The queueing in pw-stream was improved with support for + buffer prefetch in asynchronous mode. + - Add a pw-filter unit test. + * tools + - pw-midiplay should now work again after improvements in + pw-stream. + * modules + - The RAOP module was improved to support auth_setup. + - The RAOP module should now handle timing packets better. + - Add some more filter-chain examples. + - The filter-chain now has a separate config file with the + boilerplate settings. The examples are now just config + snippets that can be dropped in .conf.d/ directories, such as + the filter-chain.conf.d/ one. + - Start suggesting to use target.object instead of node.target + in docs and examples. + * SPA + - Use the cosh window again for the resampler. It should now + give better resampler quality. + - Rework the mixer functions. They were rewritten for higher + precision and better performance. Add unit tests and + benchmarks. + - Improve format conversion for 32bits for avoid errors in + clang because of undefined behaviour at extreme ranges. + - Fix a bug in audioconvert where it would not consume the + right amount of samples when the resampler was disabled. + This could cause skipping and hickups. + - Fix bug in audioconvert where it would try to convert the + input samples multiple times, causing strange artefacts when + upmixing. + - Be more strict about valid JSON floats. + - device.vendor.id and device.product.id should now always show + up in 0xXXXX format and should not be converted to floats in + pw-dump anymore. + - Add triangular dither, add unit tests for noise generation, + add some more optimisations. + * Bluetooth + - HFP and A2DP now expose different routes and thus can have + different volumes. + - HW Volumes for HFP are now synchronised better. + Volume changes from HW buttons are now also saved. +- Rebase reduce-meson-dependency.patch. +- Add 0001-jack-only-mix-when-we-have-input-to-mix.patch: Fix an + Ardour start-up crash. + +------------------------------------------------------------------- +Thu Jul 7 08:50:16 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.54: + * Highlights + - Some critical bugs in the new audioconvert were fixed. The + old adapter had internal buffering that was abused in some + places. + - The bluetooth sources were rewritten using a ringbuffer to + make them more reliable to jitter and remove old audioconvert + behaviour. + - Many improvements to the audio converter. + - Native DSD128 and up is now supported by pw-dsdplay. + * tools + - Support DSD128 to DSD512 as well by scaling the amount of + samples to read per time slice. + * SPA + - Format conversion is now generated with macros to remove + duplication of code. + - 24bits conversions were rewritten to use the generic + conversion functions. + - Temporary buffers in audioconvert are now made large enough + in all cases. + - Fix draining in audioconvert. This fixes speaker-test. + - Fix the channel remapping. + - Audio conversion constants were tweaked to handle the maximum + ranges and provide lossless conversion between 24bits and + floats. + - Vector code and C code are aligned and the unit tests are + activated again. A new lossless conversion test was added. + - Fix an underrun case where the adapter would not ask for more + data. + - Fix PROP_INFO for audioconvert. + - Use the blackman window again for the resampler, the cosh + window has some bugs that can cause distortion in some cases. + - Add more unit tests for audioconvert. Add end-to-end + conversion tests. + - Don't leak memory in format converter. + * pulse-server + - Card properties are now also added to sinks and sources, + just like in pulseaudio. + - Increase the maxlength size to at least 4 times the fragsize + to avoid xruns. + - Fix a race when setting default devices. + * Bluetooth + - The source was rewritten to use a ringbuffer. This avoids + regressions caused by audioconvert. +- Drop patches already included upstream: + * 0001-audioconvert-ensure-temp-buffers-are-large-enough.patch +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Fri Jul 1 14:25:49 UTC 2022 - Alexei Sorokin + +- Add a patch from upstream to fix segmentation faults in MPV: + * 0001-audioconvert-ensure-temp-buffers-are-large-enough.patch + +------------------------------------------------------------------- +Thu Jun 30 10:40:53 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.53: + * Highlights + - The 44.1KHz samplerate was removed again from the defaults, + it caused all kinds of problems with various hardware. + - The ALSA plugin should now be able to deal with unsupported + samplerates and fall back to the nearest supported one. + - The audioconvert plugin was rewritten to be more maintainable + and quicker. It also gained support for control ports and + dithering with optional noise shaping. + - An impossible buffering situation is avoided in pulse-server + that would cause some applications (sunshine, ...) to + stutter. + * PipeWire + - 44.1KHz was removed from the allowed rates again. It caused + all kinds of regressions due to driver bugs and timing issues + on HDMI. + * modules + - filter-chain now does some more error checking and reporting + to avoid some crashes. + - filter-chain now supports more channel layouts for input and + output that does not need to match the plugin layout. + - Format parsing is now more consistent in the modules. + * Tools + - pw-cli can now also work without readline support. + - pw-cat can now also read multichannel ulaw/alaw/u8/s8. + * SPA + - The audioconvert plugin was rewritten. This should make it + more maintainable. It also fixed some issues such as CPU + spikes in some cases and crashes in others. The old plugins + were removed, for a code reduction of some 6000 lines. + - The audioconvert plugin now supports control ports, which can + be enabled on nodes in the session manager. This makes it + possible to control audioconvert properties using timed + events or midi. + - NoteOn 0-velocity MIDI events are no longer filtered out. + This is a valid event, nodes that can't deal with it should + fix it up themselves. The JACK layer still filters out these + events by default but this can now be configured with a + per-client property. + - The running status on midi events is now disabled to match + what JACK does. + - The ALSA plugin will now deal with driver bugs when a driver + announces support for a samplerate but then refuses to use it + later. + - The ALSA plugin has been optimized a little for sample IO. + - V4L2 now doesn't error when there are no controls. + - Error handling was improved in the audio converter. + - The audioconvert plugin now supports rectangular dithering + and noise shaping. + - The audioconvert plugin can now insert additional inaudible + noise that can be used to keep some amplifiers alive. + - The audioconvert format conversion was changed so that it now + produces the full 32 bits range in the C fallback conversion + code as well. + - The resampler window function was changed to a cosh() window + function. + - Vendor and device id are now in hex. + * pulse-server + - Tweak the record buffer attributes some more and make sure + we don't end up in impossible buffering situations. + Fixes an issue with distorted sound in sunshine. + - Fix a potential crash when updating the client property list. + - Some properties on cards were aligned with pulseaudio. +- Drop patches already included upstream: + * 0001-settings-remove-44.1KHz-from-allowed-rates-again.patch +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Wed Jun 22 17:47:19 UTC 2022 - Antonio Larrosa + +- Add patch from upstream to remove 44.1kHz from allowed rates. + This reverts the new behaviour in 0.3.52 which is causing + problems to too many people (boo#1200760): + * 0001-settings-remove-44.1KHz-from-allowed-rates-again.patch + +------------------------------------------------------------------- +Thu Jun 9 15:02:18 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.52: + * Highlights + - Add 44.1KHz to allowed samplerates. The server can now switch + by default between 48KHz and 44.1KHz. + - Streams now allocate less resources. + - Fix some bugs that could make the server crash. + - Bluetooth now supports the LC3plus vendor codec. + - Many bugfixes and improvements. + * PipeWire + - Add 44.1KHz to allowed samplerates. + - Avoid setting the locale. + - Avoid use-after-free when destroying a node from + spa-node-factory. + - Avoid using reallocarray when not available. + - Set port alias is not otherwise set. + * Modules + - Improve filter-chain parsing and error reporting. Handle + empty nodes. + - Handle destroy of globals and factory in most modules. + - Add refcounts to client and resources to handle destroy of + the protocol. + - Handle global node.name in filter-chain and loopback again, + use it to construct unique stream names. + - Avoid a wrapped pw-node in the adapter. This reduces + resources allocated for streams. + - Fix a crash when module-x11-bell was unloaded. + - Add a new module-pipe-tunnel that can write/read data from a + UNIX pipe. + * Tools + - Fix DSD playback again in pw-cat. + - Add -n option to pw-loopback to set node names. + - Add -P option to pw-cat to pass properties to the stream. + - Support stdin/stdout in pw-cat. + - pw-dump now also dumps object removal when monitoring + * SPA + - Avoid duplicate param results in pw-dump for ports. + - Avoid endless loops in audioconvert for badly behaving + clients. + - Scale max-error in alsa based on quantum and avoid logging a + warning when starting. + - Improve debug of failed format conversion. + - Handle offset in the audio dsp mixer inputs and clamp to the + maximum buffer size. + - Add option to disable locale support for JSON number + conversion. + - Add support for Astro A20 Gen2. + - Fix some of the test sources, the flags were not set + correctly. + - Add camera location as property in libcamera and let the + session manager generate a localised description. + - Fix some crashes due to wrong vargar types in v4l2 controls. + - Improve ALSA resync behaviour. + - Add support for Komplete Audio 6 MK2. + - Improve loop cancel while iterating. + - Try not to mix surround channels and AUX channels. Make card + with many ports look better when not using the Pro Audio + profile. + - Vulkan filters were added. + * Bluetooth + - Add LC3plus vendor codec. + - Handle unsupported indicators better. + - Ensure multiple devices on an adapter use different codecs + because one endpoint can only be used by one device at a time. + - Fix bitpool control as a follower. + - Handle bluetooth errors better. + - Speed up bluetooth connection by only waiting for the profiles + supported by the adapter. + - The dummy AVRCP player is disabled by default because it seems + to break more devices than it fixes. + * pulse-server + - Add initial stream latency property so that devices can be + started with a resonably accurate latency. + - Fix ringbuffer underrun case. + - module-native-protocol-tcp now has a auth-anonymous option to + give full access to the clients. + - Report a node as being moved when it is still moving. This + improves compatibility with pasystray. + - Avoid overallocating message memory. + - Don't export NETWORK nodes in zeroconf. + - Fix stride for TrueHD and DTSHD passthrough. + - Make sure we don't send too small audio fragments. Fixes + capture from multiple tabs in Chromium. + - Rework module handling some more. + - Use the new native module-pipe-tunnel for pipe-sink and + pipe-source. + - Implement the STREAM_MOVED message when a stream got moved. + - Fix a potential segfault when stopping the server and a TCP + module as still loaded. + * ALSA + - Add support for updating sw_params at runtime, mostly the + min-avail param. + - Capture and playback nodes are now assumed to use a different + clock and will activate the adaptive resampler when linked. + This assumption is removed in Pro Audio mode. This provide a + better experience out of the box with most devices. + * JACK + - Fix setting properties with PIPEWIRE_PROPS again. + - Don't use 64 bits atomic operations for sync_timeout. + - Cleanup in error cases was improved, avoiding some crashes. + * GStreamer + - Fix pipewiresink in mode=provide. + - Share memory into a new buffer in pipewiresrc to avoid buffer + corruption. + - Fixes to the source and fd use. + - It is now possible to set client properties as well. +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Thu Apr 28 23:13:59 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.51: + * Highlights + - Improve graph reconfiguration. + - Extra configuration options for streams and filters with + config rules and environment variable. + - Improve module-pulse-tunnel latency, stability and error + recovery. + - pw-top, pw-cli and pw-link improvements. + - Fix a channelmixer upmixing clipping issue. + - The ROC module has seen many improvements. + - Many more bugfixes and improvements. + * PipeWire + - The graph reconfiguration code was reworked: + * Moved nodes will update the new driver quantum correctly. + * Inactive nodes are ignored more. + * Nodes that require a driver are now not scheduled anymore + when they are passive (unused). + * Improved performance, the graph is reconfigured with a + minimal amount of changes. + - Method and event argument names were improved. + - A linker garbage collection problem was fixed. + - Properties on threads are now implemented. Use common code to + set thread name and add an option to set stack-size. + - Streams and filters always want a driver now. This makes it + possible to just link a playback stream to a capture stream + without a driver and have it work. + - Streams and filters can now also have rules in the config + file. + - Streams, filters, JACK, ALSA and v4l2 now support + PIPEWIRE_PROPS environment variable to override node + properties. + - Add config section extensions. This provides a way for modules + to have specific config to override the default config. + - Handle realloc errors better. + - Improve stream and filter property updates. + * Modules + - The pulse-tunnel modules has improved latency management and + should now work a lot better. + - Module-loopback, module-echo-cancel, module-filter-chain + unload the module when a stream is destroyed. + - Biquads in filter-chain now can have more gain (5->20 dB). + - Filter-chain now has a builtin delay line filter. + - Filter-chain can now parse the config key correctly in all + cases. + - The ROC sink and source saw many improvements. roc-source is + now a stream by default that connects to the default sink. + Both modules will try to set a graph rate. Both modules have + an option to select the FEC mode. + The ROC source has lower latency now. + - Handle realloc errors better. + * tools + - pw-cat does not have --list-targets anymore, use one of the + more advanced and less buggy tools such as wpctl or pw-cli to + list sinks and sources. + - pw-top has seen many improvements. + * It now has some timeouts to reset the node values to their + default state when unused. + * The man page was improved. + * Invalid timings and errors are displayed in a better way. + - pw-cli and pw-link can now create links between all ports of + given nodes. + - pw-cat can now save to other file formats than wav, based on + the extension of the filename. + * SPA + - The resampler now uses a different internal method for + draining. It can now also handle 0 size buffers as input + without draining. + - The channelmixer now uses the front channel averages for FC + and LFE. + This avoids clipping and results in much better upmixing. + - ALSA should now work again on 32 bits. (#2271) + - The JSON parser now converts escaped unicode correctly to UTF8. + * bluetooth + - Codec switch improvements when the device is disconnected. + * pulse-server + - There is a new module-roc-sink-input module, the PulseAudio + equivalent. + - The ROC source and sink-input module now have a much lower + latency. + - The ROC module now has an option to select FEC mode. + - Playback and record rate adjustements should work now. + * JACK + - Remove some useless pthread attributes. This makes JACK work + in QEMU with sandboxing enabled. + - The buffer_size callback is now only called when something has + changed since the last process() callback or get_buffer_size() + method. This fixes a GStreamer issue and is more in line with + what JACK does. + - Fix a potential deadlock when the process thread is doing IPC + and the IPC thread is blocking on the data thread. + - Allocation errors in metadata are handled better. +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Thu Apr 14 11:26:22 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.50: + * Highlights + - pw-stream can now report more timing information and can + suggest the optimal number of samples to queue for playback. + - pw-dot now works again. + - module-pulse-tunnel latency was improved. + - Wine applications using the JACK backend should no longer + crash. + - The channelmixer defaults are improved and the muffled sound + when playing back 5.1 and 7.1 material has been fixed. + - Many fixes and improvements. + * PipeWire + - pw-stream now places a suggested amount of samples in the + pw-buffer for playback. This allows you to remove some places + where spa_io_rate_match was needed to get this information. + - pw-stream has new API to request a timing update. New fields + are added in the timing info, such as number of buffered + samples in the resampler and the number of queued and + dequeued buffers. + - pw-stream has support for double controls now. More controls + are exposed such as the Rate control to do adaptive + resampling. + - The thread-utils object was moved to the context to avoid + some concurrent use cases that caused crashes. + - Deactivating an exported node/stream will now remove the node + from the data-thread immediately so that the process function + will not be called anymore and resources can be safely freed. + This could fix some of the last remaining crashes when + streams are stopped. + - PipeWire will now fail to load a module that tries to + register the same export type twice instead of silently doing + the wrong thing. + * Modules + - Many modules now use the NODE_WANT_DRIVER instead of the + pipewire.dummy NODE_GROUP property. This makes it possible to + use them with any other driver and can avoid resampling in + some cases. + - module-pulse-tunnel now uses an adaptive resampler to keep + the latency under control. Latency should be much better than + before and stay constant even when there are network delays. + - There is now an option for packages to disable building the + RTKit module, which is still built by default for backwards + compatibility reasons. + - A leak was fixed in filter-chain. + - Module node names are now made more unique with the pid. + * tools + - pw-cat verbose output has been improved. + - pw-link now has a man page. + - pw-reserve now has an -r option to make it issue a + RequestRelease command on the owner of the device. This makes + it possible to ask WirePlumber to close and release a device. + - Fix pw-dot again. It didn't work anymore because of stray + done events that were emitted to notify the client of object + serials. + * SPA + - The channelmixer now has PSD upmixing enabled again. We used + the simple upmixing in the previous release but that just + sounds too awful to be a good default. + - The channelmixer will not upmix FC and LFE anymore when + upmixing is explicitly disabled. + - The channelmixer will only lowpass filter FC and LFE channels + when they were upmixed. + - The defaults of the channelmixer were tweaked a little. There + is now a little bit more bass in the LFE channel and more + high fequencies in the FC channel when upmixing. Also the + channel widening has been disabled by default. + - Locale independent float parsing now uses a more portable + solution with uselocale. + - ALSA will now only allocate a buffer size big enough to hold + 4 times the quantum limit instead of as large as possible. + * pulse-server + - Internal cleanups in handling of modules. + - A quirk to force s16 sample formats for teams-insider has + been added. + * JACK + - The data-loop is now started in activate and stopped in + deactivate. + This makes the data-loop respect any custom thread functions + you configure. This also makes Wine apps using the JACK + backend work. + - Port sorting was improved/fixed. +- Rebase reduce-meson-dependency.patch. +- Require RealtimeKit. + +------------------------------------------------------------------- +Tue Mar 29 15:09:49 UTC 2022 - Antonio Larrosa + +- Reorder BuildRequires and space conditions a bit better in the + spec file. + +------------------------------------------------------------------- +Tue Mar 29 07:56:08 UTC 2022 - Antonio Larrosa + +- Update to version 0.3.49: + * Highlights + - Sample rate switching should work again. + - pw-dot can now use the output of pw-dump to render a graph. + - Bluetooth A2DP streaming was improved that would reduce + stuttering on some devices. + - A JACK bug was fixed that would sometimes make it impossible + to add more tracks in Ardour. (#1714) + - Many bugfixes and improvements. + * PipeWire + - Fix a potential crash when NULL params were configured. + - Add some simple functional tests to avoid some recent + regressions. Improve the test framework for this as well. + - Improvements to the poll loop to avoid some use-after-free + scenarios. + - Fix samplerate switching again. + - setlocale is not called anymore from the pipewire library. + This should be called by the application. (#2223) + - pw_init() and pw_deinit() can now be nested and called + multiple times. + - pw_stream will now report the resampler delay in the + pw_time.queued field. + * modules + - module-filter-chain now supports arbitrary many properties + and will use property hints to assign them the right type. + - The ROC modules now accept a sink/source_properties + parameter. + - The module-rt can now also be built without RT-Kit support. + - module-echo-cancel can now use a fraction to specify the + delay for more precise control. + * SPA + - The channelmixer will now do upmixing by default and will not + use normalization. It will also use a simple upmixing + algorithm that duplicates channels by default. A more + interesting upmix method is also available (PSD) but needs to + be enabled manually. (#861) + - Add SSE optimized (de)interleave functions for 32 bits + samples with and without byteswap. + - JSON parsing of empty strings will now give an invalid number + instead of 0. + - JSON numbers are now parsed and serialized in a locale + independent way so that , and . are not mixed up. + - The resampler will now report the resample delay and queued + samples as the extra delay. + * tools + - pw-cat will read more dsf files correctly and will not crash + at the end. + - pw-top now has a man page. + - pw-dot can now use the output of pw-dump to render a graph. + * bluetooth + - Improve interactions with oFono. + - Fix recovery with slow connections. + - Improve frame size of AptX-ll. + - A2DP can now use any quantum and will flush packets in + smaller chunks when needed to adapt. This improves stuttering + in some cases. + * pulse-server + - The server configuration can now be placed in + pulse.properties section, which also makes it possible to + have custom overrides. + - Implement FIX_ flags for capture as well. + - Small fixes and improvements in module loading. + * JACK + - Clear the last error before executing a new action or else we + could end up with error from a previous action. This causes + some problems in Ardour where adding a track would fail after + some time. (#1714) +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Thu Mar 3 11:10:53 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.48: + * Highlights + - Fix IEC958 passthrough again. + - Fix pulse-server crashes when playing a sample. + - Support for more a more advanced upmixing algorithm. + - filter-chain now supports arbitrary many ports. + - Fix multichannel support in WINE (with new WirePlumber). + - Many bugfixes and improvements. + * PipeWire + - The work queue is now created in the context so we can fail + early and avoid further error checking in various places. + - Fix a potential use after free with threaded loops. + - The protocol now has a message footer. This is used to pass + around global state such as the last registered object + serial number. This can be used to detect when a client tries + to bind to old (but reused) object ids. This avoids some + races in the session manager but also when binding objects. + - The zero-denormals CPU flag is now not touched anymore unless + explicitly selected by the user. Denormals are avoided in + filter-chain now in software. If the zero-denormals are now + only configured in the data thread. This should fix issues + with luajit. + - Configuration parsing will not actually fail on errors. + - pw-top now correctly clips unicode characters. + - Many places now use a dynamic POD builder to support + arbitrary large property sets. + - pw-stream now support PropInfo parameters so that they can + announce custom properties. + - Serial number are now also set on metadata and + session-manager objects. + * SPA + - audioadapter is now smarter when trying to fixate the format. + It will use the PortConfig format to fill in any wildcards. + This results in the least amount of conversions when the + stream can handle it. It also is part of a fix (also requires + a session manager fix) for WINE multichannel support. + - Fix 5.1 to 2 channels mixing. It was using the volume of the + stereo pair on all channels. + - Fix some weird volume issues when a source is capturing and + channelmixing. + - Add stereo to 7.1 upmixing. + - The channelmix parameters can be changed at runtime now. + - Many improvements to the upmixing algorithms. Rear channels + are now constructed from the ambient sound and can have delay + and phase shift applied to them to improve spacialisation. + The stereo channels can be filtered so that the dialogue is + more concentrated in the centre channel. + * modules + - Module X11 bell received cleanups and improvements. + - The module now has a private method to schedule unload later. + This simplifies cleanup in many modules. + - module-filter-chain now handles arbitrary many ports and + control ports. + - Fix a bug in RAOP where it was reading from the wrong port. + * pulse-server + - Nodes with the DONT_MOVE property should fail with -EINVAL + when they are moved. + - Fix a segfault when playing a sample. + - The _FIX flags in pulse-server also now ignore the configured + sample format, just like pulseaudio does. + - Fix IEC958 passthrough again. It got accidentally broken + since 0.3.45 with a fix for another issue. + - Fix module-null-sink device.description. + * Bluetooth + - Don't try to connect HSP/HFP when no backend is available. +- Drop patches already included upstream: + * 0001-revert-loop-remove-destroy-list.patch + * 0002-pulse-server-free-pending-sample-reply.patch +- Rebase reduce-meson-dependency.patch. +- Enable pulseaudio-setup use on openSUSE Leap 15.4. +- Some spec clean-up. + +------------------------------------------------------------------- +Mon Feb 21 12:24:26 UTC 2022 - Alexei Sorokin + +- Add 0001-revert-loop-remove-destroy-list.patch: fix MPD crash. +- Add 0002-pulse-server-free-pending-sample-reply.patch: fix + "fast volume change". + +------------------------------------------------------------------- +Fri Feb 18 14:06:20 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.47: + * Fix a bug in pulse-server that caused cached notifications to + play multiple times. + * Remove a check and warnings to catch leaked listeners on the + proxy. This might access invalid memory and cause infinite + loops in older wireplumber. +- Rebase reduce-meson-dependency.patch. + +------------------------------------------------------------------- +Thu Feb 17 10:42:44 UTC 2022 - Antonio Larrosa + +- Update to version 0.3.46: + * Highlights: + - Fix a critical bug in pipewire-pulse buffer size handling + that made some apps (MuseScore, ... ) stutter. + - Fix a critical bug where devices would not show when the + kernel was compiled without VERBOSE_PROCSFS. + - JACK clients will now use lock-quantum by default. This + makes sure that all dynamic quantum changes are disabled + while a JACK app is running. The only way to force a + quantum chance is through a JACK app or with the metadata. + - Almost all limits on number of ports, clients and nodes are + removed. + - A Dummy fallback sink is now automatically created when + there are no other sinks. This avoids stalling browsers. + - Sound sharing with Zoom should work better. A new WirePlumber + release might be required. + - Many more fixes and improvements. + * PipeWire + - Update docs with new config overrides. + - The rule matching logic was moved to config and code is now + shared with pulse-server and JACK. + - Add new Romanian translation. + - When a quantum is forced with metadata, any node that asked + to lock-quantum is ignored so that the quantum change can + happen. + - Fix a bug where a mixer was removed twice, leading to + potential memory corruption. + - The port limits on nodes and filters are now removed. + Some code was simplified. + - Fix a potential leak because listeners where removed while + they could be emitted. + - Improve context.exec and avoid zombie processes. + * Modules + - The RAOP module now has a default latency of 2 seconds, + like PulseAudio. + - The echo-cancel module now uses the plugin loader to load + the backends. This makes it possible to add custom, out of + tree, echo cancel plugins. + * Tools + - Improve help of pw-link. + - Output to stdout and error to stderr. Use setlinebuf for + stdout to improve piping between apps. (#2110) + * SPA + - Improve removing sources when dispatching. Also improve + performance now that a destroy loop can be removed. (#2114) + - Fix an fd leak in the logger when logging to a file. + - Improve loop enter/leave checks and support recursive loops. + * pulse-server + - Clamp various buffer attributes to the max length. Fixes some + issues with various applications. (#2100) + - Module properties are now remapped correctly from their + pulseaudio variant to the PipeWire ones. + - Fix module index in introspect. Use the right index when + loaded from our internal modules. (#2101) + - Improve argument parsing and node.description. (#2086) + - The sink-index should now be filled in correctly when playing + a sample. (#2129) + - module-always-sink is now implemented and loaded by default. + (#1838) + - Add support for loading some modules only once. + - Module load and unload now does extra sync to make it appear + synchronous, like in PulseAudio. This improves sounds sharing + in Zoom. + * ALSA + - Fix critical bug where alsa devices would not show when the + kernel was compiled without VERBOSE_PROCFS. + - Some corner cases were fixed in the ALSA timing code. When + the capture node is follower, it will now not try to read too + much data and xrun but it will instead produce a cycle of + silence. + - Various fixes and improvements to make ALSA devices resync to + the driver more quickly and accurately. + * JACK + - Add an option to name the default device as system to improve + compatibility with some applications, + - Use lock-quantum by default. This makes sure that all dynamic + quantum changes are disabled while a JACK app is running. The + only way to force a quantum chance is through a JACK app or + with the metadata. + - It is now possible to do IPC calls from the data thread. Note + that this is a very bad idea but required for compatibility + with JACK2. + * GStreamer + - GStreamer sink will now set a default channelmap to make it + possible to remap to the channel layout of the device. +- Update patch for further uses of "new" meson features used by + upstream: + * reduce-meson-dependency.patch + +------------------------------------------------------------------- +Tue Feb 15 09:47:31 UTC 2022 - Alois Wohlschlager + +- Run ldconfig for pipewire-libjack-0_3 + * The JACK libraries are made available system-wide using + /etc/ld.so.conf.d. Hence, ldconfig should be run to make sure + the dynamic linker picks them up. + +------------------------------------------------------------------- +Thu Feb 3 11:56:13 UTC 2022 - Antonio Larrosa + +- Update to version 0.3.45: + * Highlights + - Zoom, telegram and other apps should be able to play sound + again. + - Implement a better way to force and lock JACK buffersize. + - Default sink and source names and properties are improved. + - The config loader can now load and merge fragments in conf.d + directories for easier user configuration of config files. + - Many small bug fixes and improvements. + * PipeWire + - pw-cli can now also send Commands to nodes. This can be used + to Suspend a device, for example. + - The eventfd was removed from loops and invoke is now used to + stop the loop, this saves an fd. + - New Alpine CI target to test musl builds, various build + fixes. + - Add force-quantum and force-rate properties. + - The config loader can now load and merge fragments in conf.d + directories. (#207) + - resource error methods can be called without a resource and + then just log an error message. + - link-factory can now also work from the config. (#2095) + * modules + - module-simple-protocol has better argument parsing and can + handle channelmap now. (#2068) It's also possible to + configure latency and rate. + - The native protocol now does extra checks for invalid data. + (#2070) + * ALSA + - TI2902 chips as found in various Behringer cards should have + inputs again. + - Better handling of busy devices in udev, retry when the + inotify close event is emited. + * SPA + - plugins now handle alignment properly and only expect the max + alignment required for the CPU. (#2074) + * Bluetooth + - SBC-XQ is now enabled for the JBL Endurance RUN BT headset. + - Support for non-hexadecimal XAPL version strings to improve + compatibility. + - Use HCI commands again to probe the adapter msbc capability. + This improves compatibility with some adapters. (#2030) + - Set the right startup volume. + - Better A2DP source idle handling. + - Fix a timer bug in SCO sink that could cause busy looping. + * pulse-server + - A playback issue when the tlength > maxlength was fixed. + (#2069) This affected Zoom and other applications. + - The STREAM_BUFFER_ATTR command is now implemented. + - Module names are improved. (#2076) + - Many small fixes and improvements. + - Fix a pavucontrol crash with invalid channels. (#1442) + * JACK + - Use the new force-quantum and force-rate properties in the + JACK API to switch quantum and ensure it can't change for + the lifetime of the JACK app. (#2079) +- Rebase patch: + * reduce-meson-dependency.patch + +------------------------------------------------------------------- +Tue Feb 1 14:23:13 UTC 2022 - Dario Faggioli + +- pipewire should be a true dependency, not just recommended (e.g., + so that any setup that use no-recommends, like MicroOS, also work) + +------------------------------------------------------------------- +Thu Jan 27 14:04:28 UTC 2022 - Antonio Larrosa + +- Add patch to reduce the meson requirement so we can build + pipewire with Leap 15.3. This will be dropped as soon as + Leap 15.4 is released or if it becomes too hard to maintain + (whatever happens before): + * reduce-meson-dependency.patch + +------------------------------------------------------------------- +Thu Jan 27 10:45:39 UTC 2022 - Alexei Sorokin + +- Update to version 0.3.44: + * Highlights: + - It is now possible to run a minimal PipeWire server without a + session manager, enough to run JACK clients. + - The maximum buffer size is now configurable and can be larger + than the previously hardcoded limit of 8192 samples. + When using high sample rates, the larger buffer size can + avoid xruns. + - The default maximum latency was reduced from 170ms to 42ms. + This should improve overall latency for application that ask + for a large latency, such as notifications. + - Better JACK compatibility. Patchbays should now get less + confused about ports appearing and disappearing. + - Fix some bluetooth crashes. + - Fix some races in ALSA device detection. + - Many bug fixes and improvements all over the place. + * PipeWire: + - Bump the meson requirement to 0.59.0. + - pw-top now reports correct times for filter-chain and + loopback. + - max-quantum is now also scaled with the rate. A new + quantum-limit property was added as a hard limit for the + quantum. This makes it possible to configure for larger than + 8192 buffer sizes. Note than many JACK applications have a + hardcoded 8192 limit. + - The max-quantum was reduced to 2048, This gives a 42ms + default latency. + - pw-filter can now return a NULL buffer from _get_dsp_buffer() + - Add a PIPEWIRE_RATE and PIPEWIRE_QUANTUM env variable to set + the graph rate and the graph quantum and rate respectively. + - Fix a potential file descriptor leak in the connection. + - A new minimal.conf file was added to demonstrate a static + setup of a daemon that doesn't require a session manager and + is able to run JACK applicaions. + - Nice levels are now only changed on the servers, not the + clients. + - Add an option to suspend nodes when idle. + - Make it possible to avoid quantum and rate changes with + pw-metadata. This is essential in a locked down system. + - Handle mixer port errors better and fail to create the link + instead of silently not working. + - Nodes that are moved to a driver now have all the linked + nodes moved as well. This makes it possible to run some + graphs without a driver, such as paplay -> zita-j2n. + - pw-cli and pw-dump can now also list objects by name, serial + and object.path using glob style pattern matching. + * modules: + - filter-chain can now also configure parameters by index. + - Fix the client name of module-protocol-simple. + - module-rtkit was merged into module-rt. This makes it easier + to ship a default config that works on more systems by + default. + - module-adapter can now configure the adapter node from the + config. Previously, this was a task only performed by the + session manager. + - module-metadata can now also create metadata object from the + config file. + - The ROC module should now work again. + - An X11-bell module was added to handle X11 bell events. + - filter-chain and loopback modules now have better unique + default names for the streams, which makes it possible to + save and restore their volumes independently. + - module-echo-cancel now has properties to control the delay + and buffer size. + * ALSA: + - The monitor names are now correctly parsed. + - The default period size for batch devices is limited now to + avoid large latency. + - The unused min/max-latency properties were removed. + - Internal latency is now also configurable with params at + runtime. + - The udev rule for TI2902 was removed because it causes + problems. + - Fix a race where some devices would sometimes be missing. + - Add some more timeouts to work around a race in udev device + permission changes when switching VTs. + * SPA: + - Fix potential infinite loop in audioconvert. + - The spa-resample tools can now also use optimised + implementations. + - Fix a potential crash in resampler. + - audioconvert can now also handle F64 formats. + - The channelmixer now does normalization by default to avoid + clipping when downmixing is active. + - The channelmixer will now generate LFE channels when the + lfe_cutoff frequency is set, even when upmix is disabled. + - The channelmixer will now always generate FC when the target + has it. + - Adapter now reports latency correctly, even after linking the + monitor ports. + - Reduce memory usage and preallocated memory in some of the + audioconvert nodes. + - Many properties are now exposed in adapter, such as the + resample quality. + - The resampler and channelmixer can now be disabled. + * V4L2: + - pw-v4l2 now also works for ffplay. + - Take product names from udev now that the kernel returns + generic name. + * JACK: + - The jack pkgconfig file now has the + jack_implementation=pipewire variable to be able to + distinguish jack implementations. + - jconvolver now starts correctly again. + - The object.serial is now used for the port_id. This makes it + easier to track old objects in the cache. + - Add a dummy jacknet implementation. + - A bug in the port allocation was fixed that would make it + impossible to allocate ports at some point. + * Bluetooth: + - Bluetooth profiles are now saved properly by the + session manager. + - Improved profile detections, increased timeouts for slow + devices. + - Implement HFP call indicator for improved compatibility. + - Handle the case where bluez does not set the adapter or + address properties on the device instead of crashing. + - Improved support for setting the profile from the + session manager. + * pulse-server: + - Monitor sources now have the device.class=monitor for better + compatibility. + - Behaviour after seeking is improved. The algorithm for + requesting bytes from the client was simplified and improved. + - module-ladspa-sink implements the control argument now. + - A potential memory leak in the message queue was fixed. + - Use the object.serial for the pulseaudio object index. The + index is not supposed to be reused and this would cause + problems with some clients. + - Servers should now again be able to listen in IPv4. + - module-x11-bell was added. + - There is now support for per-application quirks and + properties in the pipewire-pulse.conf file. Per-application + latency and buffering properties can also be configured. + - Fix a regression in telegram sounds not playing. +- Drop patches already included upstream: + * 0001-alsa-improve-rate-selection.patch + * 0001-audioconvert-avoid-infinite-loop.patch + * 0001-bluez5-dont-create-device-if-adapter-is-missing.patch + * 0001-bluez5-handle-missing-device-and-adapter-in-quirks.patch + * 0001-jack-remember-last-return-from-jack_get_buffer_size.patch + * 0001-loop-invoke-immediately-when-loop-is-not-running.patch + * 0001-merger-also-reconfigure-when-monitor-changes.patch + * 0001-pulse-server-show-monitor-sources-with-device_class_monitor.patch + * 0001-pw-metadata-handle-NULL-props-from-metadata-object.patch + * 0001-raop-fix-errno-check.patch + +------------------------------------------------------------------- +Wed Jan 19 16:49:42 UTC 2022 - Antonio Larrosa + +- Add several more patches from upstream +- BlueZ may be missing adapter information for devices in some cases. + Ignore devices without specified adapter: + * 0001-bluez5-dont-create-device-if-adapter-is-missing.patch +- Fix a case when pipewwire could never call callbacks or even + block forever when loop is not running: + * 0001-loop-invoke-immediately-when-loop-is-not-running.patch +- Reconfigure when monitor changes + * 0001-merger-also-reconfigure-when-monitor-changes.patch +- Handle NULL props from metadata object + * 0001-pw-metadata-handle-NULL-props-from-metadata-object.patch +- Improve rate selection so we don't select an invalid rate when + the default is set or the card is already opened in an + unsupported rate: + * 0001-alsa-improve-rate-selection.patch + +------------------------------------------------------------------- +Fri Jan 14 16:34:05 UTC 2022 - Antonio Larrosa + +- Add several patches from upstream +- Avoid an infinite loop when enumerating params of the converter: + * 0001-audioconvert-avoid-infinite-loop.patch +- When the device or adapter is NULL, skip the quirk checks instead + of crashing: + * 0001-bluez5-handle-missing-device-and-adapter-in-quirks.patch +- Remember the last returned value from jack_get_buffer_size and + only emit a buffersize change event when something new is + configured. This fixes startup of jconvolver. + * 0001-jack-remember-last-return-from-jack_get_buffer_size.patch +- Better emulation of pulseaudio which shows monitor sources with + device.class=monitor so now pipewire does that too: + * 0001-pulse-server-show-monitor-sources-with-device_class_monitor.patch +- Fix an errno check: + * 0001-raop-fix-errno-check.patch + +------------------------------------------------------------------- +Wed Jan 12 12:48:21 UTC 2022 - Antonio Larrosa + +- Added more baselibs packages and their dependencies + +------------------------------------------------------------------- +Wed Jan 5 16:23:30 UTC 2022 - Bjørn Lie + +- Update to version 0.3.43: + * Highlights: + - Flatpak apps such as Ardour can now remove links again. + - Many fixes to pulse-server. Memory usage should be improved. + Some crashes are fixed. Underrun handling should work better. + Better compatibility with GStreamer based applications after + seeking. + - Many of the samplerate and quantum changes bugs in previous + releases were fixed. This fixes some issues where the + microphone would fail to work. + - Many more small fixes and improvements all over the place. + +------------------------------------------------------------------- +Thu Dec 16 16:42:31 UTC 2021 - Antonio Larrosa + +- Revert the merge of spa-plugins and modules into the library + package. +- Move some of the files between packages where they make more + sense. +- Rename the modules subpackage to modules-%{apiver_str} so + it can be versioned more easily (there still are some unversioned + files in the package, but it's a step in the right direction) + +------------------------------------------------------------------- +Thu Dec 16 14:03:56 UTC 2021 - Antonio Larrosa + +- Remove unneccesary Conflicts with packages that are Obsoleted + +------------------------------------------------------------------- +Thu Dec 16 12:32:49 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.42: + * Highlights + - Fixes a bug in pulse-server underrun handling that broke qemu + and orca. + - A fix was added to pulse-server to handle quantum changes + gracefully. + - Fix module-echo-cancel again. + - Fix a bug where the bluetooth headset capture was producing + noise. + +------------------------------------------------------------------- +Wed Dec 15 13:28:10 UTC 2021 - Antonio Larrosa + +- Remove the dependency on wireplumber-audio which was pulling in + pulseaudio. We'll require wireplumber-audio directly from + wireplumber. +- Remove pipewire-rpmlintrc since the filters don't apply anymore + +------------------------------------------------------------------- +Wed Dec 15 13:27:44 UTC 2021 - Antonio Larrosa + +- Merge the pipewire-spa-plugins-0_2 and pipewire-modules + packages into the libpipewire package just as the fedora packages + do and simplify the filelist a bit by using some recursive + listing instead of explicitly listing all files. + +------------------------------------------------------------------- +Mon Dec 13 10:33:29 UTC 2021 - Antonio Larrosa + +- Use the gcc9-c++ compiler in SLE/Leap so it builds successfully. + +------------------------------------------------------------------- +Mon Dec 13 09:45:21 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.41: + * Highlights + - Improved compatibility for flatpaks. Flatpaks with newer + PipeWire version can connect to an older server in all cases. + - A new RAOP module was added to stream to Apple Airplay + devices. + - OBS can now capture from the monitor devices again when using + WirePlumber. + - Improved JACK compatibility. Improved stability in Carla and + Ardour when changing buffer size. Improved latency + calculations and playback latency in Ardour. + - Improved pulse-server handling of underruns and buffer size + changes. + - Many bugfixes and improvements. + * PipeWire + - The systemd service files now have better names. + - client.access permission checks are improved. + - Fix some memory leaks in error paths. + - Objects now have a global serial number that is unique for + the lifetime of the server. + - Make clock.rate, clock.allowed-rates and clock.quantum + runtime tunable parameters with the settings metadata. + - Add some additional memory checks in client-node to avoid + sending invalid memory to clients. (#1859) + - Improve buffer memory allocation. If one of the nodes is a + remote node, ensure we only use memory that can be shared. + - Version checks when binding to objects is removed. This means + that newer clients can now bind to older servers, which is a + typical case for a flatpak. + - A bug in the latency calculations was fixed where it would in + some cases report the wrong minumum latency. + * modules + - module-echo-cancel has voice-detection enabled now. + - module-raop-sink and module-raop-discover to stream audio to + an Apple Airplay device. + - module-filter-chain now has preliminary support for LV2 + plugins. + * SPA + - The audio resampler now has improved buffer size + calculations. In some cases it was too small and would cause + distortions. + - More checks are done when doing volume changes so that the + channelmap is correct. + - Audioadapter now exposes most config options with params so + that they can be adjusted at runtime. + - The resampler can now calculate the expected input buffer + size before receiving the first buffer, which avoids some + confusion when starting streams. + - Support was added for some 10bit video formats. + - MONO channel handling was improved. + - Most plugins now set a clock name and this is configurable + where it makes sense. The clock.system.monotonic clock name + is used for most plugins that use the system clock for + timing. + * pulse-server + - implement module-raop-discover + - Use STREAM_CAPTURE_SINK property when capturing from a + monitor source to better inform the session manager. This + fixes some issues where OBS would capture from the + microphone instead of the output monitor. + - Limit the amount of cache messages to 16MB and don't add + large memory blocks to the cache. This should fix some + excessive memory usage that people reported. + - Fix a potential memory leak when cleaning up a client. + - Do some additional checks to avoid buffer overruns. + - Improve recovery from underruns better. (#1857) This improves + seeking in gnome-music. + - Improve recovery when the quantum is forced larger that the + stream configured latency. + - The prebuf state is now handled correctly. + * JACK + - A per type object cache is now implemented. This ensures that + port objects remain valid for a longer time because many JACK + applications inspect objects after they are destroyed. This + improves catia/carla compatibility. + - Recompute the latencies when the buffer-size changes. Fix + some cases where we would end up with negative latencies. + - Handle regcomp errors to avoid some crashes later. + - Latency calculations are improved a lot. + - More care is taken to not call a process callback while a + buffer size change is pending. This fixes some crashes in + Carla, which expect that all clients are paused when one + handles the buffersize callback. + - Loopback links to a client are now handled correctly and + without latency. This fixes playback latency in ardour6 + (#1839) + * ALSA + - ALSA devices now keep track of the samplerate of the card + and ensure that all PCM use the same rate. This is a + workaround for a kernel bug that is fixed in 5.16. + - Refactor the ALSA plugin a little. + - The ALSA plugin now reports correct delay for a capture PCM. + (#1697) + - The ALSA nodes now expose all config options with params + that can be changed at runtime. + - The ALSA node has a configurable clock name. Adaptive + resampling to match clock rates is avoided when the driver + has the same clock name as the ALSA node. This can be used + to link alsa devices together with a word clock. + +------------------------------------------------------------------- +Sat Dec 11 16:21:56 UTC 2021 - Fabian Vogt + +- Drop server packages from baselibs.conf. Only the client parts + are needed in there. + +------------------------------------------------------------------- +Fri Dec 10 09:31:47 UTC 2021 - Antonio Larrosa + +- Minor aesthetic changes in the spec file + +------------------------------------------------------------------- +Thu Dec 9 12:14:23 UTC 2021 - Neal Gompa + +- Enable AAC support for Leap 15.4+ + +------------------------------------------------------------------- +Thu Dec 9 11:33:29 UTC 2021 - Antonio Larrosa + +- Replace the Recommends wireplumber to a Suggests since there's + already a Require dependency on a pipewire-session-manager and + when in doubt the Suggested package is selected. + +------------------------------------------------------------------- +Thu Dec 9 10:34:27 UTC 2021 - Antonio Larrosa + +- Unconditionally enable AAC support now that fdk-aac-free is in + Factory (adapted from SR 936225 by Neal Gompa + ) + +------------------------------------------------------------------- +Fri Dec 3 09:06:42 UTC 2021 - Antonio Larrosa + +- Makes sure if we're using wireplumber and pulseaudio that + we don't enable the audio devices in pipewire by requiring + wireplumber-audio or pulseaudio if wireplumber is installed + +- Better integration with PulseAudio (bsc#1188516) made by tiwai: + * Add Requires pulseaudio-setup package for the extra setups + in the %post section + * Add the missing Recommends alsa-plugins-pulse to + pipewire-pulseaudio package + +------------------------------------------------------------------- +Fri Nov 12 12:47:56 UTC 2021 - Bjørn Lie + +- Update to version 0.3.40: + * Highlights: + - Producers and consumers can now incrementally negotiate a + format by narrowing down the options. This can be used to + select an optimal combination of format and modifiers. + - Driver nodes such as the consumer of a headless compositor + can now throttle the speed based on a new trigger_done event. + - Headless compositors can now signal a damage event to + consumers to start the processing of the graph. + - Compatibility improvements in JACK. + - Draining and resuming is now working correctly in pulse and + alsa. + - Many bugfixes and improvements. + * PipeWire: + - Many BSD fixes. + - clang compilation fixes. + - Fix map implementation on big-endian machines. + - Improve tracking of param changes in pw-stream. + - Add support for renegotiation. With this change, producer and + consumer can incrementally renegotiate a format until it is + fixed. This will be used to do complex negotiation of DRM + modifiers. + - Add a trigger-done event in the stream. This can be used to + know when processing of the complete graph has finished after + issuing a trigger_process() and it can be used to throttle + processing. + - Add a RequestProcess node event and command. This can be used + by non-driver nodes to suggest to a driver to start + processing. One case is where a compositor can emit this + event as a result of a screen update to let the headless + compositor start an update. + - Fix zeroconf sample format. + - pw-mon outputs to stderr now and has colors. + * SPA: + - Fix compilation on ppc and armv7. + - Fix port type check for ALSA seq midi ports so that they are + not falsely listed as hardware. + - Fix crash when running SSE code on unsupported HW. + - The libcamera plugin was rewritten. It now supports hotplug, + format enumeration and an easier to read codebase. + - Fix compatibility some more for cards with 64 channels. + * pulse-server: + - Flush data in pause in combine-sink to avoid stray audio + fragments. + - Fix a race where not all objects were removed correctly. + - The latency calculations and setup was improved to more + closely match pulseaudio behaviour. PULSE_LATENCY_MSEC should + now resemble pulseaudio more closely. + - The drained reply is now sent only once and new data will be + accepted once the drain completes. + - Fix a potential crasher bug where the stream started + processing before the setup was completed. + - The server will now drop the client connections when the + pipewire connection is lost. + * JACK: + - Rework the jack_port_get_buffer() method to return the same + memory when called multiple times during the process() + callback. This makes things work on a new Hydrogen. + - Add an option to disable showing the monitor ports. + - JACK ports are now sorted per node/client and port_id. This + should more closely match JACK behaviour and avoid random + port order. + * v4l2: + - Fix v4l2 LD_PRELOAD script. + - Make sure we destroy the proxy when the global is destroyed. + * ALSA: + - _prepare should exit the draining state. + - Fix the precision of the _delay function by taking into + account the amount of queued samples are the correct + samplerate. +- Drop patches fixed upstream: + * 0001-cpu-fix-compilation-on-some-architectures.patch + * 0001-map-make-_insert_at-fail-on-a-removed-item.patch + * 0002-map-use-uintptr_t-for-the-next-pointer.patch + +------------------------------------------------------------------- +Wed Nov 3 08:47:41 UTC 2021 - Antonio Larrosa + +- Recommend wireplumber so it's preferred to pipewire-media-session + +------------------------------------------------------------------- +Fri Oct 29 15:17:51 UTC 2021 - Antonio Larrosa + +- Add patches from upstream to fix build in s390x: + * 0001-map-make-_insert_at-fail-on-a-removed-item.patch + * 0002-map-use-uintptr_t-for-the-next-pointer.patch + +------------------------------------------------------------------- +Fri Oct 29 08:54:01 UTC 2021 - Antonio Larrosa + +- Use readline-devel instead of pkgconfig(readline) so it can be + built in Leap15.3/SLE15-SP3 + +------------------------------------------------------------------- +Thu Oct 21 10:10:40 UTC 2021 - Antonio Larrosa + +- Fix %systemd_user_post using the now separated + pipewire-media-session.service + +------------------------------------------------------------------- +Thu Oct 21 09:27:57 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.39 + * Highlights + - media-session is now moved into a separate module to speed up + its deprecation in favour of WirePlumber. + - There is now an LD_PRELOAD v4l2 emulation library to run some + existing v4l2 applications on top of PipeWire. + - Filter-chains should now flush out remaining samples when + paused. There is now also the option to let a filter-chain + drain so that long filters + such as reverbs can fade out properly. + - Stability and compatibility improvements in JACK apps. + - Better Bluetooth compatibility with more devices. + - libcamera plugin improvements. + - Many bugfixes and improvements all over the map. + * PipeWire + - Fix compilation on ARM. + - Log topics are added to most modules. + - Documentation updates. Many improvements to the layout. + Reorganisation of the modules and groups. + - Share a work queue for all links and nodes. This removes the + need for a separate eventfd per link and per node. + - Catch errors in the map implementation. + - Add option to compile without dbus support. + - Fix biquad frequency. It was using the wrong sample rate. + - Fix a potential crash when destroying nodes, in some cases + the node would not be deactivated properly. + - Add some more helpers for dealing with properties and their + values. + - Implement flush and reset on virtual sinks/sources. + - Make it possible to let virtual sinks/filter-chains run and + drain after being idle. + - Fix a bug where the quantum could exceed the maximum because + it was scaled with the sample rate. + - Fix channel_map parsing in module-zeroconf-discover so that + the remote channel map is used. + - pw-stream errors emitted on the proxy are reported but not + fatal any more. They are usually used by the session manager + to signal status to the client but otherwise does not really + cause an error on the client. + - Links now also store the output and input node id in the + global properties so that applications can parse and use them + regardless of how the link was made. (#1723) + - pw-stream and pw-filter now have an event to notify commands. + - The echo-cancel module can now operate on larger quantums. + - pw-cat now uses the right metadata to find the default + devices in --list-targets. + * media-session + - Don't try to remix unpositioned streams when linking. This + ensures that linking to Pro-Audio nodes does not remix the + stream channels but links them as they are, one by one. + - media-session is now moved to a separate module to accelerate + its deprecation in favour of WirePlumber. + * SPA + - Many libcamera improvements, handle MemFd buffers, handle + errors gracefully. + - Small improvements to make interface fall-backs easier to + implement. + - Add support to enable flush-to-zero and denormals-are-zero + to avoid high CPU usage when dealing with denormals. + - AUX13 channels are no longer reported as AUX12. (#1727) + - Devices with more than 32 channels in Pro-Audio mode now only + uses AUX channels. + - Improve windowing function of the resampler to reduce + aliasing and improve the quality. + * JACK + - Port connect callbacks will not only be emitted after the + port has negotiated buffers, which improves compatibility + with applications that try to use the port right after the + callback (jack_midi_latency_test). + - Fix crash when midi ports were removed and being monitored, + like in Ardour. + * pulse-server + - The pulse tunnel will now use the specified + format/rate/channels. + - Improve lookup of default source and fall back to the + monitors when no sources are available. + - Mark some nodes as network nodes so that we can set the + NETWORK flag correctly. + * GStreamer + - The GStreamer element not releases the buffers in the stream + again in all cases so that they can be reused by other + streams. + * v4l2 + - Add a v4l2 LD_PRELOAD library to emulate v4l2 system calls on + top of PipeWire. This is tested with firefox and GStreamer + and is known to not work with Chrome. + * Bluetooth + - AAC compatibility improvements. + - Disable hardware volume for "Tribit MAXSound Plus" and + "SoundCore mini". + - Add quirk to disable faststream. Disable faststream on + "FiiO BTR3". + - Add a dummy AVRCP player to improve compatibility with some + devices. +- Remove patch: + * 0001-fix-compilation-on-ARM.patch +- Add patch from upstream: + * 0001-cpu-fix-compilation-on-some-architectures.patch + +------------------------------------------------------------------- +Wed Oct 13 09:10:51 UTC 2021 - Antonio Larrosa + +- Add patch from upstream to fix compilation on ARM (boo#1191600): + * 0001-fix-compilation-on-ARM.patch + +------------------------------------------------------------------- +Thu Sep 30 10:03:37 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.38: + * Highlights + - Topic based logging was added to improve debugging. + - An off-by-one error was fixed in the audio resampler that could + cause distortion when downsampling. + - Various bluetooth compatibility improvements. + - More fixes and improvements. + * PipeWire + - module-pulse-tunnel now has better default latency to make it work + better in more cases. There is also an option to configure the + desired latency. + - pw-cli now has readline support. + - Topic based logging was added. Log lines can now be filtered by + topic using wildcards. This should improve debugging. + - The systemd service files should now have better descriptions. + - Fix a crash in module-zeroconf-discover when unloading. + - Fix a crash in filter-chain when using unaligned memory. + * ALSA + - Sync the udev rules and profiles with pulseaudio. + - Fix a memory leak. + * SPA plugins + - An off-by-one error was fixed in the resampler that could cause + distortion when downsampling. (#1646) + * Bluetooth + - Avoid probing the native backend because it might block for DBus + activation. This fixes some long startup times. + - Fix the kernel version check, 5.14.x kernels should also support + mSBC. + - Fix FastStream microphone support in more cases. + - Add workaround for Intel AX200. + - SCO sink should now also work in follower mode. + * PulseAudio server + - Make the service file require a session manager. + +------------------------------------------------------------------- +Wed Sep 29 18:51:13 UTC 2021 - Antonio Larrosa + +- Add BuildRequires: pkgconfig(readline) so pw-cli is built with + readline support + +------------------------------------------------------------------- +Thu Sep 23 09:20:46 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.37: + * Highlights + - Capture and playback is now avoided even more on unavailable + devices. This should fix some issues where an unusable + microphone was selected by default. It should now also again + be possible to select an unavailable device as the default. + - Native DSD audio playback is now supported. pw-cat can now + also play DSF files with the -d option. + - JACK stability improvements with buffer-size and samplerate + changes in some apps. + - Many cleanups and bugfixes all over the place. + * PipeWire + - pw-metadata -d does not cause an infinite loop anymore. + (#1622) + - Increase some plugin buffer sizes to fix some issues with + many channels. (#1620) + - Protect the global plugin list with a lock. Make sure + pw_init() is locked. Fixes some issues with concurrent ALSA + plugin usage. + * media-session + - Unavailable devices can be set as the default again. (#1624) + - Do a better check if a device has available routes and avoid + selecting devices with unavailable routes as default. + - Media-session was moved to its own directory. It used to live + in examples but it is past the example stage and it + interferes with the build options for the real examples. + * Bluetooth + - The hardware quirk database is now loaded by the plugin + instead of the session manager. This makes it also work with + wireplumber. + * ALSA + - The ALSA mixer now handles device removal much better. + (#1627) + * libcamera + - Many fixes and improvement to the libcamera plugin. (#1513) + * pulse-server + - Improve compatibility with pulseaudio module arguments. + - Parse channel_map arguments in module-loopback. (#1486) + * JACK + - Delay emiting the samplerate and buffersize callbacks until + the client is active. This fixes some crashes with Carla and + other JACK apps. + +- Drop patches already included upstream: + * 0001-media-session-dont-use-after-free-if-linking-node-removed.patch + * 0002-update-version-number-as-well.patch + +------------------------------------------------------------------- +Mon Sep 20 06:51:15 UTC 2021 - Antonio Larrosa + +- Add patches from upstream to fix an "use-after-free" error and + to set the version number correctly: + * 0001-media-session-dont-use-after-free-if-linking-node-removed.patch + * 0002-update-version-number-as-well.patch + +------------------------------------------------------------------- +Thu Sep 16 14:23:44 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.36: + * Highlights + - A quick update with mostly only bugfixes and small + improvements. + - Capture and playback is now avoided on unavailable devices. + This should fix some issues where an unusable microphone was + selected by default. + - MIDI output should not stop randomly now. + - The GStreamer elements are much improved, cheese should work + a lot better now. + - Virtual sinks and sources should now always show up + immediately. + - JACK processing is now delayed until buffersize and + samplerate are emited. This should improve stability of many + JACK apps. + - JACK transport sync is now implemented correctly so that + preroll in bitwig works. + * PipeWire + - The module dir environment variable can now contain multiple + paths. + - Documentation now contains dot graphs of dependencies. + (#1585) + - config min/max/default quantum values are now scaled with the + samplerate. + - A potential crash was fixed where destroyed memory was still + used by a node. This could cause crashes in cheese. + * pipewire-media-session + - Only allow passthrough for passthrough formats (S/PDIF) for + now. (#1587) + - Improve bluetooth profile autoswitch. + - Don't try to route audio to nodes with unavailable routes. + * ALSA + - Pass the right AES bits to the alsa device when opening an + S/PDIF stream. + - Fix a bug in the MIDI bridge port management logic. When a + port was added and immediately removed, output would stop. + * GStreamer + - The GStreamer source now handles the flushing state + correctly. + - All blocking operations now have a 30 seconds timeout, to + avoid infinite locks. + * Plugins + - V4l2 Device formats and controls are now passed on the node, + just like with audio devices. + - audioconvert now also exposes the softMute property. + * JACK + - Improve stability when changing buffer size and sample rate + dynamically by pausing the processing until the application + has handled the callback. + - Improve handling of timebase master. When the master was + moved to another driver, it did not attempt to become a new + timebase master on the new driver. (#1589) + - Implement transport sync to make preroll in bitwig work. + (#1589) + * pulse-server + - Fix an issue where virtual sinks/sources would not show up + immediately. (#1588) + +------------------------------------------------------------------- +Thu Sep 9 08:49:42 UTC 2021 - Frederic Crozat + +- Update to version 0.3.35: + * Highlights: + - S/PDIF passthrough over optical or HDMI is now implemented. + - Some critical fixes to MIDI, draining of streams and various + modules. + - skypeforlinux should work better now after adding it to the + quirks database. + - Bluetooth codecs are now in separate plugins to make it + easier to ship them. + * PipeWire: + - Drain was fixed in pw-stream. In some cases it would not + clear the drain state correctly. Fixes the issue where + speaker-test would only play one channel. + - Loopback connections to a driver will now activate the + driver. This fixes an issue where MIDI connections between + devices or some applications (puredata) would not get any + MIDI messages. (#1559)x. + - The audiomixer can now mix more formats. Together with the + passthrough improvements this can be used to avoid + conversions to/from the DSP format in some cases. + - Make sure we idle drivers when removing a node from it in all + cases. JACK clients could keep a driver node busy. + - Add new methods to accumulate object info. The old one was + difficult to use when applications need to accumulate + multiple changes. + - A new interface to load modules has been added. Plugins can + use this to ask the host (PipeWire) to load spa plugins. + - Increase param buffer size to handle larger params. Nodes + with a large number of channels would sometimes not have + properties. (#1574) + - Concurrent link negotiation that caused some links to not + work, is now avoided. This fixes monitor ports in Ardour6. + - Small tweaks to how the quantum and rate are handled when + nodes move between drivers. Make node.lock-quantum work with + node.latency + * PipeWire modules: + - The convolver plugin in filter-chain has been optimized some + more. + - The echo-cancel stream properties were improved so that it + actually can remember the streams it links to. (#1557) + - module-pulse-tunnel had the buffer attributes wrong and would + cause high latency with older pulseaudio servers. (#1434) + - module-roc had the properties configured wrongly, which would + cause it to not work at all in most cases. (#1538) + - There is now an example of a 7.1 virtual surround sink using + the hesuvi impulse responses. + - The convolver now supports dirac pulses as the IR. + * ALSA: + - UCM config is now cached per device, using up less memory. It + also temporarily works around a problem in alsa-lib that is + now being patched and rolled out. Should stop devices from + disappearing when logging out and back in. (#1553) + - Fix the MIDI clock rate matching. It was too sensitive to + small changes and would spiral out of control and break MIDI + rather quickly. + * pipewire-media-session: + - The media session can now save and restore IEC958 (S/PDIF) + codecs for the sinks. + - Passthrough of IEC958 (S/PDIF) content is now possible. If + the client and the sink contain a compatible set of codecs, + an exclusive connection can be made between client and sink to pass + the encoded S/PDIF content directly to the device. + - Use new introspection info update methods to suspend nodes in + all cases. Sometimes, nodes would fail to suspend because the + state info was not evaluated. + - The media session can now work in non-DSP mode, which will + try to avoid any audio conversions between client and device + when possible. But, this will also disable compatibility with + JACK applications. + * Bluetooth + - Bluetooth codecs are now compiled into separate plugins which + are dynamically loaded. This makes it possible to change the + plugin implementation or ship plugins separately without + having to recompile the bluetooth module. + * PulseAudio server + - Delay stream create reply until the stream is linked to a + sink/source. + - The device-restore extension is now implemented. This makes + it possible to configure the IEC958 (S/PDIF) codecs supported + by the sink with pavucontrol. + - skypeforlinux now uses the same quirks as teams to make the + sinks show up in all cases. This fixes the issue of not being + able to hear the remote end in skypeforlinux. + * JACK + - Improve catia and carla compatibility by caching objects a + little longer after being removed. (#1531) + - JACK ports now notify the negotiated format correctly. + - A potential deadlock was fixed when multiple threads would + perform a call that would require a roundtrip. + - Improve bufsize callback, it should not be called right after + doing activate() but only when the buffersize changes later. + - Add tweak to disable the process lock. Some older apps might + not expect it. (#1576) + * Docs + - man pages are now generated with rst2man. + - DMA-BUF docs were updated. + - Documentation updates. +- Replace BuildRequires xmltoman with docutils (rst2man) +- Update libcamera Buildrequires. + +------------------------------------------------------------------- +Fri Aug 27 08:33:01 UTC 2021 - Antonio Larrosa + +- Add BuildRequires: pkgconfig(libcap) since it's being searched + by the build scripts. +- Replace BuildRequires: pkgconfig(libopenaptx) with libfreeaptx + since openaptx has a license issue +- Use bcond_with to enable/disable the usage of libcamera + (the defaults are not changed: it's disabled in Leap since + upstream doesn't recommend enabling it yet and enabled in TW + since we can allow some experimental support there) +- Changes suggested by darix. + +------------------------------------------------------------------- +Thu Aug 26 12:27:15 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.34: + * Highlights + - Fixes some critical issues with previous release. Such as + devices not showing up and default devices being lost. + - Support for consumer driver streams to make the producer + v-sync to the consumer monitor in a headless compositor + setup. + - Improvements to routing of streams. + - Bluetooth battery status support for head-set profile and + using Apple extensions. aptX-LL and FastStream codec support + was added. + - Internal latency of ALSA devices can now be configured. + - A fast convolver was added to the filter-chain to implement + virtual surround sinks or reverbs. + * PipeWire + - Add support for streams that are driver nodes for the graph. + This was already possible for source streams but it is now + also possible for playback streams. This can be used to let + a producer v-sync to the consumer monitor in a headless + compositor setup. (#1484) + - State files are now stored in XDG_STATE_HOME instead of + XDG_CONFIG_HOME. They will still be loaded from the config + home if they are not in the new state home, to ease + migration. + - Set a driver on inactive nodes to make transport work in + xjadeo. (#1491) + - Fix parsing of filter-chain controls. + - A new FFT based convolver was added to module-filter-chain. + It uses a 0-latency 2 stage convolver with small FFT for the + head and a large FFT for the tail of the convolution. A + convolution can be used to implement IR based reverbs, HRIR + surround sound or other convolution based operations. An + example HRIR virtual surround sound sink has been added as + well. + - module-filter-chain was reworked a bit to support more config + options for the plugins. + - Endian conversion and alaw/ulaw formats are now supported for + streams. + - pw-cat will now suggest a samplerate for the graph. + - SPA_PLUGIN_DIR can now search in multiple paths separated + with a ':'. + - Passthrough mode has been worked on and has been partially + merged. S/PDIF definitions have been added and ALSA devices + updated to report and configure S/PDIF formats. The session + manager changes to fully configure and enable passthrough + mode will hopefully be merged next time. + - Fix a race in pw-stream where it would not always emit the + right events. + * ALSA + - Fix volume changed check. It was checking against the wrong + value and this could cause rounding errors. + - The ALSA plugin now also uses RT scheduling. + - Fix the behringer UMC202 usb device id, it was using a + generic TI chip ID that caused problems. + - Fix USB devices that don't show up anymore. Use an ALSA + workaround to fix this. (#1478) + - Add a rule for the new firmware of Sennheiser GSX 1200. + - ALSA sink and source can now use ProcessLatency param to + configure the internal latency. The latencyOffsetNsec + property is also exposed so that the latency can be adjusted + in pavucontrol as well. + * media-session + - Fix a critical issue where the default device was not + remembered anymore when it was removed. + - Fix the issue where some apps need to be restarted when + nodes go away and reappear. + - Improve routing of streams. Streams that have a specific + target set will now be moved to the target when it appears + instead of staying on the fallback. + - Small memory leak fixes. + - Try to switch back to the user selected profile after + finishing a Bluetooth recording. + * Bluetooth + - Add support for HF indicator 2 battery status. + - Add support for XAPL battery status. + - Set the Communication intended role for HFP profile. + - Enable SBC-XQ by default if not disabled by quirks. + - Fix some potential crashes due to excessive polling. + - Add aptx-LL codec and enable duplex for aptx-LL devices. + - Add FastStream codec. This is a codec that can use a + duplex SBC channel. + * PulseAudio server + - Suggests a samplerate for the graph. + - Support for handling S/PDIF (IEC958) formats was added. This + will start working when the session manager supports + configuring streams and nodes in passthrough mode. + - Be smarter when handling devices without a negotiated format + yet so that they are visible as well. This makes virtual + devices show up immediately. + * ALSA plugin + - Now suggests a samplerate for the graph. + * JACK + - The jack.pc file can only be generated with meson >= 0.59.0. + When the jack-devel option is enabled, it will generate an + error with older meson. + - Small stability improvements when connecting/disconnecting in + Ardour. + +------------------------------------------------------------------- +Thu Aug 5 14:54:31 UTC 2021 - Frederic Crozat + +- Update to version 0.3.33: + * Highlights + - Better support for virtual sinks/sources for Pro Audio + profile. + - Better DMA-BUF format modifier negotiation. + - Support multiple sample rates in the graph. Not enabled + by default yet. + - Bluetooth can now automatically switch between headset + and audio profile. + - Documentation updates. + - Many improvements and crasher fixes. + * PipeWire + - Make AUX channels an official channel map, use this for the + PRO audio profile so that we can name the channels. This + make it possible to define virtual sources and sinks for + Pro Audio devices in a more reliable way. + - Fix scheduling of some virtual sinks/sources. (#1407) + - Fix potential corruption of ringbuffer because of multiple + concurrent writers. This might be the cause for many reported + crashes. (#1451) + - Don't place sockets in $HOME. (#1443) + - Improve DMA-BUF negotiation. Add a flag to avoid fixation + of a property so that producers can negotiate more + efficiently. This is used to negotiate DMA-BUF modifiers, + which should make more efficient use of the GPU. (#1084) + - Add support for multipe sample rates. The graph can switch + when IDLE to one of the supported rates. Add an option to + lock the rate as well. This is not enabled by default yet + because of driver bugs that need to be worked around first. + - Add node.lock-quantum property that can be used to lock the + quantum in place. + - Improve latency reporting in the loopback module. + - Make new client-node method to send the peer port id to the + mixer. This can be used to know where the buffers entering the + mixer are coming from. (#1471) + * Tools + - pw-top should now also correctly show bluetooth devices. + (#1540) + * media-session + - Handle unset of the default node. + - Added a module that can switch the bluetooth profile to headset + profile when a stream wants to record from it. + * JACK + - Only call the jack callbacks when the client is active. Some + JACK applications don't expect callbacks before the client is + active and crash (x42-dpl). (#1461) + - Emit client unregister event. + - Add per-client match rules in the config file to set app + specific configuration and tweaks. (#1456) + - Use peer_id to implement jack_port_get_buffer() from one of + our peer ports to get the data before it enters the mixer. + Makes the capture monitors work in Ardour6.8. (#1471) + * Bluetooth + - Add some broken kernel versions to the mSBC blocklist + - Avoid looping and consuming CPU when we can't write to the + BT socket. + - Use libfreeaptx instead of libopenaptx. + - Fix rounding errors in HW volume conversion. + * PulseAudio server + - implement module-switch-on-connect to emulate pulseaudio + behaviour of new devices. Some desktop environments expect + this behaviour and break otherwise. + - Fix stream cleanup, make sure the stream is stopped before + destroying it. Might be cause for some of the reported + crashes. + - Update message API to use the JSON format. + * Other + - Many documentation updates. + - Many cleanups and small improvements. + - Support the latest libcamera version. (#1435) +- Drop pipewire-fix-libcamera-build.patch, merged upstream. + +------------------------------------------------------------------- +Tue Jul 27 06:23:36 UTC 2021 - Antonio Larrosa + +- Move with-{alsa,jack,pulseaudio} from the media-session package + to the packages that implement each support. + +------------------------------------------------------------------- +Thu Jul 22 07:55:13 UTC 2021 - Frederic Crozat + +- Add patch pipewire-fix-libcamera-build.patch: fix build with + latest libcamera. +- Do no build libcamera support on Leap 15.3 or lower (too old + libcamera) and change name of BuildRequires from camera to + libcamera. +- Update minimal version for alsa buildrequires. + +------------------------------------------------------------------- +Tue Jul 20 12:46:57 UTC 2021 - Frederic Crozat + +- Update to 0.3.32: + * Highlights + - Real-time priority handling for threads was reworked. + Freewheeling will now drop RT priorities to avoid being + killed. + - Problems with filter chains and echo-cancel being linked in + a loop was fixed. + - alsamixer should now be able to see the mixer controls again. + - JACK has seen some latency reporting improvements that make + Ardour report latencies correctly. + - Many bugfixes and improvements. + * PipeWire + - Fix a bug in the neon audio resampler code. + - There is now a node.link-group property to relate linked + streams. this can be used to track the dataflow with + coupled streams. + - Fix a crash when recalculating latency on a destroyed + port. (#1371) + - Filter chains and other modules that create streams can + now also be added to the daemon config itself. (#1309) + - Fix some potential deadlocks in timerfd. (#1377) + - Feedback links are skipped when recalculating latency to + avoid loops. + - The dummy driver and null-sink now stop the timerfd when + following another driver instead of generating useless + graph wakeups. + - rt.limit was increased to 2 seconds. Some applications got + killed because they run lengthy code in the Real-Time + thread. (#1344) + - Fix s24_32 to float, it was not sign extending + properly. (#1393) + - The performance of the feedback loop check algorithm was + improved a lot, making complex graphs start much much faster. + - The zeroconf publish module now doesn't republish nodes + every time the volume changes. (#1406) + - A potential memory corruption error has been fixed in the + loop that could cause random crashes. + - Mempools can now be created from multiple threads at the + same time. + * media-session + - Loops in coupled streams are now avoided. (#1394) + - Port changes for inactive profiles are ignored now by + the default-route module. (#1403) + * ALSA + - Make sure tha alibpref is not part of the device node name + because it is random. (#1362) + - Fixed an off-by-one that could cause midi events to end up + with a wrong timestamp and thus being discarded by + some apps. (#1395) + - Fix some memory leaks when destroying a card object. + * JACK + - Fix some invalid cycle wakeups that could cause JACK + application to run with a 0 buffer size. (#1386) + - JACK can now use rtkit to manage realtime priorities + on threads. + - The Real-time priority is dropped when entering freewheel + mode to make sure we don't get killed when using + too much CPU. + - jack_recompute_total_latencies() is now implemented, fixing + the latency reporting in Ardour. (#1388) + - Fix some overflows in time calculations. + - Ensure frame_rate in position is never 0. + - Graph callbacks are now emitted as well. + * Bluetooth + - RTP payload type is now set correctly for aptX, LDAC and + SBC, which should improve compatibility with devices that + care about this. + * PulseAudio server + - There is now a quirks database to deal with bad clients. + The database is builtin but can be made external later. + Teams is now lied to and told all sink/sources use + s16 samples to make it show all sinks/sources. + Firefox is forced to remove the DONT_MOVE flag on + capture streams so that you can move firefox streams + with other tools. + - The UNDERFLOW warnings are now made into info log messages + to not spam the log too much. Many application just let + things underrun and PulseAudio did not warn about this + either. (#910) + * ALSA plugin + - The alsa plugin now uses the right metadata for finding the + default source and sink, which makes the volume controls + reappear. (#1384) + * Other + - Cleanups in pulse-server and pipewire. + - Documentation additions. + +------------------------------------------------------------------- +Tue Jul 13 14:52:35 UTC 2021 - Antonio Larrosa + +- Make the jack replacement libraries really replace jack libraries + just like Fedora does (adding the path to the pipewire + replacement libraries to ld.so.conf.d and conflicting with jack). +- Remove the spec code that forced the packages not to provide the + jack libraries. They seem to be ready to replace jack libraries + now. +- Add a pipewire-libjack-0_3-devel package with development files + for pipewire's jack replacement. +- Enable the libcamera module + +------------------------------------------------------------------- +Tue Jun 29 06:12:36 UTC 2021 - Antonio Larrosa + +- Add %pre and %post sections to the new media-session subpackage. +- Move the references to the media-session service from the + workaround in pipewire's %post section to the workaround in the + new subpackage's %post section. + +------------------------------------------------------------------- +Mon Jun 28 16:14:29 UTC 2021 - Frederic Crozat + +- Update to 0.3.31: + * Highlights + - Fixes for alsa-lib 1.2.5 + - New pulseaudio modules: module-avahi-zeroconf, + module-pipe-source, module-roc-sink, module-roc-source + - JACK has seen massive stability improvements. Locking + and correctness wrt to callbacks and has been reworked. Also + thread priorities have improved. + - Handle various crashes and lockups when running out of file + descriptors. + - Bluetooth now uses a hardware database to disable + non-working features on listed devices. + - Scheduling quantum and rate can now be changed dynamically + with pw-metadata. + - Many bugfixes and improvements. + * PipeWire + - Improve cleanup of context in error cases. + - There is now a pw-test framework for improved unit tests. + - Improve property serialization to valid JSON. + - Fix some macros to work with better with coverity. + - Metadata permissions are checked now. Clients need the + M permission on an object to be able to set metadata for + it. + - The core metadata object will now remove metadata for + removed objects, the implementor does not need to worry + about that anymore. + - Audioadapter will now follow the rate of the graph with + the resampler adjusting itself dynamically. + - Core now has a metadata implementation helper. A context + will expose a metadata with settings that can be changed + at runtime. This can be used to change the lowlevel or + graph quantum and samplerate on the fly. + - An infinite loop was fixed in the audio converter. + - Handle out-of-fds more gracefully. Handle truncated + control data by dropping the client connection. + - Fix profiler crash with many streams. + - Improve latency handling in pw-filter. There is now a + default handler and a ProcessLatency parameter to simplify + latency reporting. + - Latency reporting was improved in devices and streams. + - And example sink/source was added. + * ALSA + - hardware mute and volume are now properties on the + Route param to make things easier. + - More fixes for alsa-ucm 1.2.5. + * Tools + - spa-json-dump now properly encodes string and keys + - pw-dump now shows the correct subject of the metadata. + * PulseAudio server + - Ensure the node.description is set, some applications + crash otherwise (TeamSpeak). + - Module loading and unloading was improved. + - module-avahi-zeroconf was implemented. + - module-pipe-source was implemented + - module-roc-sink and module-roc-source was implemented + - The maximum amount of connections has been limited to 64, + like pulseaudio. + - Handle out-of-fds more gracefully. + - Fix overflow of read/write pointers. + - source and sink state are now decoupled from the monitor + state and will report IDLE when not playing anything. + * media-session + - Port switching should now happen to/from the port that + actually changed. + * JACK + - The locking was reviewed. All callbacks are not emited + from the PipeWire thread with the lock released and + the process function will be disabled for the duration + of the callback. This ensures that no two callbacks are + called at the same time. + - Improve internal consistency and try to never call callbacks + with invalid objects. + - Monitor port can now be accessed with system:monitor_%d + - client threads are now created with SCHED_FIFO and module-rt + is used to create the other RT threads. This should avoid + SIGKILL from RTKit in some cases. + * Bluetooth + - Various bugfixes to improve connections to devices. + - Handle delayed UUID connection. + - There is now a hardware database that can disable features + in listed devices. + - Use libusb to detect availability of mSBC. + * ALSA + - The virtual device name can now also contain a media role. + +- Add BuildRequires(libusb-1.0) to detect mSBC support for Bluetooth. +- Move media-session to a separate package (similar to Fedora), + allowing to switch to another session manager. + +------------------------------------------------------------------- +Sun Jun 13 17:35:06 UTC 2021 - Adam Mizerski + +- added pipewire-alsa to baselibs.conf + pipewire-alsa-32bit is needed to run BIT.TRIP Runner 2 from Steam, + which is a 32bit application and uses ALSA. + +------------------------------------------------------------------- +Thu Jun 10 11:08:24 UTC 2021 - Antonio Larrosa + +- Move %{_udevrulesdir}/90-pipewire-alsa.rules to the main pipewire + package (boo#1187108) + +------------------------------------------------------------------- +Thu Jun 10 10:17:14 UTC 2021 - Antonio Larrosa + +- Update to 0.3.30+git~342ae0b64 (55 commits after 0.3.30) in order + to include + https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/748 + and + https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/749 + to fix building on Leap 15.3 + +------------------------------------------------------------------- +Wed Jun 9 10:11:38 UTC 2021 - Antonio Larrosa + +- Update to 0.3.30 + * This is a quick emergency release to fix some severe + problems with the previous release. + * Highlights + - Recording from a monitor port should work again. + - JACK applications should now be more stable again. + - Freewheeling should not lock up anymore. + - Fix lockups in many pulseaudio apps. + - module-echo-cancel was implemented in pipewire-pulse + - Many other stability fixes. + * PipeWire + - Improve module path logic. + - Improve logger formatting + * PulseAudio server + - Make sure to pass 64 bits values for time on ARM 32 bits to + avoid protocol errors. + - Avoid a crash when unloading module-combine-sink. + - Avoid overflow in requested bytes, resulting in stalled + audio. + - Implement module-echo-cancel. + * Bluetooth + - Handle latency parameters instead of failing. + * JACK + - Fix locking in many places to avoid deadlocks and crashes. + - Fix port rename. + - Stop freewheeling correctly instead of deadlocking. + +------------------------------------------------------------------- +Thu Jun 3 13:01:45 UTC 2021 - Antonio Larrosa + +- Update to 0.3.29 + * Highlights + - Latency reporting is now implemented. + - Many documentation updates and cleanups. + - module-combine-sink was added to PulseAudio server. + - Better handling of multichannel input profiles. + - Fix 100% volume issue when monitor suspends or profile + changes in some cases. + - Bugfixes and crashes + * PipeWire + - A new module-rt was added to acquire real-time scheduling + priviledges without using RTKit. + - Documentation fixes and updates. Docs are now using a + custom theme. + - There is now a MANDATORY flag on properties that influence + how properties are filtered. + - Filter-chain now parses the LADSPA_PATH correctly when it + contains a colon separated list. + - Move `#pipewire` IRC channel to oftc.net. + - Fix an error where param changes were not emited in all + cases. + - Implement Latency reporting. Latency values are propagated + through the graph so that each node knows the latency to + the output/input device. Synchronization in pw-stream has + been updated to use this. + - Some more upmix cases are added so that LFE, SIDE and REAR + can be generated from a mono channel as well. + - pw-stream and pw-filter will now emit the process event from + the real-time thread in a safe way, potentially avoiding some + of the harder to debug crashes. + - Fix potential stack overflow with serialize_dict. + - Add PIPEWIRE_NO_CONFIG to run without custom config files. + - The WebRTC echo canceler was added. Next versions will + integrate this better. + * PulseAudio server + - module-combine-sink was implemented. + - Fix some segfaults when DBus connections fail. + - Support for listening on IPv6 was added. + - Fix a bug where many flushes could result in requests for too + much data from the client, causing sync, latency and garbled + sound problems after many seeks. + * ALSA + - Also probe input paths for multichannel mappings. This makes + multichannel input ports show up in more cases. + - Fix headphones/front volume issue on some cards. + - Fix max volume issue when profile changes. + - Fix issue with UCM local config that was not available when + the device was opened in the server but the UCM was opened by + the session manager. Fixes alsa 1.2.5 compatibility. + * JACK + - Implement latency reporting with the new Latency params. +- Add BuildRequires: pkgconfig(webrtc-audio-processing) + which is required by the new WebRTC echo canceler. +- Remove patch which is already included: + * 0001-alsa-mixer-only-use-switch-to-mute-Front-in-the-Headphone-path.patch + +------------------------------------------------------------------- +Tue Jun 1 07:31:49 UTC 2021 - Antonio Larrosa + +- Add patch from upstream to use the independent switch to mute + Lineout or Speaker instead of setting the volume, which on + some soundcards might be shared by Headphone and Lineout or + Headphone and Speaker (fixes boo#1186572): + * 0001-alsa-mixer-only-use-switch-to-mute-Front-in-the-Headphone-path.patch + +------------------------------------------------------------------- +Tue May 25 07:12:32 UTC 2021 - Antonio Larrosa + +- Introduce a workaround for systems where %systemd_user_post + didn't enable the user services correctly due to different + reasons . This workaround is only executed once, and only if + it's really needed. In order to execute only once a lock file + is created in /var/lib/pipewire. The lockfile can be removed + when the workaround is removed. + + Everyone who upgraded their TW system between (aprox.) the 14th + of January and the 16th of March and who didn't enable the + services manually is affected by this. It also happens for + everyone who installed a new TW system since (aprox.) the 14th + of January and also for everyone doing a new installation of + SLE15-SP3 / Leap 15.3 from the iso (new installations using + online repositories will work fine once the fix in + systemd-presets-common-SUSE is released). + + Fixes boo#1184852, boo#1183012 and boo#1186561. + +------------------------------------------------------------------- +Wed May 19 11:15:08 UTC 2021 - Antonio Larrosa + +- Update to 0.3.28 + * Highlights + - Freewheeling was implemented. This makes it possible to + export projects in ardour. + - A new powerful filter-chain module was added that can + be used to created all kinds of filter-chains from ladspa + and builtin plugins. + - Many more pulseaudio modules are now implemented: + module-ladspa-sink, module-ladspa-source, module-pipe-sink, + module-tunnel-sink, module-tunnel-source, + module-zeroconf-discover + - Fix a bug where devices would not appear after logout/login. + - Fix a bug where the volume was reset to 0 and devices would + have no audio. + - Config files are now installed in the data dir, system + overrides in /etc/pipewire and $HOME are checked first. + * PipeWire + - Implement freewheeling for JACK clients + - Add filter-chain module that can be used to construct + arbitrary graphs from ladspa and builtin plugins. + - Add new property to easily set algorithm params + - Add module-pulse-tunnel to tunnel audio to and from + a PulseAudio compatible server. + - Add a avahi zeroconf discover module, create pulse-tunnel + when PulseAudio devices are announced. + - Config files are now installed in the data dir, system + overrides in /etc/pipewire and $HOME are checked first. + - Applications now have their monitor ports named with the + "monitor" prefix to avoid confusion with the output ports. + - LICENSE clarifications. + * GStreamer + - fixes to the pipewiresink plugin. + * SPA plugins + - Fix a bug where the volume was reset to 0 + - Add events to dbus plugin. This can be used to detect dbus + disconnects. + * Media-session + - Handle dbus disconnect. + - Handle device reservation errors. + * PulseAudio server + - Implement module-ladspa-sink and a new PipeWire-only + module-ladspa-source + - Implement module-pipe-sink + - Implement module-tunnel-sink and module-tunnel-source + - Fix a bug with module argument parsing + - Implement module-zeroconf-discover + * ALSA plugin + - improve error handling + +------------------------------------------------------------------- +Thu May 13 20:33:25 UTC 2021 - Ismail Dönmez + +- Add %bcond_with aptx conditional to let 3rd parties to enable + aptX support. + +------------------------------------------------------------------- +Sat May 8 18:02:57 UTC 2021 - Ismail Dönmez + +- Add %bcond_with aac conditional to let 3rd parties to enable + AAC support. + +------------------------------------------------------------------- +Fri May 7 14:46:32 UTC 2021 - Antonio Larrosa + +- Update to 0.3.27 + * Highlights + - Fix bug that caused bluetooth devices to stop working. + - Fix session-manager crash when switching users caused by + the DBus plugin cleanup errors. + - Improve volume handling of monitor ports. + - Fix GStreamer v4l2 support. + - Implement module-remap-sink and module-remap-source in + pipewire-pulse. + - More fixes and improvements. + * PipeWire + - Move the loopback code into a module. Use this in pw-loopback + and pipewire-pulse. Fix some cleanup crashes. + - A dummy echo-cancel module was added. Later versions will + include the webrtc echo-canceler. + - State files don't have the X permission anymore. + - Move i18n core into a private header file. + - Stream can now advertize properties and receive property + updates. + - Fix an issue where the wrong index was used to address a port. + It caused Bluetooth devices to stop working. + * SPA plugins + - Only do LFE filtering on channels we created. + - Improve name and description of devices. + - Improve cleanup in DBus connections and sources to avoid crash + when destroying. + - Improved volume handling. Hardware, Software and Monitor + volumes are now properly separated and handled. + - Support for S8 and S8P formats was added. + * Tools + - pw-cli can now also create Struct from JSON arrays. + * Session-manager + - The session manager can now also create passive links. This + makes is possible to suspend effect chains together with the + sinks when not in use. + - Match rules now check the complete property value instead of + only the start. + - Handle multiple pending param enumerations, take only last + result. This fixes some volume update issues. + * GStreamer plugins + - GStreamer plugins now advertize handling DMABUF explicitly. This + is currently the only way to avoid a memcpy for v4l2 devices. + * Device support + - sync ACP with pulseaudio, merge upstream patch instead of our + hack to workaround missing duplex devices. + - V4l2 devices don't expose their fd anymore. Previously the fd + and mmap offsets were passed to the client to access the buffer + memory but that could create security issues. + * Bluetooth + - Don't unregister the profiles on shutdown because this can cause + delay, just close the dbus connection. + - Bluetooth devices now try to use the global samplerate from the + graph. + * PulseAudio server + - Implement remap-sink and remap-source modules using the + new loopback module. + +------------------------------------------------------------------- +Mon May 3 03:06:31 UTC 2021 - Yifan Jiang + +- Disable gstreamer device provider by now because the timestamp + bug makes cheese video record abnormally longer than it should be + (rh#1884260). +- Replace all tab characters to space. + +------------------------------------------------------------------- +Thu Apr 29 11:16:51 UTC 2021 - Antonio Larrosa + +- Add %systemd_ordering so systemd is installed before pipewire + on fresh installations. This allows to set the service presets + correctly on new systems since the %systemd_user_* macros don't + do anything if systemd is not installed (boo#1185459). + +------------------------------------------------------------------- +Thu Apr 22 17:54:17 UTC 2021 - Michael Ströder + +- Update to 0.3.26: + + Highlights: + - I18n support, with translations merged from PulseAudio. + - New pw-link tool. + - Many Bluetooth improvements, support for hardware volumes. + - Support for 64 channel devices. + - Stability fixes and improvements. + + PipeWire improvements: + - The link factory can now also make links between nodes and + ports by name so that it can be used in scripts. + - Add module-protocol-simple that can stream raw audio on a + socket. + - Added i18n support. Merge PulseAudio translations for the ACP + library so that we don't cause regressions. + - Support more than 19 channels in the channel mixer. This + makes all channels usable on 32 and 64 channel cards. + - Detect if we're running in a VM and allow for tweaking some + settings such as the max-quantum to make things work better + in VMs. + - Fix a potential crash when connecting a client and updating + permissions. + - Fix a potential crash when trying to link incompatible ports. + - Lingering links in error will now be destroyed automatically. + + Tools: + - Added new pw-link tool to list and monitor ports and to list, + monitor, create and destroy links between them. + - pw-cli can now also list params by name. + - pw-dump now outputs Spa:String:JSON types in metadata as + properly parsed and formatted JSON so that tools can parse + the metadata values using a JSON parser. + + Session-manager: + - Add logind support. The bluetooth monitor can only be started + for one user at the time, so use logind detect active seats. + - ALSA icon names were improved to match what PulseAudio does. + - Improve the bluetooth icon name. Also use the device alias as + the device description, like PulseAudio. + + Device support: + - When devices become inaccessible, they are now removed from + the PipeWire graph. + - Fix datatype selection for buffers in v4l2 and libcamera. + + Bluetooth: + - Various memory leaks and crashes are fixed. + - Added support for AVRCP hardware volume. + - Added support for HSP/HFP hardware volume. + + PulseAudio server: + - Fix module-loopback connections to monitor ports. + - Implement module-native-protocol-tcp. + - Handle nodes and streams with > 32 channels. The PulseAudio + API only supports up to 32 channels so only make those 32 + first channels available with the PA API. + - Implement module-simple-protocol-tcp. + - Improve events emitted by the server. + - Improvements to channels and channel_map properties on + modules. One can imply the other and they should match when + both given. + - null-sink will now have their volume work correctly by + default. + + JACK: JACK developement files can now optionally be installed. + +------------------------------------------------------------------- +Tue Apr 13 11:19:35 UTC 2021 - Michael Ströder + +- Update to 0.3.25: + + This is a bugfix release that is API and ABI compatible with + - previous 0.3.x releases. + + Highlights + - Many stability improvements. + - Plug fd leak in flatpak detection + - add pw-loopback tool and support module-loopback + - volume restore for virtual sinks/sources or other sink/sources + without hardware volume. + - Fix cracks and pops in audio capture. + - Many bluetooth improvements and compatibity fixes. + + PipeWire improvements + - Hex encode invalid SEC_LABEL properties to avoid generating invalid json. + - Small fixes to how nodes are started to avoid crashes. + - Make sure ports are only scheduled after being fully negotiated + to avoid crashes. + - Implement coverity into CI, fix some bugs detected by coverity. + - Plug leak in flatpak detection. + - Fix crash when removing globals in some cases. + - Fix crash because the mixer info was not removed from a port in all cases. + - Add PIPEWIRE_AUTOCONNECT environment variable to disable stream autoconnect. + Also add a config option to disable autoconnect. + - Improve wildcard in format helpers. + - Add env variable to disable journald logging. + + Tools + - Add a new pw-loopback tool to loop a capture device to a playback device. + - Display localized strings correctly in pw-top + - Add some more options to pw-dot + + Session-manager + - When a new node is configured and some stream have this as the + default target, move them to it. + - Fix some crashes. + - Implement volume restore on nodes without routes. This makes it + possible to restore volume on purely software nodes like null-sinks. + - Also try to suspend errored nodes so that they may leave the + error state and be reused again. + - Break endless link loops when something went wrong. + + Device support + - Fix monitor volumes, they are now separate from the hardware volume. + - Fix cracks and pops in alsa capture caused by mismatch between + resampler and capture source. + - Add start-delay config option to alsa sink. + - Ensure the PipeWire midi ports start from a higher number so that the + lower port numbers are available to apps as before. + + Bluetooth + - source devices are now removed when idle + - Support using pipewire as Audio Gateway. + - LDAC encoding quality can be configured now + - Implement codec switching for HFP + - Implement codec switching with new device property. + - Improved stability and compatibility + - Autoconnect device profiles at startup + - Add AAC bitrate mode configuration + - Make it possible to use an A2DP source as an input device. + You can then use your phone as an A2DP microphone, for example. + - Remove battery reporting when RFCOMM connections is closed. + + PulseAudio server + - Add some workarounds for Blueman + - Set correct errno values, fixes a hang in load-module of a non-existing module + - Try to not send inconsistent information to clients. + - Fix some crashes. + - Add support for the new send-message API, use this to switch bluetooth codecs. + - Fix draining by making sure we are started. + - Handle 0 sink and source as the default sink/source. + - Implement module-loopback + + JACK + - Fix some memory leaks when closing a client + - Add self-connect config option to limit where clients can connect themselves. + - Don't crash when apps call _port_get_buffer() on a port that is not their + own but simply return NULL. This fixes a crash in Ardour6. + - Improve client added/removed callbacks. Sometimes it would emit a client + remove when there were still ports for the client. + - make sure midi port names are stable across reboots. + +------------------------------------------------------------------- +Fri Mar 19 17:43:41 UTC 2021 - Antonio Larrosa + +- Enable or disable the ldac codec depending if ldacBT is available + or not to fix build in s390x (where it's not available) +- Add some more information and fix indentation on previous + changelog entries. + +------------------------------------------------------------------- +Fri Mar 19 12:02:35 UTC 2021 - Matej Cepl + +- Update to 0.3.24: + + This is a bugfix release that is API and ABI compatible with + previous 0.3.x releases. + + Highlights + - Many JACK midi improvements and device support. + - Fixes in gnome-control-center default sink/source handling. + - Many small performance improvements in alsa device handling + and latency. There should also be less cracks/pops and xruns + now. + - More bluetooth compatibility improvements. + + PipeWire improvements + - Implement simple upmixing + - Disable the resampler when not used. This improves latency + and CPU usage. + - Handle max-quantum on devices and try to not make the quantum + larger than the device buffer size. + - improvements to how nodes and links are activated. It should + now result in less xruns and cracks/pops. + - meson uses the feature options everywhere now + - Handle volume remap in the channelmixer. This fixes the + channels on multichannel devices. + - Try to escape invalid JSON string characters + - Keep better track of changed parameters in audioconvert. + - Improve config files, make arrays where needed. + - Respect NO_COLOR where possible + - Support in-place config file parsing to avoid allocations and + improve startup performance. + - There is no a config option to enable non-power-of-two + quantums. + - Preliminary support for upmixing and generating LFE channels. + + Session-manager + - default nodes are not stored as JSON in the metadata. This + is more readable and introspectable. + - More default-nodes and default-routes improvements. port + switching should work better now. + - Wait until all devices are scanned before linking clients. + - Fixes some crashes + - Sinks (monitors) can now be set as default sources. + + Device support + - Fix startup timers for alsa devices. + - Improve timers in alsa when quantum changes. It should cause + less xruns and cracks. + - Fix UCM setup of capture devices. + - Only disable IRQ in alsa when not batch. For batch devices + the hw pointers are updated each IRQ so we need to keep them + enabled. This massively improves latency on USB batch devices + to the same level as JACK (with small enough period size). + + Bluetooth + - Improvements to profile switches. + - Improvements to volume handling. + - Fixes for A2DP sources + - Add support for battery status when available. + - Many other small improvements. + + PulseAudio server + - handle NULL in set_default_sink/source to clear the default + - Implement a workaround for gnome-control-center when setting + the default sink/source. It also sets the target in + stream-restore to the new default. This fixes moving streams + in gnome-control-center. + - Fix some races by replying to some requests after the + operation completed. + - Prefer formats of the extended format API. + - Create a pid file on startup to improve compatibility with + apps that look for it. + - Capture streams can now be moved to monitors with pavucontrol + - Fixes for crashes + + JACK + - jack clients can now connect to the 'default' server + - Move midi ports back to the midi client + - Only mark midi hardware ports as terminal/physical + - Use the same midi names as a2jmidid + - match system ports in get_ports. + - Improve compatibility with some apps that require a + fixed latency. + - Beginnings of the libjackserver implementation. +- Switch off libopenaptx and fdk-aac (because they are + patent-encumbered) and libcamera (problems in building). + +------------------------------------------------------------------- +Wed Mar 17 17:15:02 UTC 2021 - Antonio Larrosa + +- systemd-rpm-macros doesn't have a consistent versioning between + distributions, so better assume it's updated enough to support + %systemd_user_pre + +------------------------------------------------------------------- +Tue Mar 16 11:21:02 UTC 2021 - Antonio Larrosa + +- Add systemd rpm macros for pipewire.service as well as + pipewire.socket . +- Use the new %systemd_user_pre macro on %pre to be able to + recognize when a service was installed for the first time and + enable it on %systemd_user_post (boo#1183012) + +------------------------------------------------------------------- +Tue Mar 9 16:46:52 UTC 2021 - Frederic Crozat + +- Update to version 0.3.23: + + Highlights + - Fixes for some critical bugs in last release. + - Fix bug where audio was not drained properly at the end of + playback, causing repeating sound. + - Profile and route switching was improved and should mimic + more what pulseaudio did. + - Various fixes for xruns in capture and playback. + - Bluetooth now supports delay adjustment and various other + improvements. + - The pulseaudio server now correctly identifies AC3 and DTS + streams and returns a not supported error instead of playing + static. + - Multichannel support was improved in the alsa plugin and + the channel mixer. Channels should now play on the right + speakers in all cases. + + PipeWire improvements + - Small fixes and improvements in JSON parsing and encoding. + - Improvements to param handling in audioconverter. It would + previously not always notify of changes. + - Avoid updating some properties that we use internally such + as the object id and the node.id. + - log.level in the config files is now actually used. + - the PIPEWIRE_LATENCY env variable should always override + any application settings in filter/stream/jack. + - The config file can now contain filer and stream properties + to, for example, control the resampler, mixer and latency. + - Add sandboxing to the systemd services + - Various FreeBSD fixes. + - Improve draining and a way to exit the drain state as well. + - Many multichannel fixes. Channel remapping should now be + correct. + - Fix bug with repeating audio at the end of playback because + the drain in the resampler was not draining all channels. + - RTKit default rt.prio has been increased to 88. This will + likely still be clamped to 20 until distros increase the + max priority. + + Session-manager + - Don't try to switch to Pro Audio profile, this should be + a user choice only. + - Don't crash when metadata was disabled such as when not + using the audio features of pipewire. + - Rework the profile and route handling. + - Add systemd unit files for the media-session + - Device names should now also have sane names so that tab + pactl completion works on them. + + Device support + - Fix ALSA format enumeration in more cases. Use the channels + and rate as a filter. + - Make sure the graph doesn't ever use buffers larger than + the alsa device buffer size or we get xruns. + - Tuning of the alsa device timeout handling and dynamic + resampler. There should now not be any xruns when streams + appear and disappear or when the quantum changes. + - Fix bug in alsa device when reassigning to a new driver, + in some cases the dynamic resampler was not activated and + things would drift out of sync and fail. + - Fixes in quantum changes for ALSA capture and how the + resampler is drained and fed with the new samples. + + Bluetooth + - Delay adjustment has been implemented now. Bluetooth + devices should now be more synchronized with video due + to proper delay reporting. Because BT delays can be + large, it can cause hickups in some players. + - Fix volume in bluetooth devices. + - Codec switch improvements. + + PulseAudio server + - Latency offset adjustment is now implemented and functional + for bluetooth devices. It is not working for alsa devices + yet. + - Handle unsupported formats. Previously we would accept encoded + formats and play noise. This fixes AC3 playback in vlc. + - Move some of the configurable parameters to the config file. + - Fix a fatal use after free when playing samples + - Improve module handling. loaded modules now show up in the + list of modules and can be unloaded. This also prepares the + core for more module implementations later. + + ALSA plugin + - Fix drain with very large buffers, we need to manually start + the stream before draining. + - Fix the channel layout handling. + - Improve compatibility with apps that expect the poll to only + return when there is activity. + - Fix drain for capture + + JACK + - Add a config option to shorten and filter client names + - Increase the length of the client name size and make sure + we don't exceed the allocated size. + - We now include our own jack header files so we can build + without depending on another jack-devel package. We don't + yet install the headers or provide pkgconfig files. +- Move alsa-card-profiles to modules subpackage, they are always + needed. + +------------------------------------------------------------------- +Thu Mar 4 15:39:47 UTC 2021 - Niklas Haas + +- Build/install the `pw-top` tool: + + Add pkgconfig(ncurses) BuildRequires to satisfy the build deps + of pw-top. + +------------------------------------------------------------------- +Thu Feb 25 11:10:46 UTC 2021 - Antonio Larrosa + +- Do not provide pulseaudio, but pulseaudio-daemon so we can + specify in the patterns that we prefer the pulseaudio package + (boo#1182730) + +------------------------------------------------------------------- +Thu Feb 25 07:32:58 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.22: + + Highlights + - Per client config files replace the module-profiles. It's + now possible to tweak settings and load custom modules. + - Pro Audio card profile support. You can now select the + Pro Audio profile and have raw device access with the + maximum number of channels and no mixer controls. This is + the usual setup for managing high end Pro Audio cards. + - Many fixes and improvements in the JACK library to make + devices look and integrate better. + - Many bluetooth improvements. Playback should be more + reliable and better synchronized. Support for the HFP HF + profile. + - Small fixes and improvements all over the map. + + PipeWire improvements + - Add support for restrictions requested by a client. This + makes it possible to implement Flatpak policy for emulated + PulseAudio clients as well. + - Fix removal of params in objects. Previously they would not + be removed from the cache. + - Remove mlock warnings by default. There is an option to + enable them again if you want to check if your system is + optimized. + - Remove LimitMEMLOCK lines from the service files. They can + only lower the system settings and are thus not useful. + - Implement per-client config files. Each pipewire client will + now read a config file that you can use to configure the + context of the client. + - Implement state and config load/save in pipewire. This is + used by the session manager or other apps. + - Make an option to disable dbus support. + - Add tool to convert pipewire config to JSON. + + Session-manager + - Give all permissions to Manager flatpak apps. In the future + we will use the Permission store to remember user settings. + - Improvements to default audio/sink handling. + - Add option to configure device suspend time. + - Small fixes in route handling. + + Device support + - Complain when ACP profile files are not found and use + a fallback in order to get something working. + - Add volume support to monitor ports. + - Fix resume from suspend for ALSA in more cases. + - ALSA ACP cards now have a Pro Audio profile that exposes + the raw card devices. + + Bluetooth + - Enable A2DP delay reporting. This improves audio/video sync + when playing audio over bluetooth. + - Fix stuttering in A2DP source + - Tweak buffer size and latency settings to avoid stuttering + - More work on HSP and HFP support + - Fix initial profile configuration + - Add HFP HF support + + PulseAudio server + - Small tweaks in capture packet size to avoid crashes in some + apps. + - Detect Flatpak apps and requests the flatpak permissions from + the session manager. This means that Flatpak pulseaudio apps + will now run with reduced permissions. + + ALSA plugin + - Reduce min buffer size in the plugin for lower possible + latency. + + JACK + - implement some missing methods to make qjackctl work again. + - Use the context data thread instead of making our own. This + fixes the issue where the data thread was not given RT + priority correctly. + - Pass extra jack flags around in port properties. This makes + CV ports in carla work. + - Many tweaks to the port names and aliases. Unwanted + characters are filtered out, giving better names to jack + apps. Default device names are now equal to those seen in + pulseaudio apps. + - Add an option to make a separate client for the monitor + ports of a device. This makes it more usable in apps. + - add support for system:playback_N and system:capture_N port + names for apps that hardcode these port names. + +------------------------------------------------------------------- +Wed Feb 24 11:29:58 UTC 2021 - Dominique Leuenberger + +- Re-add the Provides: pulseaudio; patterns-base now suggests + pulseaudio, which should help zypp in doing a smarter decision + (boo#1182730). + +------------------------------------------------------------------- +Thu Feb 18 09:30:54 UTC 2021 - Antonio Larrosa + +- ldacBT only builds on little endian architectures, so we can't + buildrequire it on big endian systems like s390, s390x or ppc64. + +------------------------------------------------------------------- +Wed Feb 17 17:02:06 UTC 2021 - Dominique Leuenberger + +- Remove the pulseaudio provides from pipewire-pulseaudio: + We first need to ensure our KDE patterns (and others) become + smart enough to favor pulseaudio until we are ready for the + switch (boo#1182730). + +------------------------------------------------------------------- +Wed Feb 3 17:02:31 UTC 2021 - Dominik Schmidt + +- Update to version 0.3.21: + + Highlights + - Many PulseAudio compatibility fixes. Handling of corked + streams, the prebuf setting, seek modes and stream flags + are now implemented correctly. + - Ports and Profiles are now managed by the session manager + and can save and restore previous settings. + ALSA device handling has been tweaked for maximum + compatibility at the expense of latency. There are tuning + options in the config file. + - Improved Bluetooth support. HSP is disabled by default + because it is old and deprecated and in some cases causes + conflicts with the newer HFP profile. Codec switching is + now implemented as well. + PipeWire accepts donations with liberapay now. + + PipeWire improvements + - Improve draining in pw-stream. + pw-stream now uses busy metadata by default. This makes sure + that no writer can write to buffers when readers are still + busy. + - Fix handling of empty array/choice instead of failing. + - Fix crashes when creating properties from empty strings. + - Make it possible to pass an array to module-access + access.allowed variables + - Fix small bug in argument parsing in pw-cat + + Session-manager + - Restore route volumes in all cases, also when switching + routes. + - Use a default route volume for unknown routes instead of + letting the system decide on a default. + Improve profile handling. Don't try to restore unavailable + profiles. Implement the profile switching in the session + manager now. + - Fix handling of Virtual sources as defaults. + - Handle port switching in the session manager. Implement + save and restore of default ports per profile. + + GStreamer + - Fix a crash with zero SPA_PARAM_BUFFERS_size + + Device support + - v4l2-source will now respect the requested memory types. + - ALSA buffering has been tweaked. USB devices should have + less XRuns by default. Parameters can be tweaked to + decrease the latency on capable devices. Also fix a case + where a quantum change would cause an xrun. + - Fix mute in bluetooth devices + bluetooth devices are not paused in idle anymore for + improved compatibility. + - Codec switching for bluetooth is implemented along with + config options to select the codecs manually. + - HSP for bluetooth is now disabled by default. Most devices + support the newer HFP profile and some devices fail when + both are available. + - Reduce the amount of events the ALSA plugins emit by bundling + them. + + PulseAudio server + - Implement the suspend command + - Fixes volume in sample info + - Fix playback of samples, sometimes samples would be clipped + short. Also implement the target sink for the sample. + - Use rate match to feed samples. This way the latency can + be kept to a minimum. + - Latency has been tuned some more, more closely emulating + pulseaudio behaviour. + - Improve default sink/source handling. Make sure all events + are sent correctly when defaults change. + - Handle underrun better without causing sync issues. Make sure + to pause in corked state. + - Implement rewind due to seeks, fixes GStreamer seeking. +- Do not remove alsa-card-profiles, they are required + +------------------------------------------------------------------- +Wed Feb 3 15:32:37 UTC 2021 - Dominique Leuenberger + +- Provide pulseaudio by pipewire-pulseaudio: there are various + packages in the distro that require pulseaudio, but essentially, + they should be happy with pipewire-pulseaudio as a replacement. + Do not provide the symbol though, as we do not (yet) want to + automatically migrate users over. + +------------------------------------------------------------------- +Thu Jan 21 12:12:43 UTC 2021 - Bjørn Lie + +- Add pkgconfig(ldacBT-abr) and pkgconfig(ldacBT-enc) + BuildRequires: Build bluetooth ldac codec support. + +------------------------------------------------------------------- +Wed Jan 20 15:50:31 UTC 2021 - Antonio Larrosa + +- Update to version 0.3.20: + + Highlights + - Latency was reduced in ALSA and PulseAudio and time + reporting has improved a lot. + - Bluetooth now has a native HFP backed, SBC XQ and + mSBC support. + - Many bugfixes and improvements, improved device + support. + + PipeWire improvements + - pw-dump can now dump all objects such as Endpoints + - pw-dump has a -m option to monitor changes + - pw-dump can now dump metadata + - pw-stream can now use the rate-match io to exactly + produce the required number of samples for the + current cycle. When using this feature, a stream can + achieve the same low-latency as pw-filter. + - spa-acp-tool can now load a custom profile-set and + correctly parses the volume updates + - There is now a nofail option when loading modules + - The connection has been made reentrant to fix some + strange random problems with metadata. + - Turn some errors into warnings or simply info. + - Executables are now built with PIE + - S24OE formats should work now (MAudio FastTrack Pro) + - Remove mlock warnings. Add support for mlockall with + a config option. + + Session-manager + - There are now config files for bluez and v4l2 modules + - Improve ALSA device and node properties + - Bluetooth devices have better properties now. + - The default device routing has been improved. + + Device support + - Port priorities are updated for UCM devices + - ACP devices notify change in routes in all cases + - There is now RW support in ALSA devices to increase + compatibility. + - Many improvements to Bluetooth. SBC XQ support can now + be enabled with a config option. mSBC can be enabled + with an option. + - Bluetooth devices not expose Routes so that they look + more like how PulseAudio handles them + - Gracefully handle missing profile-sets + - There is now a native HFP backend + - Improve card names in some cases. + - pause-on-idle is now disabled for ALSA devices. This can + reduce pops and clicks when the device is stopped. + + ALSA plugin + - Use rate-match to reduce the latency + - Implement a _delay() function to get smoother timestamps. + - Fix property parsing. Fixes volume changes in alsamixer. + + PulseAudio server + - Use rate-match to reduce the latency. This also reduces + the buffering in audioconvert and improves timestamp + reporting. + - Implement rate changes now that we have rate-match + support. + - pactl stats will now work + - Fix excessive memory usage when a capture client doesn't + read fast enough. + +------------------------------------------------------------------- +Wed Jan 13 09:07:19 UTC 2021 - Frederic Crozat + +- Update to version 0.3.19: + + Highlights + - Startup after login should be fixed now with inotify + used to wait for permissions. + - Channels should be mapped correctly now. + - Many bluetooth improvements in LDAC, AptX-HD. AAC was + also added. Headsets should work better now. + - pipewire-libpulse was removed. It is now completely + replaced by pipewire-pulse. + - Fix a crasher bug in pipewire-pulse and some memory leaks. + - Fix a bug with feedback loop that would cause 100% CPU. + - A new pw-top tool to display real-time graph performance. + - The example session manager now has config files. + - The config file format was changed to use the SPA JSON + tokenizer. This makes it more flexible and extensible. + + PipeWire improvements + - Fix debug of id in format channels + - Audioconvert should now remap channels correctly in all + cases. + - Feedback loops were not scheduled correctly and would + cause 100% CPU usage. + - Small improvements to the profiler to also log incomplete + graph status. + - a new tool pw-top was added that prints real-time performance + stats of the graph. + - the rtkit module now sets the nice level to -11 + + Session-manager + - The session manager would sometimes link dont-reconnect + nodes to another node, which would leak monitor streams in + pipewire-pulse. + - The session manager now has configuration files. Config files + can also be placed in the user home directory to make custom + configurations. + - The session managers now creates unique device and node + names for alsa and v4l2 devices. + + Device support + - Many improvements in Bluetooth codecs, LDAC stuttering, + AptX-HD negotiation, LDAC ABR support + - Bluetooth supports AAC audio now. + - Many fixes to Bluetooth SCO transport used in headsets. + - inotify support in device monitors + - ACP was synced with the latest pulseaudio code + - Fix a bug in enumeration of device ports. + - PulseAudio server + - seek flags and offset are now supported, making gstreamer + pulse elements work better. + - Fix a crasher bug in pipewire-pulse, we sometimes would + write too much to the ringbuffer + - Fix some memory leaks in error cases. + - Fix handling of NULL string to locate default sink/source + + JACK layer + - Ports can also be found with the aliases now, making + qjackctl work in more cases. +- Changes from PipeWire 0.3.18: + + Highlights + - More work in the PulseAudio server. It should be compatible + with more applications. + - Bluetooth now support extra codecs such as AptX/HD and LDAC. + - Support for virtual sources and sink was improved a lot. + - Added a new pw-dump tool to dump the objects in JSON formats + and for filtering them with tools like jq. + - Many more stability fixes and improvements. + + PipeWire improvements + - Silence some harmless warnings + - pw-cli can now be used to set parameters. + - Streams now perform the correct channel mapping when linked + to non-standard multichannel devices. Previously channels + would get swapped. + - port, node and device params are now cached in the server. + This avoids opening and closing devices whenever some client + enumerates formats, which improves performance a lot, + especially in cases where opening a device is slow. + - Add a command to keep a device open during negotiation. This + is used to enumerate and set a format while opening the + device just once, improving performance. + - The null-sink scheduling was fixed. + - A memory corruption bug was fixed in format conversion, this + could cause crashes, silent channels or other undefined + behaviour. + - There is now a simple JSON parser. + + Session-manager + - Settings files are now stored in JSON. With the json parser + this is easier to parse and extend + + Device support + - Bluetooth now supports additional codecs: LDAC, AptX and + AptX HD. LDAC is known to not work very well yet. + - ALSA devices will now default to the max supported channels + if nothing else is specified. This makes it possible to use + 8+ channel cards with the alsa-pcm module, which is not + supported with the default alsa-acp module. + - Enable mSBC support in oFono. + - Add an option to disable hardware mixers + - ALSA now improves support for batch devices. + - The udev rules had references to Pulseaudio removed in order + to not create conflicts. + - Fix a potential crash in bluetooth devices when + disconnecting. + - UCM cards now use HW volume when possible. + + PulseAudio server + - The id can now be used as the name to locate cards and + devices + - Report streams with planar formats as well + - Better error reporting when stream create fails + - module-null-sink can now handle channels, rate and + channel_map properties + - Add support for 3 types of virtual devices: source, + sink and duplex. + - set-port was fixed + - Some buffer parameters were tweaked to improve + performance, compatibility and stuttering with lower + latency. + - NULL can be used as a name for the device sink/source + - Support lookup of monitor names + - Set properties more like pulseaudio so that some + clients (Teamspeak) don't crash anymore +- Changes from PipeWire 0.3.17: + + Highlights + - Fix crasher bug for kwin when screensharing stopped. + - Massive improvements and compatibility fixes in the + PulseAudio server. + - The session manager now has a config directory in + /etc/pipewire/media-session.d/ It will look for files there + to activate session manager modules. Packagers can use + this to only activate the audio modules when the PulseAudio + server, libjack.so or the alsa modules are installed. + + PipeWire improvements + - We now clear hooks before adding them. Some application + did not clear them and had random data for the destroy + callback. + - Return -ENOENT from unknown resources so apps can handle + this better. It's a common problem when an app tries to + introspect and object but it disappeared before the message + reached the server. Apps should ignore this. + - channelmap information is now passed with the volume + settings. + - DMABuf is not mmapp()ed anymore with the FLAG_MAP_BUFFERS in + the stream or filter. This is because DMABuf usually + requires more that just a simple mmap and is better left + for the application. + - increase the maximum number of ports for a client-node. + - adapter and node-factory now support the linger option to + keep the objects alive after the creating client disconnected. + + Device support + - ALSA now handles error in close(), like when unplugging a + USB device. + + Session-manager + - The session manager is now handling DONT_RECONNECT streams + without a target node. They get connected to a default node + once and then fail to reconnect. + - The session manager now exposes the stream setting as + metadata. This makes it possible for other components, such + as pulse-server to use this information. Information is stored + as a json object for easier consumption. + - The session manager now has a config directory in + /etc/pipewire/media-session.d/ packagers can use this + + PulseAudio server + - Pulse server now acquire the dbus name. + - Improvements in timing and compatibility with many apps. + - The stream-restore extension is now implemented so that + the event volume can be configured. + - Many stability fixes and improvements. + - Fix some issues with module-load/unload +- Changes from PipeWire 0.3.16: + + Highlights + - Fix screensharing for old 0.2 clients + - Many pulse-server improvements. There is now a + pipewire-pulse binary that is the prefered solution for + PulseAudio compatibility. The replacement libpulse + libraries are now deprecated. This also makes audio in + Flatpak work. + + PipeWire improvements + - Fix cleanup of listeners everywhere. Force remove of + listeners in _destroy to avoid crashes. + - Add support for a journald logger module. + - Various memory leak fixes + - Silence some warnings that spammed the logs. + - Fix flush in pw_stream. This fixes small glitches when + switching streams in music players. + - Various FreeBSD fixes and improvements. + - Fix some crashes when destroying objects. + + Device support + - Reload the ALSA configuration when creating a node so that + hotplugged devices work in all cases. + - Fix memory leaks in ACP library. This also fixes issues + where the mixer device was not closed. + - Bluetooth now has support for the mSBC codec for SCO + source and sink. + + pulse-server + - Many introspection and compatibility improvements. It should + now be as good or better than the replacement library. + - Implement sample cache to make notification events work. + + JACK layer + - handle errors when linking, fixes jack_connect hang when + the ports were already linked. +- Drop patches do-not-use-snd_pcm_ioplug_hw_avail.patch and + fix-memfd_create-call.patch, no longer needed on SLE/Leap which + have updated glibc / alsa. +- Drop do-not-install-alsa-config-files.patch, remove files at + install time instead. +- pw-pulse wrapper is gone, remove all mentions of it. +- Package pulseaudio replacement in a subpackage and drop + pipewire-libpulse-0_3 (pipewire will use pulseaudio libraries + directly). +- Create an alsa subpackage and move alsa pipewire plugin to this + subpackage. + +------------------------------------------------------------------- +Thu Nov 5 10:37:18 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.15: + + Highlights + - This is a quick update to fix critical issues with the + 0.3.14 update, which broke screen sharing and accidentally + enabled the experimental pulse-server. + - Fix some compatibility issues in pulse-server with + pavucontrol and fix an issue that would block the complete + server. + + PipeWire improvements + - Permission checks for new clients are now done from a + global context, which makes it possible to assign initial + permissions to objects. + - Handle EINTR everywhere + - Fix an issue with the node state changes where a quick + pause/play would hang a client. + + Session manager improvements + - Disable the bluez5 and pulse-bridge modules by default + because they interfere with pulseaudio. These options should + only be enabled if pulseaudio is removed or disabled in the + system. + - Fix an issue where the session manager could end up in + infinite recursion while scanning for things to do. + - The session manager will now always configure nodes to remix + to the channel configuration of the device. This fixes the + case where mono streams would only end up on one channel of a + stereo device. + + Device support + - Initial merge of A2DP extra codec support using the new + bluez5 API. + + pulse-server + - Create the runtime directory when it doesn't exist. + - Don't ever block the server, use non-blocking IO everywhere. + - Fill description of profiles with the name if not otherwise + set, this fixes a crash in pavucontrol. + - the connection debug catergory will now also debug pulse + messages. + - Respect the no_remix flag to make the control panel channel + check work. + + ALSA plugin + - implement pause + +------------------------------------------------------------------- +Tue Nov 3 08:11:46 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.14: + + Highlights + - This release focuses on bugfixes and stability + improvements. + - A new experimental pulse-server module was added. This + module implements the pulseaudio protocol on top of + PipeWire and can be used to make flatpaks work with + PipeWire. It looks like this might be a better way + forward compared to the libpulse.so replacement library. + - A2DP bluetooth was reworked. Playback should work a lot + better now. Support was also added to automatically link + an A2DP source to a playback device, which makes it possible + to use PipeWire as a bluetooth receiver as well. + - Improvements to the routing and volume restore features + of the session manager. + + PipeWire improvements + - The channelmixer does not normalize volumes anymore. Volumes + are only normalized for monitoring streams now. + - Streams can actually start in the inactive state now. + - The channelmixer can now also convert volume updates from one + channel layout to another. This makes saved volumes work + even when streams have different channel layouts. + - Clients are only registered after the properties have been + updated. + - Links now have a new active state. + - Drivers can now also specify a minimum quantum. This makes it + possible for bluetooth devices to specify an optimum quantum + for the given codec settings and MTU. + - The amount of data sent over the socket was reduced by only + sending the data that changed. + - Client objects are now exposed after they uploaded their + properties, which makes the new object more useful. + + Tools improvements + - pw-cat will now add metadata to the PipeWire streams. + + Session manager improvements + - Fix crashes when reading bad data in stored settings. + - volume and routing is improved. Settings are now remembered + per application or media-role. + - The session manager remembers the last device used per stream + - Fix a bug when moving streams where it could sometimes end + up with linking a stream to multiple devices. + - Use RTKit to set realtime priority on the data thread in the + session manager. This improves performance of the pulse-server + and bluetooth devices. + - Add a new property to mark streams that want to capture from + the monitor of the default sink. + - NODE_TARGET can now also contain the node name. This avoids + some lookups in the pulseaudio layer when selecting target + nodes by name. + - the -e and -d options are more usable now and can be used to + add and remove modules from the default list of modules. + + Device support + - v4l2: add some workarounds for buggy drivers. Add Limited + support for droidcam. + - ACP: improve selection of default port and profiles. + - ACP: add support for using the hardware mixer for more than + 8 channel streams. + - ACP: support the new port type and availability group found + in PulseAudio. + - A2DP bluetooth timings were reworked. Automatic linking of + A2DP sources was added to make it possible for PipeWire to + act as a bluetooth receiver. The code was reworked to allow + other codecs such as APTX and LDAC in the future. + - Try harder to recover from ALSA errors. + + GStreamer improvements + - Fix some crashes in the monitor that cause + gnome-initial-setup to crash. + + PulseAudio layer improvements + - Many compatibility improvements. Improved playback in + chrome. Fix a crash in firefox when the daemon is stopped. + - Fix a leak in the formats. + - Fix !ADJUST_LATENCY streams like paplay. + - Make the device option in paplay work. + - Fix volume/mute notifications, this makes plasma volume updates + work again. + - Do the conversion between PulseAudio cubic volumes and PipeWire + linear volumes. Volume levels should behave now like they did + with PulseAudio. + + JACK layer improvements + - Return an error when we run out of midi events. Some application + rely on this behaviour. + + ALSA plugin improvements + - The ALSA plugin now also supports the node name in the + playback_node and capture_node properties. + +------------------------------------------------------------------- +Tue Oct 27 17:32:57 UTC 2020 - Antonio Larrosa + +- Rename 99-pipewire-default.conf to + 99-pipewire-default.conf.example so it's disabled by default and + all ALSA I/O doesn't get redirected to pipewire (which was only + overrided by pulseaudio's configuration in alsa-plugins-pulse + casually). Thanks to Takashi Iwai for noticing (boo#1178104, + boo#1177166 and probably boo#1175584) +- Add baselibs.conf (boo#1177555) + +------------------------------------------------------------------- +Thu Oct 8 08:29:36 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.13: + + PipeWire improvements + - Add pw-reserve tool to reserve or monitor a device on DBus. + - Install spa-resample, a tool to resample a file. + - Install spa-acp-tool, a tool to inspect the card profile. + - Various fixes and improvements + - Fix a bug in pw-stream where a capture stream could run out + of buffers and become silent. + - Rework the processing loops in the adapter and stream. There + is now less latency in PulseAudio and ALSA layers. + + Session manager improvements + - Improve the device reservation code. We now try to acquire + the device using the dbus device reservation API before we + probe the device. This avoids conflicts with a running + PulseAudio where devices would disappear (because they were + locked by the other process). + - Don't fail on invalid input from the config files. + - Audio devices now have the same name as what PulseAudio + would assign. + + Device support + - v4l2: try to use the format before enumerating the size and + framerate. Some drivers don't check the format and might now + work better. + - v4l2: Fall back to MMAP when EXPBUF fails. Fix MMAP access, + just export the fd and the mapoffset. This should make more + devices work. + - Fix crash in ALSA Card Profile (ACP) code. + - ACP: fix selection of default profile. Prefer any possibly + available profile over 'Off'. This makes some card at least + start with something. + - Fix soft volume. After setting the volume to 0, it would stay + at 0 until pushed over the max volume. This should fix + various volume related issues. + + PulseAudio layer improvements + - Rework the buffering and latency measurements and tweak the + buffer attributes. This should make browsers and media + players work better. This should also improve speechd + performance. + + JACK layer improvements + - Fix compilation against newer JACK. + +- Rebase patch: + + do-not-install-alsa-config-files.patch + +------------------------------------------------------------------- +Tue Sep 22 12:37:18 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.12: + + PipeWire improvements + - The channelmap converter now handles unknown and strange + channel layouts much better. + - The resampler is now cleared correctly, avoiding clicks and + pops at the start of sound. + - Fixes for various crasher bugs. (paplay drain, vlc shutdown, + pactl info, ...) + - Fix a race condition in the node state changes that caused + all kinds of sync and other issues (vlc, mpv, ...) + - Improve the binary name property of applications + - Fix the scheduling again of nodes that always need a driver + such as the jack clients. + + Session manager improvements + - Fix routing to default nodes. Sometimes nodes were not routed + to the default node (bluetooth) + + Device support + - Disable channelmap from ALSA by default. This is what + PulseAudio does and thus provides better compatibility. + - Fix a bug in how the resampler was used in the ALSA source, + causing distortion and errors when using low latency capture + clients. (Discord, webrtc, ...) + - Small bluetooth improvements. More work is needed for + reliable bluetooth playback. + + GStreamer plugins + - The device provider now stops the processing loop before + shutting down, which avoids crashes (gnome-initial-setup). + + PulseAudio layer improvements + - The buffer attributes were reworked to ensure compatibility + with many more applications such as mpv and audacious. + - The pulseaudio layer will now try hard to not hand out + invalid channel maps to the application. (avoids crashes in + gnome-volume-control). The channel map will now also look + more like what PulseAudio does. + - The @DEFAULT_SINK/SOURCE/MONITOR@ wildcards now work. This + fixes the problem with volume keys when they are bound to + scripts using pactl and the default sink/source wildcards. + - The PIPEWIRE_LATENCY environment variable now works again + - Fix some leaks of ports and port info. Also fix the leak of + the context when the mainloop is stopped. + - The sink/source format_info array is now filled up + completely, this is actually not implemented yet in the real + PulseAudio. + + JACK layer improvements + - jack now returns version 3.0.0 and has PipeWire in the + version string so that apps can report this. +- Drop patch: + + 0001-alsa-dont-change-the-resampler-delay-value.patch + +------------------------------------------------------------------- +Fri Sep 18 05:32:09 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.11: + + PipeWire improvements + - Properly cleanup the mixer structures when a port is removed, + this should fix client crashes related to port config changes + and other random crashes. + - Optimize the preferred formats in the audio converter. Higher + quality formats with higher performance are chosen first. + - Make sure the time reported by pw_stream is always + increasing, even when the driver and clock changes. + - There is now also a system service and socket that can be + used to enable PipeWire systemwide. This is however not + recommended and disabled by default. + - Fix channelmixer 5.1 to stereo mix matrix. It was not reading + the conversion matrix correctly and cause channels to be + dropped. The channelmixer will now also normalize the volume, + like what pulseaudio does. + - The channelmixer will now just copy channels when no layout + has been given. It has also optimized paths for this. This + makes it possible for apps to request > 8 channels from the + alsa plugin (ardour). + - Port, Node and Link will now also emit an error on the + resources in addition to updating the error in the info. This + would make it easier to track negotiation errors in the + session manager later. + - many small fixes and cleanups. + - Fix compatibility: + - DOSBox: fix crash because of double free in pw_stream + + Session manager improvements + - The session manager will now try to configure the client to + the channel configuration of the sink/source. It will only + do this for downmixing, never for upmixing and also never + when the client has the dont-remix property set. It will + also renegotiate the channel layout when moving a stream to + a new sink/source. + - Configuration state is now saved in XDG_CONFIG_HOME. + Previously it was saved in $HOME/.pipewire-media-session/ + You can migrate the state by moving the files to + $XDG_CONFIG_HOME/pipewire-media-session (or + $HOME/.config/pipewire-media-session as a fallback when + XDG_CONFIG_HOME is not set). + + Device support + - Bluetooth sources and sinks should work better now. + - There is now also a new bluetooth backend using hsphfpd. + - fix the ALSA UCM Off profile for alsa pcm devices + - improve ALSA port and profile switching. The ACP device will + now switch to the best port and profile when availability + changes. + + PulseAudio layer improvements + - Implement some more callbacks. The pulse layer will now also + notify applications of stream moved, started and latency + changes. + - Fix error code when an object was not found. We now return + PA_ERR_NOENTITY instead of PA_ERR_INVALID. + - Add some support for loading new null sinks. Applications + such as pulseeffects use this. Note that pulseeffects does + not yet work reliably but can start now. + - Improve handling of profile and port updates, it should work + much more reliable now. Apps should now also again receive + volume updates from sinks/sources. + - Fix compatibility: + - openal-soft 1.20 + - pavucontrol (checks PA_ERR_NOENTITY) + + JACK layer improvements + - improve default source and sink handling. It was not updated + correctly in all cases. + - add samplerate and period to the pw-jack wrapper to easily + configure the desired samplerate and perdiod for the app. + + ALSA plugin improvements + - Add a mixer entry in the alsa config file. + - Implement support for planar types, rework the processing + function to make it more robust. + - refuse to load the alsa plugin when linked against 0.2. This + catches some old apps linked against 0.2 that want to use the + alsa plugin. + - Fix compatibility: + - linphone (ALSA SIGFPE when _status() is called + before _prepare()). +- Includes fix for a division by 0 error (boo#1176515): + + 0021-alsa-protect-against-SIGPFE.patch +- Add patch from upstream to fix audio stutters in discord and probably + other applications when using alsa directly. + + 0001-alsa-dont-change-the-resampler-delay-value.patch + +------------------------------------------------------------------- +Thu Aug 27 06:00:06 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.10: + + Many improvements to the pulse layer. + - GStreamer pulsesink element now works. + - Fixes some segfaults. + - Enable rtkit for client threads. + - fixes capture of monitor stream by name + - implement some more extensions, this makes paman + work and removes some warnings. + + Many improvements to the GStreamer elements + - negotiation rework, avoid calling GStreamer methods from + the PipeWire callbacks because they might block and cause + deadlocks. + - Add support for non-string property values. + - improve stability after buffer and format + renegotiation. + - Rework the device provider. + - pipewiresink can now provide a stream that can + be consumed by apps like cheese. + + Many improvements to the JACK layer: + - Rework the buffer_size callbacks. Make sure we call + the callback from a 'safe' thread and that we don't + call the process callback while the application is + handling the callback. This improves stability in + apps like Carla when PipeWire dynamically changes + the buffer size. + - Improve compatibility with apps that call + get_buffer_frames() with a 0 size (calfjackrack) + - JACK can now create nodes that can be set as a + sink/source in PulseAudio/ALSA apps (you can make an + effects rack and set that as default sink for + apps). + + Added a group id property for nodes. This makes it + possible to schedule nodes with the same driver even + when they are otherwise not linked together. To make + this work well a new flag needed to be added to nodes + to signal when they are ready for processing. + Together with the GStreamer fixes, this makes things + like: + gst-launch-1.0 -v pipewiresrc path=51 stream-properties="props,node.group=1" ! + audio/x-raw ! pipewiresink stream-properties="props,node.group=1" + work as expected with PipeWire managing the resampling + to keep the clocks of the devices in sync. + This can later also be used to force devices to be grouped + together to create a JACK-like scheduling group. + + Streams and filter now use PIPEWIRE_NODE and + PIPEWIRE_LATENCY env variables as fallback. + + ACP add per device port list. This makes UCM devices + expose the right ports. + + Fix some segfaults in ACP and UCM. + + make pw-cat use the metadata to find default devices. + + The media session can now save and load audio device + Profiles and Routes (volumes), stream volumes and + the default sink and sources. + +------------------------------------------------------------------- +Thu Aug 13 11:28:16 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.9: + + Fix bad audio in chrome + + Remove some errors that are not real errors. + + Fix 100% cpu when disconnecting devices. + + Improve pulseaudio introspection of formats + + Fix JACK metadata handling, carla can now monitor the + port it creates and insert midi. + + Add a new permission bit (M) that is needed to be able + to configure metadata on an object. Improve security of + metadata some more, only allow metadata on objects that + are visible to the client setting the metadata. + + Add support for videocrop in the GStreamer elements. + + Improve handling of the runtime directory for the + server sockets. Add some reasonable fallback when + XDG_RUNTIME_DIR is not set, as suggested in the spec. + + Improve ALSA device names from ACP. + + Fix various crasher bugs. One in the pulse layer, one in + the session manager. + + Make alsa plugin respect the PIPEWIRE_REMOTE env variable. + + Various compile fixes. + +------------------------------------------------------------------- +Fri Jul 31 07:50:45 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.8: + + Fix an embarrassing crasher in the JACK layer when metadata + keys were removed. + + Make it possible to add properties to jack clients with a + PIPEWIRE_PROPS env variable. This can be used to make JACK + nodes look like a device (like an effects rack). + + Improvements in the session manager in how it links ports. + Now it will try to link matching channels first and be more + intelligent otherwise. The session manager will also configure + the stream to the device port configuration when needed. + + Add ofono backend for Bluetooth HeadSet support. + + Improve default source and sink handling. They are now stored + with their id, instead of name, in the metadata. This makes it + work better with JACK because of JACK's limited name length. + + Improve environment variables to make it possible to create + and connect to servers other than "pipewire-0". Implement + this in pulseaudio, JACK and alsa layers. + + Add an alsa mixer plugin so that alsamixer works with PipeWire. + It will configure the default source/sink volumes. + + Fix capture devices. There was something wrong with how the + resampler was used that caused corruption in the signal when + the resampler was active. + + We now ship alsa card paths, profile-sets configuration files + and udev rules so that we don't have to rely on the pulseaudio + ones. + + Many build and stability fixes. + +- Update to version 0.3.7: + + Improved PulseAudio compatibility. The alsa card profile + code was reused from PulseAudio. Devices now support + all profiles, ports, jack detection, UCM and hardware + mixers that PulseAudio implements. There should not + be (almost) any difference between PipeWire and PulseAudio + in how it presents and manages devices. + Other missing API pieces such as the default sink/source + and move_stream are implemented now. At this point + it should be possible to replace PulseAudio with the + compatibility layer for those who want to try. + + Many fixes and improvements to the GStreamer elements. + pipewiresrc now has the ability to periodically resend + the last frame. This makes it possible for use-cases like + screensharing to only update the screen on changes while + still keeping the client side encoder busy. PipeWire + elements can now also share a connection between them. + + Improvements to the bluetooth nodes. Dynamically adding + and removing devices should work much smoother now. Many + fixes and improvements to a2dp and sco nodes. + + Reduced memory usage by using less pre-allocated memory + where possible. JACK clients are especially using less + memory. + + Support for passive links is added again. These are links + that don't cause the associated driver to become active. + This makes it possible to have blocks of effects+sinks go + to suspend as a group when not in use. + + Both consumers and producers can now ask to renegotiate + the format. This required some cleanups and improvements + to how links and node states were handled. More work is + needed to implement more use cases. + + Important fixes to how memory is shared with clients. Memory + was not correctly freed in all cases, which would result + in reuse of the wrong memory. + + Support for planar formats for audio and video was added. + + Improved error handling in the session manager. + + Metadata is now used to manage default audio source and + sink devices. The session manager will try to link streams + to the default device. Changing the default device will + move streams to the new device. PulseAudio and JACK layers + respect the default source/sinks. + + Metadata is used to tag the desired output device for + a stream and the session manager will move streams when + the metadata changes. The PulseAudio layer uses this to + implement the move_stream feature. + + Many fixes to the security modules. The session manager now + has a flatpak module that grants permissions to flatpak + apps. The PulseAudio layer now respects the permissions of + objects. Security related properties are made read-only + now. Different access modules can now coexist. + + The portal module has been split up in 2 parts: + - a part living in the daemon that monitors the portal + dbus owner and tags all clients from this PID. This + part has to run in the daemon in order to securely + tag the clients. + - a part in the session manager that uses the permission + store to manage the permissions of portal managed + clients. + +- Drop patches already included in 0.3.7: + + 0001-client-node-fix-buffer-size-calculation.patch + + 0002-gst-fix-proxy-leaks.patch + + 0003-pulse-fix-pa_card_info-profiles2-array-to-be-NULL-terminated.patch + + 0004-pulse-fix-size-calculation.patch + + 0005-jack-fix-crash-on-close-when-metadata-are-not-available.patch + + 0006-a2dpsink-only-request-new-data-when-buffer-is-done.patch + + 0007-pulse-fix-counter-while-populating-car_info-profiles.patch + + 0008-impl-link-reset-state-before-starting-allocation.patch + + 0009-impl-core-clear-the-mempool.patch + + 0010-mem-reset-the-map-in-clear.patch + + 0011-avoid-uninitialized-variables.patch + + 0012-dlclose-on-errors.patch + + 0013-stream-handle-NULL-context.patch + + 0014-state-always-update-state-variables.patch + + 0015-spa-device-fix-leak-of-properties-in-error-case.patch + + 0016-alsa-dont-leak-structure-on-error.patch + + 0017-alsa-dont-leak-properties-on-error.patch + + 0018-stream-fix-some-more-leaks-in-error-paths.patch + + 0019-buffers-increase-max-datas-and-metadata-in-buffers.patch + + 0020-gst-return-NULL-for-unknown-format.patch +- Drop patch and replace it with a sed substitution since the patch + context includes the package version and would have to be + modified in every package update: + + fix-meson-required-version.patch +- Add patch to not install alsa card paths, profile-sets + configuration files and udev rules which upstream installs + "so that we don't have to rely on the pulseaudio ones". + + do-not-install-alsa-config-files.patch + +------------------------------------------------------------------- +Wed Jul 15 07:26:01 UTC 2020 - Antonio Larrosa + +- Recommend pipewire from libpipewire, so if the library is + installed the daemon gets pulled in since we want a daemon + to connect to. +- Require pipewire-spa-plugins from pipewire instead of + recommending it since the support plugin is actually required + for most uses (like screen sharing in wayland, which we want to + support out-of-the-box). +- Enable the pipewire.socket systemd user service in %post + (using pulseaudio's %post section as an example of how to do it + since systemd-presets-common-SUSE currently lacks support for + user services). Also disable it in %preun and %postun. + +------------------------------------------------------------------- +Tue Jul 14 08:25:49 UTC 2020 - Antonio Larrosa + +- Add patches from upstream to fix many issues mainly related to + memory leaks, crashes and wrong behaviour: + + 0001-client-node-fix-buffer-size-calculation.patch + + 0002-gst-fix-proxy-leaks.patch + + 0003-pulse-fix-pa_card_info-profiles2-array-to-be-NULL-terminated.patch + + 0004-pulse-fix-size-calculation.patch + + 0005-jack-fix-crash-on-close-when-metadata-are-not-available.patch + + 0006-a2dpsink-only-request-new-data-when-buffer-is-done.patch + + 0007-pulse-fix-counter-while-populating-car_info-profiles.patch + + 0008-impl-link-reset-state-before-starting-allocation.patch + + 0009-impl-core-clear-the-mempool.patch + + 0010-mem-reset-the-map-in-clear.patch + + 0011-avoid-uninitialized-variables.patch + + 0012-dlclose-on-errors.patch + + 0013-stream-handle-NULL-context.patch + + 0014-state-always-update-state-variables.patch + + 0015-spa-device-fix-leak-of-properties-in-error-case.patch + + 0016-alsa-dont-leak-structure-on-error.patch + + 0017-alsa-dont-leak-properties-on-error.patch + + 0018-stream-fix-some-more-leaks-in-error-paths.patch + + 0019-buffers-increase-max-datas-and-metadata-in-buffers.patch + + 0020-gst-return-NULL-for-unknown-format.patch + +------------------------------------------------------------------- +Fri Jul 3 08:29:04 UTC 2020 - Antonio Larrosa + +- Rebase patches used in SLE/Leap: + + do-not-use-snd_pcm_ioplug_hw_avail.patch + + fix-memfd_create-call.patch + +------------------------------------------------------------------- +Tue Jun 16 09:04:18 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.6 (boo#1171433, jsc#ECO-2308): + + Extensive memory leak fixing and stress testing was done. + A big leak in screen sharing with DMA-BUF was fixed. + + Compile fixes + + Stability improvements in jack and pulseaudio layers. + + Added the old portal module to make the Camera portal + work again. This will be moved to the session manager in + future versions. + + Improvements to the GStreamer source and sink shutdown. + + Fix compatibility with v2 clients again when negotiating + buffers. +- Disable vulkan if the vulkan package is too old (as in + SLE 15 SP0 and SP1) +- Add patch to build with meson >= 0.46.0 since 0.50.0 is not + really needed: + + fix-meson-required-version.patch + +------------------------------------------------------------------- +Thu May 21 08:50:18 UTC 2020 - Antonio Larrosa + +- 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 + +- 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 + +- 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. + +------------------------------------------------------------------- +Wed Apr 1 07:35:48 UTC 2020 - Antonio Larrosa + +- Use the License rpm tag to specify that although most of + pipewire is licensed under MIT, the pulseaudio replacement + library is licensed under LGPL-2.1+. + +------------------------------------------------------------------- +Tue Mar 31 15:11:45 UTC 2020 - Antonio Larrosa + +- Use gcc9 to build in SLE-15 / Leap 15, since at least gcc8 is + needed now. + +------------------------------------------------------------------- +Tue Mar 31 10:48:28 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.2: + + build fixes + + Added support for data type negotiation. This makes it + possible for a client to say that it can handle DMABuf + and MemFd and then let the server select a compatible + format. + + Handle errors when enumerating parameters better. + + Add support for rate, format, channels and period_bytes + to the alsa config file to restrict what alsa apps can + negotiate. + + Fix JACK midi output. + + Optimizations in common audio format conversions using + AVX2. Small optimizations to plugins. + + Change the vulkan compute example to an MIT licensed + shader. + + Remove some hardcoded defaults in the audio and video + processing and use the values from the processing + context. This also fixes the vulkan example. + + Correct the documentation and defaults in the daemon + config file. + + Fix alsa and v4l2 buffer recycle. A paused client could + cause the server to leak all buffers. + + Remove some warnings that should be ignored. + + Fix a crash in the bluez5 plugins. + + Try to select higher quality formats first when + negotiating a format with an audio device. + + Fix an infinite loop in udev detection in some cases. + + Add non-interactive mode to pw-cli. You can now just + do "pw-cli ls Port" to get a listing of all ports. + pw-cli will now also connect to the default server by + default and has options to select a different server. + + Allow the server to go up to the maximum quantum (8192 + samples or ~=180ms) if a client explicitly wants this. + + +------------------------------------------------------------------- +Mon Mar 23 13:56:45 UTC 2020 - Bjørn Lie + +- Update to version 0.3.1+48: + + Fix 32bit build. + +------------------------------------------------------------------- +Wed Mar 18 16:33:21 UTC 2020 - Bjørn Lie + +- Switch to source service, update to explicit head, file with + non-compliant license replaced. + +------------------------------------------------------------------- +Tue Mar 17 10:58:42 UTC 2020 - Bjørn Lie + +- Switch license to MIT and actually package it. +- Add doxygen, graphviz and xmltoman BuildRequires and pass docs + and man = true to meson, build documentation. Package docs in a + new docs sub-package. +- Add check section and run meson_test macro, run tests during + build. +- Add fdupes BuildRequires and pass fdupes macro, remove duplicate + files. + +------------------------------------------------------------------- +Mon Mar 9 16:11:08 UTC 2020 - Antonio Larrosa + +- Update to version 0.3.1: + + This is a bugfix release that is API and ABI compatible + with previous 0.3.x releases. + + Don't load the rtkit module by default. It can cause a + sigkill, which is not desirable for mutter, for example. + Only enable this for the jack library for now. + + Don't use pthread cancel by default because it uses a + signal that might crash some apps. Only use it for + the jack library because jack clients really expect this. + + Build fixes for -Werror=suggest-attribute=format + + improve error messages, don't report harmless errors and + warnings. Try to send error messages to the proxy that + started the operation or is the owner of the object. + + pw-cat: midi improvement, add midi recording and dump + in verbose mode + + fix properties when loading spa-nodes from the config + + Fix and update some examples + + jack: check arguments and don't crash when invalid + + Fix buffer memory upload. + + jack: fix compatibility with zrythm. Fix timemaster + install, improve sample_rate callback. Fix reposition + handling. + + fix crash in port after buffer negotiation error. + + add support for control ports in pw_filter + + fix cleanup of the metadata module + + improve param enumeration. + + Clear stream buffers when the format is cleared. + + Add create-object command in the config file to create + object from a factory. + + Fix crash after the driver was not removed from unassigned + nodes. Also properly pause inactive nodes. + + Use "true" and "false" in properties when we are talking + about a boolean. + + pulseaudio: improve compatibility + +------------------------------------------------------------------- +Fri Feb 21 15:13:15 UTC 2020 - Antonio Larrosa + +- Add patch to build correctly with glibc < 2.27 (like in SLE/Leap): + + fix-memfd_create-call.patch + +------------------------------------------------------------------- +Fri Feb 21 12:32:01 UTC 2020 - Antonio Larrosa + +- Add BuildRequires for pkgconfig(sndfile) and pkgconfig(vulkan) + so the vulkan plugin is built. +- Version the spa-plugins subpackage so different versions of + the plugins can be co-installed in the future. + +------------------------------------------------------------------- +Thu Feb 20 18:54:53 UTC 2020 - Bjørn Lie + +- Update to version 0.3.0: + + The 0.3 release is a major milestone in the developement of + PipeWire. It features a complete redesign of the scheduling + mechanisms that make it possible to run a JACK compatibility + layer with comparable performance to JACK2. + + The API has been reworked and is declared stable now. All + developement files and runtime paths are versioned so that + future incompatible changes can be done without breaking + exising applications. + + PipeWire 0.3 also includes a (now mandatory) session manager + that populates and controls the PipeWire graph. This example + session manager is very simple and not configurable. It is + expected that future version will either switch to a more + flexible session manager (like WirePlumber) or improve the + configuration options of the example session manager. + + PipeWire 0.3 includes both PulseAudio, JACK and ALSA + compatibility libraries that are known to support a wide range + of applications. The ALSA library is pretty complete at this + point. The JACK and mostly the PulseAudio compatibility + libraries need more work. See the Wiki pages for the current + compatibility problems. We do not yet encourage people to + switch away from their existing audio solutions (PulseAudio + or JACK) but we would love to hear from people who try it + anyways. Future versions will mostly focus on improving + compatibility further to make PipeWire a drop-in replacement. + PipeWire comes with some GStreamer plugins to consume and + produce data for PipeWire. The consumer (pipewiresrc) is + working well in most cases. The sink (pipewiresink) is known + to be somewhat problematic for now. +- Add pkgconfig(bluez) and pkgconfig(libpulse) BuildRequires: New + dependencies. +- Bump libpipewire, apiver and spa_ver define following upstreams + changes. Also add a new sover define. +- Package new subpackages: libjack-pw0_3_0, + libpulse-mainloop-glib-pw0_3_0, libpulse-pw0_3_0 and + libpulse-simple-pw0_3_0, as well as handle them in post(un). +- Adjust options passed to meson following upstreams changes. + +------------------------------------------------------------------- +Wed Nov 6 12:29:43 UTC 2019 - Fabian Vogt + +- Update to version 0.2.7: + + Add support for alsa-lib 1.1.9 which changed the include path + + Improve error checking and reporting in the protocol + + deviceprovider: fix probing without starting + + add sentinel to some functions + + compiler fixes for musl + + Revert object tree permission checks that broke things, this is + probably not a good idea (and the tree of objects is going to + be removed later) + +------------------------------------------------------------------- +Wed May 22 16:33:08 UTC 2019 - Markus S + +- Update to version 0.2.6: + + Improve error checking for threads. + + Fix some memory and fd leaks. + + Fix compilation with C++ compilers and clang. + + DISABLE_RTKIT should now not try to use dbus at all. + + Camera Portal fixes: + - add Camera media.role. + - Rename module-flatpak to module-portal. + - Use the portal permissions store for camera checks. + + Actually use the passed fd in pipewiresrc. + + Make properties with "pipewire." prefix read-only. + + Add security label to client object. + + Enforce link permissions. + + Permissions of objects are now combined with parent + permissions. + + Remove libv4l2 dependency, it is not used. + + Improve format negotiation in autolink #146. + + Try to avoid list corruption with event emmission #143. + + Fix destroy of client-node memory corruption. + + Various small improvements. +- Remove pkgconfig(libv4l2) BuildRequires: follow upstreams cleanup + of build dependencies. +- Drop avoid-invalid-conversion-error-with-C++.patch: fixed + upstream. + +------------------------------------------------------------------- +Fri Apr 19 14:27:04 UTC 2019 - Fabian Vogt + +- Add patch to fix use of headers from C++: + + avoid-invalid-conversion-error-with-C++.patch + +------------------------------------------------------------------- +Thu Feb 21 13:06:16 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 0.2.5: + + Build fixes for systemd. + + Add cursor and bitmap metadata. This can be used to send a + cursor sprite with the video stream. + + Permissions were set too strict for non-flatpak clients. + + Fix crash in loop caused by thread unsafe hook emission. + + Add more error checking for thread-loop. + + Small cleanups and bugfixes. +- Drop libspa define and add spa_ver define, and following this + drop libspa-lib1 subpackage, no longer built. +- Drop doxygen BuildRequires and manpages source, follow upstream + in not building docs nor manually installing manpages that have + to be updated every version bump to ensure they are current. +- Add pkgconfig(libsystemd) BuildRequires: New dependency. +- Update options passed to meson following upstream changes. + +------------------------------------------------------------------- +Mon Aug 13 18:55:29 UTC 2018 - bjorn.lie@gmail.com + +- Update to version 0.2.2: + + Add apiversion to pkgconfig as well. +- Add apiver define and set it to 0.2. +- Bump libpipewire define to libpipewire-0_2-1 and libspa define to + libspa-lib1 following upstream changes. + +------------------------------------------------------------------- +Mon Jul 23 19:38:08 UTC 2018 - bjorn.lie@gmail.com + +- Update to version 0.2.1: + + stream: update to latest API. + + hook: add private data for future expansion. + +------------------------------------------------------------------- +Tue Jul 17 15:31:07 UTC 2018 - alarrosa@suse.com + +- Update to version 0.2.0 + + No changelog provided by upstream. To see the changes in this + version, please browse the commit logs at + https://github.com/PipeWire/pipewire/commits/0.2.0 . + +------------------------------------------------------------------- +Tue Mar 13 04:27:43 UTC 2018 - luc14n0@linuxmail.org + +- Initial package, version 0.1.9. + diff --git a/pipewire.obsinfo b/pipewire.obsinfo new file mode 100644 index 0000000..9a8e49d --- /dev/null +++ b/pipewire.obsinfo @@ -0,0 +1,4 @@ +name: pipewire +version: 1.0.3 +mtime: 1706879347 +commit: 6ab86209f23a841de7eac6bc0c1009aceb9ffd87 diff --git a/pipewire.spec b/pipewire.spec new file mode 100644 index 0000000..aef458d --- /dev/null +++ b/pipewire.spec @@ -0,0 +1,784 @@ +# +# spec file for package pipewire +# +# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2018 Luciano Santos, luc14n0@linuxmail.org. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%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 + +%if %{pkg_vcmp pkgconfig(vulkan) >= 1.3} +%define with_vulkan 1 +%else +%define with_vulkan 0 +%endif + +%ifnarch s390 s390x ppc64 +%define with_ldacBT 1 +%define with_webrtc_audio_processing 1 +%else +%define with_ldacBT 0 +%define with_webrtc_audio_processing 0 +%endif + +%if 0%{?suse_version} > 1500 +%bcond_without libcamera +%else +%bcond_with libcamera +%endif + +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400 +%bcond_without aac +%else +%bcond_with aac +%endif + +%if %{?pkg_vcmp:%{pkg_vcmp meson >= 0.59.0}}%{!?pkg_vcmp:0} +%bcond_without pipewire_jack_devel +%endif + +%if 0%{?ffmpeg_pref:1} +%bcond_without use_ffmpeg +%else +%bcond_with use_ffmpeg +%endif + +%bcond_with aptx + +Name: pipewire +Version: 1.0.3 +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 +Source99: baselibs.conf +# PATCH-FIX-OPENSUSE reduce-meson-dependency.patch +Patch0: reduce-meson-dependency.patch + +BuildRequires: docutils +BuildRequires: doxygen +BuildRequires: fdupes +BuildRequires: gcc-c++ +%if 0%{?suse_version} <= 1500 +BuildRequires: gcc11 +BuildRequires: gcc11-c++ +%endif +BuildRequires: graphviz +BuildRequires: meson >= 0.59.4 +BuildRequires: pam-devel +BuildRequires: pkgconfig +BuildRequires: readline-devel +BuildRequires: systemd-rpm-macros +BuildRequires: pkgconfig(alsa) >= 1.1.7 +BuildRequires: pkgconfig(avahi-client) +BuildRequires: pkgconfig(bluez) +BuildRequires: pkgconfig(dbus-1) +%if %{with aac} +BuildRequires: pkgconfig(fdk-aac) +%endif +BuildRequires: pkgconfig(gio-2.0) +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.32.0 +BuildRequires: pkgconfig(gmodule-2.0) +BuildRequires: pkgconfig(gobject-2.0) +BuildRequires: pkgconfig(gstreamer-1.0) +BuildRequires: pkgconfig(gstreamer-allocators-1.0) +BuildRequires: pkgconfig(gstreamer-audio-1.0) +BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) +BuildRequires: pkgconfig(gstreamer-video-1.0) +BuildRequires: pkgconfig(jack) >= 1.9.10 +%if %{with_ldacBT} +BuildRequires: pkgconfig(ldacBT-abr) +BuildRequires: pkgconfig(ldacBT-enc) +%endif +%if %{with use_ffmpeg} +# Break circular dependency with ffmpeg +BuildRequires: %{ffmpeg_pref}-mini-devel +%endif +BuildRequires: pkgconfig(lc3) +%if %{with libcamera} +BuildRequires: libcamera-devel >= 0.2.0 +%endif +BuildRequires: pkgconfig(libcanberra) +BuildRequires: pkgconfig(libcap) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libffado) +%if %{with aptx} +BuildRequires: pkgconfig(libfreeaptx) +%endif +BuildRequires: pkgconfig(libmysofa) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(libusb-1.0) +BuildRequires: pkgconfig(lilv-0) +BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(opus) +BuildRequires: pkgconfig(sbc) +BuildRequires: pkgconfig(sndfile) +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(vulkan) +%if %{with_webrtc_audio_processing} +BuildRequires: pkgconfig(webrtc-audio-processing-1) +%endif +BuildRequires: pkgconfig(x11) +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400 +BuildRequires: pkgconfig(xfixes) +%endif +BuildConflicts: pipewire-libjack-%{apiver_str}-devel +Requires: %{libpipewire} = %{version} +Requires: %{name}-modules-%{apiver_str} = %{version} +Requires: %{name}-session-manager +Requires: %{name}-spa-plugins-%{spa_ver_str} = %{version} +Requires: %{name}-spa-tools = %{version} +Requires: %{name}-tools = %{version} +Requires: rtkit +Suggests: wireplumber +%{?systemd_ordering} + +%description +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. + +%package -n %{libpipewire} +Summary: A Multimedia Framework designed to be an audio and video server and more +Group: System/Libraries +Requires: pipewire-modules-%{apiver_str} >= %{version} +Requires: pipewire-spa-plugins-%{spa_ver_str} >= %{version} +Recommends: pipewire >= %{version} + +%description -n %{libpipewire} +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 libjack-%{apiver_str} +Summary: PipeWire libjack replacement libraries +Group: Development/Libraries/C and C++ +Requires(post): update-alternatives +Requires(postun): update-alternatives + +%description libjack-%{apiver_str} +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. + +%package libjack-%{apiver_str}-devel +Summary: Development files for %{name}-libjack-%{apiver_str} +Group: Development/Libraries/C and C++ +Requires: %{name}-libjack-%{apiver_str} = %{version} +Conflicts: libjack-devel + +%description libjack-%{apiver_str}-devel +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 development files +for libjack. + +%package -n gstreamer-plugin-pipewire +Summary: Gstreamer Plugin for PipeWire +Group: System/Libraries + +%description -n gstreamer-plugin-pipewire +PipeWire is a server and user space API to deal with multimedia pipelines. + +This package provides the gstreamer plugin. + +%package tools +Summary: The PipeWire Tools +Group: Productivity/Multimedia/Other + +%description tools +This package contains command line utilities for the PipeWire media server. + +%package spa-tools +Summary: The PipeWire SPA Tools +Group: Productivity/Multimedia/Other + +%description spa-tools +SPA or Simple Plugin API is a plugin API. + +This package provides spa-inspect and spa-monitor tools. + +%package modules-%{apiver_str} +Summary: Modules For PipeWire, A Multimedia Framework +Group: Productivity/Multimedia/Other +Provides: %{name}-modules = %{version} +Obsoletes: %{name}-modules < %{version} + +%description modules-%{apiver_str} +PipeWire is a server and user space API to deal with multimedia pipelines. + +The framework is used to build a modular daemon that can be configured to: + + * Be a low-latency audio server with features like pulseaudio and/or jack; + * A video capture server that can manage hardware video capture devices + and provide access to them; + * A central hub where video can be made available for other applications + such as the gnome-shell screencast API. + +%package module-x11-%{apiver_str} +Summary: X11 support For PipeWire, A Multimedia Framework +Group: Productivity/Multimedia/Other +Requires: %{libpipewire} >= %{version}-%{release} +Requires: %{name} >= %{version}-%{release} + +%description module-x11-%{apiver_str} +PipeWire is a server and user space API to deal with multimedia pipelines. + +The framework is used to build a modular daemon that can be configured to: + + * Be a low-latency audio server with features like pulseaudio and/or jack; + * A video capture server that can manage hardware video capture devices + and provide access to them; + * A central hub where video can be made available for other applications + such as the gnome-shell screencast API. + +This package contains X11 bell support for PipeWire. + +%package spa-plugins-%{spa_ver_str} +Summary: Plugins For PipeWire SPA +Group: Productivity/Multimedia/Other +Suggests: pipewire-libjack-%{apiver_str} + +%description spa-plugins-%{spa_ver_str} +PipeWire is a server and user space API to deal with multimedia pipelines. + +Some of its features include: + + * Unlimited input/output ports; + * Per port format enumeration and negotiation; + * Enumeration/configuration of per port parameters; + * Application controlled buffer allocation with option to let the plugin + Allocate memory; + * Arbitrary buffer metadata; + * Buffers are passed around by id which is very fast and avoids the need + for refcounting; + * Synchronous and asynchronous processing; + * All api is designed to work without any allocations; + * Arbirary input/output behaviour. + +This package provides plugins for extending PipeWire SPA's functionality. + +%package devel +Summary: Development Files For PipeWire, A Multimedia Framework +Group: Development/Libraries/C and C++ +Requires: %{libpipewire} >= %{version} + +%description devel +PipeWire is a server and user space API to deal with multimedia pipelines. + +This package provides all the necessary files for development with PipeWire + +%package doc +Summary: PipeWire media server documentation +Group: Development/Libraries/C and C++ + +%description doc +This package contains documentation for the PipeWire media server. + +%package alsa +Summary: PipeWire media server ALSA support +Group: Development/Libraries/C and C++ +Requires: %{libpipewire} >= %{version}-%{release} +Recommends: %{name} >= %{version}-%{release} +# Both providing /etc/alsa/conf.d/99-*-default.conf can cause issues +Conflicts: alsa-plugins-pulse + +%description alsa +This package contains an ALSA plugin for the PipeWire media server. + +%package pulseaudio +Summary: PipeWire PulseAudio implementation +Group: Development/Libraries/C and C++ +Requires: %{libpipewire} >= %{version}-%{release} +Requires: %{name} >= %{version}-%{release} +Requires: pulseaudio-utils +Recommends: pipewire-alsa +Conflicts: pulseaudio +# Virtual Provides to support swapping between PipeWire-PA and PA +Conflicts: pulseaudio-daemon +Provides: pulseaudio-daemon +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400 +Requires(post): pulseaudio-setup +%endif +#Provides: pulseaudio-module-bluetooth + +%description pulseaudio +This package provides a PulseAudio implementation based on PipeWire + +%package jack +Summary: PipeWire JACK implementation +Group: Development/Libraries/C and C++ +Requires: %{libpipewire} >= %{version}-%{release} +Requires: %{name} >= %{version}-%{release} +Requires: pipewire-libjack-%{apiver_str} +Recommends: jack-dbus +# Virtual Provides to support swapping between PipeWire-JACK and JACKd +Conflicts: jack-daemon +Provides: jack-daemon +#Provides: pulseaudio-module-jack +# We want applications to link with pipewire-libjack libraries and +# not the original ones +Conflicts: libjack0 +Conflicts: libjacknet0 +Conflicts: libjackserver0 + +%description jack +This package provides an ld.so.conf file that makes all JACK clients +use the JACK implementation based on PipeWire instead of the original +JACK libraries. + +%lang_package + +%prep +%autosetup -N +%if %{?pkg_vcmp:%{pkg_vcmp meson <= 0.61.0}} +sed -ie "s/version : '0.3.72'/version : '%{version}'/" %{P:0} +%patch0 -p1 +%endif + +%build +%if %{pkg_vcmp gcc < 8} +export CC=gcc-11 +export CXX=g++-11 +%endif +%meson \ + -Ddocs=enabled \ + -Dman=enabled \ + -Dgstreamer=enabled \ +%if %{with use_ffmpeg} + -Dffmpeg=enabled \ +%else + -Dffmpeg=disabled \ +%endif + -Dsystemd=enabled \ + -Dsystemd-user-unit-dir=%{_userunitdir} \ + -Droc=disabled \ +%if %{with_vulkan} + -Dvulkan=enabled \ +%else + -Dvulkan=disabled \ +%endif + -Dtest=enabled \ + -Daudiotestsrc=enabled \ +%if %{with aac} + -Dbluez5-codec-aac=enabled \ +%else + -Dbluez5-codec-aac=disabled \ +%endif +%if %{with aptx} + -Dbluez5-codec-aptx=enabled \ +%else + -Dbluez5-codec-aptx=disabled \ +%endif +%if %{with_ldacBT} + -Dbluez5-codec-ldac=enabled \ +%else + -Dbluez5-codec-ldac=disabled \ +%endif + -Dbluez5-codec-lc3=enabled \ + -Dbluez5-codec-lc3plus=disabled \ +%if %{with libcamera} + -Dlibcamera=enabled \ +%else + -Dlibcamera=disabled \ +%endif + -Dpipewire-jack=enabled \ + -Djack=enabled \ +%if %{with pipewire_jack_devel} + -Djack-devel=true \ +%else + -Djack-devel=false \ +%endif +%if 0%{?suse_version} <= 1500 + -Dreadline=disabled \ +%endif + -Dsession-managers="[]" \ + -Dsdl2=disabled \ +%if %{with_webrtc_audio_processing} + -Decho-cancel-webrtc=enabled \ +%else + -Decho-cancel-webrtc=disabled \ +%endif + %{nil} +%meson_build + +%install +%meson_install +mkdir -p %{buildroot}%{_sysconfdir}/alsa/conf.d/ +cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf \ + %{buildroot}%{_sysconfdir}/alsa/conf.d/50-pipewire.conf +cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf \ + %{buildroot}%{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf +mkdir -p %{buildroot}%{_udevrulesdir} +mv -fv %{buildroot}/lib/udev/rules.d/90-pipewire-alsa.rules %{buildroot}%{_udevrulesdir} + +%if 0%{?suse_version} > 1500 +mkdir -p %{buildroot}%{_pam_secdistconfdir}/limits.d/ +mv %{buildroot}%{_sysconfdir}/security/limits.d/*.conf %{buildroot}%{_pam_secdistconfdir}/limits.d/ +%endif + +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d/ +echo %{_libdir}/pipewire-%{apiver}/jack/ > %{buildroot}%{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf + +mkdir -p %{buildroot}%{_sysconfdir}/alternatives +for wrapper in pw-jack ; do + mv %{buildroot}%{_bindir}/$wrapper %{buildroot}%{_bindir}/$wrapper-%{apiver} + ln -s -f %{_sysconfdir}/alternatives/$wrapper %{buildroot}%{_bindir}/$wrapper +done + +for manpage in pw-jack ; do + mv %{buildroot}%{_mandir}/man1/$manpage.1 %{buildroot}%{_mandir}/man1/$manpage-%{apiver}.1 + ln -s -f %{_sysconfdir}/alternatives/$manpage.1%{ext_man} %{buildroot}%{_mandir}/man1/$manpage.1%{ext_man} +done + +%fdupes -s %{buildroot}/%{_datadir}/doc/pipewire/html + +%find_lang %{name} %{name}.lang + +%check +%meson_test + +%pre +%systemd_user_pre pipewire.service pipewire.socket + +%post +# Check if the systemd_user_pre macro generated the file +# for systemd_user_post to enable the user socket. +if [ -f /run/systemd/rpm/needs-user-preset/pipewire.socket ]; then + echo "Switching Pipewire activation using systemd user socket." + echo "Please log out from all sessions once to make it effective." +fi +%systemd_user_post pipewire.service pipewire.socket + +# If the pipewire.socket user unit is not enabled and the workaround +# for boo#1186561 has never been executed, we need to execute it now +if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire.socket \ + -a ! -f %{_localstatedir}/lib/pipewire/pipewire_post_workaround \ + -a -x %{_bindir}/systemctl ]; then + for service in pipewire.service pipewire.socket ; do + %{_bindir}/systemctl --global preset "$service" || : + done + + mkdir -p %{_localstatedir}/lib/pipewire + cat << EOF > %{_localstatedir}/lib/pipewire/pipewire_post_workaround +# The existence of this file means that the pipewire user services were +# enabled at least once. Please don't remove this file as that would +# make the services to be enabled again in the next package update. +# +# Check the following bugs for more information: +# https://bugzilla.opensuse.org/show_bug.cgi?id=1184852 +# https://bugzilla.opensuse.org/show_bug.cgi?id=1183012 +# https://bugzilla.opensuse.org/show_bug.cgi?id=1186561 +EOF +fi + +%preun +%systemd_user_preun pipewire.service pipewire.socket + +%postun +%systemd_user_postun pipewire.service pipewire.socket + +%pre pulseaudio +%systemd_user_pre pipewire-pulse.service pipewire-pulse.socket + +%post pulseaudio +%systemd_user_post pipewire-pulse.service pipewire-pulse.socket +# If the pipewire-pulse.socket user service is not enabled and the workaround +# for boo#1186561 has never been executed, we need to execute it now +if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire-pulse.socket \ + -a ! -f %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround \ + -a -x %{_bindir}/systemctl ]; then + for service in pipewire-pulse.service pipewire-pulse.socket ; do + %{_bindir}/systemctl --global preset "$service" || : + done + mkdir -p %{_localstatedir}/lib/pipewire + cat << EOF > %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround +# The existence of this file means that the pipewire-pulseaudio user service was +# enabled at least once. Please don't remove this file as that would +# make the services to be enabled again in the next package update. +# +# Check the following bugs for more information: +# https://bugzilla.opensuse.org/show_bug.cgi?id=1184852 +# https://bugzilla.opensuse.org/show_bug.cgi?id=1183012 +# https://bugzilla.opensuse.org/show_bug.cgi?id=1186561 +EOF +fi +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400 +# Update the /etc/profile.d/pulseaudio.* files +setup-pulseaudio --auto > /dev/null +%endif + +%preun pulseaudio +%systemd_user_preun pipewire-pulse.service pipewire-pulse.socket + +%postun pulseaudio +%systemd_user_postun pipewire-pulse.service pipewire-pulse.socket + +%post jack -p /sbin/ldconfig +%postun jack -p /sbin/ldconfig + +%post -n %{libpipewire} -p /sbin/ldconfig +%postun -n %{libpipewire} -p /sbin/ldconfig + +%post libjack-%{apiver_str} +%{_sbindir}/update-alternatives --install %{_bindir}/pw-jack pw-jack %{_bindir}/pw-jack-%{apiver} 20 \ + --slave %{_mandir}/man1/pw-jack.1%{ext_man} pw-jack.1%{ext_man} %{_mandir}/man1/pw-jack-%{apiver}.1%{ext_man} +/sbin/ldconfig + +%postun libjack-%{apiver_str} +if [ ! -e %{_bindir}/pw-jack-%{apiver} ] ; then + %{_sbindir}/update-alternatives --remove pw-jack %{_bindir}/pw-jack-%{apiver} +fi +/sbin/ldconfig + +%files +%license LICENSE COPYING +%doc README.md +%if 0%{?suse_version} > 1500 +%{_pam_secdistconfdir}/limits.d/25-pw-rlimits.conf +%else +%config(noreplace) %{_sysconfdir}/security/limits.d/25-pw-rlimits.conf +%endif +%{_bindir}/pipewire +%{_bindir}/pipewire-avb +%{_bindir}/pipewire-aes67 +%if %{with_vulkan} +%{_bindir}/pipewire-vulkan +%endif +%{_userunitdir}/pipewire.service +%{_userunitdir}/pipewire.socket +%{_userunitdir}/filter-chain.service +%{_mandir}/man1/pipewire.1%{?ext_man} +%{_mandir}/man5/pipewire.conf.5%{?ext_man} +%dir %{_datadir}/pipewire/ +%{_datadir}/pipewire/pipewire.conf +%{_datadir}/pipewire/pipewire.conf.avail/ +%{_datadir}/pipewire/filter-chain.conf +%dir %{_datadir}/pipewire/filter-chain/ +%{_datadir}/pipewire/filter-chain/*.conf +%{_datadir}/pipewire/pipewire-avb.conf +%{_datadir}/pipewire/pipewire-aes67.conf +%if %{with_vulkan} +%{_datadir}/pipewire/pipewire-vulkan.conf +%endif +%ghost %dir %{_localstatedir}/lib/pipewire/ +%ghost %{_localstatedir}/lib/pipewire/pipewire_post_workaround + +%files -n %{libpipewire} +%license LICENSE COPYING +%doc README.md +%{_libdir}/libpipewire-%{apiver}.so.* + +%files modules-%{apiver_str} +%dir %{_libdir}/pipewire-%{apiver} +%{_libdir}/pipewire-%{apiver}/libpipewire-module-*.so +%exclude %{_libdir}/pipewire-%{apiver}/libpipewire-module-x11-bell.so +%exclude %{_libdir}/pipewire-%{apiver}/libpipewire-module-protocol-pulse.so +%dir %{_libdir}/pipewire-%{apiver}/v4l2/ +%{_libdir}/pipewire-%{apiver}/v4l2/libpw-v4l2.so +%dir %{_datadir}/alsa-card-profile/ +%dir %{_datadir}/alsa-card-profile/mixer/ +%{_datadir}/alsa-card-profile/mixer/* +%{_udevrulesdir}/90-pipewire-alsa.rules +%{_datadir}/pipewire/client.conf +%{_datadir}/pipewire/client.conf.avail/ +%{_datadir}/pipewire/client-rt.conf +%{_datadir}/pipewire/client-rt.conf.avail/ +%{_datadir}/pipewire/minimal.conf +%{_mandir}/man7/libpipewire-modules.7%{?ext_man} +%{_mandir}/man7/libpipewire-module-*.7%{?ext_man} +%exclude %{_mandir}/man7/libpipewire-module-x11-bell.7%{?ext_man} + +%files module-x11-%{apiver_str} +%{_libdir}/pipewire-%{apiver}/libpipewire-module-x11-bell.so +%{_mandir}/man7/libpipewire-module-x11-bell.7%{?ext_man} + +%files spa-plugins-%{spa_ver_str} +%dir %{_libdir}/spa-%{spa_ver}/ +%{_libdir}/spa-%{spa_ver}/aec/ +%{_libdir}/spa-%{spa_ver}/alsa/ +%{_libdir}/spa-%{spa_ver}/audioconvert/ +%{_libdir}/spa-%{spa_ver}/audiomixer/ +%{_libdir}/spa-%{spa_ver}/avb/ +%{_libdir}/spa-%{spa_ver}/bluez5/ +%{_libdir}/spa-%{spa_ver}/control/ +%if %{with use_ffmpeg} +%{_libdir}/spa-%{spa_ver}/ffmpeg/ +%endif +%{_libdir}/spa-%{spa_ver}/jack/ +%if %{with libcamera} +%{_libdir}/spa-%{spa_ver}/libcamera/ +%endif +%{_libdir}/spa-%{spa_ver}/support/ +%{_libdir}/spa-%{spa_ver}/v4l2/ +%{_libdir}/spa-%{spa_ver}/videoconvert/ +%if %{with_vulkan} +%{_libdir}/spa-%{spa_ver}/vulkan/ +%endif +%{_libdir}/spa-%{spa_ver}/audiotestsrc/ +%{_libdir}/spa-%{spa_ver}/videotestsrc/ +%{_libdir}/spa-%{spa_ver}/test/ + +%dir %{_datadir}/spa-%{spa_ver}/ +%dir %{_datadir}/spa-%{spa_ver}/bluez5/ +%{_datadir}/spa-%{spa_ver}/bluez5/bluez-hardware.conf + +%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 +%ghost %{_sysconfdir}/alternatives/pw-jack.1%{ext_man} +%{_bindir}/pw-jack-%{apiver} +%{_bindir}/pw-jack +%{_mandir}/man1/pw-jack-%{apiver}.1%{?ext_man} +%{_mandir}/man1/pw-jack.1%{?ext_man} +%{_datadir}/pipewire/jack.conf + +%files libjack-%{apiver_str}-devel +%{_libdir}/pipewire-%{apiver}/jack/libjack.so +%{_libdir}/pipewire-%{apiver}/jack/libjacknet.so +%{_libdir}/pipewire-%{apiver}/jack/libjackserver.so +%if %{with pipewire_jack_devel} +%{_includedir}/jack/ +%{_libdir}/pkgconfig/jack.pc +%endif + +%files -n gstreamer-plugin-pipewire +%{_libdir}/gstreamer-1.0/libgstpipewire.so + +%files tools +%{_bindir}/pw-cat +%{_bindir}/pw-cli +%{_bindir}/pw-config +%{_bindir}/pw-dot +%{_bindir}/pw-dsdplay +%{_bindir}/pw-dump +%{_bindir}/pw-encplay +%{_bindir}/pw-loopback +%{_bindir}/pw-link +%{_bindir}/pw-metadata +%{_bindir}/pw-mididump +%{_bindir}/pw-midiplay +%{_bindir}/pw-midirecord +%{_bindir}/pw-mon +%{_bindir}/pw-play +%{_bindir}/pw-profiler +%{_bindir}/pw-record +%{_bindir}/pw-reserve +%{_bindir}/pw-top +%{_bindir}/pw-v4l2 +%{_mandir}/man1/pw-cat.1%{?ext_man} +%{_mandir}/man1/pw-cli.1%{?ext_man} +%{_mandir}/man1/pw-config.1%{?ext_man} +%{_mandir}/man1/pw-dot.1%{?ext_man} +%{_mandir}/man1/pw-dump.1%{?ext_man} +%{_mandir}/man1/pw-link.1%{?ext_man} +%{_mandir}/man1/pw-loopback.1%{?ext_man} +%{_mandir}/man1/pw-metadata.1%{?ext_man} +%{_mandir}/man1/pw-mididump.1%{?ext_man} +%{_mandir}/man1/pw-mon.1%{?ext_man} +%{_mandir}/man1/pw-profiler.1%{?ext_man} +%{_mandir}/man1/pw-top.1%{?ext_man} + +%files spa-tools +%{_bindir}/spa-inspect +%{_bindir}/spa-monitor +%{_bindir}/spa-acp-tool +%{_bindir}/spa-resample +%{_bindir}/spa-json-dump + +%files devel +%{_libdir}/libpipewire-%{apiver}.so +%{_libdir}/pkgconfig/libpipewire-%{apiver}.pc +%{_libdir}/pkgconfig/libspa-%{spa_ver}.pc +%{_includedir}/pipewire-%{apiver}/ +%{_includedir}/spa-%{spa_ver}/ + +%files doc +%dir %{_datadir}/doc/pipewire/ +%{_datadir}/doc/pipewire/html/ + +%files pulseaudio +%{_bindir}/pipewire-pulse +%{_libdir}/pipewire-%{apiver}/libpipewire-module-protocol-pulse.so +%{_mandir}/man1/pipewire-pulse.1%{?ext_man} +%{_mandir}/man5/pipewire-pulse.conf.5%{?ext_man} +%{_mandir}/man7/pipewire-pulse-module-*.7%{?ext_man} +%{_mandir}/man7/pipewire-pulse-modules.7%{?ext_man} +%{_userunitdir}/pipewire-pulse.* +%{_datadir}/pipewire/pipewire-pulse.conf +%{_datadir}/pipewire/pipewire-pulse.conf.avail/ +%ghost %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround + +%files alsa +%dir %{_libdir}/alsa-lib +%{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so +%{_libdir}/alsa-lib/libasound_module_ctl_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 jack +%config %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf + +%files lang -f %{name}.lang + +%changelog diff --git a/reduce-meson-dependency.patch b/reduce-meson-dependency.patch new file mode 100644 index 0000000..c57ecbe --- /dev/null +++ b/reduce-meson-dependency.patch @@ -0,0 +1,57 @@ +Index: pipewire-0.3.69/meson.build +=================================================================== +--- pipewire-0.3.69.orig/meson.build ++++ pipewire-0.3.69/meson.build +@@ -1,7 +1,7 @@ + project('pipewire', ['c' ], + version : '0.3.72', + license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ], +- meson_version : '>= 0.61.1', ++ meson_version : '>= 0.59.4', + default_options : [ 'warning_level=3', + 'c_std=gnu11', + 'cpp_std=c++17', +Index: pipewire-0.3.69/src/daemon/meson.build +=================================================================== +--- pipewire-0.3.69.orig/src/daemon/meson.build ++++ pipewire-0.3.69/src/daemon/meson.build +@@ -116,11 +116,12 @@ foreach alias : ['pipewire-pulse', 'pipe + input: pipewire_exec, + output: alias, + ) +- install_symlink( +- alias, +- pointing_to: pipewire_exec.name(), +- install_dir: pipewire_bindir, +- ) ++ #install_symlink( ++ # alias, ++ # pointing_to: pipewire_exec.name(), ++ # install_dir: pipewire_bindir, ++ #) ++ meson.add_install_script('sh', '-c', 'ln -s ' + pipewire_exec.name() + ' $DESTDIR/' + pipewire_bindir + '/' + alias) + endforeach + + custom_target('pipewire-uninstalled', +Index: pipewire-0.3.69/src/tools/meson.build +=================================================================== +--- pipewire-0.3.69.orig/src/tools/meson.build ++++ pipewire-0.3.69/src/tools/meson.build +@@ -73,11 +73,12 @@ if get_option('pw-cat').allowed() and sn + input: pw_cat, + output: alias, + ) +- install_symlink( +- alias, +- pointing_to: pw_cat.name(), +- install_dir: pipewire_bindir, +- ) ++ #install_symlink( ++ # alias, ++ # pointing_to: pw_cat.name(), ++ # install_dir: pipewire_bindir, ++ #) ++ meson.add_install_script('sh', '-c', 'ln -s ' + pw_cat.name() + ' $DESTDIR/' + pipewire_bindir + '/' + alias) + endforeach + elif not sndfile_dep.found() and get_option('pw-cat').enabled() + error('pw-cat is enabled but required dependency `sndfile` was not found.')