[SCM] calf/master: + Framework, Compressor: minor optimizations (an unnecessary division in dB_grid found by David Taht + unnecessary outer loop sqrt use)

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:39:28 UTC 2013


The following commit has been merged in the master branch:
commit 613e0f03cbc4e91f2eaae4f987892bc452511d7b
Author: Krzysztof Foltman <wdev at foltman.com>
Date:   Sat Mar 21 19:39:38 2009 +0000

    + Framework, Compressor: minor optimizations (an unnecessary division in dB_grid found by David Taht + unnecessary outer loop sqrt use)

diff --git a/src/modules_dsp.cpp b/src/modules_dsp.cpp
index e01e5e7..98d4a25 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -35,7 +35,7 @@ using namespace calf_plugins;
 /// convert amplitude value to normalized grid-ish value (0dB = 0.5, 30dB = 1.0, -30 dB = 0.0, -60dB = -0.5, -90dB = -1.0)
 static inline float dB_grid(float amp)
 {
-    return log(amp) / log(256.0) + 0.4;
+    return log(amp) * (1.0 / log(256.0)) + 0.4;
 }
 
 template<class Fx>
@@ -486,8 +486,10 @@ bool compressor_audio_module::get_dot(int index, int subindex, float &x, float &
         return false;
     if (!subindex)
     {
-        x = 0.5 + 0.5 * dB_grid(detected);
-        y = dB_grid(*params[param_bypass] > 0.5f ? detected : output_level(detected));
+        bool rms = *params[param_detection] == 0;
+        float det = rms ? sqrt(detected) : detected;
+        x = 0.5 + 0.5 * dB_grid(det);
+        y = dB_grid(*params[param_bypass] > 0.5f ? det : output_level(det));
         return *params[param_bypass] > 0.5f ? false : true;
     }
     return false;
@@ -620,7 +622,7 @@ uint32_t compressor_audio_module::process(uint32_t offset, uint32_t numsamples,
         }
     }
     
-    detected = rms ? sqrt(linSlope) : linSlope;
+    detected = linSlope;
     
     if(params[param_compression] != NULL) {
         *params[param_compression] = compression;

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list