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. Is this even remotely correct? Also, is it possible? likely? for a rewind to occur during the processing of a sink_input_pop_cb? Since this is where the filtering occurs, how does one manage locking of the shared userdata? The more focused on my little bit of code, the better, and thanks again.