git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1753
fefdeb5f-60dc-0310-8127-
8f9354f1896f
+#ifdef HAVE_LIBSAMPLERATE
#include <pulse/xmalloc.h>
#include <pulse/util.h>
#include <pulse/xmalloc.h>
#include <pulse/util.h>
#include <liboil/liboilfuncs.h>
#include <liboil/liboil.h>
#include <liboil/liboilfuncs.h>
#include <liboil/liboil.h>
unsigned i_counter;
} trivial;
unsigned i_counter;
} trivial;
+#ifdef HAVE_LIBSAMPLERATE
struct { /* data specific to libsamplerate */
SRC_STATE *state;
} src;
struct { /* data specific to libsamplerate */
SRC_STATE *state;
} src;
struct { /* data specific to speex */
SpeexResamplerState* state;
struct { /* data specific to speex */
SpeexResamplerState* state;
-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);
static int trivial_init(pa_resampler*r);
static int speex_init(pa_resampler*r);
static int ffmpeg_init(pa_resampler*r);
static void calc_map_table(pa_resampler *r);
static int (* const init_table[])(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,
[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,
[PA_RESAMPLER_TRIVIAL] = trivial_init,
[PA_RESAMPLER_SPEEX_FLOAT_BASE+0] = speex_init,
[PA_RESAMPLER_SPEEX_FLOAT_BASE+1] = speex_init,
/*** libsamplerate based implementation ***/
/*** 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;
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;
/*** speex based implementation ***/
/*** speex based implementation ***/
-#include <samplerate.h>
-
#include <pulse/sample.h>
#include <pulse/channelmap.h>
#include <pulsecore/memblock.h>
#include <pulse/sample.h>
#include <pulse/channelmap.h>
#include <pulsecore/memblock.h>
typedef enum pa_resample_method {
PA_RESAMPLER_INVALID = -1,
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,
PA_RESAMPLER_TRIVIAL,
PA_RESAMPLER_SPEEX_FLOAT_BASE,
PA_RESAMPLER_SPEEX_FLOAT_MAX = PA_RESAMPLER_SPEEX_FLOAT_BASE + 10,