annotate plugin/FeatureExtractionPluginFactory.h @ 1223:c2207877689d piper

Avoid instantiating all plugins (in piper client) on startup, using plugin static data instead. Problem of where to get the units field from is still pending.
author Chris Cannam
date Thu, 20 Oct 2016 14:06:58 +0100
parents 8dc7ab20e847
children 9ae2ce9190e6
rev   line source
Chris@49 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@52 4 Sonic Visualiser
Chris@52 5 An audio file viewer and annotation editor.
Chris@52 6 Centre for Digital Music, Queen Mary, University of London.
Chris@52 7 This file copyright 2006 Chris Cannam.
Chris@0 8
Chris@52 9 This program is free software; you can redistribute it and/or
Chris@52 10 modify it under the terms of the GNU General Public License as
Chris@52 11 published by the Free Software Foundation; either version 2 of the
Chris@52 12 License, or (at your option) any later version. See the file
Chris@52 13 COPYING included with this distribution for more information.
Chris@0 14 */
Chris@0 15
Chris@0 16 #ifndef _FEATURE_EXTRACTION_PLUGIN_FACTORY_H_
Chris@0 17 #define _FEATURE_EXTRACTION_PLUGIN_FACTORY_H_
Chris@0 18
Chris@0 19 #include <QString>
Chris@1209 20 #include <QMutex>
Chris@0 21 #include <vector>
Chris@165 22 #include <map>
Chris@0 23
Chris@486 24 #include <vamp-hostsdk/Plugin.h>
Chris@0 25
Chris@686 26 #include "base/Debug.h"
Chris@1040 27 #include "base/BaseTypes.h"
Chris@686 28
Chris@1223 29 #include "vamp-support/PluginStaticData.h"
Chris@1209 30
Chris@0 31 class FeatureExtractionPluginFactory
Chris@0 32 {
Chris@0 33 public:
Chris@1209 34 FeatureExtractionPluginFactory();
Chris@161 35 virtual ~FeatureExtractionPluginFactory() { }
Chris@161 36
Chris@0 37 static FeatureExtractionPluginFactory *instance(QString pluginType);
Chris@0 38 static FeatureExtractionPluginFactory *instanceFor(QString identifier);
Chris@0 39 static std::vector<QString> getAllPluginIdentifiers();
Chris@0 40
Chris@66 41 virtual std::vector<QString> getPluginIdentifiers();
Chris@0 42
Chris@1223 43 virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier);
Chris@1223 44
Chris@0 45 // We don't set blockSize or channels on this -- they're
Chris@0 46 // negotiated and handled via initialize() on the plugin
Chris@66 47 virtual Vamp::Plugin *instantiatePlugin(QString identifier,
Chris@1040 48 sv_samplerate_t inputSampleRate);
Chris@0 49
Chris@165 50 /**
Chris@165 51 * Get category metadata about a plugin (without instantiating it).
Chris@165 52 */
Chris@165 53 virtual QString getPluginCategory(QString identifier);
Chris@165 54
Chris@0 55 protected:
Chris@1210 56 std::string m_serverName;
Chris@1209 57 QMutex m_mutex;
Chris@1209 58 std::vector<piper_vamp::PluginStaticData> m_pluginData;
Chris@1213 59 std::map<QString, QString> m_taxonomy;
Chris@1209 60 void populate();
Chris@0 61 };
Chris@0 62
Chris@0 63 #endif