annotate plugin/NativeVampPluginFactory.h @ 1455:ec9e65fcf749

The use of the begin/end pairs here just seems to cause too many rows to be deleted (from the visual representation, not the underlying model). Things apparently work better if we just modify the underlying model and let the change signals percolate back up again. To that end, update the change handlers so as to cover their proper ranges with dataChanged signals.
author Chris Cannam
date Mon, 23 Apr 2018 16:03:35 +0100
parents 5d886b7b4029
children 91bb68146dfc
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@1225 7 This file copyright 2006-2016 Chris Cannam and QMUL.
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@1225 16 #ifndef SV_NATIVE_VAMP_PLUGIN_FACTORY_H
Chris@1225 17 #define SV_NATIVE_VAMP_PLUGIN_FACTORY_H
Chris@0 18
Chris@1225 19 #include "FeatureExtractionPluginFactory.h"
Chris@1225 20
Chris@0 21 #include <vector>
Chris@165 22 #include <map>
Chris@0 23
Chris@1225 24 #include "base/Debug.h"
Chris@0 25
Chris@1225 26 #include <QMutex>
Chris@686 27
Chris@1225 28 /**
Chris@1225 29 * FeatureExtractionPluginFactory type for Vamp plugins hosted
Chris@1225 30 * in-process.
Chris@1225 31 */
Chris@1225 32 class NativeVampPluginFactory : public FeatureExtractionPluginFactory
Chris@0 33 {
Chris@0 34 public:
Chris@1225 35 virtual ~NativeVampPluginFactory() { }
Chris@0 36
Chris@1227 37 virtual std::vector<QString> getPluginIdentifiers(QString &errorMessage)
Chris@1227 38 override;
Chris@0 39
Chris@1227 40 virtual piper_vamp::PluginStaticData getPluginStaticData(QString identifier)
Chris@1227 41 override;
Chris@1225 42
Chris@66 43 virtual Vamp::Plugin *instantiatePlugin(QString identifier,
Chris@1227 44 sv_samplerate_t inputSampleRate)
Chris@1227 45 override;
Chris@0 46
Chris@165 47 /**
Chris@165 48 * Get category metadata about a plugin (without instantiating it).
Chris@165 49 */
Chris@1227 50 virtual QString getPluginCategory(QString identifier) override;
Chris@165 51
Chris@0 52 protected:
Chris@1209 53 QMutex m_mutex;
Chris@1225 54 std::vector<QString> m_pluginPath;
Chris@1225 55 std::vector<QString> m_identifiers;
Chris@1225 56 std::map<QString, QString> m_taxonomy; // identifier -> category string
Chris@1225 57 std::map<QString, piper_vamp::PluginStaticData> m_pluginData; // identifier -> data (created opportunistically)
Chris@1225 58
Chris@1225 59 friend class PluginDeletionNotifyAdapter;
Chris@1225 60 void pluginDeleted(Vamp::Plugin *);
Chris@1225 61 std::map<Vamp::Plugin *, void *> m_handleMap;
Chris@1227 62
Chris@1227 63 QString findPluginFile(QString soname, QString inDir = "");
Chris@1225 64 std::vector<QString> getPluginPath();
Chris@1225 65 void generateTaxonomy();
Chris@0 66 };
Chris@0 67
Chris@0 68 #endif