view src/FeatureDownsample.h @ 42:00b6ae41efbe

Update to use qm-dsp instead of files from constant-q-cpp and bqvec. Some of the classes here (e.g. DCT) have moved to qm-dsp in the meantime.
author Chris Cannam
date Wed, 07 Oct 2015 11:46:33 +0100
parents 47d5321a57c2
children 9eab1b374344
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Tipic

    Centre for Digital Music, Queen Mary, University of London.

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#ifndef FEATURE_DOWNSAMPLE_H
#define FEATURE_DOWNSAMPLE_H

#include <vector>

#include "Types.h"

//!!! doc: class maintains state

class Filter;

class FeatureDownsample
{
public:
    struct Parameters {
	int featureSize;
	int downsampleFactor;
	int windowLength;
        int normP; // 0 = no normalisation, 1 = L^1, 2 = L^2
        double normThresh;
	Parameters() :
	    featureSize(1),
	    downsampleFactor(10),
	    windowLength(41),
	    normP(2),
	    normThresh(1e-6)
	{ }
    };

    FeatureDownsample(Parameters params);
    ~FeatureDownsample();

    void reset();
    RealBlock process(const RealBlock &in);
    RealBlock getRemainingOutput();
    
private:
    Parameters m_params;
    std::vector<Filter *> m_filters;
    int m_toDrop;
    int m_toNext;
    int m_inCount;
    int m_outCount;
};

#endif