Chris@49: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@0: Chris@0: /* Chris@52: Sonic Visualiser Chris@52: An audio file viewer and annotation editor. Chris@52: Centre for Digital Music, Queen Mary, University of London. Chris@1225: This file copyright 2006-2016 Chris Cannam and QMUL. Chris@0: Chris@52: This program is free software; you can redistribute it and/or Chris@52: modify it under the terms of the GNU General Public License as Chris@52: published by the Free Software Foundation; either version 2 of the Chris@52: License, or (at your option) any later version. See the file Chris@52: COPYING included with this distribution for more information. Chris@0: */ Chris@0: Chris@1225: #ifndef SV_NATIVE_VAMP_PLUGIN_FACTORY_H Chris@1225: #define SV_NATIVE_VAMP_PLUGIN_FACTORY_H Chris@0: Chris@1225: #include "FeatureExtractionPluginFactory.h" Chris@1225: Chris@0: #include Chris@165: #include Chris@0: Chris@1225: #include "base/Debug.h" Chris@0: Chris@1225: #include Chris@686: Chris@1225: /** Chris@1225: * FeatureExtractionPluginFactory type for Vamp plugins hosted Chris@1225: * in-process. Chris@1225: */ Chris@1225: class NativeVampPluginFactory : public FeatureExtractionPluginFactory Chris@0: { Chris@0: public: Chris@1225: virtual ~NativeVampPluginFactory() { } Chris@0: Chris@1227: virtual std::vector getPluginIdentifiers(QString &errorMessage) Chris@1227: override; Chris@0: Chris@1227: virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier) Chris@1227: override; Chris@1225: Chris@1830: virtual std::shared_ptr instantiatePlugin(QString identifier, Chris@1227: sv_samplerate_t inputSampleRate) Chris@1227: override; Chris@0: Chris@1227: virtual QString getPluginCategory(QString identifier) override; Chris@165: Chris@1464: virtual QString getPluginLibraryPath(QString identifier) override; Chris@1464: Chris@0: protected: Chris@1209: QMutex m_mutex; Chris@1225: std::vector m_pluginPath; Chris@1225: std::vector m_identifiers; Chris@1225: std::map m_taxonomy; // identifier -> category string Chris@1225: std::map m_pluginData; // identifier -> data (created opportunistically) Chris@1464: std::map m_libraries; // identifier -> full file path Chris@1225: Chris@1225: friend class PluginDeletionNotifyAdapter; Chris@1225: void pluginDeleted(Vamp::Plugin *); Chris@1225: std::map m_handleMap; Chris@1227: Chris@1227: QString findPluginFile(QString soname, QString inDir = ""); Chris@1225: std::vector getPluginPath(); Chris@1225: void generateTaxonomy(); Chris@0: }; Chris@0: Chris@0: #endif