MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / resample_mono_linear

Function resample_mono_linear

src/framework/audio/resampling.cpp:384–405  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

382}
383
384std::vector<float> resample_mono_linear(
385 const std::vector<float> & mono_samples,
386 int source_sample_rate_hz,
387 int target_sample_rate_hz) {
388 if (source_sample_rate_hz <= 0 || target_sample_rate_hz <= 0) {
389 throw std::runtime_error("linear mono resampling requires positive sample rates");
390 }
391 if (source_sample_rate_hz == target_sample_rate_hz || mono_samples.empty()) {
392 return mono_samples;
393 }
394 const double scale = static_cast<double>(target_sample_rate_hz) / static_cast<double>(source_sample_rate_hz);
395 const size_t output_samples = static_cast<size_t>(std::llround(static_cast<double>(mono_samples.size()) * scale));
396 std::vector<float> output(output_samples, 0.0F);
397 for (size_t i = 0; i < output_samples; ++i) {
398 const double src_pos = static_cast<double>(i) / scale;
399 const size_t left = static_cast<size_t>(std::floor(src_pos));
400 const size_t right = std::min(left + 1, mono_samples.size() - 1);
401 const float frac = static_cast<float>(src_pos - static_cast<double>(left));
402 output[i] = mono_samples[left] * (1.0F - frac) + mono_samples[right] * frac;
403 }
404 return output;
405}
406
407TorchaudioSincHannResampleOptions torchaudio_sinc_hann_float32_options() {
408 TorchaudioSincHannResampleOptions options;

Calls 3

minFunction · 0.85
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected