[pulseaudio-discuss] New Module: module-lfe-lp

Justin Chudgar justin at justinzane.com
Thu Mar 21 15:39:33 PDT 2013


On Tuesday, March 19, 2013 11:19:10 PM Alexander E. Patrakov wrote:
> [I still have not verified the filter, sorry]
> 
> 2013/3/19 Justin Chudgar <justin at justinzane.com>:
> > I've created a module to ensure that only low frequencies are sent to
> > devices at the end of an "lfe"/"subwoofer" channel. This module allows
> > the user to select the master channel, the low pass cutoff frequency (aka
> > corner freq, -3dB freq) and the number of filter poles.
> 
> There is a problem with rewinds. You seem to completely reset the
> filter on any rewind. The expected idea is that PulseAudio tells your
> module this: "please forget that I just sent you X milliseconds of
> audio", with the intention to send different audio in order to account
> for a (failed e.g. due to a new event sound) speculative mix-ahead. X
> milliseconds ago, your filter had non-zeros in monopole_data and
> biquad_data, and you are completely zeroing that out. "Click!"
> 
> I'm afraid that, with any IIR filter, you either have to say "rewinds
> are not supported at all", or store the full history of monopole_data
> and biquad_data for the duration of the maximum possible rewind.

I'd love some feedback about the "best" of these choices from a pulseaudio 
perspective:
- keep a huge buffer for history data
- disable rewind [how does one do that?]
> 
> Also I don't think that bqdt initialization is correct. You are
> declaring the structure on-stack in pa__init() and then assigning the
> address of that on-stack structure to the fields of a long-living
> userdata object.

I'm learning C as I go, so what would you recommend?

> 
> --
> Alexander E. Patrakov
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss



More information about the pulseaudio-discuss mailing list