summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2024-01-17 13:11:23 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2024-01-29 12:11:17 +0000
commited344ae0d62b25f73c8816a2c8fb6e8168424425 (patch)
tree7355a0626d69705ee9acfd71198366c494e1d3c8
parentd5c1fb29dc1ae6f5d0dd6ddba1657a1feb1b9f62 (diff)
Add wireplumber-config-agl bbappend
This policy will change the default video source device to a USB based camera device, such that camera-gstreamer (with default pipewiresrc) would use the USB camera device to grab video frames. Bug-AGL: SPEC-5024 Change-Id: I8dc124e1855de21e00dede6ff99f8b148f80b6dc Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29599 ci-image-build: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account
-rw-r--r--recipes-multimedia/wireplumber/files/30-v4l2-monitor.lua59
-rw-r--r--recipes-multimedia/wireplumber/wireplumber-config-agl_%.bbappend10
2 files changed, 69 insertions, 0 deletions
diff --git a/recipes-multimedia/wireplumber/files/30-v4l2-monitor.lua b/recipes-multimedia/wireplumber/files/30-v4l2-monitor.lua
new file mode 100644
index 00000000..39438623
--- /dev/null
+++ b/recipes-multimedia/wireplumber/files/30-v4l2-monitor.lua
@@ -0,0 +1,59 @@
+-- V4L2 monitor config file; with selecting by default USB camera --
+
+v4l2_monitor = {}
+v4l2_monitor.properties = {}
+
+v4l2_monitor.rules = {
+ -- An array of matches/actions to evaluate.
+ {
+ -- Rules for matching a device or node. It is an array of
+ -- properties that all need to match the regexp. If any of the
+ -- matches work, the actions are executed for the object.
+ matches = {
+ {
+ -- This matches all cards.
+ { "device.name", "matches", "v4l2_device.*" },
+ },
+ },
+ -- Apply properties on the matched object.
+ apply_properties = {
+ -- ["device.nick"] = "My Device",
+ },
+ },
+ {
+ matches = {
+ {
+ -- Matches all sources.
+ { "node.name", "matches", "v4l2_input.*" },
+ },
+ {
+ -- Matches all sinks.
+ { "node.name", "matches", "v4l2_output.*" },
+ },
+ },
+ apply_properties = {
+ --["node.nick"] = "My Node",
+ --["priority.driver"] = 100,
+ --["priority.session"] = 100,
+ --["node.pause-on-idle"] = false,
+ },
+ },
+ {
+ matches = {
+ {
+ { "node.name", "matches", "v4l2_input*usb*" },
+ },
+ },
+ apply_properties = {
+ ["priority.driver"] = 1300,
+ ["priority.session"] = 1300,
+ },
+ },
+}
+
+function v4l2_monitor.enable()
+ load_monitor("v4l2", {
+ properties = v4l2_monitor.properties,
+ rules = v4l2_monitor.rules,
+ })
+end
diff --git a/recipes-multimedia/wireplumber/wireplumber-config-agl_%.bbappend b/recipes-multimedia/wireplumber/wireplumber-config-agl_%.bbappend
new file mode 100644
index 00000000..8f93868d
--- /dev/null
+++ b/recipes-multimedia/wireplumber/wireplumber-config-agl_%.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+SRC_URI += "file://30-v4l2-monitor.lua"
+
+do_install:append() {
+ # override the one from meta-agl to be able to set as default USB camera
+ # such that camera-gstreamer and implicitly pipewire work out of the box
+ install -D -m 0644 ${WORKDIR}/30-v4l2-monitor.lua ${D}${sysconfdir}/wireplumber/host.lua.d/
+}
+