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

Older versions:


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