mirror of
https://gitlab.freedesktop.org/pipewire/pipewire
synced 2024-09-06 16:56:00 +00:00
4988 lines
201 KiB
Plaintext
4988 lines
201 KiB
Plaintext
# 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.
|
|
|
|
Older versions:
|
|
|
|
|
|
# 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.
|
|
- Suport was added for different clocks that allow the RTP modules to work
|
|
with a PTP clock, for example.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Avoid rate switches when the graph is idle.
|
|
- The rate selection algorithm was improved. This ensures minimal performance
|
|
and quality loss when resampling.
|
|
- The default min.quantum was set to 32 again after it got erronously changed
|
|
to (the too low) 16 in version 0.3.45.
|
|
- Fix compilation issues with rust bindings because of macros in defines.
|
|
Work around it for now. (#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 advertize DMABUF support if the pipeline suports
|
|
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 batery status to UPower for HFP AG.
|
|
- Fix bitpool increase.
|
|
|
|
## SPA
|
|
- The audioresampler now avoids clicks and pops between activating and
|
|
deactivating the adaptive resampler when used by the stream API.
|
|
- Use default locale to parse float parameters.
|
|
- The upmix functions now have SSE optimizations.
|
|
- Avoid recalculating the complete channelmix setup when only the
|
|
volume changes.
|
|
- The alsa plugin will now only start playback when there is data. This
|
|
results in better sync and lower latency between capture and playback.
|
|
- The ALSA MIDI sequencer will now pull data from the graph even when it
|
|
did not output anything. Fixes some graph stalls with the sequencer in
|
|
some cases. (#2775)
|
|
- v4l2 and libcamera sources now recycle buffers when nothing is consuming
|
|
them. This avoids stalling the graph.
|
|
- libcamera now suggests a more appropriate frame size than the smallest
|
|
poster frame.
|
|
- Improve state changes in audioconvert. (#2764)
|
|
- A new seq field was added to spa_param_info to keep track of pending
|
|
param updates.
|
|
- Support speaker output only on RealTek ALC4080. (#2744)
|
|
- The v4l2 source now supports setting controls.
|
|
- The libcamera plugin now supports enumerating and setting controls.
|
|
- A new unit test for 6.1 channel mapping was added. (#2809) More debug
|
|
info was added to audioconvert for the channel matrix.
|
|
- Audioconvert will now also upmix a rear-center channel when needed.
|
|
|
|
## pulse-server
|
|
- Add support for the RTP send and recv modules with the new native
|
|
RTP module.
|
|
- Add option to set latency for pulse-tunnel streams and
|
|
module-zeroconf-discover.
|
|
- The socket will now be given the same permissions as what pulseaudio
|
|
did (0777).
|
|
- Implement module-loopback latency_msec correctly with the new delay
|
|
parameter.
|
|
- sysfs.path is now filled with the same data as pulseaudio.
|
|
- The manager now uses the new seq field in the spa_param_info.
|
|
- Fix a bug where in some cases the read pointer would get out of sync
|
|
and cause too large requests. (#2799)
|
|
|
|
## ALSA
|
|
- The alsa plugin now reuses the stream in prepare which results in
|
|
better performance.
|
|
- Some deadlocks have been fixed in the ALSA plugin.
|
|
- The ALSA plugin reports more accurate timing information in some cases.
|
|
|
|
## V4l2
|
|
- The v4l2 compatibility layer has received a lot of updates.
|
|
- Improved node names and format enumeration.
|
|
- Support for multiple /dev/videoX devices, each mapped to a unique
|
|
PipeWire node.
|
|
- Passes the v4l2-compliance test now with both the v4l2 and libcamera
|
|
backend in PipeWire.
|
|
- Improved mmap support for inline buffer memory. This makes it possible to
|
|
consume PipeWire streams.
|
|
- Negotiation works more reliably now.
|
|
|
|
## JACK
|
|
- Implement jack_acquire_real_time_scheduling() and
|
|
jack_drop_real_time_scheduling() by keeping the thread utils in a global
|
|
state.
|
|
- Fix jack_client_thread_id() to return NULL when the client is not active,
|
|
just like jack1 and jack2.
|
|
- An option was added to let the jack_set_buffer_size() function update the
|
|
global metadata. A quirk was added so that jack_bufsize uses this new feature
|
|
to make the buffer size settings persistent and global, just like jack.
|
|
- jack_port_register() and jack_port_unregister() can be called on an
|
|
active client so make this thread safe. (#2652)
|
|
|
|
# PipeWire 0.3.59 (2022-09-30)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Fix possible wrong samplerate in loopback streams after suspend and
|
|
rate switch.
|
|
- module-filter-chain can now adapt to the graph samplerate.
|
|
- Fix some potential stuttering and crackling in pulse-server.
|
|
- Add Bluetooth LE support. This requires experimental kernel and bluez
|
|
support.
|
|
- The ALSA plugin has more options to control the buffer size. This can
|
|
be used to work around high latency in davinci resolve.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Add audio capture example with volume meter.
|
|
- Fix a case where a rate switch would not suspend all the nodes of the
|
|
driver first. This could cause wrong samplerates in streams.
|
|
- Fix a case where a node would be Paused while still added to the
|
|
graph, causing potential crashes. (#2701)
|
|
|
|
## Modules
|
|
- module-filter-chain and module-loopback now use the resample.prefill
|
|
option to avoid buffering extra samples and causing unwanted latency
|
|
when resampling is activated.
|
|
- module-filter-chain can now adapt to the graph samplerate.
|
|
- Improve module-raop to support the ALAC codec as raw PCM.
|
|
- Improve RTSP parsing to improve compatibility.
|
|
|
|
## Tools
|
|
- Fix 100% CPU in pw-cli monitor mode. (#2709)
|
|
- spa-acp-tool can now be exited with ctrl-D.
|
|
|
|
## SPA
|
|
- Various libcamera fixes and improvements.
|
|
- Set stride on audioconvert output buffers.
|
|
- Make sure we always place the last requested size from the resampler
|
|
on the buffers in pw-stream.
|
|
- Add resample.prefill option in the resampler to fill the history with
|
|
0 so that we don't have smaller buffers at the start.
|
|
- Make sure that when an overflow corrupts a POD, that it will always
|
|
stay corrupted.
|
|
- Rate limit some ALSA warnings and reduce some unwanted warnings.
|
|
- Don't recalculate the audioconverter state for each pause/play. (#2701)
|
|
- Fix some POD parsing inconsistencies and potential overflows.
|
|
- Add support for Asus Xonar SE.
|
|
- Fix Flush command handling. It should not stop playback. (#2726)
|
|
- Refactor the peaks function and add some unit tests and optimizations.
|
|
- The channelmix has an optimized nXm converter and new unit tests.
|
|
- Normalization in the channelmixer was fixed.
|
|
|
|
## pulse-server
|
|
- The requested latency of record streams was reduced to fix some
|
|
stuttering in Teamspeak. (#2702)
|
|
- Tweak the max amount of bytes sent to a client. (#2711) (#2715)
|
|
- Improve maxlength calculations, this fixes some crackling noise with
|
|
high samplerate and channel counts in some players (audacious).
|
|
|
|
## Bluetooth
|
|
- Merge Bluetooth LE support.
|
|
- Make sure we are backward compatible with WirePlumber.
|
|
- Fix some HFP and HSP AT command parsing. (#2463)
|
|
- Use HFP by default over HSP.
|
|
|
|
## ALSA
|
|
- Increase max number of periods.
|
|
- The parameters handling was improved. There is now an option to set the
|
|
buffer-bytes of the ALSA plugin.
|
|
- PIPEWIRE_ALSA can now be used as an environment variable to restrict the
|
|
plugin formats and buffer size.
|
|
|
|
# PipeWire 0.3.58 (2022-09-15)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Fix a regression that could cause audio crackling.
|
|
- Fix a regression in RTKit because rlimit was not set correctly.
|
|
- JAVA sound applications will now alsa work with the pulseaudio-alsa plugin.
|
|
- pw-top will now show the negotiated formats of devices and streams.
|
|
- Fix some potential crashes when starting streams.
|
|
- The ALSA plugin has had improved timing reporting and poll descriptor
|
|
handling that should improve compatibility.
|
|
- Many more improvements and bugfixes.
|
|
|
|
|
|
## PipeWire
|
|
- Avoid scheduling nodes before they are added to the graph. This could
|
|
avoid some crashes when scheduling nodes that were not completely
|
|
started yet. (#2677)
|
|
|
|
## Tools
|
|
- pw-top now also shows the negotiated formats of streams and devices.
|
|
(#2566)
|
|
- pw-top prints microseconds as "us" now to avoid unicode problems.
|
|
|
|
## Modules
|
|
- Fix compilation with newer lv2.
|
|
- Fix setting realtime priority with RTKit, it was not setting rlimit
|
|
correctly and RTKit would refuse to change the priority.
|
|
- Fix some playback problems with RAOP sink. (#2673)
|
|
- Filter chain will now warn when a non-existing control property is
|
|
used in the config file. (#2685)
|
|
- Filter chain can now handle control port names with ":" in the name.
|
|
(#2685)
|
|
- The echo-cancel module and interface now has activate/deactivate
|
|
functions to make it possible for plugins to reset their state.
|
|
|
|
## SPA
|
|
- Make sure audioconvert uses the given channelmap and channels for the
|
|
volumes, even when not negotiated yet. This makes it possible to change
|
|
the volume before the node has been negotiated.
|
|
- Refactor the peaks resampler. Fix an error in the SSE code.
|
|
- Fix DSD min/max rates, avoid exposing impossible rates.
|
|
- Set monitor port buffer size correctly. This could cause some crackling
|
|
and hickups. (#2677)
|
|
- Make ALSA sequencer port names unique.
|
|
|
|
## Pulse-server
|
|
- Rework the capture buffer attributes to better match pulseaudio. This
|
|
fixes a regression where opening pavucontrol could cause crackling.
|
|
(#2671)
|
|
- Implement TRIGGER and PREBUF methods.
|
|
- Handle clients that send more than the requested amount of data.
|
|
PipeWire will now also keep this as extra buffered data like PulseAudio.
|
|
This fixes JAVA sound applications when they are running on top of the
|
|
PulseAudio ALSA plugin. (#2626,#2674)
|
|
- Update the requested amount of bytes more like PulseAudio. Fixes
|
|
stuttering after resume with the GStreamer pulseaudio sink. (#2680)
|
|
|
|
## ALSA Plugin
|
|
- More debug info was added. The time reporting was improved.
|
|
- The poll descriptor handling was improved, avoiding some spurious
|
|
wakeups. (#1697)
|
|
|
|
|
|
# PipeWire 0.3.57 (2022-09-02)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Support masking of conf.d/ files. (#2629)
|
|
- Use org.freedesktop.portal.Realtime when available. This does the
|
|
correct PID/TID mappings to make realtime also work from flatpaks.
|
|
- Fix rate adjustement logic in pulse-tunnel. This would cause
|
|
increasing delays and hickups when using tunnels. (#2548)
|
|
- Add OPUS as a new vendor codec. Add OPUS-A2DP spec. PipeWire can now
|
|
send and reveive OPUS data over bluetooth.
|
|
- An AAC decoder was added so that PipeWire can now also function as
|
|
an A2DP AAC receiver.
|
|
- Fix some issues where the wrong samplerate was used. (#2614)
|
|
- Fix rate match for sources. This fixes an error where follower sources
|
|
would generate many resync warnings.
|
|
- Many more bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Support masking of conf.d/ files. (#2629)
|
|
- Add some more debug info to memfd.
|
|
- Improve data-loop invoke method. Also flush pending items. (#2631)
|
|
- Add a filter-chain systemd service file than can be used to start
|
|
custom filters placed in ~/.conf/pipewire/filter-chain.d/ (#2553)
|
|
- Improve triggered timestamps for remote nodes.
|
|
- Fix some potential cross compilation problems due to wrong
|
|
host_machine.
|
|
- Check return values of pw_getrandom().
|
|
|
|
## Tools
|
|
- Updates to pw-cli manpages. (#2552)
|
|
- Remove the pw-cli dump command. It is mostly implemented as part of
|
|
wpctl status, pw-dump, pw-link, pw-top and others.
|
|
- Clean up resource in pw-cat correctly on errors. (#2651)
|
|
|
|
## Modules
|
|
- Fix compilation of AVB on big-endian. Enable AVB only on Linux.
|
|
- Use org.freedesktop.portal.Realtime when available. This does the
|
|
correct PID/TID mappings to make realtime also work from flatpaks.
|
|
- Fix compilation of ROC module when headers are missing. (#2513)
|
|
- Improve some error cleanup paths in protocol-native. Improve connect
|
|
and disconnect.
|
|
- Fix a potential crash in FFT unload in filter-chain.
|
|
- Implement PIPEWIRE_NOTIFICATION_FD for notification when the socket
|
|
is ready.
|
|
- Try to use rtkit if set_nice() fails.
|
|
- Fix rate adjustement logic in pulse-tunnel. This would cause
|
|
increasing delays and hickups when using tunnels. (#2548)
|
|
- Handle disconnect in pulse-tunnel.
|
|
|
|
## Bluetooth
|
|
- Add OPUS as a new vendor codec. Add OPUS-A2DP spec. PipeWire can now
|
|
send and reveive OPUS data over bluetooth.
|
|
- An AAC decoder was added so that PipeWire can now also function as
|
|
an A2DP AAC receiver.
|
|
|
|
## SPA
|
|
- Tweak the resampler window function some more. (#2574)
|
|
- Improve format convert performance in some fallback cases.
|
|
- Fix rounding in format conversion on ARM NEON.
|
|
- Fix libcamera build error. (#2575)
|
|
- Fix some issues where the wrong samplerate was used. (#2614)
|
|
- Don't wait for more samples that can fit in the ringbuffer in ALSA.
|
|
- Improve buffer size handling in audioconvert, scale the buffers based
|
|
on the rate conversion and make things work with really large rate
|
|
conversions as well.
|
|
- Add more and better debug for ALSA devices.
|
|
- Improve channel mix: Filter FC and LFE when copying from a different
|
|
layout. Implement STEREO from FC. Avoid generating REAR from FC in PSD
|
|
mode.
|
|
- Fix rate match for sources. This fixes an error where follower sources
|
|
would generate many resync warnings.
|
|
- Improve ALSA format negotiation. If the ALSA node is not running and
|
|
there was a previously configured format, close and reopen the device
|
|
to enumerate and accept all possible formats again. (#2625).
|
|
|
|
## ALSA
|
|
- The alsa plugin will now also save the volumes set with the control
|
|
API. This saves the volumes set with alsa-mixer, for example.
|
|
|
|
## Pulse-server
|
|
- Flatpak apps with devices=all (Zoom) will now be granted Manager
|
|
permissions.
|
|
- Small tweaks to the amount of data sent to clients to work around an
|
|
issue in freerdp.
|
|
|
|
## JACK
|
|
- Clean up the transport correctly when closing a client. (#2569)
|
|
- Match context properties in addition to node properties for the jack
|
|
client rules. (#2580)
|
|
- Make sure to return an error when disconnected from the server. (#2606)
|
|
- Fix thread cast problem in jack_client_thread_id().
|
|
- Increase jack_client_name_size() length and make sure we have space for
|
|
the \0 byte.
|
|
- JACK clients from the same application will be added to the same group
|
|
so that they share the quantum and rate.
|
|
|
|
# PipeWire 0.3.56 (2022-07-19)
|
|
|
|
This is a quick bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- A critical bug that could crash JACK apps was fixed.
|
|
- Some more regressions in audiomixer were fixed. This should fix crackling
|
|
and stuttering in some cases as well as some channel mapping regressions.
|
|
- A bug in the alsa plugin was fixed that could cause stuttering in VMs.
|
|
- Bluetooth sources should have improved latency and rate control.
|
|
- Many more bugfixes and improvements.
|
|
|
|
|
|
## Modules
|
|
- An experimental AVB module was added. It can expose PipeWire as an AVB
|
|
entity and initiate (broken) streaming between entities.
|
|
- module-loopback now handles the cases where the input and output channels
|
|
are different without crashing or producing silence.
|
|
- The filter-chain module now correctly calculates the output size without
|
|
crashing in some cases. It also skips invalid ports instead of crashing.
|
|
- Handle and report pthread errors better.
|
|
|
|
## SPA
|
|
- The resampler qualities were tweaked a little.
|
|
- A bug that would sometimes cut off the last part of a buffer was fixed in
|
|
the alsa plugin. This could cause broken audio in VMs. (#2536)
|
|
- Access to the alsa mixer and devices is now checked more thoroughly.
|
|
(#2534)
|
|
- The spa-resample tool can now also handle large downsampling rates without
|
|
crashing.
|
|
- Audioconverter now uses rounding for float to int conversions, which
|
|
reduces distortions. Compilation of the c functions was separated and uses
|
|
its own optimization flags now. Unit tests were added. (#2543)
|
|
- Noise shaping was improved in audioconvert. A new Wannamaker 3 tap shaper
|
|
was added.
|
|
- Audioconvert now uses a pattern for generating keep alive noise. This
|
|
should have much less energy and be even more inaudible. (#2540)
|
|
- A channel mapping bug was fixed in audioconvert. Unit tests were added.
|
|
- The dsp audio mixer would sometimes not mix enough and cause dropouts.
|
|
(#2525)
|
|
|
|
## JACK
|
|
- A critical bug in the mixer was fixed. It would cause most JACK apps to
|
|
segfault at startup.
|
|
|
|
## Bluetooth
|
|
- A new rate control algorithm was implemented for the sources.
|
|
- The media role on HSP/HFP streams is now fixed.
|
|
|
|
## Pulse Server
|
|
- Add the resampler delay to delay reporting as well.
|
|
|
|
|
|
# PipeWire 0.3.55 (2022-07-12)
|
|
|
|
This is a quick bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Fix some more critical bugs in the new audioconvert and the queueing
|
|
in pw-stream that causes stuttering and hickups.
|
|
- HFP hardware volumes are now saved and restored.
|
|
- Format conversions and mixing was improved.
|
|
- Small bug fixes and improvements.
|
|
|
|
## PipeWire
|
|
- The queueing in pw-stream was improved with support for buffer prefetch
|
|
in async mode.
|
|
- Add a pw-filter unit test.
|
|
|
|
## tools
|
|
- pw-midiplay should now work again after improvements in pw-stream.
|
|
|
|
## modules
|
|
- The RAOP module was improved to support auth_setup.
|
|
- The RAOP module should now handle timing packets better.
|
|
- Add some more filter-chain examples.
|
|
- The filter-chain now has a separate config file with the boilerplate
|
|
settings. The examples are now just config snippets that can be dropped
|
|
in .conf.d/ directories, such as the filter-chain.conf.d/ one.
|
|
- Start suggesting to use target.object instead of node.target in docs
|
|
and examples.
|
|
|
|
## SPA
|
|
- Use the cosh window again for the resampler. It should now
|
|
give better resampler quality. (#2483)
|
|
- Rework the mixer functions. They were rewritten for higher precision and
|
|
better performance. Add unit tests and benchmarks.
|
|
- Improve format conversion for 32bits for avoid errors in clang because
|
|
of undefined behaviour at extreme ranges.
|
|
- Fix a bug in audioconvert where it would not consume the right
|
|
amount of samples when the resampler was disabled. This could cause
|
|
skipping and hickups. (#2519)
|
|
- Fix bug in audioconvert where it would try to convert the input samples
|
|
multiple times, causing strange artifacts when upmixing.
|
|
- Be more strict about valid JSON floats.
|
|
- device.vendor.id and device.product.id should now always show up in
|
|
0xXXXX format and should not be converted to floats in pw-dump anymore.
|
|
- Add triangular dither, add unit tests for noise generation, add some
|
|
more optimizations.
|
|
|
|
## Bluetooth
|
|
- HFP and A2DP now expose different routes and thus can have different
|
|
volumes.
|
|
- HW Volumes for HFP are now synced better. Volume changes from HW buttons
|
|
are now also saved.
|
|
|
|
# PipeWire 0.3.54 (2022-07-07)
|
|
|
|
This is a quick bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Some critical bugs in the new audioconvert were fixed. The old
|
|
adapter had internal buffering that was abused in some places.
|
|
- The bluetooth sources were rewritten using a ringbuffer to make them
|
|
more reliable to jitter and remove old audioconvert behaviour.
|
|
- Many improvements to the audio converter.
|
|
- Native DSD128 and up is now supported by pw-dsdplay.
|
|
|
|
|
|
## tools
|
|
- Support DSD128 to DSD512 as well by scaling the amount of samples
|
|
to read per time slice.
|
|
|
|
## SPA
|
|
- Format conversion is now generated with macros to remove duplication
|
|
of code.
|
|
- 24bits conversions were rewritten to use the generic conversion
|
|
functions.
|
|
- Temporary buffers in audioconvert are now made large enough in all
|
|
cases.
|
|
- Fix draining in audioconvert. This fixes speaker-test.
|
|
- Fix the channel remapping. (#2502, #2490)
|
|
- Audio conversion constants were tweaked to handle the maximum ranges
|
|
and provide lossless conversion between 24bits and floats.
|
|
- Vector code and C code are aligned and the unit tests are activated
|
|
again. A new lossless conversion test was added.
|
|
- Fix an underrun case where the adapter would not ask for more data.
|
|
- Fix PROP_INFO for audioconvert. (#2488)
|
|
- Use the blackman window again for the resampler, the cosh window has
|
|
some bugs that can cause distortion in some cases. (#2483)
|
|
- Add more unit tests for audioconvert. Add end-to-end conversion tests.
|
|
- Don't leak memory in format converter.
|
|
|
|
## pulse-server
|
|
- Card properties are now also added to sinks and sources, just like
|
|
in pulseaudio.
|
|
- Increase the maxlength size to at least 4 times the fragsize to avoid
|
|
xruns.
|
|
- Fix a race when setting default devices.
|
|
|
|
## Bluetooth
|
|
- The source was rewritten to use a ringbuffer. This avoids regressions
|
|
caused by audioconvert.
|
|
|
|
# PipeWire 0.3.53 (2022-06-30)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- The 44.1KHz samplerate was removed again from the defaults, it caused
|
|
all kinds of problems with various hardware.
|
|
- The ALSA plugin should now be able to deal with unsupported samplerates
|
|
and fall back to the nearest supported one.
|
|
- The rlimits performance tuning wiki page was updated. Please check
|
|
you limits.conf file, the version on the wiki used to give all
|
|
processes a -19 nice level instead of just the pipewire daemon.
|
|
- The audioconvert plugin was rewritten to be more maintainable and
|
|
faster. It also gained support for control ports and dithering with
|
|
optional noise shaping.
|
|
- An impossible buffering situation is avoided in pulse-server that would
|
|
cause some applications (sunshine, ...) to stutter.
|
|
|
|
|
|
## PipeWire
|
|
- 44.1KHz was removed from the allowed rates again. It caused all kinds
|
|
of regressions due to driver bugs and timing issues on HDMI.
|
|
|
|
## modules
|
|
- filter-chain now does some more error checking and reporting to
|
|
avoid some crashes.
|
|
- filter-chain now supports more channel layouts for input and output
|
|
that does not need to match the plugin layout.
|
|
- Format parsing is now more consistent in the modules.
|
|
|
|
## Tools
|
|
- pw-cli can now also work without readline support.
|
|
- pw-cat can now also read multichannel ulaw/alaw/u8/s8.
|
|
|
|
## SPA
|
|
- The audioconvert plugin was rewritten. This should make it more
|
|
maintainable. It also fixed some issues such as CPU spikes in some
|
|
cases and crashes in others. The old plugins were removed, for a
|
|
code reduction of some 6000 lines.
|
|
- The audioconvert plugin now supports control ports, which can be
|
|
enabled on nodes in the session manager. This makes it possible to
|
|
control audioconvert properties using timed events or midi.
|
|
- NoteOn 0-velocity MIDI events are no longer filtered out. This is
|
|
a valid event, nodes that can't deal with it should fix it up
|
|
themselves. The JACK layer still filters out these events by default
|
|
but this can now be configured with a per-client property.
|
|
- The running status on midi events is now disabled to match what
|
|
JACK does.
|
|
- The ALSA plugin will now deal with driver bugs when a driver announces
|
|
support for a samplerate but then refuses to use it later.
|
|
- The ALSA plugin has been optimized a little for sample IO.
|
|
- V4L2 now doesn't error when there are no controls.
|
|
- Error handling was improved in the audio converter.
|
|
- The audioconvert plugin now supports rectangular dithering and
|
|
noise shaping.
|
|
- The audioconvert plugin can now insert additional inaudible noise
|
|
that can be used to keep some amplifiers alive. (#705)
|
|
- The audioconvert format conversion was changed so that it now produces
|
|
the full 32 bits range in the C fallback conversion code as well.
|
|
- The resampler window function was changed to a cosh() window
|
|
function. (#2483)
|
|
- Vendor and device id are now in hex.
|
|
|
|
## pulse-server
|
|
- Tweak the record buffer attributes some more and make sure we don't
|
|
end up in impossible buffering situations. Fixes an issue with
|
|
distorted sound in sunshine. (#2447)
|
|
- Fix a potential crash when updating the client property list.
|
|
- Some properties on cards were aligned with pulseaudio.
|
|
|
|
## Wiki
|
|
- Change "priority" to "nice" in the example limits.conf file. It was
|
|
giving a -19 nice level to all processes, not just the pipewire
|
|
daemon.
|
|
|
|
# PipeWire 0.3.52 (2022-06-09)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Add 44.1KHz to allowed samplerates. The server can now switch by
|
|
default between 48KHz and 44.1KHz.
|
|
- Streams now allocate less resources.
|
|
- Fix some bugs that could make the server crash.
|
|
- Bluetooth now supports the LC3plus vendor codec.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Add 44.1KHz to allowed samplerates.
|
|
- Avoid setting the locale.
|
|
- Avoid use-after-free when destroying a node from spa-node-factory.
|
|
- Avoid using reallocarray when not available.
|
|
- Set port alias is not otherwise set.
|
|
|
|
## Modules
|
|
- Improve filter-chain parsing and error reporting. Handle empty
|
|
nodes. (#1950)
|
|
- Handle destroy of globals and factory in most modules. (#565)
|
|
- Add refcounts to client and resources to handle destroy of the
|
|
protocol. (#565)
|
|
- Handle global node.name in filter-chain and loopback again, use
|
|
it to construct unique stream names.
|
|
- Avoid a wrapped pw-node in the adapter. This reduces resources
|
|
allocated for streams.
|
|
- Fix a crash when module-x11-bell was unloaded. (#2392)
|
|
- Add a new module-pipe-tunnel that can write/read data from a
|
|
UNIX pipe.
|
|
|
|
## Tools
|
|
- Fix DSD playback again in pw-cat.
|
|
- Add -n option to pw-loopback to set node names.
|
|
- Add -P option to pw-cat to pass properties to the stream.
|
|
- Support stdin/stdout in pw-cat. (#2387)
|
|
- pw-dump now also dumps object removal when monitoring. (#2426)
|
|
|
|
## SPA
|
|
- Avoid duplicate param results in pw-dump for ports.
|
|
- Avoid endless loops in audioconvert for badly behaving client.
|
|
(#2359)
|
|
- Scale max-error in alsa based on quantum and avoid logging a warning
|
|
when starting.
|
|
- Improve debug of failed format conversion. (#2383)
|
|
- Handle offset in the audio dsp mixer inputs and clamp to the max
|
|
buffer size.
|
|
- Add option to disable locale support for JSON number conversion.
|
|
- Add support for Astro A20 Gen2.
|
|
- Fix some of the test sources, the flags were not set correctly.
|
|
- Add camera location as property in libcamera and let the session manager
|
|
Generate a localized description.
|
|
- Fix some crashes due to wrong vargar types in v4l2 controls. (#2400)
|
|
- Improve ALSA resync behaviour. (#2257)
|
|
- Add support for Komplete Audio 6 MK2.
|
|
- Improve loop cancel while iterating.
|
|
- Try not to mix surround channels and AUX channels. Make card with many
|
|
ports look better when not using the Pro Audio profile.
|
|
- Vulkan filters were added.
|
|
|
|
## Bluetooth
|
|
- Add LC3plus vendor codec.
|
|
- Handle unsupported indicators better.
|
|
- Ensure multiple devices on an adapter use different codecs because one
|
|
endpoint can only be used by one device at a time.
|
|
- Fix bitpool control as a follower.
|
|
- Handle bluetooth errors better.
|
|
- Speed up bluetooth connection by only waiting for the profiles
|
|
supported by the adapter.
|
|
- The dummy AVRCP player is disabled by default because it seems to break
|
|
more devices than it fixes.
|
|
|
|
## pulse-server
|
|
- Add initial stream latency property so that devices can be started
|
|
with a resonably accurate latency.
|
|
- Fix ringbuffer underrun case. (#2366)
|
|
- module-native-protocol-tcp now has a auth-anonymous option to give
|
|
full access to the clients.
|
|
- Report a node as being moved when it is still moving. This improves
|
|
compatibility with pasystray.
|
|
- Avoid overallocating message memory.
|
|
- Don't export NETWORK nodes in zeroconf. (#2384)
|
|
- Fix stride for TrueHD and DTSHD passthrough. (#2284)
|
|
- Make sure we don't send too small audio fragments. Fixes capture
|
|
from multiple tabs in Chrome. (#2418)
|
|
- Rework module handling some more.
|
|
- Use the new native module-pipe-tunnel for pipe-sink and pipe-source.
|
|
- Implement the STREAM_MOVED message when a stream got moved. (#2407)
|
|
- Fix a potential segfault when stopping the server and a TCP module
|
|
as still loaded.
|
|
|
|
## ALSA
|
|
- Add support for updating sw_params at runtime, mostly the min-avail
|
|
param.
|
|
- Capture and playback nodes are now assumed to use a different clock and
|
|
will activate the adaptive resampler when linked. This assumption is
|
|
removed in Pro Audio mode. This provide a better experience out of the
|
|
box with most devices.
|
|
|
|
## JACK
|
|
- Fix setting properties with PIPEWIRE_PROPS again.
|
|
- Don't use 64 bits atomic operations for sync_timeout. (#1867)
|
|
- Cleanup in error cases was improved, avoiding some crashes. (#2394)
|
|
|
|
## GStreamer
|
|
- Fix pipewiresink in mode=provide. (#1980)
|
|
- Share memory into a new buffer in pipewiresrc to avoid buffer corruption.
|
|
- Fixes to the source and fd use.
|
|
- It is now possible to set client properties as well. (#1573)
|
|
|
|
# PipeWire 0.3.51 (2022-04-28)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Improved graph reconfiguration.
|
|
- Extra configuration options for streams and filters with config
|
|
rules and environment variable.
|
|
- Improve module-pulse-tunnel latency, stability and error recovery.
|
|
- pw-top, pw-cli and pw-link improvements.
|
|
- Fix a channelmixer upmixing clipping issue.
|
|
- The ROC module has seen many improvements.
|
|
- Many more bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- The graph reconfiguration code was reworked:
|
|
* Moved nodes will update the new driver quantum correctly. (#2293)
|
|
* Inactive nodes are ignored more.
|
|
* Nodes that require a driver are now not scheduled anymore when
|
|
they are passive (unused). (#2309)
|
|
* Improved performance, the graph is reconfigured with a minimal
|
|
amount of changes.
|
|
- Method and event argument names were improved.
|
|
- A linker garbage collection problem was fixed. (#2292)
|
|
- Properties on threads are now implemented. Use common code to
|
|
set thread name and add an option to set stack-size.
|
|
- Streams and filters always want a driver now. This makes it possible
|
|
to just link a playback stream to a capture stream without a driver
|
|
and have it work. (#1761).
|
|
- Streams and filters can now also have rules in the config file.
|
|
- Streams, filters, JACK, ALSA and v4l2 now support PIPEWIRE_PROPS
|
|
environment variable to override node properties.
|
|
- Add config section extensions. This provides a way for modules to
|
|
have specific config to override the default config.
|
|
- Handle realloc errors better.
|
|
- Improve stream and filter property updates.
|
|
|
|
## Modules
|
|
- The pulse-tunnel modules has improved latency management and should
|
|
now work a lot better. (#2230)
|
|
- Module-loopback, module-echo-cancel, module-filter-chain unload the
|
|
module when a stream is destroyed. (#1754)
|
|
- Biquads in filter-chain now can have more gain (5->20 dB).
|
|
- Documentation updates. Most Wiki content was moved to the source code
|
|
inline comments.
|
|
- Filter-chain now has a builtin delay line filter. (#2320)
|
|
- Filter-chain can now parse the config key correctly in all cases.
|
|
- The ROC sink and source saw many improvements. roc-source is now a stream
|
|
by default that connects to the default sink. Both modules will try to set
|
|
a graph rate. Both modules have an option to select the FEC mode.
|
|
The ROC source has lower latency now. (#2331)
|
|
- Handle realloc errors better.
|
|
|
|
## tools
|
|
- pw-cat does not have --list-targets anymore, use one of the more
|
|
advanced and less buggy tools such as wpctl or pw-cli to list
|
|
sinks and sources.
|
|
- pw-top has seen many improvements.
|
|
* It now has some timeouts to reset the node values to their default
|
|
state when unused.
|
|
* The man page was improved.
|
|
* Invalid timings and errors are displayed in a better way.
|
|
- pw-cli and pw-link can now create links between all ports of given nodes.
|
|
- pw-cat can now save to other file formats than wav, based on the extension
|
|
of the filename.
|
|
|
|
## SPA
|
|
- The resampler now uses a different internal method for draining. It can
|
|
now also handle 0 size buffers as input without draining.
|
|
- The channelmixer now uses the front channel averages for FC and LFE.
|
|
This avoids clipping and results in much better upmixing.
|
|
- ALSA should now work again on 32 bits. (#2271)
|
|
- The JSON parser now converts escaped unicode correctly to UTF8.
|
|
|
|
## bluetooth
|
|
- Codec switch improvements when the device is disconnected. (#2334)
|
|
|
|
## pulse-server
|
|
- There is a new module-roc-sink-input module, the the PulseAudio equivalent.
|
|
- The ROC source and sink-input module now have a much lower latency.
|
|
- The ROC module now has an option to select FEC mode.
|
|
- Playback and record rate adjustements should work now. (#1159)
|
|
|
|
## JACK
|
|
- Remove some useless pthread attributes. This makes JACK work in QEMU with
|
|
sandboxing enabled. (#2297)
|
|
- The buffer_size callback is now only called when something has changed
|
|
since the last process() callback or get_buffer_size() method. This
|
|
fixes a GStreamer issue and is more in line with what JACK does. (#2324)
|
|
- Fix a potential deadlock when the process thread is doing IPC and the
|
|
IPC thread is blocking on the data thread.
|
|
- Allocation errors in metadata are handled better.
|
|
|
|
# PipeWire 0.3.50 (2022-04-13)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- pw-stream can now report more timing information and can suggest
|
|
the optimal number of samples to queue for playback.
|
|
- pw-dot now works again..
|
|
- module-pulse-tunnel latency was improved.
|
|
- WINE applications using the JACK backend should no longer crash.
|
|
- The channelmixer defaults are improved and the muffled sound when
|
|
playing back 5.1 and 7.1 material has been fixed.
|
|
- Many fixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- pw-stream now places a suggested amount of samples in the pw-buffer
|
|
for playback. This allows you to remove some places where
|
|
spa_io_rate_match was needed to get this information.
|
|
- pw-stream has new API to request a timing update. New fields are
|
|
added in the timing info, such as number of buffered samples in
|
|
the resampler and the number of queued and dequeued buffers.
|
|
- pw-stream has support for double controls now. More controls are
|
|
exposed such as the Rate control to do adaptive resampling.
|
|
- The thread-utils object was moved to the context to avoid some
|
|
concurrent use cases that caused crashes. (#2252)
|
|
- Deactivating an exported node/stream will now remove the node from
|
|
the data-thread immediately so that the process function will not
|
|
be called anymore and resources can be safely freed. This could
|
|
fix some of the last remaining crashes when streams are stopped.
|
|
- PipeWire will now fail to load a module that tries to register
|
|
the same export type twice instead of silently doing the wrong
|
|
thing. (#2281)
|
|
|
|
## Modules
|
|
- Many modules now use the NODE_WANT_DRIVER instead of the
|
|
pipewire.dummy NODE_GROUP property. This makes it possible to use
|
|
them with any other driver and can avoid resampling in some
|
|
cases.
|
|
- module-pulse-tunnel now uses an adaptive resampler to keep the
|
|
latency under control. Latency should be much better than before
|
|
and stay constant even when there are network delays.
|
|
- There is now an option for packages to disable building the RTKit
|
|
module, which is still built by default for backwards compatibility
|
|
reasons.
|
|
- A leak was fixed in filter-chain. (#2220)
|
|
- Module node names are now made more unique with the pid.
|
|
|
|
## tools
|
|
- pw-cat verbose output has been improved.
|
|
- pw-link now has a man page. (#2263)
|
|
- pw-reserve now has an -r option to make it issue a RequestRelease
|
|
command on the owner of the device. This makes it possible to ask
|
|
WirePlumber to close and release a device.
|
|
- Fix pw-dot again. It didn't work anymore because of stray done
|
|
events that were emitted to notify the client of object serials.
|
|
(#2253)
|
|
|
|
## SPA
|
|
- The channelmixer now has PSD upmixing enabled again. We used the
|
|
simple upmixing in the previous release but that just sounds too
|
|
aweful to be a good default. (#861) and (#2219)
|
|
- The channelmixer will not upmix FC and LFE anymore when upmixing is
|
|
explicitly disabled. (#2266)
|
|
- The channelmixer will only lowpass filter FC and LFE channels when
|
|
they were upmixed. (#2280)
|
|
- The defaults of the channelmixer were tweaked a little. There is now
|
|
a little bit more bass in the LFE channel and more high fequencies
|
|
in the FC channel when upmixing. Also the channel widening has been
|
|
disabled by default.
|
|
- Locale independent float parsing now uses a more portable solution
|
|
with uselocale.
|
|
- ALSA will now only allocate a buffer size big enough to hold 4
|
|
times the quantum limit instead of as large as possible.
|
|
|
|
## pulse-server
|
|
- Internal cleanups in handling of modules.
|
|
- A quirk to force s16 sample formats for teams-insider has been added.
|
|
|
|
## JACK
|
|
- The data-loop is now started in activate and stopped in deactivate.
|
|
This makes the data-loop respect any custom thread functions you
|
|
configure. This also makes WINE apps using the JACK backend work.
|
|
(#1495).
|
|
- Port sorting was improved/fixed. (#2260)
|
|
|
|
# PipeWire 0.3.49 (2022-03-29)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Sample rate switching should work again.
|
|
- pw-dot can now use the output of pw-dump to render a graph.
|
|
- Bluetooth A2DP streaming was improved that would reduce stuttering on
|
|
some devices.
|
|
- A JACK bug was fixed that would sometimes make it impossible to add more
|
|
tracks in Ardour. (#1714)
|
|
- Many bugfixes and improvements.
|
|
|
|
## PipeWire
|
|
- Fix a potential crash when NULL params were configured.
|
|
- Add some simple functional tests to avoid some recent regressions. Improve
|
|
the test framework for this as well.
|
|
- Improvements to the poll loop to avoid some use-after-free scenarios.
|
|
- Fix samplerate switching again.
|
|
- setlocale is not called anymore from the pipewire library. This should be
|
|
called by the application. (#2223)
|
|
- pw_init() and pw_deinit() can now be nested and called multiple times.
|
|
- pw_stream will now report the resampler delay in the pw_time.queued field.
|
|
|
|
## modules
|
|
- module-filter-chain now supports arbitrary many properties and will use
|
|
property hints to assign them the right type.
|
|
- The ROC modules now accept a sink/source_properties parameter.
|
|
- The module-rt can now also be built without RT-Kit support.
|
|
- module-echo-cancel can now use a fraction to specify the delay for more
|
|
precise control.
|
|
|
|
## SPA
|
|
- The channelmixer will now do upmixing by default and will not use
|
|
normalization. It will also use a simple upmixing algorithm that duplicates
|
|
channels by default. A more interesting upmix method is also available (PSD)
|
|
but needs to be enabled manually. (#861)
|
|
- Add SSE optimized (de)interleave functions for 32 bits samples with and
|
|
without byteswap.
|
|
- JSON parsing of empty strings will now give an invalid number instead of
|
|
0.
|
|
- JSON numbers are now parsed and serialized in a locale independent way so
|
|
that , and . are not mixed up.
|
|
- The resampler will now report the resample delay and queued samples as the
|
|
extra delay.
|
|
|
|
## tools
|
|
- pw-cat will read more dsf files correctly and will not crash at the end.
|
|
- pw-top now has a man page.
|
|
- pw-dot can now use the output of pw-dump to render a graph.
|
|
|
|
## bluetooth
|
|
- Improve interactions with oFono.
|
|
- Fix recovery with slow connections.
|
|
- Improve frame size of AptX-ll.
|
|
- A2DP can now use any quantum and will flush packets in smaller chunks
|
|
when needed to adapt. This improves stuttering in some cases.
|
|
|
|
## pulse-server
|
|
- The server configuration can now be placed in pulse.properties section,
|
|
which also makes it possible to have custom overrides.
|
|
- Implement FIX_ flags for capture as well.
|
|
- Small fixes and improvements in module loading.
|
|
|
|
## JACK
|
|
- Clear the last error before executing a new action or else we could end up
|
|
with error from a previous action. This causes some problems in Ardour where
|
|
adding a track would fail after some time. (#1714)
|
|
|
|
|
|
# PipeWire 0.3.48 (2022-03-03)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Fix IEC958 passthrough again.
|
|
- Fix pulse-server crashes when playing a sample.
|
|
- Support for more a more advanced upmixing algorithm.
|
|
- filter-chain now supports arbitrary many ports.
|
|
- Fix multichannel support in WINE. (with new WirePlumber).
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- The work queue is now created in the context so we can fail early and
|
|
avoid further error checking in various places.
|
|
- Fix a potential use after free with threaded loops.
|
|
- The protocol now has a message footer. This is used to pass around
|
|
global state such as the last registered object serial number. This can
|
|
be used to detect when a client tries to bind to old (but reused)
|
|
object ids. This avoids some races in the session manager but also
|
|
when binding objects.
|
|
- The zero-denormals CPU flag is now not touched anymore unless explicitly
|
|
selected by the user. Denormals are avoided in filter-chain now in
|
|
software. If the zero-denormals are now only configured in the data
|
|
thread. This should fix issues with luajit. (#2160)
|
|
- Configuration parsing will not actually fail on errors.
|
|
- pw-top now correctly clips unicode characters.
|
|
- Many places now use a dynamic POD builder to support arbitrary large
|
|
property sets.
|
|
- pw-stream now support PropInfo parameters so that they can announce
|
|
custom properties.
|
|
- Serial number are now also set on metadata and session-manager objects.
|
|
|
|
## SPA
|
|
- audioadapter is now smarter when trying to fixate the format. It will
|
|
use the PortConfig format to fill in any wildcards. This results in
|
|
the least amount of conversions when the stream can handle it. It also
|
|
is part of a fix (also requires a session manager fix) for WINE
|
|
multichannel support. (#876).
|
|
- Fix 5.1 to 2 channels mixing. It was using the volume of the stereo
|
|
pair on all channels.
|
|
- Fix some weird volume issues when a source is capturing and
|
|
channelmixing.
|
|
- Add stereo to 7.1 upmixing.
|
|
- The channelmix parameters can be changed at runtime now.
|
|
- Many improvements to the upmixing algorithms. Rear channels are now
|
|
constructed from the ambient sound and can have delay and phase shift
|
|
applied to them to improve spacialization. The stereo channels can
|
|
be filtered so that the dialog is more concentrated in the center
|
|
channel. (#861)
|
|
|
|
## modules
|
|
- Module X11 bell received cleanups and improvements.
|
|
- The module now has a private method to schedule unload later. This
|
|
simplifies cleanup in many modules.
|
|
- module-filter-chain now handles arbitrary many ports and control
|
|
ports. (#2179)
|
|
- Fix a bug in RAOP where it was reading from the wrong port. (#2183)
|
|
|
|
## pulse-server
|
|
- Nodes with the DONT_MOVE property should fail with -EINVAL when
|
|
they are moved.
|
|
- Fix a segfault when playing a sample. (#2151)
|
|
- The _FIX flags in pulse-server also now ignore the configured
|
|
sample format, just like pulseaudio does. (#876)
|
|
- Fix IEC958 passthrough again. It got accidentally broken since
|
|
0.3.45 with a fix for another issue. (#1442)
|
|
- Fix module-null-sink device.description. (#2166)
|
|
|
|
## Bluetooth
|
|
- Don't try to connect HSP/HFP when no backend is available.
|
|
|
|
|
|
# PipeWire 0.3.47 (2022-02-18)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
This is a quick emergency release to fix some severe
|
|
problems with the previous release.
|
|
|
|
## Highlights
|
|
- Fixes a bug in pulse-server that caused cached notifications
|
|
to play multiple times. (#2142)
|
|
- Removed check and warnings to catch leaked listeners on the
|
|
proxy. This might access invalid memory and cause infinite
|
|
loops in older wireplumber.
|
|
|
|
# PipeWire 0.3.46 (2022-02-17)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Fix a critical bug in pipewire-pulse buffer size handling that made some
|
|
apps (MuseScore, ... ) stutter.
|
|
- Fix a critical bug where devices would not show when the kernel was
|
|
compiled without VERBOSE_PROCSFS.
|
|
- JACK clients will now use lock-quantum by default. This makes sure that
|
|
all dynamic quantum changes are disabled while a JACK app is running.
|
|
The only way to force a quantum chance is through a JACK app or with
|
|
the metadata.
|
|
- Almost all limits on number of ports, clients and nodes are removed.
|
|
- A Dummy fallback sink is now automatically created when there are no
|
|
other sinks. This avoids stalling browsers.
|
|
- Sound sharing with Zoom should work better. A new WirePlumber release
|
|
might be required.
|
|
- Many more fixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Update docs with new config overrides.
|
|
- The rule matching logic was moved to config and code is now shared with
|
|
pulse-server and JACK.
|
|
- Add new Romanian translation.
|
|
- When a quantum is forced with metadata, any node that asked to lock-quantum
|
|
is ignored so that the quantum change can happen.
|
|
- Fix a bug where a mixer was removed twice, leading to potential memory
|
|
corruption.
|
|
- The port limits on nodes and filters are now removed. Some code was
|
|
simplified.
|
|
- Fix a potential leak because listeners where removed while they could be
|
|
emitted.
|
|
- Improve context.exec and avoid zombie processes.
|
|
|
|
## Modules
|
|
- The RAOP module now has a default latency of 2 seconds, like PulseAudio.
|
|
- The echo-cancel module now uses the plugin loader to load the backends.
|
|
This makes it possible to add custom, out of tree, echo cancel plugins.
|
|
|
|
## Tools
|
|
- Improve help of pw-link.
|
|
- Output to stdout and error to stderr. Use setlinebuf for stdout to improve
|
|
piping between apps. (#2110)
|
|
|
|
## SPA
|
|
- Improve removing sources when dispatching. Also improve performance now
|
|
that a destroy loop can be removed. (#2114)
|
|
- Fix an fd leak in the logger when logging to a file.
|
|
- Improve loop enter/leave checks and support recursive loops.
|
|
|
|
## pulse-server
|
|
- Clamp various buffer attributes to the max length. Fixes some issues
|
|
with various applications. (#2100)
|
|
- Module properties are now remapped correctly from their pulseaudio variant
|
|
to the PipeWire ones.
|
|
- Fix module index in introspect. Use the right index when loaded from our
|
|
internal modules. (#2101)
|
|
- Improve argument parsing and node.description. (#2086)
|
|
- The sink-index should now be filled in correctly when playing a sample.
|
|
(#2129)
|
|
- module-always-sink is now implemented and loaded by default. (#1838)
|
|
- Add support for loading some modules only once.
|
|
- Module load and unload now does extra sync to make it appear synchronous,
|
|
like in PulseAudio. This improves sounds sharing in Zoom.
|
|
|
|
## ALSA
|
|
- Fix critial bug where alsa devices would not show when the kernel was
|
|
compiled without VERBOSE_PROCFS.
|
|
- Some corner cases were fixed in the ALSA timing code. When the capture node
|
|
is follower, it will now not try to read too much data and xrun but it will
|
|
instead produce a cycle of silence.
|
|
- Various fixes and improvements to make ALSA devices resync to the driver
|
|
more quickly and accurately.
|
|
|
|
## JACK
|
|
- Add an option to name the defauld device as `system` to improve
|
|
compatibility with some applications,
|
|
- Use lock-quantum by default. This makes sure that all dynamic quantum
|
|
changes are disabled while a JACK app is running. The only way to force
|
|
a quantum chance is through a JACK app or with the metadata.
|
|
- It is now possible to do IPC calls from the data thread. Note that this
|
|
is a very bad idea but required for compatibility with JACK2.
|
|
|
|
## GStreamer
|
|
- GStreamer sink will now set a default channelmap to make it possible to
|
|
remap to the channel layout of the device.
|
|
|
|
# PipeWire 0.3.45 (2022-02-03)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Zoom, telegram and other apps should be able to play sound again.
|
|
- Implement a better way to force and lock JACK buffersize.
|
|
- Default sink and source names and properties are improved.
|
|
- The config loader can now load and merge fragments in conf.d directories
|
|
for easier user configuration of config files.
|
|
- Many small bug fixes and improvements.
|
|
|
|
## PipeWire
|
|
- pw-cli can now also send Commands to nodes. This can be used to Suspend
|
|
a device, for example.
|
|
- The eventfd was removed from loops and invoke is now used to stop the loop,
|
|
this saves an fd.
|
|
- New Alpine CI target to test musl builds, various build fixes.
|
|
- Add force-quantum and force-rate properties.
|
|
- The config loader can now load and merge fragments in conf.d directories.
|
|
(#207)
|
|
- resource error methods can be called without a resource and then just
|
|
log an error message.
|
|
- link-factory can now also work from the config. (#2095)
|
|
|
|
## modules
|
|
- module-simple-protocol has better argument parsing and can handle
|
|
channelmap now. (#2068) It's also possible to configure latency and
|
|
rate.
|
|
- The native protocol now does extra checks for invalid data. (#2070)
|
|
|
|
## ALSA
|
|
- TI2902 chips as found in various Behringer cards should have inputs
|
|
again.
|
|
- Better handling of busy devices in udev, retry when the inotify close
|
|
event is emited.
|
|
|
|
## SPA
|
|
- plugins now handle alignment properly and only expect the max alignment
|
|
required for the CPU. (#2074)
|
|
|
|
## Bluetooth
|
|
- SBC-XQ is now enabled for the JBL Endurance RUN BT headset.
|
|
- Support for non-hexadecimal XAPL version strings to improve compatibility.
|
|
- Use HCI commands again to probe the adapter msbc capability. This improves
|
|
compatibility with some adapters. (#2030)
|
|
- Set the right startup volume.
|
|
- Better A2DP source idle handling.
|
|
- Fix a timer bug in SCO sink that could cause busy looping.
|
|
|
|
## pulse-server
|
|
- A playback issue when the tlength > maxlength was fixed. (#2069) This
|
|
affected Zoom and other applications.
|
|
- The STREAM_BUFFER_ATTR command is now implemented.
|
|
- Module names are improved. (#2076)
|
|
- Many small fixes and improvements.
|
|
- Fix a pavucontrol crash with invalid channels. (#1442)
|
|
|
|
## JACK
|
|
- Use the new force-quantum and force-rate properties in the JACK API to
|
|
switch quantum and ensure it can't change for the lifetime of the JACK
|
|
app. (#2079)
|
|
|
|
# PipeWire 0.3.44 (2022-01-27)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- It is now possible to run a minimal PipeWire server without a session
|
|
manager, enough to run JACK clients.
|
|
- The maximum buffer size is now configurable and can be larger than
|
|
the previously hardcoded limit of 8192 samples. When using high sample
|
|
rates, the larger buffer size can avoid xruns.
|
|
- The default maximum latency was reduced from 170ms to 42ms. This should
|
|
improve overall latency for application that ask for a large latency,
|
|
such as notifications.
|
|
- Better JACK compatibility. Patchbays should now get less confused about
|
|
ports appearing and disappearing.
|
|
- Fix some bluetooth crashes.
|
|
- Fix some races in ALSA device detection.
|
|
- Many bug fixes and improvements all over the place.
|
|
|
|
## PipeWire
|
|
- Bump the meson requirement to 0.59.0.
|
|
- pw-top now reports correct times for filter-chain and loopback.
|
|
- max-quantum is now also scaled with the rate. A new quantum-limit
|
|
property was added as a hard limit for the quantum. This makes it
|
|
possible to configure for larger than 8192 buffer sizes. Note
|
|
than many JACK applications have a hardcoded 8192 limit. (#1931)
|
|
- The max-quantum was reduced to 2048, This gives a 42ms default
|
|
latency. (#1908)
|
|
- pw-filter can now return a NULL buffer from _get_dsp_buffer().
|
|
- Add a PIPEWIRE_RATE and PIPEWIRE_QUANTUM env variable to set the
|
|
graph rate and the graph quantum and rate respectively.
|
|
- Fix a potential file descriptor leak in the connection.
|
|
- A new minimal.conf file was added to demonstrate a static setup
|
|
of a daemon that doesn't require a session manager and is able to
|
|
run JACK applicaions.
|
|
- Nice levels are now only changed on the servers, not the clients.
|
|
- Add an option to suspend nodes when idle.
|
|
- Make it possible to avoid quantum and rate changes with
|
|
pw-metadata. This is essential in a locked down system.
|
|
- Handle mixer port errors better and fail to create the link instead
|
|
of silently not working.
|
|
- Nodes that are moved to a driver now have all the linked nodes moved
|
|
as well. This makes it possible to run some graphs without a
|
|
driver, such as paplay -> zita-j2n.
|
|
- pw-cli and pw-dump can now also list objects by name, serial and
|
|
object.path using glob style pattern matching.
|
|
|
|
|
|
## modules
|
|
- filter-chain can now also configure parameters by index.
|
|
- Fix the client name of module-protocol-simple. (#2017)
|
|
- module-rtkit was merged into module-rt. This makes it easier to
|
|
ship a default config that works on more systems by default.
|
|
- module-adapter can now configure the adapter node from the config.
|
|
Previously, this was a task only performed by the session manager.
|
|
- module-metadata can now also create metadata object from the
|
|
config file.
|
|
- The ROC module should now work again. (#2045)
|
|
- An X11-bell module was added to handle X11 bell events. (#1668)
|
|
- filter-chain and loopback modules now have better unique default
|
|
names for the streams, which makes it possible to save and restore
|
|
their volumes independently. (#1983)
|
|
- module-echo-cancel now has properties to control the delay and
|
|
buffer size.
|
|
|
|
## ALSA
|
|
- The monitor names are now correctly parsed.
|
|
- The default period size for batch devices is limited now to avoid
|
|
large latency.
|
|
- The unused min/max-latency properties were removed.
|
|
- Internal latency is now also configurable with params at runtime.
|
|
- The udev rule for TI2902 was removed because it causes problems.
|
|
- Fix a race where some devices would sometimes be missing. (#2046)
|
|
- Add some more timeouts to work around a race in udev device
|
|
permission changes when switching VTs.
|
|
|
|
## SPA
|
|
- Fix potential infinite loop in audioconvert.
|
|
- The spa-resample tools can now also use optimized implementations.
|
|
- Fix a potential crash in resampler. (#1994)
|
|
- audioconvert can now also handle F64 formats. (#1990)
|
|
- The channelmixer now does normalization by default to avoid clipping
|
|
when downmixing is active.
|
|
- The channelmixer will now generate LFE channels when the lfe_cutoff
|
|
frequency is set, even when upmix is disabled.
|
|
- The channelmixer will now always generate FC when the target has it.
|
|
- Adapter now reports latency correctly, even after linking the monitor
|
|
ports.
|
|
- Reduce memory usage and preallocated memory in some of the
|
|
audioconvert nodes.
|
|
- Many properties are now exposed in adapter, such as the resample
|
|
quality.
|
|
- The resampler and channelmixer can now be disabled.
|
|
|
|
## V4L2
|
|
- pw-v4l2 now also works for ffplay. (#2029)
|
|
- Take product names from udev now that the kernel returns a generic
|
|
name.
|
|
|
|
## JACK
|
|
- The jack pkgconfig file now has the `jack_implementation=pipewire`
|
|
variable to be able to distinguish jack implementations. (#1666)
|
|
- jconvolver now starts correctly again. (#1989)
|
|
- The object.serial is now used for the port_id. This makes it easier
|
|
to track old objects in the cache.
|
|
- Add a dummy jacknet implementation. (#2043)
|
|
- A bug in the port allocation was fixed that would make it impossible
|
|
to allocate ports at some point. (#1714)
|
|
|
|
## Bluetooth
|
|
- Bluetooth profiles are now saved properly by the session manager.
|
|
- Improved profile detections, increased timeouts for slow devices.
|
|
- Implement HFP call indicator for improved compatibility.
|
|
- Handle the case where bluez does not set the adapter or address
|
|
properties on the device instead of crashing.
|
|
- Improved support for setting the profile from the session manager.
|
|
|
|
## pulse-server
|
|
- Monitor sources now have the device.class=monitor for better
|
|
compatibility.
|
|
- Behaviour after seeking is improved. The algorithm for requesting
|
|
bytes from the client was simplified and improved. (#1981)
|
|
- module-ladspa-sink implements the control argument now. (#1987)
|
|
- A potential memory leak in the message queue was fixed. (#1840)
|
|
- Use the object.serial for the pulseaudio object index. The index is
|
|
not supposed to be reused and this would cause problems with some
|
|
clients.
|
|
- Servers should now again be able to listen in IPv4. (#2047)
|
|
- module-x11-bell was added. (#1668)
|
|
- There is now support for per-application quirks and properties in
|
|
the pipewire-pulse.conf file. Per-application latency and buffering
|
|
properties can also be configured.
|
|
- Fix a regression in telegram sounds not playing.
|
|
|
|
# PipeWire 0.3.43 (2022-01-05)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Flatpak apps such as Ardour can now remove links again.
|
|
- Many fixes to pulse-server. Memory usage should be improved. Some
|
|
crashes are fixed. Underrun handling should work better. Better
|
|
compatibility with GStreamer based applications after seeking.
|
|
- Many of the samplerate and quantum changes bugs in previous releases
|
|
were fixed. This fixes some issues where the microphone would fail
|
|
to work.
|
|
- Many more small fixes and improvements all over the place.
|
|
|
|
## PipeWire
|
|
- Quantum and rate changes are now applied immediately when the driver
|
|
is idle. This avoids setting the driver in the previous samplerate.
|
|
(#1913)
|
|
- Object destruction now does not need write permissions anymore. This
|
|
restriction needs some more work. (#1920)
|
|
- When we reposition, start a sync operation. This fixes a problem
|
|
in Ardour when seeking. (#1907)
|
|
- Require meson 0.56.0
|
|
- Make the align property in BUFFER_PARAM optional. We now only set this
|
|
if the plugin has specific requirements and we default to the CPU
|
|
largest alignment requirement.
|
|
- pw-record will now also list monitors and streams as possible targets.
|
|
|
|
## modules
|
|
- Improve LV2 plugin support in filter-chain. Add support for Worker and
|
|
Options.
|
|
- The loopback module now has a unique media.name to make it possible
|
|
for the session manager to restore unique volume settings.
|
|
|
|
## SPA
|
|
- Improve sample rate for EAC3 streams, some clients scale it while
|
|
others don't so use some heuristics to make things work better.
|
|
(#1902)
|
|
- Allocate ports dynamically in audioconvert. This avoids using larger
|
|
memory blocks of preallocated memory that confuses the allocator.
|
|
(#1840)
|
|
|
|
## ALSA
|
|
- Merge the latest pulseaudio UCM improvements. (#1849)
|
|
- Fixes for selecting the sample rate. (#1892)
|
|
- Improve latency on USB devices by scaling the period size based on
|
|
the desired quantum when the device is opened.
|
|
- Add api.alsa.period-num to configure the amount of periods to use
|
|
in the device. Some devices have lower latency when a small value
|
|
is forced. (#1473)
|
|
- Allow multi-rate by default. In previous versions cards could only
|
|
be opened in one samplerate to avoid bugs in pre 5.16 kernels. This
|
|
however caused other problems so the default was removed.
|
|
- Fix a bug where a card was not freed correctly.
|
|
- Fix a bug in the alsa boundary check that could hang the alsa-plugin
|
|
for a long time.
|
|
- The ALSA plugin now has a parameter to configure the allowed
|
|
samplerates.
|
|
|
|
## JACK
|
|
- Improve handling of monitor nodes.
|
|
|
|
## Bluetooth
|
|
- Codecs now have a priority. This should improve codec selection.
|
|
|
|
## pulse-server
|
|
- The stream FIX_ flags are now implemented. (#1912)
|
|
- Improve flushing and draining behaviour. Short samples will now
|
|
play correctly. (#1549)
|
|
- Fix a crash when enumerating the formats. (#1928)
|
|
- Track quantum changes and update the amount of required buffering
|
|
accordingly. This improves forced quantum handling. (#1930)
|
|
- Improve handling of channels > 32.
|
|
- Handle the case where a module is destroyed before it could be
|
|
completely loaded.
|
|
- Fixes some issues when samples were removed while they were playing.
|
|
(#1953)
|
|
- Fix some issues in module-zeroconf-publish.
|
|
- Fix some memory leaks in module-roc.
|
|
- Add command access control. This avoids execution of commands without
|
|
proper authentication.
|
|
|
|
# PipeWire 0.3.42 (2021-12-16)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
This is a quick emergency release to fix some severe
|
|
problems with the previous release.
|
|
|
|
## Highlights
|
|
- Fixes a bug in pulse-server underrun handling that broke qemu
|
|
and orca.
|
|
- A fix was added to pulse-server to handle quantum changes
|
|
gracefully.
|
|
- Fix module-echo-cancel again.
|
|
- Fix a bug where the bluetooth headset capture was producing
|
|
noise.
|
|
|
|
|
|
# PipeWire 0.3.41 (2021-12-13)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Improved compatibility for flatpaks. Flatpaks with newer PipeWire
|
|
version can connect to an older server in all cases.
|
|
- A new RAOP module was added to stream to Apple Airplay devices.
|
|
- OBS can now capture from the monitor devices again when using
|
|
WirePlumber.
|
|
- Improved JACK compatibility. Improved stability in Carla and Ardour
|
|
when changing buffer size. Improved latency calculations and
|
|
playback latency in Ardour.
|
|
- Improved pulse-server handling of underruns and buffer size changes.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- The systemd service files now have better names.
|
|
- client.access permission checks are improved.
|
|
- Fix some memory leaks in error paths.
|
|
- Objects now have a global serial number that is unique for the
|
|
lifetime of the server.
|
|
- Make clock.rate, clock.allowed-rates and clock.quantum
|
|
runtime tunable parameters with the settings metadata.
|
|
- Add some additional memory checks in client-node to avoid
|
|
sending invalid memory to clients. (#1859)
|
|
- Improve buffer memory allocation. If one of the nodes is a
|
|
remote node, ensure we only use memory that can be shared.
|
|
- Version checks when binding to objects is removed. This means
|
|
that newer clients can now bind to older servers, which is
|
|
a typical case for a flatpak.
|
|
- A bug in the latency calculations was fixed where it would in
|
|
some cases report the wrong minumum latency.
|
|
|
|
## modules
|
|
- module-echo-cancel has voice-detection enabled now.
|
|
- module-raop-sink and module-raop-discover to stream audio to
|
|
an Apple Airplay device.
|
|
- module-filter-chain now has preliminary support for LV2
|
|
plugins.
|
|
|
|
## SPA
|
|
- The audio resampler now has improved buffer size calculations.
|
|
In some cases it was too small and would cause distortions.
|
|
- More checks are done when doing volume changes so that the
|
|
channelmap is correct.
|
|
- Audioadapter now exposes most config options with params so that
|
|
they can be adjusted at runtime.
|
|
- The resampler can now calculate the expected input buffer size
|
|
before receiving the first buffer, which avoids some confusion
|
|
when starting streams.
|
|
- Support was added for some 10bit video formats.
|
|
- MONO channel handling was improved.
|
|
- Most plugins now set a clock name and this is configurable where
|
|
it makes sense. The clock.system.monotonic clock name is used
|
|
for most plugins that use the system clock for timing.
|
|
|
|
## pulse-server
|
|
- implement module-raop-discover
|
|
- Use STREAM_CAPTURE_SINK property when capturing from a monitor
|
|
source to better inform the session manager. This fixes some
|
|
issues where OBS would capture from the microphone instead of
|
|
the output monitor.
|
|
- Limit the amount of cache messages to 16MB and don't add large
|
|
memory blocks to the cache. This should fix some excessive
|
|
memory usage that people reported.
|
|
- Fix a potential memory leak when cleaning up a client.
|
|
- Do some additional checks to avoid buffer overruns.
|
|
- Improve recovery from underruns better. (#1857) This improves
|
|
seeking in gnome-music.
|
|
- Improve recovery when the quantum is forced larger that the
|
|
stream configured latency.
|
|
- The prebuf state is now handled correctly.
|
|
|
|
## JACK
|
|
- A per type object cache is now implemented. This ensures that
|
|
port objects remain valid for a longer time because many
|
|
JACK applications inspect objects after they are destroyed.
|
|
This improves catia/carla compatibility.
|
|
- Recompute the latencies when the buffer-size changes. Fix some
|
|
cases where we would end up with negative latencies.
|
|
- Handle regcomp errors to avoid some crashes later.
|
|
- Latency calculations are improved a lot.
|
|
- More care is taken to not call a process callback while a buffer
|
|
size change is pending. This fixes some crashes in Carla, which
|
|
expect that all clients are paused when one handles the buffersize
|
|
callback.
|
|
- Loopback links to a client are now handled correctly and without
|
|
latency. This fixes playback latency in ardour6 (#1839)
|
|
|
|
## ALSA
|
|
- ALSA devices now keep track of the samplerate of the card and
|
|
ensure that all PCM use the same rate. This is a workaround for
|
|
a kernel bug that is fixed in 5.16.
|
|
- Refactor the ALSA plugin a little.
|
|
- The ALSA plugin now reports correct delay for a capture PCM. (#1697)
|
|
- The ALSA nodes now expose all config options with params that can be
|
|
changed at runtime.
|
|
- The ALSA node has a configurable clock name. Adaptive resampling to
|
|
match clock rates is avoided when the driver has the same clock
|
|
name as the ALSA node. This can be used to link alsa devices together
|
|
with a word clock.
|
|
|
|
# PipeWire 0.3.40 (2021-11-11)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- Producers and consumers can now incrementally negotiate a format
|
|
by narrowing down the options. This can be used to select an optimal
|
|
combination of format and modifiers.
|
|
- Driver nodes such as the consumer of a headless compositor can now
|
|
throttle the speed based on a new trigger_done event.
|
|
- Headless compositors can now signal a damage event to consumers
|
|
to start the processing of the graph.
|
|
- Compatibility improvements in JACK.
|
|
- Draining and resuming is now working correctly in pulse and alsa.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Many BSD fixes.
|
|
- clang compilation fixes.
|
|
- Fix map implementation on big-endian machines.
|
|
- Improve tracking of param changes in pw-stream.
|
|
- Add support for renegotiation. With this change, producer and
|
|
consumer can incrementally renegotiate a format until it is fixed.
|
|
This will be used to do complex negotiation of DRM modifiers.
|
|
(#1732).
|
|
- Add a trigger-done event in the stream. This can be used to know
|
|
when processing of the complete graph has finished after issuing
|
|
a trigger_process() and it can be used to throttle processing.
|
|
- Add a RequestProcess node event and command. This can be used by
|
|
non-driver nodes to suggest to a driver to start processing. One
|
|
case is where a compositor can emit this event as a result of a
|
|
screen update to let the headless compositor start an update.
|
|
- Fix zeroconf sample format.
|
|
- pw-mon outputs to stderr now and has colors.
|
|
|
|
## SPA
|
|
- Fix compilation on ppc and armv7.
|
|
- Fix port type check for ALSA seq midi ports so that they are not
|
|
falsely listed as hardware.
|
|
- Fix crash when running SSE code on unsupported HW. (#1775)
|
|
- The libcamera plugin was rewritten. It now supports hotplug,
|
|
format enumeration and an easier to read codebase.
|
|
- Fix compatibility some more for cards with 64 channels.
|
|
|
|
## pulse-server
|
|
- Flush data in pause in combine-sink to avoid stray audio fragments.
|
|
- Fix a race where not all objects were removed correctly.
|
|
- The latency calculations and setup was improved to more closely
|
|
match pulseaudio behaviour. PULSE_LATENCY_MSEC should now resemble
|
|
pulseaudio more closely. (#1769)
|
|
- The drained reply is now sent only once and new data will be
|
|
accepted once the drain completes.
|
|
- Fix a potential crasher bug where the stream started processing
|
|
before the setup was completed.
|
|
- The server will now drop the client connections when the pipewire
|
|
connection is lost.
|
|
|
|
## JACK
|
|
- Rework the jack_port_get_buffer() method to return the same memory
|
|
when called multiple times during the process() callback. This makes
|
|
things work on a new Hydrogen. (#1748)
|
|
- Add an option to disable showing the monitor ports.
|
|
- JACK ports are now sorted per node/client and port_id. This should
|
|
more closely match JACK behaviour and avoid random port order.
|
|
(#1780)
|
|
|
|
## v4l2
|
|
- Fix v4l2 LD_PRELOAD script.
|
|
- Make sure we destroy the proxy when the global is destroyed.
|
|
|
|
## ALSA
|
|
- _prepare should exit the draining state. (#1467)
|
|
- Fix the precision of the _delay function by taking into account
|
|
the amount of queued samples are the correct samplerate.
|
|
|
|
|
|
# PipeWire 0.3.39 (2021-10-21)
|
|
|
|
This is a bugfix release that is API and ABI compatible with previous
|
|
0.3.x releases.
|
|
|
|
## Highlights
|
|
- media-session is now moved into a separate module to speed up its
|
|
deprecation in favour of WirePlumber.
|
|
- There is now an LD_PRELOAD v4l2 emulation library to run some existing
|
|
v4l2 applications on top of PipeWire.
|
|
- Filter-chains should now flush out remaining samples when paused. There
|
|
is now also the option to let a filter-chain drain so that long filters
|
|
such as reverbs can fade out properly.
|
|
- Stability and compatibility improvements in JACK apps.
|
|
- Better Bluetooth compatibility with more devices.
|
|
- libcamera plugin improvements.
|
|
- Many bugfixes and improvements all over the map.
|
|
|
|
|
|
## PipeWire
|
|
- Fix compilation on ARM.
|
|
- Log topics are added to most modules.
|
|
- Documentation updates. Many improvements to the layout. Reorganisation
|
|
of the modules and groups.
|
|
- Share a work queue for all links and nodes. This removes the need for
|
|
a separate eventfd per link and per node.
|
|
- Catch errors in the map implementation.
|
|
- Add option to compile without dbus support.
|
|
- Fix biquad frequency. It was using the wrong sample rate.
|
|
- Fix a potential crash when destroying nodes, in some cases the node
|
|
would not be deactivated properly.
|
|
- Add some more helpers for dealing with properties and their values.
|
|
- Implement flush and reset on virtual sinks/sources.
|
|
- Make it possible to let virtual sinks/filter-chains run and drain
|
|
after being idle.
|
|
- Fix a bug where the quantum could exceed the maximum because it was
|
|
scaled with the sample rate.
|
|
- Fix channel_map parsing in module-zeroconf-discover so that the remote
|
|
channel map is used.
|
|
- pw-stream errors emitted on the proxy are reported but not fatal
|
|
any more. They are usually used by the session manager to signal status
|
|
to the client but otherwise does not really cause an error on the
|
|
client.
|
|
- Links now also store the output and input node id in the global
|
|
properties so that applications can parse and use them regardless of
|
|
how the link was made. (#1723)
|
|
- pw-stream and pw-filter now have an event to notify commands.
|
|
- The echo-cancel module can now operate on larger quantums.
|
|
- pw-cat now uses the right metadata to find the default devices in
|
|
--list-targets.
|
|
|
|
## media-session
|
|
- Don't try to remix unpositioned streams when linking. This ensures
|
|
that linking to Pro-Audio nodes does not remix the stream channels
|
|
but links them as they are, one by one.
|
|
- media-session is now moved to a separate module to accelerate its
|
|
deprecation in favour of WirePlumber.
|
|
|
|
## SPA
|
|
- Many libcamera improvements, handle MemFd buffers, handle errors
|
|
gracefully.
|
|
- Small improvements to make interface fall-backs easier to implement.
|
|
- Add support to enable flush-to-zero and denormals-are-zero to avoid
|
|
high CPU usage when dealing with denormals.
|
|
- AUX13 channels are no longer reported as AUX12. (#1727)
|
|
- Devices with more than 32 channels in Pro-Audio mode now only
|
|
uses AUX channels.
|
|
- Improve windowing function of the resampler to reduce aliasing and
|
|
improve the quality.
|
|
|
|
## JACK
|
|
- Port connect callbacks will not only be emitted after the port
|
|
has negotiated buffers, which improves compatibility with
|
|
applications that try to use the port right after the callback
|
|
(jack_midi_latency_test).
|
|
- Fix crash when midi ports were removed and being monitored, like
|
|
in Ardour.
|
|
|
|
## pulse-server
|
|
- The pulse tunnel will now use the specified format/rate/channels.
|
|
- Improve lookup of default source and fall back to the monitors when
|
|
no sources are available.
|
|
- Mark some nodes as network nodes so that we can set the NETWORK flag
|
|
correctly.
|
|
|
|
## GStreamer
|
|
- The GStreamer element not releases the buffers in the stream again in
|
|
all cases so that they can be reused by other streams.
|
|
|
|
## v4l2
|
|
- Add a v4l2 LD_PRELOAD library to emulate v4l2 system calls on top of
|
|
PipeWire. This is tested with firefox and GStreamer and is known to
|
|
not work with Chrome.
|
|
|
|
## Bluetooth
|
|
- AAC compatibility improvements.
|
|
- Disable hardware volume for "Tribit MAXSound Plus" and
|
|
"SoundCore mini".
|
|
- Add quirk to disable faststream. Disable faststream on "FiiO BTR3".
|
|
- Add a dummy AVRCP player to improve compatibility with some devices.
|
|
|
|
|
|
# PipeWire 0.3.38 (2021-09-30)
|
|
|
|
This is a quick bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Topic based logging was added to improve debugging.
|
|
- An off-by-one error was fixed in the audio resampler that could
|
|
cause distortion when downsampling.
|
|
- Various bluetooth compatibility improvements.
|
|
- More fixes and improvements.
|
|
|
|
## PipeWire
|
|
- module-pulse-tunnel now has better default latency to make it work
|
|
better in more cases. There is also an option to configure the
|
|
desired latency.
|
|
- pw-cli now has readline support.
|
|
- Topic based logging was added. Log lines can now be filtered by
|
|
topic using wildcards. This should improve debugging.
|
|
- The systemd service files should now have better descriptions.
|
|
- Fix a crash in module-zeroconf-discover when unloading.
|
|
- Fix a crash in filter-chain when using unaligned memory.
|
|
|
|
## ALSA
|
|
- Sync the udev rules and profiles with pulseaudio.
|
|
- Fix a memory leak.
|
|
|
|
## SPA plugins
|
|
- An off-by-one error was fixed in the resampler that could cause
|
|
distortion when downsampling. (#1646)
|
|
|
|
## Bluetooth
|
|
- Avoid probing the native backend because it might block for DBus
|
|
activation. This fixes some long startup times.
|
|
- Fix the kernel version check, 5.14.x kernels should also support
|
|
mSBC.
|
|
- Fix FastStream microphone support in more cases.
|
|
- Add workaround for Intel AX200.
|
|
- SCO sink should now also work in follower mode.
|
|
|
|
## PulseAudio server
|
|
- Make the service file require a session manager.
|
|
|
|
|
|
# PipeWire 0.3.37 (2021-09-23)
|
|
|
|
This is a quick bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Capture and playback is now avoided even more on unavailable
|
|
devices. This should fix some issues where an unusable microphone
|
|
was selected by default. It should now also again be possible
|
|
to select an unavailable device as the default.
|
|
- Native DSD audio playback is now supported. pw-cat can now also
|
|
play DSF files with the -d option.
|
|
- JACK stability improvements with buffer-size and samplerate
|
|
changes in some apps.
|
|
- Many cleanups and bugfixes all over the place.
|
|
|
|
## PipeWire
|
|
- pw-metadata -d does not cause an infinite loop anymore. (#1622)
|
|
- Increase some plugin buffer sizes to fix some issues with many
|
|
channels. (#1620)
|
|
- Protect the global plugin list with a lock. Make sure pw_init()
|
|
is locked. Fixes some issues with concurrent ALSA plugin usage.
|
|
|
|
## media-session
|
|
- Unavailable devices can be set as the default again. (#1624)
|
|
- Do a better check if a device has available routes and avoid
|
|
selecting devices with unavailable routes as default.
|
|
- Media-session was moved to its own directory. It used to live
|
|
in examples but it is past the example stage and it interferes
|
|
with the build options for the real examples.
|
|
|
|
## Bluetooth
|
|
- The hardware quirk database is now loaded by the plugin instead of
|
|
the session manager. This makes it also work with wireplumber.
|
|
|
|
## ALSA
|
|
- The ALSA mixer now handles device removal much better. (#1627)
|
|
|
|
## libcamera
|
|
- Many fixes and improvement to the libcamera plugin. (#1513)
|
|
|
|
## pulse-server
|
|
- Improve compatibility with pulseaudio module arguments.
|
|
- Parse channel_map arguments in module-loopback. (#1486)
|
|
|
|
## JACK
|
|
- Delay emitting the samplerate and buffersize callbacks until the
|
|
client is active. This fixes some crashes with Carla and other
|
|
JACK apps.
|
|
|
|
# PipeWire 0.3.36 (2021-09-16)
|
|
|
|
This is a quick bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- A quick update with mostly only bugfixes and small improvements.
|
|
- Capture and playback is now avoided on unavailable devices. This
|
|
should fix some issues where an unusable microphone was selected
|
|
by default.
|
|
- MIDI output should not stop randomly now.
|
|
- The GStreamer elements are much improved, cheese should work
|
|
a lot better now.
|
|
- Virtual sinks and sources should now always show up immediately.
|
|
- JACK processing is now delayed until buffersize and samplerate
|
|
are emitted. This should improve stability of many JACK apps.
|
|
- JACK transport sync is now implemented correctly so that preroll
|
|
in bitwig works.
|
|
|
|
## PipeWire
|
|
- The module dir environment variable can now contain multiple paths.
|
|
- Documentation now contains dot graphs of dependencies. (#1585)
|
|
- config min/max/default quantum values are now scaled with the
|
|
samplerate.
|
|
- A potential crash was fixed where destroyed memory was still used
|
|
by a node. This could cause crashes in cheese.
|
|
|
|
## pipewire-media-session
|
|
- Only allow passthrough for passthrough formats (S/PDIF) for
|
|
now. (#1587)
|
|
- Improve bluetooth profile autoswitch.
|
|
- Don't try to route audio to nodes with unavailable routes.
|
|
|
|
## ALSA
|
|
- Pass the right AES bits to the alsa device when opening an
|
|
S/PDIF stream.
|
|
- Fix a bug in the MIDI bridge port management logic. When a port
|
|
was added and immediately removed, output would stop.
|
|
|
|
## GStreamer
|
|
- The GStreamer source now handles the flushing state correctly.
|
|
- All blocking operations now have a 30 seconds timeout, to avoid
|
|
infinite locks.
|
|
|
|
## Plugins
|
|
- V4l2 Device formats and controls are now passed on the node, just
|
|
like with audio devices.
|
|
- audioconvert now also exposes the softMute property.
|
|
|
|
## JACK
|
|
- Improve stability when changing buffer size and sample rate
|
|
dynamically by pausing the processing until the application has
|
|
handled the callback.
|
|
- Improve handling of timebase master. When the master was moved to
|
|
another driver, it did not attempt to become a new timebase
|
|
master on the new driver. (#1589)
|
|
- Implement transport sync to make preroll in bitwig work. (#1589)
|
|
|
|
## pulse-server
|
|
- Fix an issue where virtual sinks/sources would not show up
|
|
immediately. (#1588)
|
|
|
|
|
|
# PipeWire 0.3.35 (2021-09-09)
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- S/PDIF passthrough over optical or HDMI is now implemented.
|
|
- Some critical fixes to MIDI, draining of streams and various
|
|
modules.
|
|
- skypeforlinux should work better now after adding it to the
|
|
quirks database.
|
|
- Bluetooth codecs are now in separate plugins to make it easier
|
|
to ship them.
|
|
|
|
## PipeWire
|
|
- Drain was fixed in pw-stream. In some cases it would not clear
|
|
the drain state correctly. Fixes the issue where speaker-test would
|
|
only play one channel.
|
|
- Loopback connections to a driver will now activate the driver. This
|
|
fixes an issue where MIDI connections between devices or some
|
|
applications (puredata) would not get any MIDI messages. (#1559)
|
|
- The audiomixer can now mix more formats. Together with the passthrough
|
|
improvements this can be used to avoid conversions to/from the DSP
|
|
format in some cases.
|
|
- Make sure we idle drivers when removing a node from it in all cases.
|
|
JACK clients could keep a driver node busy.
|
|
- Add new methods to accumulate object info. The old one was difficult
|
|
to use when applications need to accumulate multiple changes.
|
|
- A new interface to load modules has been added. Plugins can use this
|
|
to ask the host (PipeWire) to load spa plugins.
|
|
- Increase param buffer size to handle larger params. Nodes with a large
|
|
number of channels would sometimes not have properties. (#1574)
|
|
- Concurrent link negotiation that caused some links to not work,
|
|
is now avoided. This fixes monitor ports in Ardour6.
|
|
- Small tweaks to how the quantum and rate are handled when nodes move
|
|
between drivers. Make node.lock-quantum work with node.latency
|
|
|
|
## PipeWire modules
|
|
- The convolver plugin in filter-chain has been optimized some more.
|
|
- The echo-cancel stream properties were improved so that it actually
|
|
can remember the streams it links to. (#1557)
|
|
- module-pulse-tunnel had the buffer attributes wrong and would cause
|
|
high latency with older pulseaudio servers. (#1434)
|
|
- module-roc had the properties configured wrongly, which would cause
|
|
it to not work at all in most cases. (#1538)
|
|
- There is now an example of a 7.1 virtual surround sink using the
|
|
hesuvi impulse responses.
|
|
- The convolver now supports dirac pulses as the IR.
|
|
|
|
## ALSA
|
|
- UCM config is now cached per device, using up less memory. It also
|
|
temporarily works around a problem in alsa-lib that is now being
|
|
patched and rolled out. Should stop devices from disappearing when
|
|
logging out and back in. (#1553)
|
|
- Fix the MIDI clock rate matching. It was too sensitive to small
|
|
changes and would spiral out of control and break MIDI rather
|
|
quickly.
|
|
|
|
## pipewire-media-session
|
|
- The media session can now save and restore IEC958 (S/PDIF) codecs
|
|
for the sinks.
|
|
- Passthrough of IEC958 (S/PDIF) content is now possible. If the client
|
|
and the sink contain a compatible set of codecs, an exclusive
|
|
connection can be made between client and sink to pass the encoded
|
|
S/PDIF content directly to the device.
|
|
- Use new introspection info update methods to suspend nodes in all
|
|
cases. Sometimes, nodes would fail to suspend because the state info
|
|
was not evaluated.
|
|
- The media session can now work in non-DSP mode, which will try to
|
|
avoid any audio conversions between client and device when possible.
|
|
But, this will also disable compatibility with JACK applications.
|
|
|
|
## Bluetooth
|
|
- Bluetooth codecs are now compiled into separate plugins which are
|
|
dynamically loaded. This makes it possible to change the plugin
|
|
implementation or ship plugins separately without having to recompile
|
|
the bluetooth module.
|
|
|
|
## PulseAudio server
|
|
- Delay stream create reply until the stream is linked to a sink/source.
|
|
- The device-restore extension is now implemented. This makes it possible
|
|
to configure the IEC958 (S/PDIF) codecs supported by the sink with
|
|
pavucontrol.
|
|
- skypeforlinux now uses the same quirks as teams to make the sinks
|
|
show up in all cases. This fixes the issue of not being able to hear
|
|
the remote end in skypeforlinux.
|
|
|
|
## JACK
|
|
- Improve catia and carla compatibility by caching objects a little longer
|
|
after being removed. (#1531)
|
|
- JACK ports now notify the negotiated format correctly.
|
|
- A potential deadlock was fixed when multiple threads would perform a
|
|
call that would require a roundtrip.
|
|
- Improve bufsize callback, it should not be called right after doing
|
|
activate() but only when the buffersize changes later.
|
|
- Add tweak to disable the process lock. Some older apps might not
|
|
expect it. (#1576)
|
|
|
|
## Docs
|
|
- man pages are now generated with rst2man.
|
|
- DMA-BUF docs were updated.
|
|
- Documentation updates.
|
|
|
|
|
|
# PipeWire 0.3.34 (2021-08-26)
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
|
|
## Highlights
|
|
- Fixes some critical issues with previous release. Such as
|
|
devices not showing up and default devices being lost.
|
|
- Support for consumer driver streams to make the producer v-sync
|
|
to the consumer monitor in a headless compositor setup.
|
|
- Improvements to routing of streams.
|
|
- Bluetooth battery status support for head-set profile and
|
|
using Apple extensions. aptX-LL and FastStream codec support
|
|
was added.
|
|
- Internal latency of ALSA devices can now be configured.
|
|
- A fast convolver was added to the filter-chain to implement
|
|
virtual surround sinks or reverbs.
|
|
|
|
## PipeWire
|
|
- Add support for streams that are driver nodes for the graph.
|
|
This was already possible for source streams but it is now
|
|
also possible for playback streams. This can be used to let
|
|
a producer v-sync to the consumer monitor in a headless
|
|
compositor setup. (#1484)
|
|
- State files are now stored in XDG_STATE_HOME instead of
|
|
XDG_CONFIG_HOME. They will still be loaded from the config home
|
|
if they are not in the new state home, to ease migration.
|
|
- Set a driver on inactive nodes to make transport work in xjadeo.
|
|
(#1491)
|
|
- Fix parsing of filter-chain controls.
|
|
- A new FFT based convolver was added to module-filter-chain. It
|
|
uses a 0-latency 2 stage convolver with small FFT for the head
|
|
and a large FFT for the tail of the convolution. A convolution
|
|
can be used to implement IR based reverbs, HRIR surround sound
|
|
or other convolution based operations. An example HRIR
|
|
virtual surround sound sink has been added as well.
|
|
- module-filter-chain was reworked a bit to support more config
|
|
options for the plugins.
|
|
- Endian conversion and alaw/ulaw formats are now supported for
|
|
streams.
|
|
- pw-cat will now suggest a samplerate for the graph.
|
|
- SPA_PLUGIN_DIR can now search in multiple paths separated with
|
|
a ':'.
|
|
- Passthrough mode has been worked on and has been partially
|
|
merged. S/PDIF definitions have been added and ALSA devices
|
|
updated to report and configure S/PDIF formats. The session
|
|
manager changes to fully configure and enable passthrough mode
|
|
will hopefully be merged next time.
|
|
- Fix a race in pw-stream where it would not always emit the
|
|
right events.
|
|
|
|
## ALSA
|
|
- Fix volume changed check. It was checking against the wrong
|
|
value and this could cause rounding errors.
|
|
- The ALSA plugin now also uses RT scheduling.
|
|
- Fix the behringer UMC202 usb device id, it was using a generic
|
|
TI chip ID that caused problems.
|
|
- Fix USB devices that don't show up anymore. Use an ALSA
|
|
workaround to fix this. (#1478)
|
|
- Add a rule for the new firmware of Sennheiser GSX 1200.
|
|
- ALSA sink and source can now use ProcessLatency param to configure
|
|
the internal latency. The latencyOffsetNsec property is also
|
|
exposed so that the latency can be adjusted in pavucontrol as
|
|
well.
|
|
|
|
## media-session
|
|
- Fix a critical issue where the default device was not remembered
|
|
anymore when it was removed.
|
|
- Fix the issue where some apps need to be restarted when nodes go
|
|
away and reappear.
|
|
- Improve routing of streams. Streams that have a specific target
|
|
set will now be moved to the target when it appears instead of
|
|
staying on the fallback.
|
|
- Small memory leak fixes.
|
|
- Try to switch back to the user selected profile after finishing a
|
|
Bluetooth recording.
|
|
|
|
## Bluetooth
|
|
- Add support for HF indicator 2 battery status.
|
|
- Add support for XAPL battery status.
|
|
- Set the Communication intended role for HFP profile.
|
|
- Enable SBC-XQ by default if not disabled by quirks.
|
|
- Fix some potential crashes due to excessive polling.
|
|
- Add aptx-LL codec and enable duplex for aptx-LL devices.
|
|
- Add FastStream codec. This is a codec that can use a
|
|
duplex SBC channel.
|
|
|
|
## PulseAudio server
|
|
- Suggests a samplerate for the graph.
|
|
- Support for handling S/PDIF (IEC958) formats was added. This will
|
|
start working when the session manager supports configuring streams
|
|
and nodes in passthrough mode.
|
|
- Be smarter when handling devices without a negotiated format
|
|
yet so that they are visible as well. This makes virtual
|
|
devices show up immediately.
|
|
|
|
## ALSA plugin
|
|
- Now suggests a samplerate for the graph.
|
|
|
|
## JACK
|
|
- The jack.pc file can only be generated with meson >= 0.59.0. When
|
|
the jack-devel option is enabled, it will generate an error with
|
|
older meson.
|
|
- Small stability improvements when connecting/disconnecting in
|
|
Ardour.
|
|
|
|
|
|
# PipeWire 0.3.33 (2021-08-05)
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Better support for virtual sinks/sources for Pro Audio
|
|
profile.
|
|
- Better DMA-BUF format modifier negotiation.
|
|
- Support multiple sample rates in the graph. Not enabled
|
|
by default yet.
|
|
- Bluetooth can now automatically switch between headset
|
|
and audio profile.
|
|
- Documentation updates.
|
|
- Many improvements and crasher fixes.
|
|
|
|
## PipeWire
|
|
- Make AUX channels an official channel map, use this for the
|
|
PRO audio profile so that we can name the channels. This
|
|
make it possible to define virtual sources and sinks for
|
|
Pro Audio devices in a more reliable way.
|
|
- Fix scheduling of some virtual sinks/sources. (#1407)
|
|
- Fix potential corruption of ringbuffer because of multiple
|
|
concurrent writers. This might be the cause for many reported
|
|
crashes. (#1451)
|
|
- Don't place sockets in $HOME. (#1443)
|
|
- Improve DMA-BUF negotiation. Add a flag to avoid fixation
|
|
of a property so that producers can negotiate more
|
|
efficiently. This is used to negotiate DMA-BUF modifiers,
|
|
which should make more efficient use of the GPU. (#1084)
|
|
- Add support for multiple sample rates. The graph can switch
|
|
when IDLE to one of the supported rates. Add an option to
|
|
lock the rate as well. This is not enabled by default yet
|
|
because of driver bugs that need to be worked around first.
|
|
- Add node.lock-quantum property that can be used to lock the
|
|
quantum in place.
|
|
- Improve latency reporting in the loopback module.
|
|
- Make new client-node method to send the peer port id to the
|
|
mixer. This can be used to know where the buffers entering the
|
|
mixer are coming from. (#1471)
|
|
|
|
## Tools
|
|
- pw-top should now also correctly show bluetooth devices. (#1540)
|
|
|
|
## media-session
|
|
- Handle unset of the default node.
|
|
- Added a module that can switch the bluetooth profile to headset
|
|
profile when a stream wants to record from it.
|
|
|
|
## JACK
|
|
- Only call the jack callbacks when the client is active. Some
|
|
JACK applications don't expect callbacks before the client is
|
|
active and crash (x42-dpl). (#1461)
|
|
- Emit client unregister event.
|
|
- Add per-client match rules in the config file to set app
|
|
specific configuration and tweaks. (#1456)
|
|
- Use peer_id to implement jack_port_get_buffer() from one of
|
|
our peer ports to get the data before it enters the mixer.
|
|
Makes the capture monitors work in Ardour6.8. (#1471)
|
|
|
|
## Bluetooth
|
|
- Add some broken kernel versions to the mSBC blocklist
|
|
- Avoid looping and consuming CPU when we can't write to the
|
|
BT socket.
|
|
- Use libfreeaptx instead of libopenaptx.
|
|
- Fix rounding errors in HW volume conversion.
|
|
|
|
## PulseAudio server
|
|
- implement module-switch-on-connect to emulate pulseaudio
|
|
behaviour of new devices. Some desktop environments expect
|
|
this behaviour and break otherwise.
|
|
- Fix stream cleanup, make sure the stream is stopped before
|
|
destroying it. Might be cause for some of the reported
|
|
crashes.
|
|
- Update message API to use the JSON format.
|
|
|
|
## Other
|
|
- Many documentation updates.
|
|
- Many cleanups and small improvements.
|
|
- Support the latest libcamera version. (#1435)
|
|
|
|
|
|
# PipeWire 0.3.32 (2021-07-20)
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Real-time priority handling for threads was reworked. Freewheeling
|
|
will now drop RT priorities to avoid being killed.
|
|
- Problems with filter chains and echo-cancel being linked in a loop
|
|
was fixed.
|
|
- alsamixer should now be able to see the mixer controls again.
|
|
- JACK has seen some latency reporting improvements that make Ardour
|
|
report latencies correctly.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Fix a bug in the neon audio resampler code.
|
|
- There is now a node.link-group property to relate linked streams.
|
|
this can be used to track the dataflow with coupled streams.
|
|
- Fix a crash when recalculating latency on a destroyed port. (#1371)
|
|
- Filter chains and other modules that create streams can now also
|
|
be added to the daemon config itself. (#1309)
|
|
- Fix some potential deadlocks in timerfd. (#1377)
|
|
- Feedback links are skipped when recalculating latency to avoid
|
|
loops.
|
|
- The dummy driver and null-sink now stop the timerfd when following
|
|
another driver instead of generating useless graph wakeups.
|
|
- rt.limit was increased to 2 seconds. Some applications got killed
|
|
because they run lengthy code in the Real-Time thread. (#1344)
|
|
- Fix s24_32 to float, it was not sign extending properly. (#1393)
|
|
- The performance of the feedback loop check algorithm was improved
|
|
a lot, making complex graphs start much much faster.
|
|
- The zeroconf publish module now doesn't republish nodes every time
|
|
the volume changes. (#1406)
|
|
- A potential memory corruption error has been fixed in the loop
|
|
that could cause random crashes.
|
|
- Mempools can now be created from multiple threads at the same
|
|
time.
|
|
|
|
## media-session
|
|
- Loops in coupled streams are now avoided. (#1394)
|
|
- Port changes for inactive profiles are ignored now by the
|
|
default-route module. (#1403)
|
|
|
|
## ALSA
|
|
- Make sure that alibpref is not part of the device node name because
|
|
it is random. (#1362)
|
|
- Fixed an off-by-one that could cause midi events to end up with a
|
|
wrong timestamp and thus being discarded by some apps. (#1395)
|
|
- Fix some memory leaks when destroying a card object.
|
|
|
|
## JACK
|
|
- Fix some invalid cycle wakeups that could cause JACK application to
|
|
run with a 0 buffer size. (#1386)
|
|
- JACK can now use rtkit to manage realtime priorities on threads.
|
|
- The Real-time priority is dropped when entering freewheel mode to
|
|
make sure we don't get killed when using too much CPU.
|
|
- jack_recompute_total_latencies() is now implemented, fixing the
|
|
latency reporting in Ardour. (#1388)
|
|
- Fix some overflows in time calculations.
|
|
- Ensure frame_rate in position is never 0.
|
|
- Graph callbacks are now emitted as well.
|
|
|
|
## Bluetooth
|
|
- RTP payload type is now set correctly for aptX, LDAC and SBC, which
|
|
should improve compatibility with devices that care about this.
|
|
|
|
## PulseAudio server
|
|
- There is now a quirks database to deal with bad clients. The database
|
|
is builtin but can be made external later.
|
|
- Teams is now lied to and told all sink/sources use s16 samples to make
|
|
it show all sinks/sources.
|
|
- Firefox is forced to remove the DONT_MOVE flag on capture streams so
|
|
that you can move firefox streams with other tools.
|
|
- The UNDERFLOW warnings are now made into info log messages to not
|
|
spam the log too much. Many application just let things underrun
|
|
and PulseAudio did not warn about this either. (#910)
|
|
|
|
## ALSA plugin
|
|
- The alsa plugin now uses the right metadata for finding the default
|
|
source and sink, which makes the volume controls reappear. (#1384)
|
|
|
|
## Other
|
|
- Cleanups in pulse-server and pipewire.
|
|
- Documentation additions.
|
|
|
|
# PipeWire 0.3.31 (2021-06-28)
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Fixes for alsa-lib 1.2.5
|
|
- New pulseaudio modules: module-avahi-zeroconf,
|
|
module-pipe-source, module-roc-sink, module-roc-source.
|
|
- JACK has seen massive stability improvements. Locking
|
|
and correctness wrt to callbacks has been reworked. Also
|
|
thread priorities have improved.
|
|
- Handle various crashes and lockups when running out of file
|
|
descriptors.
|
|
- Bluetooth now uses a hardware database to disable
|
|
non-working features on listed devices.
|
|
- Scheduling quantum and rate can now be changed dynamically
|
|
with pw-metadata.
|
|
- Many bugfixes and improvements.
|
|
|
|
|
|
## PipeWire
|
|
- Improve cleanup of context in error cases.
|
|
- There is now a pw-test framework for improved unit tests.
|
|
- Improve property serialization to valid JSON.
|
|
- Fix some macros to work with better with coverity.
|
|
- Metadata permissions are checked now. Clients need the
|
|
M permission on an object to be able to set metadata for
|
|
it.
|
|
- The core metadata object will now remove metadata for
|
|
removed objects, the implementor does not need to worry
|
|
about that anymore.
|
|
- Audioadapter will now follow the rate of the graph with
|
|
the resampler adjusting itself dynamically.
|
|
- Core now has a metadata implementation helper. A context
|
|
will expose a metadata with settings that can be changed
|
|
at runtime. This can be used to change the loglevel or
|
|
graph quantum and samplerate on the fly.
|
|
- An infinite loop was fixed in the audio converter.
|
|
- Handle out-of-fds more gracefully. Handle truncated
|
|
control data by dropping the client connection.
|
|
- Fix profiler crash with many streams.
|
|
- Improve latency handling in pw-filter. There is now a
|
|
default handler and a ProcessLatency parameter to simplify
|
|
latency reporting.
|
|
- Latency reporting was improved in devices and streams.
|
|
- And example sink/source was added.
|
|
|
|
## ALSA
|
|
- hardware mute and volume are now properties on the
|
|
Route param to make things easier.
|
|
- More fixes for alsa-ucm 1.2.5.
|
|
|
|
## Tools
|
|
- spa-json-dump now properly encodes string and keys.
|
|
- pw-dump now shows the correct subject of the metadata.
|
|
|
|
|
|
## PulseAudio server
|
|
- Ensure the node.description is set, some applications
|
|
crash otherwise (TeamSpeak).
|
|
- Module loading and unloading was improved.
|
|
- module-avahi-zeroconf was implemented.
|
|
- module-pipe-source was implemented
|
|
- module-roc-sink and module-roc-source was implemented.
|
|
- The maximum amount of connections has been limited to 64,
|
|
like pulseaudio.
|
|
- Handle out-of-fds more gracefully.
|
|
- Fix overflow of read/write pointers.
|
|
- Source and sink state are now decoupled from the monitor
|
|
state and will report IDLE when not playing anything.
|
|
|
|
## media-session
|
|
- Port switching should now happen to/from the port that
|
|
actually changed.
|
|
|
|
## JACK
|
|
- The locking was reviewed. All callbacks are now emitted
|
|
from the PipeWire thread with the lock released and
|
|
the process function will be disabled for the duration
|
|
of the callback. This ensures that no two callbacks are
|
|
called at the same time.
|
|
- Improve internal consistency and try to never call callbacks
|
|
with invalid objects.
|
|
- Monitor port can now be accessed with system:monitor_%d
|
|
- client threads are now created with SCHED_FIFO and module-rt
|
|
is used to create the other RT threads. This should avoid
|
|
SIGKILL from RTKit in some cases.
|
|
|
|
## Bluetooth
|
|
- Various bugfixes to improve connections to devices.
|
|
- Handle delayed UUID connection.
|
|
- There is now a hardware database that can disable features
|
|
in listed devices.
|
|
- Use libusb to detect availability of mSBC.
|
|
|
|
## ALSA
|
|
- The virtual device name can now also contain a media role.
|
|
|
|
|
|
# PipeWire 0.3.30
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
This is a quick emergency release to fix some severe
|
|
problems with the previous release.
|
|
|
|
## Highlights
|
|
- Recording from a monitor port should work again.
|
|
- JACK applications should now be more stable again.
|
|
- Freewheeling should not lock up anymore.
|
|
- Fix lockups in many pulseaudio apps.
|
|
- module-echo-cancel was implemented in pipewire-pulse
|
|
- Many other stability fixes.
|
|
|
|
## PipeWire
|
|
- Improve module path logic.
|
|
- Improve logger formatting
|
|
|
|
## PulseAudio server
|
|
- Make sure to pass 64 bits values for time on ARM 32 bits to
|
|
avoid protocol errors.
|
|
- Avoid a crash when unloading module-combine-sink.
|
|
- Avoid overflow in requested bytes, resulting in stalled
|
|
audio.
|
|
- Implement module-echo-cancel.
|
|
|
|
## Bluetooth
|
|
- Handle latency parameters instead of failing.
|
|
|
|
## JACK
|
|
- Fix locking in many places to avoid deadlocks and crashes.
|
|
- Fix port rename.
|
|
- Stop freewheeling correctly instead of deadlocking.
|
|
|
|
# PipeWire 0.3.29
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Latency reporting is now implemented.
|
|
- Many documentation updates and cleanups.
|
|
- module-combine-sink was added to PulseAudio server.
|
|
- Better handling of multichannel input profiles.
|
|
- Fix 100% volume issue when monitor suspends or profile
|
|
changes in some cases.
|
|
- Bugfixes and crashes
|
|
|
|
|
|
## PipeWire
|
|
- A new module-rt was added to acquire real-time scheduling
|
|
privileges without using RTKit.
|
|
- Documentation fixes and updates. Docs are now using a
|
|
custom theme.
|
|
- There is now a MANDATORY flag on properties that influence
|
|
how properties are filtered.
|
|
- Filter-chain now parses the LADSPA_PATH correctly when it
|
|
contains a colon separated list.
|
|
- Move `#pipewire` IRC channel to oftc.net.
|
|
- Fix an error where param changes were not emitted in all
|
|
cases.
|
|
- Implement Latency reporting. Latency values are propagated
|
|
through the graph so that each node knows the latency to
|
|
the output/input device. Synchronization in pw-stream has
|
|
been updated to use this.
|
|
- Some more upmix cases are added so that LFE, SIDE and REAR
|
|
can be generated from a mono channel as well.
|
|
- pw-stream and pw-filter will now emit the process event from
|
|
the real-time thread in a safe way, potentially avoiding some
|
|
of the harder to debug crashes.
|
|
- Fix potential stack overflow with serialize_dict.
|
|
- Add PIPEWIRE_NO_CONFIG to run without custom config files.
|
|
- The WebRTC echo canceler was added. Next versions will
|
|
integrate this better.
|
|
|
|
## PulseAudio server
|
|
- module-combine-sink was implemented.
|
|
- Fix some segfaults when DBus connections fail.
|
|
- Support for listening on IPv6 was added.
|
|
- Fix a bug where many flushes could result in requests for too
|
|
much data from the client, causing sync, latency and garbled
|
|
sound problems after many seeks.
|
|
|
|
## ALSA
|
|
- Also probe input paths for multichannel mappings. This makes
|
|
multichannel input ports show up in more cases.
|
|
- Fix headphones/front volume issue on some cards.
|
|
- Fix max volume issue when profile changes.
|
|
- Fix issue with UCM local config that was not available when the
|
|
device was opened in the server but the UCM was opened by the
|
|
session manager. Fixes alsa 1.2.5 compatibility.
|
|
|
|
## JACK
|
|
- Implement latency reporting with the new Latency params.
|
|
|
|
# PipeWire 0.3.28
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
## Highlights
|
|
- Freewheeling was implemented. This makes it possible to
|
|
export projects in ardour.
|
|
- A new powerful filter-chain module was added that can
|
|
be used to created all kinds of filter-chains from ladspa
|
|
and builtin plugins.
|
|
- Many more pulseaudio modules are now implemented:
|
|
module-ladspa-sink, module-ladspa-source, module-pipe-sink,
|
|
module-tunnel-sink, module-tunnel-source,
|
|
module-zeroconf-discover
|
|
- Fix a bug where devices would not appear after logout/login.
|
|
- Fix a bug where the volume was reset to 0 and devices would
|
|
have no audio.
|
|
- Config files are now installed in the data dir, system
|
|
overrides in /etc/pipewire and $HOME are checked first.
|
|
|
|
|
|
## PipeWire
|
|
- Implement freewheeling for JACK clients
|
|
- Add filter-chain module that can be used to construct
|
|
arbitrary graphs from ladspa and builtin plugins.
|
|
- Add new property to easily set algorithm params
|
|
- Add module-pulse-tunnel to tunnel audio to and from
|
|
a PulseAudio compatible server.
|
|
- Add a avahi zeroconf discover module, create pulse-tunnel
|
|
when PulseAudio devices are announced.
|
|
- Config files are now installed in the data dir, system
|
|
overrides in /etc/pipewire and $HOME are checked first.
|
|
- Applications now have their monitor ports named with the
|
|
"monitor" prefix to avoid confusion with the output ports.
|
|
- LICENSE clarifications.
|
|
|
|
## GStreamer
|
|
- fixes to the pipewiresink plugin.
|
|
|
|
## SPA plugins
|
|
- Fix a bug where the volume was reset to 0
|
|
- Add events to dbus plugin. This can be used to detect dbus
|
|
disconnects.
|
|
|
|
## Media-session
|
|
- Handle dbus disconnect.
|
|
- Handle device reservation errors.
|
|
|
|
## PulseAudio server
|
|
- Implement module-ladspa-sink and a new PipeWire-only
|
|
module-ladspa-source
|
|
- Implement module-pipe-sink
|
|
- Implement module-tunnel-sink and module-tunnel-source
|
|
- Fix a bug with module argument parsing
|
|
- Implement module-zeroconf-discover
|
|
|
|
## ALSA plugin
|
|
- improve error handling
|
|
|
|
PipeWire 0.3.27
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Fix bug that caused bluetooth devices to stop working.
|
|
- Fix session-manager crash when switching users caused by
|
|
the DBus plugin cleanup errors.
|
|
- Improve volume handling of monitor ports.
|
|
- Fix GStreamer v4l2 support.
|
|
- Implement module-remap-sink and module-remap-source in
|
|
pipewire-pulse.
|
|
- More fixes and improvements.
|
|
|
|
|
|
- PipeWire
|
|
- Move the loopback code into a module. Use this in pw-loopback
|
|
and pipewire-pulse. Fix some cleanup crashes.
|
|
- A dummy echo-cancel module was added. Later versions will
|
|
include the webrtc echo-canceler.
|
|
- State files don't have the X permission anymore.
|
|
- Move i18n core into a private header file.
|
|
- Stream can now advertise properties and receive property
|
|
updates.
|
|
- Fix an issue where the wrong index was used to address a port.
|
|
It caused Bluetooth devices to stop working.
|
|
|
|
- SPA plugins
|
|
- Only do LFE filtering on channels we created.
|
|
- Improve name and description of devices.
|
|
- Improve cleanup in DBus connections and sources to avoid crash
|
|
when destroying.
|
|
- Improved volume handling. Hardware, Software and Monitor
|
|
volumes are now properly separated and handled.
|
|
- Support for S8 and S8P formats was added.
|
|
|
|
- Tools
|
|
- pw-cli can now also create Struct from JSON arrays.
|
|
|
|
- Session-manager
|
|
- The session manager can now also create passive links. This
|
|
makes is possible to suspend effect chains together with the
|
|
sinks when not in use.
|
|
- Match rules now check the complete property value instead of
|
|
only the start.
|
|
- Handle multiple pending param enumerations, take only last
|
|
result. This fixes some volume update issues.
|
|
|
|
- GStreamer plugins
|
|
- GStreamer plugins now advertise handling DMABUF explicitly. This
|
|
is currently the only way to avoid a memcpy for v4l2 devices.
|
|
|
|
- Device support
|
|
- sync ACP with pulseaudio, merge upstream patch instead of our
|
|
hack to workaround missing duplex devices.
|
|
- V4l2 devices don't expose their fd anymore. Previously the fd
|
|
and mmap offsets were passed to the client to access the buffer
|
|
memory but that could create security issues.
|
|
|
|
- Bluetooth
|
|
- Don't unregister the profiles on shutdown because this can cause
|
|
delay, just close the dbus connection.
|
|
- Bluetooth devices now try to use the global samplerate from the
|
|
graph.
|
|
|
|
- PulseAudio server
|
|
- Implement remap-sink and remap-source modules using the
|
|
new loopback module.
|
|
|
|
PipeWire 0.3.26
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- I18n support, with translations merged from PulseAudio.
|
|
- New pw-link tool.
|
|
- Many Bluetooth improvements, support for hardware volumes.
|
|
- Support for 64 channel devices.
|
|
- Stability fixes and improvements.
|
|
|
|
|
|
- PipeWire improvements
|
|
- The link factory can now also make links between nodes and
|
|
ports by name so that it can be used in scripts.
|
|
- Add module-protocol-simple that can stream raw audio on a
|
|
socket.
|
|
- Added i18n support. Merge PulseAudio translations for the ACP
|
|
library so that we don't cause regressions.
|
|
- Support more than 19 channels in the channel mixer.
|
|
This makes all channels usable on 32 and 64 channel cards.
|
|
- Detect if we're running in a VM and allow for tweaking some
|
|
settings such as the max-quantum to make things work better in
|
|
VMs.
|
|
- Fix a potential crash when connecting a client and updating
|
|
permissions.
|
|
- Fix a potential crash when trying to link incompatible ports.
|
|
- Lingering links in error will now be destroyed automatically.
|
|
|
|
- Tools
|
|
- Added new pw-link tool to list and monitor ports and to
|
|
list, monitor, create and destroy links between them.
|
|
- pw-cli can now also list params by name.
|
|
- pw-dump now outputs Spa:String:JSON types in metadata as properly
|
|
parsed and formatted JSON so that tools can parse the
|
|
metadata values using a JSON parser.
|
|
|
|
- Session-manager
|
|
- Add logind support. The bluetooth monitor can only be started
|
|
for one user at the time, so use logind detect active seats.
|
|
- ALSA icon names were improved to match what PulseAudio does.
|
|
- Improve the bluetooth icon name. Also use the device alias
|
|
as the device description, like PulseAudio.
|
|
|
|
- Device support
|
|
- When devices become inaccessible, they are now removed from
|
|
the PipeWire graph.
|
|
- Fix datatype selection for buffers in v4l2 and libcamera.
|
|
|
|
- Bluetooth
|
|
- Various memory leaks and crashes are fixed.
|
|
- Added support for AVRCP hardware volume.
|
|
- Added support for HSP/HFP hardware volume.
|
|
|
|
- PulseAudio server
|
|
- Fix module-loopback connections to monitor ports.
|
|
- Implement module-native-protocol-tcp.
|
|
- Handle nodes and streams with > 32 channels. The PulseAudio
|
|
API only supports up to 32 channels so only make those 32
|
|
first channels available with the PA API.
|
|
- Implement module-simple-protocol-tcp.
|
|
- Improve events emitted by the server.
|
|
- Improvements to channels and channel_map properties on
|
|
modules. one can imply the other and they should match when
|
|
both given.
|
|
- null-sink will now have their volume work correctly by
|
|
default.
|
|
|
|
- JACK
|
|
- JACK development files can now optionally be installed.
|
|
|
|
PipeWire 0.3.25
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Many stability improvements.
|
|
- Plug fd leak in flatpak detection
|
|
- add pw-loopback tool and support module-loopback
|
|
- volume restore for virtual sinks/sources or other sink/sources
|
|
without hardware volume.
|
|
- Fix cracks and pops in audio capture.
|
|
- Many bluetooth improvements and compatibility fixes.
|
|
|
|
|
|
- PipeWire improvements
|
|
- Hex encode invalid SEC_LABEL properties to avoid generating
|
|
invalid json.
|
|
- Small fixes to how nodes are started to avoid crashes.
|
|
- Make sure ports are only scheduled after being fully
|
|
negotiated to avoid crashes.
|
|
- Implement coverity into CI, fix some bugs detected by
|
|
coverity.
|
|
- Plug leak in flatpak detection.
|
|
- Fix crash when removing globals in some cases.
|
|
- Fix crash because the mixer info was not removed from a
|
|
port in all cases.
|
|
- Add PIPEWIRE_AUTOCONNECT environment variable to disable
|
|
stream autoconnect. Also add a config option to disable
|
|
autoconnect.
|
|
- Improve wildcard in format helpers.
|
|
- Add env variable to disable journald logging.
|
|
|
|
- Tools
|
|
- Add a new pw-loopback tool to loop a capture device to a
|
|
playback device.
|
|
- Display localized strings correctly in pw-top
|
|
- Add some more options to pw-dot
|
|
|
|
- Session-manager
|
|
- When a new node is configured and some stream have this
|
|
as the default target, move them to it.
|
|
- Fix some crashes.
|
|
- Implement volume restore on nodes without routes. This makes
|
|
it possible to restore volume on purely software nodes like
|
|
null-sinks.
|
|
- Also try to suspend errored nodes so that they may leave the
|
|
error state and be reused again.
|
|
- Break endless link loops when something went wrong.
|
|
|
|
- Device support
|
|
- Fix monitor volumes, they are now separate from the hardware
|
|
volume.
|
|
- Fix cracks and pops in alsa capture caused by mismatch between
|
|
resampler and capture source.
|
|
- Add start-delay config option to alsa sink.
|
|
- Ensure the PipeWire midi ports start from a higher number so
|
|
that the lower port numbers are available to apps as before.
|
|
|
|
- Bluetooth
|
|
- source devices are now removed when idle
|
|
- Support using pipewire as Audio Gateway.
|
|
- LDAC encoding quality can be configured now
|
|
- Implement codec switching for HFP
|
|
- Implement codec switching with new device property.
|
|
- Improved stability and compatibility
|
|
- Autoconnect device profiles at startup
|
|
- Add AAC bitrate mode configuration
|
|
- Make it possible to use an A2DP source as an input device. You
|
|
can then use your phone as an A2DP microphone, for example.
|
|
- Remove battery reporting when RFCOMM connections is closed.
|
|
|
|
- PulseAudio server
|
|
- Add some workarounds for Blueman
|
|
- Set correct errno values, fixes a hang in load-module of a
|
|
non-existing module
|
|
- Try to not send inconsistent information to clients.
|
|
- Fix some crashes.
|
|
- Add support for the new send-message API, use this to
|
|
switch bluetooth codecs.
|
|
- Fix draining by making sure we are started.
|
|
- Handle 0 sink and source as the default sink/source.
|
|
- Implement module-loopback
|
|
|
|
- JACK
|
|
- Fix some memory leaks when closing a client
|
|
- Add self-connect config option to limit where clients
|
|
can connect themselves.
|
|
- Don't crash when apps call _port_get_buffer() on a
|
|
port that is not their own but simply return NULL.
|
|
This fixes a crash in Ardour6.
|
|
- Improve client added/removed callbacks. Sometimes it would
|
|
emit a client remove when there were still ports for the
|
|
client.
|
|
- make sure midi port names are stable across reboots.
|
|
|
|
PipeWire 0.3.24
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Many JACK midi improvements and device support.
|
|
- Fixes in gnome-control-center default sink/source handling.
|
|
- Many small performance improvements in alsa device handling
|
|
and latency. There should also be less cracks/pops and xruns
|
|
now.
|
|
- Fixes for gnome-control-center default sink/source handling.
|
|
- More bluetooth compatibility improvements.
|
|
|
|
|
|
- PipeWire improvements
|
|
- Implement simple upmixing.
|
|
- Disable the resampler when not used. This improves latency
|
|
and CPU usage.
|
|
- Handle max-quantum on devices and try to not make the quantum
|
|
larger than the device buffer size.
|
|
- Improvements to how nodes and links are activated. It should
|
|
now result in less xruns and cracks/pops.
|
|
- meson uses the feature options everywhere now.
|
|
- Handle volume remap in the channelmixer. This fixes the channels
|
|
on multichannel devices.
|
|
- Try to escape invalid JSON string characters.
|
|
- Keep better track of changed parameters in audioconvert.
|
|
- Improve config files, make arrays where needed.
|
|
- Respect NO_COLOR where possible
|
|
- Support in-place config file parsing to avoid allocations and
|
|
improve startup performance.
|
|
- There is now a config option to enable non-power-of-two quantums.
|
|
- Preliminary support for upmixing and generating LFE channels.
|
|
|
|
- Session-manager
|
|
- Default nodes are not stored as JSON in the metadata. This
|
|
is more readable and introspectable.
|
|
- More default-nodes and default-routes improvements. Port
|
|
switching should work better now.
|
|
- Wait until all devices are scanned before linking clients.
|
|
- Fixes some crashes.
|
|
- Sinks (monitors) can now be set as default sources.
|
|
|
|
- Device support
|
|
- Fix startup timers for alsa devices.
|
|
- Improve timers in alsa when quantum changes. It should cause
|
|
less xruns and cracks.
|
|
- Fix UCM setup of capture devices.
|
|
- Only disable IRQ in alsa when not batch. For batch devices the
|
|
hw pointers are updated each IRQ so we need to keep them enabled.
|
|
This massively improves latency on USB batch devices to the same
|
|
level as JACK (with small enough period size).
|
|
|
|
- Bluetooth
|
|
- Improvements to profile switches.
|
|
- Improvements to volume handling.
|
|
- Fixes for A2DP sources
|
|
- Add support for battery status when available.
|
|
- Many other small improvements.
|
|
|
|
- PulseAudio server
|
|
- Handle NULL in set_default_sink/source to clear the default.
|
|
- Implement a workaround for gnome-control-center when setting
|
|
the default sink/source. It also sets the target in
|
|
stream-restore to the new default. This fixes moving streams
|
|
in gnome-control-center.
|
|
- Fix some races by replying to some requests after the operation
|
|
completed.
|
|
- Prefer formats of the extended format API.
|
|
- Create a pid file on startup to improve compatibility with apps
|
|
that look for it.
|
|
- Capture streams can now be moved to monitors with pavucontrol.
|
|
- Fixes for crashes.
|
|
|
|
- JACK
|
|
- jack clients can now connect to the 'default' server.
|
|
- Move midi ports back to the midi client.
|
|
- Only mark midi hardware ports as terminal/physical.
|
|
- Use the same midi names as a2jmidid.
|
|
- match system ports in get_ports.
|
|
- Improve compatibility with some apps that require a
|
|
fixed latency.
|
|
- Beginnings of the libjackserver implementation.
|
|
|
|
|
|
PipeWire 0.3.23
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Fixes for some critical bugs in last release.
|
|
- Fix bug where audio was not drained properly at the end of
|
|
playback, causing repeating sound.
|
|
- Profile and route switching was improved and should mimic
|
|
more what pulseaudio did.
|
|
- Various fixes for xruns in capture and playback.
|
|
- Bluetooth now supports delay adjustment and various other
|
|
improvements.
|
|
- The pulseaudio server now correctly identifies AC3 and DTS
|
|
streams and returns a not supported error instead of playing
|
|
static.
|
|
- Multichannel support was improved in the alsa plugin and
|
|
the channel mixer. Channels should now play on the right
|
|
speakers in all cases.
|
|
|
|
- PipeWire improvements
|
|
- Small fixes and improvements in JSON parsing and encoding.
|
|
- Improvements to param handling in audioconverter. It would
|
|
previously not always notify of changes.
|
|
- Avoid updating some properties that we use internally such
|
|
as the object id and the node.id.
|
|
- log.level in the config files is now actually used.
|
|
- the PIPEWIRE_LATENCY env variable should always override
|
|
any application settings in filter/stream/jack.
|
|
- The config file can now contain filer and stream properties
|
|
to, for example, control the resampler, mixer and latency.
|
|
- Add sandboxing to the systemd services
|
|
- Various FreeBSD fixes.
|
|
- Improve draining and a way to exit the drain state as well.
|
|
- Many multichannel fixes. Channel remapping should now be
|
|
correct.
|
|
- Fix bug with repeating audio at the end of playback because
|
|
the drain in the resampler was not draining all channels.
|
|
- RTKit default rt.prio has been increased to 88. This will
|
|
likely still be clamped to 20 until distros increase the
|
|
max priority.
|
|
|
|
- Session-manager
|
|
- Don't try to switch to Pro Audio profile, this should be
|
|
a user choice only.
|
|
- Don't crash when metadata was disabled such as when not
|
|
using the audio features of pipewire.
|
|
- Rework the profile and route handling.
|
|
- Add systemd unit files for the media-session
|
|
- Device names should now also have sane names so that tab
|
|
pactl completion works on them.
|
|
|
|
- Device support
|
|
- Fix ALSA format enumeration in more cases. Use the channels
|
|
and rate as a filter.
|
|
- Make sure the graph doesn't ever use buffers larger than
|
|
the alsa device buffer size or we get xruns.
|
|
- Tuning of the alsa device timeout handling and dynamic
|
|
resampler. There should now not be any xruns when streams
|
|
appear and disappear or when the quantum changes.
|
|
- Fix bug in alsa device when reassigning to a new driver,
|
|
in some cases the dynamic resampler was not activated and
|
|
things would drift out of sync and fail.
|
|
- Fixes in quantum changes for ALSA capture and how the
|
|
resampler is drained and fed with the new samples.
|
|
|
|
- Bluetooth
|
|
- Delay adjustment has been implemented now. Bluetooth
|
|
devices should now be more synchronized with video due
|
|
to proper delay reporting. Because BT delays can be
|
|
large, it can cause hickups in some players.
|
|
- Fix volume in bluetooth devices.
|
|
- Codec switch improvements.
|
|
|
|
- PulseAudio server
|
|
- Latency offset adjustment is now implemented and functional
|
|
for bluetooth devices. It is not working for alsa devices
|
|
yet.
|
|
- Handle unsupported formats. Previously we would accept encoded
|
|
formats and play noise. This fixes AC3 playback in vlc.
|
|
- Move some of the configurable parameters to the config file.
|
|
- Fix a fatal use after free when playing samples
|
|
- Improve module handling. loaded modules now show up in the
|
|
list of modules and can be unloaded. This also prepares the
|
|
core for more module implementations later.
|
|
|
|
- ALSA plugin
|
|
- Fix drain with very large buffers, we need to manually start
|
|
the stream before draining.
|
|
- Fix the channel layout handling.
|
|
- Improve compatibility with apps that expect the poll to only
|
|
return when there is activity.
|
|
- Fix drain for capture
|
|
|
|
- JACK
|
|
- Add a config option to shorten and filter client names
|
|
- Increase the length of the client name size and make sure
|
|
we don't exceed the allocated size.
|
|
- We now include our own jack header files so we can build
|
|
without depending on another jack-devel package. We don't
|
|
yet install the headers or provide pkgconfig files.
|
|
|
|
|
|
PipeWire 0.3.22
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Per client config files replace the module-profiles. It's
|
|
now possible to tweak settings and load custom modules.
|
|
- Pro Audio card profile support. You can now select the
|
|
Pro Audio profile and have raw device access with the
|
|
maximum number of channels and no mixer controls. This is
|
|
the usual setup for managing high end Pro Audio cards.
|
|
- Many fixes and improvements in the JACK library to make
|
|
devices look and integrate better.
|
|
- Many bluetooth improvements. Playback should be more
|
|
reliable and better synchronized. Support for the HFP HF
|
|
profile.
|
|
- Small fixes and improvements all over the map.
|
|
|
|
- PipeWire improvements
|
|
- Add support for restrictions requested by a client. This
|
|
makes it possible to implement Flatpak policy for emulated
|
|
PulseAudio clients as well.
|
|
- Fix removal of params in objects. Previously they would not
|
|
be removed from the cache.
|
|
- Remove mlock warnings by default. There is an option to enable
|
|
them again if you want to check if your system is optimized.
|
|
- Remove LimitMEMLOCK lines from the service files. They can
|
|
only lower the system settings and are thus not useful.
|
|
- Implement per-client config files. Each pipewire client will
|
|
now read a config file that you can use to configure the
|
|
context of the client.
|
|
- Implement state and config load/save in pipewire. This is used
|
|
by the session manager or other apps.
|
|
- Make an option to disable dbus support.
|
|
- Add tool to convert pipewire config to JSON.
|
|
|
|
- Session-manager
|
|
- Give all permissions to Manager flatpak apps. In the future
|
|
we will use the Permission store to remember user settings.
|
|
- Improvements to default audio/sink handling.
|
|
- Add option to configure device suspend time.
|
|
- Small fixes in route handling.
|
|
|
|
- Device support
|
|
- Complain when ACP profile files are not found and use
|
|
a fallback in order to get something working.
|
|
- Add volume support to monitor ports.
|
|
- Fix resume from suspend for ALSA in more cases.
|
|
- ALSA ACP cards now have a Pro Audio profile that exposes
|
|
the raw card devices.
|
|
|
|
- Bluetooth
|
|
- Enable A2DP delay reporting. This improves audio/video sync
|
|
when playing audio over bluetooth.
|
|
- Fix stuttering in A2DP source
|
|
- Tweak buffer size and latency settings to avoid stuttering
|
|
- More work on HSP and HFP support
|
|
- Fix initial profile configuration
|
|
- Add HFP HF support
|
|
|
|
- PulseAudio server
|
|
- Small tweaks in capture packet size to avoid crashes in some
|
|
apps.
|
|
- Detect Flatpak apps and requests the flatpak permissions from
|
|
the session manager. This means that Flatpak pulseaudio apps
|
|
will now run with reduced permissions.
|
|
|
|
- ALSA plugin
|
|
- Reduce min buffer size in the plugin for lower possible
|
|
latency.
|
|
|
|
- JACK
|
|
- implement some missing methods to make qjackctl work again.
|
|
- Use the context data thread instead of making our own. This
|
|
fixes the issue where the data thread was not given RT
|
|
priority correctly.
|
|
- Pass extra jack flags around in port properties. This makes
|
|
CV ports in carla work.
|
|
- Many tweaks to the port names and aliases. Unwanted characters
|
|
are filtered out, giving better names to jack apps. Default
|
|
device names are now equal to those seen in pulseaudio apps.
|
|
- Add an option to make a separate client for the monitor ports
|
|
of a device. This makes it more usable in apps.
|
|
- add support for system:playback_N and system:capture_N port
|
|
names for apps that hardcode these port names.
|
|
|
|
|
|
PipeWire 0.3.21
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Many PulseAudio compatibility fixes. Handling of corked
|
|
streams, the prebuf setting, seek modes and stream flags
|
|
are now implemented correctly.
|
|
- Ports and Profiles are now managed by the session manager
|
|
and can save and restore previous settings.
|
|
- ALSA device handling has been tweaked for maximum
|
|
compatibility at the expense of latency. There are tuning
|
|
options in the config file.
|
|
- Improved Bluetooth support. HSP is disabled by default
|
|
because it is old and deprecated and in some cases causes
|
|
conflicts with the newer HFP profile. Codec switching is
|
|
now implemented as well.
|
|
- PipeWire accepts donations with liberapay now.
|
|
|
|
- PipeWire improvements
|
|
- Improve draining in pw-stream.
|
|
- pw-stream now uses busy metadata by default. This makes sure
|
|
that no writer can write to buffers when readers are still
|
|
busy.
|
|
- Fix handling of empty array/choice instead of failing.
|
|
- Fix crashes when creating properties from empty strings.
|
|
- Make it possible to pass an array to module-access
|
|
access.allowed variables
|
|
- Fix small bug in argument parsing in pw-cat
|
|
|
|
- Session-manager
|
|
- Restore route volumes in all cases, also when switching
|
|
routes.
|
|
- Use a default route volume for unknown routes instead of
|
|
letting the system decide on a default.
|
|
- Improve profile handling. Don't try to restore unavailable
|
|
profiles. Implement the profile switching in the session
|
|
manager now.
|
|
- Fix handling of Virtual sources as defaults.
|
|
- Handle port switching in the session manager. Implement
|
|
save and restore of default ports per profile.
|
|
|
|
- GStreamer
|
|
- Fix a crash with zero SPA_PARAM_BUFFERS_size
|
|
|
|
- Device support
|
|
- v4l2-source will now respect the requested memory types.
|
|
- ALSA buffering has been tweaked. USB devices should have
|
|
less XRuns by default. Parameters can be tweaked to
|
|
decrease the latency on capable devices. Also fix a case
|
|
where a quantum change would cause an xrun.
|
|
- Fix mute in bluetooth devices
|
|
- bluetooth devices are not paused in idle anymore for
|
|
improved compatibility.
|
|
- Codec switching for bluetooth is implemented along with
|
|
config options to select the codecs manually.
|
|
- HSP for bluetooth is now disabled by default. Most devices
|
|
support the newer HFP profile and some devices fail when
|
|
both are available.
|
|
- Reduce the amount of events the ALSA plugins emit by bundling
|
|
them.
|
|
|
|
- PulseAudio server
|
|
- Implement the suspend command
|
|
- Fixes volume in sample info
|
|
- Fix playback of samples, sometimes samples would be clipped
|
|
short. Also implement the target sink for the sample.
|
|
- Use rate match to feed samples. This way the latency can
|
|
be kept to a minimum.
|
|
- Latency has been tuned some more, more closely emulating
|
|
pulseaudio behaviour.
|
|
- Improve default sink/source handling. Make sure all events
|
|
are sent correctly when defaults change.
|
|
- Handle underrun better without causing sync issues. Make sure
|
|
to pause in corked state.
|
|
- Implement rewind due to seeks, fixes GStreamer seeking.
|
|
|
|
|
|
PipeWire 0.3.20
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Latency was reduced in ALSA and PulseAudio and time
|
|
reporting has improved a lot.
|
|
- Bluetooth now has a native HFP backed, SBC XQ and
|
|
mSBC support.
|
|
- Many bugfixes and improvements, improved device
|
|
support.
|
|
|
|
- PipeWire improvements
|
|
- pw-dump can now dump all objects such as Endpoints
|
|
- pw-dump has a -m option to monitor changes
|
|
- pw-dump can now dump metadata
|
|
- pw-stream can now use the rate-match io to exactly
|
|
produce the required number of samples for the
|
|
current cycle. When using this feature, a stream can
|
|
achieve the same low-latency as pw-filter.
|
|
- spa-acp-tool can now load a custom profile-set and
|
|
correctly parses the volume updates
|
|
- There is now a nofail option when loading modules
|
|
- The connection has been made reentrant to fix some
|
|
strange random problems with metadata.
|
|
- Turn some errors into warnings or simply info.
|
|
- Executables are now built with PIE
|
|
- S24OE formats should work now (MAudio FastTrack Pro)
|
|
- Remove mlock warnings. Add support for mlockall with
|
|
a config option.
|
|
|
|
- Session-manager
|
|
- There are now config files for bluez and v4l2 modules
|
|
- Improve ALSA device and node properties
|
|
- Bluetooth devices have better properties now.
|
|
- The default device routing has been improved.
|
|
|
|
- Device support
|
|
- Port priorities are updated for UCM devices
|
|
- ACP devices notify change in routes in all cases
|
|
- There is now RW support in ALSA devices to increase
|
|
compatibility.
|
|
- Many improvements to Bluetooth. SBC XQ support can now
|
|
be enabled with a config option. mSBC can be enabled
|
|
with an option.
|
|
- Bluetooth devices not expose Routes so that they look
|
|
more like how PulseAudio handles them
|
|
- Gracefully handle missing profile-sets
|
|
- There is now a native HFP backend
|
|
- Improve card names in some cases.
|
|
- pause-on-idle is now disabled for ALSA devices. This can
|
|
reduce pops and clicks when the device is stopped.
|
|
|
|
- ALSA plugin
|
|
- Use rate-match to reduce the latency
|
|
- Implement a _delay() function to get smoother timestamps.
|
|
- Fix property parsing. Fixes volume changes in alsamixer.
|
|
|
|
- PulseAudio server
|
|
- Use rate-match to reduce the latency. This also reduces
|
|
the buffering in audioconvert and improves timestamp
|
|
reporting.
|
|
- Implement rate changes now that we have rate-match
|
|
support.
|
|
- pactl stats will now work
|
|
- Fix excessive memory usage when a capture client doesn't
|
|
read fast enough.
|
|
|
|
PipeWire 0.3.19
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Startup after login should be fixed now with inotify
|
|
used to wait for permissions.
|
|
- Channels should be mapped correctly now.
|
|
- Many bluetooth improvements in LDAC, AptX-HD. AAC was
|
|
also added. Headsets should work better now.
|
|
- pipewire-libpulse was removed. It is now completely
|
|
replaced by pipewire-pulse.
|
|
- Fix a crasher bug in pipewire-pulse and some memory leaks.
|
|
- Fix a bug with feedback loop that would cause 100% CPU.
|
|
- A new pw-top tool to display real-time graph performance.
|
|
- The example session manager now has config files.
|
|
- The config file format was changed to use the SPA JSON
|
|
tokenizer. This makes it more flexible and extensible.
|
|
|
|
- PipeWire improvements
|
|
- Fix debug of id in format channels
|
|
- Audioconvert should now remap channels correctly in all
|
|
cases.
|
|
- Feedback loops were not scheduled correctly and would
|
|
cause 100% CPU usage.
|
|
- Small improvements to the profiler to also log incomplete
|
|
graph status.
|
|
- a new tool pw-top was added that prints real-time performance
|
|
stats of the graph.
|
|
- the rtkit module now sets the nice level to -11
|
|
|
|
- Session-manager
|
|
- The session manager would sometimes link dont-reconnect
|
|
nodes to another node, which would leak monitor streams in
|
|
pipewire-pulse.
|
|
- The session manager now has configuration files. Config files
|
|
can also be placed in the user home directory to make custom
|
|
configurations.
|
|
- The session managers now creates unique device and node
|
|
names for alsa and v4l2 devices.
|
|
|
|
- Device support
|
|
- Many improvements in Bluetooth codecs, LDAC stuttering,
|
|
AptX-HD negotiation, LDAC ABR support
|
|
- Bluetooth supports AAC audio now.
|
|
- Many fixes to Bluetooth SCO transport used in headsets.
|
|
- inotify support in device monitors
|
|
- ACP was synced with the latest pulseaudio code
|
|
- Fix a bug in enumeration of device ports.
|
|
|
|
- PulseAudio server
|
|
- seek flags and offset are now supported, making gstreamer
|
|
pulse elements work better.
|
|
- Fix a crasher bug in pipewire-pulse, we sometimes would
|
|
write too much to the ringbuffer
|
|
- Fix some memory leaks in error cases.
|
|
- Fix handling of NULL string to locate default sink/source
|
|
|
|
- JACK layer
|
|
- Ports can also be found with the aliases now, making
|
|
qjackctl work in more cases.
|
|
|
|
|
|
PipeWire 0.3.18
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- More work in the PulseAudio server. It should be compatible
|
|
with more applications.
|
|
- Bluetooth now support extra codecs such as AptX/HD and LDAC.
|
|
- Support for virtual sources and sink was improved a lot.
|
|
- Added a new pw-dump tool to dump the objects in JSON formats
|
|
and for filtering them with tools like jq.
|
|
- Many more stability fixes and improvements.
|
|
|
|
- PipeWire improvements
|
|
- Silence some harmless warnings
|
|
- pw-cli can now be used to set parameters.
|
|
- Streams now perform the correct channel mapping when linked
|
|
to non-standard multichannel devices. Previously channels
|
|
would get swapped.
|
|
- port, node and device params are now cached in the server.
|
|
This avoids opening and closing devices whenever some client
|
|
enumerates formats, which improves performance a lot,
|
|
especially in cases where opening a device is slow.
|
|
- Add a command to keep a device open during negotiation. This
|
|
is used to enumerate and set a format while opening the
|
|
device just once, improving performance.
|
|
- The null-sink scheduling was fixed.
|
|
- A memory corruption bug was fixed in format conversion, this
|
|
could cause crashes, silent channels or other undefined
|
|
behaviour.
|
|
- There is now a simple JSON parser.
|
|
|
|
- Session-manager
|
|
- Settings files are now stored in JSON. With the json parser
|
|
this is easier to parse and extend
|
|
|
|
- Device support
|
|
- Bluetooth now supports additional codecs: LDAC, AptX and
|
|
AptX HD. LDAC is known to not work very well yet.
|
|
- ALSA devices will now default to the max supported channels
|
|
if nothing else is specified. This makes it possible to use
|
|
8+ channel cards with the alsa-pcm module, which is not
|
|
supported with the default alsa-acp module.
|
|
- Enable mSBC support in oFono.
|
|
- Add an option to disable hardware mixers
|
|
- ALSA now improves support for batch devices.
|
|
- The udev rules had references to Pulseaudio removed in order
|
|
to not create conflicts.
|
|
- Fix a potential crash in bluetooth devices when
|
|
disconnecting.
|
|
- UCM cards now use HW volume when possible.
|
|
|
|
- PulseAudio server
|
|
- The id can now be used as the name to locate cards and
|
|
devices
|
|
- Report streams with planar formats as well
|
|
- Better error reporting when stream create fails
|
|
- module-null-sink can now handle channels, rate and
|
|
channel_map properties
|
|
- Add support for 3 types of virtual devices: source,
|
|
sink and duplex.
|
|
- set-port was fixed
|
|
- Some buffer parameters were tweaked to improve
|
|
performance, compatibility and stuttering with lower
|
|
latency.
|
|
- NULL can be used as a name for the device sink/source
|
|
- Support lookup of monitor names
|
|
- Set properties more like pulseaudio so that some
|
|
clients (Teamspeak) don't crash anymore
|
|
|
|
PipeWire 0.3.17
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Fix crasher bug for kwin when screensharing stopped.
|
|
- Massive improvements and compatibility fixes in the
|
|
PulseAudio server.
|
|
- The session manager now has a config directory in
|
|
/etc/pipewire/media-session.d/ It will look for files there
|
|
to activate session manager modules. Packagers can use
|
|
this to only activate the audio modules when the PulseAudio
|
|
server, libjack.so or the alsa modules are installed.
|
|
|
|
- PipeWire improvements
|
|
- We now clear hooks before adding them. Some application
|
|
did not clear them and had random data for the destroy
|
|
callback.
|
|
- Return -ENOENT from unknown resources so apps can handle
|
|
this better. It's a common problem when an app tries to
|
|
introspect and object but it disappeared before the message
|
|
reached the server. Apps should ignore this.
|
|
- channelmap information is now passed with the volume
|
|
settings.
|
|
- DMABuf is not mmapp()ed anymore with the FLAG_MAP_BUFFERS in
|
|
the stream or filter. This is because DMABuf usually
|
|
requires more that just a simple mmap and is better left
|
|
for the application.
|
|
- increase the maximum number of ports for a client-node.
|
|
- adapter and node-factory now support the linger option to
|
|
keep the objects alive after the creating client disconnected.
|
|
|
|
- Device support
|
|
- ALSA now handles error in close(), like when unplugging a
|
|
USB device.
|
|
|
|
- Session-manager
|
|
- The session manager is now handling DONT_RECONNECT streams
|
|
without a target node. They get connected to a default node
|
|
once and then fail to reconnect.
|
|
- The session manager now exposes the stream setting as
|
|
metadata. This makes it possible for other components, such
|
|
as pulse-server to use this information. Information is stored
|
|
as a json object for easier consumption.
|
|
- The session manager now has a config directory in
|
|
/etc/pipewire/media-session.d/ packagers can use this
|
|
|
|
- PulseAudio server
|
|
- Pulse server now acquire the dbus name.
|
|
- Improvements in timing and compatibility with many apps.
|
|
- The stream-restore extension is now implemented so that
|
|
the event volume can be configured.
|
|
- Many stability fixes and improvements.
|
|
- Fix some issues with module-load/unload
|
|
|
|
|
|
PipeWire 0.3.16
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- Fix screensharing for old 0.2 clients
|
|
- Many pulse-server improvements. There is now a
|
|
pipewire-pulse binary that is the preferred solution for
|
|
PulseAudio compatibility. The replacement libpulse
|
|
libraries are now deprecated. This also makes audio in
|
|
Flatpak work.
|
|
|
|
- PipeWire improvements
|
|
- Fix cleanup of listeners everywhere. Force remove of
|
|
listeners in _destroy to avoid crashes.
|
|
- Add support for a journald logger module.
|
|
- Various memory leak fixes
|
|
- Silence some warnings that spammed the logs.
|
|
- Fix flush in pw_stream. This fixes small glitches when
|
|
switching streams in music players.
|
|
- Various FreeBSD fixes and improvements.
|
|
- Fix some crashes when destroying objects.
|
|
|
|
- Device support
|
|
- Reload the ALSA configuration when creating a node so that
|
|
hotplugged devices work in all cases.
|
|
- Fix memory leaks in ACP library. This also fixes issues
|
|
where the mixer device was not closed.
|
|
- Bluetooth now has support for the mSBC codec for SCO
|
|
source and sink.
|
|
|
|
- pulse-server
|
|
- Many introspection and compatibility improvements. It should
|
|
now be as good or better than the replacement library.
|
|
- Implement sample cache to make notification events work.
|
|
|
|
- JACK layer
|
|
- handle errors when linking, fixes jack_connect hang when
|
|
the ports were already linked.
|
|
|
|
|
|
PipeWire 0.3.15
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- This is a quick update to fix critical issues with the
|
|
0.3.14 update, which broke screen sharing and accidentally
|
|
enabled the experimental pulse-server.
|
|
- Fix some compatibility issues in pulse-server with
|
|
pavucontrol and fix an issue that would block the complete
|
|
server.
|
|
|
|
- PipeWire improvements
|
|
- Permission checks for new clients are now done from a
|
|
global context, which makes it possible to assign initial
|
|
permissions to objects.
|
|
- Handle EINTR everywhere
|
|
- Fix an issue with the node state changes where a quick
|
|
pause/play would hang a client.
|
|
|
|
- Session manager improvements
|
|
- Disable the bluez5 and pulse-bridge modules by default because
|
|
they interfere with pulseaudio. These options should only be
|
|
enabled if pulseaudio is removed or disabled in the system.
|
|
- Fix an issue where the session manager could end up in
|
|
infinite recursion while scanning for things to do.
|
|
- The session manager will now always configure nodes to remix
|
|
to the channel configuration of the device. This fixes the case
|
|
where mono streams would only end up on one channel of a stereo
|
|
device.
|
|
|
|
- Device support
|
|
- Initial merge of A2DP extra codec support using the new bluez5
|
|
API.
|
|
|
|
- pulse-server
|
|
- Create the runtime directory when it doesn't exist.
|
|
- Don't ever block the server, use non-blocking IO everywhere.
|
|
- Fill description of profiles with the name if not otherwise set,
|
|
this fixes a crash in pavucontrol.
|
|
- the connection debug category will now also debug pulse
|
|
messages.
|
|
- Respect the no_remix flag to make the control panel channel
|
|
check work.
|
|
|
|
- ALSA plugin
|
|
- implement pause
|
|
|
|
|
|
PipeWire 0.3.14
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Highlights
|
|
- This release focuses on bugfixes and stability
|
|
improvements.
|
|
- A new experimental pulse-server module was added. This
|
|
module implements the pulseaudio protocol on top of
|
|
PipeWire and can be used to make flatpaks work with
|
|
PipeWire. It looks like this might be a better way
|
|
forward compared to the libpulse.so replacement library.
|
|
- A2DP bluetooth was reworked. Playback should work a lot
|
|
better now. Support was also added to automatically link
|
|
an A2DP source to a playback device, which makes it possible
|
|
to use PipeWire as a bluetooth receiver as well.
|
|
- Improvements to the routing and volume restore features
|
|
of the session manager.
|
|
|
|
|
|
- PipeWire improvements
|
|
- The channelmixer does not normalize volumes anymore. Volumes
|
|
are only normalized for monitoring streams now.
|
|
- Streams can actually start in the inactive state now.
|
|
- The channelmixer can now also convert volume updates from one
|
|
channel layout to another. This makes saved volumes work
|
|
even when streams have different channel layouts.
|
|
- Clients are only registered after the properties have been
|
|
updated.
|
|
- Links now have a new active state.
|
|
- Drivers can now also specify a minimum quantum. This makes it
|
|
possible for bluetooth devices to specify an optimum quantum
|
|
for the given codec settings and MTU.
|
|
- The amount of data sent over the socket was reduced by only
|
|
sending the data that changed.
|
|
- Client objects are now exposed after they uploaded their
|
|
properties, which makes the new object more useful.
|
|
|
|
- Tools improvements
|
|
- pw-cat will now add metadata to the PipeWire streams.
|
|
|
|
- Session manager improvements
|
|
- Fix crashes when reading bad data in stored settings.
|
|
- volume and routing is improved. Settings are now remembered
|
|
per application or media-role.
|
|
- The session manager remembers the last device used per stream
|
|
- Fix a bug when moving streams where it could sometimes end
|
|
up with linking a stream to multiple devices.
|
|
- Use RTKit to set realtime priority on the data thread in the
|
|
session manager. This improves performance of the pulse-server
|
|
and bluetooth devices.
|
|
- Add a new property to mark streams that want to capture from
|
|
the monitor of the default sink.
|
|
- NODE_TARGET can now also contain the node name. This avoids
|
|
some lookups in the pulseaudio layer when selecting target
|
|
nodes by name.
|
|
- the -e and -d options are more usable now and can be used to
|
|
add and remove modules from the default list of modules.
|
|
|
|
- Device support
|
|
- v4l2: add some workarounds for buggy drivers. Add Limited
|
|
support for droidcam.
|
|
- ACP: improve selection of default port and profiles.
|
|
- ACP: add support for using the hardware mixer for more than
|
|
8 channel streams.
|
|
- ACP: support the new port type and availability group found
|
|
in PulseAudio.
|
|
- A2DP bluetooth timings were reworked. Automatic linking of
|
|
A2DP sources was added to make it possible for PipeWire to
|
|
act as a bluetooth receiver. The code was reworked to allow
|
|
other codecs such as APTX and LDAC in the future.
|
|
- Try harder to recover from ALSA errors.
|
|
|
|
- GStreamer improvements
|
|
- Fix some crashes in the monitor that cause
|
|
gnome-initial-setup to crash.
|
|
|
|
- PulseAudio layer improvements
|
|
- Many compatibility improvements. Improved playback in
|
|
chrome. Fix a crash in firefox when the daemon is stopped.
|
|
- Fix a leak in the formats.
|
|
- Fix !ADJUST_LATENCY streams like paplay.
|
|
- Make the device option in paplay work.
|
|
- Fix volume/mute notifications, this makes plasma volume updates
|
|
work again.
|
|
- Do the conversion between PulseAudio cubic volumes and PipeWire
|
|
linear volumes. Volume levels should behave now like they did
|
|
with PulseAudio.
|
|
|
|
- JACK layer improvements
|
|
- Return an error when we run out of midi events. Some application
|
|
rely on this behaviour.
|
|
|
|
- ALSA plugin improvements
|
|
- The ALSA plugin now also supports the node name in the
|
|
playback_node and capture_node properties.
|
|
|
|
|
|
PipeWire 0.3.13
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- PipeWire improvements
|
|
- Add pw-reserve tool to reserve or monitor a device on DBus.
|
|
- Install spa-resample, a tool to resample a file.
|
|
- Install spa-acp-tool, a tool to inspect the card profile.
|
|
- Various fixes and improvements
|
|
- Fix a bug in pw-stream where a capture stream could run out
|
|
of buffers and become silent.
|
|
- Rework the processing loops in the adapter and stream. There
|
|
is now less latency in PulseAudio and ALSA layers.
|
|
|
|
- Session manager improvements
|
|
- Improve the device reservation code. We now try to acquire
|
|
the device using the dbus device reservation API before we
|
|
probe the device. This avoids conflicts with a running
|
|
PulseAudio where devices would disappear (because they were
|
|
locked by the other process).
|
|
- Don't fail on invalid input from the config files.
|
|
- Audio devices now have the same name as what PulseAudio
|
|
would assign.
|
|
|
|
- Device support
|
|
- v4l2: try to use the format before enumerating the size and
|
|
framerate. Some drivers don't check the format and might now
|
|
work better.
|
|
- v4l2: Fall back to MMAP when EXPBUF fails. Fix MMAP access,
|
|
just export the fd and the mapoffset. This should make more
|
|
devices work.
|
|
- Fix crash in ALSA Card Profile (ACP) code.
|
|
- ACP: fix selection of default profile. Prefer any possibly
|
|
available profile over 'Off'. This makes some card at least
|
|
start with something.
|
|
- Fix soft volume. After setting the volume to 0, it would stay
|
|
at 0 until pushed over the max volume. This should fix
|
|
various volume related issues.
|
|
|
|
- PulseAudio layer improvements
|
|
- Rework the buffering and latency measurements and tweak the
|
|
buffer attributes. This should make browsers and media
|
|
players work better. This should also improve speechd
|
|
performance.
|
|
|
|
- JACK layer improvements
|
|
- Fix compilation against newer JACK.
|
|
|
|
|
|
PipeWire 0.3.12
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- PipeWire improvements
|
|
* the channelmap converter now handles unknown and strange
|
|
channellayouts much better.
|
|
* the resampler is now cleared correctly, avoiding clicks and
|
|
pops at the start of sound.
|
|
* Fixes for various crasher bugs. (paplay drain, vlc shutdown,
|
|
pactl info, ...)
|
|
* Fix a race condition in the node state changes that caused
|
|
all kinds of sync and other issues (vlc, mpv, ...)
|
|
* Improve the binary name property of applications
|
|
* Fix the scheduling again of nodes that always need a driver
|
|
such as the jack clients.
|
|
|
|
- Session manager improvements
|
|
* fix routing to default nodes. Sometimes nodes were not routed to
|
|
the default node (bluetooth)
|
|
|
|
- Device support
|
|
* disable channelmap from ALSA by default. This is what PulseAudio
|
|
does and thus provides better compatibility.
|
|
* fix a bug in how the resampler was used in the ALSA source,
|
|
causing distortion and errors when using low latency capture
|
|
clients. (Discord, webrtc, ...)
|
|
* Small bluetooth improvements. More work is needed for reliable
|
|
bluetooth playback.
|
|
|
|
- GStreamer plugins
|
|
* the device provider now stops the processing loop before shutting
|
|
down, which avoids crashes (gnome-initial-setup).
|
|
|
|
- PulseAudio layer improvements
|
|
* the buffer attributes were reworked to ensure compatibility with
|
|
many more applications such as mpv and audacious.
|
|
* the pulseaudio layer will now try hard to not hand out invalid
|
|
channel maps to the application. (avoids crashes in
|
|
gnome-volume-control). The channel map will now also look more
|
|
like what PulseAudio does.
|
|
* the @DEFAULT_SINK/SOURCE/MONITOR@ wildcards now work. This
|
|
fixes the problem with volume keys when they are bound to
|
|
scripts using pactl and the default sink/source wildcards.
|
|
* the PIPEWIRE_LATENCY environment variable now works again
|
|
* Fix some leaks of ports and port info. Also fix the leak of the
|
|
context when the mainloop is stopped.
|
|
* The sink/source format_info array is now filled up completely,
|
|
this is actually not implemented yet in the real PulseAudio.
|
|
|
|
- JACK layer improvements
|
|
* jack now returns version 3.0.0 and has PipeWire in the version
|
|
string so that apps can report this.
|
|
|
|
|
|
PipeWire 0.3.11
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- PipeWire improvements
|
|
* Properly cleanup the mixer structures when a port is removed,
|
|
this should fix client crashes related to port config changes
|
|
and other random crashes.
|
|
* Optimize the preferred formats in the audio converter. Higher
|
|
quality formats with higher performance are chosen first.
|
|
* Make sure the time reported by pw_stream is always increasing,
|
|
even when the driver and clock changes.
|
|
* There is now also a system service and socket that can be used
|
|
to enable PipeWire systemwide. This is however not recommended
|
|
and disabled by default.
|
|
* Fix channelmixer 5.1 to stereo mix matrix. It was not reading
|
|
the conversion matrix correctly and cause channels to be
|
|
dropped. The channelmixer will now also normalize the volume,
|
|
like what pulseaudio does.
|
|
* The channelmixer will now just copy channels when no layout
|
|
has been given. It has also optimized paths for this. This
|
|
makes it possible for apps to request > 8 channels from the
|
|
alsa plugin (ardour).
|
|
* Port, Node and Link will now also emit an error on the
|
|
resources in addition to updating the error in the info. This
|
|
would make it easier to track negotiation errors in the session
|
|
manager later.
|
|
* many small fixes and cleanups.
|
|
* Fix compatibility:
|
|
+ DOSBox: fix crash because of double free in pw_stream
|
|
|
|
- Session manager improvements
|
|
* The session manager will now try to configure the client to
|
|
the channel configuration of the sink/source. It will only
|
|
do this for downmixing, never for upmixing and also never
|
|
when the client has the dont-remix property set. It will
|
|
also renegotiate the channel layout when moving a stream to
|
|
a new sink/source.
|
|
* Configuration state is now saved in XDG_CONFIG_HOME.
|
|
Previously it was saved in $HOME/.pipewire-media-session/
|
|
You can migrate the state by moving the files to
|
|
$XDG_CONFIG_HOME/pipewire-media-session (or
|
|
$HOME/.config/pipewire-media-session as a fallback when
|
|
XDG_CONFIG_HOME is not set).
|
|
|
|
- Device support
|
|
* Bluetooth sources and sinks should work better now.
|
|
* There is now also a new bluetooth backend using hsphfpd.
|
|
* fix the ALSA UCM Off profile for alsa pcm devices
|
|
* improve ALSA port and profile switching. The ACP device will
|
|
now switch to the best port and profile when availability
|
|
changes.
|
|
|
|
- PulseAudio layer improvements
|
|
* Implement some more callbacks. The pulse layer will now also
|
|
notify applications of stream moved, started and latency
|
|
changes.
|
|
* Fix error code when an object was not found. We now return
|
|
PA_ERR_NOENTITY instead of PA_ERR_INVALID.
|
|
* Add some support for loading new null sinks. Applications such
|
|
as pulseeffects use this. Note that pulseeffects does not yet
|
|
work reliably but can start now.
|
|
* Improve handling of profile and port updates, it should work
|
|
much more reliable now. Apps should now also again receive
|
|
volume updates from sinks/sources.
|
|
* Fix compatibility:
|
|
+ openal-soft 1.20
|
|
+ pavucontrol (checks PA_ERR_NOENTITY)
|
|
|
|
- JACK layer improvements
|
|
* improve default source and sink handling. It was not updated
|
|
correctly in all cases.
|
|
* add samplerate and period to the pw-jack wrapper to easily
|
|
configure the desired samplerate and period for the app.
|
|
|
|
- ALSA plugin improvements
|
|
* Add a mixer entry in the alsa config file.
|
|
* Implement support for planar types, rework the processing
|
|
function to make it more robust.
|
|
* refuse to load the alsa plugin when linked against 0.2. This
|
|
catches some old apps linked against 0.2 that want to use the
|
|
alsa plugin.
|
|
* Fix compatibility:
|
|
+ linphone (ALSA SIGFPE when _status() is called
|
|
before _prepare()).
|
|
|
|
PipeWire 0.3.10
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Many improvements to the pulse layer.
|
|
* GStreamer pulsesink element now works.
|
|
* Fixes some segfaults.
|
|
* Enable rtkit for client threads.
|
|
* fixes capture of monitor stream by name
|
|
* implement some more extensions, this makes paman
|
|
work and removes some warnings.
|
|
|
|
- Many improvements to the GStreamer elements
|
|
* negotiation rework, avoid calling GStreamer methods from
|
|
the PipeWire callbacks because they might block and cause
|
|
deadlocks.
|
|
* Add support for non-string property values.
|
|
* improve stability after buffer and format
|
|
renegotiation.
|
|
* Rework the device provider.
|
|
* pipewiresink can now provide a stream that can
|
|
be consumed by apps like cheese.
|
|
|
|
- Many improvements to the JACK layer:
|
|
* Rework the buffer_size callbacks. Make sure we call
|
|
the callback from a 'safe' thread and that we don't
|
|
call the process callback while the application is
|
|
handling the callback. This improves stability in
|
|
apps like Carla when PipeWire dynamically changes
|
|
the buffer size.
|
|
* Improve compatibility with apps that call
|
|
get_buffer_frames() with a 0 size (calfjackrack)
|
|
* JACK can now create nodes that can be set as a
|
|
sink/source in PulseAudio/ALSA apps (you can make an
|
|
effects rack and set that as default sink for
|
|
apps).
|
|
|
|
- Added a group id property for nodes. This makes it
|
|
possible to schedule nodes with the same driver even
|
|
when they are otherwise not linked together. To make
|
|
this work well a new flag needed to be added to nodes
|
|
to signal when they are ready for processing.
|
|
|
|
Together with the GStreamer fixes, this makes things
|
|
like:
|
|
|
|
gst-launch-1.0 -v pipewiresrc path=51 stream-properties="props,node.group=1" !
|
|
audio/x-raw ! pipewiresink stream-properties="props,node.group=1"
|
|
|
|
work as expected with PipeWire managing the resampling
|
|
to keep the clocks of the devices in sync.
|
|
|
|
This can later also be used to force devices to be grouped
|
|
together to create a JACK-like scheduling group.
|
|
|
|
- Streams and filter now use PIPEWIRE_NODE and
|
|
PIPEWIRE_LATENCY env variables as fallback.
|
|
|
|
- ACP add per device port list. This makes UCM devices
|
|
expose the right ports.
|
|
|
|
- Fix some segfaults in ACP and UCM.
|
|
|
|
- make pw-cat use the metadata to find default devices.
|
|
|
|
- The media session can now save and load audio device
|
|
Profiles and Routes (volumes), stream volumes and
|
|
the default sink and sources.
|
|
|
|
PipeWire 0.3.9
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Fix bad audio in chrome
|
|
|
|
- Remove some errors that are not real errors.
|
|
|
|
- Fix 100% cpu when disconnecting devices.
|
|
|
|
- Improve pulseaudio introspection of formats
|
|
|
|
- Fix JACK metadata handling, carla can now monitor the
|
|
port it creates and insert midi.
|
|
|
|
- Add a new permission bit (M) that is needed to be able
|
|
to configure metadata on an object. Improve security of
|
|
metadata some more, only allow metadata on objects that
|
|
are visible to the client setting the metadata.
|
|
|
|
- Add support for videocrop in the GStreamer elements.
|
|
|
|
- Improve handling of the runtime directory for the
|
|
server sockets. Add some reasonable fallback when
|
|
XDG_RUNTIME_DIR is not set, as suggested in the spec.
|
|
|
|
- Improve ALSA device names from ACP.
|
|
|
|
- Fix various crasher bugs. One in the pulse layer, one in
|
|
the session manager.
|
|
|
|
- Make alsa plugin respect the PIPEWIRE_REMOTE env variable.
|
|
|
|
- Various compile fixes.
|
|
|
|
|
|
PipeWire 0.3.8
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Fix an embarrassing crasher in the JACK layer when
|
|
metadata keys were removed.
|
|
|
|
- Make it possible to add properties to jack clients with
|
|
a PIPEWIRE_PROPS env variable. This can be used to make
|
|
JACK nodes look like a device (like an effects rack).
|
|
|
|
- Improvements in the session manager in how it links
|
|
ports. Now it will try to link matching channels first
|
|
and be more intelligent otherwise. The session manager
|
|
will also configure the stream to the device port
|
|
configuration when needed.
|
|
|
|
- Add ofono backend for Bluetooth HeadSet support.
|
|
|
|
- Improve default source and sink handling. They are now
|
|
stored with their id, instead of name, in the metadata.
|
|
This makes it work better with JACK because of JACK's
|
|
limited name length.
|
|
|
|
- Improve environment variables to make it possible to
|
|
create and connect to servers other than "pipewire-0".
|
|
Implement this in pulseaudio, JACK and alsa layers.
|
|
|
|
- Add an alsa mixer plugin so that alsamixer works with
|
|
PipeWire. It will configure the default source/sink
|
|
volumes.
|
|
|
|
- Fix capture devices. There was something wrong with how
|
|
the resampler was used that caused corruption in the
|
|
signal when the resampler was active.
|
|
|
|
- We now ship alsa card paths, profile-sets configuration
|
|
files and udev rules so that we don't have to rely on
|
|
the pulseaudio ones.
|
|
|
|
- Many build and stability fixes.
|
|
|
|
|
|
PipeWire 0.3.7
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Improved PulseAudio compatibility. The alsa card profile
|
|
code was reused from PulseAudio. Devices now support
|
|
all profiles, ports, jack detection, UCM and hardware
|
|
mixers that PulseAudio implements. There should not
|
|
be (almost) any difference between PipeWire and PulseAudio
|
|
in how it presents and manages devices.
|
|
Other missing API pieces such as the default sink/source
|
|
and move_stream are implemented now. At this point
|
|
it should be possible to replace PulseAudio with the
|
|
compatibility layer for those who want to try.
|
|
|
|
- Many fixes and improvements to the GStreamer elements.
|
|
pipewiresrc now has the ability to periodically resend
|
|
the last frame. This makes it possible for use-cases like
|
|
screensharing to only update the screen on changes while
|
|
still keeping the client side encoder busy. PipeWire
|
|
elements can now also share a connection between them.
|
|
|
|
- Improvements to the bluetooth nodes. Dynamically adding
|
|
and removing devices should work much smoother now. Many
|
|
fixes and improvements to a2dp and sco nodes.
|
|
|
|
- Reduced memory usage by using less pre-allocated memory
|
|
where possible. JACK clients are especially using less
|
|
memory.
|
|
|
|
- Support for passive links is added again. These are links
|
|
that don't cause the associated driver to become active.
|
|
This makes it possible to have blocks of effects+sinks go
|
|
to suspend as a group when not in use.
|
|
|
|
- Both consumers and producers can now ask to renegotiate
|
|
the format. This required some cleanups and improvements
|
|
to how links and node states were handled. More work is
|
|
needed to implement more use cases.
|
|
|
|
- Important fixes to how memory is shared with clients. Memory
|
|
was not correctly freed in all cases, which would result
|
|
in reuse of the wrong memory.
|
|
|
|
- Support for planar formats for audio and video was added.
|
|
|
|
- Improved error handling in the session manager.
|
|
|
|
- Metadata is now used to manage default audio source and
|
|
sink devices. The session manager will try to link streams
|
|
to the default device. Changing the default device will
|
|
move streams to the new device. PulseAudio and JACK layers
|
|
respect the default source/sinks.
|
|
|
|
- Metadata is used to tag the desired output device for
|
|
a stream and the session manager will move streams when
|
|
the metadata changes. The PulseAudio layer uses this to
|
|
implement the move_stream feature.
|
|
|
|
- Many fixes to the security modules. The session manager now
|
|
has a flatpak module that grants permissions to flatpak
|
|
apps. The PulseAudio layer now respects the permissions of
|
|
objects. Security related properties are made read-only
|
|
now. Different access modules can now coexist.
|
|
|
|
- The portal module has been split up in 2 parts:
|
|
1) a part living in the daemon that monitors the portal
|
|
dbus owner and tags all clients from this PID. This
|
|
part has to run in the daemon in order to securely
|
|
tag the clients.
|
|
2) a part in the session manager that uses the permission
|
|
store to manage the permissions of portal managed
|
|
clients.
|
|
|
|
|
|
PipeWire 0.3.6
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Extensive memory leak fixing and stress testing was done.
|
|
A big leak in screen sharing with DMA-BUF was fixed.
|
|
- Compile fixes
|
|
- Stability improvements in jack and pulseaudio layers.
|
|
- Added the old portal module to make the Camera portal
|
|
work again. This will be moved to the session manager in
|
|
future versions.
|
|
- Improvements to the GStreamer source and sink shutdown.
|
|
- Fix compatibility with v2 clients again when negotiating
|
|
buffers.
|
|
|
|
|
|
PipeWire 0.3.5
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Compiler fixes
|
|
- Add pw-midiplay and pw-midirecord aliases
|
|
- Add pw-mididump tool
|
|
- Add pw-metadata tool to inspect, add and remove metadata
|
|
for objects.
|
|
- Docs updates, man pages
|
|
- install alsa config files
|
|
- Fix linked sink/source in pulseaudio
|
|
- ratelimit graph processing warnings
|
|
- improve buffer handling in GStreamer elements
|
|
- Fix power usage by removing the queue for the alsa
|
|
sequencer system announce messages.
|
|
- Fix metadata clear() method dispatch.
|
|
- Improve parameter enumeration, make it possible to detect
|
|
missing parameters vs no-compatible parameters so that we
|
|
can use defaults in the first case and error in the second
|
|
case.
|
|
- Fix cleanup of proxy objects. Stability improvements on
|
|
plug/unplug in session manager.
|
|
- Make it possible to set log level from config file
|
|
- improve debug of param negotiation errors. Log the
|
|
parameters to stderr/journal.
|
|
- Make it possible to configure global logger
|
|
implementation.
|
|
- Fix NEON detection
|
|
- JACK and PulseAudio compatibility improvements
|
|
|
|
|
|
PipeWire 0.3.4
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- A quick update with some important stability fixes.
|
|
|
|
|
|
PipeWire 0.3.3
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- NEON optimizations for audio conversion (32 and 64 bits)
|
|
- rework of session manager implementation
|
|
- Add option to disable modules in the session manager
|
|
- Release midi hardware devices when suspended
|
|
- various build fixes
|
|
- Clean up options of various utils
|
|
- Stability improvements
|
|
- Mayor improvements in pulseaudio emulation. Improved
|
|
timings and compatibility.
|
|
- Implementation of drain and flush in pulse and alsa
|
|
emulation.
|
|
- Implement poll on file descriptors.
|
|
- Improvement of metadata for jack emulation.
|
|
- Fix memory and thread problems in jack emulation.
|
|
- Simplification of state changes. Should make more use
|
|
cases work in the jack emulation.
|
|
- Improvements in the gstreamer elements. Removal of
|
|
extra internal queue. pipewiresink can now be used to
|
|
play audio.
|
|
- Add pw-jack and pw-pulse scripts to run pulseaudio and
|
|
jack applications with the right library path.
|
|
|
|
|
|
PipeWire 0.3.2
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- build fixes
|
|
- Added support for data type negotiation. This makes it
|
|
possible for a client to say that it can handle DMABuf
|
|
and MemFd and then let the server select a compatible
|
|
format.
|
|
- Handle errors when enumerating parameters better.
|
|
- Add support for rate, format, channels and period_bytes
|
|
to the alsa config file to restrict what alsa apps can
|
|
negotiate.
|
|
- Fix JACK midi output.
|
|
- Optimizations in common audio format conversions using
|
|
AVX2. Small optimizations to plugins.
|
|
- Change the vulkan compute example to an MIT licensed
|
|
shader.
|
|
- Remove some hardcoded defaults in the audio and video
|
|
processing and use the values from the processing
|
|
context. This also fixes the vulkan example.
|
|
- Correct the documentation and defaults in the daemon
|
|
config file.
|
|
- Fix alsa and v4l2 buffer recycle. A paused client could
|
|
cause the server to leak all buffers.
|
|
- Remove some warnings that should be ignored.
|
|
- Fix a crash in the bluez5 plugins.
|
|
- Try to select higher quality formats first when
|
|
negotiating a format with an audio device.
|
|
- Fix an infinite loop in udev detection in some cases.
|
|
- Add non-interactive mode to pw-cli. You can now just
|
|
do "pw-cli ls Port" to get a listing of all ports.
|
|
pw-cli will now also connect to the default server by
|
|
default and has options to select a different server.
|
|
- Allow the server to go up to the maximum quantum (8192
|
|
samples or ~=180ms) if a client explicitly wants this.
|
|
|
|
|
|
PipeWire 0.3.1
|
|
|
|
This is a bugfix release that is API and ABI compatible
|
|
with previous 0.3.x releases.
|
|
|
|
- Don't load the rtkit module by default. It can cause a
|
|
sigkill, which is not desirable for mutter, for example.
|
|
Only enable this for the jack library for now.
|
|
- Don't use pthread cancel by default because it uses a
|
|
signal that might crash some apps. Only use it for
|
|
the jack library because jack clients really expect this.
|
|
- Build fixes for -Werror=suggest-attribute=format
|
|
- improve error messages, don't report harmless errors and
|
|
warnings. Try to send error messages to the proxy that
|
|
started the operation or is the owner of the object.
|
|
- pw-cat: midi improvement, add midi recording and dump
|
|
in verbose mode
|
|
- fix properties when loading spa-nodes from the config
|
|
- Fix and update some examples
|
|
- jack: check arguments and don't crash when invalid
|
|
- Fix buffer memory upload.
|
|
- jack: fix compatibility with zrythm. Fix timemaster
|
|
install, improve sample_rate callback. Fix reposition
|
|
handling.
|
|
- fix crash in port after buffer negotiation error.
|
|
- add support for control ports in pw_filter
|
|
- fix cleanup of the metadata module
|
|
- improve param enumeration.
|
|
- Clear stream buffers when the format is cleared.
|
|
- Add create-object command in the config file to create
|
|
object from a factory.
|
|
- Fix crash after the driver was not removed from unassigned
|
|
nodes. Also properly pause inactive nodes.
|
|
- Use "true" and "false" in properties when we are talking
|
|
about a boolean.
|
|
- pulseaudio: improve compatibility
|
|
|
|
|
|
PipeWire 0.3.0
|
|
|
|
The 0.3 release is a major milestone in the development of
|
|
PipeWire. It features a complete redesign of the scheduling
|
|
mechanisms that make it possible to run a JACK compatibility
|
|
layer with comparable performance to JACK2.
|
|
|
|
The API has been reworked and is declared stable now. All
|
|
development files and runtime paths are versioned so that
|
|
future incompatible changes can be done without breaking
|
|
existing applications.
|
|
|
|
PipeWire 0.3 also includes a (now mandatory) session manager
|
|
that populates and controls the PipeWire graph. This example
|
|
session manager is very simple and not configurable. It is
|
|
expected that future version will either switch to a more
|
|
flexible session manager (like WirePlumber) or improve the
|
|
configuration options of the example session manager.
|
|
|
|
PipeWire 0.3 includes both PulseAudio, JACK and ALSA
|
|
compatibility libraries that are known to support a wide range
|
|
of applications. The ALSA library is pretty complete at this
|
|
point. The JACK and mostly the PulseAudio compatibility
|
|
libraries need more work. See the Wiki pages for the current
|
|
compatibility problems. We do not yet encourage people to
|
|
switch away from their existing audio solutions (PulseAudio
|
|
or JACK) but we would love to hear from people who try it
|
|
anyways. Future versions will mostly focus on improving
|
|
compatibility further to make PipeWire a drop-in replacement.
|
|
|
|
PipeWire comes with some GStreamer plugins to consume and
|
|
produce data for PipeWire. The consumer (pipewiresrc) is
|
|
working well in most cases. The sink (pipewiresink) is known
|
|
to be somewhat problematic for now.
|
|
|
|
PipeWire 0.2.97
|
|
|
|
Eighth pre-release for upcoming 0.3:
|
|
|
|
- Build fixes
|
|
- pw-cat improvement: Fix remote name, add midi support
|
|
- add device subscribe params for completeness
|
|
- jack and pulseaudio compatibility fixes
|
|
- Fix a bug in resampler, add quality option, tweaked quality
|
|
settings, tested now against https://src.infinitewave.ca/
|
|
testsignals and submitted results for publication.
|
|
- Fix awkwardness in buffer negotiations, the default number of
|
|
buffers was 4 and jack could only handle 2, causing
|
|
corruption. Also implement negotiation of Step ranges.
|
|
- Fix device reservation to work together with pulseaudio,
|
|
previously we would block pulseaudio.
|
|
|
|
PipeWire 0.2.96
|
|
|
|
Seventh pre-release for upcoming 0.3:
|
|
|
|
- jack: improve compatibility
|
|
- Fix unit test
|
|
- Fix license of jack and alsa libs
|
|
- Make start/stop more threadsafe
|
|
- Fix rt-kit again, add params to configure things, increase default
|
|
soft/hard limits to avoid being killed.
|
|
- version 0 compatibility improvements, tested with firefox, cheese,
|
|
GStreamer and chrome using compat layers.
|
|
- Fix timing for gstreamer source
|
|
- Require libspa in pkg-config file
|
|
- Limit buffers to 16 to support old clients
|
|
|
|
PipeWire 0.2.95
|
|
|
|
Sixth pre-release for upcoming 0.3:
|
|
|
|
- Fix tests for big endian some more
|
|
- Improve v2 compatibility mode: improve type negotiation and
|
|
update_permissions
|
|
- Workaround for firefox screen sharing
|
|
|
|
|
|
PipeWire 0.2.94
|
|
|
|
Fifth pre-release for upcoming 0.3:
|
|
|
|
- Fix man page names
|
|
- Fix jack set_sync_timeout
|
|
- Improve JACK compatibility with apps that cache buffer pointers.
|
|
- Improve mlock failure warning message, add property to configure
|
|
if mlock should be used.
|
|
- Improve OBJECT_PATH in alsa objects
|
|
- Install in versioned directory
|
|
- Add pw-profiler tool
|
|
- Improve pulseaudio compatibility wrt pa_operations
|
|
- Thread safety fixes in remote nodes when activating/deactivating
|
|
- Improve JACK names on duplicates
|
|
- Add option to ignore failure when loading modules
|
|
|
|
PipeWire 0.2.93
|
|
|
|
Fourth pre-release for upcoming 0.3:
|
|
|
|
- Fix unit tests on 32 bits
|
|
- Append -pw version to pulse and jack libs. This way we can install
|
|
it next to the real libraries and use a symlink to enable it.
|
|
- Improve jack support by killing threads with pthread_cancel. This
|
|
then also remove the eventfd from the data-loop, making it
|
|
maybe a little faster.
|
|
- Fix jack_client_close() compatibility
|
|
- Fix some segfaults in the session manager
|
|
- Improve debug of protocol messages
|
|
- Add examples options
|
|
- Don't fail when alsa is not found
|
|
- Fix some compiler warnings with a new spa_aprintf() helper.
|
|
- Add pw-cat, the simple audio playback/record tool
|
|
- Rename pipewire tools to pw- prefix
|
|
- Add improve pw-cli object dump feature
|
|
|
|
|
|
PipeWire 0.2.92
|
|
|
|
Third pre-release for upcoming 0.3:
|
|
|
|
- Improve old version check some more
|
|
- Fix unit tests on little/big endian
|
|
- Fix compilation when CPU has no optimisations
|
|
- Install jack and pulse libraries
|
|
- Handle -EACCESS in flatpack access module
|
|
|
|
|
|
PipeWire 0.2.91
|
|
|
|
It is mostly a bugfix release to make the new version install and
|
|
run correctly in distros.
|
|
|
|
- Install session manager, fix path to find the session manager
|
|
- Fix alsa buffer reuse
|
|
- Small fixes for crasher bugs
|
|
- Implement pw_core_set_paused() to suspend/resume even
|
|
processing. This can be used when using multiple connections
|
|
to a daemon and one needs to pause one connection until the
|
|
other one completes an action. Used by session managers.
|
|
- Improve old version check
|
|
|
|
|
|
PipeWire 0.2.90
|
|
|
|
This is the first pre-release of the 0.3 version. It consists of a
|
|
major rewrite and is not API or ABI compatible with the 0.2
|
|
branch.
|
|
|
|
|
|
PipeWire 0.2.7
|
|
|
|
This is mostly a bugfix release and is API/ABI compatible with
|
|
previous 0.2 versions.
|
|
|
|
Work is ongoing in the work branch that features a completely new
|
|
scheduling method that will enable audio support. Some of these
|
|
API changes are backported in this branch.
|
|
|
|
- Add support for alsa-lib 1.1.9 which changed the include path
|
|
- Improve error checking and reporting in the protocol
|
|
- deviceprovider: fix probing without starting
|
|
- add sentinel to some functions
|
|
- compiler fixes for musl
|
|
- Revert object tree permission checks that broke things, this is
|
|
probably not a good idea (and the tree of objects is going to
|
|
be removed later)
|
|
|
|
|
|
PipeWire 0.2.6
|
|
|
|
- Improve error checking for threads
|
|
- Fix some memory and fd leaks
|
|
- Fix compilation with C++ compilers and clang
|
|
- DISABLE_RTKIT should now not try to use dbus at all
|
|
- Camera Portal fixes:
|
|
- add Camera media.role
|
|
- Rename module-flatpak to module-portal
|
|
- Use the portal permissions store for camera checks
|
|
- Actually use the passed fd in pipewiresrc
|
|
- Make properties with "pipewire." prefix read-only
|
|
- Add security label to client object
|
|
- Enforce link permissions
|
|
- Permissions of objects are now combined with parent permissions
|
|
- Remove libv4l2 dependency, it is not used
|
|
- Improve format negotiation in autolink #146
|
|
- Try to avoid list corruption with event emission #143
|
|
- Fix destroy of client-node memory corruption
|
|
- Various small improvements
|
|
|
|
PipeWire 0.2.5
|
|
|
|
- build fixes for systemd
|
|
- Add cursor and bitmap metadata. This can be used to send a cursor
|
|
sprite with the video stream.
|
|
- permissions were set too strict for non-flatpak clients
|
|
- Fix crash in loop caused by thread unsafe hook emission
|
|
- Add more error checking for thread-loop
|
|
- Small cleanups and bugfixes
|
|
|
|
PipeWire 0.2.4
|
|
|
|
- Install man pages in right directory
|
|
- Add systemd socket activation
|
|
- Various memory leak and corruption fixes in properties, dbus and
|
|
buffer mmapped memory.
|
|
- Fix v4l2 crash on unplug
|
|
- improve stream cleanup
|
|
|
|
PipeWire 0.2.3
|
|
|
|
- Fix deviceprovider caps introspection
|
|
- Refcounting fixes in pipewiresrc
|
|
- Remove clock interpolation from stream
|
|
- Improve clock in gstreamer elements
|
|
- Remove spalib
|
|
- Fix crash with pw_map
|
|
- Add version number to hook list
|
|
- Improve driver mode in gstreamer elements
|
|
- add daemon options
|
|
- add man pages
|
|
|
|
PipeWire 0.2.2
|
|
|
|
- Increment API version and .so version
|
|
|
|
PipeWire 0.2.1
|
|
|
|
- Various fixes to memory handling
|
|
- Fixes for shutdown
|
|
- v4l2 fix enumeration of frame intervals
|
|
- Make the daemon stop when the setup commands fail
|
|
- Improve safety of hooks
|
|
- Update stream API to more future proof version
|
|
- Add more options to stream API such as scheduling in the
|
|
main thread and automatic mapping of buffers
|
|
- Add version file and macros to check compile time and
|
|
runtime versions of pipewire
|
|
- Future proof some structs
|
|
|
|
|
|
PipeWire 0.1.9
|
|
|
|
- Various build fixes
|
|
- Do more permission checks
|
|
- Add support for doing async connections. This can be used to
|
|
make connections through the portal later.
|
|
- Fix device creation from the GStreamer device monitor
|
|
- v4l2 experiment with controls
|
|
- move rtkit to a module to avoid dbus dependency
|
|
- use dmabuf allocator in gstreamer elements
|
|
- Add DSP module for pro audio cases, remove jack module. The
|
|
idea is to make a replacement jack client library that talks
|
|
pipewire directly instead of trying to emulate a jack server.
|
|
- Various memory handling improvements
|