Opened 12 months ago

Closed 11 months ago

Last modified 9 months ago

#18065 closed enhancement (fixed)

pipewire-0.3.71

Reported by: Bruce Dubbs Owned by: Bruce Dubbs
Priority: normal Milestone: 12.0
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

New point version.

Change History (4)

comment:1 by Bruce Dubbs, 11 months ago

Owner: changed from blfs-book to Bruce Dubbs
Status: newassigned

comment:2 by Bruce Dubbs, 11 months ago

# 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.
  • 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.
  • Fix a bug where always_process nodes would sometimes IDLE.
  • 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.
  • 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.
  • Module-rt will now clamp the nice value to the min allowed value to avoid errors from rtkit.
  • 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.
  • module-rtp-session should now do something when started without arguments.
  • A potential crash in module-rtp-session was fixed. (
  • module-filter-chain has better error reporting when a convolver fails to load.

## SPA

  • Move some things around to avoid compiler warnings.
  • 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.

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

## 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.
  • 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.
  • 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.
  • Assign unique names to JACK clients.
  • Fix a potential crash when the thread_utils was used after free.
  • Aliases are now not filled in by default to improve JACK compatibility.

# 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.
  • Document the SPA Pod serialization.
  • Document the PipeWire native protocol.

comment:3 by Bruce Dubbs, 11 months ago

Resolution: fixed
Status: assignedclosed

Fixed at commits

b6c8ea1721 Update to bind and bind utilities 9.16.15.
17f6bd428d Update to pipewire-0.3.71.
c0220db026 Update to libwacom-2.7.0.
05374c37b2 Update to cmake-3.26.4.

comment:4 by Bruce Dubbs, 9 months ago

Milestone: 11.412.0

Milestone renamed

Note: See TracTickets for help on using tickets.