Add support for external libspeexdsp
This commit is contained in:
38
meson.build
38
meson.build
@@ -113,6 +113,7 @@ endforeach
|
|||||||
|
|
||||||
fftw3_dep = dependency('fftw3', version: '>= 3.0.0', required: false)
|
fftw3_dep = dependency('fftw3', version: '>= 3.0.0', required: false)
|
||||||
samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false)
|
samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false)
|
||||||
|
speexdsp_dep = dependency('speexdsp', version: '>= 1.0.0', required: false)
|
||||||
sndfile_dep = dependency('sndfile', version: '>= 1.0.16', required: false)
|
sndfile_dep = dependency('sndfile', version: '>= 1.0.16', required: false)
|
||||||
vamp_dep = dependency('vamp-sdk', version: '>= 2.9', required: false)
|
vamp_dep = dependency('vamp-sdk', version: '>= 2.9', required: false)
|
||||||
boost_unit_test_dep = dependency('boost', modules: ['unit_test_framework'], version: '>= 1.73', required: false)
|
boost_unit_test_dep = dependency('boost', modules: ['unit_test_framework'], version: '>= 1.73', required: false)
|
||||||
@@ -177,17 +178,16 @@ elif fft == 'kissfft'
|
|||||||
general_include_dirs += 'src/ext/kissfft'
|
general_include_dirs += 'src/ext/kissfft'
|
||||||
|
|
||||||
elif fft == 'fftw'
|
elif fft == 'fftw'
|
||||||
if fftw3_dep.found()
|
if not fftw3_dep.found()
|
||||||
config_summary += { 'FFT': 'FFTW' }
|
fftw3_dep = cpp.find_library('fftw3',
|
||||||
message('For FFT: using FFTW')
|
|
||||||
pkgconfig_requirements += fftw3_dep
|
|
||||||
else
|
|
||||||
fftw_dep = cpp.find_library('fftw3',
|
|
||||||
dirs: get_option('extra_lib_dirs'),
|
dirs: get_option('extra_lib_dirs'),
|
||||||
has_headers: ['fftw3.h'],
|
has_headers: ['fftw3.h'],
|
||||||
header_args: extra_include_args,
|
header_args: extra_include_args,
|
||||||
required: true)
|
required: true)
|
||||||
endif
|
endif
|
||||||
|
config_summary += { 'FFT': 'FFTW' }
|
||||||
|
message('For FFT: using FFTW')
|
||||||
|
pkgconfig_requirements += fftw3_dep
|
||||||
feature_dependencies += fftw3_dep
|
feature_dependencies += fftw3_dep
|
||||||
feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY']
|
feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY']
|
||||||
|
|
||||||
@@ -223,27 +223,41 @@ if resampler == 'builtin'
|
|||||||
feature_defines += ['-DUSE_BQRESAMPLER']
|
feature_defines += ['-DUSE_BQRESAMPLER']
|
||||||
|
|
||||||
elif resampler == 'libsamplerate'
|
elif resampler == 'libsamplerate'
|
||||||
if samplerate_dep.found()
|
if not samplerate_dep.found()
|
||||||
config_summary += { 'Resampler': 'libsamplerate' }
|
|
||||||
message('For resampler: using libsamplerate')
|
|
||||||
pkgconfig_requirements += samplerate_dep
|
|
||||||
else
|
|
||||||
samplerate_dep = cpp.find_library('samplerate',
|
samplerate_dep = cpp.find_library('samplerate',
|
||||||
dirs: get_option('extra_lib_dirs'),
|
dirs: get_option('extra_lib_dirs'),
|
||||||
has_headers: ['samplerate.h'],
|
has_headers: ['samplerate.h'],
|
||||||
header_args: extra_include_args,
|
header_args: extra_include_args,
|
||||||
required: true)
|
required: true)
|
||||||
endif
|
endif
|
||||||
|
config_summary += { 'Resampler': 'libsamplerate' }
|
||||||
|
message('For resampler: using libsamplerate')
|
||||||
feature_dependencies += samplerate_dep
|
feature_dependencies += samplerate_dep
|
||||||
|
pkgconfig_requirements += samplerate_dep
|
||||||
feature_defines += ['-DHAVE_LIBSAMPLERATE']
|
feature_defines += ['-DHAVE_LIBSAMPLERATE']
|
||||||
|
|
||||||
elif resampler == 'speex'
|
elif resampler == 'speex'
|
||||||
config_summary += { 'Resampler': 'Speex' }
|
config_summary += { 'Resampler': 'Speex' }
|
||||||
message('For resampler: using Speex')
|
message('For resampler: using bundled Speex')
|
||||||
message('(consider libsamplerate if time-varying pitch shift is required)')
|
message('(consider libsamplerate if time-varying pitch shift is required)')
|
||||||
feature_sources += ['src/ext/speex/resample.c']
|
feature_sources += ['src/ext/speex/resample.c']
|
||||||
feature_defines += ['-DUSE_SPEEX']
|
feature_defines += ['-DUSE_SPEEX']
|
||||||
|
|
||||||
|
elif resampler == 'libspeexdsp'
|
||||||
|
if not speexdsp_dep.found()
|
||||||
|
speexdsp_dep = cpp.find_library('speexdsp',
|
||||||
|
dirs: get_option('extra_lib_dirs'),
|
||||||
|
has_headers: ['speex/speex_resampler.h'],
|
||||||
|
header_args: extra_include_args,
|
||||||
|
required: true)
|
||||||
|
endif
|
||||||
|
config_summary += { 'Resampler': 'libspeexdsp' }
|
||||||
|
message('For resampler: using Speex DSP library')
|
||||||
|
message('(consider libsamplerate if time-varying pitch shift is required)')
|
||||||
|
feature_dependencies += speexdsp_dep
|
||||||
|
pkgconfig_requirements += speexdsp_dep
|
||||||
|
feature_defines += ['-DHAVE_LIBSPEEXDSP']
|
||||||
|
|
||||||
elif resampler == 'ipp'
|
elif resampler == 'ipp'
|
||||||
if ipp_path != ''
|
if ipp_path != ''
|
||||||
config_summary += { 'Resampler': 'Intel IPP' }
|
config_summary += { 'Resampler': 'Intel IPP' }
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ option('fft',
|
|||||||
|
|
||||||
option('resampler',
|
option('resampler',
|
||||||
type: 'combo',
|
type: 'combo',
|
||||||
choices: ['auto', 'builtin', 'libsamplerate', 'speex', 'ipp'],
|
choices: ['auto', 'builtin', 'libsamplerate', 'speex', 'libspeexdsp', 'ipp'],
|
||||||
value: 'auto',
|
value: 'auto',
|
||||||
description: 'Resampler library to use. The default (auto) simply uses the builtin implementation.')
|
description: 'Resampler library to use. The default (auto) simply uses the builtin implementation.')
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,10 @@
|
|||||||
|
|
||||||
#ifdef USE_SPEEX
|
#ifdef USE_SPEEX
|
||||||
#include "../ext/speex/speex_resampler.h"
|
#include "../ext/speex/speex_resampler.h"
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_LIBSPEEXDSP
|
||||||
|
#include <speex/speex_resampler.h>
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_BQRESAMPLER
|
#ifdef USE_BQRESAMPLER
|
||||||
@@ -64,6 +68,7 @@
|
|||||||
#ifndef HAVE_IPP
|
#ifndef HAVE_IPP
|
||||||
#ifndef HAVE_LIBSAMPLERATE
|
#ifndef HAVE_LIBSAMPLERATE
|
||||||
#ifndef HAVE_LIBRESAMPLE
|
#ifndef HAVE_LIBRESAMPLE
|
||||||
|
#ifndef HAVE_LIBSPEEXDSP
|
||||||
#ifndef USE_SPEEX
|
#ifndef USE_SPEEX
|
||||||
#ifndef USE_BQRESAMPLER
|
#ifndef USE_BQRESAMPLER
|
||||||
#error No resampler implementation selected!
|
#error No resampler implementation selected!
|
||||||
@@ -72,6 +77,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define BQ_R__ R__
|
#define BQ_R__ R__
|
||||||
|
|
||||||
@@ -1106,7 +1112,7 @@ D_BQResampler::reset()
|
|||||||
|
|
||||||
#endif /* USE_BQRESAMPLER */
|
#endif /* USE_BQRESAMPLER */
|
||||||
|
|
||||||
#ifdef USE_SPEEX
|
#if defined(USE_SPEEX) || defined(HAVE_LIBSPEEXDSP)
|
||||||
|
|
||||||
class D_Speex : public Resampler::Impl
|
class D_Speex : public Resampler::Impl
|
||||||
{
|
{
|
||||||
@@ -1404,6 +1410,9 @@ Resampler::Resampler(Resampler::Parameters params, int channels)
|
|||||||
#ifdef USE_SPEEX
|
#ifdef USE_SPEEX
|
||||||
m_method = 2;
|
m_method = 2;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_LIBSPEEXDSP
|
||||||
|
m_method = 2;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_LIBRESAMPLE
|
#ifdef HAVE_LIBRESAMPLE
|
||||||
m_method = 3;
|
m_method = 3;
|
||||||
#endif
|
#endif
|
||||||
@@ -1425,6 +1434,9 @@ Resampler::Resampler(Resampler::Parameters params, int channels)
|
|||||||
#ifdef USE_SPEEX
|
#ifdef USE_SPEEX
|
||||||
m_method = 2;
|
m_method = 2;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_LIBSPEEXDSP
|
||||||
|
m_method = 2;
|
||||||
|
#endif
|
||||||
#ifdef USE_BQRESAMPLER
|
#ifdef USE_BQRESAMPLER
|
||||||
m_method = 4;
|
m_method = 4;
|
||||||
#endif
|
#endif
|
||||||
@@ -1443,6 +1455,9 @@ Resampler::Resampler(Resampler::Parameters params, int channels)
|
|||||||
#ifdef USE_SPEEX
|
#ifdef USE_SPEEX
|
||||||
m_method = 2;
|
m_method = 2;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_LIBSPEEXDSP
|
||||||
|
m_method = 2;
|
||||||
|
#endif
|
||||||
#ifdef USE_BQRESAMPLER
|
#ifdef USE_BQRESAMPLER
|
||||||
m_method = 4;
|
m_method = 4;
|
||||||
#endif
|
#endif
|
||||||
@@ -1483,7 +1498,7 @@ Resampler::Resampler(Resampler::Parameters params, int channels)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
#ifdef USE_SPEEX
|
#if defined(USE_SPEEX) || defined(HAVE_LIBSPEEXDSP)
|
||||||
d = new Resamplers::D_Speex
|
d = new Resamplers::D_Speex
|
||||||
(params.quality, params.ratioChange,
|
(params.quality, params.ratioChange,
|
||||||
channels,
|
channels,
|
||||||
|
|||||||
Reference in New Issue
Block a user