- From 769cd0ee9f0cf8ceb026aa751b5d4a390bb5dbdc Mon Sep 17 00:00:00 2001
- From: Rosen Penev <rosenp@gmail.com>
- Date: Sun, 2 Feb 2020 21:21:57 -0800
- Subject: [PATCH] treewide: use boost::lround when std::round is unavailable
-
- This is the case with uClibc-ng currently.
-
- Signed-off-by: Rosen Penev <rosenp@gmail.com>
- ---
- src/Stats.cxx | 4 +--
- src/command/PlayerCommands.cxx | 5 ++-
- src/decoder/plugins/FaadDecoderPlugin.cxx | 3 +-
- src/mixer/plugins/WinmmMixerPlugin.cxx | 2 +-
- src/output/plugins/HaikuOutputPlugin.cxx | 3 +-
- src/pcm/PcmMix.cxx | 5 ++-
- src/player/CrossFade.cxx | 5 ++-
- src/util/Math.hxx | 41 +++++++++++++++++++++++
- 8 files changed, 52 insertions(+), 16 deletions(-)
- create mode 100644 src/util/Math.hxx
-
- diff --git a/src/Stats.cxx b/src/Stats.cxx
- index 2208312d7..7467a3a17 100644
- --- a/src/Stats.cxx
- +++ b/src/Stats.cxx
- @@ -29,9 +29,9 @@
- #include "system/Clock.hxx"
- #include "Log.hxx"
- #include "time/ChronoUtil.hxx"
- +#include "util/Math.hxx"
-
- #include <chrono>
- -#include <cmath>
-
- #ifndef _WIN32
- /**
- @@ -121,7 +121,7 @@ stats_print(Response &r, const Partition &partition)
- #else
- (unsigned)std::chrono::duration_cast<std::chrono::seconds>(std::chrono::steady_clock::now() - start_time).count(),
- #endif
- - std::lround(partition.pc.GetTotalPlayTime().count()));
- + lround(partition.pc.GetTotalPlayTime().count()));
-
- #ifdef ENABLE_DATABASE
- const Database *db = partition.instance.GetDatabase();
- diff --git a/src/command/PlayerCommands.cxx b/src/command/PlayerCommands.cxx
- index 7f3b4f296..4acb8f2ad 100644
- --- a/src/command/PlayerCommands.cxx
- +++ b/src/command/PlayerCommands.cxx
- @@ -34,13 +34,12 @@
- #include "util/StringBuffer.hxx"
- #include "util/ScopeExit.hxx"
- #include "util/Exception.hxx"
- +#include "util/Math.hxx"
-
- #ifdef ENABLE_DATABASE
- #include "db/update/Service.hxx"
- #endif
-
- -#include <cmath>
- -
- #define COMMAND_STATUS_STATE "state"
- #define COMMAND_STATUS_REPEAT "repeat"
- #define COMMAND_STATUS_SINGLE "single"
- @@ -154,7 +153,7 @@ handle_status(Client &client, gcc_unused Request args, Response &r)
-
- if (pc.GetCrossFade() > FloatDuration::zero())
- r.Format(COMMAND_STATUS_CROSSFADE ": %lu\n",
- - std::lround(pc.GetCrossFade().count()));
- + lround(pc.GetCrossFade().count()));
-
- if (pc.GetMixRampDelay() > FloatDuration::zero())
- r.Format(COMMAND_STATUS_MIXRAMPDELAY ": %f\n",
- diff --git a/src/decoder/plugins/FaadDecoderPlugin.cxx b/src/decoder/plugins/FaadDecoderPlugin.cxx
- index 983103e0e..e1c9576d3 100644
- --- a/src/decoder/plugins/FaadDecoderPlugin.cxx
- +++ b/src/decoder/plugins/FaadDecoderPlugin.cxx
- @@ -26,11 +26,11 @@
- #include "util/ScopeExit.hxx"
- #include "util/ConstBuffer.hxx"
- #include "util/Domain.hxx"
- +#include "util/Math.hxx"
- #include "Log.hxx"
-
- #include <neaacdec.h>
-
- -#include <cmath>
- #include <exception>
-
- #include <assert.h>
- diff --git a/src/mixer/plugins/WinmmMixerPlugin.cxx b/src/mixer/plugins/WinmmMixerPlugin.cxx
- index 9661d6551..905e650ef 100644
- --- a/src/mixer/plugins/WinmmMixerPlugin.cxx
- +++ b/src/mixer/plugins/WinmmMixerPlugin.cxx
- @@ -20,13 +20,13 @@
- #include "mixer/MixerInternal.hxx"
- #include "output/OutputAPI.hxx"
- #include "output/plugins/WinmmOutputPlugin.hxx"
- +#include "util/Math.hxx"
-
- #include <mmsystem.h>
-
- #include <stdexcept>
-
- #include <assert.h>
- -#include <math.h>
- #include <windows.h>
-
- class WinmmMixer final : public Mixer {
- diff --git a/src/output/plugins/HaikuOutputPlugin.cxx b/src/output/plugins/HaikuOutputPlugin.cxx
- index 952fb0c2f..01240aca9 100644
- --- a/src/output/plugins/HaikuOutputPlugin.cxx
- +++ b/src/output/plugins/HaikuOutputPlugin.cxx
- @@ -22,6 +22,7 @@
- #include "../OutputAPI.hxx"
- #include "mixer/MixerList.hxx"
- #include "util/Domain.hxx"
- +#include "util/Math.hxx"
- #include "system/Error.hxx"
- #include "Log.hxx"
-
- @@ -37,8 +38,6 @@
- #include <StringList.h>
- #include <SoundPlayer.h>
-
- -#include <cmath>
- -
- #include <string.h>
-
- #define UTF8_PLAY "\xE2\x96\xB6"
- diff --git a/src/pcm/PcmMix.cxx b/src/pcm/PcmMix.cxx
- index 17e34b005..59179f54e 100644
- --- a/src/pcm/PcmMix.cxx
- +++ b/src/pcm/PcmMix.cxx
- @@ -22,11 +22,10 @@
- #include "Clamp.hxx"
- #include "Traits.hxx"
- #include "util/Clamp.hxx"
- +#include "util/Math.hxx"
-
- #include "PcmDither.cxx" // including the .cxx file to get inlined templates
-
- -#include <cmath>
- -
- #include <assert.h>
-
- template<SampleFormat F, class Traits=SampleTraits<F>>
- @@ -225,7 +224,7 @@ pcm_mix(PcmDither &dither, void *buffer1, const void *buffer2, size_t size,
- s = sin(M_PI_2 * portion1);
- s *= s;
-
- - int vol1 = std::lround(s * PCM_VOLUME_1S);
- + int vol1 = lround(s * PCM_VOLUME_1S);
- vol1 = Clamp<int>(vol1, 0, PCM_VOLUME_1S);
-
- return pcm_add_vol(dither, buffer1, buffer2, size,
- diff --git a/src/player/CrossFade.cxx b/src/player/CrossFade.cxx
- index ce86d3f0a..8a91516f1 100644
- --- a/src/player/CrossFade.cxx
- +++ b/src/player/CrossFade.cxx
- @@ -23,10 +23,9 @@
- #include "AudioFormat.hxx"
- #include "util/NumberParser.hxx"
- #include "util/Domain.hxx"
- +#include "util/Math.hxx"
- #include "Log.hxx"
-
- -#include <cmath>
- -
- #include <assert.h>
-
- static constexpr Domain cross_fade_domain("cross_fade");
- @@ -112,7 +111,7 @@ CrossFadeSettings::Calculate(SignedSongTime total_time,
-
- if (mixramp_delay <= FloatDuration::zero() ||
- !mixramp_start || !mixramp_prev_end) {
- - chunks = std::lround(duration / chunk_duration);
- + chunks = lround(duration / chunk_duration);
- } else {
- /* Calculate mixramp overlap. */
- const auto mixramp_overlap_current =
- diff --git a/src/util/Math.hxx b/src/util/Math.hxx
- new file mode 100644
- index 000000000..bd856f5a9
- --- /dev/null
- +++ b/src/util/Math.hxx
- @@ -0,0 +1,41 @@
- +/*
- + * Copyright (C) 2018 Max Kellermann <max.kellermann@gmail.com>
- + *
- + * Redistribution and use in source and binary forms, with or without
- + * modification, are permitted provided that the following conditions
- + * are met:
- + *
- + * - Redistributions of source code must retain the above copyright
- + * notice, this list of conditions and the following disclaimer.
- + *
- + * - Redistributions in binary form must reproduce the above copyright
- + * notice, this list of conditions and the following disclaimer in the
- + * documentation and/or other materials provided with the
- + * distribution.
- + *
- + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- + * FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- + * OF THE POSSIBILITY OF SUCH DAMAGE.
- + */
- +
- +#ifndef MATH_HXX
- +#define MATH_HXX
- +
- +#ifdef __UCLIBC__
- +#include <boost/math/special_functions/round.hpp>
- +using boost::math::lround;
- +#else
- +#include <cmath>
- +using std::lround;
- +#endif
- +
- +#endif
|