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:
*/
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
*/
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,