From 46d00dd85f8934ef48aee7fb459803fc4a1ab47a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 14 Oct 2021 13:40:35 +0200 Subject: [PATCH] player/CrossFade: move code to CanCrossFadeSong() --- src/player/CrossFade.cxx | 10 ++++++++-- src/player/CrossFade.hxx | 7 +++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/player/CrossFade.cxx b/src/player/CrossFade.cxx index 1f6d4c251..a6d14f348 100644 --- a/src/player/CrossFade.cxx +++ b/src/player/CrossFade.cxx @@ -30,6 +30,13 @@ 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(total_time); +} + gcc_pure static FloatDuration mixramp_interpolate(const char *ramp_list, float required_db) noexcept @@ -97,8 +104,7 @@ CrossFadeSettings::Calculate(SignedSongTime total_time, unsigned int chunks = 0; if (!IsEnabled() || - total_time.IsNegative() || - duration >= std::chrono::duration_cast(total_time) || + !CanCrossFadeSong(total_time) || /* we can't crossfade when the audio formats are different */ af != old_format) return 0; diff --git a/src/player/CrossFade.hxx b/src/player/CrossFade.hxx index 1c0f9b082..1934d0e91 100644 --- a/src/player/CrossFade.hxx +++ b/src/player/CrossFade.hxx @@ -64,6 +64,13 @@ struct CrossFadeSettings { const char *mixramp_prev_end, AudioFormat af, AudioFormat old_format, unsigned max_chunks) const noexcept; + +private: + /** + * Can the described song be cross-faded? + */ + [[gnu::pure]] + bool CanCrossFadeSong(SignedSongTime total_time) const noexcept; }; #endif