audioconvert: remove speex resampler

It's slower and less accurate then the native one.
This commit is contained in:
Wim Taymans 2019-08-07 13:06:14 +02:00
parent 447d1f94bf
commit 6f8268df40
5 changed files with 3 additions and 103 deletions

View file

@ -19,9 +19,6 @@ if get_option('spa-plugins')
if get_option('alsa')
alsa_dep = dependency('alsa')
endif
if get_option('audioconvert')
speexdsp_dep = dependency('speexdsp')
endif
if get_option('bluez5')
bluez_dep = dependency('bluez', version : '>= 4.101')
sbc_dep = dependency('sbc')

View file

@ -31,7 +31,6 @@
#include "resample.h"
#include "resample-native.h"
#include "resample-speex.h"
#define MAX_SAMPLES 4096
#define MAX_CHANNELS 11
@ -176,16 +175,6 @@ int main(int argc, char *argv[])
}
#endif
for (i = 0; i < SPA_N_ELEMENTS(in_rates); i++) {
spa_zero(r);
r.channels = 2;
r.i_rate = in_rates[i];
r.o_rate = out_rates[i];
impl_speex_init(&r);
run_test("speex", "def", &r);
resample_free(&r);
}
qsort(results, n_results, sizeof(struct stats), compare_func);
for (i = 0; i < n_results; i++) {

View file

@ -79,7 +79,7 @@ audioconvertlib = shared_library('spa-audioconvert',
audioconvert_sources,
c_args : simd_cargs,
include_directories : [spa_inc],
dependencies : [ speexdsp_dep, mathlib ],
dependencies : [ mathlib ],
link_with : simd_dependencies,
install : true,
install_dir : '@0@/spa/audioconvert/'.format(get_option('libdir')))
@ -119,7 +119,7 @@ benchmark_apps = [
foreach a : benchmark_apps
benchmark(a,
executable(a, a + '.c',
dependencies : [dl_lib, pthread_lib, mathlib, speexdsp_dep, ],
dependencies : [dl_lib, pthread_lib, mathlib, ],
include_directories : [spa_inc ],
c_args : [ simd_cargs, '-D_GNU_SOURCE' ],
link_with : simd_dependencies,

View file

@ -1,83 +0,0 @@
/* Spa
*
* Copyright © 2018 Wim Taymans
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#include <speex/speex_resampler.h>
static void impl_speex_free(struct resample *r)
{
if (r->data)
speex_resampler_destroy(r->data);
r->data = NULL;
}
static void impl_speex_update_rate(struct resample *r, double rate)
{
r->rate = rate;
speex_resampler_set_rate_frac(r->data,
r->i_rate / rate, r->o_rate, r->i_rate, r->o_rate);
}
static void impl_speex_process(struct resample *r,
const void *SPA_RESTRICT src[], uint32_t *in_len,
void * SPA_RESTRICT dst[], uint32_t *out_len)
{
uint32_t c, i, o;
if (r->i_rate == r->o_rate && r->rate == 1.0) {
o = i = SPA_MIN(*in_len, *out_len);
for (c = 0; c < r->channels; c++)
spa_memcpy(dst[c], src[c], o * sizeof(float));
}
else {
for (c = 0; c < r->channels; c++) {
i = *in_len;
o = *out_len;
speex_resampler_process_float(r->data, c, src[c], &i, dst[c], &o);
}
}
*in_len = i;
*out_len = o;
}
static void impl_speex_reset (struct resample *r)
{
}
static int impl_speex_init(struct resample *r)
{
int err;
r->rate = 1.0;
r->free = impl_speex_free;
r->update_rate = impl_speex_update_rate;
r->process = impl_speex_process;
r->reset = impl_speex_reset;
r->data = speex_resampler_init_frac(r->channels,
r->i_rate, r->o_rate, r->i_rate, r->o_rate,
SPEEX_RESAMPLER_QUALITY_DEFAULT, &err);
if (r->data == NULL)
return -ENOMEM;
return 0;
}

View file

@ -39,7 +39,6 @@
#include "resample.h"
#include "resample-speex.h"
#include "resample-peaks.h"
#include "resample-native.h"
@ -163,10 +162,8 @@ static int setup_convert(struct impl *this,
if (this->peaks)
err = impl_peaks_init(&this->resample);
else if (1)
err = impl_native_init(&this->resample);
else
err = impl_speex_init(&this->resample);
err = impl_native_init(&this->resample);
return err;
}