annotate transform/FeatureExtractionModelTransformer.h @ 588:d04b8674b710

* Try to identify the properly conformant audio file structure written out by Sonic Annotator (but we still don't actually import it yet)
author Chris Cannam
date Wed, 13 May 2009 13:30:08 +0000
parents 1d7ebc05157e
children d373ced0e6e9 5295bdb58840
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@350 19 #include "ModelTransformer.h"
Chris@350 20
Chris@361 21 #include <QString>
Chris@361 22
Chris@475 23 #include <vamp-hostsdk/Plugin.h>
Chris@350 24
Chris@350 25 #include <iostream>
Chris@320 26
Chris@320 27 class DenseTimeValueModel;
Chris@320 28
Chris@350 29 class FeatureExtractionModelTransformer : public ModelTransformer
Chris@320 30 {
Chris@320 31 Q_OBJECT
Chris@320 32
Chris@320 33 public:
Chris@350 34 FeatureExtractionModelTransformer(Input input,
Chris@350 35 const Transform &transform);
Chris@331 36 virtual ~FeatureExtractionModelTransformer();
Chris@320 37
Chris@320 38 protected:
Chris@320 39 virtual void run();
Chris@320 40
Chris@320 41 Vamp::Plugin *m_plugin;
Chris@320 42 Vamp::Plugin::OutputDescriptor *m_descriptor;
Chris@320 43 int m_outputFeatureNo;
Chris@320 44
Chris@558 45 void createOutputModel();
Chris@558 46
Chris@320 47 void addFeature(size_t blockFrame,
Chris@320 48 const Vamp::Plugin::Feature &feature);
Chris@320 49
Chris@320 50 void setCompletion(int);
Chris@320 51
Chris@363 52 void getFrames(int channelCount, long startFrame, long size,
Chris@363 53 float **buffer);
Chris@320 54
Chris@320 55 // just casts
Chris@441 56
Chris@350 57 DenseTimeValueModel *getConformingInput();
Chris@441 58
Chris@441 59 template <typename ModelClass> bool isOutput() {
Chris@441 60 return dynamic_cast<ModelClass *>(m_output) != 0;
Chris@441 61 }
Chris@441 62
Chris@350 63 template <typename ModelClass> ModelClass *getConformingOutput() {
Chris@320 64 ModelClass *mc = dynamic_cast<ModelClass *>(m_output);
Chris@320 65 if (!mc) {
Chris@331 66 std::cerr << "FeatureExtractionModelTransformer::getOutput: Output model not conformable" << std::endl;
Chris@320 67 }
Chris@320 68 return mc;
Chris@320 69 }
Chris@320 70 };
Chris@320 71
Chris@320 72 #endif
Chris@320 73