use alloc::boxed::Box;
pub use num_complex::Complex32;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FftDirection {
Forward,
Inverse,
}
pub trait Fft {
fn process(&self, buffer: &mut [Complex32]);
}
pub trait FftPlanner {
fn new() -> Self;
fn plan_fft(&mut self, len: usize, direction: FftDirection) -> Box<dyn Fft>;
fn max_supported_len(&self) -> usize;
fn plan_fft_forward(&mut self, len: usize) -> Box<dyn Fft> {
self.plan_fft(len, FftDirection::Forward)
}
fn plan_fft_inverse(&mut self, len: usize) -> Box<dyn Fft> {
self.plan_fft(len, FftDirection::Inverse)
}
}