annotate transform/FeatureExtractionPluginTransform.h @ 14:b101cc2ae1ab

* Introduce potentially-separate read and write ring buffers, so we can swap in a new set when something changes -- thus allowing us to respond quickly when something changes during playback, without losing the long buffers * Some fixes for display & editing
author Chris Cannam
date Fri, 27 Jan 2006 18:04:07 +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