add initial midi sidechain if plugin has one.
[ardour.git] / libs / ardour / ardour / audio_backend.h
index 0428c36b44f52b6a39809d1d40650a92d79a1163..9a00cf281ee11b259c619069b484bf28e420d2d8 100644 (file)
@@ -80,6 +80,9 @@ struct LIBARDOUR_API AudioBackendInfo {
     bool (*available)();
 };
 
+/** AudioBackend is an high-level abstraction for interacting with the operating system's
+ * audio and midi I/O.
+ */
 class LIBARDOUR_API AudioBackend : public PortEngine {
   public:
 
@@ -258,6 +261,23 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
         */
        virtual bool update_devices () { return false; }
 
+       /**
+        * @return true if backend supports a blocking or buffered mode, false by
+        * default unless implemented by a derived class.
+        */
+       virtual bool can_use_buffered_io () { return false; }
+
+       /**
+        * Set the backend to use a blocking or buffered I/O mode
+        */
+       virtual void set_use_buffered_io (bool) { }
+
+       /**
+        * @return Set the backend to use a blocking or buffered I/O mode, false by
+        * default unless implemented by a derived class.
+        */
+       virtual bool get_use_buffered_io () { return false; }
+
     /** Returns a collection of float identifying sample rates that are
      * potentially usable with the hardware identified by @param device.
      * Any of these values may be supplied in other calls to this backend
@@ -350,6 +370,11 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
      */
     virtual bool can_change_buffer_size_when_running () const = 0;
 
+               /** return true if the backend can measure and update
+                * systemic latencies without restart.
+                */
+               virtual bool can_change_systemic_latency_when_running () const { return false; }
+
     /* Set the hardware parameters.
      *
      * If called when the current state is stopped or paused,