[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