player/CrossFade: move code to CanCrossFadeSong()

This commit is contained in:
Max Kellermann 2021-10-14 13:40:35 +02:00
parent ec52b13449
commit 46d00dd85f
2 changed files with 15 additions and 2 deletions

View File

@ -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,
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;

View File

@ -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