annotate transform/FeatureExtractionModelTransformer.h @ 823:f0558e69a074

Rename Resampling- to DecodingWavFileReader, and use it whenever we have an audio file that is not quickly seekable using libsndfile. Avoids very slow performance when analysing ogg files.
author Chris Cannam
date Wed, 17 Jul 2013 15:40:01 +0100
parents 15cd67fcbdad
children 54829c1e155e
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@779 43 int m_fixedRateFeatureNo; // to assign times to FixedSampleRate features
Chris@778 44 int m_outputNo;
Chris@320 45
Chris@558 46 void createOutputModel();
Chris@558 47
Chris@320 48 void addFeature(size_t blockFrame,
Chris@320 49 const Vamp::Plugin::Feature &feature);
Chris@320 50
Chris@320 51 void setCompletion(int);
Chris@320 52
Chris@363 53 void getFrames(int channelCount, long startFrame, long size,
Chris@363 54 float **buffer);
Chris@320 55
Chris@320 56 // just casts
Chris@441 57
Chris@350 58 DenseTimeValueModel *getConformingInput();
Chris@441 59
Chris@441 60 template <typename ModelClass> bool isOutput() {
Chris@441 61 return dynamic_cast<ModelClass *>(m_output) != 0;
Chris@441 62 }
Chris@441 63
Chris@350 64 template <typename ModelClass> ModelClass *getConformingOutput() {
Chris@320 65 ModelClass *mc = dynamic_cast<ModelClass *>(m_output);
Chris@320 66 if (!mc) {
Chris@331 67 std::cerr << "FeatureExtractionModelTransformer::getOutput: Output model not conformable" << std::endl;
Chris@320 68 }
Chris@320 69 return mc;
Chris@320 70 }
Chris@320 71 };
Chris@320 72
Chris@320 73 #endif
Chris@320 74