From 727fb305a82ffada6cb69f3f7cc38407e3256279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Thu, 17 Nov 2022 20:29:38 +0100 Subject: [PATCH] LibAudio: Allow resampling into existing buffer This alleviates some copying and we can implement existing APIs in terms of this. --- Userland/Libraries/LibAudio/Resampler.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibAudio/Resampler.h b/Userland/Libraries/LibAudio/Resampler.h index 9c4d04db91..86799d9197 100644 --- a/Userland/Libraries/LibAudio/Resampler.h +++ b/Userland/Libraries/LibAudio/Resampler.h @@ -55,15 +55,21 @@ public: ErrorOr> try_resample(Samples&& to_resample) { Vector resampled; - TRY(resampled.try_ensure_capacity(to_resample.size() * ceil_div(m_source, m_target))); + TRY(try_resample_into_end(resampled, forward(to_resample))); + return resampled; + } + + template Samples, size_t vector_inline_capacity = 0> + ErrorOr try_resample_into_end(Vector& destination, Samples&& to_resample) + { + TRY(destination.try_ensure_capacity(destination.size() + 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); + destination.unchecked_append(sample); } - - return resampled; + return {}; } template Samples>