| @@ -68,6 +68,11 @@ void AudioFilterBiquad::update(void) | |||
| bprev = in2; | |||
| aprev = pack_16b_16b( | |||
| signed_saturate_rshift(sum, 16, 14), out2); | |||
| // retaining part of the sum is meant to implement the | |||
| // "first order noise shaping" described in this article: | |||
| // http://www.earlevel.com/main/2003/02/28/biquads/ | |||
| // TODO: is logical AND really correct, or maybe it | |||
| // should really be signed_saturate_rshift() ??? | |||
| sum &= 0x3FFF; | |||
| bprev = in2; | |||
| *data++ = aprev; | |||