mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 15:54:57 +01:00
Separate user-set pretty-names from hardware I/O names
This allow to restore original engine port-names as set by the backend. ALSA MIDI, CoreAudio, CoreMIDI and PortAudio drivers can provide human readable physical port names for some devices.
This commit is contained in:
parent
01502c6805
commit
21e66216be
7 changed files with 30 additions and 17 deletions
|
|
@ -54,17 +54,25 @@ class LIBARDOUR_API BackendPort : public ProtoPort
|
|||
|
||||
const std::string& name () const { return _name; }
|
||||
const std::string& pretty_name () const { return _pretty_name; }
|
||||
const std::string& hw_port_name () const { return _hw_port_name; }
|
||||
|
||||
int set_name (const std::string& name) {
|
||||
_name = name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* called from PortEngineSharedImpl */
|
||||
int set_pretty_name (const std::string& name) {
|
||||
_pretty_name = name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* called from backends only */
|
||||
int set_hw_port_name (const std::string& name) {
|
||||
_hw_port_name = name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual DataType type () const = 0;
|
||||
|
||||
PortFlags flags () const { return _flags; }
|
||||
|
|
@ -102,6 +110,7 @@ protected:
|
|||
private:
|
||||
std::string _name;
|
||||
std::string _pretty_name;
|
||||
std::string _hw_port_name;
|
||||
const PortFlags _flags;
|
||||
LatencyRange _capture_latency_range;
|
||||
LatencyRange _playback_latency_range;
|
||||
|
|
|
|||
|
|
@ -514,6 +514,10 @@ PortEngineSharedImpl::get_port_property (PortEngine::PortHandle port, const std:
|
|||
if (!value.empty()) {
|
||||
return 0;
|
||||
}
|
||||
value = boost::static_pointer_cast<BackendPort>(port)->hw_port_name ();
|
||||
if (!value.empty()) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1244,7 +1244,7 @@ AlsaAudioBackend::register_system_audio_ports()
|
|||
if (!p) return -1;
|
||||
set_latency_range (p, false, lr);
|
||||
BackendPortPtr ap = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
//ap->set_pretty_name ("")
|
||||
//ap->set_hw_port_name ("")
|
||||
_system_inputs.push_back (ap);
|
||||
}
|
||||
|
||||
|
|
@ -1256,7 +1256,7 @@ AlsaAudioBackend::register_system_audio_ports()
|
|||
if (!p) return -1;
|
||||
set_latency_range (p, true, lr);
|
||||
BackendPortPtr ap = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
//ap->set_pretty_name ("")
|
||||
//ap->set_hw_port_name ("")
|
||||
_system_outputs.push_back (ap);
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -1518,7 +1518,7 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device)
|
|||
set_latency_range (p, true, lr);
|
||||
boost::dynamic_pointer_cast<AlsaMidiPort>(p)->set_n_periods(_periods_per_cycle); // TODO check MIDI alignment
|
||||
BackendPortPtr ap = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
ap->set_pretty_name (replace_name_io (i->first, false));
|
||||
ap->set_hw_port_name (replace_name_io (i->first, false));
|
||||
pthread_mutex_lock (&_device_port_mutex);
|
||||
_system_midi_out.push_back (ap);
|
||||
pthread_mutex_unlock (&_device_port_mutex);
|
||||
|
|
@ -1565,7 +1565,7 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device)
|
|||
lr.min = lr.max = (_measure_latency ? 0 : nfo->systemic_input_latency);
|
||||
set_latency_range (p, false, lr);
|
||||
BackendPortPtr ap = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
ap->set_pretty_name (replace_name_io (i->first, true));
|
||||
ap->set_hw_port_name (replace_name_io (i->first, true));
|
||||
pthread_mutex_lock (&_device_port_mutex);
|
||||
_system_midi_in.push_back (ap);
|
||||
pthread_mutex_unlock (&_device_port_mutex);
|
||||
|
|
|
|||
|
|
@ -948,7 +948,7 @@ CoreAudioBackend::register_system_audio_ports()
|
|||
if (!p) return -1;
|
||||
set_latency_range (p, false, lr);
|
||||
BackendPortPtr cp = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
cp->set_pretty_name (_pcmio->cached_port_name(i, true));
|
||||
cp->set_hw_port_name (_pcmio->cached_port_name(i, true));
|
||||
_system_inputs.push_back(cp);
|
||||
}
|
||||
|
||||
|
|
@ -960,7 +960,7 @@ CoreAudioBackend::register_system_audio_ports()
|
|||
if (!p) return -1;
|
||||
set_latency_range (p, true, lr);
|
||||
BackendPortPtr cp = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
cp->set_pretty_name (_pcmio->cached_port_name(i, false));
|
||||
cp->set_hw_port_name (_pcmio->cached_port_name(i, false));
|
||||
_system_outputs.push_back(cp);
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -1032,7 +1032,7 @@ CoreAudioBackend::coremidi_rediscover()
|
|||
lr.min = lr.max = _samples_per_period; // TODO add per-port midi-systemic latency
|
||||
set_latency_range (p, false, lr);
|
||||
BackendPortPtr pp = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
pp->set_pretty_name(_midiio->port_name(i, true));
|
||||
pp->set_hw_port_name(_midiio->port_name(i, true));
|
||||
_system_midi_in.push_back(pp);
|
||||
_port_change_flag = true;
|
||||
}
|
||||
|
|
@ -1055,7 +1055,7 @@ CoreAudioBackend::coremidi_rediscover()
|
|||
lr.min = lr.max = _samples_per_period; // TODO add per-port midi-systemic latency
|
||||
set_latency_range (p, false, lr);
|
||||
BackendPortPtr pp = boost::dynamic_pointer_cast<BackendPort>(p);
|
||||
pp->set_pretty_name(_midiio->port_name(i, false));
|
||||
pp->set_hw_port_name(_midiio->port_name(i, false));
|
||||
_system_midi_out.push_back(pp);
|
||||
_port_change_flag = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -693,7 +693,7 @@ DummyAudioBackend::register_system_ports()
|
|||
std::string name = dp->setup_generator (gt, _samplerate, i - 1, a_ins);
|
||||
|
||||
if (!name.empty ()) {
|
||||
dp->set_pretty_name (name);
|
||||
dp->set_hw_port_name (name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -723,13 +723,13 @@ DummyAudioBackend::register_system_ports()
|
|||
if (_midi_mode == MidiGenerator) {
|
||||
std::string name = dp->setup_generator (i % NUM_MIDI_EVENT_GENERATORS, _samplerate);
|
||||
if (!name.empty ()) {
|
||||
dp->set_pretty_name (name);
|
||||
dp->set_hw_port_name (name);
|
||||
}
|
||||
}
|
||||
else if (_midi_mode == MidiOneHz) {
|
||||
std::string name = dp->setup_generator (-1, _samplerate);
|
||||
if (!name.empty ()) {
|
||||
dp->set_pretty_name (name);
|
||||
dp->set_hw_port_name (name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -753,7 +753,7 @@ DummyAudioBackend::register_system_ports()
|
|||
ss << " >" << (apc + 1);
|
||||
}
|
||||
}
|
||||
dp->set_pretty_name (ss.str());
|
||||
dp->set_hw_port_name (ss.str());
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -1213,7 +1213,7 @@ PortAudioBackend::register_system_audio_ports()
|
|||
if (!p) return -1;
|
||||
set_latency_range (p, false, lr);
|
||||
boost::shared_ptr<PortAudioPort> audio_port = boost::dynamic_pointer_cast<PortAudioPort>(p);
|
||||
audio_port->set_pretty_name (
|
||||
audio_port->set_hw_port_name (
|
||||
_pcmio->get_input_channel_name (name_to_id (_input_audio_device), i));
|
||||
_system_inputs.push_back (audio_port);
|
||||
}
|
||||
|
|
@ -1226,7 +1226,7 @@ PortAudioBackend::register_system_audio_ports()
|
|||
if (!p) return -1;
|
||||
set_latency_range (p, true, lr);
|
||||
boost::shared_ptr<PortAudioPort> audio_port = boost::dynamic_pointer_cast<PortAudioPort>(p);
|
||||
audio_port->set_pretty_name (
|
||||
audio_port->set_hw_port_name (
|
||||
_pcmio->get_output_channel_name (name_to_id (_output_audio_device), i));
|
||||
_system_outputs.push_back(audio_port);
|
||||
}
|
||||
|
|
@ -1263,7 +1263,7 @@ PortAudioBackend::register_system_midi_ports()
|
|||
set_latency_range (p, false, lr);
|
||||
|
||||
boost::shared_ptr<PortMidiPort> midi_port = boost::dynamic_pointer_cast<PortMidiPort>(p);
|
||||
midi_port->set_pretty_name ((*i)->name());
|
||||
midi_port->set_hw_port_name ((*i)->name());
|
||||
_system_midi_in.push_back (midi_port);
|
||||
DEBUG_MIDI (string_compose ("Registered MIDI input port: %1\n", port_name));
|
||||
}
|
||||
|
|
@ -1288,7 +1288,7 @@ PortAudioBackend::register_system_midi_ports()
|
|||
|
||||
boost::shared_ptr<PortMidiPort> midi_port = boost::dynamic_pointer_cast<PortMidiPort>(p);
|
||||
midi_port->set_n_periods(2);
|
||||
midi_port->set_pretty_name ((*i)->name());
|
||||
midi_port->set_hw_port_name ((*i)->name());
|
||||
_system_midi_out.push_back (midi_port);
|
||||
DEBUG_MIDI (string_compose ("Registered MIDI output port: %1\n", port_name));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -828,7 +828,7 @@ PulseAudioBackend::register_system_ports ()
|
|||
return -1;
|
||||
}
|
||||
set_latency_range (p, true, lr);
|
||||
//p->set_pretty_name ("")
|
||||
//p->set_hw_port_name ("")
|
||||
_system_outputs.push_back (p);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue