Commit 46d00dd8 authored by Max Kellermann's avatar Max Kellermann

player/CrossFade: move code to CanCrossFadeSong()

parent ec52b134
...@@ -30,6 +30,13 @@ ...@@ -30,6 +30,13 @@
static constexpr Domain cross_fade_domain("cross_fade"); static constexpr Domain cross_fade_domain("cross_fade");
inline bool
CrossFadeSettings::CanCrossFadeSong(SignedSongTime total_time) const noexcept
{
return !total_time.IsNegative() &&
duration >= std::chrono::duration_cast<FloatDuration>(total_time);
}
gcc_pure gcc_pure
static FloatDuration static FloatDuration
mixramp_interpolate(const char *ramp_list, float required_db) noexcept mixramp_interpolate(const char *ramp_list, float required_db) noexcept
...@@ -97,8 +104,7 @@ CrossFadeSettings::Calculate(SignedSongTime total_time, ...@@ -97,8 +104,7 @@ CrossFadeSettings::Calculate(SignedSongTime total_time,
unsigned int chunks = 0; unsigned int chunks = 0;
if (!IsEnabled() || if (!IsEnabled() ||
total_time.IsNegative() || !CanCrossFadeSong(total_time) ||
duration >= std::chrono::duration_cast<FloatDuration>(total_time) ||
/* we can't crossfade when the audio formats are different */ /* we can't crossfade when the audio formats are different */
af != old_format) af != old_format)
return 0; return 0;
......
...@@ -64,6 +64,13 @@ struct CrossFadeSettings { ...@@ -64,6 +64,13 @@ struct CrossFadeSettings {
const char *mixramp_prev_end, const char *mixramp_prev_end,
AudioFormat af, AudioFormat old_format, AudioFormat af, AudioFormat old_format,
unsigned max_chunks) const noexcept; unsigned max_chunks) const noexcept;
private:
/**
* Can the described song be cross-faded?
*/
[[gnu::pure]]
bool CanCrossFadeSong(SignedSongTime total_time) const noexcept;
}; };
#endif #endif
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