[pulseaudio-discuss] [PATCH 0/4] Add support for libsoxr resampler

Andrey Semashev andrey.semashev at gmail.com
Tue Nov 11 13:39:24 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.

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.

Thanks.

[1]: https://sourceforge.net/projects/soxr/
[2]: http://sox.sourceforge.net/Main/HomePage

Andrey Semashev (4):
  Added libsoxr resampler backend.
  Enabled libsoxr resampler backend.
  Added libsoxr detection and optional build of soxr resampler backend.
  Added documentation for soxr resampling methods.

 configure.ac                   |  17 +++++
 man/pulse-daemon.conf.5.xml.in |  12 ++-
 src/Makefile.am                |   6 ++
 src/pulsecore/resampler.c      |  32 +++++++-
 src/pulsecore/resampler.h      |   5 ++
 src/pulsecore/resampler/soxr.c | 168 +++++++++++++++++++++++++++++++++++++++++
 6 files changed, 235 insertions(+), 5 deletions(-)
 create mode 100644 src/pulsecore/resampler/soxr.c

-- 
2.1.0



More information about the pulseaudio-discuss mailing list