diff options
author | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2019-12-17 19:32:34 +0200 |
---|---|---|
committer | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2019-12-18 19:13:47 +0200 |
commit | 342505cd7d3356df22b485464fe089f39f619264 (patch) | |
tree | 1a43e3ce4443f10268a1aa5f8419f2fc1495d26b /meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl | |
parent | 263674cee8b35499e0b49aa7819efd0ba6067cd1 (diff) |
wireplumber: update to master
* Fixes policy issues
* Implements a standard way of configuring the default device: the device
that matches from the *.endpoint files that has the highest priority and
is available on the system becomes the default. Afterwards, at runtime,
the default can be changed with wireplumber-cli. Clients now also link
to the default device, so it is possible to change devices at runtime
without reconfiguring wireplumber.
George Kiagiadakis (9):
session: select the default endpoint based on endpoint priority
config: refactor wireplumber's configuration
config: fix typo in config files
module-session: debug default endpoint changes
policy: track the exported session instead of the proxy
config-policy: debug rescans
cli: fail gracefully if connection to pipewire fails
lib: debug loading of config files + endpoint priorities
parser-endpoint: fix typo; initialize endpoint priority instead of reseting the match one
Julian Bouzas (13):
config-policy: sort endpoints by creation time when finding target
parser-endpoint-link: higher number means higher priority
softdsp-endpoint: don't rename the endpoint on creation
modules: remove alsa-udev and audio-client modules
modules: add config endpoint module
config-policy: remove parsing of streams file
parser-endpoint-link: don't parse unused state value
base-endpoint: add _get_priority API
modules: only allow 'sink' and 'source' strings when parsing direction in config files
base-endpoint: add _get_global_id API
policy: add _get_session API for the policy manager
config-policy: use the default session endpoint if target-endpoint is not defined
config-policy: only handle the highest priority endpoint for a target, and the ones with keep=true
Bug-AGL: SPEC-2837
Change-Id: I87b3e8b9e159dfc472aa534e40e088ae758ad20c
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
Diffstat (limited to 'meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl')
26 files changed, 206 insertions, 73 deletions
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint new file mode 100644 index 00000000..4bc43574 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint @@ -0,0 +1,10 @@ +[match-node] +priority = 0 +properties = [ + { name = "media.class", value = "Audio/Sink" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint new file mode 100644 index 00000000..7657f6f4 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint @@ -0,0 +1,10 @@ +[match-node] +priority = 0 +properties = [ + { name = "media.class", value = "Audio/Source" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "source" +streams = "capture.streams" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link new file mode 100644 index 00000000..4b70dc89 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link @@ -0,0 +1,7 @@ +[match-endpoint] +priority = 0 +direction = "sink" +media_class = "Stream/Input/Audio" + +[endpoint-link] +keep = false diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link new file mode 100644 index 00000000..5d6428f9 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link @@ -0,0 +1,7 @@ +[match-endpoint] +priority = 0 +direction = "source" +media_class = "Stream/Output/Audio" + +[endpoint-link] +keep = false diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint new file mode 100644 index 00000000..2993f3e4 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint @@ -0,0 +1,9 @@ +[match-node] +priority = 0 +properties = [ + { name = "media.class", value = "Stream/Input/Audio" }, +] + +[endpoint] +direction = "sink" +type = "pw-audio-softdsp-endpoint" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint new file mode 100644 index 00000000..1cf82ea0 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint @@ -0,0 +1,9 @@ +[match-node] +priority = 0 +properties = [ + { name = "media.class", value = "Stream/Output/Audio" }, +] + +[endpoint] +direction = "source" +type = "pw-audio-softdsp-endpoint" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint new file mode 100644 index 00000000..85a9b511 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 1 +properties = [ + { name = "media.class", value = "Audio/Sink" }, + { name = "api.alsa.path", value = "hw:0,0" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" +priority = 1 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint new file mode 100644 index 00000000..c77701c0 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 1 +properties = [ + { name = "media.class", value = "Audio/Source" }, + { name = "api.alsa.path", value = "hw:0,0" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "source" +streams = "capture.streams" +priority = 1 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint new file mode 100644 index 00000000..afc4303e --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 30 +properties = [ + { name = "media.class", value = "Audio/Sink" }, + { name = "api.alsa.card.id", value = "ak4613" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" +priority = 30 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint new file mode 100644 index 00000000..ad568059 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 30 +properties = [ + { name = "media.class", value = "Audio/Source" }, + { name = "api.alsa.card.id", value = "ak4613" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "source" +streams = "capture.streams" +priority = 30 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint new file mode 100644 index 00000000..becd21e2 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 30 +properties = [ + { name = "media.class", value = "Audio/Sink" }, + { name = "api.alsa.card.id", value = "DRA7xx-EVM" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" +priority = 30 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint new file mode 100644 index 00000000..72ef4677 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 30 +properties = [ + { name = "media.class", value = "Audio/Source" }, + { name = "api.alsa.card.id", value = "DRA7xx-EVM" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "source" +streams = "capture.streams" +priority = 30 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint new file mode 100644 index 00000000..74e4d62e --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint @@ -0,0 +1,13 @@ +[match-node] +priority = 30 +properties = [ + { name = "media.class", value = "Audio/Sink" }, + { name = "api.alsa.card.name", value = "bcm2835 ALSA" }, + { name = "api.alsa.pcm.name", value = "bcm2835 ALSA" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" +priority = 30 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint new file mode 100644 index 00000000..807ad468 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 40 +properties = [ + { name = "media.class", value = "Audio/Sink" }, + { name = "api.alsa.card.id", value = "ep016ch" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" +priority = 40 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint new file mode 100644 index 00000000..bbfcd43a --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 40 +properties = [ + { name = "media.class", value = "Audio/Source" }, + { name = "api.alsa.card.id", value = "ep811ch" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "source" +streams = "capture.streams" +priority = 40 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint new file mode 100644 index 00000000..62e27909 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 70 +properties = [ + { name = "media.class", value = "Audio/Sink" }, + { name = "api.alsa.card.driver", value = "USB-Audio" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "sink" +streams = "playback.streams" +priority = 70 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint new file mode 100644 index 00000000..505ae8d8 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint @@ -0,0 +1,12 @@ +[match-node] +priority = 70 +properties = [ + { name = "media.class", value = "Audio/Source" }, + { name = "api.alsa.card.driver", value = "USB-Audio" }, +] + +[endpoint] +type = "pw-audio-softdsp-endpoint" +direction = "source" +streams = "capture.streams" +priority = 70 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link new file mode 100644 index 00000000..3de06dd4 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link @@ -0,0 +1,8 @@ +[match-endpoint] +priority = 75 +direction = "sink" +name = "bluealsa*" +media_class = "Stream/Input/Audio" + +[endpoint-link] +keep = true diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link.in b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link.in deleted file mode 100644 index 818ac6b4..00000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link.in +++ /dev/null @@ -1,16 +0,0 @@ -[match-endpoint] -priority = 75 -direction = "input" -name = "bluealsa*" -media_class = "Stream/Input/Audio" - -[target-endpoint] -media_class = "Audio/Source" -streams = "default.streams" -stream = "Multimedia" -properties = [ - CAPTURE_DEV_PROPERTIES -] - -[endpoint-link] -keep = true diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link new file mode 100644 index 00000000..5e1b29dc --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link @@ -0,0 +1,8 @@ +[match-endpoint] +priority = 75 +direction = "source" +name = "bluealsa*" +media_class = "Stream/Output/Audio" + +[endpoint-link] +keep = true diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link.in b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link.in deleted file mode 100644 index 1ba7afed..00000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link.in +++ /dev/null @@ -1,16 +0,0 @@ -[match-endpoint] -priority = 75 -direction = "output" -name = "bluealsa*" -media_class = "Stream/Output/Audio" - -[target-endpoint] -media_class = "Audio/Sink" -streams = "default.streams" -stream = "Multimedia" -properties = [ - PLAYBACK_DEV_PROPERTIES -] - -[endpoint-link] -keep = true diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams new file mode 100644 index 00000000..e7ce36f6 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams @@ -0,0 +1,3 @@ +[[streams]] +name = "Default" +priority = 25 diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default-input-audio.endpoint-link.in b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default-input-audio.endpoint-link.in deleted file mode 100644 index adb142c1..00000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default-input-audio.endpoint-link.in +++ /dev/null @@ -1,14 +0,0 @@ -[match-endpoint] -priority = 50 -direction = "input" -media_class = "Stream/Input/Audio" - -[target-endpoint] -media_class = "Audio/Source" -streams = "default.streams" -properties = [ - CAPTURE_DEV_PROPERTIES -] - -[endpoint-link] -keep = false diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default-output-audio.endpoint-link.in b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default-output-audio.endpoint-link.in deleted file mode 100644 index 16af9155..00000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default-output-audio.endpoint-link.in +++ /dev/null @@ -1,14 +0,0 @@ -[match-endpoint] -priority = 50 -direction = "output" -media_class = "Stream/Output/Audio" - -[target-endpoint] -media_class = "Audio/Sink" -streams = "default.streams" -properties = [ - PLAYBACK_DEV_PROPERTIES -] - -[endpoint-link] -keep = false diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default.streams b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams index c645416a..c645416a 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/default.streams +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf index 4bbe971f..e0975a81 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf @@ -23,19 +23,8 @@ load-module C libwireplumber-module-monitor { "flags": <["use-adapter", "activate-devices"]> } -# Monitors the ALSA devices that are discovered via udev -# and creates softdsp-endopints for each one of them -# The streams specified here are the ones that will be available for linking -# clients. Currently, they are matched against the client's role string. -load-module C libwireplumber-module-pw-alsa-udev { - "streams": <["Multimedia", "Speech-Low", "Custom-Low", - "Navigation", "Speech-High", "Custom-High", - "Communication", "Emergency"]> -} - -# Monitors the Audio clients that are discovered via pipewire -# and creates simple-endpoints for each one of them -load-module C libwireplumber-module-pw-audio-client +# Implements endpoint creation based on TOML configuration files +load-module C libwireplumber-module-config-endpoint # Implements linking clients to devices based on TOML configuration files load-module C libwireplumber-module-config-policy |