# PipeWire 1.4.9 (2025-10-09)

This is a small bugfix release that is API and ABI compatible with
previous 1.x releases.

## Highlights
  - Fix a regression in node unprepare that would leave nodes running
    and error.
  - Improve ALSA recovery when 3 periods is not supported. Also Improve
    headroom for SOF cards by setting it to the minimal period size by
    default.
  - Remove RestrictNamespaces from the systemd files to allow libcamera
    to load sandboxed IPA modules again.
  - Small fixes and updates.


## PipeWire
  - Fix a regression in node unprepare that would leave nodes running
    and error. (#4893)
  - Remove RestrictNamespaces from the systemd files to allow libcamera
    to load sandboxed IPA modules.

## Modules
  - Handle fd allocation errors in avahi. (#4913)
  - Fix initial SDP session hash and session-id. (#4852)
  - Fix a potential NULL deref in the profiler. (#4922)

## SPA
  - Fix the UMP event compare function. (#4899)
  - Backport a lot of libcamera patches, such as support for colorimetry,
    thread-safety fixes, a lot of cleanups and improvements.
  - Improve ALSA recovery when 3 periods is not supported.
  - Fix a regression in the adapter where it would not always start and
    resume correctly. (#4911)
  - Improve headroom for SOF cards by setting it to the minimal period
    size by default. (#4489)
  - Adapt to newer libcamera changes.


Older versions:

# 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.

# 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
