diff flattendynamics-ladspa.cpp @ 3:12d364f12d37

delete/delete[] fix; max gain
author Chris Cannam
date Thu, 17 Jul 2014 16:23:17 +0100
parents 57990edc441b
children e36fe9312ad4
line wrap: on
line diff
--- a/flattendynamics-ladspa.cpp	Thu Jul 17 14:37:27 2014 +0100
+++ b/flattendynamics-ladspa.cpp	Thu Jul 17 16:23:17 2014 +0100
@@ -11,6 +11,7 @@
 const float historySeconds = 4.f;
 const float catchUpSeconds = 0.5f;
 const float targetRMS = 0.1f;
+const float maxGain = 20.f;
 
 const char *const
 FlattenDynamics::portNames[PortCount] =
@@ -88,7 +89,7 @@
 
 FlattenDynamics::~FlattenDynamics()
 {
-    delete m_history;
+    delete[] m_history;
 }
     
 LADSPA_Handle
@@ -142,7 +143,7 @@
 void
 FlattenDynamics::reset()
 {
-    delete m_history;
+    delete[] m_history;
     m_histlen = int(round(m_sampleRate * historySeconds));
     if (m_histlen < 1) m_histlen = 1;
     m_history = new float[m_histlen];
@@ -186,6 +187,9 @@
     }
 
     float targetGain = targetRMS / m_rms;
+    if (targetGain > maxGain) {
+        targetGain = maxGain;
+    }
     float catchUpSamples = catchUpSeconds * m_sampleRate;
     // asymptotic, could improve?
     m_gain = m_gain + (targetGain - m_gain) / catchUpSamples;