Commit a65f6374 authored by Max Kellermann's avatar Max Kellermann

CrossFade: use negative value for invalid mixramp_delay

Avoid NaN to allow -ffast-math.
parent a21edddf
...@@ -108,7 +108,7 @@ CrossFadeSettings::Calculate(float total_time, ...@@ -108,7 +108,7 @@ CrossFadeSettings::Calculate(float total_time,
chunks_f = (float)af.GetTimeToSize() / (float)CHUNK_SIZE; chunks_f = (float)af.GetTimeToSize() / (float)CHUNK_SIZE;
if (std::isnan(mixramp_delay) || !mixramp_start || !mixramp_prev_end) { if (mixramp_delay <= 0 || !mixramp_start || !mixramp_prev_end) {
chunks = (chunks_f * duration + 0.5); chunks = (chunks_f * duration + 0.5);
} else { } else {
/* Calculate mixramp overlap. */ /* Calculate mixramp overlap. */
......
...@@ -22,8 +22,6 @@ ...@@ -22,8 +22,6 @@
#include "Compiler.h" #include "Compiler.h"
#include <cmath>
struct AudioFormat; struct AudioFormat;
struct CrossFadeSettings { struct CrossFadeSettings {
...@@ -35,14 +33,15 @@ struct CrossFadeSettings { ...@@ -35,14 +33,15 @@ struct CrossFadeSettings {
float mixramp_db; float mixramp_db;
/** /**
* The configured MixRapm delay [s]. * The configured MixRapm delay [s]. A non-positive value
* disables MixRamp.
*/ */
float mixramp_delay; float mixramp_delay;
CrossFadeSettings() CrossFadeSettings()
:duration(0), :duration(0),
mixramp_db(0), mixramp_db(0),
mixramp_delay(std::nanf("")) mixramp_delay(-1)
{} {}
......
...@@ -779,7 +779,7 @@ Player::PlayNextChunk() ...@@ -779,7 +779,7 @@ Player::PlayNextChunk()
other_chunk->tag); other_chunk->tag);
other_chunk->tag = nullptr; other_chunk->tag = nullptr;
if (std::isnan(pc.cross_fade.mixramp_delay)) { if (pc.cross_fade.mixramp_delay <= 0) {
chunk->mix_ratio = ((float)cross_fade_position) chunk->mix_ratio = ((float)cross_fade_position)
/ cross_fade_chunks; / cross_fade_chunks;
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment