X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fdsp%2Fmdct.rs;h=540ae4527986b375f14420646fc6614753fc0c39;hb=8cb5b63bf7f41d836106022735bfc1db7f8a4057;hp=b2927397f6624f185ffea3547e96fa6bb24dbfa4;hpb=6465a94691189acfc2fc2909e6e24442a1f0b700;p=nihav.git diff --git a/src/dsp/mdct.rs b/src/dsp/mdct.rs index b292739..540ae45 100644 --- a/src/dsp/mdct.rs +++ b/src/dsp/mdct.rs @@ -19,11 +19,12 @@ fn imdct(src: &[f32], dst: &mut [f32], length: usize) { }*/ impl IMDCT { - pub fn new(mode: FFTMode, size: usize) -> Self { + pub fn new(mode: FFTMode, size: usize, scaledown: bool) -> Self { let mut twiddle: Vec = Vec::with_capacity(size / 4); let factor = 2.0 * consts::PI / ((8 * size) as f32); + let scale = if scaledown { (1.0 / (size as f32)).sqrt() } else { 1.0 }; for k in 0..size/4 { - twiddle.push(FFTComplex::exp(factor * ((8 * k + 1) as f32))); + twiddle.push(FFTComplex::exp(factor * ((8 * k + 1) as f32)).scale(scale)); } let fft = FFTBuilder::new_fft(mode, size/4); let mut z: Vec = Vec::with_capacity(size / 2);