Mercurial > hg > svcore
diff plugin/FeatureExtractionPluginFactory.h @ 1230:9ae2ce9190e6 project-file-rework
Merge
author | Chris Cannam |
---|---|
date | Tue, 25 Oct 2016 11:04:26 +0100 |
parents | c2207877689d e699bdeef63c |
children | 91bb68146dfc |
line wrap: on
line diff
--- a/plugin/FeatureExtractionPluginFactory.h Mon Oct 24 17:53:33 2016 +0100 +++ b/plugin/FeatureExtractionPluginFactory.h Tue Oct 25 11:04:26 2016 +0100 @@ -4,7 +4,7 @@ Sonic Visualiser An audio file viewer and annotation editor. Centre for Digital Music, Queen Mary, University of London. - This file copyright 2006 Chris Cannam. + This file copyright 2006-2016 Chris Cannam and QMUL. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -13,51 +13,55 @@ COPYING included with this distribution for more information. */ -#ifndef _FEATURE_EXTRACTION_PLUGIN_FACTORY_H_ -#define _FEATURE_EXTRACTION_PLUGIN_FACTORY_H_ - -#include <QString> -#include <QMutex> -#include <vector> -#include <map> +#ifndef SV_FEATURE_EXTRACTION_PLUGIN_FACTORY_H +#define SV_FEATURE_EXTRACTION_PLUGIN_FACTORY_H #include <vamp-hostsdk/Plugin.h> -#include "base/Debug.h" +#include "vamp-support/PluginStaticData.h" + #include "base/BaseTypes.h" -#include "vamp-support/PluginStaticData.h" +#include <QString> class FeatureExtractionPluginFactory { public: - FeatureExtractionPluginFactory(); + static FeatureExtractionPluginFactory *instance(); + virtual ~FeatureExtractionPluginFactory() { } - static FeatureExtractionPluginFactory *instance(QString pluginType); - static FeatureExtractionPluginFactory *instanceFor(QString identifier); - static std::vector<QString> getAllPluginIdentifiers(); + /** + * Return all installed plugin identifiers. + */ + virtual std::vector<QString> getPluginIdentifiers(QString &errorMessage) { + return instance()->getPluginIdentifiers(errorMessage); + } - virtual std::vector<QString> getPluginIdentifiers(); + /** + * Return static data for the given plugin. + */ + virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier) { + return instance()->getPluginStaticData(identifier); + } - virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier); - - // We don't set blockSize or channels on this -- they're - // negotiated and handled via initialize() on the plugin + /** + * Instantiate (load) and return pointer to the plugin with the + * given identifier, at the given sample rate. We don't set + * blockSize or channels on this -- they're negotiated and handled + * via initialize() on the plugin itself after loading. + */ virtual Vamp::Plugin *instantiatePlugin(QString identifier, - sv_samplerate_t inputSampleRate); + sv_samplerate_t inputSampleRate) { + return instance()->instantiatePlugin(identifier, inputSampleRate); + } /** * Get category metadata about a plugin (without instantiating it). */ - virtual QString getPluginCategory(QString identifier); - -protected: - std::string m_serverName; - QMutex m_mutex; - std::vector<piper_vamp::PluginStaticData> m_pluginData; - std::map<QString, QString> m_taxonomy; - void populate(); + virtual QString getPluginCategory(QString identifier) { + return instance()->getPluginCategory(identifier); + } }; #endif