[pulseaudio-discuss] Rewind Handling in module-lfe-lp

Alexander E. Patrakov patrakov at gmail.com
Wed Mar 27 03:01:18 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.
> All of which has left me more educated but just as clueless about what to
> actually implement.... :(
> My understanding is that since I've got a causal filter, I need to do one of
> the two things when a rewind request appears:
> 1 - buffer the biquad samples so that I can restart filtering the rewound input
> memblock_q immediately
> - or -
> 2 - buffer the input samples for at least sample_rate/20 and when a rewind come
> in, set the biquad samples to 0.0 and filter the buffered input.

Option 2 is not correct. IIR filters are called "infinite impulse
response" for a reason. Please do the following test:

1. Create a wav file containing some samples with 0x7fff value
followed by silence (0x0).
2. Play it through your filter, record the output.
3. See at which sample the output becomes equal to zero and stays
there (withing the precision of 16-bit samples). Hint: way more than
one second, because we are looking for 99.99% of convergence.

Alexander E. Patrakov

More information about the pulseaudio-discuss mailing list