[pulseaudio-discuss] [PATCH 2/2] ladspa: Added a python script for testing.
ismo.puustinen at intel.com
ismo.puustinen at intel.com
Fri Jun 15 07:35:59 PDT 2012
From: Ismo Puustinen <ismo.puustinen at intel.com>
The python script uses the ladspa D-Bus interface for IPC testing.
---
src/tests/ladspa-dbus.py | 112 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 112 insertions(+)
create mode 100644 src/tests/ladspa-dbus.py
diff --git a/src/tests/ladspa-dbus.py b/src/tests/ladspa-dbus.py
new file mode 100644
index 0000000..6f540e5
--- /dev/null
+++ b/src/tests/ladspa-dbus.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+
+USAGE = """
+Usage:
+ python ladspa-dbus.py <sinkname> [values]
+
+The "sinkname" parameter is the name of the ladspa sink. The "values"
+parameter is a comma-separated list of ladspa sink parameter values. A
+value in the list can be either string "default" or a float.
+
+Example usage:
+
+ python ladspa-dbus.py ladspa_1 10.0,default,4.0,0.6,default
+
+This command will configure sink "ladspa_1" by setting the first value
+to 10.0, the second to the default value (specified in the ladspa
+filter), the third to 4.0 and so on.
+"""
+
+import dbus
+import os
+import sys
+
+def get_ladspa_property_interface(sinkname):
+
+ # do some D-Bus stuff to get to the real ladspa property object
+ session = dbus.SessionBus()
+
+ # get the private D-Bus socket address from PulseAudio properties
+ session_property_iface = dbus.Interface(session.get_object("org.PulseAudio1", "/org/pulseaudio/server_lookup1"), "org.freedesktop.DBus.Properties")
+ socket = session_property_iface.Get("org.PulseAudio.ServerLookup1", "Address")
+
+ # connect to the private PulseAudio D-Bus socket
+ connection = dbus.connection.Connection(socket)
+
+ # core object for listing the sinks
+ core = connection.get_object(object_path="/org/pulseaudio/core1")
+
+ # object path to the ladspa sink
+ ladspa_sink_path = core.GetSinkByName(sinkname)
+
+ # property interface proxy for the sink
+ ladspa_sink_property_iface = dbus.Interface(connection.get_object(object_path=ladspa_sink_path), "org.freedesktop.DBus.Properties")
+
+ return ladspa_sink_property_iface
+
+def parse_arguments(args):
+
+ sinkname = None
+ arguments = []
+ defaults = []
+
+ if len(args) >= 2:
+ sinkname = args[1]
+
+ if len(args) == 3:
+ tokens = args[2].split(",")
+
+ for token in tokens:
+ if token == "default":
+ arguments.append(0.0)
+ defaults.append(True)
+ else:
+ arguments.append(float(token))
+ defaults.append(False)
+
+ """
+ print("Input arguments:")
+ print(" sink: " + sink)
+ print(" arguments: " + str(arguments))
+ print(" defaults: " + str(defaults))
+ """
+
+ return sinkname, arguments, defaults
+
+def print_arguments(arguments, defaults):
+ for i in range(len(arguments)):
+ default = ""
+ if defaults[i]:
+ default = "default"
+ print(str(i) + " : " + str(arguments[i]) + " \t" + default)
+
+
+sinkname, arguments, defaults = parse_arguments(sys.argv)
+
+if sinkname == None:
+ print USAGE
+ sys.exit(1)
+
+# get the D-Bus property interface of the sink
+ladspa = get_ladspa_property_interface(sinkname)
+
+# read the current sink arguments from PulseAudio
+oldarguments, olddefaults = ladspa.Get("org.PulseAudio.Ext.Ladspa1", "AlgorithmParameters")
+
+print("Current LADSPA parameters for sink " + sinkname + ":")
+print_arguments(oldarguments, olddefaults)
+
+if len(arguments) != 0:
+ # set new arguments if they were provided on the command line
+
+ # Set the arguments ...
+ ladspa.Set("org.PulseAudio.Ext.Ladspa1", "AlgorithmParameters", (dbus.Array(arguments), dbus.Array(defaults)))
+
+ # ... and read them back.
+ newarguments, newdefaults = ladspa.Get("org.PulseAudio.Ext.Ladspa1", "AlgorithmParameters")
+
+ print("New LADSPA parameters for sink " + sinkname + ":")
+ print_arguments(newarguments, newdefaults)
+
+# test the GetAll functionality
+# print(str(ladspa.GetAll("org.PulseAudio.Ext.Ladspa1")))
--
1.7.10.2
More information about the pulseaudio-discuss
mailing list