Revision 73:939cf0e86268

View differences:

Cepstrum.h
22 22
    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 23
*/
24 24

  
25
#ifndef _CEPSTRUM_H_
26
#define _CEPSTRUM_H_
25
#ifndef CEPSTRUM_H
26
#define CEPSTRUM_H
27 27

  
28 28
#include "vamp-sdk/FFT.h"
29 29
#include <cmath>
......
70 70

  
71 71
	for (int i = 0; i < hs; ++i) {
72 72

  
73
	    double power = in[i*2] * in[i*2] + in[i*2+1] * in[i*2+1];
73
            double re = in[i*2];
74
            double im = in[i*2+1];
75
            double power = re * re + im * im;
74 76
	    double mag = sqrt(power);
75 77
	    magmean += mag;
76 78

  
Makefile.linux64
1 1

  
2
CFLAGS := -Wall -g -fPIC 
2
CFLAGS := -Wall -O2 -fPIC 
3 3
CXXFLAGS := $(CFLAGS)
4 4

  
5 5
PLUGIN_LDFLAGS := -shared -Wl,-Bstatic -lvamp-sdk -Wl,-Bdynamic -Wl,-Bsymbolic -Wl,-z,defs -Wl,--version-script=vamp-plugin.map
MeanFilter.h
22 22
    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 23
*/
24 24

  
25
#ifndef _MEAN_FILTER_H_
26
#define _MEAN_FILTER_H_
25
#ifndef MEAN_FILTER_H
26
#define MEAN_FILTER_H
27 27

  
28 28
class MeanFilter
29 29
{
......
59 59
	    for (int j = -half; j <= half; ++j) {
60 60
		int ix = i + j + offset;
61 61
		if (ix >= 0 && ix < m) {
62
		    v += in[ix];
63
		    ++n;
62
                    double value = in[ix];
63
                    if (value == value) { // i.e. not NaN
64
                        v += value;
65
                    }
66
                    ++n;
64 67
		}
65 68
	    }
66
	    out[i] = v / n;
69
            if (n > 0) {
70
                out[i] = v / n;
71
            } else {
72
                out[i] = 0.0;
73
            }
67 74
	}
68 75
    }
69 76

  
test/TestCepstrum.cpp
53 53
    BOOST_CHECK_SMALL(out[1] - out[7], 1e-14);
54 54
    BOOST_CHECK_SMALL(out[2] - out[6], 1e-14);
55 55
    BOOST_CHECK_SMALL(out[3] - out[5], 1e-14);
56
    double mmcheck = 0;
57
    for (int i = 0; i < 5; ++i) {
58
        mmcheck += sqrt(in[i*2] * in[i*2] + in[i*2+1] * in[i*2+1]);
59
    }
60
    mmcheck /= 5;
61
    BOOST_CHECK_EQUAL(mm, mmcheck);
56 62
}
57 63

  
58 64
BOOST_AUTO_TEST_CASE(oneHarmonic)

Also available in: Unified diff