diff options
Diffstat (limited to 'src/windowed_fft.rs')
| -rw-r--r-- | src/windowed_fft.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/windowed_fft.rs b/src/windowed_fft.rs index 3e4e648..2cdc471 100644 --- a/src/windowed_fft.rs +++ b/src/windowed_fft.rs @@ -5,10 +5,11 @@ use crate::{ window_function::{ - BlackmanHarrisWindow, HannWindow, RectangularWindow, Sine4Window, HammingWindow, + BlackmanHarrisWindow, HammingWindow, HannWindow, RectangularWindow, Sine4Window, WindowFunction, }, window_size::WindowSize, + window_type::WindowType, }; use num_complex::Complex; use realfft::{ComplexToReal, RealFftPlanner, RealToComplex}; @@ -56,14 +57,21 @@ impl WindowedRealFft { } } - pub fn window_function(&mut self, window_function: Box<dyn WindowFunction>) {} + pub fn window_function(&mut self, window_type: &WindowType) { + self.input.clear(); + self.output.clear(); + + let window_function = window_type.new_function(&WindowSize::from(self.window_size)); + + self.window_function = window_function; + } pub fn window_size(&mut self, window_size: WindowSize) { if window_size == self.window_size.into() { return; } - self.window_function = Box::new(HannWindow::new(&window_size)); + self.window_function.resize(&window_size); self.window_size = window_size.inner(); self.forward = self.planner.plan_fft_forward(self.window_size); |
