AudioBackend

Trait AudioBackend 

Source
pub trait AudioBackend: Sized {
    type Config;
    type StartStreamError: Error;
    type StreamError: Error;
    type Instant: Send + Clone;

    // Required methods
    fn start_stream(
        config: Self::Config,
    ) -> Result<(Self, StreamInfo), Self::StartStreamError>;
    fn set_processor(&mut self, processor: FirewheelProcessor<Self>);
    fn poll_status(&mut self) -> Result<(), Self::StreamError>;
    fn delay_from_last_process(
        &self,
        process_timestamp: Self::Instant,
    ) -> Option<Duration>;

    // Provided methods
    fn available_input_devices() -> Vec<DeviceInfo> { ... }
    fn available_output_devices() -> Vec<DeviceInfo> { ... }
}
Expand description

A trait describing an audio backend.

When an instance is dropped, then it must automatically stop its corresponding audio stream.

All methods in this trait are only ever invoked from the main thread (the thread where the crate::context::FirewheelCtx lives).

Required Associated Types§

Source

type Config

The configuration of the audio stream.

Source

type StartStreamError: Error

An error when starting a new audio stream.

Source

type StreamError: Error

An error that has caused the audio stream to stop.

Source

type Instant: Send + Clone

A type describing an instant in time.

Required Methods§

Source

fn start_stream( config: Self::Config, ) -> Result<(Self, StreamInfo), Self::StartStreamError>

Start the audio stream with the given configuration, and return a handle for the audio stream.

Source

fn set_processor(&mut self, processor: FirewheelProcessor<Self>)

Send the given processor to the audio thread for processing.

Source

fn poll_status(&mut self) -> Result<(), Self::StreamError>

Poll the status of the running audio stream. Return an error if the audio stream has stopped for any reason.

Source

fn delay_from_last_process( &self, process_timestamp: Self::Instant, ) -> Option<Duration>

Return the amount of time that has elapsed from the instant FirewheelProcessor::process_interleaved was last called and now.

The given process_timestamp is the Self::Instant that was passed to the latest call to FirewheelProcessor::process_interleaved. This can be used to calculate the delay if needed.

If for any reason the delay could not be determined, return None.

Provided Methods§

Source

fn available_input_devices() -> Vec<DeviceInfo>

Return a list of the available input devices.

Source

fn available_output_devices() -> Vec<DeviceInfo>

Return a list of the available output devices.

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.

Implementors§