use num_complex::Complex32;
pub struct QuadratureDetector {
last_sample: Complex32,
}
impl QuadratureDetector {
pub fn new() -> Self {
Self {last_sample: Complex32::default()}
}
pub fn process_buffer(&mut self, input_buffer: &[Complex32], output_buffer: &mut [f32]) {
let n = usize::min(input_buffer.len(), output_buffer.len());
for i in 0..n {
let v = &input_buffer[i];
output_buffer[i] = (v * self.last_sample.conj()).arg(); self.last_sample = *v;
}
}
pub fn process_sample(&mut self, v: &Complex32) -> f32 {
let d = (v * self.last_sample.conj()).arg(); self.last_sample = *v;
d
}
}