Am 2015-08-02 11:58, schrieb Alexander E. Patrakov:
[All of the below is valid only if the results that I obtained for
power consumption vs wakeup rate on my Sony VAIO VPC-Z23A4R laptop are
an exception, not the rule]

02.08.2015 14:23, Rene Bartsch wrote:
The next step would be to copy the convolver-code of BruteFIR to the
Pulseaudio-Github-repository and interface the code as a module.

Well, it is not that simple. Copying the code from BruteFIR won't be
really acceptable, because of the following reason. PulseAudio tries
to optimize wakeups by mixing audio in big chunks, speculatively. The
result is valid only if nothing unexpected (such as a software volume
change or a new stream) happens. So, PulseAudio sometimes (when the
unexpected happens) needs to say to the filter: "forget the last N
samples, here is a new version". Result: high average latency, low
latency of reaction to external events.

BruteFIR code does not have a way to say this.

Yes, this does mean that different requirements are imposed on
internal code (where rewindability is required when it is practical to
implement), and on external code (where it is never practical). And
for convolution, I'd say that writing rewindable code is practical,
and it does not have to be based on the ideas from BruteFIR :)

I see. A "module-pipe-shell" seems to be a quick hack as Pulseaudio can asynchronously pipe chunks of data through an external convolver-application via STDIN/STDOUT and drop old samples/repeat updated samples. For a real convolver-module a developer is needed who has extensive knowledge of convolving and programming - and a lot of spare-time. ;)

Can you publish an appeal for that task?

I'm still stuck at getting a reliable convolver-workflow. Pulseaudio -> Jack -> BruteFIR/Jconvolver -> Jack -> ALSA seems to be complicated to configure with many different configuration files. My current workflow is Pulseaudio -> module_pipe_sink -> FIFO -> external sudo BruteFIR call -> ALSA. When I put source- and sink-mixing into one BruteFIR-instance (both in the same BruteFir-config-file), BruteFIR often quits with "ALSA I/O: overflow!" and "ALSA I/O: underflow!". Separate instances block each other on the ALSA device. Pluggable USB-audio-devices increase complexity, too. Convolving is new to me, but I didn't think it would become so complicated to apply REW-speaker-measurements to an audio-stream on a desktop-machine.

--
Best regards,

Renne

_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to