diff --git a/spa/plugins/audioconvert/benchmark-resample.c b/spa/plugins/audioconvert/benchmark-resample.c index 0c5085da1..8797d7f98 100644 --- a/spa/plugins/audioconvert/benchmark-resample.c +++ b/spa/plugins/audioconvert/benchmark-resample.c @@ -134,6 +134,7 @@ int main(int argc, char *argv[]) r.cpu_flags = 0; r.i_rate = in_rates[i]; r.o_rate = out_rates[i]; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); run_test("native", "c", &r); resample_free(&r); @@ -145,6 +146,7 @@ int main(int argc, char *argv[]) r.cpu_flags = SPA_CPU_FLAG_SSE; r.i_rate = in_rates[i]; r.o_rate = out_rates[i]; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); run_test("native", "sse", &r); resample_free(&r); @@ -157,6 +159,7 @@ int main(int argc, char *argv[]) r.cpu_flags = SPA_CPU_FLAG_SSSE3 | SPA_CPU_FLAG_SLOW_UNALIGNED; r.i_rate = in_rates[i]; r.o_rate = out_rates[i]; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); run_test("native", "ssse3", &r); resample_free(&r); @@ -169,6 +172,7 @@ int main(int argc, char *argv[]) r.cpu_flags = SPA_CPU_FLAG_AVX | SPA_CPU_FLAG_FMA3; r.i_rate = in_rates[i]; r.o_rate = out_rates[i]; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); run_test("native", "avx", &r); resample_free(&r); diff --git a/spa/plugins/audioconvert/resample-native.h b/spa/plugins/audioconvert/resample-native.h index 02a8d41be..c4edaeeca 100644 --- a/spa/plugins/audioconvert/resample-native.h +++ b/spa/plugins/audioconvert/resample-native.h @@ -29,8 +29,6 @@ struct quality { double cutoff; }; -#define DEFAULT_QUALITY 4 - static const struct quality blackman_qualities[] = { { 8, 0.5, }, { 16, 0.6, }, @@ -256,7 +254,7 @@ static uint32_t impl_native_delay (struct resample *r) static int impl_native_init(struct resample *r) { struct native_data *d; - const struct quality *q = &blackman_qualities[DEFAULT_QUALITY]; + const struct quality *q = &blackman_qualities[r->quality]; double scale; uint32_t c, n_taps, n_phases, filter_size, in_rate, out_rate, gcd, filter_stride; uint32_t history_stride, history_size, oversample; diff --git a/spa/plugins/audioconvert/resample.c b/spa/plugins/audioconvert/resample.c index 758653337..3e3996702 100644 --- a/spa/plugins/audioconvert/resample.c +++ b/spa/plugins/audioconvert/resample.c @@ -161,6 +161,7 @@ static int setup_convert(struct impl *this, this->resample.i_rate = src_info->info.raw.rate; this->resample.o_rate = dst_info->info.raw.rate; this->resample.log = this->log; + this->resample.quality = RESAMPLE_DEFAULT_QUALITY; if (this->peaks) err = impl_peaks_init(&this->resample); diff --git a/spa/plugins/audioconvert/resample.h b/spa/plugins/audioconvert/resample.h index 06a855823..5eaea9fa1 100644 --- a/spa/plugins/audioconvert/resample.h +++ b/spa/plugins/audioconvert/resample.h @@ -28,6 +28,8 @@ #include #include +#define RESAMPLE_DEFAULT_QUALITY 4 + struct resample { uint32_t cpu_flags; uint32_t channels; @@ -35,6 +37,7 @@ struct resample { uint32_t o_rate; struct spa_log *log; double rate; + int quality; void (*free) (struct resample *r); void (*update_rate) (struct resample *r, double rate); diff --git a/spa/plugins/audioconvert/test-resample.c b/spa/plugins/audioconvert/test-resample.c index 52c14d973..60231dbdc 100644 --- a/spa/plugins/audioconvert/test-resample.c +++ b/spa/plugins/audioconvert/test-resample.c @@ -72,6 +72,7 @@ static void test_native(void) r.channels = 1; r.i_rate = 44100; r.o_rate = 44100; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); feed_1(&r); @@ -81,6 +82,7 @@ static void test_native(void) r.channels = 1; r.i_rate = 44100; r.o_rate = 48000; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); feed_1(&r); @@ -123,6 +125,7 @@ static void test_in_len(void) r.channels = 1; r.i_rate = 32000; r.o_rate = 48000; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); pull_blocks(&r, 1024); @@ -132,6 +135,7 @@ static void test_in_len(void) r.channels = 1; r.i_rate = 44100; r.o_rate = 48000; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); pull_blocks(&r, 1024); @@ -141,6 +145,7 @@ static void test_in_len(void) r.channels = 1; r.i_rate = 48000; r.o_rate = 44100; + r.quality = RESAMPLE_DEFAULT_QUALITY; impl_native_init(&r); pull_blocks(&r, 1024);