processing: use faster unsafe truncate
This commit is contained in:
parent
769cfdfb7f
commit
b0e0b5144f
12
src/main.rs
12
src/main.rs
|
@ -779,7 +779,11 @@ const APP: () = {
|
||||||
let x0 = f32::from(a as i16);
|
let x0 = f32::from(a as i16);
|
||||||
let y0 =
|
let y0 =
|
||||||
c.resources.iir_ch[1].update(&mut c.resources.iir_state[1], x0);
|
c.resources.iir_ch[1].update(&mut c.resources.iir_state[1], x0);
|
||||||
y0 as i16 as u16 ^ 0x8000
|
// note(unsafe): The filter limits ensure that the value is in range.
|
||||||
|
// The truncation introduces 1/2 LSB distortion.
|
||||||
|
let y0 = unsafe { y0.to_int_unchecked::<i16>() };
|
||||||
|
// convert to DAC code
|
||||||
|
y0 as u16 ^ 0x8000
|
||||||
};
|
};
|
||||||
|
|
||||||
c.resources.dac1.send(output).unwrap();
|
c.resources.dac1.send(output).unwrap();
|
||||||
|
@ -792,7 +796,11 @@ const APP: () = {
|
||||||
let x0 = f32::from(a as i16);
|
let x0 = f32::from(a as i16);
|
||||||
let y0 =
|
let y0 =
|
||||||
c.resources.iir_ch[0].update(&mut c.resources.iir_state[0], x0);
|
c.resources.iir_ch[0].update(&mut c.resources.iir_state[0], x0);
|
||||||
y0 as i16 as u16 ^ 0x8000
|
// note(unsafe): The filter limits ensure that the value is in range.
|
||||||
|
// The truncation introduces 1/2 LSB distortion.
|
||||||
|
let y0 = unsafe { y0.to_int_unchecked::<i16>() };
|
||||||
|
// convert to DAC code
|
||||||
|
y0 as u16 ^ 0x8000
|
||||||
};
|
};
|
||||||
|
|
||||||
c.resources.dac0.send(output).unwrap();
|
c.resources.dac0.send(output).unwrap();
|
||||||
|
|
Loading…
Reference in New Issue