[pulseaudio-discuss] [PATCH 0/4] Add support for libsoxr resampler
Peter Meerwald
pmeerw at pmeerw.net
Wed Nov 12 02:26:07 PST 2014
Hi,
> > These patches add support for libsoxr resampler library to PulseAudio. The
> resampler is exposed in four selectable quality presets: lq, mq, hq and vhq
> (in the order of increasing quality). The patches update the code, build
> system and docs.
> >
> > libsoxr[1] is a resampler library extracted from the SoX utility[2]. It
> offers very good output quality and is very fast. Quality comparisons are
> available here:
> >
> > - http://src.infinitewave.ca/ - "SoX 14.4 High Quality" corresponds to hq
> quality. "SoX 14.4 VHQ Linear Phase" is close to vhq, the passband for vhq is
> slightly lower.
> > - http://sox.sourceforge.net/SoX/Resampling - there are graphs for impulse
> response comparison with libsamplerate available at the bottom of the page.
> > - http://lastique.github.io/src_test/ - I ran some more tests to compare
> with Speex resampler at different levels. Some performance measurments are
> also present at the end.
should have checked your evaluation before, impressive amount of work!
so the claim is soxr looks good for these "odd" rate conversions: 44.1kHz
-> 8000*N (for useful values of N)
> > In short, libsoxr is almost always faster than speex, and introduces much
> less distortions. Its passband frequency is slightly lower than speex though,
> and it can add a delay up to 20 ms in some cases.
>
> We generally don't need a zoo of resamplers. But you have definitely
> changed something important from an earlier submission by Peter Meerwald
> so that the CPU figure became much better. I guess, that's
> SOXR_LINEAR_PHASE - that's the only obvious change.
>
> Here are the facts, applicable to 44100 -> 48000 Hz resampling, as
> required by some sound cards when playing back CD rips:
>
> * Speex-float-5 never introduces audible distortions, even on
> specifically-crafted testcases at insane volume in an otherwise
> absolutely quiet room. So "even better quality" never makes sense -
> unless we are talking about non-human listeners.
> * Speex-float-1 (the current default) does not introduce audible
> distortions on music that you can buy in shops (or download), but does
> create audible artifacts on specially prepared test cases.
> * SOXR, even at its LQ setting (which, according to prior tests, is
> good enough) and with THIS set of patches, is indeed slightly faster
> than speex-float-1.
>
> Statements about distortion audibility are based on the model described
> in this scientific paper:
>
> http://www.mp3-tech.org/programmer/docs/6_Heusdens.pdf
>
> Distortions caused by removal of high frequencies, as well as any other
> distortions, would have been counted as audible if a person could detect
> that in an ABX test. The nuance here (with "auditory masking" as its
> scientific name) is that the ear becomes less sensitive to very high
> frequencies when there is something else in the air - and in typical
> music, this "something else" definitely exists in a sufficient quantity.
>
> Statement about speed is based on a direct CPU usage measurement by "top
> -d 10" on this CPU (forced to run at 933 MHz):
>
> Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz
>
> Baseline (48 kHz playback without resampling): 0.7% (0.1% on null sink)
> Speex-float-5 (44100 -> 48000 Hz): 5.6% (4.5% on null sink)
> Speex-float-3 (44100 -> 48000 Hz): 4.3% (3.1% on null sink)
> Speex-float-1 (44100 -> 48000 Hz): 2.5% (1.9% on null sink)
> Soxr-hq (44100 -> 48000 Hz): 2.4-3.3% (1.6% on null sink)
> Soxr-mq (44100 -> 48000 Hz): 2.5-3.1% (1.5% on null sink)
> Soxr-lq (44100 -> 48000 Hz): 2.1-3.4% (1.7% on null sink)
>
> One obvious thing here is that, while Speex-based resamplers yield
> stable performance on a real hardware sound card, Soxr CPU usage
> oscillates rather significantly. This effect does not exist on a null
> sink. Also, higher quality does not mean higher CPU usage, which is strange.
>
> I will recheck the quality separately later today, in order to verify
> that it is still as good as in the previous tests. Please don't merge
> the patches until this is done.
>
>
--
Peter Meerwald
+43-664-2444418 (mobile)
More information about the pulseaudio-discuss
mailing list