mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-09 13:29:59 -05:00
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.
This commit is contained in:
parent
4bda712ee1
commit
8fe9847706
1 changed files with 8 additions and 7 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue