annotate plugin/transform/FeatureExtractionModelTransformer.h @ 339:ba30f4a3e3be

* Some work on correct alignment when moving panes during playback * Overhaul alignment for playback frame values (view manager now always refers to reference-timeline values, only the play source deals in playback model timeline values) * When making a selection, ensure the selection regions shown in other panes (and used for playback constraints if appropriate) are aligned correctly. This may be the coolest feature ever implemented in any program ever.
author Chris Cannam
date Thu, 22 Nov 2007 14:17:19 +0000
parents f620ce48c950
children 46519c04321b 6f6ab834449d
rev   line source
Chris@320 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@320 2
Chris@320 3 /*
Chris@320 4 Sonic Visualiser
Chris@320 5 An audio file viewer and annotation editor.
Chris@320 6 Centre for Digital Music, Queen Mary, University of London.
Chris@320 7 This file copyright 2006 Chris Cannam and QMUL.
Chris@320 8
Chris@320 9 This program is free software; you can redistribute it and/or
Chris@320 10 modify it under the terms of the GNU General Public License as
Chris@320 11 published by the Free Software Foundation; either version 2 of the
Chris@320 12 License, or (at your option) any later version. See the file
Chris@320 13 COPYING included with this distribution for more information.
Chris@320 14 */
Chris@320 15
Chris@328 16 #ifndef _FEATURE_EXTRACTION_PLUGIN_TRANSFORMER_H_
Chris@328 17 #define _FEATURE_EXTRACTION_PLUGIN_TRANSFORMER_H_
Chris@320 18
Chris@328 19 #include "PluginTransformer.h"
Chris@320 20
Chris@320 21 class DenseTimeValueModel;
Chris@320 22
Chris@331 23 class FeatureExtractionModelTransformer : public PluginTransformer
Chris@320 24 {
Chris@320 25 Q_OBJECT
Chris@320 26
Chris@320 27 public:
Chris@331 28 FeatureExtractionModelTransformer(Model *inputModel,
Chris@328 29 QString plugin,
Chris@328 30 const ExecutionContext &context,
Chris@328 31 QString configurationXml = "",
Chris@328 32 QString outputName = "");
Chris@331 33 virtual ~FeatureExtractionModelTransformer();
Chris@320 34
Chris@320 35 protected:
Chris@320 36 virtual void run();
Chris@320 37
Chris@320 38 Vamp::Plugin *m_plugin;
Chris@320 39 Vamp::Plugin::OutputDescriptor *m_descriptor;
Chris@320 40 int m_outputFeatureNo;
Chris@320 41
Chris@320 42 void addFeature(size_t blockFrame,
Chris@320 43 const Vamp::Plugin::Feature &feature);
Chris@320 44
Chris@320 45 void setCompletion(int);
Chris@320 46
Chris@320 47 void getFrames(int channel, int channelCount,
Chris@320 48 long startFrame, long size, float *buffer);
Chris@320 49
Chris@320 50 // just casts
Chris@320 51 DenseTimeValueModel *getInput();
Chris@320 52 template <typename ModelClass> ModelClass *getOutput() {
Chris@320 53 ModelClass *mc = dynamic_cast<ModelClass *>(m_output);
Chris@320 54 if (!mc) {
Chris@331 55 std::cerr << "FeatureExtractionModelTransformer::getOutput: Output model not conformable" << std::endl;
Chris@320 56 }
Chris@320 57 return mc;
Chris@320 58 }
Chris@320 59 };
Chris@320 60
Chris@320 61 #endif
Chris@320 62