[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