add an interface to select playback buffers/period
authorRobin Gareus <robin@gareus.org>
Fri, 4 Dec 2015 09:04:22 +0000 (10:04 +0100)
committerRobin Gareus <robin@gareus.org>
Fri, 4 Dec 2015 09:16:19 +0000 (10:16 +0100)
libs/ardour/ardour/audio_backend.h

index 73310bddb63ea1cae25e5b26e4a08b7b60413bdd..0428c36b44f52b6a39809d1d40650a92d79a1163 100644 (file)
@@ -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()