diff --git a/NEWS b/NEWS index b02f8705c..a42c121ee 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,148 @@ +# PipeWire 0.3.71 (2023-05-17) + +This is a bugfix release that is API and ABI compatible with previous +0.3.x releases. + +## Highlights + - A new zero-latency jackdbus bridge was added. This works similar to what + PulseAudio has to offer and creates a sink/source when jackdbus is + started. It is however much more efficient and runs the complete PipeWire + graph as a synchronous JACK client with no added latency. + - Many performance improvements. Activation of remote nodes is more + efficient, fewer eventfds are required on the clients, less callback + overhead in performence critical paths and an optimized poll function + was added. This was mainly driven by the jackdbus module to get the lowest + possible overhead when running the graph. + - The JACK notify callback implementation was reworked to emulate better what + JACK does, improving compatibility with ardour7 and the JACK stress test. + - More work on BAP devices. Device latency is now passed on to + applications also for multi-device headsets, and channel allocation + is handled better. + - Many more improvements and bugfixes. + + +## PipeWire + - Remove the hardcoded limit on io_areas. This is used to link nodes together + and exchange buffers, it was limited to 2048 but now dynamically scales + based on requirements. + - Rate and quantum changes are now applied correctly in more cases. (#3159) + - Updates to client-node to more efficiently process the driver. + - The profiler information was improved to be more accurate. It should + now work better for remote drivers. + - Some potential memory map errors were fixed in the protocol because in some + case with large messages, some fds were closed too soon. + - pw-filter now implements the pw_filter_set_active() method. + - A potential out-of-buffers case was fixed in capture pw-streams where buffers + were not moved to the recycle queue when the node suspended. + - Nodes are now always woken up with the eventfd. Previously there were + some optimiztions in the server to directly call into the node process + function but that optimization is not necessary. Without this optimization + it is now possible to run nodes in different threads. + - pw-stream trigger is now implemented correctly in all cases. + - Remote nodes now use one eventfd less because they get triggered with the + node eventfd directly. + - Monitor ports are now ignored in latency updates. + - A potential race when reporting an error to a client was fixed. (#3192) + - Fix a bug where always_process nodes would sometimes IDLE. (#3189) + - Optimize peer activation. Nodes are now activated more efficiently and + independent of the number of links. It also reduces the number of eventfds + and memory in remote clients. + - A bug in property serialization was fixed. Values with spaces would only + serialize the first part of the value. + +## Modules + - Correctly handle the echo-canceler plugin init method fallback. The + samplerate was not correctly configured. This is only a regression for people + that have external echo-canceler plugins. + - RAOP sink now only sets the volume on the remote end when the stream is + recording. (#3175) + - RAOP discover now tries to deduplicate entries from the same host. + - A new zero-latency jackdbus bridge was added. This works similar to what + pulseaudio has to offer and creates a sink/source when jackdbus is + started. It is however much more efficient and runs the complete PipeWire + graph as a synchronous JACK client. + - The access module uses a more secure way to check the application + executable. + - module-combine-stream now has configurable delay and latency for each + stream. This can be used to align sinks/sources with different latencies. + - A potential crash in module-pulse-tunnel was fixed when shutting down. + (#3199) + - Module-rt will now clamp the nice value to the min allowed value to avoid + errors from rtkit. (#3186) + - Fix a bug with the session counters in module-rtp-sap. Also use the right + format for L24. Improve the AES67 example config. + - Improve some warning and info messages in module-rt. (#3194) + - module-rtp-session should now do something when started without arguments. + - A potential crash in module-rtp-session was fixed. (#3217) + - module-filter-chain has better error reporting when a convolver fails to + load. (#3223) + +## SPA + - Move some things around to avoid compiler warnings. (#3171) + - Increase mixer ports. Reorganize some things and bump mixer input ports + from 128 to 512. + - Fix a potential crash when a node is scheduled before it completes + the setup. + - The JACK sink and source SPA plugins have seen some improvements. + - Allow the peaks resampler still if we disabled resampling. + - Perform more cleanup in audioadapter when in error. + - An optimized non-cancellable loop implementation was added. + - Callbacks were optimized with a _fast() varsion that doesn't check the + version and method. When this check is performed earlier, it can + be skipped in performance critical places. + - Some of the callbacks and system methods are now using the fast function + calls in critical paths. + - A potential division by zero was fixed in the ALSA plugins. + - Improve rate and quantum when starting audioconvert. + - Make it possible to override node.driver in the SPA null-audio-driver. + (#3220) + +## pulse-server + - The audio info parameter parsing was refactored and improved. + - Fix some races with clients exiting when playing samples. + - An option was added to change or disable the dbus name registration. + (#2987) + +## Bluetooth + - Implement battery reporting using AT+XEVENT. + - Disable hardware volume for 3M WorkTunes. + - Implement BAP audio locations (channel positions) by using the new + bluez properties. + +## JACK + - Fix some errors reported by JACK test.cpp. (#2638) + - Add jack.show-midi option to show/hide midi ports. + - Add jack.max-client-ports option. JACK also has a port limit and so + PipeWire needs it as well to make the tests happy. + - Call the shutdown callback only when the server stopped, not when there + is a random error. (#3070) + - Avoid registering the same port name twice. + - Call port registration callbacks in activate/deactivate. + - Improve jack_port_connected(). + - Improve some error reporting. + - The JACK headers were updated to a newer version. + - JACK callbacks are now managed with an event queue to simulate + more what JACK does. This avoids emiting callbacks when a method is blocking + for a reply and causing deadlocks. (#3183) + - Assign unique names to JACK clients. (#2833) + - Fix a potential crash when the thread_utils was used after free. + - Aliases are now not filled in by default to improve JACK compatibility. + (#3154) + +# ALSA + - The ALSA plugin will now wait for negotiation to complete or an error + before _prepare() completes. This makes more applications deal correctly + with the potential errors. + +# Docs + - A new document about how scheduling is implemented was added. + - Update the pw-cli man page. (#2988) + - Document the SPA Pod serialization. + - Document the PipeWire native protocol. + + +Older versions: + # PipeWire 0.3.70 (2023-04-20) This is a quick bugfix release that is API and ABI compatible with previous @@ -62,9 +207,6 @@ This is a quick bugfix release that is API and ABI compatible with previous - The GStreamer source now uses the BaseSrc clocking code to implement the clock and timing code. - -Older versions: - # PipeWire 0.3.69 (2023-04-13) This is a quick bugfix release that is API and ABI compatible with previous diff --git a/meson.build b/meson.build index 35026faac..412f57c8b 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('pipewire', ['c' ], - version : '0.3.70', + version : '0.3.71', license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ], meson_version : '>= 0.61.1', default_options : [ 'warning_level=3',