From c11f8532ca5b6bd874db2f67daa1fe0b1803c40e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 24 May 2023 01:53:45 +0200 Subject: [PATCH] Add API to query backend/driver/device ID --- libs/ardour/ardour/audioengine.h | 2 ++ libs/ardour/audioengine.cc | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 2c60157f52..e93980dcd1 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -134,6 +134,8 @@ class LIBARDOUR_API AudioEngine : public PortManager, public SessionHandlePtr bool freewheeling() const { return _freewheeling; } bool running() const { return _running; } + std::string backend_id (bool for_input); + Glib::Threads::Mutex& process_lock() { return _process_lock; } Glib::Threads::Mutex& latency_lock() { return _latency_lock; } diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index ea14191b2d..18154151e5 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -1778,3 +1778,27 @@ AudioEngine::add_pending_port_deletion (Port* p) delete p; } } + +std::string +AudioEngine::backend_id (bool for_input) +{ + if (!_backend) { + return ""; + } + if (!setup_required ()) { + return "JACK"; + } + + std::stringstream ss; + ss << _backend->name() << ";" << _backend->driver_name () << ";"; + if (_backend->use_separate_input_and_output_devices ()) { + if (for_input) { + ss << _backend->input_device_name (); + } else { + ss << _backend->output_device_name (); + } + } else { + ss << _backend->device_name (); + } + return ss.str (); +}