[pulseaudio-discuss] loopback module double resampling

Georg Chini georg at chini.tk
Mon Feb 19 16:27:03 UTC 2018


On 19.02.2018 16:56, Raman Shishniou wrote:
> Hello,
>
> Currently a loopback module does a double resampling if the source
> and sink sample rates are different.
>
> I used a simple config to test it:
> load-module module-null-source source_name=src rate=48000
> load-module module-null-sink sink_name=dst rate=96000
> load-module module-loopback source=src sink=dst
>
> After start I see in logs:
> D: [pulseaudio] module-loopback.c: Loopback overall latency is 56.14 ms + 67.48 ms + 53.20 ms = 176.76 ms
> D: [pulseaudio] module-loopback.c: Loopback latency at base rate is 176.46 ms
> D: [pulseaudio] module-loopback.c: [dst] Updated sampling rate to 95758 Hz.
> D: [pulseaudio] module-loopback.c: Loopback overall latency is 23.17 ms + 134.20 ms + 44.60 ms = 201.94 ms
> D: [pulseaudio] module-loopback.c: Loopback latency at base rate is 201.60 ms
> D: [pulseaudio] module-loopback.c: [dst] Updated sampling rate to 95925 Hz.
> D: [pulseaudio] module-loopback.c: Loopback overall latency is 44.15 ms + 133.80 ms + 31.56 ms = 209.48 ms
> D: [pulseaudio] module-loopback.c: Loopback latency at base rate is 209.37 ms
> D: [pulseaudio] module-loopback.c: [dst] Updated sampling rate to 95994 Hz.
>
> Sink-inputs and source-outputs:
> $ ~/bin/pactl list short source-outputs
> 0       0       -       module-loopback.c       s16le 2ch 96000Hz
> $ ~/bin/pactl list short sink-inputs
> 0       0       -       module-loopback.c       s16le 2ch 95994Hz
>
> I.e. first resample occurs in source-output (48000Hz -> 96000Hz) and
> the second in sink-input (95994Hz -> 96000Hz).
>
> I think it should change source-output's sample rate during latency recalculations.
> In this case there should be only one real resampler. This should increase
> audio quality and reduce cpu usage.
>
You can specify a sample-rate for module-loopback. So if you do
the same as above, but with rate=48000, the first re-sampling
will not happen. If you don't specify a rate, module-loopback uses
the rate of the sink. But you are right, because we do re-sampling
on the sink-input side anyway, it would probably make more sense
to use the source rate as default. This can easily be fixed in the
module init function. Will you send a patch?



More information about the pulseaudio-discuss mailing list