summaryrefslogtreecommitdiff
path: root/libs/backends
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-03-08 19:00:29 +0100
committerRobin Gareus <robin@gareus.org>2015-03-08 19:02:31 +0100
commit0cf11acc27a66c8d7aca4e529971755ff355eb5c (patch)
tree05ef08c753b7a1decd0012a0924acb555126ecdf /libs/backends
parent20cd14cf36de58569d8648fe766ae5584b40aa17 (diff)
add backend support for port properties (CoreAudio)
Diffstat (limited to 'libs/backends')
-rw-r--r--libs/backends/coreaudio/coreaudio_backend.cc29
-rw-r--r--libs/backends/coreaudio/coreaudio_backend.h4
2 files changed, 29 insertions, 4 deletions
diff --git a/libs/backends/coreaudio/coreaudio_backend.cc b/libs/backends/coreaudio/coreaudio_backend.cc
index 315c10adaf..d2ffd31d58 100644
--- a/libs/backends/coreaudio/coreaudio_backend.cc
+++ b/libs/backends/coreaudio/coreaudio_backend.cc
@@ -793,6 +793,23 @@ CoreAudioBackend::get_port_name (PortEngine::PortHandle port) const
return static_cast<CoreBackendPort*>(port)->name ();
}
+int
+CoreAudioBackend::get_port_property (PortHandle port, const std::string& key, std::string& value, std::string& type) const
+{
+ if (!valid_port (port)) {
+ PBD::error << _("CoreAudioBackend::get_port_name: Invalid Port(s)") << endmsg;
+ return -1;
+ }
+ if (key == "http://jackaudio.org/metadata/pretty-name") {
+ type = "";
+ value = static_cast<CoreBackendPort*>(port)->pretty_name ();
+ if (!value.empty()) {
+ return 0;
+ }
+ }
+ return -1;
+}
+
PortEngine::PortHandle
CoreAudioBackend::get_port_by_name (const std::string& name) const
{
@@ -917,21 +934,25 @@ CoreAudioBackend::register_system_audio_ports()
lr.min = lr.max = coreaudio_reported_input_latency + (_measure_latency ? 0 : _systemic_audio_input_latency);
for (uint32_t i = 0; i < a_ins; ++i) {
char tmp[64];
- snprintf(tmp, sizeof(tmp), "system:capture_%s", _pcmio->cached_port_name(i, true).c_str());
+ snprintf(tmp, sizeof(tmp), "system:capture_%d", i+1);
PortHandle p = add_port(std::string(tmp), DataType::AUDIO, static_cast<PortFlags>(IsOutput | IsPhysical | IsTerminal));
if (!p) return -1;
set_latency_range (p, false, lr);
- _system_inputs.push_back(static_cast<CoreBackendPort*>(p));
+ CoreBackendPort *cp = static_cast<CoreBackendPort*>(p);
+ cp->set_pretty_name (_pcmio->cached_port_name(i, true));
+ _system_inputs.push_back(cp);
}
lr.min = lr.max = coreaudio_reported_output_latency + (_measure_latency ? 0 : _systemic_audio_output_latency);
for (uint32_t i = 0; i < a_out; ++i) {
char tmp[64];
- snprintf(tmp, sizeof(tmp), "system:playback_%s", _pcmio->cached_port_name(i, false).c_str());
+ snprintf(tmp, sizeof(tmp), "system:playback_%d", i+1);
PortHandle p = add_port(std::string(tmp), DataType::AUDIO, static_cast<PortFlags>(IsInput | IsPhysical | IsTerminal));
if (!p) return -1;
set_latency_range (p, true, lr);
- _system_outputs.push_back(static_cast<CoreBackendPort*>(p));
+ CoreBackendPort *cp = static_cast<CoreBackendPort*>(p);
+ cp->set_pretty_name (_pcmio->cached_port_name(i, false));
+ _system_outputs.push_back(cp);
}
return 0;
}
diff --git a/libs/backends/coreaudio/coreaudio_backend.h b/libs/backends/coreaudio/coreaudio_backend.h
index 542d1ac746..b36c53105c 100644
--- a/libs/backends/coreaudio/coreaudio_backend.h
+++ b/libs/backends/coreaudio/coreaudio_backend.h
@@ -65,9 +65,11 @@ class CoreBackendPort {
virtual ~CoreBackendPort ();
const std::string& name () const { return _name; }
+ const std::string& pretty_name () const { return _pretty_name; }
PortFlags flags () const { return _flags; }
int set_name (const std::string &name) { _name = name; return 0; }
+ int set_pretty_name (const std::string &name) { _pretty_name = name; return 0; }
virtual DataType type () const = 0;
@@ -107,6 +109,7 @@ class CoreBackendPort {
private:
CoreAudioBackend &_osx_backend;
std::string _name;
+ std::string _pretty_name;
const PortFlags _flags;
LatencyRange _capture_latency_range;
LatencyRange _playback_latency_range;
@@ -250,6 +253,7 @@ class CoreAudioBackend : 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;