[SCM] calf/master: + Big Bull: add Python wrapper for jack_get_ports

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:37:33 UTC 2013


The following commit has been merged in the master branch:
commit 74182072a62a6812e208e438ee3691d55e57e627
Author: kfoltman <kfoltman at 78b06b96-2940-0410-b7fc-879d825d01d8>
Date:   Sat Sep 6 09:52:14 2008 +0000

    + Big Bull: add Python wrapper for jack_get_ports
    
    
    git-svn-id: https://calf.svn.sourceforge.net/svnroot/calf/trunk@282 78b06b96-2940-0410-b7fc-879d825d01d8

diff --git a/bigbull/calfpytools.cpp b/bigbull/calfpytools.cpp
index 7833b2b..f977aa6 100644
--- a/bigbull/calfpytools.cpp
+++ b/bigbull/calfpytools.cpp
@@ -136,6 +136,30 @@ static PyObject *jackclient_get_cobj(PyJackClient *self, PyObject *args)
     return PyCObject_FromVoidPtr((void *)self->client, NULL);
 }
 
+static PyObject *jackclient_get_ports(PyJackClient *self, PyObject *args)
+{
+    const char *name = NULL, type = NULL;
+    unsigned long flags = 0;
+    if (!PyArg_ParseTuple(args, "|ssi:get_ports", &name, &type, &flags))
+        return NULL;
+    
+    CHECK_CLIENT
+    
+    const char **p = jack_get_ports(self->client, name, type, flags);
+    PyObject *res = PyList_New(0);
+    if (!p)
+        return res;
+    
+    for (const char **q = p; *q; q++)
+    {
+        PyList_Append(res, PyString_FromString(*q));
+        // free(q);
+    }
+    free(p);
+    
+    return res;
+}
+
 static PyObject *jackclient_connect(PyJackClient *self, PyObject *args)
 {
     char *from_port = NULL, *to_port = NULL;
@@ -200,6 +224,7 @@ static PyMethodDef jackclient_methods[] = {
     {"close", (PyCFunction)jackclient_close, METH_VARARGS, "Close a client"},
     {"get_name", (PyCFunction)jackclient_get_name, METH_VARARGS, "Retrieve client name"},
     {"get_port", (PyCFunction)jackclient_get_port, METH_VARARGS, "Create port object from name of existing JACK port"},
+    {"get_ports", (PyCFunction)jackclient_get_ports, METH_VARARGS, "Get a list of port names based on specified name, type and flag filters"},
     {"register_port", (PyCFunction)jackclient_register_port, METH_VARARGS, "Register a new port and return an object that represents it"},
     {"get_cobj", (PyCFunction)jackclient_get_cobj, METH_VARARGS, "Retrieve jack_client_t pointer for the client"},
     {"connect", (PyCFunction)jackclient_connect, METH_VARARGS, "Connect two ports with given names"},
diff --git a/bigbull/test.py b/bigbull/test.py
index af21edb..820e9b5 100755
--- a/bigbull/test.py
+++ b/bigbull/test.py
@@ -20,6 +20,12 @@ assert port.is_valid()
 
 # This doesn't work: assert client.get_port("calf:port2") == port (because JACK C API doesn't reuse the jack_port_t structs)
 
+print client.get_ports()
+print "Audio capture ports: %s" % (", ".join(client.get_ports("system:capture_.*", calfpytools.JACK_DEFAULT_AUDIO_TYPE)))
+print "Audio playback ports: %s" % (", ".join(client.get_ports("system:playback_.*", calfpytools.JACK_DEFAULT_AUDIO_TYPE)))
+print "MIDI capture ports: %s" % (", ".join(client.get_ports("system:capture_.*", calfpytools.JACK_DEFAULT_MIDI_TYPE)))
+print "MIDI playback ports: %s" % (", ".join(client.get_ports("system:playback_.*", calfpytools.JACK_DEFAULT_MIDI_TYPE)))
+
 port2 = client.get_port("system:playback_1")
 assert port2.get_name() == "playback_1"
 print port2.get_full_name()

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list