diff options
-rw-r--r-- | Userland/Libraries/LibAudio/Resampler.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Userland/Libraries/LibAudio/Resampler.h b/Userland/Libraries/LibAudio/Resampler.h index 718c9b3ac9..6ff633fb92 100644 --- a/Userland/Libraries/LibAudio/Resampler.h +++ b/Userland/Libraries/LibAudio/Resampler.h @@ -6,6 +6,7 @@ #pragma once +#include <AK/Concepts.h> #include <AK/Types.h> #include <AK/Vector.h> @@ -50,6 +51,21 @@ public: return false; } + template<ArrayLike<SampleType> Samples> + Vector<SampleType> resample(Samples&& to_resample) + { + Vector<SampleType> resampled; + resampled.ensure_capacity(to_resample.size() * ceil_div(m_source, m_target)); + for (auto sample : to_resample) { + process_sample(sample, sample); + + while (read_sample(sample, sample)) + resampled.unchecked_append(sample); + } + + return resampled; + } + void reset() { m_current_ratio = 0; |