RealTimePluginFactory.h

Go to the documentation of this file.
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
00002 
00003 /*
00004     Sonic Visualiser
00005     An audio file viewer and annotation editor.
00006     Centre for Digital Music, Queen Mary, University of London.
00007     This file copyright 2006 Chris Cannam.
00008     
00009     This program is free software; you can redistribute it and/or
00010     modify it under the terms of the GNU General Public License as
00011     published by the Free Software Foundation; either version 2 of the
00012     License, or (at your option) any later version.  See the file
00013     COPYING included with this distribution for more information.
00014 */
00015 
00016 /*
00017    This is a modified version of a source file from the 
00018    Rosegarden MIDI and audio sequencer and notation editor.
00019    This file copyright 2000-2006 Chris Cannam.
00020 */
00021 
00022 #ifndef _REALTIME_PLUGIN_FACTORY_H_
00023 #define _REALTIME_PLUGIN_FACTORY_H_
00024 
00025 #include <QString>
00026 #include <vector>
00027 
00028 class RealTimePluginInstance;
00029 
00030 class RealTimePluginDescriptor
00031 {
00032 public:
00033     std::string name;
00034     std::string label;
00035     std::string maker;
00036     std::string copyright;
00037     std::string category;
00038     bool isSynth;
00039     unsigned int parameterCount;
00040     unsigned int audioInputPortCount;
00041     unsigned int audioOutputPortCount;
00042     unsigned int controlOutputPortCount;
00043     std::vector<std::string> controlOutputPortNames;
00044 };
00045 
00046 class RealTimePluginFactory
00047 {
00048 public:
00049     virtual ~RealTimePluginFactory();
00050 
00051     static RealTimePluginFactory *instance(QString pluginType);
00052     static RealTimePluginFactory *instanceFor(QString identifier);
00053     static std::vector<QString> getAllPluginIdentifiers();
00054     static void enumerateAllPlugins(std::vector<QString> &);
00055 
00056     static void setSampleRate(int sampleRate) { m_sampleRate = sampleRate; }
00057 
00062     virtual void discoverPlugins() = 0;
00063 
00068     virtual const std::vector<QString> &getPluginIdentifiers() const = 0;
00069 
00075     virtual void enumeratePlugins(std::vector<QString> &list) = 0;
00076 
00080     virtual const RealTimePluginDescriptor *getPluginDescriptor(QString identifier) const = 0;
00081 
00085     virtual RealTimePluginInstance *instantiatePlugin(QString identifier,
00086                                                       int clientId,
00087                                                       int position,
00088                                                       unsigned int sampleRate,
00089                                                       unsigned int blockSize,
00090                                                       unsigned int channels) = 0;
00091 
00095     virtual QString getPluginCategory(QString identifier) = 0;
00096 
00097 protected:
00098     RealTimePluginFactory() { }
00099 
00100     // for call by RealTimePluginInstance dtor
00101     virtual void releasePlugin(RealTimePluginInstance *, QString identifier) = 0;
00102     friend class RealTimePluginInstance;
00103 
00104     static int m_sampleRate;
00105 };
00106 
00107 #endif

Generated on Wed Feb 20 15:45:27 2008 for SonicVisualiser by  doxygen 1.5.1