From 20cd14cf36de58569d8648fe766ae5584b40aa17 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 8 Mar 2015 17:26:46 +0100 Subject: [PATCH] add backend support for port properties (jack) --- libs/backends/jack/jack_audiobackend.h | 1 + libs/backends/jack/jack_portengine.cc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) 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&) 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 {