X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Faudio_backend.h;h=6523eb5081995535741a7dcb28e65a198bc828d3;hb=335debfa2fed045dc80c43fb2ef62d89262fc8f8;hp=379eae9fd90da07425be93dfda47d2a1941bbc7b;hpb=78a9791b5850e48dfcaf7045f443a082f14f58da;p=ardour.git diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 379eae9fd9..6523eb5081 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -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: @@ -199,6 +202,14 @@ class LIBARDOUR_API AudioBackend : public PortEngine { */ virtual bool use_separate_input_and_output_devices () const { return false; } + /* Return true if the backend uses separate I/O devices only for the case + * of allowing one to be "None". + * + * ie. Input Device must match Output Device, except if either of them + * is get_standard_device_name (DeviceNone). + */ + virtual bool match_input_output_devices_or_none () const { return false; } + /** Returns a collection of DeviceStatuses identifying devices discovered * by this backend since the start of the process. * @@ -258,6 +269,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