pub struct HostBuffer<T>
where T: Float,
{ /* private fields */ }
Expand description

Used for constructing AudioBuffer instances on the host.

This struct contains all necessary allocations for an AudioBuffer apart from the actual sample arrays. This way, the inner processing loop can be allocation free even if AudioBuffer instances are repeatedly created.

let mut host_buffer: HostBuffer<f32> = HostBuffer::new(2, 2);
let inputs = vec![vec![0.0; 1000]; 2];
let mut outputs = vec![vec![0.0; 1000]; 2];
let mut audio_buffer = host_buffer.bind(&inputs, &mut outputs);
plugin.process(&mut audio_buffer);

Implementations§

source§

impl<T> HostBuffer<T>
where T: Float,

source

pub fn new(input_count: usize, output_count: usize) -> HostBuffer<T>

Create a HostBuffer for a given number of input and output channels.

source

pub fn from_info(info: &Info) -> HostBuffer<T>

Create a HostBuffer for the number of input and output channels specified in an Info struct.

source

pub fn bind<'a, I, O>( &'a mut self, input_arrays: &[I], output_arrays: &mut [O] ) -> AudioBuffer<'a, T>
where I: AsRef<[T]> + 'a, O: AsMut<[T]> + 'a,

Bind sample arrays to the HostBuffer to create an AudioBuffer to pass to a plugin.

Panics

This function will panic if more inputs or outputs are supplied than the HostBuffer was created for, or if the sample arrays do not all have the same length.

source

pub fn input_count(&self) -> usize

Number of input channels supported by this HostBuffer.

source

pub fn output_count(&self) -> usize

Number of output channels supported by this HostBuffer.

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for HostBuffer<T>
where T: RefUnwindSafe,

§

impl<T> !Send for HostBuffer<T>

§

impl<T> !Sync for HostBuffer<T>

§

impl<T> Unpin for HostBuffer<T>

§

impl<T> UnwindSafe for HostBuffer<T>
where T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<S> FromSample<S> for S

source§

fn from_sample_(s: S) -> S

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

source§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,