aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-10-30 17:23:49 +0100
committerMax Kellermann <max@duempel.org>2013-10-30 17:23:49 +0100
commit50dc98367ccb6155a15c440df5e32cf2b8b719ea (patch)
treebcdbaf115194ca473916f644c3492494280b8834
parentc4d3030d24d25f7fa8ea30fc108dc7df415fbc02 (diff)
downloadmpd-50dc98367ccb6155a15c440df5e32cf2b8b719ea.tar.gz
mpd-50dc98367ccb6155a15c440df5e32cf2b8b719ea.tar.xz
mpd-50dc98367ccb6155a15c440df5e32cf2b8b719ea.zip
PcmMix: use negative value instead of NaN for addition
Avoid NaN to allow -ffast-math.
-rw-r--r--src/PlayerThread.cxx4
-rw-r--r--src/pcm/PcmMix.cxx4
-rw-r--r--src/pcm/PcmMix.hxx5
3 files changed, 6 insertions, 7 deletions
diff --git a/src/PlayerThread.cxx b/src/PlayerThread.cxx
index cb45885d5..7105e48d3 100644
--- a/src/PlayerThread.cxx
+++ b/src/PlayerThread.cxx
@@ -36,8 +36,6 @@
#include "util/Domain.hxx"
#include "Log.hxx"
-#include <cmath>
-
#include <glib.h>
#include <string.h>
@@ -783,7 +781,7 @@ Player::PlayNextChunk()
chunk->mix_ratio = ((float)cross_fade_position)
/ cross_fade_chunks;
} else {
- chunk->mix_ratio = nan("");
+ chunk->mix_ratio = -1;
}
if (other_chunk->IsEmpty()) {
diff --git a/src/pcm/PcmMix.cxx b/src/pcm/PcmMix.cxx
index f4a02fc47..d3b0f3e2b 100644
--- a/src/pcm/PcmMix.cxx
+++ b/src/pcm/PcmMix.cxx
@@ -194,9 +194,9 @@ pcm_mix(void *buffer1, const void *buffer2, size_t size,
int vol1;
float s;
- /* portion1 is between 0.0 and 1.0 for crossfading, MixRamp uses NaN
+ /* portion1 is between 0.0 and 1.0 for crossfading, MixRamp uses -1
* to signal mixing rather than fading */
- if (isnan(portion1))
+ if (portion1 < 0)
return pcm_add(buffer1, buffer2, size, format);
s = sin(M_PI_2 * portion1);
diff --git a/src/pcm/PcmMix.hxx b/src/pcm/PcmMix.hxx
index 86d279fc1..637c88f8a 100644
--- a/src/pcm/PcmMix.hxx
+++ b/src/pcm/PcmMix.hxx
@@ -36,8 +36,9 @@
* @param size the size of both buffers in bytes
* @param format the sample format of both buffers
* @param portion1 a number between 0.0 and 1.0 specifying the portion
- * of the first buffer in the mix; portion2 = (1.0 - portion1). The value
- * NaN is used by the MixRamp code to specify that simple addition is required.
+ * of the first buffer in the mix; portion2 = (1.0 - portion1).
+ * Negative values are used by the MixRamp code to specify that simple
+ * addition is required.
*
* @return true on success, false if the format is not supported
*/