pub struct ApplyNM<F, A, B, const N: usize, const M: usize>where
F: FnMut(&[A], &mut [B]) + Send + 'static,
A: Send + 'static,
B: Send + 'static,{ /* private fields */ }
Expand description
Apply a function to each N input samples, producing M output samples.
Applies a function on N samples in the input stream, and creates M samples in the output stream. Handy for interleaved samples for example. See examples/audio/play_stereo.rs
Inputs
in
: Input
Outputs
out
: Output after function applied
Usage
use futuresdr::blocks::ApplyNM;
use futuresdr::runtime::Flowgraph;
use num_complex::Complex;
let mut fg = Flowgraph::new();
// Convert mono stream to stereo interleaved stream
let mono_to_stereo = fg.add_block(ApplyNM::<_, _, _, 1, 2>::new(move |v: &[f32], d: &mut [f32]| {
d[0] = v[0] * 0.5; // gain left
d[1] = v[0] * 0.9; // gain right
}));
// Note that the closure can also hold state
// Additionally, the closure can change the type of the sample
Implementations§
Auto Trait Implementations§
impl<F, A, B, const N: usize, const M: usize> RefUnwindSafe for ApplyNM<F, A, B, N, M>where A: RefUnwindSafe, B: RefUnwindSafe, F: RefUnwindSafe,
impl<F, A, B, const N: usize, const M: usize> Send for ApplyNM<F, A, B, N, M>
impl<F, A, B, const N: usize, const M: usize> Sync for ApplyNM<F, A, B, N, M>where A: Sync, B: Sync, F: Sync,
impl<F, A, B, const N: usize, const M: usize> Unpin for ApplyNM<F, A, B, N, M>where A: Unpin, B: Unpin, F: Unpin,
impl<F, A, B, const N: usize, const M: usize> UnwindSafe for ApplyNM<F, A, B, N, M>where A: UnwindSafe, B: UnwindSafe, F: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more