Re: Virtual audio cable - high cpu usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2/4/21 7:15 PM, Sean Greenslade wrote:
On Thu, Feb 04, 2021 at 06:29:47PM +0100, Renaud GHIA wrote:
Thank you for the tip.
Now I am sure that resampling does not apply (see below).
But unfortunately pulseaudio always consumes 30% of one CPU core!


The reason is that you are using module-loopback. Due to a potential
difference between the clocks on the null sink and on the real sound card
(even though both report 44100 Hz), it always has to resample in order to
correct for the clock skew. If you don't understand, here is an analogy:
you have two mechanical watches. Even though both claim that their hour
hand makes one full circle every 12 hours, in fact, if left unattended,
they will diverge over time. There is no way to avoid that, except by
moving to Jack or PipeWire which simply don't introduce a null sink with an
independent clock.

If you decide to stay on PulseAudio, you can tweak the resampling method.
The default, speex-float-1, is light on the CPU resources and should
produce no distortions detectable by human ear on typical speech and music.
It does produce easily detectable distortions on specifically crafted
signals. If you want to make sure that the resampler is transparent no
matter what is thrown at it, use speex-float-5. There is no point in going
higher than that.

Thanks for your response.
I understand the problem of clock drift when we have several audio hardware
devices (with different qwartz).
But here, it's a pity that the null video driver has an independent clock...
Concerning pipewire, for now it doesn't work with our particular
application (no sound), but it seems to evolve quickly.
I haven't tried jack for now, but if it depends on pulseaudio, won't I have
the same problem?

Jack doesn't depend on pulseaudio, it's an independent sound server.
Though there are ways to make the two interconnect.

As far as I know, jack solves this problem by only allowing one hardware
sound device and locking all clocks to that. See:

https://jackaudio.org/faq/multiple_devices.html

One thing that just occured to me was to ask whether you acutally need
to use the remap module at all. I just did a quick test on a very weak
machine of mine: a null sink, a music player outputting to that sink,
and ffmpeg recording the null sink's monitor-source, all with matching
44.1 kHz sample rates. This resulted in no resamplers in the chain, and
only 9% CPU usage on a 2010 Atom CPU.

If you have an HDaudio device, it's quite likely that the HDaudio bus clock and your MONOTONIC_RAW time are locked already. If you use the MONOTONIC option for your timers, it'll be subject to NTP corrections but for short-enough rendering you shouldn't see a problem without resampling.
My 2 cents.
_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux