summaryrefslogtreecommitdiffstats
path: root/NEWS
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:28:17 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:28:17 +0000
commit7a46c07230b8d8108c0e8e80df4522d0ac116538 (patch)
treed483300dab478b994fe199a5d19d18d74153718a /NEWS
parentInitial commit. (diff)
downloadpipewire-upstream/0.3.65.tar.xz
pipewire-upstream/0.3.65.zip
Adding upstream version 0.3.65.upstream/0.3.65upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS4812
1 files changed, 4812 insertions, 0 deletions
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..c664c79
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,4812 @@
+# PipeWire 0.3.65 (2023-01-26)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#1697)
+ - 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. (#2952)
+ - 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. (#2964)
+ - 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. (#2939)
+ - Fix an error in the AVX code that could cause crackling in filter-chain
+ when using the mixer. (#2965)
+ - 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. (#2973)
+ - 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. (#2943)
+ - 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. (#2953)
+ - Fix some potential stuttering cause by wrong scaling and overflow
+ of the output buffers in audioconvert. (#2680)
+ - Debug output is now also sent to the log instead of stdout. (#2923)
+ - 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. (#2991)
+
+## 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. (#1760)
+
+## 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. (#1697)
+ - 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 advertize DMABUF support if the pipeline suports
+ this.
+ - pipewiresrc will now always be a live source unless told otherwise.
+
+Older versions:
+
+
+# PipeWire 0.3.64 (2023-01-12)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#2914)
+ - Fix a case where nodes that were not supposed to be suspended, were
+ kept suspended on a rate change. (#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. (#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. (#2891)
+ - The filter-chain now supports an arbitrary number of control
+ properties. (#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.
+ (#2939)
+
+## SPA
+ - The ACP code now has an option to set the probe samplerate. (#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. (#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. (#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.
+
+# PipeWire 0.3.63 (2022-12-15)
+
+This is a quick bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#2881)
+ - 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. (#2885)
+ - Remove fallback to default channel map in channelmix.
+ - Improve sorting of MIDI events, use the same order as Ardour. (#1816)
+ - Enable LFE downmixing by default. (#2425)
+ - Make IEC958/AC3 and IEC958/DTS work better by enforcing a fixed minimal
+ buffering for the encoder to avoid stuttering. (#2650)
+
+## 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.
+
+# PipeWire 0.3.62 (2022-12-09)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#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. (#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. (#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. (#2880)
+
+## JACK
+ - Only process valid ports. Could fix some crashes. (#2863)
+
+## Bluetooth
+ - Support was added for offloading bluetooth handling. Some hardware can
+ receive, decode and play the bluetooth audio directly in hardware.
+
+# PipeWire 0.3.61 (2022-11-24)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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
+ - Optimize away some useless graph recalculations.
+ - Increase alternative sample rates from 16 to 32.
+ - FreeBSD and musl build fixes.
+ - 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. (#2843)
+
+## Modules
+ - Set the network property on pulse-tunnel streams so that they are
+ not exported anymore. (#2384)
+ - 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. (#2764)
+ - Do ALSA probing in 44100Hz again. Some devices seem to fail
+ otherwise for some unknown reason. (#2718)
+ - Force playback start when the ALSA buffer is full. This fixes sound
+ in QEMU. (#2830)
+ - Support Digital 5.1 AC3 for Asus Xonar SE.
+ - Improve format renegotiation in audioadapter. This makes the ALSA
+ plugin work again for deadbeef. (#2832)
+ - Fix latency reporting on adapter DSP ports.
+
+## pulse-server
+ - Fix a bug where openal based applications would hang. (#2821)
+ - 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. (#2839)
+
+## JACK
+ - Add an option to configure the filter character.
+ - Fix connect_callbacks. It was only called once for output ports.
+ (#2841)
+ - Add option to set node.passive on jack clients. Make some quirks
+ for qsynth to make it suspend and fade out better.
+
+# PipeWire 0.3.60 (2022-11-10)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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 sync 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. (#2737)
+ - 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-canceler 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 optimizations.
+ - 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 sync 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. (#2775)
+ - 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. (#2764)
+ - A new seq field was added to spa_param_info to keep track of pending
+ param updates.
+ - Support speaker output only on RealTek ALC4080. (#2744)
+ - 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. (#2809) 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 sync
+ and cause too large requests. (#2799)
+
+## 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. (#2652)
+
+# PipeWire 0.3.59 (2022-09-30)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#2701)
+
+## 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. (#2709)
+ - 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. (#2701)
+ - Fix some POD parsing inconsistencies and potential overflows.
+ - Add support for Asus Xonar SE.
+ - Fix Flush command handling. It should not stop playback. (#2726)
+ - Refactor the peaks function and add some unit tests and optimizations.
+ - The channelmix has an optimized nXm converter and new unit tests.
+ - Normalization in the channelmixer was fixed.
+
+## pulse-server
+ - The requested latency of record streams was reduced to fix some
+ stuttering in Teamspeak. (#2702)
+ - Tweak the max amount of bytes sent to a client. (#2711) (#2715)
+ - 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. (#2463)
+ - 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.
+
+# PipeWire 0.3.58 (2022-09-15)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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)
+
+
+# PipeWire 0.3.57 (2022-09-02)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## Highlights
+ - Support masking of conf.d/ files. (#2629)
+ - 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. (#2548)
+ - 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. (#2614)
+ - 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. (#2629)
+ - Add some more debug info to memfd.
+ - Improve data-loop invoke method. Also flush pending items. (#2631)
+ - Add a filter-chain systemd service file than can be used to start
+ custom filters placed in ~/.conf/pipewire/filter-chain.d/ (#2553)
+ - 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. (#2552)
+ - 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. (#2651)
+
+## 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. (#2513)
+ - 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. (#2548)
+ - 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. (#2574)
+ - Improve format convert performance in some fallback cases.
+ - Fix rounding in format conversion on ARM NEON.
+ - Fix libcamera build error. (#2575)
+ - Fix some issues where the wrong samplerate was used. (#2614)
+ - 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 resync 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. (#2625).
+
+## 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. (#2569)
+ - Match context properties in addition to node properties for the jack
+ client rules. (#2580)
+ - Make sure to return an error when disconnected from the server. (#2606)
+ - 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.
+
+# PipeWire 0.3.56 (2022-07-19)
+
+This is a quick bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## Highlights
+ - A critical bug that could crash JACK apps 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. (#2536)
+ - Access to the alsa mixer and devices is now checked more thoroughly.
+ (#2534)
+ - 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 functions was separated and uses
+ its own optimization flags now. Unit tests were added. (#2543)
+ - 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. (#2540)
+ - A channel mapping bug was fixed in audioconvert. Unit tests were added.
+ - The dsp audio mixer would sometimes not mix enough and cause dropouts.
+ (#2525)
+
+## JACK
+ - A critical bug in the mixer was fixed. It would cause most JACK apps to
+ segfault at startup.
+
+## 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.
+
+
+# PipeWire 0.3.55 (2022-07-12)
+
+This is a quick bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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 async 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. (#2483)
+ - 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. (#2519)
+ - Fix bug in audioconvert where it would try to convert the input samples
+ multiple times, causing strange artifacts 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 optimizations.
+
+## Bluetooth
+ - HFP and A2DP now expose different routes and thus can have different
+ volumes.
+ - HW Volumes for HFP are now synced better. Volume changes from HW buttons
+ are now also saved.
+
+# PipeWire 0.3.54 (2022-07-07)
+
+This is a quick bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#2502, #2490)
+ - 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. (#2488)
+ - Use the blackman window again for the resampler, the cosh window has
+ some bugs that can cause distortion in some cases. (#2483)
+ - 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.
+
+# PipeWire 0.3.53 (2022-06-30)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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 rlimits performance tuning wiki page was updated. Please check
+ you limits.conf file, the version on the wiki used to give all
+ processes a -19 nice level instead of just the pipewire daemon.
+ - The audioconvert plugin was rewritten to be more maintainable and
+ faster. 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. (#705)
+ - 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. (#2483)
+ - 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. (#2447)
+ - Fix a potential crash when updating the client property list.
+ - Some properties on cards were aligned with pulseaudio.
+
+## Wiki
+ - Change "priority" to "nice" in the example limits.conf file. It was
+ giving a -19 nice level to all processes, not just the pipewire
+ daemon.
+
+# PipeWire 0.3.52 (2022-06-09)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#1950)
+ - Handle destroy of globals and factory in most modules. (#565)
+ - Add refcounts to client and resources to handle destroy of the
+ protocol. (#565)
+ - 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. (#2392)
+ - 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. (#2387)
+ - pw-dump now also dumps object removal when monitoring. (#2426)
+
+## SPA
+ - Avoid duplicate param results in pw-dump for ports.
+ - Avoid endless loops in audioconvert for badly behaving client.
+ (#2359)
+ - Scale max-error in alsa based on quantum and avoid logging a warning
+ when starting.
+ - Improve debug of failed format conversion. (#2383)
+ - Handle offset in the audio dsp mixer inputs and clamp to the max
+ 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 localized description.
+ - Fix some crashes due to wrong vargar types in v4l2 controls. (#2400)
+ - Improve ALSA resync behaviour. (#2257)
+ - 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. (#2366)
+ - 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. (#2384)
+ - Fix stride for TrueHD and DTSHD passthrough. (#2284)
+ - Make sure we don't send too small audio fragments. Fixes capture
+ from multiple tabs in Chrome. (#2418)
+ - 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. (#2407)
+ - 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. (#1867)
+ - Cleanup in error cases was improved, avoiding some crashes. (#2394)
+
+## GStreamer
+ - Fix pipewiresink in mode=provide. (#1980)
+ - 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. (#1573)
+
+# PipeWire 0.3.51 (2022-04-28)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## Highlights
+ - Improved 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. (#2293)
+ * Inactive nodes are ignored more.
+ * Nodes that require a driver are now not scheduled anymore when
+ they are passive (unused). (#2309)
+ * 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. (#2292)
+ - 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. (#1761).
+ - 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. (#2230)
+ - Module-loopback, module-echo-cancel, module-filter-chain unload the
+ module when a stream is destroyed. (#1754)
+ - Biquads in filter-chain now can have more gain (5->20 dB).
+ - Documentation updates. Most Wiki content was moved to the source code
+ inline comments.
+ - Filter-chain now has a builtin delay line filter. (#2320)
+ - 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. (#2331)
+ - 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. (#2334)
+
+## pulse-server
+ - There is a new module-roc-sink-input module, the 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. (#1159)
+
+## JACK
+ - Remove some useless pthread attributes. This makes JACK work in QEMU with
+ sandboxing enabled. (#2297)
+ - 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. (#2324)
+ - 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.
+
+# PipeWire 0.3.50 (2022-04-13)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#2252)
+ - 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. (#2281)
+
+## 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. (#2220)
+ - 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. (#2263)
+ - 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.
+ (#2253)
+
+## SPA
+ - The channelmixer now has PSD upmixing enabled again. We used the
+ simple upmixing in the previous release but that just sounds too
+ aweful to be a good default. (#861) and (#2219)
+ - The channelmixer will not upmix FC and LFE anymore when upmixing is
+ explicitly disabled. (#2266)
+ - The channelmixer will only lowpass filter FC and LFE channels when
+ they were upmixed. (#2280)
+ - 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.
+ (#1495).
+ - Port sorting was improved/fixed. (#2260)
+
+# PipeWire 0.3.49 (2022-03-29)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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)
+
+
+# PipeWire 0.3.48 (2022-03-03)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#2160)
+ - 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. (#876).
+ - 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 spacialization. The stereo channels can
+ be filtered so that the dialog is more concentrated in the center
+ channel. (#861)
+
+## 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. (#2179)
+ - Fix a bug in RAOP where it was reading from the wrong port. (#2183)
+
+## pulse-server
+ - Nodes with the DONT_MOVE property should fail with -EINVAL when
+ they are moved.
+ - Fix a segfault when playing a sample. (#2151)
+ - The _FIX flags in pulse-server also now ignore the configured
+ sample format, just like pulseaudio does. (#876)
+ - Fix IEC958 passthrough again. It got accidentally broken since
+ 0.3.45 with a fix for another issue. (#1442)
+ - Fix module-null-sink device.description. (#2166)
+
+## Bluetooth
+ - Don't try to connect HSP/HFP when no backend is available.
+
+
+# PipeWire 0.3.47 (2022-02-18)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+This is a quick emergency release to fix some severe
+problems with the previous release.
+
+## Highlights
+ - Fixes a bug in pulse-server that caused cached notifications
+ to play multiple times. (#2142)
+ - Removed check and warnings to catch leaked listeners on the
+ proxy. This might access invalid memory and cause infinite
+ loops in older wireplumber.
+
+# PipeWire 0.3.46 (2022-02-17)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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 critial 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 defauld 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.
+
+# PipeWire 0.3.45 (2022-02-03)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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)
+
+# PipeWire 0.3.44 (2022-01-27)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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. (#1931)
+ - The max-quantum was reduced to 2048, This gives a 42ms default
+ latency. (#1908)
+ - 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. (#2017)
+ - 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. (#2045)
+ - An X11-bell module was added to handle X11 bell events. (#1668)
+ - 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. (#1983)
+ - 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. (#2046)
+ - 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 optimized implementations.
+ - Fix a potential crash in resampler. (#1994)
+ - audioconvert can now also handle F64 formats. (#1990)
+ - 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. (#2029)
+ - Take product names from udev now that the kernel returns a generic
+ name.
+
+## JACK
+ - The jack pkgconfig file now has the `jack_implementation=pipewire`
+ variable to be able to distinguish jack implementations. (#1666)
+ - jconvolver now starts correctly again. (#1989)
+ - 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. (#2043)
+ - A bug in the port allocation was fixed that would make it impossible
+ to allocate ports at some point. (#1714)
+
+## 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. (#1981)
+ - module-ladspa-sink implements the control argument now. (#1987)
+ - A potential memory leak in the message queue was fixed. (#1840)
+ - 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. (#2047)
+ - module-x11-bell was added. (#1668)
+ - 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.
+
+# PipeWire 0.3.43 (2022-01-05)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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.
+
+## PipeWire
+ - Quantum and rate changes are now applied immediately when the driver
+ is idle. This avoids setting the driver in the previous samplerate.
+ (#1913)
+ - Object destruction now does not need write permissions anymore. This
+ restriction needs some more work. (#1920)
+ - When we reposition, start a sync operation. This fixes a problem
+ in Ardour when seeking. (#1907)
+ - Require meson 0.56.0
+ - Make the align property in BUFFER_PARAM optional. We now only set this
+ if the plugin has specific requirements and we default to the CPU
+ largest alignment requirement.
+ - pw-record will now also list monitors and streams as possible targets.
+
+## modules
+ - Improve LV2 plugin support in filter-chain. Add support for Worker and
+ Options.
+ - The loopback module now has a unique media.name to make it possible
+ for the session manager to restore unique volume settings.
+
+## SPA
+ - Improve sample rate for EAC3 streams, some clients scale it while
+ others don't so use some heuristics to make things work better.
+ (#1902)
+ - Allocate ports dynamically in audioconvert. This avoids using larger
+ memory blocks of preallocated memory that confuses the allocator.
+ (#1840)
+
+## ALSA
+ - Merge the latest pulseaudio UCM improvements. (#1849)
+ - Fixes for selecting the sample rate. (#1892)
+ - Improve latency on USB devices by scaling the period size based on
+ the desired quantum when the device is opened.
+ - Add api.alsa.period-num to configure the amount of periods to use
+ in the device. Some devices have lower latency when a small value
+ is forced. (#1473)
+ - Allow multi-rate by default. In previous versions cards could only
+ be opened in one samplerate to avoid bugs in pre 5.16 kernels. This
+ however caused other problems so the default was removed.
+ - Fix a bug where a card was not freed correctly.
+ - Fix a bug in the alsa boundary check that could hang the alsa-plugin
+ for a long time.
+ - The ALSA plugin now has a parameter to configure the allowed
+ samplerates.
+
+## JACK
+ - Improve handling of monitor nodes.
+
+## Bluetooth
+ - Codecs now have a priority. This should improve codec selection.
+
+## pulse-server
+ - The stream FIX_ flags are now implemented. (#1912)
+ - Improve flushing and draining behaviour. Short samples will now
+ play correctly. (#1549)
+ - Fix a crash when enumerating the formats. (#1928)
+ - Track quantum changes and update the amount of required buffering
+ accordingly. This improves forced quantum handling. (#1930)
+ - Improve handling of channels > 32.
+ - Handle the case where a module is destroyed before it could be
+ completely loaded.
+ - Fixes some issues when samples were removed while they were playing.
+ (#1953)
+ - Fix some issues in module-zeroconf-publish.
+ - Fix some memory leaks in module-roc.
+ - Add command access control. This avoids execution of commands without
+ proper authentication.
+
+# PipeWire 0.3.42 (2021-12-16)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+This is a quick emergency release to fix some severe
+problems with the previous release.
+
+## 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.
+
+
+# PipeWire 0.3.41 (2021-12-13)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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.
+
+# PipeWire 0.3.40 (2021-11-11)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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.
+ (#1732).
+ - 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. (#1775)
+ - 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. (#1769)
+ - 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. (#1748)
+ - 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.
+ (#1780)
+
+## v4l2
+ - Fix v4l2 LD_PRELOAD script.
+ - Make sure we destroy the proxy when the global is destroyed.
+
+## ALSA
+ - _prepare should exit the draining state. (#1467)
+ - Fix the precision of the _delay function by taking into account
+ the amount of queued samples are the correct samplerate.
+
+
+# PipeWire 0.3.39 (2021-10-21)
+
+This is a bugfix release that is API and ABI compatible with previous
+0.3.x releases.
+
+## 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.
+
+
+# PipeWire 0.3.38 (2021-09-30)
+
+This is a quick bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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.
+
+
+# PipeWire 0.3.37 (2021-09-23)
+
+This is a quick bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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 emitting the samplerate and buffersize callbacks until the
+ client is active. This fixes some crashes with Carla and other
+ JACK apps.
+
+# PipeWire 0.3.36 (2021-09-16)
+
+This is a quick bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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 emitted. 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)
+
+
+# PipeWire 0.3.35 (2021-09-09)
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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)
+ - 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.
+
+
+# PipeWire 0.3.34 (2021-08-26)
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+
+## 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.
+
+
+# PipeWire 0.3.33 (2021-08-05)
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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 multiple 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)
+
+
+# PipeWire 0.3.32 (2021-07-20)
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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 that 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.
+
+# PipeWire 0.3.31 (2021-06-28)
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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 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 loglevel 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 now emitted
+ 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.
+
+
+# PipeWire 0.3.30
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+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.
+
+# PipeWire 0.3.29
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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
+ privileges 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 emitted 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.
+
+# PipeWire 0.3.28
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+## 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
+
+PipeWire 0.3.27
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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 advertise 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 advertise 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.
+
+PipeWire 0.3.26
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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 development files can now optionally be installed.
+
+PipeWire 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 compatibility 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.
+
+PipeWire 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.
+ - Fixes for gnome-control-center default sink/source handling.
+ - 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 now 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.
+
+
+PipeWire 0.3.23
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.22
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.21
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.20
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+PipeWire 0.3.19
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.18
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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
+
+PipeWire 0.3.17
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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
+
+
+PipeWire 0.3.16
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- Highlights
+ - Fix screensharing for old 0.2 clients
+ - Many pulse-server improvements. There is now a
+ pipewire-pulse binary that is the preferred 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.
+
+
+PipeWire 0.3.15
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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 category will now also debug pulse
+ messages.
+ - Respect the no_remix flag to make the control panel channel
+ check work.
+
+- ALSA plugin
+ - implement pause
+
+
+PipeWire 0.3.14
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.13
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.12
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- PipeWire improvements
+ * the channelmap converter now handles unknown and strange
+ channellayouts 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.
+
+
+PipeWire 0.3.11
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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 period 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()).
+
+PipeWire 0.3.10
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+PipeWire 0.3.9
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.8
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.7
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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:
+ 1) 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.
+ 2) a part in the session manager that uses the permission
+ store to manage the permissions of portal managed
+ clients.
+
+
+PipeWire 0.3.6
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.5
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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
+
+
+PipeWire 0.3.4
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- A quick update with some important stability fixes.
+
+
+PipeWire 0.3.3
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 0.3.2
+
+This is a bugfix release that is API and ABI compatible
+with previous 0.3.x releases.
+
+- 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.
+
+
+PipeWire 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
+
+
+PipeWire 0.3.0
+
+The 0.3 release is a major milestone in the development 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
+development files and runtime paths are versioned so that
+future incompatible changes can be done without breaking
+existing 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.
+
+PipeWire 0.2.97
+
+Eighth pre-release for upcoming 0.3:
+
+- Build fixes
+- pw-cat improvement: Fix remote name, add midi support
+- add device subscribe params for completeness
+- jack and pulseaudio compatibility fixes
+- Fix a bug in resampler, add quality option, tweaked quality
+ settings, tested now against https://src.infinitewave.ca/
+ testsignals and submitted results for publication.
+- Fix awkwardness in buffer negotiations, the default number of
+ buffers was 4 and jack could only handle 2, causing
+ corruption. Also implement negotiation of Step ranges.
+- Fix device reservation to work together with pulseaudio,
+ previously we would block pulseaudio.
+
+PipeWire 0.2.96
+
+Seventh pre-release for upcoming 0.3:
+
+- jack: improve compatibility
+- Fix unit test
+- Fix license of jack and alsa libs
+- Make start/stop more threadsafe
+- Fix rt-kit again, add params to configure things, increase default
+ soft/hard limits to avoid being killed.
+- version 0 compatibility improvements, tested with firefox, cheese,
+ GStreamer and chrome using compat layers.
+- Fix timing for gstreamer source
+- Require libspa in pkg-config file
+- Limit buffers to 16 to support old clients
+
+PipeWire 0.2.95
+
+Sixth pre-release for upcoming 0.3:
+
+- Fix tests for big endian some more
+- Improve v2 compatibility mode: improve type negotiation and
+ update_permissions
+- Workaround for firefox screen sharing
+
+
+PipeWire 0.2.94
+
+Fifth pre-release for upcoming 0.3:
+
+- Fix man page names
+- Fix jack set_sync_timeout
+- Improve JACK compatibility with apps that cache buffer pointers.
+- Improve mlock failure warning message, add property to configure
+ if mlock should be used.
+- Improve OBJECT_PATH in alsa objects
+- Install in versioned directory
+- Add pw-profiler tool
+- Improve pulseaudio compatibility wrt pa_operations
+- Thread safety fixes in remote nodes when activating/deactivating
+- Improve JACK names on duplicates
+- Add option to ignore failure when loading modules
+
+PipeWire 0.2.93
+
+Fourth pre-release for upcoming 0.3:
+
+- Fix unit tests on 32 bits
+- Append -pw version to pulse and jack libs. This way we can install
+ it next to the real libraries and use a symlink to enable it.
+- Improve jack support by killing threads with pthread_cancel. This
+ then also remove the eventfd from the data-loop, making it
+ maybe a little faster.
+- Fix jack_client_close() compatibility
+- Fix some segfaults in the session manager
+- Improve debug of protocol messages
+- Add examples options
+- Don't fail when alsa is not found
+- Fix some compiler warnings with a new spa_aprintf() helper.
+- Add pw-cat, the simple audio playback/record tool
+- Rename pipewire tools to pw- prefix
+- Add improve pw-cli object dump feature
+
+
+PipeWire 0.2.92
+
+Third pre-release for upcoming 0.3:
+
+- Improve old version check some more
+- Fix unit tests on little/big endian
+- Fix compilation when CPU has no optimisations
+- Install jack and pulse libraries
+- Handle -EACCESS in flatpack access module
+
+
+PipeWire 0.2.91
+
+It is mostly a bugfix release to make the new version install and
+run correctly in distros.
+
+- Install session manager, fix path to find the session manager
+- Fix alsa buffer reuse
+- Small fixes for crasher bugs
+- Implement pw_core_set_paused() to suspend/resume even
+ processing. This can be used when using multiple connections
+ to a daemon and one needs to pause one connection until the
+ other one completes an action. Used by session managers.
+- Improve old version check
+
+
+PipeWire 0.2.90
+
+This is the first pre-release of the 0.3 version. It consists of a
+major rewrite and is not API or ABI compatible with the 0.2
+branch.
+
+
+PipeWire 0.2.7
+
+This is mostly a bugfix release and is API/ABI compatible with
+previous 0.2 versions.
+
+Work is ongoing in the work branch that features a completely new
+scheduling method that will enable audio support. Some of these
+API changes are backported in this branch.
+
+- 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)
+
+
+PipeWire 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 emission #143
+- Fix destroy of client-node memory corruption
+- Various small improvements
+
+PipeWire 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
+
+PipeWire 0.2.4
+
+- Install man pages in right directory
+- Add systemd socket activation
+- Various memory leak and corruption fixes in properties, dbus and
+ buffer mmapped memory.
+- Fix v4l2 crash on unplug
+- improve stream cleanup
+
+PipeWire 0.2.3
+
+- Fix deviceprovider caps introspection
+- Refcounting fixes in pipewiresrc
+- Remove clock interpolation from stream
+- Improve clock in gstreamer elements
+- Remove spalib
+- Fix crash with pw_map
+- Add version number to hook list
+- Improve driver mode in gstreamer elements
+- add daemon options
+- add man pages
+
+PipeWire 0.2.2
+
+- Increment API version and .so version
+
+PipeWire 0.2.1
+
+- Various fixes to memory handling
+- Fixes for shutdown
+- v4l2 fix enumeration of frame intervals
+- Make the daemon stop when the setup commands fail
+- Improve safety of hooks
+- Update stream API to more future proof version
+- Add more options to stream API such as scheduling in the
+ main thread and automatic mapping of buffers
+- Add version file and macros to check compile time and
+ runtime versions of pipewire
+- Future proof some structs
+
+
+PipeWire 0.1.9
+
+- Various build fixes
+- Do more permission checks
+- Add support for doing async connections. This can be used to
+ make connections through the portal later.
+- Fix device creation from the GStreamer device monitor
+- v4l2 experiment with controls
+- move rtkit to a module to avoid dbus dependency
+- use dmabuf allocator in gstreamer elements
+- Add DSP module for pro audio cases, remove jack module. The
+ idea is to make a replacement jack client library that talks
+ pipewire directly instead of trying to emulate a jack server.
+- Various memory handling improvements