diff options
Diffstat (limited to 'src/pcm_resample.c')
-rw-r--r-- | src/pcm_resample.c | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/src/pcm_resample.c b/src/pcm_resample.c index f27bf4f0c..69fda79e4 100644 --- a/src/pcm_resample.c +++ b/src/pcm_resample.c @@ -20,15 +20,30 @@ #include "pcm_resample_internal.h" #include "config.h" +#ifdef HAVE_LIBSAMPLERATE +#include "conf.h" +#endif + #include <string.h> +#ifdef HAVE_LIBSAMPLERATE +static bool +pcm_resample_lsr_enabled(void) +{ + return strcmp(config_get_string(CONF_SAMPLERATE_CONVERTER, ""), + "internal") == 0; +} +#endif + void pcm_resample_init(struct pcm_resample_state *state) { memset(state, 0, sizeof(*state)); #ifdef HAVE_LIBSAMPLERATE - pcm_buffer_init(&state->in); - pcm_buffer_init(&state->out); + if (pcm_resample_lsr_enabled()) { + pcm_buffer_init(&state->in); + pcm_buffer_init(&state->out); + } #endif pcm_buffer_init(&state->buffer); @@ -37,10 +52,11 @@ void pcm_resample_init(struct pcm_resample_state *state) void pcm_resample_deinit(struct pcm_resample_state *state) { #ifdef HAVE_LIBSAMPLERATE - pcm_resample_lsr_deinit(state); -#else - pcm_resample_fallback_deinit(state); + if (pcm_resample_lsr_enabled()) + pcm_resample_lsr_deinit(state); + else #endif + pcm_resample_fallback_deinit(state); } const int16_t * @@ -52,14 +68,15 @@ pcm_resample_16(struct pcm_resample_state *state, size_t *dest_size_r) { #ifdef HAVE_LIBSAMPLERATE - return pcm_resample_lsr_16(state, channels, - src_rate, src_buffer, src_size, - dest_rate, dest_size_r); -#else + if (pcm_resample_lsr_enabled()) + return pcm_resample_lsr_16(state, channels, + src_rate, src_buffer, src_size, + dest_rate, dest_size_r); +#endif + return pcm_resample_fallback_16(state, channels, src_rate, src_buffer, src_size, dest_rate, dest_size_r); -#endif } const int32_t * @@ -71,12 +88,13 @@ pcm_resample_32(struct pcm_resample_state *state, size_t *dest_size_r) { #ifdef HAVE_LIBSAMPLERATE - return pcm_resample_lsr_32(state, channels, - src_rate, src_buffer, src_size, - dest_rate, dest_size_r); -#else + if (pcm_resample_lsr_enabled()) + return pcm_resample_lsr_32(state, channels, + src_rate, src_buffer, src_size, + dest_rate, dest_size_r); +#endif + return pcm_resample_fallback_32(state, channels, src_rate, src_buffer, src_size, dest_rate, dest_size_r); -#endif } |