From 60f767713227b5405b855e6e6e2a0475ecd96bcc Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 4 Aug 2023 20:07:44 +1000 Subject: Do our own resampling --- src/audio/include/resample.hpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/audio/include/resample.hpp (limited to 'src/audio/include/resample.hpp') diff --git a/src/audio/include/resample.hpp b/src/audio/include/resample.hpp new file mode 100644 index 00000000..d7933470 --- /dev/null +++ b/src/audio/include/resample.hpp @@ -0,0 +1,41 @@ +#pragma once + +#include +#include + +#include "span.hpp" + +#include "sample.hpp" + +namespace audio { + +class Channel; + +class Resampler { + public: + Resampler(uint32_t source_sample_rate, + uint32_t target_sample_rate, + uint8_t num_channels); + + ~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, + cpp::span output, + bool end_of_data) -> std::pair; + + private: + auto ApplyDither(cpp::span) -> void; + + uint32_t source_sample_rate_; + uint32_t target_sample_rate_; + uint32_t factor_; + + uint8_t num_channels_; + std::vector channels_; +}; + +} // namespace audio \ No newline at end of file -- cgit v1.2.3