Trait HostTrait
pub trait HostTrait {
type Devices: Iterator<Item = Self::Device>;
type Device: DeviceTrait;
// Required methods
fn is_available() -> bool;
fn devices(&self) -> Result<Self::Devices, DevicesError> ⓘ;
fn default_input_device(&self) -> Option<Self::Device> ⓘ;
fn default_output_device(&self) -> Option<Self::Device> ⓘ;
// Provided methods
fn input_devices(
&self,
) -> Result<Filter<Self::Devices, fn(_: &<Self::Devices as Iterator>::Item) -> bool>, DevicesError> ⓘ { ... }
fn output_devices(
&self,
) -> Result<Filter<Self::Devices, fn(_: &<Self::Devices as Iterator>::Item) -> bool>, DevicesError> ⓘ { ... }
}
dep_rodio
only.Expand description
A Host
provides access to the available audio devices on the system.
Each platform may have a number of available hosts depending on the system, each with their own pros and cons.
For example, WASAPI is the standard audio host API that ships with the Windows operating system. However, due to historical limitations with respect to performance and flexibility, Steinberg created the ASIO API providing better audio device support for pro audio and low-latency applications. As a result, it is common for some devices and device capabilities to only be available via ASIO, while others are only available via WASAPI.
Another great example is the Linux platform. While the ALSA host API is the lowest-level API available to almost all distributions of Linux, its flexibility is limited as it requires that each process have exclusive access to the devices with which they establish streams. PulseAudio is another popular host API that aims to solve this issue by providing user-space mixing, however it has its own limitations w.r.t. low-latency and high-performance audio applications. JACK is yet another host API that is more suitable to pro-audio applications, however it is less readily available by default in many Linux distributions and is known to be tricky to set up.
Required Associated Types§
type Devices: Iterator<Item = Self::Device>
type Devices: Iterator<Item = Self::Device>
The type used for enumerating available devices by the host.
type Device: DeviceTrait
type Device: DeviceTrait
The Device
type yielded by the host.
Required Methods§
fn is_available() -> bool
fn is_available() -> bool
Whether or not the host is available on the system.
fn devices(&self) -> Result<Self::Devices, DevicesError> ⓘ
fn devices(&self) -> Result<Self::Devices, DevicesError> ⓘ
An iterator yielding all Device
s currently available to the host on the system.
Can be empty if the system does not support audio in general.
fn default_input_device(&self) -> Option<Self::Device> ⓘ
fn default_input_device(&self) -> Option<Self::Device> ⓘ
The default input audio device on the system.
Returns None
if no input device is available.
fn default_output_device(&self) -> Option<Self::Device> ⓘ
fn default_output_device(&self) -> Option<Self::Device> ⓘ
The default output audio device on the system.
Returns None
if no output device is available.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.