From 5c6cb90b62eddfdd54cb3ddf967f4d1ea216f862 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 12 Nov 2022 19:31:52 +0000 Subject: [PATCH] Use fill_n in sound resample replicateChannel Prefer a standard library function over an open-coded loop. --- similar/arch/sdl/digi_mixer.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/similar/arch/sdl/digi_mixer.cpp b/similar/arch/sdl/digi_mixer.cpp index dec9127dc..38ec2a3e2 100644 --- a/similar/arch/sdl/digi_mixer.cpp +++ b/similar/arch/sdl/digi_mixer.cpp @@ -218,7 +218,7 @@ static std::unique_ptr filter_fir(const std::span sign return output; } -static std::unique_ptr upsample(const std::span input, const std::size_t upsampledLen, const int factor) +static std::unique_ptr upsample(const std::span input, const std::size_t upsampledLen, const std::size_t factor) { /* Caution: `output` is sparsely initialized, so the value-initialization * from `make_unique` is necessary. This site cannot be converted to @@ -233,20 +233,16 @@ static std::unique_ptr upsample(const std::span input, return output; } -static void replicateChannel(const std::span input, int16_t *const output, int chFactor) +static void replicateChannel(const std::span input, int16_t *const output, const std::size_t chFactor) { for (const auto ii : xrange(input.size())) { // Duplicate and interleave as many channels as needed - for(int jj = 0; jj < chFactor; jj++) - { - int idx = (ii*chFactor) + jj; - output[idx] = input[ii]; - } + std::fill_n(std::next(output, ii * chFactor), chFactor, input[ii]); } } -static void convert_audio(const std::span input, int16_t *const output, int upFactor, int chFactor) +static void convert_audio(const std::span input, int16_t *const output, const int upFactor, const std::size_t chFactor) { // First upsample const auto upsampledLen = input.size() * upFactor;