From 50dc98367ccb6155a15c440df5e32cf2b8b719ea Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 30 Oct 2013 17:23:49 +0100 Subject: PcmMix: use negative value instead of NaN for addition Avoid NaN to allow -ffast-math. --- src/PlayerThread.cxx | 4 +--- src/pcm/PcmMix.cxx | 4 ++-- src/pcm/PcmMix.hxx | 5 +++-- 3 files changed, 6 insertions(+), 7 deletions(-) (limited to 'src') 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 - #include #include @@ -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 */ -- cgit v1.2.3