ref: 81e3259535acda40d00505fd908b9dbed3b66ef4
parent: 1cf4200051217c229c3cc69cf71404f8a6886489
author: Gabriel Ravier <gabravier@gmail.com>
date: Sun Apr 5 19:04:59 EDT 2020
Backends/Audio/SoftwareMixer: Optimized `fmod(x, 1.0)` to `x - trunc(x)` Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
--- a/src/Backends/Audio/SoftwareMixer.cpp
+++ b/src/Backends/Audio/SoftwareMixer.cpp
@@ -1,6 +1,6 @@
#include "SoftwareMixer.h"
-#include <math.h>
+#include <cmath>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
@@ -154,7 +154,7 @@
const float sample2 = (sound->samples[(size_t)sound->position + 1] - 128.0f) / 128.0f;
// Perform linear interpolation
- const float interpolated_sample = sample1 + ((sample2 - sample1) * fmod(sound->position, 1.0));
+ const float interpolated_sample = sample1 + (sample2 - sample1) * (sound->position - std::trunc(sound->position));
*steam_pointer++ += interpolated_sample * sound->volume_l;
*steam_pointer++ += interpolated_sample * sound->volume_r;
@@ -165,7 +165,7 @@
{
if (sound->looping)
{
- sound->position = fmod(sound->position, (double)sound->frames);
+ sound->position = std::fmod(sound->position, (double)sound->frames);
}
else
{