It would be great if the "How to test" section would include some steps on how to switch to WirePlumber so that anything can be tested.

On Mon, Jul 19, 2021 at 6:18 PM Ben Cotton <bcotton@redhat.com> wrote:
https://fedoraproject.org/wiki/Changes/WirePlumber

== Summary ==
PipeWire currently uses a simple example session manager. This
proposal is to move to the more powerful WirePlumber session manager.

== Owner ==
* Name: [[User:Wtaymans| Wim Taymans]]
* Email: wim.taymans@gmail.com

== Detailed Description ==
PipeWire requires a session manager that at least needs to implements
the following features:

* create and configure detected devices in the system. This includes
audio cards, video and bluetooth devices.
* configure applications and route audio/video to/from them to the
devices and filters.
* keep track of prefered devices and volumes.
* move audio/video streams when devices appear and disappear.

PipeWire uses a simple example session manager with limited features
and configuration options. The proposal is to
move to WirePlumber.

WirePlumber is built on GNOME (GObject) technologies and has bindings
for most languages using GObject introspection.

WirePlumber allows one to implement many of the rules for setup and
configuration using small LUA scripts, which are
easier to maintain and customize. These are some of the functions that
are scriptable in LUA:

* setup and configuration of the devices and streams. This includes
deciding if devices and streams need to operate in 5.1 or stereo mode,
depending on the available devices.
* routing of the streams based on metadata of the streams (Roles) and
overall state of the system.
* volume/mute restore of devices and streams


== Benefit to Fedora ==

PipeWire currently uses a simple example session manager with mostly
hardcoded logic and rules. This proposal wants to replace the session
manager with a more advanced session manager, called WirePlumber.

WirePlumber brings to following improvements

* Drop-in replacement session manager for PipeWire, implements the
exact same features as the example session manager
* built with GObject, which provides a richer development experience
and adds bindings for most languages
* extensible with loadable modules
* scriptable policy using small lua scripts
* better integration with desktop settings

The main benefits will be that this session manager would allow for
more customization of the policy
and rules. Initially we aim for feature parity with the current
solution and work on more features
in the next releases.

== Scope ==
* Proposal owners:
This is a rather isolated changed. Instead of starting the
pipewire-media-session executable we would need to package
and start WirePlumber instead.

WirePlumber has been kept up to data with the features in the example
session manager and would need testing.

* Other developers: None. This is an isolated PipeWire change.
* Release engineering: A new systemd service will need to be activated
in the default install.
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Objectives:

== Upgrade/compatibility impact ==
Should not cause any change.

== How To Test ==

Experience should be the same as before. Retest all audio testcases.


== User Experience ==
Should not cause any visible change.


== Dependencies ==
None.

== Contingency Plan ==
* Contingency mechanism: (What to do?  Who will do it?): If the
feature can not be completed we continue using the existing
pipewire-media-session.
* Contingency deadline: N/A (not a System Wide Change)
* Blocks release? N/A (not a System Wide Change)


== Documentation ==
[WirePlumber](https://gitlab.freedesktop.org/pipewire/wireplumber)





--
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-leave@lists.fedoraproject.org
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@lists.fedoraproject.org
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure