Mercurial > hg > libxtract
changeset 174:575f9050ef02
Fix memory leak by calling xtract_free_window()
author | Jamie Bullock <jamie@jamiebullock.com> |
---|---|
date | Wed, 19 Jun 2013 14:59:58 -0700 |
parents | 1a0907add40c |
children | 41c02a0e7433 |
files | examples/simpletest/simpletest.c |
diffstat | 1 files changed, 8 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/simpletest/simpletest.c Wed Jun 19 17:10:22 2013 +0100 +++ b/examples/simpletest/simpletest.c Wed Jun 19 14:59:58 2013 -0700 @@ -92,12 +92,12 @@ double mean = 0.0; double f0 = 0.0; double centroid = 0.0; - double *spectrum = calloc(BLOCKSIZE, sizeof(double)); - double *windowed = calloc(BLOCKSIZE, sizeof(double)); - double *peaks = calloc(BLOCKSIZE, sizeof(double)); - double *harmonics = calloc(BLOCKSIZE, sizeof(double)); + double spectrum[BLOCKSIZE] = {0}; + double windowed[BLOCKSIZE] = {0}; + double peaks[BLOCKSIZE] = {0}; + double harmonics[BLOCKSIZE] = {0}; double *window = NULL; - double *mfccs = calloc(MFCC_FREQ_BANDS, sizeof(double)); + double mfccs[MFCC_FREQ_BANDS] = {0}; double argd[4] = {0}; double samplerate = 44100.0; int n; @@ -117,14 +117,16 @@ /* create the window function */ window = xtract_init_window(BLOCKSIZE, XTRACT_HANN); xtract_windowed(wavetable, BLOCKSIZE, window, windowed); + xtract_free_window(window); /* get the spectrum */ argd[0] = SAMPLERATE / (double)BLOCKSIZE; argd[1] = XTRACT_MAGNITUDE_SPECTRUM; - argd[2] = 0.f; /* DC component - we expect this to zero for square wave */ + argd[2] = 1.f; /* DC component - we expect this to zero for square wave */ argd[3] = 0.f; /* No Normalisation */ xtract_init_fft(BLOCKSIZE, XTRACT_SPECTRUM); + printf("windowed: %p, spectrum: %p\n", (void *)windowed, (void *)spectrum); xtract[XTRACT_SPECTRUM](windowed, BLOCKSIZE, &argd[0], spectrum); xtract[XTRACT_SPECTRAL_CENTROID](spectrum, BLOCKSIZE, NULL, ¢roid); @@ -182,12 +184,6 @@ } free(mel_filters.filters); - free(spectrum); - free(windowed); - free(peaks); - free(harmonics); - free(mfccs); - return 0; }