fix double promotions

Found with -Wdouble-promotion

Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
Rosen Penev
2020-03-15 23:33:21 -07:00
parent fd71514068
commit 6d91b5c7b2
18 changed files with 53 additions and 54 deletions

View File

@@ -49,7 +49,7 @@ public:
double _volume_scale_factor)
:Mixer(pulse_mixer_plugin, _listener),
output(_output),
volume_scale_factor(_volume_scale_factor)
volume_scale_factor(float(_volume_scale_factor))
{
}
@@ -173,7 +173,7 @@ parse_volume_scale_factor(const char *value) {
char *endptr;
float factor = ParseFloat(value, &endptr);
if (endptr == value || *endptr != '\0' || factor < 0.5 || factor > 5.0)
if (endptr == value || *endptr != '\0' || factor < 0.5f || factor > 5.0f)
throw FormatRuntimeError("\"%s\" is not a number in the "
"range 0.5 to 5.0",
value);
@@ -188,7 +188,7 @@ pulse_mixer_init([[maybe_unused]] EventLoop &event_loop, AudioOutput &ao,
{
auto &po = (PulseOutput &)ao;
float scale = parse_volume_scale_factor(block.GetBlockValue("scale_volume"));
auto *pm = new PulseMixer(po, listener, scale);
auto *pm = new PulseMixer(po, listener, (double)scale);
pulse_output_set_mixer(po, *pm);
@@ -214,7 +214,7 @@ PulseMixer::GetVolume()
int
PulseMixer::GetVolumeInternal()
{
pa_volume_t max_pa_volume = volume_scale_factor * PA_VOLUME_NORM;
pa_volume_t max_pa_volume = pa_volume_t(volume_scale_factor * PA_VOLUME_NORM);
return online ?
(int)((100 * (pa_cvolume_avg(&volume) + 1)) / max_pa_volume)
: -1;
@@ -228,7 +228,7 @@ PulseMixer::SetVolume(unsigned new_volume)
if (!online)
throw std::runtime_error("disconnected");
pa_volume_t max_pa_volume = volume_scale_factor * PA_VOLUME_NORM;
pa_volume_t max_pa_volume = pa_volume_t(volume_scale_factor * PA_VOLUME_NORM);
struct pa_cvolume cvolume;
pa_cvolume_set(&cvolume, volume.channels,

View File

@@ -25,8 +25,6 @@
#include <cassert>
#include <cmath>
#include <assert.h>
class SoftwareMixer final : public Mixer {
Filter *filter = nullptr;
@@ -72,13 +70,14 @@ PercentVolumeToSoftwareVolume(unsigned volume) noexcept
{
assert(volume <= 100);
if (volume >= 100)
if (volume == 100)
return PCM_VOLUME_1;
else if (volume > 0)
return pcm_float_to_volume((std::exp(volume / 25.0) - 1) /
if (volume > 0)
return pcm_float_to_volume((std::exp(volume / 25.0f) - 1) /
(54.5981500331F - 1));
else
return 0;
return 0;
}
void