[pulseaudio-discuss] Resampler quality evaluation: now with room noise!

Alexander E. Patrakov patrakov at gmail.com
Sat Sep 27 08:56:21 PDT 2014


26.09.2014 02:56, David Henningsson wrote:
>
>
> On 2014-09-25 21:54, Alexander E. Patrakov wrote:
>> The conclusion of that work was that we need to use speex-float-5 to
>> match the metric of "never introducing audible distortions" (that other
>> operating systems meet by default) when resampling from 44.1 to 48 kHz.
>> However, David Henningsson argued that this "never" included a lot of
>> unrealistic worst-case conditions, i.e. that the quality achieved in
>> proprietary OSes is actually overkill.
>
> To elaborate, I'm not saying they're completely unrealistic, I'm don't
> doubt that the resampler noises are hearable in *some* environments. The
> question is how common it is.
>
> We need to find a balance between quality on one side and CPU
> consumption on the other side.
>
> We used to have speex-float-3 but changed to speex-float-1 because
> distros had changed, which in turn was because people complained that PA
> took too much CPU. So speex-float-3 was causing problems for some people.

I think (but cannot claim this yet as a scientific fact) that we can 
safely ignore these CPU-overuse or battery-life complaints at least on 
Sandy Bridge CPUs if speex has been compiled with SSE support. I have 
directly checked the impact of the resampler choice on the battery life 
of my Sony Vaio Z23A4R laptop, under the following conditions:

1. The whole system is in initramfs. The initramfs just plays a 
CD-quality wav file with some music of ~1 minute length in a loop with 
paplay, and after each loop, logs the battery energy until less than 2% 
of energy remains in the battery. Then it saves the log to the SSD. I.e. 
there is no SSD access until the final saving of the log.

2. The screen is turned off. The hardware radio switch is also off.

3. Absolutely no keyboard/touchpad interaction.

4. Default volume, headphones connected, resampling from 44.1 to 48 kHz 
achieved by setting both default and alternate rates to 48000 Hz in 
daemon.conf.

5. laptop-mode-tools are installed, in their default configuration.

6. The kernel version is 3.17-rc5, PulseAudio is from the yesterday's 
git. Everything else is from yesterday's Gentoo amd64.

All these conditions are aimed at obtaining reproducible results and 
saving as much energy as possible, so that any variations due to the 
resampler are clearly visible.

The CPU is: Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz (with available 
frequencies from 0.8 to 3.5 GHz).

Result: with speex-float-1, the laptop lasted 26371 seconds, while with 
speex-float-5, the result was "only" 25997 seconds. I.e. less than 1.5% 
of difference (and even less under more realistic conditions, i.e. with 
the SSD, WiFi and display being on), or only 81 mW of extra power 
consumed. And I don't yet know the standard error (will repeat the test 
several times and report separately).

Note: for "real" mobile devices like phones, the impact will be more 
significant. So I limit my "ignore complaints as invalid" proposal only 
to laptops with Sandy Bridge CPUs.

>
> So, as a very rough measure, if we have one set of people complaining
> about resampler CPU consumption, and another set of people complaining
> about resampler noises, and the size of those two groups are roughly
> equivalent, we're somewhat on a balance. :-)
>
> I think your findings are very interesting when comparing different
> resamplers though - i e, that speex seems to give best quality, given a
> fixed processing power.
>

-- 
Alexander E. Patrakov


More information about the pulseaudio-discuss mailing list