[SCM] calf/master: Speed up compressor-based plugins.

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:40:03 UTC 2013


The following commit has been merged in the master branch:
commit 8ad44088e31dd32d8e9ca9a8aa974017a9f67eff
Author: Krzysztof Foltman <wdev at foltman.com>
Date:   Wed Apr 7 00:20:48 2010 +0100

    Speed up compressor-based plugins.
    
    It looks like recently the compression-related plugins started updating
    the curve parameters every sample. This is expensive and unnecessary, so
    it will be done every block of samples instead.

diff --git a/src/modules_dsp.cpp b/src/modules_dsp.cpp
index 354807c..bf2e2e9 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -1279,6 +1279,8 @@ uint32_t compressor_audio_module::process(uint32_t offset, uint32_t numsamples,
         clip_in    -= std::min(clip_in,  numsamples);
         clip_out   -= std::min(clip_out,  numsamples);
         
+        compressor.update_curve();        
+        
         while(offset < numsamples) {
             // cycle through samples
             float outL = 0.f;
@@ -1561,6 +1563,7 @@ uint32_t sidechaincompressor_audio_module::process(uint32_t offset, uint32_t num
         
         clip_in    -= std::min(clip_in,  numsamples);
         clip_out   -= std::min(clip_out,  numsamples);
+        compressor.update_curve();        
         
         while(offset < numsamples) {
             // cycle through samples
@@ -1828,6 +1831,7 @@ uint32_t deesser_audio_module::process(uint32_t offset, uint32_t numsamples, uin
         
         detected_led -= std::min(detected_led,  numsamples);
         clip_led   -= std::min(clip_led,  numsamples);
+        compressor.update_curve();        
         
         while(offset < numsamples) {
             // cycle through samples
@@ -2038,7 +2042,6 @@ void gain_reduction_audio_module::process(float &left, float &right, const float
         bool average = stereo_link == 0;
         float attack_coeff = std::min(1.f, 1.f / (attack * srate / 4000.f));
         float release_coeff = std::min(1.f, 1.f / (release * srate / 4000.f));
-        update_curve();
         
         float absample = average ? (fabs(*det_left) + fabs(*det_right)) * 0.5f : std::max(fabs(*det_left), fabs(*det_right));
         if(rms) absample *= absample;

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list