Struct web_audio_api::buffer::Resampler[][src]

pub struct Resampler<I> { /* fields omitted */ }

Sample rate converter and buffer chunk splitter.

A MediaElement can be wrapped inside a Resampler to yield AudioBuffers of the desired sample_rate and length

use web_audio_api::SampleRate;
use web_audio_api::buffer::{ChannelData, AudioBuffer, Resampler};

// construct an input of 3 chunks of 5 samples
let channel = ChannelData::from(vec![1., 2., 3., 4., 5.]);
let input_buf = AudioBuffer::from_channels(vec![channel], SampleRate(44_100));
let input = vec![input_buf; 3].into_iter().map(|b| Ok(b));

// resample to chunks of 10 samples
let mut resampler = Resampler::new(SampleRate(44_100), 10, input);

// first chunk contains 10 samples
let next = resampler.next().unwrap();
assert_eq!(next.sample_len(), 10);
assert_eq!(next.channel_data(0).unwrap(), &ChannelData::from(vec![
    1., 2., 3., 4., 5.,
    1., 2., 3., 4., 5.,
]));

// second chunk contains 5 samples
let next = resampler.next().unwrap();
assert_eq!(next.sample_len(), 5);
assert_eq!(next.channel_data(0).unwrap(), &ChannelData::from(vec![
    1., 2., 3., 4., 5.,
]));

// no further chunks
assert!(resampler.next().is_none());

Implementations

impl<M: MediaElement> Resampler<M>[src]

pub fn new(sample_rate: SampleRate, sample_len: u32, input: M) -> Self[src]

Trait Implementations

impl<M: MediaElement> Iterator for Resampler<M>[src]

type Item = AudioBuffer

The type of the elements being iterated over.

Auto Trait Implementations

impl<I> RefUnwindSafe for Resampler<I> where
    I: RefUnwindSafe
[src]

impl<I> Send for Resampler<I> where
    I: Send
[src]

impl<I> Sync for Resampler<I> where
    I: Sync
[src]

impl<I> Unpin for Resampler<I> where
    I: Unpin
[src]

impl<I> UnwindSafe for Resampler<I> where
    I: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.