Mercurial > hg > svcore
diff transform/TransformFactory.cpp @ 1225:ba16388b937d piper
Restore native-Vamp factory and make the choice between Piper and Native a preference
author | Chris Cannam |
---|---|
date | Fri, 21 Oct 2016 11:49:27 +0100 |
parents | c2207877689d |
children | 5d886b7b4029 |
line wrap: on
line diff
--- a/transform/TransformFactory.cpp Thu Oct 20 18:31:02 2016 +0100 +++ b/transform/TransformFactory.cpp Fri Oct 21 11:49:27 2016 +0100 @@ -16,6 +16,7 @@ #include "TransformFactory.h" #include "plugin/FeatureExtractionPluginFactory.h" + #include "plugin/RealTimePluginFactory.h" #include "plugin/RealTimePluginInstance.h" #include "plugin/PluginXml.h" @@ -402,22 +403,17 @@ void TransformFactory::populateFeatureExtractionPlugins(TransformDescriptionMap &transforms) { - std::vector<QString> plugs = - FeatureExtractionPluginFactory::getAllPluginIdentifiers(); + FeatureExtractionPluginFactory *factory = + FeatureExtractionPluginFactory::instance(); + + std::vector<QString> plugs = factory->getPluginIdentifiers(); + if (m_exiting) return; for (int i = 0; i < (int)plugs.size(); ++i) { QString pluginId = plugs[i]; - FeatureExtractionPluginFactory *factory = - FeatureExtractionPluginFactory::instanceFor(pluginId); - - if (!factory) { - cerr << "WARNING: TransformFactory::populateTransforms: No feature extraction plugin factory for instance " << pluginId << endl; - continue; - } - piper_vamp::PluginStaticData psd = factory->getPluginStaticData(pluginId); if (psd.pluginKey == "") { @@ -794,8 +790,8 @@ // cerr << "TransformFactory::instantiateDefaultPluginFor: identifier \"" // << identifier << "\" is a feature extraction transform" << endl; - FeatureExtractionPluginFactory *factory = - FeatureExtractionPluginFactory::instanceFor(pluginId); + FeatureExtractionPluginFactory *factory = + FeatureExtractionPluginFactory::instance(); if (factory) { plugin = factory->instantiatePlugin(pluginId, rate); @@ -914,22 +910,7 @@ { QString id = identifier.section(':', 0, 2); - if (FeatureExtractionPluginFactory::instanceFor(id)) { - - Vamp::Plugin *plugin = - FeatureExtractionPluginFactory::instanceFor(id)-> - instantiatePlugin(id, 44100); - if (!plugin) return false; - - min = (int)plugin->getMinChannelCount(); - max = (int)plugin->getMaxChannelCount(); - delete plugin; - - return true; - - } else if (RealTimePluginFactory::instanceFor(id)) { - - // don't need to instantiate + if (RealTimePluginFactory::instanceFor(id)) { const RealTimePluginDescriptor *descriptor = RealTimePluginFactory::instanceFor(id)-> @@ -940,6 +921,17 @@ max = descriptor->audioInputPortCount; return true; + + } else { + + auto psd = FeatureExtractionPluginFactory::instance()-> + getPluginStaticData(id); + if (psd.pluginKey == "") return false; + + min = (int)psd.minChannelCount; + max = (int)psd.maxChannelCount; + + return true; } return false;