summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/audio_backend.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-04 10:04:22 +0100
committerRobin Gareus <robin@gareus.org>2015-12-04 10:16:19 +0100
commit13926d9bbb15d204031cb5533262a4ed9e1209c8 (patch)
treee526c5c4b441f0416a7e12dfbc702417fb3f914c /libs/ardour/ardour/audio_backend.h
parentd237165e2178225b9f0b6a79055d808925baceae (diff)
add an interface to select playback buffers/period
Diffstat (limited to 'libs/ardour/ardour/audio_backend.h')
-rw-r--r--libs/ardour/ardour/audio_backend.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h
index 73310bddb6..0428c36b44 100644
--- a/libs/ardour/ardour/audio_backend.h
+++ b/libs/ardour/ardour/audio_backend.h
@@ -228,6 +228,22 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
virtual std::vector<DeviceStatus> enumerate_output_devices () const
{ return std::vector<DeviceStatus>(); }
+
+ /** An interface to set buffers/period for playback latency.
+ * useful for ALSA or JACK/ALSA on Linux.
+ *
+ * @return true if the backend supports period-size configuration
+ */
+ virtual bool can_set_period_size () const { return false; }
+
+ /** Returns a vector of supported period-sizes for the given driver */
+ virtual std::vector<uint32_t> available_period_sizes (const std::string& driver) const { return std::vector<uint32_t>(); }
+
+ /** Set the period size to be used.
+ * must be called before starting the backend.
+ */
+ virtual int set_peridod_size (uint32_t) { return -1; }
+
/**
* @return true if backend supports requesting an update to the device list
* and any cached properties associated with the devices.
@@ -426,6 +442,7 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
virtual uint32_t systemic_output_latency () const = 0;
virtual uint32_t systemic_midi_input_latency (std::string const) const = 0;
virtual uint32_t systemic_midi_output_latency (std::string const) const = 0;
+ virtual uint32_t period_size () const { return 0; }
/** override this if this implementation returns true from
* requires_driver_selection()