CrossFade: use negative value for invalid mixramp_delay
Avoid NaN to allow -ffast-math.
This commit is contained in:
parent
a21edddf27
commit
a65f63747b
@ -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 @@
|
|||||||
|
|
||||||
#include "Compiler.h"
|
#include "Compiler.h"
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
struct AudioFormat;
|
struct AudioFormat;
|
||||||
|
|
||||||
struct CrossFadeSettings {
|
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()
|
|||||||
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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user