Mercurial > hg > svcore
diff transform/FeatureExtractionModelTransformer.h @ 849:418cd2064769 tonioni_multi_transform
More on multi-transform stuff
author | Chris Cannam |
---|---|
date | Mon, 02 Dec 2013 11:17:24 +0000 |
parents | 539740f231fa |
children | dba8a02b0413 |
line wrap: on
line diff
--- a/transform/FeatureExtractionModelTransformer.h Fri Nov 29 15:43:50 2013 +0000 +++ b/transform/FeatureExtractionModelTransformer.h Mon Dec 02 11:17:24 2013 +0000 @@ -13,8 +13,8 @@ COPYING included with this distribution for more information. */ -#ifndef _FEATURE_EXTRACTION_PLUGIN_TRANSFORMER_H_ -#define _FEATURE_EXTRACTION_PLUGIN_TRANSFORMER_H_ +#ifndef _FEATURE_EXTRACTION_MODEL_TRANSFORMER_H_ +#define _FEATURE_EXTRACTION_MODEL_TRANSFORMER_H_ #include "ModelTransformer.h" @@ -51,15 +51,17 @@ virtual ~FeatureExtractionModelTransformer(); protected: + bool initialise(); + virtual void run(); Vamp::Plugin *m_plugin; - Vamp::Plugin::OutputDescriptor *m_descriptor; - int m_fixedRateFeatureNo; // to assign times to FixedSampleRate features - int m_outputNo; + std::vector<Vamp::Plugin::OutputDescriptor *> m_descriptors; // per transform + std::vector<int> m_fixedRateFeatureNos; // to assign times to FixedSampleRate features + std::vector<int> m_outputNos; PreferredOutputModel m_preferredOutputModel; - void createOutputModel(); + void createOutputModel(int n); void addFeature(size_t blockFrame, const Vamp::Plugin::Feature &feature); @@ -73,16 +75,21 @@ DenseTimeValueModel *getConformingInput(); - template <typename ModelClass> bool isOutput() { - return dynamic_cast<ModelClass *>(m_output) != 0; + template <typename ModelClass> bool isOutput(int n) { + return dynamic_cast<ModelClass *>(m_outputs[n]) != 0; } - template <typename ModelClass> ModelClass *getConformingOutput() { - ModelClass *mc = dynamic_cast<ModelClass *>(m_output); - if (!mc) { - std::cerr << "FeatureExtractionModelTransformer::getOutput: Output model not conformable" << std::endl; - } - return mc; + template <typename ModelClass> ModelClass *getConformingOutput(int n) { + if ((int)m_outputs.size() > n) { + ModelClass *mc = dynamic_cast<ModelClass *>(m_outputs[n]); + if (!mc) { + std::cerr << "FeatureExtractionModelTransformer::getOutput: Output model not conformable" << std::endl; + } + return mc; + } else { + std::cerr << "FeatureExtractionModelTransformer::getOutput: No such output number " << n << std::endl; + return 0; + } } };