annotate transform/FeatureExtractionPluginTransform.h @ 33:51e158b505da

* Rearrange spectrogram cacheing so that gain, normalization, instantaneous frequency calculations etc can be done from the cached data (increasing the size of the cache, but also the usability).
author Chris Cannam
date Thu, 23 Feb 2006 18:01:31 +0000
parents d86891498eef
children 39ae3dee27b9
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 A waveform viewer and audio annotation editor.
Chris@2 5 Chris Cannam, Queen Mary University of London, 2005-2006
Chris@0 6
Chris@0 7 This is experimental software. Not for distribution.
Chris@0 8 */
Chris@0 9
Chris@0 10 #ifndef _FEATURE_EXTRACTION_PLUGIN_TRANSFORM_H_
Chris@0 11 #define _FEATURE_EXTRACTION_PLUGIN_TRANSFORM_H_
Chris@0 12
Chris@0 13 #include "Transform.h"
Chris@0 14 #include "FeatureExtractionPlugin.h"
Chris@0 15
Chris@0 16 class DenseTimeValueModel;
Chris@0 17
Chris@0 18 class FeatureExtractionPluginTransform : public Transform
Chris@0 19 {
Chris@0 20 public:
Chris@0 21 FeatureExtractionPluginTransform(Model *inputModel,
Chris@0 22 QString plugin,
Chris@0 23 QString outputName = "");
Chris@0 24 virtual ~FeatureExtractionPluginTransform();
Chris@0 25
Chris@0 26 protected:
Chris@0 27 virtual void run();
Chris@0 28
Chris@0 29 FeatureExtractionPlugin *m_plugin;
Chris@0 30 FeatureExtractionPlugin::OutputDescriptor *m_descriptor;
Chris@0 31 int m_outputFeatureNo;
Chris@0 32
Chris@0 33 void addFeature(size_t blockFrame,
Chris@0 34 const FeatureExtractionPlugin::Feature &feature);
Chris@0 35
Chris@0 36 void setCompletion(int);
Chris@0 37
Chris@0 38 // just casts
Chris@0 39 DenseTimeValueModel *getInput();
Chris@0 40 template <typename ModelClass> ModelClass *getOutput() {
Chris@0 41 ModelClass *mc = dynamic_cast<ModelClass *>(m_output);
Chris@0 42 if (!mc) {
Chris@0 43 std::cerr << "FeatureExtractionPluginTransform::getOutput: Output model not conformable" << std::endl;
Chris@0 44 }
Chris@0 45 return mc;
Chris@0 46 }
Chris@0 47 };
Chris@0 48
Chris@0 49 #endif
Chris@0 50