annotate plugin/LADSPAPluginFactory.h @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents fc9323a41f5a
children
rev   line source
lbajardsilogic@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@0 2
lbajardsilogic@0 3 /*
lbajardsilogic@0 4 Sonic Visualiser
lbajardsilogic@0 5 An audio file viewer and annotation editor.
lbajardsilogic@0 6 Centre for Digital Music, Queen Mary, University of London.
lbajardsilogic@0 7
lbajardsilogic@0 8 This program is free software; you can redistribute it and/or
lbajardsilogic@0 9 modify it under the terms of the GNU General Public License as
lbajardsilogic@0 10 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@0 11 License, or (at your option) any later version. See the file
lbajardsilogic@0 12 COPYING included with this distribution for more information.
lbajardsilogic@0 13 */
lbajardsilogic@0 14
lbajardsilogic@0 15 /*
lbajardsilogic@0 16 This is a modified version of a source file from the
lbajardsilogic@0 17 Rosegarden MIDI and audio sequencer and notation editor.
lbajardsilogic@0 18 This file copyright 2000-2006 Chris Cannam and Richard Bown.
lbajardsilogic@0 19 */
lbajardsilogic@0 20
lbajardsilogic@0 21 #ifndef _LADSPA_PLUGIN_FACTORY_H_
lbajardsilogic@0 22 #define _LADSPA_PLUGIN_FACTORY_H_
lbajardsilogic@0 23
lbajardsilogic@0 24 #include "RealTimePluginFactory.h"
lbajardsilogic@0 25 #include "api/ladspa.h"
lbajardsilogic@0 26
lbajardsilogic@0 27 #include <vector>
lbajardsilogic@0 28 #include <map>
lbajardsilogic@0 29 #include <set>
lbajardsilogic@0 30 #include <QString>
lbajardsilogic@0 31
lbajardsilogic@0 32 class LADSPAPluginInstance;
lbajardsilogic@0 33
lbajardsilogic@0 34 class LADSPAPluginFactory : public RealTimePluginFactory
lbajardsilogic@0 35 {
lbajardsilogic@0 36 public:
lbajardsilogic@0 37 virtual ~LADSPAPluginFactory();
lbajardsilogic@0 38
lbajardsilogic@0 39 virtual void discoverPlugins();
lbajardsilogic@0 40
lbajardsilogic@0 41 virtual const std::vector<QString> &getPluginIdentifiers() const;
lbajardsilogic@0 42
lbajardsilogic@0 43 virtual void enumeratePlugins(std::vector<QString> &list);
lbajardsilogic@0 44
lbajardsilogic@0 45 virtual const RealTimePluginDescriptor *getPluginDescriptor(QString identifier) const;
lbajardsilogic@0 46
lbajardsilogic@0 47 virtual RealTimePluginInstance *instantiatePlugin(QString identifier,
lbajardsilogic@0 48 int clientId,
lbajardsilogic@0 49 int position,
lbajardsilogic@0 50 unsigned int sampleRate,
lbajardsilogic@0 51 unsigned int blockSize,
lbajardsilogic@0 52 unsigned int channels);
lbajardsilogic@0 53
lbajardsilogic@0 54 virtual QString getPluginCategory(QString identifier);
lbajardsilogic@0 55
lbajardsilogic@0 56 float getPortMinimum(const LADSPA_Descriptor *, int port);
lbajardsilogic@0 57 float getPortMaximum(const LADSPA_Descriptor *, int port);
lbajardsilogic@0 58 float getPortDefault(const LADSPA_Descriptor *, int port);
lbajardsilogic@0 59 float getPortQuantization(const LADSPA_Descriptor *, int port);
lbajardsilogic@0 60 int getPortDisplayHint(const LADSPA_Descriptor *, int port);
lbajardsilogic@0 61
lbajardsilogic@0 62 protected:
lbajardsilogic@0 63 LADSPAPluginFactory();
lbajardsilogic@0 64 friend class RealTimePluginFactory;
lbajardsilogic@0 65
lbajardsilogic@0 66 virtual std::vector<QString> getPluginPath();
lbajardsilogic@0 67
lbajardsilogic@0 68 virtual std::vector<QString> getLRDFPath(QString &baseUri);
lbajardsilogic@0 69
lbajardsilogic@0 70 virtual void discoverPlugins(QString soName);
lbajardsilogic@0 71 virtual void generateTaxonomy(QString uri, QString base);
lbajardsilogic@0 72 virtual void generateFallbackCategories();
lbajardsilogic@0 73
lbajardsilogic@0 74 virtual void releasePlugin(RealTimePluginInstance *, QString);
lbajardsilogic@0 75
lbajardsilogic@0 76 virtual const LADSPA_Descriptor *getLADSPADescriptor(QString identifier);
lbajardsilogic@0 77
lbajardsilogic@0 78 void loadLibrary(QString soName);
lbajardsilogic@0 79 void unloadLibrary(QString soName);
lbajardsilogic@0 80 void unloadUnusedLibraries();
lbajardsilogic@0 81
lbajardsilogic@0 82 std::vector<QString> m_identifiers;
lbajardsilogic@0 83 std::map<QString, RealTimePluginDescriptor *> m_rtDescriptors;
lbajardsilogic@0 84
lbajardsilogic@0 85 std::map<QString, QString> m_taxonomy;
lbajardsilogic@0 86 std::map<unsigned long, QString> m_lrdfTaxonomy;
lbajardsilogic@0 87 std::map<unsigned long, std::map<int, float> > m_portDefaults;
lbajardsilogic@0 88
lbajardsilogic@0 89 std::set<RealTimePluginInstance *> m_instances;
lbajardsilogic@0 90
lbajardsilogic@0 91 typedef std::map<QString, void *> LibraryHandleMap;
lbajardsilogic@0 92 LibraryHandleMap m_libraryHandles;
lbajardsilogic@0 93 };
lbajardsilogic@0 94
lbajardsilogic@0 95 #endif
lbajardsilogic@0 96