Re: Fedora 34 Change: Route all Audio to PipeWire (System-Wide Change)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2020-11-20 at 11:26 -0500, Ben Cotton wrote:
> https://fedoraproject.org/wiki/Changes/DefaultPipeWire
> 
> == Summary ==
> This change proposal is to route all audio from PulseAudio and JACK to
> the PipeWire Audio
> daemon by default.
> 
> == Owner ==
> * Name: [[User:Wtaymans| Wim Taymans]]
> * Email: wim.taymans@xxxxxxxxx
> 
> 
> == Detailed Description ==
> Currently, all desktop audio is handled by the PulseAudio daemon.
> Applications make use of the
> PulseAudio client library to communicate with the PulseAudio daemon
> that mixes and manages the audio streams from the clients.
> 
> The desktop shell (gnome-shell) and the control panel
> (gnome-control-panel) both use the
> Pulseaudio client libraries to manage the volume and configuration of
> the PulseAudio daemon.
> 
> This proposal is to replace the PulseAudio daemon with a functionally
> compatible implementation
> based on PipeWire. This means that all existing clients using the
> PulseAudio client library
> will continue to work as before, as well as applications shipped as Flatpak.
> 
> All PRO audio is handled with the JACK client library, which talks to
> the JACK server. This
> proposal will install a JACK client library replacement that talks
> directly to PipeWire. All
> existing PRO audio jack applications will then work on top of PipeWire.
> 
> For legacy ALSA clients, we will install an ALSA plugin that routes
> the audio directly to
> PipeWire.
> 
> With these 3 changes, all audio will be routed to PipeWire. There will
> then be no more need to
> install the PulseAudio and JACK daemons.
> 
> == Feedback ==
> The owner of this proposal has been in context with both the
> PulseAudio and JACK maintainers and community.
> PipeWire is considered to be the successor of both projects.
> 
> == Benefit to Fedora ==
> The end goal is to end up with one audio infrastructure for both
> Desktop and Pro audio use cases.
> This will end the fragmentation of the audio landscape.
> 
> Some of the benefits that PipeWire will bring:
> 
>  * PRO Audio features
> 
>    PipeWire can support both Desktop and PRO Audio use cases. PRO
> Audio application tend to use
>    the JACK API and JACK daemon, which is hard to setup and integrates
> poorly with the rest of
>    the system (and PulseAudio in particular).
> 
>    With a replacement libjack library, PRO Audio application can run
> directly on PipeWire and
>    integrate seamlessly with other ALSA and PulseAudio applications.
> This would bring Fedora
>    closer to the experience of other operating systems.
> 
>  * Flexibility/Integration
> 
>    PipeWire is designed to be multiprocess. It separates the
> processing of the multimedia graph
>    and the management into separate processes. This makes it possible
> to better integrate with
>    the other system components or swap out the default policy for a
> highly customized one (such as
>    for automotive or embedded). This is in contrast to PulseAudio,
> which has all logic embedded
>    into the daemon with limited configuration options.
> 
>    In the next phase we expect to greatly expand the user experience
> and configuration of the
>    audio infrastructure with better integration throughout the system.
> 
>  * Performance
> 
>    PipeWire was designed for high performance and low-latency, using
> much of the same design as
>    JACK. JACK application should run with comparable performance even
> in low-latency situations.
> 
>  * Security
> 
>    PipeWire enforces per client security. Object visibility and the
> actions on them can be
>    configured independently per client. This makes it possible to
> enforce a security policy for
>    sandboxed applications (Flatpak) such as denying access to certain
> audio capture devices or
>    block them from interfering with other applications.
> 
>  * Maintainability
> 
>    Both PulseAudio and JACK have very slow development cycles with few
> new features. The more
>    flexible and distributed nature of the design of PipeWire should
> encourage more new features
>    and use-cases.
> 
> == Scope ==
> * Proposal owners:
> We would make a pipewire-pulse package that provides the same features
> as the pulseaudio (daemon) package.
> We would only provide a drop-in replacement daemon, the pulseaudio
> client libraries will remain unchanged.
> 
> The idea is that when installing pipewire-pulse, only the pulseaudio
> package is removed and replaced by the
> pipewire-pulse implementation. In the same way, installing the
> pulseaudio package would remove the pipewire-pulse
> package, making it possible to switch between implementations. This
> will also allow for an easy rollback.
> 
> We also need to check and correct the dependencies of other packages.
> As of this writing, some packages do
> not state their dependencies correctly and get removed when pulseaudio
> is removed. We also need to check the
> JACK to make sure they still install with the replacement JACK client library.
> 
> The JACK client libraries will be installed in the same way, removing
> the old JACK client libraries.
> 
> * Other developers:
> The distribution needs to default to the pipewire-pulse package
> instead of pulseaudio.
> JACK applications need to install the pipewire-libjack client library.
> 
> * Release engineering: [https://pagure.io/releng/issues #Releng issue
> number] (a check of an impact with Release Engineering is needed)
> * Policies and guidelines:
> * Trademark approval: N/A (not needed for this Change)
> 
> 
> == Upgrade/compatibility impact ==
> The pulseaudio package will be uninstalled and pipewire-pulse will be installed.
> 
> pipewire-pulse does not yet implement all the features of pulseaudio
> but it is expected that
> comparable functionality will be implemented later. Most notable
> features that are likely
> not going to be available for fedora 34
> 
>  * avahi network discovery and audio routing. This is not enabled by
> default but can be activated
>    with paprefs. this includes TCP and RTP transport of audio.
>  * make devices available as UPNP media servers. Not enabled by
> default, paprefs can be used.
>  * easy configuration of combining all sinks. Questionable feature but
> possible via paprefs.
> 
> User scripts will still work but custom configurations of the
> pulseaudio daemon will not be used
> anymore.
> 
> Most of the JACK workflow of managing the JACK daemon is not going to
> be needed anymore as things
> will work out-of-the-box. As of this writing, these things are missing
> from the JACK implementation,
> we hope to implement them before fedora 34:
> 
>  * latency reporting: useful to align streams
>  * freewheeling: used when rendering a project
>  * jackdbus: used by some tools to manage the graph
> 
> 
> == How To Test ==
> This change needs to be tested on as many different audio cards as
> possible. The same test plan applies here as with PulseAudio.
> 
> To test, one needs to install the pipewire-pulse library (which
> removes the pulseaudio package).
> 
> To test the JACK support, one needs to install pipewire-libjack, which
> removes the original
> JACK client and server.
> 
> After these changes, a restart is needed to make sure the new
> pipewire-pulse daemon is running.
> 
> Audio functionality should be like it was before with the Pulseaudio
> daemon. Some things to verify:
> 
>  - patcl info should now list: Server Name: PulseAudio (on PipeWire 0.3.x)
>  - gnome-control-center: check the audio tab, check the volume sliders
> and do the audio channel test. Change the card profile, plug/unplug
> headphones and observe correct
>                          switch.
>  - pavucontrol: check volumes in the input devices tabs and check the
> microphone volumes
>  - firefox: check out a website with audio/video such as youtube and
> verify that audio works as
>             usual. Check out a website with a video chat test page
> (bluejeans.com/111).
>  - rhythmbox: check if playback works as expected
>  - bluetooth devices, connect as usual and verify working behaviour
> with PipeWire. Check volume changes etc.
>  - Regular system usage and performance should not change.
>  - JACK tools such as catia, carla should run and can be used to
> inspect the graph.

