
With the following change in how we send audio, the old Buffer type is not really needed anymore. However, moving WavLoader to the new system is a bit more involved and out of the scope of this PR. Therefore, we need to keep Buffer around, but to make it clear that it's the old buffer type which will be removed soon, we rename it to LegacyBuffer. Most of the users will be gone after the next commit anyways.
28 lines
846 B
C++
28 lines
846 B
C++
/*
|
|
* Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include "Resampler.h"
|
|
#include "Buffer.h"
|
|
#include "Sample.h"
|
|
|
|
namespace Audio {
|
|
|
|
ErrorOr<NonnullRefPtr<LegacyBuffer>> resample_buffer(ResampleHelper<double>& resampler, LegacyBuffer const& to_resample)
|
|
{
|
|
Vector<Sample> resampled;
|
|
resampled.ensure_capacity(to_resample.sample_count() * ceil_div(resampler.source(), resampler.target()));
|
|
for (size_t i = 0; i < static_cast<size_t>(to_resample.sample_count()); ++i) {
|
|
auto sample = to_resample.samples()[i];
|
|
resampler.process_sample(sample.left, sample.right);
|
|
|
|
while (resampler.read_sample(sample.left, sample.right))
|
|
resampled.append(sample);
|
|
}
|
|
|
|
return LegacyBuffer::create_with_samples(move(resampled));
|
|
}
|
|
|
|
}
|