NativeVampPluginFactory.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006-2016 Chris Cannam and QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef SV_NATIVE_VAMP_PLUGIN_FACTORY_H
17 #define SV_NATIVE_VAMP_PLUGIN_FACTORY_H
18 
20 
21 #include <vector>
22 #include <map>
23 
24 #include "base/Debug.h"
25 
26 #include <QMutex>
27 
33 {
34 public:
36 
37  virtual std::vector<QString> getPluginIdentifiers(QString &errorMessage)
38  override;
39 
40  virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier)
41  override;
42 
43  virtual std::shared_ptr<Vamp::Plugin> instantiatePlugin(QString identifier,
44  sv_samplerate_t inputSampleRate)
45  override;
46 
47  virtual QString getPluginCategory(QString identifier) override;
48 
49  virtual QString getPluginLibraryPath(QString identifier) override;
50 
51 protected:
52  QMutex m_mutex;
53  std::vector<QString> m_pluginPath;
54  std::vector<QString> m_identifiers;
55  std::map<QString, QString> m_taxonomy; // identifier -> category string
56  std::map<QString, piper_vamp::PluginStaticData> m_pluginData; // identifier -> data (created opportunistically)
57  std::map<QString, QString> m_libraries; // identifier -> full file path
58 
60  void pluginDeleted(Vamp::Plugin *);
61  std::map<Vamp::Plugin *, void *> m_handleMap;
62 
63  QString findPluginFile(QString soname, QString inDir = "");
64  std::vector<QString> getPluginPath();
65  void generateTaxonomy();
66 };
67 
68 #endif
double sv_samplerate_t
Sample rate.
Definition: BaseTypes.h:51
virtual std::shared_ptr< Vamp::Plugin > instantiatePlugin(QString identifier, sv_samplerate_t inputSampleRate) override
Instantiate (load) and return pointer to the plugin with the given identifier, at the given sample ra...
QString findPluginFile(QString soname, QString inDir="")
std::vector< QString > m_pluginPath
FeatureExtractionPluginFactory type for Vamp plugins hosted in-process.
virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier) override
Return static data for the given plugin.
virtual QString getPluginLibraryPath(QString identifier) override
Get the full file path (including both directory and filename) of the library file that provides a gi...
virtual std::vector< QString > getPluginIdentifiers(QString &errorMessage) override
Return all installed plugin identifiers.
std::map< QString, QString > m_taxonomy
std::vector< QString > getPluginPath()
std::map< Vamp::Plugin *, void * > m_handleMap
void pluginDeleted(Vamp::Plugin *)
std::map< QString, QString > m_libraries
std::map< QString, piper_vamp::PluginStaticData > m_pluginData
std::vector< QString > m_identifiers
virtual QString getPluginCategory(QString identifier) override
Get category metadata about a plugin (without instantiating it).