summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-03-08 17:26:46 +0100
committerRobin Gareus <robin@gareus.org>2015-03-08 19:02:31 +0100
commit20cd14cf36de58569d8648fe766ae5584b40aa17 (patch)
tree29d7be72eecfab3db8d88b2ec3b883028ccfb97e /libs
parentf89123b28b38cf51193e3dce0bbf9f88fe8de868 (diff)
add backend support for port properties (jack)
Diffstat (limited to 'libs')
-rw-r--r--libs/backends/jack/jack_audiobackend.h1
-rw-r--r--libs/backends/jack/jack_portengine.cc23
2 files changed, 24 insertions, 0 deletions
diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h
index db00842e4a..5319c52587 100644
--- a/libs/backends/jack/jack_audiobackend.h
+++ b/libs/backends/jack/jack_audiobackend.h
@@ -129,6 +129,7 @@ class JACKAudioBackend : public AudioBackend {
int set_port_name (PortHandle, const std::string&);
std::string get_port_name (PortHandle) const;
PortHandle get_port_by_name (const std::string&) const;
+ int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const;
int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const;
diff --git a/libs/backends/jack/jack_portengine.cc b/libs/backends/jack/jack_portengine.cc
index 368f64bae7..caa962600b 100644
--- a/libs/backends/jack/jack_portengine.cc
+++ b/libs/backends/jack/jack_portengine.cc
@@ -115,6 +115,29 @@ JACKAudioBackend::get_port_name (PortHandle port) const
return jack_port_name ((jack_port_t*) port);
}
+int
+JACKAudioBackend::get_port_property (PortHandle port, const std::string& key, std::string& value, std::string& type) const
+{
+#ifndef NO_JACK_METADATA // really everyone ought to have this by now.
+ int rv = -1;
+ char *cvalue = NULL;
+ char *ctype = NULL;
+
+ jack_uuid_t uuid = jack_port_uuid((jack_port_t*) port);
+ rv = jack_get_property(uuid, key.c_str(), &cvalue, &ctype);
+
+ if (0 == rv) {
+ value = cvalue;
+ type = ctype;
+ jack_free(cvalue);
+ jack_free(ctype);
+ }
+ return rv;
+#else
+ return -1;
+#endif
+}
+
PortEngine::PortHandle
JACKAudioBackend:: get_port_by_name (const std::string& name) const
{