mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			7882 lines
		
	
	
	
		
			316 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			7882 lines
		
	
	
	
		
			316 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
# PipeWire 1.4.8 (2025-09-11)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Low latency for Firewire devices using the ALSA drivers.
 | 
						|
  - Fix potential wrong pointers in memory mappings.
 | 
						|
  - Improve compatibility with Apple Home Pod Minis.
 | 
						|
  - JACK now implements the rename_callback.
 | 
						|
  - Various improvements and bug fixes.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Make sure we can only queue buffers that were previously dequeued,
 | 
						|
    to avoid some API misuse.
 | 
						|
  - Fix potential wrong pointers in memory mappings. (#4884)
 | 
						|
  - Improve the node unprepare function. (#4840)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Add fp_sap25 encryption to the ROAP module for compatibility with
 | 
						|
    Apple Home Pod Minis.
 | 
						|
  - Write a correct ALAC end tag in RAOP. (#4853)
 | 
						|
  - Avoid VBAN problems with too long session names.
 | 
						|
  - Fix a potential crash in the link-factory. (#4691)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Show correct values in the ALSA api.alsa.period-num property.
 | 
						|
  - Add better support for Razer BlackShark v3.
 | 
						|
  - Use only 3 periods in ALSA when in Pro-Audio mode. This gives
 | 
						|
    better latency on some drivers. Also set the period count before
 | 
						|
    the period size for improved compatibility. (#4785)
 | 
						|
  - Force IRQ mode for firewire devices in pro-audio mode even if
 | 
						|
    there are multiple capture and playback devices.
 | 
						|
  - Add a new flag in the sync_timeline metadata to track if a
 | 
						|
    release_point will be signaled or not. (#4885)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Support the rename_callback. (#4761)
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Fix the -C option in pw-dump.
 | 
						|
  - Log more info from sndfile when opening a file failed.
 | 
						|
 | 
						|
 | 
						|
Older versions:
 | 
						|
 | 
						|
# PipeWire 1.4.7 (2025-07-23)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Improve latency handling in echo-cancel.
 | 
						|
  - Don't leak SyncObj fds in client-node.
 | 
						|
  - Improve the adaptive resampler performance.
 | 
						|
  - Some more fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## modules
 | 
						|
  - Set module-echo-cancel latency correctly.
 | 
						|
  - Avoid extra latency in echo-cancel by dropping samples when
 | 
						|
    one end is paused.
 | 
						|
  - Don't leak SyncObj fds in client-node. (#4807)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Actually enable echo cancellation when using webrtc 2.0
 | 
						|
  - Improve ALSA driver resampling setup and follower adaptive
 | 
						|
    resampling.
 | 
						|
  - Fix an off-by-one in the delay filter.
 | 
						|
  - Improve the adaptive resampler performance.
 | 
						|
 | 
						|
## bluetooth
 | 
						|
  - Improve compatibility with some JBL flip and change models.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Add some format validations.
 | 
						|
 | 
						|
# PipeWire 1.4.6 (2025-06-27)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a crasher bug in filter-chain and one in the ALSA plugin.
 | 
						|
  - Improve latency reporting in module-combine-stream.
 | 
						|
  - Some smaller fixes and cleanups.
 | 
						|
 | 
						|
 | 
						|
## modules
 | 
						|
  - Improve latency handling in module-combine-stream. (#4731)
 | 
						|
  - Improve save activation/deactivation of the filter-graph in
 | 
						|
    module-filter-chain to avoid crashes. (#4700, #4750)
 | 
						|
  - Add an option to disable RAOP with a context.property.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Handle NULL io in alsa wakeup code. This can happen when there
 | 
						|
    is negotiation happening. (#4734)
 | 
						|
  - Enable interrupts after an ALSA error to keep the dataflow
 | 
						|
    going.
 | 
						|
  - Reset some stats better after an ALSA error.
 | 
						|
  - Support the alsa.use-ucm property for the ALSA udev plugin.
 | 
						|
 | 
						|
# pulse-server
 | 
						|
  - Mark empty buffers. This improves some code paths in the mixer.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix a refcount issue in the device provider.
 | 
						|
 | 
						|
# PipeWire 1.4.5 (2025-06-04)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix negotiation errors when using multichannel output. Fixes
 | 
						|
    audio in some games and mpv in some cases.
 | 
						|
  - 1 Small fix and 1 improvement.
 | 
						|
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix another bug caused by reversing the filter default value
 | 
						|
    preference. (#4722)
 | 
						|
 | 
						|
# pulse-server
 | 
						|
  - Implement STREAM_DONT_INHIBIT_AUTO_SUSPEND flags. This can
 | 
						|
    reduce power in pavucontrol when monitoring inactive streams.
 | 
						|
    (#4255 #4726)
 | 
						|
 | 
						|
# ALSA
 | 
						|
  - Fix a potential deadlock when calling _drop and _drain at the
 | 
						|
    same time. (#4728)
 | 
						|
 | 
						|
# PipeWire 1.4.4 (2025-05-29)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Provide better compatibility with 1.2 for MIDI.
 | 
						|
  - Fix mpv buffer negotiation regression.
 | 
						|
  - Improve GStreamer compatibility with libcamera.
 | 
						|
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Provide conversions to old style midi in the ALSA sequencer.
 | 
						|
  - Negotiate only to UMP when using a newer library.
 | 
						|
  - Fix negotiation direction for buffers, prefer the converter
 | 
						|
    suggestion instead of the application until we can be sure
 | 
						|
    applications make good suggestions.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Allow a minimum of 1 buffers again instead of 8. libcamera will
 | 
						|
    allocate only 4 buffers so we need to support this.
 | 
						|
 | 
						|
# PipeWire 1.4.3 (2025-05-22)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Many netjack2 improvements. The driver/manager roles were fixed,
 | 
						|
    MIDI is written correctly and errors are handled better.
 | 
						|
  - Improvements to UMP sysex handling.
 | 
						|
  - More small bug fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Let all commands go to the node. This makes it possible to send
 | 
						|
    custom commands.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Many netjack2 improvements. The driver/manager roles were fixed,
 | 
						|
    MIDI is written correctly and errors are handled better.
 | 
						|
  - Improve the filter-graph state management in filter-chain.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Use default value of filter. (#4619)
 | 
						|
  - Fix UMP program change conversion to MIDI 1.0. (#4664)
 | 
						|
  - Skip only the first buffer for raw formats in v4l2 to avoid
 | 
						|
    dropping important headers when dealing with encoded formats.
 | 
						|
  - Fix ebur128 port name. (#4667)
 | 
						|
  - Only convert UMP/MIDI, pass other controls. Fixes OSC and other
 | 
						|
    control types in the mixer. (#4692)
 | 
						|
  - Improve UMP sysex handling in alsa seq.
 | 
						|
  - Improve ALSA audio.channels support. Only use this when the value
 | 
						|
    is within the valid range.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - debug UMP SysRT messages correctly in pw-mididump.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Handle sysex in UMP better by appending the converted midi1
 | 
						|
    sysex.
 | 
						|
 | 
						|
# PipeWire 1.4.2 (2025-04-14)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Do extra checks for MIDI to avoid 100% CPU usage on older kernels.
 | 
						|
  - Fix some potential crashes in POD builder.
 | 
						|
  - pw-cat streaming improvements on stdout/stdin.
 | 
						|
  - Small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Make the service files depend on DBus to avoid startup races.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Do extra checks for MIDI to avoid 100% CPU usage on older kernels.
 | 
						|
  - Use Header metadata by default in videoadapter.
 | 
						|
  - Handle set_format result from v4l2 better.
 | 
						|
  - Handle crash when POD builder overflows in the filter.
 | 
						|
  - Work around a libebur128 bug. (#4646)
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cat prefers AU format when streaming on stdout/stdin. (#4629)
 | 
						|
  - Improve pw-cat verbose sndfile format debug.
 | 
						|
  - Add the missing --channel-map long option to pw-loopback.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix a leak in the deviceprovider. (#4616)
 | 
						|
  - Fix negotiation and make renegotiation better.
 | 
						|
 | 
						|
# PipeWire 1.4.1 (2025-03-14)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with
 | 
						|
previous 1.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Handle SplitPCM wrong channels specifications. This fixes some
 | 
						|
    problems with disappearing devices.
 | 
						|
  - Add backwards compatibility support for when the kernel does not
 | 
						|
    support UMP. Also fix UMP output. This restores MIDI support for
 | 
						|
    older kernels/ALSA.
 | 
						|
  - Fix a crash in audioconvert because the resampler was not using the
 | 
						|
    right number of channels.
 | 
						|
  - Some compilation fixes and small improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Don't emit events when disconnecting a stream. (#3314)
 | 
						|
  - Fix some compilation problems. (#4603)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Bump the ROC requirement to version 0.4.0
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Handle SplitPCM too few or too many channels. Add an error string
 | 
						|
    to the device names when the UCM config has an error.
 | 
						|
  - Add backwards compatibility support for when the kernel does not
 | 
						|
    support UMP.
 | 
						|
  - Configure the channels in the resampler correctly in all
 | 
						|
    cases. (#4595)
 | 
						|
  - Fix UMP output.
 | 
						|
  - Use the right samplerate of the filter-graph in audioconvert in
 | 
						|
    all cases.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Fix a crash with an incomming call.
 | 
						|
 | 
						|
# PipeWire 1.4.0 (2025-03-06)
 | 
						|
 | 
						|
This is the 1.4 release that is API and ABI compatible with previous
 | 
						|
1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
This release contains some of the bigger changes that happened since
 | 
						|
the 1.2 release last year, including:
 | 
						|
 | 
						|
  * client-rt.conf was removed, all clients now use client.conf and
 | 
						|
    are given RT priority in the data threads.
 | 
						|
  * UMP (aka MIDI2) support was added and is now the default format
 | 
						|
    to carry MIDI1 and MIDI2 around in PipeWire. There are helper
 | 
						|
    functions to convert between legacy MIDI and UMP.
 | 
						|
  * The resampler can now precompute (at compile time) some common
 | 
						|
    conversion filters. Delay reporting in the resampler was fixed and
 | 
						|
    improved.
 | 
						|
  * Bluetooth support for BAP broadcast links and support for hearing aids
 | 
						|
    using ASHA was added. A new G722 codec was also added.
 | 
						|
    Delay reporting and configuration in Bluetooth was improved.
 | 
						|
  * The ALSA plugin now supports DSD playback when explicitly allowed
 | 
						|
    with the alsa.formats property.
 | 
						|
  * A PipeWire JACK control API was added.
 | 
						|
  * A system service was added for pipewire-pulse.
 | 
						|
  * Many documentation and translation updates.
 | 
						|
  * Many of the SPA macros are converted to inline functions.  All SPA
 | 
						|
    inline functions are now also compiled into a libspa.so library to
 | 
						|
    make it easier to access them from bindings.
 | 
						|
  * The module-filter-chain graph code was moved to a separate
 | 
						|
    filter-graph SPA plugin so that it becomes usable in more places.
 | 
						|
    EBUR128, param_eq and dcblock plugins were added to filter-graph.
 | 
						|
    The filter graph can now also use fftw for doing convolutions.
 | 
						|
    The audioconvert plugin was optimized and support was added to
 | 
						|
    audioconvert to insert extra filter-graphs in the processing pipeline.
 | 
						|
  * New helper functions were added to parse JSON format descriptions.
 | 
						|
  * The profiler now also includes the clock of the followers.
 | 
						|
  * RISCV CPU support and assembler optimisations were added.
 | 
						|
  * The clock used for logging timestamps can be configured now.
 | 
						|
  * The JSON parser was split into core functions and helper.
 | 
						|
  * Support for UCM split PCMs was added. Instead of alsa-lib splitting
 | 
						|
    up PCMs, PipeWire can mark the PCMs with the correct metadata so that
 | 
						|
    the session manager can use native PipeWire features to do this.
 | 
						|
  * Support for webrtc2 was added to echo-cancel.
 | 
						|
  * IEC958 codecs are now detected from the HDMI ELD data.
 | 
						|
  * Conversion between floating point and 32 bits now preserve 25 bits of
 | 
						|
    precision instead of 24 bits.
 | 
						|
  * A new Telephony D-BUS API compatible with ofono was added.
 | 
						|
  * The invoke queues are now more efficient and can be called from multiple
 | 
						|
    threads concurrently.
 | 
						|
  * Clock information in v4l2 was improved.
 | 
						|
  * An ffmpeg based videoconvert plugin was added that can be used with the
 | 
						|
    videoadapter.
 | 
						|
  * The GStreamer elements have improved buffer pool handling and rate
 | 
						|
    matching.
 | 
						|
  * The combine-stream module can now also mix streams.
 | 
						|
  * link-factory now checks that the port and node belong together.
 | 
						|
  * The netjack-manager module has support for autoconnecting streams.
 | 
						|
  * The native-protocol has support for abstract sockets.
 | 
						|
  * The pulse server has support for blocking playback and capture in
 | 
						|
    pulse.rules.
 | 
						|
  * The corked state of stream is now reported correctly in pulse-server.
 | 
						|
  * Fix backwards jumps in pulse-server.
 | 
						|
  * Latency configuration support was added in loopback and raop-sink.
 | 
						|
  * The ROC module has more configuration options.
 | 
						|
  * The SAP module now only send updated SDP when something changed.
 | 
						|
  * RTP source now has a standby mode where it idles when there is no
 | 
						|
    data received.
 | 
						|
  * Support for PTP clocking was added the RTP streams.
 | 
						|
  * The VBAN receiver can now dynamically create streams when they are
 | 
						|
    detected.
 | 
						|
  * Error reporting when making links was improved.
 | 
						|
  * Support for returning (canceling) a dequeued buffer in pw-stream.
 | 
						|
  * Support for emiting events in pw-stream was added.
 | 
						|
  * pw-cat now support stdin and stdout.
 | 
						|
 | 
						|
 | 
						|
## Highlights (since the previous 1.3.83 release)
 | 
						|
  - Small fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix some missing includes in metadata.h
 | 
						|
  - Pass the current error in errno when a stream is in error (#4574)
 | 
						|
 | 
						|
 | 
						|
## modules
 | 
						|
  - Evaluate node rules before loading adapter follower to ensure
 | 
						|
    properties are set correctly. (#4562)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Avoid a use after free when building PODs. (#4445)
 | 
						|
  - Take headroom into account when calculating resync.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Fix +CLCC parsing.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Notify about default device changes in deviceprovider.
 | 
						|
  - Copy frames between pools and avoid splitting video buffers.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Add an option to disable the MIDI2 port flags. (#4584)
 | 
						|
 | 
						|
# PipeWire 1.3.83 (2025-02-20)
 | 
						|
 | 
						|
This is the third and hopefully last 1.4 release candidate that
 | 
						|
is (almost) API and (entirely) ABI compatible with previous 1.2.x
 | 
						|
and 1.0.x releases.
 | 
						|
 | 
						|
We note that in the 1.3.x series, the API is slighty not backwards
 | 
						|
compatible because some methods previously used to accept void* as
 | 
						|
a parameter while they now require the correct type. We think this
 | 
						|
is however a good kind of API breakage and expect projects to patch
 | 
						|
their code to get things compiled with newer version (which will also
 | 
						|
compile for older versions). Note also that this is not an ABI break.
 | 
						|
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Handle JACK transport updates in a better way.
 | 
						|
  - Fix a SAP regression when starting.
 | 
						|
  - Fix regression in rate scaling.
 | 
						|
  - Improve bluetooth source rate handling.
 | 
						|
  - More small bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Handle JACK transport updates in a better way. (#4543)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Check that the link factory port and nodes match. Deprecate the
 | 
						|
    port.id when making links.
 | 
						|
  - Improve profiler output by scaling the quantum with the node
 | 
						|
    rate so that we don't end up with confusing information. (#4555)
 | 
						|
  - Fix sending of the SAP SDP. Handle some SDP parsing errors.
 | 
						|
  - Add some more options to the ROC source module. (#4516)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix firewire quirks in udev rules. (#4528)
 | 
						|
  - Fix a bug in the rate scaling in some cases that would make things
 | 
						|
    run with the wrong samplerate.
 | 
						|
  - Improve introspection of control types.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Use the G722 codec from Android instead of FFmpeg for ASHA.
 | 
						|
  - Use the A2DP source rate as the graph rate. (#4555)
 | 
						|
  - Specify the bluetooth source latency property in the rate of the
 | 
						|
    stream to avoid conversions and rounding errors.
 | 
						|
 | 
						|
# PipeWire 1.3.82 (2025-02-06)
 | 
						|
 | 
						|
This is the second 1.4 release candidate that is API and ABI
 | 
						|
compatible with previous 1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Various pw-stream improvements: timing information fixes,
 | 
						|
    avoid locking buffers in some cases and an improved drain
 | 
						|
    event.
 | 
						|
  - A new Telephony D-BUS API compatible with ofono.
 | 
						|
  - Documentation fixes and updates.
 | 
						|
  - More small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Improve timing information when rate is unknown.
 | 
						|
  - Avoid locked buffers in pw_stream in some cases.
 | 
						|
  - Improve pw_stream drain event emission.
 | 
						|
  - Improve manager socket handling. Applications can avoid hardcoding
 | 
						|
    the sockets so that they will respect the config settings.
 | 
						|
 | 
						|
## modules
 | 
						|
  - Fix header size calculation when using ipv6. (#4524)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Optimize byteswapped s16 conversions.
 | 
						|
  - Improve event handling for internal events.
 | 
						|
  - Optimize negiotiation when in convert mode, prefer the format
 | 
						|
    of the follower in adapter.
 | 
						|
  - Fix EnumPortConfig for videoadapter without converter.
 | 
						|
  - Fix libcamera property buffer size.
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Add systemwide systemd files.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Add a UMP example.
 | 
						|
  - Use the new JackPortMIDI2 flag to mark UMP ports to JACK.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Support BAP hardware volume.
 | 
						|
  - Add a Telephony DBUS API.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Disable buffer pools for audio by default.
 | 
						|
 | 
						|
## Docs
 | 
						|
  - Improve the module documentation.
 | 
						|
 | 
						|
# PipeWire 1.3.81 (2025-01-23)
 | 
						|
 | 
						|
This is the first 1.4 release candidate that is API and ABI
 | 
						|
compatible with previous 1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
In addition to all the changes backported to 1.2.x, this release
 | 
						|
also contains some new features:
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - UMP support was added with MIDI 1.0 and MIDI 2.0 support in the ALSA
 | 
						|
    sequencer plugin. By default PipeWire will now use MIDI 2.0 in UMP
 | 
						|
    messages to transport MIDI in the graph, with conversions to/from legacy
 | 
						|
    MIDI where required. This requires UMP support in the kernel.
 | 
						|
  - client-rt.conf is no longer supported. Custom changes made to this
 | 
						|
    config should be moved to client.conf. Clients that try to load the
 | 
						|
    client-rt.conf will emit a warning and be directed to client.conf
 | 
						|
    automatically for backwards compatibility.
 | 
						|
  - The module-filter-chain code was moved to a new filter-graph plugin. This
 | 
						|
    made it possible to add filter-graph support directly in audioconvert. It
 | 
						|
    is now possible to run up to 8 run-time swappable filter-graphs inside
 | 
						|
    streams and nodes. This should make it easier to add effects to streams
 | 
						|
    and device nodes.
 | 
						|
  - Bluetooth support for BAP broadcast links and support for hearing aids
 | 
						|
    using ASHA was added.
 | 
						|
  - Many more bugfixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Nodes are now only scheduled when ready to signal the driver.
 | 
						|
  - Add slovenian translation. (#4156)
 | 
						|
  - Link errors are handled better.
 | 
						|
  - The videoadapter is now enabled by default but no videoconverter
 | 
						|
    is loaded yet by default.
 | 
						|
  - Streams now have support for ProcessLatency.
 | 
						|
  - Streams now have a method to emit events.
 | 
						|
  - The RequestProcess event and command can now pass around extra
 | 
						|
    properties.
 | 
						|
  - Local timestamps are now used for logging.
 | 
						|
  - client-rt.conf is no longer supported. Custom changes made to this
 | 
						|
    config should be moved to client.conf. Clients that try to load the
 | 
						|
    client-rt.conf will emit a warning and be directed to cliert.conf
 | 
						|
    automatically to preserve backwards compatibility.
 | 
						|
  - pw_stream now has an API to return unused buffers.
 | 
						|
 | 
						|
## modules
 | 
						|
  - module-combine-stream can now mix streams.
 | 
						|
  - Links in error are now destroyed by link-factory.
 | 
						|
  - The netjack2 driver can now also create streams that autoconnect when
 | 
						|
    specified. (#4125)
 | 
						|
  - Many updates and bugfixes to the RTP modules.
 | 
						|
  - The netjack2 driver can now bind to a custom IP and port pair. (#4144)
 | 
						|
  - The loopback module and module-raop have support for ProcessLatency, which
 | 
						|
    can be used to query and update the latency.
 | 
						|
  - The profiler module can now reduce the sampling rate.
 | 
						|
  - The filter-chain was optimized some more.
 | 
						|
  - The filter-chain gained some more plugins: param_eq, ebur128, dcblock.
 | 
						|
  - Support for fftw based convolver was added.
 | 
						|
  - Some module arguments can now be overridden.
 | 
						|
  - The VBAN receiver now creates new streams per stream name. (#4400)
 | 
						|
  - The RTP SAP module is now smarter with generating new SAP messages.
 | 
						|
  - The RTP source can now be paused when no data is received. (#4456)
 | 
						|
 | 
						|
## tools
 | 
						|
  - pw-cat can now stream most formats from stdin/stdout.
 | 
						|
  - pw-profiler has a JSON dump option to dump the raw profiler data.
 | 
						|
  - pw-cli now supports unload-module. (#4276)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - The resampler can precompute some common coeficients now at compile
 | 
						|
    time.
 | 
						|
  - UMP support was added with MIDI 1.0 and MIDI 2.0 support in the ALSA
 | 
						|
    sequencer plugin. By default PipeWire will now use MIDI 2.0 in UMP
 | 
						|
    messages to transport MIDI in the graph, with conversions to/from legacy
 | 
						|
    MIDI where required.
 | 
						|
  - Control types can now be negotiated.
 | 
						|
  - Support for writing ALSA bind controls was added.
 | 
						|
  - The ALSA sequencer now has better names for the ports.
 | 
						|
  - The F32 to S32 conversion now uses 25 bits for an extra bit of
 | 
						|
    precision.
 | 
						|
  - libcamera controls can now be set in all cases.
 | 
						|
  - The videoadapter has been improved and a dummy and ffmpeg based
 | 
						|
    videoconverter plugin was added.
 | 
						|
  - Negotiation was improved in audioadapter. First a passthrough format
 | 
						|
    is tried.
 | 
						|
  - Some JSON helper functions were added and some duplicate code removed
 | 
						|
    or simplified.
 | 
						|
  - Add support for RISC V CPU detection and add many optimizations in
 | 
						|
    the audio converters.
 | 
						|
  - Add an option to disable ALSA mixer path select. (#4311)
 | 
						|
  - Fix a potential bug with the cleanup of the loop queues.
 | 
						|
  - ALSA nodes now dynamically adjust the DLL bandwidth based on average
 | 
						|
    measured variance.
 | 
						|
  - The loop invoke queue was made more efficient and make it possible to
 | 
						|
    invoke from multiple threads.
 | 
						|
  - The filter-chain code was moved to a new filter-graph plugin.
 | 
						|
  - Most function macros are now static inlined and can also be built into a
 | 
						|
    libspa.so file. This should improve language bindings.
 | 
						|
  - V4l2 clock information was improved.
 | 
						|
  - Supported IEC958 codecs are now autodetected via ELD info.
 | 
						|
  - Audioconvert was optimized some more.
 | 
						|
  - Audioconvert can now include filter-graphs in its processing.
 | 
						|
  - webrtc-audio-processing-2 is now supported in AEC.
 | 
						|
  - The resampler now reports the delay and subsample delay. Also the
 | 
						|
    delay is reported in the samplerate of the input.
 | 
						|
  - The ALSA sequencer now handle kernels without UMP support. (#4507)
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Add quirk to block clients from making record and playback streams.
 | 
						|
  - The corked state is now set on stream to always report this state
 | 
						|
    correctly to other clients.
 | 
						|
  - Readiness notification was added to the pulse server with the
 | 
						|
    PIPEWIRE_PULSE_NOTIFICATION_FD environment variable. (#4347)
 | 
						|
  - The pulse.cmd config now supports conditions.
 | 
						|
  - A bug in clearing the ringbuffer was fixed. (#4464)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Support for the default devices was added to the deviceprovider. (#4268)
 | 
						|
  - The graph clock is now used as the source for the GStreamer clock.
 | 
						|
  - The sink now does some rate control.
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - The ALSA plugin now supports DSD when explicitly enabled.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - JACK now supports 2 new extension formats for OSC and UMP.
 | 
						|
  - JACK clients can receive UMP MIDI1 or MIDI2 messages when using
 | 
						|
    the new UMP port format extension.
 | 
						|
  - JACK now reports the PipeWire version in the minor/micro/proto.
 | 
						|
  - Implement more jackserver functions.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Support BAP broadcast links.
 | 
						|
  - Support for ASHA was added.
 | 
						|
  - Delay reporting in A2DP sources was improved.
 | 
						|
 | 
						|
## Examples
 | 
						|
  - 2 new examples of pw-stream using spa_ringbuffer were added.
 | 
						|
 | 
						|
## Docs
 | 
						|
  - Many updates to the man pages.
 | 
						|
  - More documentation about thread safety of functions in stream
 | 
						|
    and filters. (#4521)
 | 
						|
 | 
						|
# PipeWire 1.2.7 (2024-11-26)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with the previous
 | 
						|
1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Backport support for lazy scheduling.
 | 
						|
  - Handle the case where processing would stop when an ALSA driver is
 | 
						|
    destroyed.
 | 
						|
  - Add support for v4l2loopback in the v4l2 plugin.
 | 
						|
  - Small bug fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Invalidate the proxy ID when removed.
 | 
						|
  - Backport support for lazy scheduling.
 | 
						|
  - Fix profiler stats for async nodes.
 | 
						|
  - Fix EARLY_PROCESS again in pw-stream. (#3480)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Fix a crasher issue when nodes are created in the wrong order in
 | 
						|
    module-filter-chain.
 | 
						|
  - Fix unmap bug in lv2 uri tables.
 | 
						|
  - Add ratelimit to jack-tunnel xruns.
 | 
						|
  - Remove hardcoded limit in filter-chain sofa plugin.
 | 
						|
  - Handle the MTU size correctly in module-rtp and handle large MTUs.
 | 
						|
    (#4396)
 | 
						|
  - Fix JSON float parsing errors in equalizer module. (#4418)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix crash in audiotestsrc when using spa-inspect (#4365).
 | 
						|
  - Improve JSON float infinity checks.
 | 
						|
  - Improve resampler performace a little.
 | 
						|
  - Make audioconvert only output when there is something to output.
 | 
						|
  - Fix regression in v4l2 port flags which would disable support for
 | 
						|
    EXPBUF.
 | 
						|
  - Handle the case where an ALSA driver is destroyed and the follower
 | 
						|
    becomes a driver. Processing would stop. (#4401)
 | 
						|
  - Add support for v4l2loopback in the v4l2 plugin.
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Give a better error message when running out of fds.
 | 
						|
  - Ensure positive latency reporting.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix memory leak in deviceprovider.
 | 
						|
  - Fix locking when emitting an error.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Fix pw-dot link labels.
 | 
						|
 | 
						|
# PipeWire 1.2.6 (2024-10-23)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with the previous
 | 
						|
1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - The filter-chain param changes were not aggregated correctly, causing some
 | 
						|
    param changes to be ignored. (#4331)
 | 
						|
  - Clear the JACK io ports correctly when stopping to avoid crashes. (#4337)
 | 
						|
  - Some more small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Stream states are now updated based on the underlying node state.
 | 
						|
  - Exported nodes now have their state change done synchronously so that the
 | 
						|
    server can immediately start the driver and avoid some initial xruns.
 | 
						|
  - Improve stream flush handling and improve the docs.
 | 
						|
  - Don't send mix_info to destroyed ports to avoid some errors in the
 | 
						|
    JACK clients.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The filter-chain param changes were not aggregated correctly, causing some
 | 
						|
    param changes to be ignored. (#4331)
 | 
						|
  - The filter-chain now correctly optimizes unlinked nodes in all cases.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - ALSA PCM node properties are now no longer overwritten with card properties.
 | 
						|
    (#4135)
 | 
						|
  - Increase the adapter retry count to avoid xruns in some cases. (#4334)
 | 
						|
  - Fix potential crash in cleanup of ALSA nodes.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Fix a crash with broadcast sinks.
 | 
						|
  - Improve compatibility with Phonak hearing aids.
 | 
						|
  - Don't exit when DBus goes down.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Clear the io ports correctly when stopping to avoid crashes. (#4337)
 | 
						|
 | 
						|
## Docs
 | 
						|
  - Backport docs from master.
 | 
						|
 | 
						|
# PipeWire 1.0.9 (2024-10-22)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix an fd leak and confusion in the protocol that would cause leaks and
 | 
						|
    wrong memory to be used.
 | 
						|
  - Fix bug where the mixer would not be synced correctly after selecting
 | 
						|
    a port, leaving the audio muted. (#4084)
 | 
						|
  - Backport v4l2 systemd-logind support to avoid races when starting.
 | 
						|
    (#3539 and #3960).
 | 
						|
  - Other small fixed and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a bug where renegotiation would sometimes fail to deactivate a link.
 | 
						|
  - Fix an fd leaks and confusion in the protocol.
 | 
						|
 | 
						|
## modules
 | 
						|
  - Fix a use-after-free in the rt module when stopping a thread.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix bug where the mixer would not be synced correctly after selecting
 | 
						|
    a port, leaving the audio muted. (#4084)
 | 
						|
  - Fix a compilation issue with empty initializers. (#4317)
 | 
						|
  - Backport v4l2 systemd-logind support to avoid races when starting.
 | 
						|
    (#3539 and #3960).
 | 
						|
  - Fix a potential crash when cleaning ALSA nodes.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - align buffers to the max cpu alignment in order to allow more
 | 
						|
    optimizations.
 | 
						|
 | 
						|
# PipeWire 1.2.5 (2024-09-27)
 | 
						|
 | 
						|
This is an important bugfix release that is API and ABI compatible with the
 | 
						|
previous 1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix an fd mismatch in the protocol in some cases that could lead to
 | 
						|
    fd leaks and crashes.
 | 
						|
  - Fix a bug where the mixer was not updated after setting the port, which would
 | 
						|
    cause muted audio at boot or resume from suspend.
 | 
						|
  - Fix a potential use-after-free in module-rt when stopping a thread.
 | 
						|
  - Cached objects are now freed in the JACK API to avoid memory leaks.
 | 
						|
  - Some more fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - RequestProcess commands are now only sent after the node completes
 | 
						|
    the state change to RUNNING.
 | 
						|
  - More FreeBSD fixes.
 | 
						|
  - Handle ACTIVE links going to < PAUSED as well. This improves
 | 
						|
    renegotiation in some cases.
 | 
						|
  - Fix an fd mismatch in the protocol in some cases that could lead to
 | 
						|
    fd leaks and crashes.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Many of the network modules can now also accept hostnames instead of
 | 
						|
    IP addresses.
 | 
						|
  - Fix a potential use-after-free in module-rt when stopping the thread.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Support for elogind was added.
 | 
						|
  - Some more errors are checked when converting JSON to POD. (#4313)
 | 
						|
  - Fix a bug where the mixer was not updated after setting the port, which would
 | 
						|
    cause muted audio at boot or resume from suspend. (#4084)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - The BBT transport handling was improved. Some fields were added to be able
 | 
						|
    to handle the JACK semantics correctly. (#4314)
 | 
						|
  - Buffers are now aligned according to the maximum CPU alignment instead of
 | 
						|
    the hardcoded 16 bytes alignment.
 | 
						|
  - Cached objects are now freed correctly.
 | 
						|
 | 
						|
## Doc
 | 
						|
  - Some small doc updates. (#4272)
 | 
						|
 | 
						|
# PipeWire 1.2.4 (2024-09-19)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with the
 | 
						|
previous 1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Avoid a crash in cleanup of globals. (#4250)
 | 
						|
  - Use systemd-logind to scan for new devices in v4l2.
 | 
						|
  - Some more bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Avoid a crash in cleanup of globals. (#4250)
 | 
						|
  - Improve RequestProcess dispatch.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Improve float parsing. (#4234)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Clear the ringbuffer when stopping in libcamera.
 | 
						|
  - Use systemd-logind to scan for new devices in v4l2. (#3539, #3960)
 | 
						|
  - Queue dropped first buffer in v4l2.
 | 
						|
  - Unlink pcm devices when moving drivers to avoid broken pipe.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Emit buffer_size callback in jack_activate() to improve
 | 
						|
    compatibility with GStreamer. (#4260)
 | 
						|
 | 
						|
# PipeWire 1.0.8 (2024-09-19)
 | 
						|
 | 
						|
This is a small bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Backport support for explicit sync.
 | 
						|
  - FFADO backport fixes.
 | 
						|
  - Fix some races in JACK.
 | 
						|
  - More small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Add support for mandatory metadata and explicit sync metadata.
 | 
						|
  - Fix RequestProcess again.
 | 
						|
  - Include config.h to use malloc_trim() when cleaning nodes.
 | 
						|
  - Avoid crash when destroying a global. (#4250)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - FFADO fixes: improve timing reporting, avoid some xruns, improve
 | 
						|
    samplerate and period size handling, implement freewheeling.
 | 
						|
  - Decrease memory usage of the profiler.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Fix pw-dump metadata changes fix. (#4053)
 | 
						|
  - Support large params in pw-cli. (#4166)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Improve libcamera devices reporting to properly filter out duplicates in
 | 
						|
    all cases.
 | 
						|
  - Improve property reporting in v4l2.
 | 
						|
  - Fix lost buffer in v4l2.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improve compatibility with some devices.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Fix some races when shutting down.
 | 
						|
  - Fix rt-priority on the main thread when using custom thread create
 | 
						|
    function. (#4099)
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - Handle format renegotiation. (#3856)
 | 
						|
 | 
						|
# PipeWire 1.2.3 (2024-08-22)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with the
 | 
						|
previous 1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Implement freewheeling support in the FFADO driver. Also improve
 | 
						|
    buffersize and samplerate handling.
 | 
						|
  - Improve some locking on spa_loop. Remove a possible deadlock when
 | 
						|
    the queue was full.
 | 
						|
  - Allocate more space for the libcamera devices string to properly
 | 
						|
    deduplicate libcamera and v4l2 devices.
 | 
						|
  - Some more bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Improve activation state changes and xrun detection some more.
 | 
						|
    (#4182)
 | 
						|
  - Avoid a memory leak when a link in error is destroyed.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Improve samplerate and buffersize handling in FFADO driver so that
 | 
						|
    it is possible to force a rate and buffer size.
 | 
						|
  - Implement freewheeling support in the ffado driver.
 | 
						|
  - Always set the server side clock.quantum-limit on nodes. This fixes
 | 
						|
    a buffer size problem in Midi-bridge. (#4005)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Improve some locking on spa_loop. Remove a possible deadlock when
 | 
						|
    the queue was full. (#4114)
 | 
						|
  - Allocate more space for the libcamera devices string to properly
 | 
						|
    deduplicate libcamera and v4l2 devices.
 | 
						|
  - Fix a potential race when enumerating v4l2 udev devices. (#3960)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improve compatibility with some devices (Soundcore Motion 300).
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cli can now handle arbitrarily large input and params. (#4166)
 | 
						|
  - Avoid some compiler warnings in pw-top.
 | 
						|
 | 
						|
# PipeWire 1.2.2 (2024-07-31)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with the
 | 
						|
previous 1.2.x and 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix some more fallout of the async nodes rewrite. Fixes some
 | 
						|
    crackling, xruns and possibly also some crashes in some cases.
 | 
						|
  - Fix freewheeling timeouts in case of xruns. This fixes ardour export.
 | 
						|
  - Fix event mixdown in JACK. Fixes qsynth and possibly other apps.
 | 
						|
  - Some more small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Add a new SPA_IO_CLOCK_FLAG_XRUN_RECOVER flag when the process function
 | 
						|
    is called because of xrun recovery.
 | 
						|
  - Properly stop nodes in all cases, this avoids spurious xruns and
 | 
						|
    scheduling errors. (#4122)
 | 
						|
  - Make sure async nodes receive an async link in all cases. Do the
 | 
						|
    processing of source output ports slightly differently to make sure we
 | 
						|
    don't cause latency for sources. (#4138) (#4133)
 | 
						|
  - Fix some races when negotiating and starting nodes. (#4094)
 | 
						|
  - Actually include the config.h header to use malloc_trim() to reduce
 | 
						|
    memory usage in pulse-server.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Avoid unloading some modules on stream errors because it is possible to
 | 
						|
    recover from the error. (#4121)
 | 
						|
  - Fix a (harmless) warning in module-rtp because of comparing samples and
 | 
						|
    time. (#4095)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Let the freewheel driver detect xrun recovery and handle the timeouts
 | 
						|
    correctly. This fixes an issue with ardour export.
 | 
						|
  - Remove the HDMI/AC3 profiles. they turn out to fail on some hardware
 | 
						|
    with no way to detect this.
 | 
						|
  - Signal the eventfd when the loop is full to make sure the other thread
 | 
						|
    is woken up to process the queue.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Don't check timestamps when mixing down events. The timestamps are only
 | 
						|
    checked when writing new events with the public API. This fixes an
 | 
						|
    issue where qsynth would not receive midi events anymore.
 | 
						|
  - Fix the jack_get_time() function, it was returning nano instead of micro
 | 
						|
    seconds.
 | 
						|
 | 
						|
# PipeWire 1.2.1 (2024-07-12)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
the previous 1.2.0 release and the 1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression in the node activation counters that would break audio
 | 
						|
    when using KODI.
 | 
						|
  - Fix a regression in ardour export because of mishandling of sync groups.
 | 
						|
  - Fix a regression in KDE screen preview because of the new async
 | 
						|
    scheduling.
 | 
						|
  - Fix a regression in context.exec argument parsing that would break some
 | 
						|
    existing scripts.
 | 
						|
  - More small bug fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a regression in the node activation counters that would break audio
 | 
						|
    when using KODI. (#4087)
 | 
						|
  - Fix a regression in ardour export because of mishandling of sync groups.
 | 
						|
    (#4083)
 | 
						|
  - Fix a regression in KDE screen preview because of the new async
 | 
						|
    scheduling. Disable async for driver nodes. (#4092)
 | 
						|
  - Slightly improve node shutdown to cause less xruns.
 | 
						|
  - Fix a regression in context.exec argument parsing that would break some
 | 
						|
    existing scripts.
 | 
						|
  - Support custom thread create functions.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Improve snapcast address parsing. (#4093)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix multiple %f parsing in ACP for the new plug+a52 profiles.
 | 
						|
  - Improve v4l2 param generation. Improve recovery when framesize or rates
 | 
						|
    are unknown, support vivid. (#4063)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Use the custom thread create function to correctly let module-rt kit
 | 
						|
    manage threads so that we don't end up with priorities on the wrong
 | 
						|
    threads. (#4099)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix a crash when destroying a stream.
 | 
						|
 | 
						|
# PipeWire 1.2.0 (2024-06-27)
 | 
						|
 | 
						|
This is the 1.2 release that is API and ABI compatible with previous
 | 
						|
1.1.x and 1.0.x releases.
 | 
						|
 | 
						|
This release contains some of the bigger changes that happened since
 | 
						|
the 1.0 release last year, including:
 | 
						|
 | 
						|
  * Support for asynchronous processing has been implemented. Nodes can choose
 | 
						|
    (or be forced) to be scheduled asynchronously. The graph will not wait for
 | 
						|
    the output of the node to continue processing but it will use the output
 | 
						|
    of the previous cycle (or silence) instead. This adds one cycle of latency
 | 
						|
    but it can avoid having some nodes blocking the processing graph. Non realtime
 | 
						|
    streams and filters now also use this asynchronous processing instead of
 | 
						|
    their own slightly broken version.
 | 
						|
  * The concept of node.sync-group was added. This groups nodes with overlapping
 | 
						|
    sync-group together when one of them sets the node.sync = true. This is now
 | 
						|
    used to make sure all nodes are scheduled together when JACK transport is
 | 
						|
    started so that they all see the same transport time.
 | 
						|
  * Config parsing errors are reported earlier and much better with line and
 | 
						|
    column numbers where the parsing started to fail.
 | 
						|
  * Add support for mandatory metadata when negotiating buffer parameters. This
 | 
						|
    can be used to only negotiate extra buffer planes when certain metadata is
 | 
						|
    negotiated. One use case is the explicit sync support that requires 2
 | 
						|
    extra fds for the timelines.
 | 
						|
  * Explicit sync metadata and support was added.
 | 
						|
  * Support was added for making and using multiple data-loops in the server
 | 
						|
    and clients. Support for CPU affinity and priorities was added to the
 | 
						|
    data-loops as well.
 | 
						|
  * The log topic debug levels can now be changed at runtime with metadata.
 | 
						|
    The log levels in the pulse server can be dynamically changed with a
 | 
						|
    /core message.
 | 
						|
  * The UCM conflicting devices patches were merged.
 | 
						|
  * Add snapcast-discover module to stream to snapcast servers.
 | 
						|
  * Rework how peers are linked and the counters are updated. Resume the
 | 
						|
    peers when a node is unlinked and not yet processed. This should cause
 | 
						|
    less occasional dropouts in the graph when reconnecting things.
 | 
						|
  * Many GStreamer element updates.
 | 
						|
  * Many more fixes and improvements.
 | 
						|
 | 
						|
Enjoy the summer vacation!
 | 
						|
 | 
						|
 | 
						|
## Highlights (since the previous 1.1.83 release)
 | 
						|
  - Small fixes here and there.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Compilation fixes after enabling -Werror=float-conversion
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The module-rtp-sap now propagates the cleanup.sec property to the
 | 
						|
    rtp-source and the rtp-source now sets a property with the receiving
 | 
						|
    status.
 | 
						|
  - Fix for ROC 0.3, explicitly specify sender encoding. (#4070)
 | 
						|
  - Some fixes to the RAOP sink module, including a format fix for 32 bit
 | 
						|
    machines.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Fix pw-cli monitoring code.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Revert peer_enum_params again because it was not used and flawed.
 | 
						|
  - Fix multichannel processing in webrtc AEC.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Logging improvements.
 | 
						|
  - Fix a race in the bufferpool activation.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improvements to BAP broadcast code parsing.
 | 
						|
 | 
						|
# PipeWire 1.1.83 (2024-06-17)
 | 
						|
 | 
						|
This is the third and hopefully the last 1.2 release candidate that is
 | 
						|
API and ABI compatible with previous 1.0.x releases.
 | 
						|
 | 
						|
Some last minute changes went in to clean up the node activation and
 | 
						|
scheduling that justify another pre-release.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Rework how peers are linked and the counters are updated. Resume the
 | 
						|
    peers when a node is unlinked and not yet processed. This should cause
 | 
						|
    less occasional dropouts in the graph when reconnecting things.
 | 
						|
  - Improve xruns in module-ffado.
 | 
						|
  - Many GStreamer element updates.
 | 
						|
  - More fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Rework how peers are linked and the counters are updated. Resume the
 | 
						|
    peers when a node is unlinked and not yet processed. This should cause
 | 
						|
    less dropouts in the graph when reconnecting. (#4026)
 | 
						|
  - Improve debug of xruns.
 | 
						|
  - Evaluate node.rules and device.rules before loading the plugin so that
 | 
						|
    extra properties can be passed to the plugin init function.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Improve timing reporting in module-ffado some more.
 | 
						|
  - Prealloc less memory in the profiler by default.
 | 
						|
  - Improve xrun handling in module-ffado.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Fix a crash in pw-link when a link fails.
 | 
						|
  - Fix pw-dump update for metadata. (#4053)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Improve handling of controls. (#4028)
 | 
						|
  - Fix the string size in v4l2 to hold the device and vendor id.
 | 
						|
  - Support meta_videotransform on buffers in v4l2. This can be used to
 | 
						|
    signal that the buffer was rotated for example.
 | 
						|
  - Add HDMI/AC3 profile to ALSA when supported.
 | 
						|
  - Make it possible to disable the webrtc dependency
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Improve caps handling in the elements.
 | 
						|
  - Set buffer duration when we can.
 | 
						|
  - Post an element error when all the elements buffers are removed.
 | 
						|
    (#1980)
 | 
						|
  - Improve DMA_DRM caps selection.
 | 
						|
  - Some refactoring work.
 | 
						|
  - Improve state handling in the elements.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Improve how links are activated.
 | 
						|
  - Fix some races when freeing memory.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Support multiple BIS in the broadcast source.
 | 
						|
 | 
						|
# PipeWire 1.1.82 (2024-05-24)
 | 
						|
 | 
						|
This is the second 1.2 release candidate that is API and ABI
 | 
						|
compatible with previous 1.0.x releases.
 | 
						|
 | 
						|
Not so many things needed to be fixed so this might already be the
 | 
						|
last prerelease if everything goes well...
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix problem when moving nodes that could cause nodes to be scheduled
 | 
						|
    wrongly and cause errors. (#4017)
 | 
						|
  - Add snapcast-discover module to stream to snapcast servers.
 | 
						|
  - Work around wrong kernel provided MTU for USB controllers.
 | 
						|
  - Fix some spelling mistakes all over the codebase.
 | 
						|
  - More small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Remove the private cleanup.h header and use the public SPA version.
 | 
						|
  - Fix problem when moving nodes that could cause nodes to be scheduled
 | 
						|
    wrongly and cause errors. (#4017)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Handle IPv6 in module-protocol-simple and support port allocation.
 | 
						|
  - Add snapcast-discover module to stream to snapcast servers.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Work around wrong kernel provided MTU for USB controllers.
 | 
						|
 | 
						|
# PipeWire 1.0.7 (2024-05-24)
 | 
						|
 | 
						|
This is a small bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a potential race/crash.
 | 
						|
  - Fix some problems with negotiation of large integers and floats.
 | 
						|
  - Fix JACK sysex MIDI event handling.
 | 
						|
  - Some more smaller fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a potential race when adding/removing a port to be scheduled.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Fix FFADO default device handling. (#4023)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix in integer overflow and float/double compare in POD.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Copy larger MIDI events correctly.
 | 
						|
 | 
						|
# PipeWire 1.1.81 (2024-05-16)
 | 
						|
 | 
						|
This is the first 1.2 release candidate that is API and ABI
 | 
						|
compatible with previous 1.0.x releases.
 | 
						|
 | 
						|
In addition to all the changes backported to 1.0.x, this release
 | 
						|
also contains some new features:
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Support for asynchronous processing has been implemented. Nodes can choose
 | 
						|
    (or be forced) to be scheduled asynchronously. The graph will not wait for
 | 
						|
    the output of the node to continue processing but it will use the output
 | 
						|
    of the previous cycle (or silence) instead. This adds one cycle of latency
 | 
						|
    but it can avoid having some nodes blocking the processing graph. Non realtime
 | 
						|
    streams and filters now also use this asynchronous processing instead of
 | 
						|
    their own slightly broken version.
 | 
						|
  - The concept of node.sync-group was added. This groups nodes with overlapping
 | 
						|
    sync-group together when one of them sets the node.sync = true. This is now
 | 
						|
    used to make sure all nodes are scheduled together when JACK transport is
 | 
						|
    started so that they all see the same time.
 | 
						|
  - Config parsing errors are reported earlier and much better with line and
 | 
						|
    column numbers where the parsing started to fail.
 | 
						|
  - Add support for mandatory metadata when negotiation buffer parameters. This
 | 
						|
    can be used to only negotiate extra buffer planes when certain metadata is
 | 
						|
    negotiated. One use case is the explicit sync support that requires 2
 | 
						|
    extra fds for the timelines.
 | 
						|
  - Support was added for making and using multiple data-loops in the server
 | 
						|
    and clients. Support for CPU affinity and priorities was added to the
 | 
						|
    data-loops as well.
 | 
						|
  - The log topic debug levels can now be changed at runtime with metadata.
 | 
						|
    The log levels in the pulse server can be dynamically changed with a
 | 
						|
    /core message.
 | 
						|
  - The UCM conflicting devices patches were merged.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - snap support has been added.
 | 
						|
  - Implement async processing. (#3509)
 | 
						|
  - Support for explicit sync was added.
 | 
						|
  - Config parsing errors are reported earlier and much better.
 | 
						|
  - A -P option was added to provide extra properties to the context. This can be
 | 
						|
    used to enable some features that use rules.
 | 
						|
  - properties.rules was added to enhance properties based on some rules.
 | 
						|
    This deprecates the vm.overrides.
 | 
						|
  - Support was added for security-context. This makes it possible for a flatpak
 | 
						|
    to request a socket with specific properties from pipewire to mount in the
 | 
						|
    flatpak. The session manager can then assign permissions based on the connection
 | 
						|
    properties.
 | 
						|
  - Support for fixed arrays in pw_array was improved.
 | 
						|
  - PipeWire server and clients can now use multiple threads to process the nodes
 | 
						|
    in parallel.
 | 
						|
  - device.rules and node.rules were added to update device and node properties
 | 
						|
    based on rules.
 | 
						|
  - device.param and node.param can now be used to configure params when devices
 | 
						|
    and nodes are created.
 | 
						|
  - Memory will now try to use MFD_NOEXEC_SEAL.
 | 
						|
  - The driver id of a node is now placed in the properties.
 | 
						|
  - A potential race was fixed when adding and removing ports to the scheduling
 | 
						|
    lists.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Priorities for the FFADO threads can be configured now.
 | 
						|
  - The loopback module now has support for up and downmixing.
 | 
						|
  - Extra properties can now be configured per native-connection socket.
 | 
						|
  - The pulse-tunnel can now automatically reconnect when the connection is
 | 
						|
    broken.
 | 
						|
  - The RTP module now supports the PTP management protocol.
 | 
						|
  - The RTP sender can now use a timer to send out multiple packets per
 | 
						|
    quantum.
 | 
						|
  - A new module was added for loading Parametric EQ.
 | 
						|
  - The simple-protocol module now has per stream configurable properties
 | 
						|
    and can also be used to interface with a snapcast server.
 | 
						|
  - Support for local services was added to raop, rtp and pulse avahi
 | 
						|
    discoverers. Support for IPv6 on local services was added to RAOP.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Support for reporting JSON parsing errors has been added.
 | 
						|
  - Some extra checks are added when iterating POD structures.
 | 
						|
  - Port and profiles can now be hidden from ALSA nodes with
 | 
						|
    api.acp.hidden-ports and api.acp.hidden-profiles properties.
 | 
						|
  - The UCM conflicting devices patches were merged.
 | 
						|
  - Profiles and Routes can now also be set by name.
 | 
						|
  - Hires timestamps are now used when possible in IRQ based scheduling to
 | 
						|
    get more accurate wakeup times.
 | 
						|
  - udev can now be an optional dependency.
 | 
						|
  - audioadapter now has an option to automatically configure its ports.
 | 
						|
  - Camera rotation was added to the libcamera node.
 | 
						|
  - invoke on loops can now be done from multiple threads at the same time.
 | 
						|
  - Make sure we use CLOCK_MONOTONIC everywhere in the io_clock.
 | 
						|
  - Vulkan bit and convert filters were added.
 | 
						|
  - ALSA will now always read the HW ringbuffer pointer when followers are
 | 
						|
    not on the same card.
 | 
						|
  - Support for larger MIDI sysex messages was improved. Configuration of
 | 
						|
    the client input and output pool was added. (#4005)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Support Google OPUS codec.
 | 
						|
  - Support the LC3-SWB codec.
 | 
						|
  - Support the AAC-ELD codec.
 | 
						|
  - Broadcast source configuration support was added.
 | 
						|
 | 
						|
## pulseaudio-server
 | 
						|
  - The GSettings schemas are now optionally installed.
 | 
						|
  - Extensions were moved to the modules.
 | 
						|
  - The log level of the pulse server can dynamically be changed with
 | 
						|
    a core object message.
 | 
						|
  - snap access control was added to pulse-server.
 | 
						|
  - The old pacmd describe-module functionality is now implemented with
 | 
						|
    a core message pipewire-pulse:describe-module.
 | 
						|
  - An option was added to disable module loading and unloading.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - OSC messages can now also be placed in JACK MIDI and the translation
 | 
						|
    layer will detect and tag the right PipeWire control message types.
 | 
						|
  - A jack.other-connect-mode was added to limit the connections that an
 | 
						|
    app can do to ports it doesn't own.
 | 
						|
  - The way the transport is started and how the nodes are grouped together
 | 
						|
    in the transport was improved using the new sync groups. (#3850)
 | 
						|
  - Fix large MIDI messages handling. (#4005)
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - Fix format renegotiation. (#3858)
 | 
						|
  - Handle period events better. (#3676)
 | 
						|
  - Improve handling of the eventfd wakeups.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - The GStreamer elements can now negotiate and use DMABUF.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - The T flag is used in pw-top when the transport is running.
 | 
						|
  - A new pw-container tool was added to start a new security context and
 | 
						|
    run an application in it.
 | 
						|
  - pw-dot handles properties with quotes better. Nodes are grouped with the
 | 
						|
    node.link-group.
 | 
						|
  - pw-link has a --wait option to wait for all links to be created.
 | 
						|
 | 
						|
# PipeWire 1.0.6 (2024-05-09)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - A bitfield race was fixed that could cause some crashes or undefined
 | 
						|
    behaviour when moving nodes between drivers.
 | 
						|
  - Fix to some invalid memory access in the pw-mon and pw-dump.
 | 
						|
  - A regression in kodi with IEC958 formats playback was fixed.
 | 
						|
  - A race in the ALSA plugin was fixed when updating the eventfd.
 | 
						|
  - Improvements and fixes to module-combine-stream.
 | 
						|
  - Negotiation was improved in pipewiresrc.
 | 
						|
  - Some more small fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Context properties are now set early so that client properties can be
 | 
						|
    matched with rules.
 | 
						|
  - A bitfield race was fixed that could cause some crashes or undefined
 | 
						|
    behaviour when moving nodes between drivers.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - Fix failure to hide properties in pw-mon. (#3997)
 | 
						|
  - Fix some memleaks and a crash in pw-dump. (#4001)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The combine-stream module now prevents resampling to avoid broken
 | 
						|
    audio because of different samplerates.
 | 
						|
  - Fix a potential double free in module-loopback when calculating the
 | 
						|
    delay. (#3748)
 | 
						|
  - The FFADO module now only starts when ports are negotiated to avoid
 | 
						|
    startup races. (#3968)
 | 
						|
  - The combine-stream module will now forward tags.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Monitor volumes are now also clamped to the min/max volumes. (#3962)
 | 
						|
  - V4l2 and libcamera now encodes the device ids into a JSON array. This
 | 
						|
    is part of the deduplication code of devices.
 | 
						|
  - A regression in kodi with IEC958 formats playback was fixed.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improved buffer handling and queued data when stopping.
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - A race was fixed when updating the eventfd. (#3711)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Handle some errors better instead of crashing. (#3994)
 | 
						|
  - Fix a memleak in the stream params handling.
 | 
						|
  - Negotiation was improved in pipewiresrc.
 | 
						|
 | 
						|
# PipeWire 1.0.5 (2024-04-15)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - pw_stream can now report timestamps on buffers and the expected
 | 
						|
    amount of samples for the resampler.
 | 
						|
  - The GStreamer element now has more correct timestamps using the new
 | 
						|
    pw_stream timestamps as a fallback.
 | 
						|
  - The FFADO module now handles suspend and resume better.
 | 
						|
  - A regression in v4l2 was fixed when parsing malformed filters.
 | 
						|
  - A potential memory/fd leak was fixed in client-node.
 | 
						|
  - Many more small bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - pw_stream now reports the expected resampler input or output size in
 | 
						|
    the pw_time structure. (#3750)
 | 
						|
  - pw_stream now also adds a time field to the buffer, which contains the
 | 
						|
    time of the graph when the buffer was received in the stream.
 | 
						|
  - Fix a compiler error when compiling with -Werror=shadow. (#3915)
 | 
						|
  - The config parser will warn when invalid config is detected.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The FFADO module now opens and closes when suspending. This fixes some
 | 
						|
    problems when FFADO properties are changed while suspended. (#3558)
 | 
						|
  - Filter-chain will now warn when invalid config is detected.
 | 
						|
  - Echo-cancel will now handle manage the state of the echo-cancel plugin
 | 
						|
    better, making sure run() is not called after deactivate().
 | 
						|
  - Fix some potential memory/fd leaks in client-node.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Improve reading the bound ALSA controls.
 | 
						|
  - The resampler can now also report the number of expected output samples.
 | 
						|
  - The ALSA ACP device objects have some more properties like the card.id
 | 
						|
    and alsa.components. (#3912)
 | 
						|
  - Fix a potential string corruption when parsing JSON strings.
 | 
						|
  - V4l2 now sets the latency on the port. (#3910)
 | 
						|
  - alsa-udev now has an option to expose the device even if busy. (#3914)
 | 
						|
  - Improve null-audio-sink channel handling. (#3931)
 | 
						|
  - v4l2 will now drop the first frame because it often contains wrong
 | 
						|
    timestamps or garbage. (#3910)
 | 
						|
  - A regression in v4l2 was fixed where invalid/empty properties in the
 | 
						|
    filter would make it error early. (#3959)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - The source now falls back to the new pw_buffer time for the timestamps.
 | 
						|
 | 
						|
## Docs
 | 
						|
  - Sync with the master branch.
 | 
						|
 | 
						|
# PipeWire 1.0.4 (2024-03-13)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
 | 
						|
  - Track memfd better to avoid inconsistent memory. Also make sure the
 | 
						|
    mixer info is removed correctly in all cases on destroyed ports.
 | 
						|
  - Correctly handle removed objects in the metadata.
 | 
						|
  - Add an option to set the server and client priorities instead of using
 | 
						|
    a hardcoded value of 88.
 | 
						|
  - The FFADO module has been fixed. Audio and MIDI now works with
 | 
						|
    the same latency as the JACK driver. This has now also been
 | 
						|
    tested with a Focusrite Saffire Pro 14.
 | 
						|
  - The JACK library has seen some important fixes. Some ardour crackling
 | 
						|
    has been fixed when looping and multiple MIDI ports on a client should
 | 
						|
    now work.
 | 
						|
  - Small bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Track memfd better to avoid inconsistent memory. Also make sure the
 | 
						|
    mixer info is removed correctly in all cases on destroyed ports.
 | 
						|
  - Fix Props param emission again in pw_stream. (#3833)
 | 
						|
  - Add MAPPABLE flag to buffer data to indicate that the fd can be
 | 
						|
    mmapped directly. Use this on DMABUF from v4l2. (#3840)
 | 
						|
  - Correctly handle removed object in the metadata.
 | 
						|
  - FreeBSD build and compatibility fixes.
 | 
						|
  - Add an option to set the server and client priorities instead of using
 | 
						|
    a hardcoded value of 88.
 | 
						|
  - Read config overrides in the right order.
 | 
						|
  - Fix PIPEWIRE_QUANTUM rate handling in pw_stream and pw_filter.
 | 
						|
  - Fix pw_context_parse_conf_section(), actually use the conf argument.
 | 
						|
  - A new pw_stream_get_nsec() and pw_filter_get_nsec() function was added
 | 
						|
    to get the current time of the stream/filter without having to assume a
 | 
						|
    particular clock.
 | 
						|
  - A new default.clock.quantum-floor property was added to configure the
 | 
						|
    absolute lowest buffer-size. (#3908)
 | 
						|
 | 
						|
## docs
 | 
						|
  - Many doc updates.
 | 
						|
 | 
						|
## tools
 | 
						|
  - Make sure we always quit pw-cli when the server stops. (#3837)
 | 
						|
  - pw-top now prints all drivers in batch mode. (#3899)
 | 
						|
 | 
						|
## modules
 | 
						|
  - Don't destroy the client in protocol-simple on EAGAIN.
 | 
						|
  - Handle IPv6 better in the RTP modules. Fix IPv6 SAP header
 | 
						|
    parsing. (#3851)
 | 
						|
  - The FFADO module has been fixed. Audio and MIDI now works with
 | 
						|
    the same latency as the JACK driver. This has now also been
 | 
						|
    tested with a Focusrite Saffire Pro 14. (#3558)
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - Make sure the peer_name is filled to avoid protocol errors.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Small resampler tweaks to improve stability of adaptive resampler.
 | 
						|
  - Add ALSA option to control htimestamp autodisable.
 | 
						|
  - Avoid some potential crashes in audioconvert when ports are removed.
 | 
						|
  - Improve HDMI jack detection on some SOCs.
 | 
						|
  - The audioconvert now has a monitor.passthrough option to pass the
 | 
						|
    latency information on the monitor ports. (#3888)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Don't use timeouts when autoconnect=false in pipewiresrc. (#3884)
 | 
						|
  - pipewiresrc and pipewiresink can now be automatically selected as
 | 
						|
    audio source and sink.
 | 
						|
  - An invalid memory access was fixed when destroying the device
 | 
						|
    provider.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Remove properties correctly with the object id, not serial.
 | 
						|
  - Improve sync with the data thread by pausing the core. Also improve
 | 
						|
    handling of port io to avoid invalid buffer access.
 | 
						|
  - Fix PIPEWIRE_QUANTUM rate handling.
 | 
						|
  - Support multiple MIDI input ports per client. (#3901)
 | 
						|
  - The output buffer size is now always correctly set. (#3892)
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - Handle errors from eventfd_create correctly.
 | 
						|
 | 
						|
# PipeWire 1.0.3 (2024-02-02)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix ALSA version check. This should allow the alsa plugin to work again.
 | 
						|
  - Some small fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Escape @DEFAULT_SINK@ in the conf files.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Improve logging in module-pipe-tunnel.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Always recheck rate matching in ALSA when moving drivers. This fixes a
 | 
						|
    potential issue where the adaptive resampler would not be activated in
 | 
						|
    some cases.
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - Fix version check. This should allow the alsa plugin to work again
 | 
						|
    with version 1.0.2.
 | 
						|
 | 
						|
# PipeWire 1.0.2 (2024-01-31)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix v4l2 enumeration with filter. This should fix negotiation in some
 | 
						|
    GStreamer pipelines with capsfilter. Also probe for EXPBUF support
 | 
						|
    before using it.
 | 
						|
  - Fix max-latency property and Buffer param when dealing with small
 | 
						|
    ALSA device buffers. This should fix stuttering with some AMD
 | 
						|
    based soundcards.
 | 
						|
  - More small cleanups an improvements.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Improve netjack2 channel positions.
 | 
						|
  - Improve RAOP module state after suspend/resume. (#3778)
 | 
						|
  - Avoid crash in some LV2 plugins by configuring the Atom ports. (#3815)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Bump libcamera requirements to 0.2.0.
 | 
						|
  - Try to avoid unaligned load exceptions. (#3790)
 | 
						|
  - Fix v4l2 enumeration with filter. (#1793)
 | 
						|
  - Fix max-latency property and Buffer param when dealing with small
 | 
						|
    ALSA device buffers. This should fix stuttering with some AMD
 | 
						|
    based soundcards. (#3744,#3622)
 | 
						|
  - Add a resync.ms option to node.driver to make it possible to resync
 | 
						|
    fast to clock jumps.
 | 
						|
  - Probe for EXPBUF support in v4l2 before using it. (#3821)
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - Also emit change events when the port list change.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Log a more verbose explanation when other soundservers seem to be
 | 
						|
    interfering with bluetooth.
 | 
						|
  - Add quirks for Rockbox Brick. (#3786)
 | 
						|
  - Add quirks for SoundCore mini2. (#2927)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Improve check for the running state of clients. (#3794)
 | 
						|
 | 
						|
# PipeWire 1.0.1 (2024-01-11)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
1.0.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Work around the buggy ALSA backend in libcanberra by forcing the pulse
 | 
						|
    backend in module-x11-bell.
 | 
						|
  - Fix a race in the device info updates in pulse-server.
 | 
						|
  - Fix timing and rate matching in ALSA sequencer.
 | 
						|
  - Improve timing information in JACK and from the ALSA driver.
 | 
						|
  - More small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a build issue when examples where disabled.
 | 
						|
  - Avoid some compiler warnings.
 | 
						|
  - Avoid some bitfield data races. (#3706)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Bump the PTP driver priority. (#3217)
 | 
						|
  - Support the previous "allowed" permission in the access module.
 | 
						|
  - Fix filename leak in module-filter-chain.
 | 
						|
  - Work around the buggy ALSA backend in libcanberra by forcing the pulse
 | 
						|
    backend in module-x11-bell. (#3688)
 | 
						|
  - Fix a race in the device info updates in pulse-server.
 | 
						|
  - Fix compatibility in RAOP. (#3698)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Handle ALSA picth control errors correctly
 | 
						|
  - Clamp buffer-frames correctly. (#3000)
 | 
						|
  - Fix timing and rate matching in ALSA sequencer. (#3657)
 | 
						|
  - Revert a commit that could result in current time in the future in the
 | 
						|
    timing updates.
 | 
						|
  - Improve adapter state checks.
 | 
						|
  - Remove the timer from the ALSA pcm.
 | 
						|
  - Fix timeout in freewheel driver.
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Also handle active ports for monitor sources.
 | 
						|
  - Fix zeroconf-publish format properties.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Improve timing and transport calculations.
 | 
						|
  - Handle -ENOENT from the core and don't error out.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Handle node port removal in the device provider. (#3708)
 | 
						|
  - Improve error handling while connecting.
 | 
						|
  - Fix dts_offset.
 | 
						|
 | 
						|
# PipeWire 1.0.0 (2023-11-26)
 | 
						|
 | 
						|
The PipeWire project is immensely proud to announce the 1.0 release
 | 
						|
of PipeWire.
 | 
						|
 | 
						|
It is API and ABI compatible with previous 0.3.x releases.
 | 
						|
 | 
						|
 "PipeWire represents the next evolution of audio handling for Linux, taking
 | 
						|
 the best of both pro-audio (JACK) and desktop audio servers (PulseAudio) and
 | 
						|
 linking them into a single, seamless, powerful new system."
 | 
						|
    - Paul Davis, JACK and Ardour author
 | 
						|
 | 
						|
 "What exciting times! PipeWire 1.0 is the culmination of 15 years of
 | 
						|
 Linux audio expertise, blending lessons from PulseAudio into a high-performance,
 | 
						|
 flexible, and user-friendly foundation for audio and multimedia on Linux.
 | 
						|
 I'm looking forward to the next decade of progress in the free software
 | 
						|
 consumer and professional audio space!."
 | 
						|
    - Arun Raghavan, PulseAudio developer/maintainer.
 | 
						|
 | 
						|
 "I'm thrilled to witness the first stable release of PipeWire after five years
 | 
						|
 of collaboration with its remarkable community, pushing the boundaries of
 | 
						|
 multimedia integration in the Linux ecosystem one step further.”
 | 
						|
    - George Kiagiadakis, WirePlumber author
 | 
						|
 | 
						|
 "From the beginning of the libcamera project, we have always seen
 | 
						|
 PipeWire as the solution to handle desktop and mobile integration and
 | 
						|
 give a seamless multimedia integration to users while providing security
 | 
						|
 features and resource sharing between applications."
 | 
						|
    - Kieran Bingham, libcamera author
 | 
						|
 | 
						|
Happy Holidays!
 | 
						|
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a memfd/dmabuf leak when uploading buffers while shutting down.
 | 
						|
  - Handle concurrent jack_port_get_buffer() calls because ardour seems to
 | 
						|
    be doing this.
 | 
						|
  - Improve time reporting (less jitter) in ALSA when using IRQ.
 | 
						|
  - Many doc improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Respect PIPEWIRE_DLCLOSE everywhere, remove pw_in_valgrind().
 | 
						|
  - Remove a warning when a client tries to change ignored properties.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Fix a memfd/dmabuf leak when uploading buffers while shutting down.
 | 
						|
  - Fix a potential segfault when copying mix structures. (#3658)
 | 
						|
  - Avoid races in setrlimit in module-rt.
 | 
						|
  - Fix a memory leak in filter-chain.
 | 
						|
  - Set rtp.ptime on senders, not receivers.
 | 
						|
  - The ROC modules were ported to ROC 0.3
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Improve time reporting (less jitter) in ALSA when using IRQ. (#3657)
 | 
						|
  - Add latency param query in libcamera.
 | 
						|
  - Fix some compiler warnings.
 | 
						|
  - The EVL plugin was updated.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - LC3 codec and compatibility improvements.
 | 
						|
 | 
						|
## Pulse server
 | 
						|
  - Fix emission of events when a sink/source state changes. (#3660)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Improve transport and time handling. Use unique ids to make consistent
 | 
						|
    snapshots of the current time and transport.
 | 
						|
  - Avoid enumerating port params that we are not going to use.
 | 
						|
  - Optimize buffer reuse.
 | 
						|
  - Handle concurrent jack_port_get_buffer() calls because ardour seems to
 | 
						|
    be doing this. (#3632)
 | 
						|
 | 
						|
## Docs
 | 
						|
  - Many doc improvements.
 | 
						|
  - Add man pages for pw-dump, pw-loopback, modules, pipewire-pulse.
 | 
						|
  - Manpages are now made with Doxygen.
 | 
						|
  - Add docs for pulse-modules
 | 
						|
 | 
						|
# PipeWire 0.3.85 (2023-11-16)
 | 
						|
 | 
						|
This is the fifth (and last) 1.0 release candidate that is API and ABI
 | 
						|
compatible with previous 0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix an issue where a link could end up paused while not negotiated.
 | 
						|
  - Fix an infinite recursion issue when finding runnable nodes.
 | 
						|
  - Support XDG base directories when loading ACP config.
 | 
						|
  - Fix MIDI event recording preview in Ardour.
 | 
						|
  - Many more small fixes, cleanups and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix an issue where a link could end up paused while not negotiated.
 | 
						|
    (#3619)
 | 
						|
  - Fix an infinite recursion issue when finding runnable nodes by stopping
 | 
						|
    the scan on feedback links around the driver. (#3621)
 | 
						|
  - The system service now has better socket permissions.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Add support for uclamp. This allows the scheduler to make better informed
 | 
						|
    decisions about where tasks should be placed, and what pstate to set
 | 
						|
    for the CPU it is running on.
 | 
						|
  - Emit warnings when applications are not doing the right locking instead
 | 
						|
    of crashing.
 | 
						|
  - Improve media.name for RAOP sinks. (#3801)
 | 
						|
  - Support pause/resume in pipe-tunnel. (#3197)
 | 
						|
  - Remove time rlimit when probing for realtime to avoid SIGXCPU.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Fix a bug where the resampler would be activated even when there is an
 | 
						|
    ALSA pitch element. (#3628)
 | 
						|
  - Improve resume from suspend in ALSA. (#3646)
 | 
						|
  - Add option to expose ALSA controls as prop params.
 | 
						|
  - Support XDG base directories when loading ACP config. This makes it possible
 | 
						|
    to override the ACP config files.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Schedule nodes in the same ISO group together.
 | 
						|
  - More BAP fixes and cleanups.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Fix MIDI events from peer ports. This makes the MIDI event recording preview
 | 
						|
    of Ardour work correctly.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix some error handling in the source and sink.
 | 
						|
 | 
						|
## ALSA plugin
 | 
						|
  - Improve poll descriptor handling. (#3648)
 | 
						|
 | 
						|
## Docs
 | 
						|
  - Many improvements to the layout and organization.
 | 
						|
 | 
						|
# PipeWire 0.3.84 (2023-11-02)
 | 
						|
 | 
						|
This is the fourth 1.0 release candidate that is API and ABI compatible
 | 
						|
with previous 0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression with openal because the queued buffers in the stream
 | 
						|
    were not reported correctly.
 | 
						|
  - Fix a bug in port busy counters that could cause random silent links.
 | 
						|
  - Fix a regression in echo-cancel because it was not reporting its
 | 
						|
    streams as ASYNC.
 | 
						|
  - Fix a JACK regression where not all ports were enumerated in all cases.
 | 
						|
  - Many more fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - pw_stream now reports the queued buffers more accurately. This fixes
 | 
						|
    a regression when using openal. (#3592)
 | 
						|
  - The port busy counters were not updated correctly in some cases. This
 | 
						|
    could lead to negotiation errors and silent links. (#3547)
 | 
						|
  - Ignore latency maximum when forcing rate/quantum. (#3613)
 | 
						|
  - Nodes can now be added to multiple groups and link-groups. (#3612)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The filter-chain now also handles notify port dependencies
 | 
						|
    correctly. (#3596)
 | 
						|
  - Filter-chain has support for new linear, clamp, recip, exp, log, mult,
 | 
						|
    sine builtin plugins.
 | 
						|
  - The echo-cancel module now correctly reports its playback and capture
 | 
						|
    streams as ASYNC to avoid running out of buffers. (#3593)
 | 
						|
  - It is now possible to specify an array of remote names to connect to
 | 
						|
    with the native protocol.
 | 
						|
  - module-rtp-sap and module-rtp-sink now try to bind to the specified
 | 
						|
    interface.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - The alsa plugin now removes the runtime properties such as period-num,
 | 
						|
    period-size and max-latency when suspended. (#3613)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - BAP Locations/Context is now set on endpoints as required by new bluez.
 | 
						|
  - Improve selection of BAP leader.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Add a jack_set_sample_rate() extension function.
 | 
						|
  - Make sure we get the info of all nodes/ports before completing the
 | 
						|
    jack_client_open() operation so that we can enumerate the ports
 | 
						|
    correctly in all cases. (#3618)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix types of metadata in pipewiresink.
 | 
						|
  - Also copy metadata in buffers in all cases.
 | 
						|
  - Fix size allocation in bufferpool for compressed formats.
 | 
						|
  - Don't stop streaming thread when unlinked. (#3620)
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - The ALSA plugin now handles NULL values from mmap_areas. (#3600)
 | 
						|
 | 
						|
# PipeWire 0.3.83 (2023-10-19)
 | 
						|
 | 
						|
This is the third 1.0 release candidate that is API and ABI compatible
 | 
						|
with previous 0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - A quantum change regression was fixed.
 | 
						|
  - Use a 2 socket server now for the manager and the applications
 | 
						|
    with (when wireplumber is updated) different permissions.
 | 
						|
  - Reduce memory usage a little in audioconvert and use fewer buffers.
 | 
						|
  - Some JACK deadlocks were fixed.
 | 
						|
  - More bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix quantum change regression. (#3574)
 | 
						|
  - Use a 2 socket server by default. One for the session-manager and one
 | 
						|
    for applications.
 | 
						|
  - Fix a potential use-after-free in node and device cleanup. (#3588)
 | 
						|
 | 
						|
## modules
 | 
						|
  - Some hardcoded buffer size limits were removed.
 | 
						|
  - Fix ASYNC flag on combined-streams.
 | 
						|
  - Add support for on-demand combined-streams using metadata.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - alsa-udev will now ignore PCMs with the ACP_IGNORE udev environment
 | 
						|
    variable. (#3570)
 | 
						|
  - The audioadapter now uses at least 2 buffers when the follower is
 | 
						|
    async.
 | 
						|
  - The number of buffers used by plugins was tweaked a little. Most
 | 
						|
    plugins now only ask 1 buffer.
 | 
						|
  - Memory usage in audioconvert was reduced.
 | 
						|
  - Fix some unaligned reads and writes and undefined left shifts reported
 | 
						|
    by ASAN. (#3572)
 | 
						|
  - Rework vulkan dependency checking.
 | 
						|
  - Don't try to link ALSA devices when prepare fails. This fixes some
 | 
						|
    crashes.
 | 
						|
  - Fix a stall when the allowed codecs are changed in ALSA.
 | 
						|
  - Improve ALSA rate control for sources to avoid xruns. (#3584)
 | 
						|
  - Try to fix IEC958 TrueHD and DTS playback. (#2284)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improve fallback SCO mtu when the kernel doesn't tell us.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - The fixed buffer size limit was removed.
 | 
						|
  - Add an option to make input buffers writable (default true).
 | 
						|
  - A potential deadlock was fixed when applications lock the process
 | 
						|
    function. (#3585)
 | 
						|
  - Use a separate thread to dispatch notifications to avoid deadlocks.
 | 
						|
    (#3585)
 | 
						|
  - Potentially fix silent export in ardour in some cases. (#3514)
 | 
						|
 | 
						|
# PipeWire 0.3.82 (2023-10-13)
 | 
						|
 | 
						|
This is the second 1.0 release candidate that is API and ABI compatible
 | 
						|
with previous 0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression in some devices when the Pro-Audio profile was selected.
 | 
						|
    Only enable the IRQ based scheduling and device linking in specific
 | 
						|
    safe cases. (#3556)
 | 
						|
  - Improve rate switching. In some cases the graph rate would not switch
 | 
						|
    correctly. (#2929)
 | 
						|
  - Fix regression in alsa wakeups that would cause silence in VMs.
 | 
						|
  - Fix a leak in the SBC codecs for SCO.
 | 
						|
  - More improvements to the RAOP module.
 | 
						|
  - Other small improvements and fixes.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Improve client property checks.
 | 
						|
  - Allow non-power-of-2 quantums when forced.
 | 
						|
  - Improve rate switching. In some cases the graph rate would not switch
 | 
						|
    correctly. (#2929)
 | 
						|
  - The PIPEWIRE_QUANTUM env variable now forces the size and rate in the
 | 
						|
    graph for the duration of the application. The softer PIPEWIRE_LATENCY
 | 
						|
    and PIPEWIRE_RATE can still be used to merely suggest a maximum latency
 | 
						|
    and a rate.
 | 
						|
 | 
						|
## modules
 | 
						|
  - Remove the RTSP FLUSH request in RAOP because it does not seem necessary.
 | 
						|
  - The RAOP module now uses the common RTP stream functions.
 | 
						|
  - Add sockets option to protocol-native to make pipewire listen on multiple
 | 
						|
    sockets.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Clean up some of the log functions.
 | 
						|
  - Add an option in ALSA to disable linking devices together.
 | 
						|
  - Only link pcms together when 1 capture and 1 playback pcm. For more complex
 | 
						|
    devices we can't be sure which ones can be linked. (#3556)
 | 
						|
  - disable tsched only when using linked devices.
 | 
						|
  - Add some extra checks in ALSA to avoid segfaults. (#3554)
 | 
						|
  - Add Tag support to alsa-sink and alsa-source.
 | 
						|
  - Use dynamic pod builder when we can.
 | 
						|
  - Set priority.driver on midi-bridge to allow it as a fallback driver. (#3562)
 | 
						|
  - Fix regression in alsa wakeups. (#3565)
 | 
						|
  - The PTP clock can now be found from the interface in node-driver.
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - Some small cleanups and internal improvements.
 | 
						|
  - Add some memory debugging messages.
 | 
						|
  - Add Tag messages to streams.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Fix a leak in the SBC codecs for SCO.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Patch up midi events in the destination buffer instead of writing to the
 | 
						|
    source buffer. (#3580)
 | 
						|
  - Group all jack clients together to avoid transport issues. (#3562)
 | 
						|
 | 
						|
## ALSA-plugins
 | 
						|
  - Add also.deny option to block alsa clients from opening the PCM.
 | 
						|
 | 
						|
# PipeWire 0.3.81 (2023-10-06)
 | 
						|
 | 
						|
This is the first 1.0 release candidate that is API and ABI compatible
 | 
						|
with previous 0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - jackdbus support is now enabled by default.
 | 
						|
  - IRQ based scheduling in ALSA was improved and enabled by default for
 | 
						|
    Pro-Audio profile. It will also link the pcms together to get lower
 | 
						|
    latency. This now matches what JACK does and gives equal latency to
 | 
						|
    PipeWire for Pro-Audio profiles.
 | 
						|
  - Support both old and new versions of webrtc-audio-processing to make
 | 
						|
    the transition easier.
 | 
						|
  - Forced quantum changes by nodes or metadata will now also force a
 | 
						|
    suspend and resume of the graph, like the rate changes to make sure all
 | 
						|
    nodes adapt to the new quantum. This is important for Pro-Audio nodes
 | 
						|
    that need to reconfigure the hardware to a new period in IRQ based
 | 
						|
    scheduling.
 | 
						|
  - Fix a regression in regex parsing.
 | 
						|
  - Many bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - jackdbus is by default enabled now. The idea is that when jackdbus is
 | 
						|
    installed, the real libjack.so is in the path and we can become a
 | 
						|
    real JACK client.
 | 
						|
  - Forces quantum changes by nodes or metadata will now also force a
 | 
						|
    suspend and resume in the graph, like the rate changes to make sure all
 | 
						|
    nodes adapt to the new quantum. This is important for Pro-Audio nodes
 | 
						|
    that need to reconfigure the hardware to a new period.
 | 
						|
  - The stream now has an EARLY_PROCESS option that can be used to implement
 | 
						|
    custom buffer fill levels. (#3480)
 | 
						|
  - Fix a regression in regex parsing. (#3528)
 | 
						|
  - Fix a bug in position reporting in the driver node. (#3189) (#3544)
 | 
						|
  - Destroying a link will now recalculate the graph correctly.
 | 
						|
  - Fix the rate comparison for finding the best rate in the graph.
 | 
						|
  - Use malloc_trim() when available to release memory. (#1840)
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cat now supports DFF DSD files.
 | 
						|
  - pw-cli avoid some NULL derefs in some cases.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The RAOP sink has seen some cleanups and improvements. It will now ask
 | 
						|
    for feedback every 2 seconds to keep some devices alive.
 | 
						|
  - A bug in filter-chain was fixed where it would fail to apply the gain
 | 
						|
    when mixing just one source.
 | 
						|
  - The filter-chain can now pass the stream volume to a control in the
 | 
						|
    filter-chain graph. (#3434)
 | 
						|
  - Improve volume handling in RAOP sink.
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Some cleanup in the pending_stream handling.
 | 
						|
  - Fix a regression in the event emission code where it failed to emit
 | 
						|
    a changed event when a node was linked. (#3522)
 | 
						|
  - Lower the realtime priority of pulseaudio clients.
 | 
						|
  - Set pulse.module.id on the echo-cancel streams. (#3541)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Support both old and new versions of webrtc-audio-processing to make
 | 
						|
    the transition easier.
 | 
						|
  - The ALSA driver now does the sync of all followers directly from the
 | 
						|
    wakeup event. This results in more stable rate matching.
 | 
						|
  - IRQ based scheduling in ALSA was improved and enabled by default for
 | 
						|
    Pro-Audio profile. It will also link the pcms together to get lower
 | 
						|
    latency. This now matches what JACK does and gives equal latency to
 | 
						|
    PipeWire for Pro-Audio profiles.
 | 
						|
  - GNU/Hurd support was added.
 | 
						|
  - Some improvements to passthrough handling.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improvements to the codec handling when PipeWire is used as Audio
 | 
						|
    Gateway.
 | 
						|
  - Adapt to new Bluez API for BAP devices.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - When the jack library is set in the default library path, avoid using
 | 
						|
    LD_LIBRARY_PATH because this can cause confusion.
 | 
						|
  - Handle clearing the latency on a port.
 | 
						|
  - jack_property now always manages to actually change the metadata because
 | 
						|
    it waits for a roundtrip before exiting.
 | 
						|
 | 
						|
# PipeWire 0.3.80 (2023-09-14)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - A new Tag param was added that allows arbitrary metadata to be transported
 | 
						|
    out-of-band in the graph.
 | 
						|
  - Vulkan DMA buf support was merged.
 | 
						|
  - The echo-canceller was ported to webrtc-audio-processing-1.
 | 
						|
  - Fix a regression in locating monitor sources by id in pulse-server.
 | 
						|
  - Mixer io areas updates are now synchronized correctly with the data
 | 
						|
    thread to avoid potential crashes.
 | 
						|
  - Many more bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Handle driver nodes that refuse to change the quantum or rate.
 | 
						|
  - A new Tag param was added that allows arbitrary metadata to be transported
 | 
						|
    out-of-band in the graph.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The pipe-tunnel source has been reworked to use a ringbuffer and rate
 | 
						|
    adaption to keep the latency constant. It can now also function as a
 | 
						|
    driver to reduce resampling. (#3478)
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cat will now place media properties in Tag params.
 | 
						|
  - pw-mon can now filter props and params.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - ALSA refuses to change quantum and rate when in IRQ mode.
 | 
						|
  - ALSA will now be smarter in selecting the period size for batch devices
 | 
						|
    and will make it depend on the samplerate. (#3444)
 | 
						|
  - Vulkan DMA buf support was merged.
 | 
						|
  - ALSA latency will now be reported in the time domain of the graph.
 | 
						|
  - Add udev based autodetection for compress-offload devices.
 | 
						|
  - The echo-canceller was ported to webrtc-audio-processing-1.
 | 
						|
  - The v4l2 inotify code was rewritten to avoid a use-after-free and by
 | 
						|
    using a separate watch (but same fd) for each device. (#3439)
 | 
						|
  - The tag and latency handling was improved in audioadpter.
 | 
						|
  - Don't use -Ofast on alpha because it can crash on denormalized
 | 
						|
    values. (#3489)
 | 
						|
  - The mixers now synchronize spa_io_buffers updates with the data
 | 
						|
    thread to avoid crashes.
 | 
						|
  - Handle NULL param updates. (#3504)
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Fix a regression in locating monitor sources by id. (#3476)
 | 
						|
  - Add support for use_system_clock_for_timing in module-pipe-sink.
 | 
						|
  - Add support for checking module arguments.
 | 
						|
  - Avoid some useless change events.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Ports are now marked as physical, which makes the bluetooth devices show
 | 
						|
    up as hardware devices in Ardour and other JACK apps. (#3418)
 | 
						|
  - Some fixes for LE audio support (#3479)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Also emit unregister notify even when suppressed when creating the
 | 
						|
    client.
 | 
						|
  - The notify callbacks now match JACK2 behaviour more.
 | 
						|
  - The mixer io areas are updated and handled safely now to avoid
 | 
						|
    crashes. (#3506)
 | 
						|
 | 
						|
# PipeWire 0.3.79 (2023-08-29)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression in suspend that could cause silence.
 | 
						|
  - Fix a regression in JACK port registration that could cause all kinds of
 | 
						|
    JACK problems. (#3485)
 | 
						|
  - Fix a typo in the neon sample conversion functions that could cause
 | 
						|
    distortion.
 | 
						|
  - Add BAP broadcast source and sink support.
 | 
						|
  - pw-top now has a batch mode to dump the output to stdout.
 | 
						|
  - Many more bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a regression in shutdown where a node might not first suspend
 | 
						|
    properly. This cause loss of sound in some cases. (#3378)
 | 
						|
  - Failure to compile a regular expression in the config file will now
 | 
						|
    be reported and ! can be used to negate the match. (#3460)
 | 
						|
  - Fix a regression where some nodes might not set running in some
 | 
						|
    cases.
 | 
						|
  - Nodes are now suspended before the format is cleared, which might
 | 
						|
    fix some crashes.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-top now has a batch mode to dump the output to stdout.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - The queued samples in audioconvert are now correctly reported in the
 | 
						|
    delay. (#3454)
 | 
						|
  - Make it easier to add a custom profile in ACP.
 | 
						|
  - Fix a typo in the neon sample conversion functions that could cause
 | 
						|
    distortion. (#3463)
 | 
						|
  - device.profile.pro=true is added for pro audio nodes.
 | 
						|
  - An xrun counter was added to spa_io_clock to detect and track skipped
 | 
						|
    data because of xruns.
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - Add alsa-sink and alsa-source modules. (#3456)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Fix a regression where only the BAP off profile is shown.
 | 
						|
  - Add BAP broadcast source and sink support.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Also emit a latency notify when the buffer size changes.
 | 
						|
  - Fix a regression in JACK port registration. (#3485)
 | 
						|
  - jack_port_tie() is now supported.
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - Improve property handling, support lists and ranges in addition to
 | 
						|
    fixed values. (#3451)
 | 
						|
 | 
						|
# PipeWire 0.3.78 (2023-08-22)
 | 
						|
 | 
						|
This is a small bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - An old regression was fixed with where some nodes would not run.
 | 
						|
  - A regression was fixed where removed events would not be shown in some
 | 
						|
    cases. This would result in duplicate entries in audio clients.
 | 
						|
  - Fix an off-by-one in the vban audio receiver. Tweak the rate adaption
 | 
						|
    a little.
 | 
						|
  - ACP will now set a UCM verb before probing the pro-audio devices.
 | 
						|
  - More bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - An old regression was fixed with where some nodes would not run. (#3405)
 | 
						|
  - Suspend was improved a little to avoid races when the session manager would
 | 
						|
    suspend right when a driver was starting.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - module-rtp-sap does not use the deprecated inet_aton anymore.
 | 
						|
  - Fix an off-by-one in the vban audio receiver. Tweak the rate adaption
 | 
						|
    a little. (#3380)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - ACP will now set a UCM verb before probing the pro-audio devices. (#3407)
 | 
						|
  - The mandatory flag will be set now on the video modifiers.
 | 
						|
  - EVL was updated to Xenomai4 r46 and xbuf creation was improved.
 | 
						|
  - An option was added to force colors in the log even when logging to !tty.
 | 
						|
  - The return type of spa_pod_builder_control() was fixed.
 | 
						|
  - inotify errors are handled better now. (#3439)
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - A regression was fixed where removed events would not be shown in some
 | 
						|
    cases. (#3414)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Improve compatibility with more devices, avoid reusing the same transport
 | 
						|
    for different media-sink instances to avoid encoder resets.
 | 
						|
  - Improve enumeration of codec profiles for BAP and A2DP.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Ensure we can't iterate ports from a deactivated client. Also make sure
 | 
						|
    the JACK clients with the node.always-process=false always show their
 | 
						|
    ports. (#3416)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - A potential crash was fixed in the device provider when stopping.
 | 
						|
 | 
						|
# PipeWire 0.3.77 (2023-08-04)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a bug in ALSA source where the available number of samples was miscaluclated
 | 
						|
    and resulted in xruns in some cases.
 | 
						|
  - A new L permission was added to make it possible to force a link between
 | 
						|
    nodes even when the nodes can't see each other.
 | 
						|
  - The VBAN module now supports midi send and receive as well.
 | 
						|
  - Many cleanups and small fixes.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Global objects now only show permissions that apply to them. The permissions
 | 
						|
    required to perform various API calls are documented.
 | 
						|
  - A new L permission was added to make it possible to force a link between
 | 
						|
    nodes even when the nodes can't see each other.
 | 
						|
  - Config files need to end with .conf.
 | 
						|
  - The client.api is added the to global properties of a node.
 | 
						|
 | 
						|
## modules
 | 
						|
  - The VBAN module now supports midi send and receive as well.
 | 
						|
  - Fix module-profiler alignment and make sure we don't overrun our buffers with
 | 
						|
    many nodes.
 | 
						|
  - Protect libcanberra calls with a mutex because it is not thread safe. (#2834)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Support older compilers for spa_clear_ptr().
 | 
						|
  - Fix a bug in ALSA source where the available number of samples was miscaluclated
 | 
						|
    and resulted in xruns. (#3395)
 | 
						|
  - Don't set inotify on /dev but on the videoX devices directly. Setting inotify
 | 
						|
    on /dev would cause a lot of spurious wakeups and lock contention in the
 | 
						|
    fsnotify subsystem on some benchmarks.
 | 
						|
  - Audioconvert now rate limits the warnings when it runs out of buffers. (#3384)
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - Some bugs and inconsistencies were fixed in device lookup.
 | 
						|
  - Improve subscribe event emission, detect changes to the sink or the monitor
 | 
						|
    and send the right sink/source event. (#3388)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - The libjack.so now has a minor version of 3 and a micro version of the pipewire
 | 
						|
    version.
 | 
						|
  - JACK clients will now see portregistration from other jack clients when they
 | 
						|
    activate/deactivate like real JACK. (#3260)
 | 
						|
 | 
						|
## bluetooth
 | 
						|
  - Use some more autoptr cleanups, fix some leaks.
 | 
						|
 | 
						|
# PipeWire 0.3.76 (2023-07-28)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression that would cause the MPV pipewire backend to fail because
 | 
						|
    of a spurious thread-loop signal.
 | 
						|
  - Fix a crash when DBus is not found.
 | 
						|
  - ALSA hires timestamps are now disabled by default.
 | 
						|
  - Some more fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - A new option was added to pw-thread-loop to signal when the thread starts.
 | 
						|
    This is only used in module-rt to avoid regressions in mpv. (#3374)
 | 
						|
  - Fix a compilation problem.
 | 
						|
  - Stream flags now only set the properties when not already set. This fixes
 | 
						|
    a regression with node autoconnect. (#3382)
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cat will now stop when the stream is disconnected. (#2731)
 | 
						|
  - Improve the pw-cat man page, mention that stdin/stdout handling is only
 | 
						|
    on raw data.
 | 
						|
 | 
						|
## modules
 | 
						|
  - module-rt will now not crash when dbus is not available but error out as
 | 
						|
    before.
 | 
						|
  - A new VBAN (vb-audio.com) sender and receiver was added. (#3380)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Add an option in audioconvert to disable volume updates. (#3361)
 | 
						|
  - ALSA hires timestamps are disabled by default because many drivers seem to
 | 
						|
    give wrong timestamps and cause extra delay.
 | 
						|
 | 
						|
## bluetooth
 | 
						|
  - LE Audio support is now enabled by default when liblc3 is available now that
 | 
						|
    bluez has support for detecting the hardware features.
 | 
						|
 | 
						|
# PipeWire 0.3.75 (2023-07-21)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Link permissions between nodes are now enforced. This avoids potential portal
 | 
						|
    managed screencast nodes to link to the camera even though it was not assigned
 | 
						|
    permissions to do so by the session manager.
 | 
						|
  - Libcamera and v4l2 devices now have properties so that duplicates can be
 | 
						|
    filtered out by the session manager.
 | 
						|
  - A bug with draining was fixed where a buffer would be marked EMPTY and would not
 | 
						|
    play when it contained drained samples. (#3365)
 | 
						|
  - Many fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Permissions for links between nodes are now enforced. The link will now check
 | 
						|
    that the owner clients of the nodes can see each other before allowing the link.
 | 
						|
    This avoids screensharing clients to accidentally being linked to the camera
 | 
						|
    nodes by the session manager. A side effect is that patchbay tools will no longer
 | 
						|
    be able to link portal managed screencast nodes to the camera, for this we need
 | 
						|
    a new permission for those patchbay clients. (wireplumber#218)
 | 
						|
  - The stream.rules/filter.rules are now evaluated when connecting the stream/filter
 | 
						|
    so that more properties can be matched. (#3355)
 | 
						|
  - Move some internal events from the context to the nodes to better handle per-node
 | 
						|
    threads in the future.
 | 
						|
  - The thread-loop will now signal when the thread is started.
 | 
						|
 | 
						|
## modules
 | 
						|
  - A timestamp workaround in module-raop was reverted because it does not work
 | 
						|
    in all cases. Instead latency was increased to 1.5 seconds, which also makes
 | 
						|
    the problematic device in question work. (#3247)
 | 
						|
  - The profiler module was reworked a bit to use the new node realtime events. It
 | 
						|
    should now also handle dynamically added and removed drivers.
 | 
						|
  - The module-rt now does the rtkit calls from a separate thread so that it does
 | 
						|
    not block the main thread. This could cause deadlocks during startup in some
 | 
						|
    cases. (#3357)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Atomic operation macros were move from internal pipewire API to public API.
 | 
						|
  - The video-info structure now has a new SPA_VIDEO_FLAG_MODIFIER_FIXATION_REQUIRED
 | 
						|
    flag to instruct the application to fixate the modifiers. This simplifies some
 | 
						|
    logic in applications a lot.
 | 
						|
  - The libcamera and v4l2 nodes now have properties to enumerate the device id
 | 
						|
    they are using. This can be used to match v4l2 devices and libcamera devices
 | 
						|
    and filter out duplicates.
 | 
						|
  - A bug with draining was fixed where a buffer would be marked EMPTY and would not
 | 
						|
    play when it contained drained samples. (#3365)
 | 
						|
 | 
						|
# PipeWire 0.3.74 (2023-07-12)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a critical bug where audio to bluetooth devices would cut out
 | 
						|
    randomly. (#3316)
 | 
						|
  - Improve RAOP compatibility.
 | 
						|
  - Avoid crashes after an update.
 | 
						|
  - Small fixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Mix info on port is now created explicitly.
 | 
						|
  - Remove the node as a driver peer when stopping. This caused some problem
 | 
						|
    with playback on and other remote bluetooth devices. (#3316)
 | 
						|
  - Work on avoiding crashes when loading new modules that use internal API
 | 
						|
    with old libpipewire. This is typical after an update where the old library is
 | 
						|
    still loaded by an application but when a new stream is created, updated
 | 
						|
    modules are loaded. (#3243)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The RTP source module now has an option to ignore the SSRC, which is
 | 
						|
    useful to continue to receive the stream when the sender is restarted.
 | 
						|
  - The native protocol will refuse to load twice now instead of silently
 | 
						|
    ignoring the error.
 | 
						|
  - module-raop is compatible with more devices. (#3247)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - plugins will now warn when running out of buffers. This is always a bad
 | 
						|
    thing.
 | 
						|
  - Merge scope based cleanup macros.
 | 
						|
  - Add ratelimit function.
 | 
						|
 | 
						|
# PipeWire 0.3.73 (2023-07-06)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fixes an ALSA resume after suspend error.
 | 
						|
  - Handle and disable seemingly wrong hires timestamps from ALSA.
 | 
						|
  - Filter-chain now has loadable plugin modules. The LV2 and sofa plugins are
 | 
						|
    moved to a separate .so file to make things more modular.
 | 
						|
  - Rate changes in the graph should now be handled more gracefully by loopback
 | 
						|
    and filter-chain.
 | 
						|
  - A regression in the rtp-sap module was fixed where it would in some cases
 | 
						|
    fail to start.
 | 
						|
  - A potential crash in the peaks resampler was fixed.
 | 
						|
  - Many cleanups and other small bug fixes.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a potential segfault when no fallback driver was set in the config.
 | 
						|
  - Improve OPUS detection.
 | 
						|
  - Add ASYNC flag to pw-filter and pw-stream when queue/dequeue is not called
 | 
						|
    from the process function. This ensure we allocate an extra buffer.
 | 
						|
  - Discard pending process callbacks when disconnecting. (#3314)
 | 
						|
  - Cleanups and improvements to the debug environment variable parsing.
 | 
						|
  - The graph rate was tweaked to better handle very low rates such as those
 | 
						|
    requested by pavucontrol when it does the signal monitoring.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - An example filter module was added.
 | 
						|
  - Filter-chain and loopback now disable the resamplers if no rate is specified
 | 
						|
    and will always follow the graph rate.
 | 
						|
  - Improve setup of filter-chain. The graph is now created when starting
 | 
						|
    because this ensure the target graph rate is known.
 | 
						|
  - Filter-chain can now link notify ports to control ports in the graph.
 | 
						|
  - Filter-chain now has loadable plugin modules. The LV2 and sofa plugins are
 | 
						|
    moved to a separate .so file.
 | 
						|
  - A regression in the rtp-sap module was fixed where it would in some cases
 | 
						|
    fail to start.
 | 
						|
  - Module-rt now has options to disable rlimits, portal and rtkit.
 | 
						|
  - module-raop-discover now has an options to set the latency. (#3247)
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cat now supports overriding all stream properties.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Disable rate negotiation when the resampler is disabled. We will always
 | 
						|
    follow the graph rate. 
 | 
						|
  - Set device.icon property for UCM ports as well.
 | 
						|
  - Improve ALSA recover when using hires timestamps. This fixes some problems
 | 
						|
    after resume from suspend. (#3315)
 | 
						|
  - ALSA will now warn and disable hires timestamp when they seem wrong.
 | 
						|
    They can also be disabled manually with a property.
 | 
						|
  - V4l2 will now gracefully handle ENOTTY when enumerating frame sizes and
 | 
						|
    frame rates. (#3325)
 | 
						|
  - A potential crash in the peaks resampler was fixed. (#3320)
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - A client crash in pavucontrol is avoided by always setting a card name.
 | 
						|
  - The graph rate is now taken correctly when using the FIX flags. (#3317)
 | 
						|
  - An option was added to ignore the FIX flags of a stream. Also the
 | 
						|
    documentation for those options was updated. (#3317)
 | 
						|
  - module-raop-discover now support latency_msec. (#3247)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Remove an assert and issue a warning/recover instead when a buffer is too
 | 
						|
    small.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - The device provider does locking when destroying the registry.
 | 
						|
 | 
						|
# PipeWire 0.3.72 (2023-06-26)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a critical bug that would refuse to update the samplerate or
 | 
						|
    buffersize in JACK clients. (#3226)
 | 
						|
  - A new module-netjack2-driver and module-netjack2-manager were added
 | 
						|
    that are compatible with NETJACK2. This allows PipeWire to become
 | 
						|
    a NETJACK2 manager or a driver between JACK2 or PipeWire servers.
 | 
						|
  - Support was added for firewire devices with FFADO. This is untested
 | 
						|
    for now and MIDI is not implemented yet.
 | 
						|
  - The node scheduling was optimized some more. External drivers are now
 | 
						|
    as efficient as in-server ones. This should improve performance of
 | 
						|
    various drivers such as bluetooth and JACK based drivers.
 | 
						|
  - Many, many bug fixes and a ton of improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - pw-filter can now be used to write sinks and sources.
 | 
						|
  - The node activation for drivers was changed. The driver now does not
 | 
						|
    need to go to the server to start the processing cycle. This makes
 | 
						|
    out-of-server drivers as efficient as in-server drivers.
 | 
						|
  - Don't try to use drivers with 0 priority as fallback drivers. This
 | 
						|
    avoids making the screencast driver a driver for audio. (#3219)
 | 
						|
  - Improve xrun count reporting in pw-top and the profiler. Now each
 | 
						|
    node has their own xrun counter updated when it fails to complete
 | 
						|
    processing during the cycle.
 | 
						|
  - pw-filter now also has support for TRIGGER.
 | 
						|
  - A potential fd leak was found when fds were send to a zombie client.
 | 
						|
    (#1840)
 | 
						|
  - Fix a bug where monitor or capture streams were logged twice in the
 | 
						|
    profiler. (#3278)
 | 
						|
  - Remove stream hooks safely. (#3251)
 | 
						|
  - A bug in serialization of container properties was fixed. This could
 | 
						|
    result in truncated property values. (#3290)
 | 
						|
  - The PIPEWIRE_AUTOCONNECT environment variable now always overrides the
 | 
						|
    autoconnect settings of streams. (#3299)
 | 
						|
  - Node, port and link destroy now avoids some useless work.
 | 
						|
  - Port will now try to renegotiate a new format when idle. (#3266)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The module-sap now is more compatible with AES67.
 | 
						|
  - A new FFADO driver module was added. This is completely untested because
 | 
						|
    of lack of hardware. Please test and report issues.
 | 
						|
  - A new NETJACK2 driver and a NETJACK2 manager module were added. These
 | 
						|
    should be drop in replacements for the JACK2 parts.
 | 
						|
  - The RAOP discover module now tries harder to only list devices once.
 | 
						|
  - The zeroconf discover module now tries harder to only list devices once.
 | 
						|
  - The RAOP sink module now handles latency better and is compatible with
 | 
						|
    some more devices. (#3247, #3282)
 | 
						|
  - The loopback and filter-chain modules now always dequeue the last input
 | 
						|
    buffer to avoid stuttering in some cases. (#3276)
 | 
						|
  - The SPA node factory module can now also export nodes. This is used to
 | 
						|
    export the PTP clock from the AES67 config file.
 | 
						|
  - A bug in module-jack-tunnel was fixed that would cause stuttering and
 | 
						|
    corrupted output in some cases. (#3255)
 | 
						|
  - The resampler is now disabled in module-loopback and filter-chain when
 | 
						|
    the samplerate is set to follow the graph rate. (#2969)
 | 
						|
  - The way the mixer peer is sent to clients was improved. It is now also
 | 
						|
    possible to let a remote node know about mixer port removes, which
 | 
						|
    can avoid memory leaks and some code simplifications.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Monitor ports now report latency correctly.
 | 
						|
  - The ALSA plugin now uses htimestamp to get a more accurate ringbuffer
 | 
						|
    position to estimate the clock skew.
 | 
						|
  - The channelmixer now has min/max-volume settings to limit or fix the
 | 
						|
    volume.
 | 
						|
  - The ALSA plugin can now control the playback and capture rate of USB
 | 
						|
    gadgets. This can avoid resampling and instead use the USB feedback
 | 
						|
    to control the rate.
 | 
						|
  - The ALSA output to multiple devices has been improved, some lockups
 | 
						|
    are avoided when the device ringbuffer is full.
 | 
						|
  - The compress-offload sink has improved negotiation.
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - Only try to use GSettings when the schema exists.
 | 
						|
  - @DEFAULT_SOURCE@, @DEFAULT_SINK@ and @DEFAULT_MONITOR@ are now correctly
 | 
						|
    handled as targets in playback and capture streams. (#3284)
 | 
						|
  - 2 new quirks are added to disable volume updates on sinks/sources.
 | 
						|
    (#1517)
 | 
						|
  - The virtual-sink and virtual-source modules were added. These are really
 | 
						|
    example modules but actually also work and are useful on PulseAudio so
 | 
						|
    implement them as well.
 | 
						|
  - Fix initial stream volumes. (#3306)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Only register A2DP or BAP when we have codecs.
 | 
						|
  - Include codec into the media.name
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Fix a critical bug that would refuse to update the samplerate or
 | 
						|
    buffersize. (#3226)
 | 
						|
  - Improve updates of samplerate/buffersize, delay the updates until the
 | 
						|
    client is activated. (#3297)
 | 
						|
  - Use the new mix-info updates to simplify the mixer setup and peer
 | 
						|
    detection.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fill default strides instead of 0 on pipewire video buffers. (#3236)
 | 
						|
 | 
						|
# PipeWire 0.3.71 (2023-05-17)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - A new zero-latency jackdbus bridge was added. This works similar to what
 | 
						|
    PulseAudio has to offer and creates a sink/source when jackdbus is
 | 
						|
    started. It is however much more efficient and runs the complete PipeWire
 | 
						|
    graph as a synchronous JACK client with no added latency.
 | 
						|
  - Many performance improvements. Activation of remote nodes is more
 | 
						|
    efficient, fewer eventfds are required on the clients, less callback
 | 
						|
    overhead in performance critical paths and an optimized poll function
 | 
						|
    was added. This was mainly driven by the jackdbus module to get the lowest
 | 
						|
    possible overhead when running the graph.
 | 
						|
  - The JACK notify callback implementation was reworked to emulate better what
 | 
						|
    JACK does, improving compatibility with ardour7 and the JACK stress test.
 | 
						|
  - More work on BAP devices. Device latency is now passed on to
 | 
						|
    applications also for multi-device headsets, and channel allocation
 | 
						|
    is handled better.
 | 
						|
  - Many more improvements and bugfixes.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Remove the hardcoded limit on io_areas. This is used to link nodes together
 | 
						|
    and exchange buffers, it was limited to 2048 but now dynamically scales
 | 
						|
    based on requirements.
 | 
						|
  - Rate and quantum changes are now applied correctly in more cases. (#3159)
 | 
						|
  - Updates to client-node to more efficiently process the driver.
 | 
						|
  - The profiler information was improved to be more accurate. It should
 | 
						|
    now work better for remote drivers.
 | 
						|
  - Some potential memory map errors were fixed in the protocol because in some
 | 
						|
    case with large messages, some fds were closed too soon.
 | 
						|
  - pw-filter now implements the pw_filter_set_active() method.
 | 
						|
  - A potential out-of-buffers case was fixed in capture pw-streams where buffers
 | 
						|
    were not moved to the recycle queue when the node suspended.
 | 
						|
  - Nodes are now always woken up with the eventfd. Previously there were
 | 
						|
    some optimizations in the server to directly call into the node process
 | 
						|
    function but that optimization is not necessary. Without this optimization
 | 
						|
    it is now possible to run nodes in different threads.
 | 
						|
  - pw-stream trigger is now implemented correctly in all cases.
 | 
						|
  - Remote nodes now use one eventfd less because they get triggered with the
 | 
						|
    node eventfd directly.
 | 
						|
  - Monitor ports are now ignored in latency updates.
 | 
						|
  - A potential race when reporting an error to a client was fixed. (#3192)
 | 
						|
  - Fix a bug where always_process nodes would sometimes IDLE. (#3189)
 | 
						|
  - Optimize peer activation. Nodes are now activated more efficiently and
 | 
						|
    independent of the number of links. It also reduces the number of eventfds
 | 
						|
    and memory in remote clients.
 | 
						|
  - A bug in property serialization was fixed. Values with spaces would only
 | 
						|
    serialize the first part of the value.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - Correctly handle the echo-canceler plugin init method fallback. The
 | 
						|
    samplerate was not correctly configured. This is only a regression for people
 | 
						|
    that have external echo-canceler plugins.
 | 
						|
  - RAOP sink now only sets the volume on the remote end when the stream is
 | 
						|
    recording. (#3175)
 | 
						|
  - RAOP discover now tries to deduplicate entries from the same host.
 | 
						|
  - A new zero-latency jackdbus bridge was added. This works similar to what
 | 
						|
    pulseaudio has to offer and creates a sink/source when jackdbus is
 | 
						|
    started. It is however much more efficient and runs the complete PipeWire
 | 
						|
    graph as a synchronous JACK client.
 | 
						|
  - The access module uses a more secure way to check the application
 | 
						|
    executable.
 | 
						|
  - module-combine-stream now has configurable delay and latency for each
 | 
						|
    stream. This can be used to align sinks/sources with different latencies.
 | 
						|
  - A potential crash in module-pulse-tunnel was fixed when shutting down.
 | 
						|
    (#3199)
 | 
						|
  - Module-rt will now clamp the nice value to the min allowed value to avoid
 | 
						|
    errors from rtkit. (#3186)
 | 
						|
  - Fix a bug with the session counters in module-rtp-sap. Also use the right
 | 
						|
    format for L24. Improve the AES67 example config.
 | 
						|
  - Improve some warning and info messages in module-rt. (#3194)
 | 
						|
  - module-rtp-session should now do something when started without arguments.
 | 
						|
  - A potential crash in module-rtp-session was fixed. (#3217)
 | 
						|
  - module-filter-chain has better error reporting when a convolver fails to
 | 
						|
    load. (#3223)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - Move some things around to avoid compiler warnings. (#3171)
 | 
						|
  - Increase mixer ports. Reorganize some things and bump mixer input ports
 | 
						|
    from 128 to 512.
 | 
						|
  - Fix a potential crash when a node is scheduled before it completes
 | 
						|
    the setup.
 | 
						|
  - The JACK sink and source SPA plugins have seen some improvements.
 | 
						|
  - Allow the peaks resampler still if we disabled resampling.
 | 
						|
  - Perform more cleanup in audioadapter when in error.
 | 
						|
  - An optimized non-cancellable loop implementation was added.
 | 
						|
  - Callbacks were optimized with a _fast() varsion that doesn't check the
 | 
						|
    version and method. When this check is performed earlier, it can
 | 
						|
    be skipped in performance critical places.
 | 
						|
  - Some of the callbacks and system methods are now using the fast function
 | 
						|
    calls in critical paths.
 | 
						|
  - A potential division by zero was fixed in the ALSA plugins.
 | 
						|
  - Improve rate and quantum when starting audioconvert.
 | 
						|
  - Make it possible to override node.driver in the SPA null-audio-driver.
 | 
						|
    (#3220)
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - The audio info parameter parsing was refactored and improved.
 | 
						|
  - Fix some races with clients exiting when playing samples.
 | 
						|
  - An option was added to change or disable the dbus name registration.
 | 
						|
    (#2987)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Implement battery reporting using AT+XEVENT.
 | 
						|
  - Disable hardware volume for 3M WorkTunes.
 | 
						|
  - Implement BAP audio locations (channel positions) by using the new
 | 
						|
    bluez properties.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - Fix some errors reported by JACK test.cpp. (#2638)
 | 
						|
  - Add jack.show-midi option to show/hide midi ports.
 | 
						|
  - Add jack.max-client-ports option. JACK also has a port limit and so
 | 
						|
    PipeWire needs it as well to make the tests happy.
 | 
						|
  - Call the shutdown callback only when the server stopped, not when there
 | 
						|
    is a random error. (#3070)
 | 
						|
  - Avoid registering the same port name twice.
 | 
						|
  - Call port registration callbacks in activate/deactivate.
 | 
						|
  - Improve jack_port_connected().
 | 
						|
  - Improve some error reporting.
 | 
						|
  - The JACK headers were updated to a newer version.
 | 
						|
  - JACK callbacks are now managed with an event queue to simulate
 | 
						|
    more what JACK does. This avoids emitting callbacks when a method is blocking
 | 
						|
    for a reply and causing deadlocks. (#3183)
 | 
						|
  - Assign unique names to JACK clients. (#2833)
 | 
						|
  - Fix a potential crash when the thread_utils was used after free.
 | 
						|
  - Aliases are now not filled in by default to improve JACK compatibility.
 | 
						|
    (#3154)
 | 
						|
 | 
						|
# ALSA
 | 
						|
  - The ALSA plugin will now wait for negotiation to complete or an error
 | 
						|
    before _prepare() completes. This makes more applications deal correctly
 | 
						|
    with the potential errors.
 | 
						|
 | 
						|
# Docs
 | 
						|
  - A new document about how scheduling is implemented was added.
 | 
						|
  - Update the pw-cli man page. (#2988)
 | 
						|
  - Document the SPA Pod serialization.
 | 
						|
  - Document the PipeWire native protocol.
 | 
						|
 | 
						|
# PipeWire 0.3.70 (2023-04-20)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression in the scheduler that could keep some nodes IDLE.
 | 
						|
  - Fix a regression in the biquad filters in filter-chain.
 | 
						|
  - Fix a regression and potential crash in the ALSA mixer probing.
 | 
						|
  - Fix a regression in pipewiresrc with timestamps that could cause cheese
 | 
						|
    to record video with wrong timestamps.
 | 
						|
  - Beamforming support was enabled in the echo-canceler.
 | 
						|
  - pulse-tunnel and raop-sink will now proxy local volume changes to the
 | 
						|
    remote end.
 | 
						|
  - More bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a bug in the graph scheduler where some nodes might stay IDLE in
 | 
						|
    some cases (like when connecting the source of the echo-canceler to the
 | 
						|
    sink).
 | 
						|
  - pw-metadata can now be created from the factory with initial values for
 | 
						|
    the metadata. (#3076)
 | 
						|
  - Conditions were added to the pipewire config file to make it possible to
 | 
						|
    configure the access module and the exec sections.
 | 
						|
  - Support was added in pw-stream to intercept and override properties for
 | 
						|
    the adapter. This can be used to implement custom volume control, for
 | 
						|
    example.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-metadata can now list all available metadata objects with the -l
 | 
						|
    option.
 | 
						|
  - A new pw-config tool was added to debug configuration file loading and
 | 
						|
    parsing.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The webrtc echo canceler now supports beamforming. You can provide the
 | 
						|
    coordinates of the microphones and let webrtc perform beamforming on
 | 
						|
    the captured samples to improve quality and remove noise.
 | 
						|
  - Fix a regression in the filter-chain with biquad filters. (#3161) and
 | 
						|
    improve error reporting.
 | 
						|
  - The pulse-tunnel will now proxy the volume changes to the remote end.
 | 
						|
  - The RAOP sink will now send volume parameters to control the volume
 | 
						|
    remotely. (#2061)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - One ALSA commit was not correctly reverted and might cause crashes.
 | 
						|
  - The ALSA sink and source now calculate the ALSA ringbuffer memory
 | 
						|
    location more correctly which might improve compatibility with some
 | 
						|
    hardware.
 | 
						|
  - v4l2 now sets the values of the controls in the Props param.
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - The echo-canceler aec_args are now parsed like they would be under
 | 
						|
    pulseaudio.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - More work on synchronizing BAP devices.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - The GStreamer source can now renegotiate the format when it changes.
 | 
						|
  - The GStreamer source now uses the BaseSrc clocking code to implement
 | 
						|
    the clock and timing code.
 | 
						|
 | 
						|
# PipeWire 0.3.69 (2023-04-13)
 | 
						|
 | 
						|
This is a quick bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Reverted the UCM changes, they seem to cause regressions causing audio
 | 
						|
    to be muted in some cases.
 | 
						|
  - Fix a regression in the scheduler where a driver node might not be marked
 | 
						|
    runnable in some cases, like when echo-cancel is used. (#3145)
 | 
						|
  - Handle links from the driver to itself. This makes the midi bridge work
 | 
						|
    again. (#3153)
 | 
						|
  - ALSA rate matching for sources was fixed. It would previously wait too
 | 
						|
    long for rate matching and then cause drift. This should reduce
 | 
						|
    crackling and stuttering when capturing in low latency.
 | 
						|
  - Fix the GStreamer clock to make cheese video recording work again. (#3149)
 | 
						|
  - More fixes and improvements.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Fix a regression in the scheduler where a driver node might not be marked
 | 
						|
    runnable in some cases, like when echo-cancel is used. (#3145)
 | 
						|
  - Handle links from the driver to itself. This makes the midi bridge work
 | 
						|
    again. (#3153)
 | 
						|
  - Some man pages were improved.
 | 
						|
  - Fix a potential crash when thread-loop is destroyed before the loop.
 | 
						|
    (#3150)
 | 
						|
 | 
						|
## Modules
 | 
						|
  - A new raw biquad filter was added to filter-chain. You can manually set the
 | 
						|
    6 parameters and you can use this to create custom filters per sample rate.
 | 
						|
    (#3139)
 | 
						|
  - The echo-canceler now supports different channels for the capture and playback
 | 
						|
    streams.
 | 
						|
 | 
						|
## SPA
 | 
						|
  - A SB Audigy specific profile set was added to make better use of the
 | 
						|
    controls. (#2934)
 | 
						|
  - More ALSA IRQ based scheduling improvements.
 | 
						|
  - ALSA rate matching for sources was fixed. It would previously wait too
 | 
						|
    long for rate matching and then cause drift. This should reduce
 | 
						|
    crackling and stuttering when capturing in low latency.
 | 
						|
  - The echo-cancel plugin API has a new method to make it possible to have
 | 
						|
    different channels for capture, source and playback.
 | 
						|
  - Reverted the UCM changes, they seem to cause regressions causing audio
 | 
						|
    to be muted in some cases.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Many more BAP fixes and improvements. Devices are now created as a set
 | 
						|
    and can be combined into one device by the session manager.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Fix the GStreamer clock to make cheese video recording work again. (#3149)
 | 
						|
 | 
						|
# PipeWire 0.3.68 (2023-04-06)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
This release contains a huge number of changes, some of which might cause
 | 
						|
regressions. Please report anything that seems to fail after the upgrade.
 | 
						|
UCM devices in particular might have changed names, profiles and ports that
 | 
						|
might require changes in custom scripts.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Symbolic links to the pipewire binary are now used instead of recompiling
 | 
						|
    the same binary multiple times.
 | 
						|
  - Changes to the graph scheduler related to quantum/rate updates and
 | 
						|
    calculation of the node states. Things should start and switch between
 | 
						|
    quantums and rates more smoothly now and especially virtual devices should
 | 
						|
    now only run when required.
 | 
						|
  - A new RTP session module was added. This uses the Apple MIDI protocol
 | 
						|
    to configure low-latency bidirectional MIDI (and with a PipeWire specific
 | 
						|
    extension, also audio) between machines. OPUS encoding was added to the
 | 
						|
    RTP formats. The SAP module was separated from the rtp-sink/source module
 | 
						|
    to make it more usable.
 | 
						|
  - A new runtime debug property was added to all streams and nodes to trigger
 | 
						|
    a save of the raw samples to a wav file. Support for this has also been
 | 
						|
    added to the echo-canceler to debug potential issues.
 | 
						|
  - Module pulse-tunnel has improved rate matching and synchronization
 | 
						|
    support. It should also not drift anymore for capture devices.
 | 
						|
  - The link-factory now ignores by default the link.passive property. This means
 | 
						|
    that tools like pw-link or jack clients and wireplumber can't make passive
 | 
						|
    links anymore. The reason is that there is now much more advanced logic in
 | 
						|
    PipeWire itself to handle passive links based on node and port properties.
 | 
						|
  - The RAOP sink was ported to new OpenSSL functions. Digest passwords are
 | 
						|
    handled correctly now and support for more devices was added.
 | 
						|
  - The ACP code was updated with new PulseAudio UCM code: "Create multiple
 | 
						|
    profiles per verb for conflicting devices". This might change the names
 | 
						|
    of devices, profiles and ports so scripts might need to be updated.
 | 
						|
  - Upmixing is disabled again by default. We now ship config files that
 | 
						|
    distros can install to enable upmixing again. The reason being that PipeWire
 | 
						|
    should not apply fancy DSP processing to audio by default.
 | 
						|
  - Many cleanups and bugfixes, including some crashes and memory corruption
 | 
						|
    bugs.
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Various FreeBSD compilation fixes.
 | 
						|
  - Don't crash when calling _connect twice in stream/filter. (#3091)
 | 
						|
  - Links are now installed instead of compiling the pipewire binary
 | 
						|
    multiple times.
 | 
						|
  - There is now a new core event bound_props that augments the bound_id event
 | 
						|
    with the global properties. This can be used to get the global.serial among
 | 
						|
    other global properties. It also makes it possible in the future to let the
 | 
						|
    server allocate unique names or uuids.
 | 
						|
  - Fix a bug where the server could go into an infinite reconfigure loop when
 | 
						|
    the samplerate of a driver would change.
 | 
						|
  - When a samplerate was forced, restore the previous best samplerate when the
 | 
						|
    samplerate is no longer forced. (#2133)
 | 
						|
  - Rework how the states of the nodes in the graph are calculated. A more
 | 
						|
    refined algorithm is now used that only runs nodes that need to run.
 | 
						|
  - Rework how the quantum change is applied to the graph. Drivers are now
 | 
						|
    responsible for using the new updated rate/quantum before starting a new
 | 
						|
    cycle. This avoids starting a cycle with an old quantum first.
 | 
						|
  - pw-stream and pw-filter will now ensure that the Trigger event is called
 | 
						|
    from the main thread.
 | 
						|
  - node.force-rate=0 will now force the node.rate on the graph, forcefully
 | 
						|
    switching the hardware into the new rate if possible. (#3026)
 | 
						|
  - Additional checks were added to the thread-loop to check locking order.
 | 
						|
  - Additional checks were added to pw-stream and pw-filter to check if methods
 | 
						|
    are called from the right thread context.
 | 
						|
 | 
						|
## modules
 | 
						|
  - A new RTP session module was added. This uses the Apple MIDI protocol
 | 
						|
    to configure bidirectional MIDI (or audio) between machines.
 | 
						|
  - SAP support was removed from module-rtp-source and module-rtp-sink and
 | 
						|
    moved to a separate module. This makes it possible to use the RTP modules
 | 
						|
    without SAP support as well.
 | 
						|
  - The echo-cancel module now has support to save the signals to a wav
 | 
						|
    file for debugging purposes.
 | 
						|
  - The RTP modules now have support for the OPUS codec.
 | 
						|
  - The RAOP module was ported to new openssl encryption functions and handles
 | 
						|
    digest passwords correctly now.
 | 
						|
  - module-raop-discover now has match rules to be able to select the streams
 | 
						|
    and set properties.
 | 
						|
  - Module pulse-tunnel has improved rate matching and synchronization
 | 
						|
    support. (#3093)
 | 
						|
  - Fix potential memory corruption and infinite loops because
 | 
						|
    module-pulse-tunnel was unloaded from the wrong thread. 
 | 
						|
  - The link-factory now ignores by default the link.passive property. This means
 | 
						|
    that tools like pw-link or jack clients and wireplumber can't make passive
 | 
						|
    links anymore. The reason is that there is now much more advanced logic in
 | 
						|
    PipeWire itself to handle passive links based on node and port properties.
 | 
						|
  - module-echo-cancel will now clear its buffers after a suspend to avoid
 | 
						|
    playing stray samples.
 | 
						|
  - module-raop-sink will now handle 0 timing_port replies. (#3133)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - The adapter module now has support for saving the raw audio to a wav
 | 
						|
    file for debugging purposes.
 | 
						|
  - The ACP code was updated with new PulseAudio UCM code: "Create multiple
 | 
						|
    profiles per verb for conflicting devices". This might change the names
 | 
						|
    of devices, profiles and ports so scripts might need to be updated.
 | 
						|
  - Upmixing was disabled again by default. We now ship config files that
 | 
						|
    distros can install to enable upmixing again. (#3081)
 | 
						|
  - audioadapter and audioconvert have seen improvements in the experimental
 | 
						|
    non-DSP/passthrough mode.
 | 
						|
  - Fix a potential race where the dummy drivers could fail to stop a timer
 | 
						|
    and cause endless warnings in the logs.
 | 
						|
  - The ALSA plugin has experimental support for IRQ based scheduling. This
 | 
						|
    should decrease latency for some (mostly USB) drivers. This should bring
 | 
						|
    latency within JACK latency. More work on this will be done before the
 | 
						|
    1.0 release later this year.
 | 
						|
  - Audioconvert now has support for volume ramping. (#3046)
 | 
						|
  - A new loop method was added the check if a thread is currently running the
 | 
						|
    loop.
 | 
						|
  - channelmix.disable and resample.disable now generate an error when true
 | 
						|
    and channelmixing or resampling is required in the converter.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Fix a crash in some cases when a device was disconnected.
 | 
						|
  - Support async transport state changes. This avoids some lockups when the
 | 
						|
    bluetooth backend is having issues. (#3023)
 | 
						|
  - Align BAP sinks. This improves synchronization between earpieces.
 | 
						|
 | 
						|
## ALSA
 | 
						|
  - Improve properties in pw-top and pavucontrol.
 | 
						|
 | 
						|
## pulse-server
 | 
						|
  - Improve error handling from pulse-tunnel.
 | 
						|
  - Generate silence correctly for unsigned formats as well.
 | 
						|
  - Review buffer params. The streams should now just work with 1 or 2
 | 
						|
    buffers.
 | 
						|
  - module-rtp-send and module-rtp-recv now have support for the OPUS codec.
 | 
						|
 | 
						|
# JACK
 | 
						|
  - Make sure we don't call any callbacks anymore when deactivating. (#2781)
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - Sort the device by priority in deviceprovider. (#3072)
 | 
						|
 | 
						|
# PipeWire 0.3.67 (2023-03-09)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - The loopback module and other couples streams will now not randomly
 | 
						|
    fail in some cases. (#3028)
 | 
						|
  - The RTP module now has support for sending and receiving MIDI as
 | 
						|
    well.
 | 
						|
  - The compress offload sink has seen many improvements. It now uses
 | 
						|
    ioctls directly to bypass limitations of tinycompress (to be able
 | 
						|
    to detect the available codecs, for example).
 | 
						|
  - Pulse server compatibility was improved for some apps by improving
 | 
						|
    the format parsing and FIX_ stream flag handling.
 | 
						|
  - The min quantum in the pulse server was changed from 256/48000 to
 | 
						|
    128/48000 to fix some issues with games that expect 5ms or less of
 | 
						|
    latency.
 | 
						|
  - The Bluetooth plugin has seen many improvements in packet scheduling
 | 
						|
    to attempt to reduce stuttering on some devices.
 | 
						|
  - The ALSA plugin now handles some impossible cases better. This fixes
 | 
						|
    recording in QEMU again. (#2971)
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - SPDX tags were added to the code for copyright information.
 | 
						|
  - The random number functions were made more usable.
 | 
						|
  - The port property code was moved from the adapter to the port
 | 
						|
    implementation itself to make it more useful and unified for the
 | 
						|
    cases where no adapter is used (midi and video).
 | 
						|
  - Fix a potential overflow in mixer areas.
 | 
						|
  - Improve runnable state calculations of nodes. This is part of
 | 
						|
    ongoing work to avoid running nodes that should not need to run.
 | 
						|
  - The stream will now always call the process function when using
 | 
						|
    trigger, even if there are no buffers. This avoids stalls of the
 | 
						|
    processing graph in some cases. (#3028)
 | 
						|
  - Links are now marked as passive by PipeWire itself so that
 | 
						|
    the right thing happens in all cases.
 | 
						|
  - Implement the in/out/true values for the node.passive property.
 | 
						|
    Place a passive state on ports to make passive links on a port
 | 
						|
    by port basis.
 | 
						|
 | 
						|
## Tools
 | 
						|
  - pw-cat has seen improvements in the encoded file playback case.
 | 
						|
 | 
						|
## Modules
 | 
						|
  - The rtp module has support for MIDI now.
 | 
						|
  - DSCP is now configurable in the RTP module.
 | 
						|
  - The loopback module doesn't randomly fail to work anymore. (#3028)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - The null-audio sink can now be given a format and it will return this
 | 
						|
    instead of the default float ones. This makes it possible to make a
 | 
						|
    null-sink that has a given format.
 | 
						|
  - The compress offload sink has seen many improvements. It now no longer
 | 
						|
    uses tinycompress to be able to detect the available codecs.
 | 
						|
  - The ALSA plugin now handles some impossible cases better. (#2971)
 | 
						|
  - Fix compilation on older compilers. (#3050)
 | 
						|
 | 
						|
## Pulse-server
 | 
						|
  - The FIX_ flags are now implemented more correctly by fixating the
 | 
						|
    stream to the format of the sink/source they ask to be connected to.
 | 
						|
    There is now also an option to override the fixation based on rules.
 | 
						|
  - Format parsing was improved and should now support all format strings
 | 
						|
    supported by pulseaudio including upper and lower case variants
 | 
						|
    and shortcuts.
 | 
						|
  - Channelmap parsing was improved and should now reject invalid
 | 
						|
    channelmaps as well as support the shortcuts supported by pulseaudio.
 | 
						|
  - Escape codes in module arguments now work as it does in pulseaudio. (#3071)
 | 
						|
  - The min quantum was changed from 256/48000 to 128/48000 to fix some
 | 
						|
    issues with games that expect 5ms or less of latency.
 | 
						|
 | 
						|
## JACK
 | 
						|
  - jack.passive-links can now be used to have a JACK client make passive
 | 
						|
    links and the node.passive property is no longer used for this because
 | 
						|
    it has a different function.
 | 
						|
  - The qsynth rule was updated to the new node.passive features. It is now
 | 
						|
    only passive on the output side.
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - BAP delay and transport latency are handled now.
 | 
						|
  - A2DP and SCO can now use bigger buffers to improve quality when the
 | 
						|
    reception is jittery.
 | 
						|
  - The AT+BCC command is now implemented.
 | 
						|
  - Packet encoding now happens ahead of time when possible to avoid delays
 | 
						|
    before sending it.
 | 
						|
  - Source should now always produce complete (padded) buffers to avoid sync
 | 
						|
    problems.
 | 
						|
  - Don't set unnecessary socket options.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - The pipewiresrc now has an autoconnect argument.
 | 
						|
  - The metadata plane count is now handled correctly in more cases.
 | 
						|
  - Stream errors are now handled correctly to stop the GStreamer elements.
 | 
						|
 | 
						|
# PipeWire 0.3.66 (2023-02-16)
 | 
						|
 | 
						|
This is a bugfix release that is API and ABI compatible with previous
 | 
						|
0.3.x releases.
 | 
						|
 | 
						|
## Highlights
 | 
						|
  - Fix a regression in the pulseaudio module-combine-stream because the new
 | 
						|
    module-combine-stream was not installed.
 | 
						|
  - PipeWire can now generate a limits.d config file with our recommended
 | 
						|
    settings for priorities and memlock.
 | 
						|
  - Modules, exec and objects can now be loaded depending on conditions. One
 | 
						|
    example is the X11-bell module that can now be disabled with a custom
 | 
						|
    property override.
 | 
						|
  - Filter-chain has a new mysofa based spacializer plugin.
 | 
						|
  - Support was added for different clocks that allow the RTP modules to work
 | 
						|
    with a PTP clock, for example.
 | 
						|
  - Many bugfixes and improvements.
 | 
						|
 | 
						|
 | 
						|
## PipeWire
 | 
						|
  - Avoid rate switches when the graph is idle.
 | 
						|
  - The rate selection algorithm was improved. This ensures minimal performance
 | 
						|
    and quality loss when resampling.
 | 
						|
  - The default min.quantum was set to 32 again after it got erroneously changed
 | 
						|
    to (the too low) 16 in version 0.3.45.
 | 
						|
  - Fix compilation issues with rust bindings because of macros in defines.
 | 
						|
    Work around it for now. (#2952)
 | 
						|
  - Invalid file mappings are now refused (#2617 #2914 #3007)
 | 
						|
  - Modules, exec and objects can now be loaded depending on conditions. One
 | 
						|
    example is the X11-bell module that can now be disabled with a custom
 | 
						|
    property override.
 | 
						|
  - Filter now also supports _trigger_process() to drive the graph.
 | 
						|
  - TID is now added to the journald log.
 | 
						|
  - PipeWire generates and installs */etc/security/limits.d/25-pw-rlimits.conf*
 | 
						|
    that by default contains project's recommended settings. Creation of the
 | 
						|
    pipewire group is left to the distro or user ( `groupadd -r pipewire` ).
 | 
						|
    See the rlimits-* Meson options for controlling this behavior.
 | 
						|
  - Additionally there is now by default disabled Meson option that will
 | 
						|
    install */etc/security/limits.d/20-pw-defaults.conf* with the current Linux
 | 
						|
    default memlock value. Distros with only kernels >=5.16 or always using
 | 
						|
    systemd v251 or newer do not need this. But all other builds should set the
 | 
						|
    `-Dpam-defaults-install=true` Meson option to ensure that the memlock value
 | 
						|
    is always large enough. Thanks to Rickie Schroeder for pointing out that
 | 
						|
    the default Linux memlock value has been somewhat recently increased.
 | 
						|
 | 
						|
## modules
 | 
						|
  - Install module-combine-stream.
 | 
						|
  - RTP source now has support for custom channel names.
 | 
						|
  - RTP source will now stop when inactive.
 | 
						|
  - Filter-chain has a new mysofa based spacializer plugin.
 | 
						|
  - The RTP modules can now use direct clock timestamps to send and receive
 | 
						|
    packets. This makes it possible to synchronize sender and receiver with
 | 
						|
    a PTP clock, for example.
 | 
						|
  - Filter-chain now has an invert plugin to invert the polarity of a
 | 
						|
    signal. (#3008)
 | 
						|
 | 
						|
## SPA
 | 
						|
  - There is now an option to set the channels used for probing Pro Audio
 | 
						|
    devices. This could unlock more samplerates for some devices when they are
 | 
						|
    probed with fewer channels. (#2990)
 | 
						|
  - Support was added for other clocks than the MONOTONIC clock in the
 | 
						|
    driver nodes. This can be used to synchronize the graph to a PTP clock,
 | 
						|
    for example.
 | 
						|
  - The ALSA source has some more headroom when rate matching to avoid
 | 
						|
    stuttering when following another driver.
 | 
						|
  - libcamera controls are now mapped to standard PipeWire property values.
 | 
						|
  - The channelmixer has seen some improvements. MONO and undefined channel
 | 
						|
    layouts are now upmixed and downmixed more correctly. (#3010)
 | 
						|
 | 
						|
## Bluetooth
 | 
						|
  - Many BAP support fixes.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - The gstreamer elements now support buffer video metadata so that strides
 | 
						|
    are correctly handled.
 | 
						|
  - pipewiresrc will now error out correctly in more cases. (#2935)
 | 
						|
 | 
						|
## JACK
 | 
						|
  - The frame to/from time functions are improved to also work with negative
 | 
						|
    time and frame offsets.
 | 
						|
 | 
						|
# 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 advertise DMABUF support if the pipeline supports
 | 
						|
    this.
 | 
						|
  - pipewiresrc will now always be a live source unless told otherwise.
 | 
						|
 | 
						|
# 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 battery 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 adjustment 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 receive 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 adjustment 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 receive 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 reasonably 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 adjustments 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
 | 
						|
    awful 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 frequencies
 | 
						|
    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 specialization. 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 default device as `system` to improve
 | 
						|
    compatibility with some applications,
 | 
						|
  - Use lock-quantum by default. This makes sure that all dynamic quantum
 | 
						|
    changes are disabled while a JACK app is running. The only way to force
 | 
						|
    a quantum chance is through a JACK app or with the metadata.
 | 
						|
  - It is now possible to do IPC calls from the data thread. Note that this
 | 
						|
    is a very bad idea but required for compatibility with JACK2.
 | 
						|
 | 
						|
## GStreamer
 | 
						|
  - GStreamer sink will now set a default channelmap to make it possible to 
 | 
						|
    remap to the channel layout of the device.
 | 
						|
 | 
						|
# 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 emitted.
 | 
						|
 | 
						|
## 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 applications.
 | 
						|
  - 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 minimum 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
 |