12.11.2014 15:59, Andrey Semashev wrote:
On Wed, Nov 12, 2014 at 12:26 PM, Alexander E. Patrakov
<patra...@gmail.com> wrote:

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.

SOXR_LINEAR_PHASE is 0, I added it mostly for documentation purpose,
in case if someone wants to add more modes with different phase
response presets. There is also another difference in that I
explicitly specify interleaved sample formats, although it is
numerically equivalent to those without the _I suffix.

I think, the essential difference is quality. Peter's patches use
SOXR_QQ, while mine use other presets. I didn't add QQ because I don't
see much point in this mode.

Indeed, QQ is just cubic interpolation, worse than speex-float-0. However, I have tried to change that to other values in the old patches, and the result was a good resampler that ate a lot more CPU than speex-float-5. Note, however, that the test was done with a Haswell (year 2013) earlier and with an Arrandale (year 2010) now.


I also noticed unusual relation between quality and CPU consumption.
You can see that in my results LQ actually appears the most consuming
in some cases. I don't have a good explanation for this, my guess is
that this could be related to different math precision and
optimization. I think the library uses different precision for math on
different quality levels (i.e. double in VHQ, float in HQ, etc.), and
it does have some optimizations for SSE. It's possible that LQ path is
not as optimized. One would probably have to inspect libsoxr code to
tell for sure.

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.

Thanks for the reference and all the information.

I didn't do a blind test to detect the audible difference, all I can
say is my own impressions. I have a locally patched PulseAudio 4.0 and
I'm using soxr-vhq preset resampling everything to 96kHz (I have
records in 96kHz that I don't want to resample). The difference with
speex-float-5, which I used previously, is indeed rather subtle. I'd
say, the sound is a bit more clear, instrument separation is better,
especially in bass. But that's all subjective, of course, so it should
be taken with a big grain of salt. In any case, soxr-vhq is clearly
faster than speex-float-5, so at the very least it's a performance
improvement for me.

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.

Thanks, I'd be interested in the results.

Will do that after reviewing two work-related (non-audio) patchsets.

--
Alexander E. Patrakov
_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to