From 958160aa545e3d91b2a4f1a367817e73d298e8a9 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 10 Aug 2023 19:12:38 +1000 Subject: Use the libspeexdsp resampler AFAICT it runs a little slower? but it's fixed point, and has much better understood audio characteristics. --- src/audio/include/resample.hpp | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'src/audio/include/resample.hpp') diff --git a/src/audio/include/resample.hpp b/src/audio/include/resample.hpp index 3855415a..7b114f59 100644 --- a/src/audio/include/resample.hpp +++ b/src/audio/include/resample.hpp @@ -4,6 +4,7 @@ #include #include "span.hpp" +#include "speex/speex_resampler.h" #include "sample.hpp" @@ -17,28 +18,14 @@ class Resampler { ~Resampler(); - auto source_sample_rate() -> uint32_t { return source_sample_rate_; } - auto target_sample_rate() -> uint32_t { return target_sample_rate_; } - auto channels() -> uint_fast8_t { return num_channels_; } - - auto Process(cpp::span input, + auto Process(cpp::span input, cpp::span output, bool end_of_data) -> std::pair; private: - auto Subsample(int channel) -> float; - auto ApplyFilter(cpp::span filter, cpp::span input) -> float; - - uint32_t source_sample_rate_; - uint32_t target_sample_rate_; - float factor_; + int err_; + SpeexResamplerState* resampler_; uint8_t num_channels_; - - std::vector channel_buffers_; - size_t channel_buffer_size_; - - float output_offset_; - int32_t input_index_; }; } // namespace audio \ No newline at end of file -- cgit v1.2.3