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_PIPER_VAMP_PLUGIN_FACTORY_H Chris@1225: #define SV_PIPER_VAMP_PLUGIN_FACTORY_H Chris@0: Chris@1249: #ifdef HAVE_PIPER Chris@1249: Chris@1225: #include "FeatureExtractionPluginFactory.h" Chris@1225: Chris@1209: #include Chris@0: #include Chris@165: #include Chris@0: Chris@1225: #include "base/Debug.h" Chris@1246: #include "base/HelperExecPath.h" Chris@0: Chris@1225: /** Chris@1225: * FeatureExtractionPluginFactory type for Vamp plugins hosted in a Chris@1225: * separate process using Piper protocol. Chris@1225: */ Chris@1225: class PiperVampPluginFactory : public FeatureExtractionPluginFactory Chris@0: { Chris@0: public: Chris@1225: PiperVampPluginFactory(); Chris@1264: virtual ~PiperVampPluginFactory(); Chris@0: Chris@1227: virtual std::vector getPluginIdentifiers(QString &errorMessage) Chris@1227: override; Chris@0: Chris@1225: virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier) Chris@1225: override; Chris@1223: Chris@1830: virtual std::shared_ptr instantiatePlugin(QString identifier, Chris@1830: sv_samplerate_t inputSampleRate) Chris@1225: override; Chris@0: Chris@1225: virtual QString getPluginCategory(QString identifier) override; Chris@165: Chris@1464: virtual QString getPluginLibraryPath(QString identifier) override; Chris@1464: Chris@0: protected: Chris@1225: QMutex m_mutex; Chris@1246: QList m_servers; // executable file paths Chris@1240: std::map m_origins; // plugin identifier -> server path Chris@1464: std::map m_libraries; // soname -> full file path Chris@1225: std::map m_pluginData; // identifier -> data Chris@1225: std::map m_taxonomy; // identifier -> category string Chris@1240: Chris@1559: bool serverMeetsMinimumVersion(const HelperExecPath::HelperExec &server, Chris@1559: float minimumVersion); Chris@1227: void populate(QString &errorMessage); Chris@1246: void populateFrom(const HelperExecPath::HelperExec &, QString &errorMessage); Chris@1264: Chris@1264: class Logger; Chris@1264: Logger *m_logger; Chris@0: }; Chris@0: Chris@0: #endif Chris@1249: Chris@1249: #endif