From 2e8244b4bcaae3f7b1cb45ceb503d3b13f539d25 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 2 Sep 2007 21:20:57 +0000 Subject: [PATCH] Allow compilation without libsamplerate; based on patch from Marc-Andre Lureau; re #125 git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1753 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/pulsecore/core-util.c | 2 ++ src/pulsecore/resampler.c | 15 ++++++++++++++- src/pulsecore/resampler.h | 12 +++++------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index d231b658..67d33e7c 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -78,7 +78,9 @@ #include #endif +#ifdef HAVE_LIBSAMPLERATE #include +#endif #include #include diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c index d98d482d..3e14c0e7 100644 --- a/src/pulsecore/resampler.c +++ b/src/pulsecore/resampler.c @@ -27,7 +27,9 @@ #include +#if HAVE_LIBSAMPLERATE #include +#endif #include #include @@ -70,9 +72,11 @@ struct pa_resampler { unsigned i_counter; } trivial; +#ifdef HAVE_LIBSAMPLERATE struct { /* data specific to libsamplerate */ SRC_STATE *state; } src; +#endif struct { /* data specific to speex */ SpeexResamplerState* state; @@ -84,7 +88,6 @@ struct pa_resampler { } ffmpeg; }; -static int libsamplerate_init(pa_resampler*r); static int trivial_init(pa_resampler*r); static int speex_init(pa_resampler*r); static int ffmpeg_init(pa_resampler*r); @@ -92,11 +95,19 @@ static int ffmpeg_init(pa_resampler*r); static void calc_map_table(pa_resampler *r); static int (* const init_table[])(pa_resampler*r) = { +#ifdef HAVE_LIBSAMPLERATE [PA_RESAMPLER_SRC_SINC_BEST_QUALITY] = libsamplerate_init, [PA_RESAMPLER_SRC_SINC_MEDIUM_QUALITY] = libsamplerate_init, [PA_RESAMPLER_SRC_SINC_FASTEST] = libsamplerate_init, [PA_RESAMPLER_SRC_ZERO_ORDER_HOLD] = libsamplerate_init, [PA_RESAMPLER_SRC_LINEAR] = libsamplerate_init, +#else + [PA_RESAMPLER_SRC_SINC_BEST_QUALITY] = NULL, + [PA_RESAMPLER_SRC_SINC_MEDIUM_QUALITY] = NULL, + [PA_RESAMPLER_SRC_SINC_FASTEST] = NULL, + [PA_RESAMPLER_SRC_ZERO_ORDER_HOLD] = NULL, + [PA_RESAMPLER_SRC_LINEAR] = NULL, +#endif [PA_RESAMPLER_TRIVIAL] = trivial_init, [PA_RESAMPLER_SPEEX_FLOAT_BASE+0] = speex_init, [PA_RESAMPLER_SPEEX_FLOAT_BASE+1] = speex_init, @@ -622,6 +633,7 @@ void pa_resampler_run(pa_resampler *r, const pa_memchunk *in, pa_memchunk *out) /*** libsamplerate based implementation ***/ +#ifdef HAVE_LIBSAMPLERATE static void libsamplerate_resample(pa_resampler *r, const pa_memchunk *input, unsigned in_n_frames, pa_memchunk *output, unsigned *out_n_frames) { SRC_DATA data; @@ -677,6 +689,7 @@ static int libsamplerate_init(pa_resampler *r) { return 0; } +#endif /*** speex based implementation ***/ diff --git a/src/pulsecore/resampler.h b/src/pulsecore/resampler.h index 2a943e3e..711f9c62 100644 --- a/src/pulsecore/resampler.h +++ b/src/pulsecore/resampler.h @@ -24,8 +24,6 @@ USA. ***/ -#include - #include #include #include @@ -35,11 +33,11 @@ typedef struct pa_resampler pa_resampler; typedef enum pa_resample_method { PA_RESAMPLER_INVALID = -1, - PA_RESAMPLER_SRC_SINC_BEST_QUALITY = SRC_SINC_BEST_QUALITY, - PA_RESAMPLER_SRC_SINC_MEDIUM_QUALITY = SRC_SINC_MEDIUM_QUALITY, - PA_RESAMPLER_SRC_SINC_FASTEST = SRC_SINC_FASTEST, - PA_RESAMPLER_SRC_ZERO_ORDER_HOLD = SRC_ZERO_ORDER_HOLD, - PA_RESAMPLER_SRC_LINEAR = SRC_LINEAR, + PA_RESAMPLER_SRC_SINC_BEST_QUALITY = 0, /* = SRC_SINC_BEST_QUALITY */ + PA_RESAMPLER_SRC_SINC_MEDIUM_QUALITY = 1, /* = SRC_SINC_MEDIUM_QUALITY */ + PA_RESAMPLER_SRC_SINC_FASTEST = 2, /* = SRC_SINC_FASTEST */ + PA_RESAMPLER_SRC_ZERO_ORDER_HOLD = 3, /* = SRC_ZERO_ORDER_HOLD */ + PA_RESAMPLER_SRC_LINEAR = 4, /* = SRC_LINEAR */ PA_RESAMPLER_TRIVIAL, PA_RESAMPLER_SPEEX_FLOAT_BASE, PA_RESAMPLER_SPEEX_FLOAT_MAX = PA_RESAMPLER_SPEEX_FLOAT_BASE + 10, -- 2.39.2