[pulseaudio-discuss] Rewind Handling in module-lfe-lp
Alexander E. Patrakov
patrakov at gmail.com
Wed Mar 27 03:25:54 PDT 2013
2013/3/27 Justin Chudgar <justin at justinzane.com>:
> https://github.com/justinzane/pulseaudio/blob/master/src/modules/module-lfe-lp.c
>
> First, thanks to both of you for helping me get this far. I've got a mostly
> correct (I think) filter setup based on Alexander's feedback. Now I'm trying to
> get rewind buffering done. I've read the wiki page that Tanu sent and I've been
> talking to ohsix on IRC.
Sorry, this does not look like an LR-4 filter. For each channel, you
need to make both a twice-lowpass-filtered and twice-highpass-filtered
version, but you make only one of the filtered versions.
Also, this is wrong:
lp = biquad(&(u->lpdt[chan_idx]), *(u->lpfs), cur_sample);
*dst_sample = biquad(&(u->lpdt[chan_idx]), *(u->lpfs), &lp);
You are passing two samples through the same biquad, while you need to
have two biquads and pass the output sample from the first one to the
second one.
I repeat:
1. Lowpass-filter each channel twice.
2. Highpass-filter each channel twice.
3. Combine the 2N outputs obtained at steps 1 and 2, as needed.
Note that at no moment you need an explicitly-constructed allpass biquad filter.
--
Alexander E. Patrakov
More information about the pulseaudio-discuss
mailing list