From c4d3030d24d25f7fa8ea30fc108dc7df415fbc02 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 30 Oct 2013 17:10:38 +0100 Subject: CrossFade: eliminate NaN from mixramp_interpolate() Use a boolean flag instead. --- src/CrossFade.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/CrossFade.cxx') diff --git a/src/CrossFade.cxx b/src/CrossFade.cxx index 8e6baf885..601d74dc2 100644 --- a/src/CrossFade.cxx +++ b/src/CrossFade.cxx @@ -25,8 +25,6 @@ #include "util/Domain.hxx" #include "Log.hxx" -#include - #include #include #include @@ -37,7 +35,8 @@ gcc_pure static float mixramp_interpolate(const char *ramp_list, float required_db) { - float last_db = nan(""), last_secs = 0; + float last_db = 0, last_secs = 0; + bool have_last = false; /* ramp_list is a string of pairs of dBs and seconds that describe the * volume profile. Delimiters are semi-colons between pairs and spaces @@ -71,11 +70,12 @@ mixramp_interpolate(const char *ramp_list, float required_db) if (db < required_db) { last_db = db; last_secs = secs; + have_last = true; continue; } /* If required db < any stored value, use the least. */ - if (std::isnan(last_db)) + if (!have_last) return secs; /* Finally, interpolate linearly. */ -- cgit v1.2.3