aboutsummaryrefslogtreecommitdiffstats
path: root/src/replay_gain_info.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2010-02-15 21:23:24 +0100
committerMax Kellermann <max@duempel.org>2010-02-15 21:23:24 +0100
commitb21e4d9a589c02bffed9a1793d9fc2dc52044c12 (patch)
tree694936fb9629d3eecd06d258ead66b7b879fc29c /src/replay_gain_info.c
parenteeef501ed865b4ef9e0c971829a39a98c7b81ee9 (diff)
downloadmpd-b21e4d9a589c02bffed9a1793d9fc2dc52044c12.tar.gz
mpd-b21e4d9a589c02bffed9a1793d9fc2dc52044c12.tar.xz
mpd-b21e4d9a589c02bffed9a1793d9fc2dc52044c12.zip
replay_gain_state: moved code to replay_gain_tuple_scale()
Moved (and renamed) the function calc_replay_gain_scale() to replay_gain_info.c.
Diffstat (limited to 'src/replay_gain_info.c')
-rw-r--r--src/replay_gain_info.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/replay_gain_info.c b/src/replay_gain_info.c
index 676394c0f..ce9d84950 100644
--- a/src/replay_gain_info.c
+++ b/src/replay_gain_info.c
@@ -21,6 +21,7 @@
#include "replay_gain_info.h"
#include <glib.h>
+#include <math.h>
struct replay_gain_info *
replay_gain_info_new(void)
@@ -46,3 +47,19 @@ replay_gain_info_free(struct replay_gain_info *info)
{
g_free(info);
}
+
+float
+replay_gain_tuple_scale(const struct replay_gain_tuple *tuple, float preamp)
+{
+ float scale;
+
+ scale = pow(10.0, tuple->gain / 20.0);
+ scale *= preamp;
+ if (scale > 15.0)
+ scale = 15.0;
+
+ if (scale * tuple->peak > 1.0)
+ scale = 1.0 / tuple->peak;
+
+ return scale;
+}