20 #ifndef __libardour_audiobackend_h__
21 #define __libardour_audiobackend_h__
29 #include <boost/function.hpp>
36 #ifdef ARDOURBACKEND_DLL_EXPORTS // defined if we are building the ARDOUR Panners DLLs (instead of using them)
37 #define ARDOURBACKEND_API LIBARDOUR_DLL_EXPORT
39 #define ARDOURBACKEND_API LIBARDOUR_DLL_IMPORT
41 #define ARDOURBACKEND_LOCAL LIBARDOUR_DLL_LOCAL
52 int (*instantiate) (
const std::string& arg1,
const std::string& arg2);
56 int (*deinstantiate) (void);
72 bool (*already_configured)();
99 virtual std::string
name()
const = 0;
105 virtual bool is_realtime ()
const = 0;
126 virtual std::vector<std::string>
enumerate_drivers()
const {
return std::vector<std::string>(); }
143 DeviceStatus (
const std::string& s,
bool avail) : name (s), available (avail) {}
153 virtual std::vector<DeviceStatus> enumerate_devices ()
const = 0;
162 virtual std::vector<float> available_sample_rates (
const std::string& device)
const = 0;
181 virtual std::vector<uint32_t> available_buffer_sizes (
const std::string& device)
const = 0;
199 virtual uint32_t available_input_channel_count (
const std::string& device)
const = 0;
207 virtual uint32_t available_output_channel_count (
const std::string& device)
const = 0;
213 virtual bool can_change_sample_rate_when_running ()
const = 0;
218 virtual bool can_change_buffer_size_when_running ()
const = 0;
233 virtual int set_device_name (
const std::string&) = 0;
239 virtual int set_sample_rate (
float) = 0;
248 virtual int set_buffer_size (uint32_t) = 0;
257 virtual int set_interleaved (
bool yn) = 0;
260 virtual int set_input_channels (uint32_t) = 0;
263 virtual int set_output_channels (uint32_t) = 0;
268 virtual int set_systemic_input_latency (uint32_t) = 0;
273 virtual int set_systemic_output_latency (uint32_t) = 0;
277 virtual int set_systemic_midi_input_latency (std::string
const, uint32_t) = 0;
281 virtual int set_systemic_midi_output_latency (std::string
const, uint32_t) = 0;
285 virtual std::string device_name ()
const = 0;
286 virtual float sample_rate ()
const = 0;
287 virtual uint32_t buffer_size ()
const = 0;
288 virtual bool interleaved ()
const = 0;
289 virtual uint32_t input_channels ()
const = 0;
290 virtual uint32_t output_channels ()
const = 0;
291 virtual uint32_t systemic_input_latency ()
const = 0;
292 virtual uint32_t systemic_output_latency ()
const = 0;
293 virtual uint32_t systemic_midi_input_latency (std::string
const)
const = 0;
294 virtual uint32_t systemic_midi_output_latency (std::string
const)
const = 0;
306 virtual std::string control_app_name()
const = 0;
311 virtual void launch_control_app () = 0;
322 virtual std::vector<std::string> enumerate_midi_options ()
const = 0;
329 virtual int set_midi_option (
const std::string&
option) = 0;
331 virtual std::string midi_option ()
const = 0;
334 virtual std::vector<DeviceStatus> enumerate_midi_devices ()
const = 0;
337 virtual int set_midi_device_enabled (std::string
const,
bool) = 0;
340 virtual bool midi_device_enabled (std::string
const)
const = 0;
343 virtual bool can_set_systemic_midi_latencies ()
const = 0;
377 int start (
bool for_latency_measurement=
false) {
378 return _start (for_latency_measurement);
395 virtual int stop () = 0;
401 virtual int reset_device() = 0;
419 virtual int freewheel (
bool start_stop) = 0;
431 virtual float dsp_load()
const = 0;
464 virtual int usecs_per_cycle ()
const {
return 1000000 * (buffer_size() / sample_rate()); }
465 virtual size_t raw_buffer_size (
DataType t) = 0;
485 virtual framepos_t sample_time_at_cycle_start () = 0;
493 virtual pframes_t samples_since_cycle_start () = 0;
518 virtual int create_process_thread (boost::function<
void()> func) = 0;
524 virtual int join_process_threads () = 0;
528 virtual bool in_process_thread () = 0;
536 virtual uint32_t process_thread_count () = 0;
538 virtual void update_latencies () = 0;
559 virtual int _start (
bool for_latency_measurement) = 0;
virtual void transport_stop()
int start(bool for_latency_measurement=false)
virtual framepos_t transport_frame() const
virtual bool speed_and_position(double &speed, framepos_t &position)
AudioBackendInfo & info() const
virtual std::string driver_name() const
virtual uint32_t default_buffer_size(const std::string &device) const
virtual std::vector< std::string > enumerate_drivers() const
virtual int set_driver(const std::string &)
virtual bool get_sync_offset(pframes_t &) const
virtual int drop_device()
virtual TransportState transport_state() const
virtual void transport_start()
static size_t thread_stack_size()
AudioBackend(AudioEngine &e, AudioBackendInfo &i)
virtual int usecs_per_cycle() const
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > position
virtual int set_time_master(bool)
DeviceStatus(const std::string &s, bool avail)
virtual bool requires_driver_selection() const
virtual void transport_locate(framepos_t)
virtual float default_sample_rate() const