From d89293b606f282c38cfee362b910b8eaf2d19275 Mon Sep 17 00:00:00 2001
From: James Calligeros <jcalligeros99@gmail.com>
Date: Sat, 6 Apr 2024 16:12:57 +1000
Subject: [PATCH 08/10] node/software-dsp: implement loading filter graphs from
disk
Using the new Conf() constructor, we can load and parse a filter graph
from a file on disk. This is useful when, for example, maintaining a
large database of filter graphs. It also keeps wireplumber.conf.d free
from clutter.
Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
---
src/scripts/node/software-dsp.lua | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/scripts/node/software-dsp.lua b/src/scripts/node/software-dsp.lua
index 1887408c..da410bd7 100644
--- a/src/scripts/node/software-dsp.lua
+++ b/src/scripts/node/software-dsp.lua
@@ -36,6 +36,19 @@ SimpleEventHook {
if props["filter-graph"] then
log:debug("Loading filter graph for " .. node.properties["node.name"])
filter_nodes[node.properties["object.id"]] = LocalModule("libpipewire-module-filter-chain", props["filter-graph"], {})
+ elseif props["filter-path"] then
+ log:debug("Loading filter graph for " .. node.properties["node.name"] .. " from disk")
+ local conf = Conf(props["filter-path"], {
+ ["as-section"] = "node.software-dsp.graph",
+ ["no-fragments"] = true
+ })
+ local err = conf:open()
+ if not err then
+ local args = conf:get_section_as_json("node.software-dsp.graph"):to_string()
+ filter_nodes[node.properties["object.id"]] = LocalModule("libpipewire-module-filter-chain", args, {})
+ else
+ log:warning("Unable to load filter graph for " .. node.properties["node.name"])
+ end
end
if cutils.parseBool (props["hide-parent"]) then
--
2.44.0