pub trait BufferView: Send + Sync {
fn num_input_channels(&self) -> usize;
fn num_output_channels(&self) -> usize;
fn read_input(&self, channel: usize, dst: &mut [f32]) -> usize;
fn write_output(&self, channel: usize, src: &[f32]) -> usize;
}
pub struct NullBufferView {
num_input_channels: usize,
num_output_channels: usize,
}
impl NullBufferView {
pub fn new(num_input_channels: usize, num_output_channels: usize) -> Self {
Self {
num_input_channels,
num_output_channels,
}
}
}
impl BufferView for NullBufferView {
fn num_input_channels(&self) -> usize {
self.num_input_channels
}
fn num_output_channels(&self) -> usize {
self.num_output_channels
}
fn read_input(&self, _channel: usize, dst: &mut [f32]) -> usize {
let n = dst.len();
dst.fill(0.0);
n
}
fn write_output(&self, _channel: usize, _src: &[f32]) -> usize {
_src.len()
}
}