Mercurial > hg > vamp-tempogram
diff NoveltyCurve.cpp @ 11:09fb76606b2b
* Removed many unnecessary heap allocations with objects
author | Carl Bussey <c.bussey@se10.qmul.ac.uk> |
---|---|
date | Wed, 13 Aug 2014 10:45:46 +0100 |
parents | be59b4a73f49 |
children | 7680cc4c0073 |
line wrap: on
line diff
--- a/NoveltyCurve.cpp Tue Aug 12 14:40:37 2014 +0100 +++ b/NoveltyCurve.cpp Wed Aug 13 10:45:46 2014 +0100 @@ -6,7 +6,10 @@ // Copyright (c) 2014 Carl Bussey. All rights reserved. // +//Spectrogram dimensions should be flipped? + #include "NoveltyCurve.h" +#include <memory> using namespace std; NoveltyCurve::NoveltyCurve(float samplingFrequency, int fftLength, int numberOfBlocks, int compressionConstant) : @@ -74,10 +77,8 @@ float * m_hannWindow = new float[m_hannLength]; WindowFunction::hanning(m_hannWindow, m_hannLength, true); - FIRFilter *filter = new FIRFilter(m_numberOfBlocks, m_hannLength); - filter->process(&noveltyCurve[0], m_hannWindow, &localAverage[0]); - delete filter; - filter = NULL; + FIRFilter filter(m_numberOfBlocks, m_hannLength); + filter.process(&noveltyCurve[0], m_hannWindow, &localAverage[0]); assert(noveltyCurve.size() == m_numberOfBlocks); for (int i = 0; i < m_numberOfBlocks; i++){ @@ -85,7 +86,7 @@ noveltyCurve[i] = noveltyCurve[i] >= 0 ? noveltyCurve[i] : 0; } - delete m_hannWindow; + delete []m_hannWindow; m_hannWindow = NULL; } @@ -100,14 +101,11 @@ diffHannWindow[i] = -diffHannWindow[i]; } - FIRFilter *smoothFilter = new FIRFilter(m_numberOfBlocks, smoothLength); + FIRFilter smoothFilter(m_numberOfBlocks, smoothLength); for (int i = 0; i < m_blockSize; i++){ - smoothFilter->process(&spectrogram[i][0], diffHannWindow, &spectrogram[i][0]); + smoothFilter.process(&spectrogram[i][0], diffHannWindow, &spectrogram[i][0]); } - - delete smoothFilter; - smoothFilter = NULL; } //half rectification (set negative to zero) @@ -122,7 +120,7 @@ //process method vector<float> -NoveltyCurve::spectrogramToNoveltyCurve(vector< vector<float> > &spectrogram){ +NoveltyCurve::spectrogramToNoveltyCurve(vector< vector<float> > spectrogram){ assert(spectrogram.size() == m_blockSize); assert(spectrogram[0].size() == m_numberOfBlocks);