Merge branch 'ucl' of git://github.com/neheb/MPD into v0.21.x

This commit is contained in:
Max Kellermann 2020-03-26 17:27:33 +01:00
commit e1c43ec65f
9 changed files with 53 additions and 15 deletions

1
NEWS
View File

@ -5,6 +5,7 @@ ver 0.21.22 (not yet released)
- rss: support MIME type application/xml - rss: support MIME type application/xml
* mixer * mixer
- android: new mixer plugin for "sles" output - android: new mixer plugin for "sles" output
* fix build failures with uClibc-ng
ver 0.21.21 (2020/03/19) ver 0.21.21 (2020/03/19)
* configuration * configuration

View File

@ -29,9 +29,9 @@
#include "system/Clock.hxx" #include "system/Clock.hxx"
#include "Log.hxx" #include "Log.hxx"
#include "time/ChronoUtil.hxx" #include "time/ChronoUtil.hxx"
#include "util/Math.hxx"
#include <chrono> #include <chrono>
#include <cmath>
#ifndef _WIN32 #ifndef _WIN32
/** /**
@ -121,7 +121,7 @@ stats_print(Response &r, const Partition &partition)
#else #else
(unsigned)std::chrono::duration_cast<std::chrono::seconds>(std::chrono::steady_clock::now() - start_time).count(), (unsigned)std::chrono::duration_cast<std::chrono::seconds>(std::chrono::steady_clock::now() - start_time).count(),
#endif #endif
std::lround(partition.pc.GetTotalPlayTime().count())); lround(partition.pc.GetTotalPlayTime().count()));
#ifdef ENABLE_DATABASE #ifdef ENABLE_DATABASE
const Database *db = partition.instance.GetDatabase(); const Database *db = partition.instance.GetDatabase();

View File

@ -34,13 +34,12 @@
#include "util/StringBuffer.hxx" #include "util/StringBuffer.hxx"
#include "util/ScopeExit.hxx" #include "util/ScopeExit.hxx"
#include "util/Exception.hxx" #include "util/Exception.hxx"
#include "util/Math.hxx"
#ifdef ENABLE_DATABASE #ifdef ENABLE_DATABASE
#include "db/update/Service.hxx" #include "db/update/Service.hxx"
#endif #endif
#include <cmath>
#define COMMAND_STATUS_STATE "state" #define COMMAND_STATUS_STATE "state"
#define COMMAND_STATUS_REPEAT "repeat" #define COMMAND_STATUS_REPEAT "repeat"
#define COMMAND_STATUS_SINGLE "single" #define COMMAND_STATUS_SINGLE "single"
@ -154,7 +153,7 @@ handle_status(Client &client, gcc_unused Request args, Response &r)
if (pc.GetCrossFade() > FloatDuration::zero()) if (pc.GetCrossFade() > FloatDuration::zero())
r.Format(COMMAND_STATUS_CROSSFADE ": %lu\n", r.Format(COMMAND_STATUS_CROSSFADE ": %lu\n",
std::lround(pc.GetCrossFade().count())); lround(pc.GetCrossFade().count()));
if (pc.GetMixRampDelay() > FloatDuration::zero()) if (pc.GetMixRampDelay() > FloatDuration::zero())
r.Format(COMMAND_STATUS_MIXRAMPDELAY ": %f\n", r.Format(COMMAND_STATUS_MIXRAMPDELAY ": %f\n",

View File

@ -26,11 +26,11 @@
#include "util/ScopeExit.hxx" #include "util/ScopeExit.hxx"
#include "util/ConstBuffer.hxx" #include "util/ConstBuffer.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
#include "util/Math.hxx"
#include "Log.hxx" #include "Log.hxx"
#include <neaacdec.h> #include <neaacdec.h>
#include <cmath>
#include <exception> #include <exception>
#include <assert.h> #include <assert.h>

View File

@ -20,13 +20,13 @@
#include "mixer/MixerInternal.hxx" #include "mixer/MixerInternal.hxx"
#include "output/OutputAPI.hxx" #include "output/OutputAPI.hxx"
#include "output/plugins/WinmmOutputPlugin.hxx" #include "output/plugins/WinmmOutputPlugin.hxx"
#include "util/Math.hxx"
#include <mmsystem.h> #include <mmsystem.h>
#include <stdexcept> #include <stdexcept>
#include <assert.h> #include <assert.h>
#include <math.h>
#include <windows.h> #include <windows.h>
class WinmmMixer final : public Mixer { class WinmmMixer final : public Mixer {

View File

@ -22,6 +22,7 @@
#include "../OutputAPI.hxx" #include "../OutputAPI.hxx"
#include "mixer/MixerList.hxx" #include "mixer/MixerList.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
#include "util/Math.hxx"
#include "system/Error.hxx" #include "system/Error.hxx"
#include "Log.hxx" #include "Log.hxx"
@ -37,8 +38,6 @@
#include <StringList.h> #include <StringList.h>
#include <SoundPlayer.h> #include <SoundPlayer.h>
#include <cmath>
#include <string.h> #include <string.h>
#define UTF8_PLAY "\xE2\x96\xB6" #define UTF8_PLAY "\xE2\x96\xB6"

View File

@ -22,11 +22,10 @@
#include "Clamp.hxx" #include "Clamp.hxx"
#include "Traits.hxx" #include "Traits.hxx"
#include "util/Clamp.hxx" #include "util/Clamp.hxx"
#include "util/Math.hxx"
#include "PcmDither.cxx" // including the .cxx file to get inlined templates #include "PcmDither.cxx" // including the .cxx file to get inlined templates
#include <cmath>
#include <assert.h> #include <assert.h>
template<SampleFormat F, class Traits=SampleTraits<F>> 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 = sin(M_PI_2 * portion1);
s *= s; 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); vol1 = Clamp<int>(vol1, 0, PCM_VOLUME_1S);
return pcm_add_vol(dither, buffer1, buffer2, size, return pcm_add_vol(dither, buffer1, buffer2, size,

View File

@ -23,10 +23,9 @@
#include "AudioFormat.hxx" #include "AudioFormat.hxx"
#include "util/NumberParser.hxx" #include "util/NumberParser.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
#include "util/Math.hxx"
#include "Log.hxx" #include "Log.hxx"
#include <cmath>
#include <assert.h> #include <assert.h>
static constexpr Domain cross_fade_domain("cross_fade"); static constexpr Domain cross_fade_domain("cross_fade");
@ -112,7 +111,7 @@ CrossFadeSettings::Calculate(SignedSongTime total_time,
if (mixramp_delay <= FloatDuration::zero() || if (mixramp_delay <= FloatDuration::zero() ||
!mixramp_start || !mixramp_prev_end) { !mixramp_start || !mixramp_prev_end) {
chunks = std::lround(duration / chunk_duration); chunks = lround(duration / chunk_duration);
} else { } else {
/* Calculate mixramp overlap. */ /* Calculate mixramp overlap. */
const auto mixramp_overlap_current = const auto mixramp_overlap_current =

41
src/util/Math.hxx Normal file
View File

@ -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
#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) && !defined(_GLIBCXX_USE_C99_MATH)
#include <boost/math/special_functions/round.hpp>
using boost::math::lround;
#else
#include <cmath>
using std::lround;
#endif
#endif