shithub: cstory

Download patch

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
 					{