pub trait SampleParser {
fn oscilloscope(&self, data: &[u8], channels: u8) -> Vec<Vec<f64>>;
fn sample_size(&self) -> usize;
}
pub struct Signed16PCM();
impl SampleParser for Signed16PCM {
fn oscilloscope(&self, data: &[u8], channels: u8) -> Vec<Vec<f64>> {
let mut out = vec![vec![]; channels as usize];
let mut channel = 0;
for chunk in data.chunks(2) {
let buf = chunk[0] as i16 | (chunk[1] as i16) << 8;
out[channel].push(buf as f64);
channel = (channel + 1 ) % channels as usize;
}
out
}
fn sample_size(&self) -> usize { 2 } }