A client like guitarix (which I use so I am biased :) should be added
for testing of the jack infrastructure compatibility IMO.


> == User Experience ==
> In general, users should not be able to see any change when using
> PulseAudio applications.
> 
> The big change is when using JACK application:
> 
>  - They will start without having to configure and start the daemon.
> this includes
>    the period size and sample rates.
>  - All devices will be visible in the graph with meaningful names. Devices will
>    be automatically slaved when needed without needing any configuration.
>  - bluetooth devices will be usable as well.
> 
> == Dependencies ==
> Other packages might need to have their requirements fixed to work
> with the replacement packages
> but this is under our control.
> 
> == Contingency Plan ==
> * Contingency mechanism: Keep existing pulseaudio and JACK client
> libraries as defaults
> * Contingency deadline: beta freeze
> * Blocks release? No
> * Blocks product? No
> 
> 
> == Documentation ==
> [https://pipewire.org](PipeWire website)
> [https://www.youtube.com/watch?v=8LZt4loZu64&t=14s](Video with Current status)
> [https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md](install
> guide)
> [https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/README.md](how
> to use/test)
> 
> -- 
> Ben Cotton
> He / Him / His
> Senior Program Manager, Fedora & CentOS Stream
> Red Hat
> TZ=America/Indiana/Indianapolis
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx

-- 
Simo Sorce
RHEL Crypto Team
Red Hat, Inc



_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux