Page MenuHomeSolus

pipewire: Update to 0.3.39
ClosedPublic

Authored by ReillyBrogan on Oct 22 2021, 4:43 AM.

Details

Summary

Highlighted Changes:

  • media-session is now removed 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.

Full release notes available here

Test Plan
  • Sent audio to a bluetooth speaker
  • Used qjackctl to connect some sources to some audio sinks
  • Generally used as the media server for a few hours
  • Joined a discord call to verify that microphone worked
  • Used to send the video of a running application to a call in a Wayland session

Diff Detail

Repository
R4226 pipewire
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

ReillyBrogan created this revision.Oct 22 2021, 4:43 AM
ReillyBrogan requested review of this revision.Oct 22 2021, 4:43 AM
ReillyBrogan planned changes to this revision.Oct 22 2021, 4:43 AM

WIP until media-session is pushed

ReillyBrogan requested review of this revision.Oct 22 2021, 4:48 AM

Is WirePlumber automatically enabled or does it need to be explicitly?

WirePlumber is not enabled automatically once installed, though the service file does have a conflict with pipewire-media-session so they can't be enabled at the same time. I'm not aware of any capabilities we have to automatically enable it on update for only those currently using pipewire-media-session, so those users would need to manually enable WirePlumber.

I suppose I can modify this diff to pull in the media-session repo as well and build it or we can just rip off the bandaid and add WirePlumber instead (given that we've never actually supported using pipewire-media-session as the audio server).

Discussion Fedora had recently on their own switch to WirePlumber as the default:
https://pagure.io/fesco/issue/2670

I suppose I can modify this diff to pull in the media-session repo as well and build it or we can just rip off the bandaid and add WirePlumber instead (given that we've never actually supported using pipewire-media-session as the audio server).

Would just prefer ripping the bandaid off sooner rather than later. We're talking about a handful of users at most that will be affected by this move and would rather it happen sooner than later.

Staudey added inline comments.
package.yml
54

I realized that since Steam now depends on pipewire-32bit and thus pipewire, that installing it will now automatically also switch the default ALSA source to pipewire, which will cause issues for people (see this thread
So I guess it would be best to either split the ALSA parts out into a separate "pipewire-alsa" package, as some distros seem to do, or keep the configs in the old "alsa.conf.d" directory and have the user manually link or copy them to make pipewire default.
My bad for not realizing this sooner.

JoshStrobl added inline comments.Oct 24 2021, 5:57 PM
package.yml
54

Let's go ahead and get this sorted separately and have this patch get rebased on top of it, so we can get it cherrypicked into stable rather than wait until whatever sorting this needs for WirePlumber.

JoshStrobl requested changes to this revision.Oct 24 2021, 6:23 PM

Needs rebasing.

This revision now requires changes to proceed.Oct 24 2021, 6:23 PM
ReillyBrogan planned changes to this revision.Oct 25 2021, 7:40 AM

Haven't quite gotten to it yet, but as far as I can tell the action items are to:

  • Rebase
  • Package WirePlumber
  • Create some kind of announcement (or call-to-testing) somewhere for our PipeWire-using users

Should WirePlumber be added as a rundep of PipeWire so it's pulled in automatically and just needs to be enabled? It should be harmless to do so as it doesn't actually do anything until the service is enabled. Our users using pipewire-media-session currently will definitely notice when they receive this update (all audio output will stop working) so it would be nice to just give them exactly the command they need to run in order to get things working again.

Should WirePlumber be added as a rundep of PipeWire so it's pulled in automatically and just needs to be enabled?

It should not, as that may introduce a circular dependency issue of wireplumber relying on pipewire and pipewire pulling in wireplumber.

JoshStrobl added a subscriber: YakoYakoYokuYoku.

@YakoYakoYokuYoku already packaged wireplumber via D12098 so this just needs to be rebased.

ReillyBrogan marked 2 inline comments as done.Oct 27 2021, 4:37 PM
ReillyBrogan edited the summary of this revision. (Show Details)
JoshStrobl accepted this revision.Oct 28 2021, 3:11 AM

LGTM, thanks!

This revision is now accepted and ready to land.Oct 28 2021, 3:11 AM
This revision was automatically updated to reflect the committed changes.