From 5367f6ca387be404d90abf8fb9283f8abba58c51 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sat, 31 Oct 2015 12:08:27 +0100 Subject: [PATCH] Fix meter display before we have any audio. --- lrameter.cpp | 6 ++++++ vumeter.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/lrameter.cpp b/lrameter.cpp index 79a702d..da65101 100644 --- a/lrameter.cpp +++ b/lrameter.cpp @@ -10,6 +10,12 @@ int lufs_to_pos(float level_lu, int height) { const float min_level = 9.0f; // y=0 is top of screen, so “min” is the loudest level. const float max_level = -18.0f; + + // Handle -inf. + if (level_lu < max_level) { + return height - 1; + } + int y = lrintf(height * (level_lu - min_level) / (max_level - min_level)); y = std::max(y, 0); y = std::min(y, height - 1); diff --git a/vumeter.cpp b/vumeter.cpp index 7254698..e377211 100644 --- a/vumeter.cpp +++ b/vumeter.cpp @@ -10,6 +10,12 @@ int lufs_to_pos(float level_lu, int height) { const float min_level = 9.0f; // y=0 is top of screen, so “min” is the loudest level. const float max_level = -18.0f; + + // Handle -inf. + if (level_lu < max_level) { + return height - 1; + } + int y = lrintf(height * (level_lu - min_level) / (max_level - min_level)); y = std::max(y, 0); y = std::min(y, height - 1); -- 2.39.2