From: Andrey Semashev Date: Sat, 31 Oct 2015 15:59:46 +0000 (+0300) Subject: soxr: Use soxr_clear() if libsoxr version is 0.1.2 or later. X-Git-Tag: v7.99.1~50 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8fe984770681ba4a63f0dd4a114076f0fc7230f0;p=platform%2Fupstream%2Fpulseaudio.git soxr: Use soxr_clear() if libsoxr version is 0.1.2 or later. The 0.1.2 version of libsoxr fixes soxr_process() crash after soxr_clear() is used, so check the library version at compile time and use soxr_clear() if possible. --- diff --git a/src/pulsecore/resampler/soxr.c b/src/pulsecore/resampler/soxr.c index b5f00071b..b1b2e19dc 100644 --- a/src/pulsecore/resampler/soxr.c +++ b/src/pulsecore/resampler/soxr.c @@ -64,17 +64,17 @@ static void resampler_soxr_free(pa_resampler *r) { } static void resampler_soxr_reset(pa_resampler *r) { +#if SOXR_THIS_VERSION >= SOXR_VERSION(0, 1, 2) + pa_assert(r); + + soxr_clear(r->impl.data); +#else + /* With libsoxr prior to 0.1.2 soxr_clear() makes soxr_process() crash afterwards, + * so don't use this function and re-create the context instead. */ soxr_t old_state; pa_assert(r); - /* - * soxr_clear() makes soxr_process() crash afterwards, - * so don't use this function until libsoxr is fixed. - * - * soxr_clear(r->impl.data); - */ - old_state = r->impl.data; r->impl.data = NULL; @@ -85,6 +85,7 @@ static void resampler_soxr_reset(pa_resampler *r) { r->impl.data = old_state; pa_log_error("Failed to reset libsoxr context"); } +#endif } static void resampler_soxr_update_rates(pa_resampler *r) {