diff FIRFilter.cpp @ 8:4e429b9f2b4d

* Fixed memory leak bug. Issue with calculating size of spectrogram array. * Fixed bug in Tempogram::reset() where specData wasn't reinitialised.
author Carl Bussey <c.bussey@se10.qmul.ac.uk>
date Thu, 07 Aug 2014 17:25:24 +0100
parents 21147df9cb2d
children be59b4a73f49
line wrap: on
line diff
--- a/FIRFilter.cpp	Thu Aug 07 16:21:21 2014 +0100
+++ b/FIRFilter.cpp	Thu Aug 07 17:25:24 2014 +0100
@@ -12,8 +12,8 @@
 using Vamp::FFT;
 
 FIRFilter::FIRFilter(const unsigned int lengthInput, const unsigned int numberOfCoefficients) :
-    _lengthInput(lengthInput),
-    _numberOfCoefficients(numberOfCoefficients),
+    m_lengthInput(lengthInput),
+    m_numberOfCoefficients(numberOfCoefficients),
     fftInput(NULL),
     fftCoefficients(NULL),
     fftReal1(NULL),
@@ -36,20 +36,20 @@
 void
 FIRFilter::initialise()
 {
-    _lengthFIRFFT = pow(2,(ceil(log2(_lengthInput+_numberOfCoefficients-1))));
+    m_lengthFIRFFT = pow(2,(ceil(log2(m_lengthInput+m_numberOfCoefficients-1))));
     
-    fftInput = new double[_lengthFIRFFT];
-    fftCoefficients = new double[_lengthFIRFFT];
-    fftReal1 = new double[_lengthFIRFFT];
-    fftImag1 = new double[_lengthFIRFFT];
-    fftReal2 = new double[_lengthFIRFFT];
-    fftImag2 = new double[_lengthFIRFFT];
-    fftFilteredReal = new double[_lengthFIRFFT];
-    fftFilteredImag = new double[_lengthFIRFFT];
-    fftOutputReal = new double[_lengthFIRFFT];
-    fftOutputImag = new double[_lengthFIRFFT];
+    fftInput = new double[m_lengthFIRFFT];
+    fftCoefficients = new double[m_lengthFIRFFT];
+    fftReal1 = new double[m_lengthFIRFFT];
+    fftImag1 = new double[m_lengthFIRFFT];
+    fftReal2 = new double[m_lengthFIRFFT];
+    fftImag2 = new double[m_lengthFIRFFT];
+    fftFilteredReal = new double[m_lengthFIRFFT];
+    fftFilteredImag = new double[m_lengthFIRFFT];
+    fftOutputReal = new double[m_lengthFIRFFT];
+    fftOutputImag = new double[m_lengthFIRFFT];
     
-    for(int i = 0; i < _lengthFIRFFT; i++){
+    for(int i = 0; i < m_lengthFIRFFT; i++){
         fftInput[i] = fftCoefficients[i] = fftReal1[i] = fftImag1[i] = fftReal2[i] = fftImag2[i] = fftFilteredReal[i] = fftFilteredImag[i] = fftOutputReal[i] = fftOutputImag[i] = 0.0;
     }
 }
@@ -57,21 +57,21 @@
 void
 FIRFilter::process(const float* input, const float* coefficients, float* output)
 {
-    for(int i = 0; i < _lengthFIRFFT; i++){
-        fftInput[i] = i < _lengthInput ? input[i] : 0.0;
-        fftCoefficients[i] = i < _numberOfCoefficients ? coefficients[i] : 0.0;
+    for(int i = 0; i < m_lengthFIRFFT; i++){
+        fftInput[i] = i < m_lengthInput ? input[i] : 0.0;
+        fftCoefficients[i] = i < m_numberOfCoefficients ? coefficients[i] : 0.0;
     }
     
-    FFT::forward(_lengthFIRFFT, fftInput, NULL, fftReal1, fftImag1);
-    FFT::forward(_lengthFIRFFT, fftCoefficients, NULL, fftReal2, fftImag2);
+    FFT::forward(m_lengthFIRFFT, fftInput, NULL, fftReal1, fftImag1);
+    FFT::forward(m_lengthFIRFFT, fftCoefficients, NULL, fftReal2, fftImag2);
     
-    for (int i = 0; i < _lengthFIRFFT; i++){
+    for (int i = 0; i < m_lengthFIRFFT; i++){
         fftFilteredReal[i] = (fftReal1[i] * fftReal2[i]) - (fftImag1[i] * fftImag2[i]);
         fftFilteredImag[i] = (fftReal1[i] * fftImag2[i]) + (fftReal2[i] * fftImag1[i]);
     }
-    FFT::inverse(_lengthFIRFFT, fftFilteredReal, fftFilteredImag, fftOutputReal, fftOutputImag);
+    FFT::inverse(m_lengthFIRFFT, fftFilteredReal, fftFilteredImag, fftOutputReal, fftOutputImag);
     
-    for (int i = 0; i < _lengthInput; i++){
+    for (int i = 0; i < m_lengthInput; i++){
         output[i] = fftOutputReal[i];
     }
 }