svcore  1.9
DSSIPluginFactory.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     
00008     This program is free software; you can redistribute it and/or
00009     modify it under the terms of the GNU General Public License as
00010     published by the Free Software Foundation; either version 2 of the
00011     License, or (at your option) any later version.  See the file
00012     COPYING included with this distribution for more information.
00013 */
00014 
00015 /*
00016    This is a modified version of a source file from the 
00017    Rosegarden MIDI and audio sequencer and notation editor.
00018    This file copyright 2000-2006 Chris Cannam.
00019 */
00020 
00021 #ifndef _DSSI_PLUGIN_FACTORY_H_
00022 #define _DSSI_PLUGIN_FACTORY_H_
00023 
00024 #define DSSI_API_LEVEL 2
00025 
00026 #include "LADSPAPluginFactory.h"
00027 #include "api/dssi.h"
00028 
00029 #include <QMutex>
00030 
00031 class DSSIPluginInstance;
00032 
00033 class DSSIPluginFactory : public LADSPAPluginFactory
00034 {
00035 public:
00036     virtual ~DSSIPluginFactory();
00037 
00038     virtual void enumeratePlugins(std::vector<QString> &list);
00039 
00040     virtual RealTimePluginInstance *instantiatePlugin(QString identifier,
00041                                                       int clientId,
00042                                                       int position,
00043                                                       unsigned int sampleRate,
00044                                                       unsigned int blockSize,
00045                                                       unsigned int channels);
00046 
00047 protected:
00048     DSSIPluginFactory();
00049     friend class RealTimePluginFactory;
00050 
00051     virtual std::vector<QString> getPluginPath();
00052 
00053     virtual std::vector<QString> getLRDFPath(QString &baseUri);
00054 
00055     virtual void discoverPluginsFrom(QString soName);
00056 
00057     virtual const LADSPA_Descriptor *getLADSPADescriptor(QString identifier);
00058     virtual const DSSI_Descriptor *getDSSIDescriptor(QString identifier);
00059 
00060     DSSI_Host_Descriptor m_hostDescriptor;
00061 };
00062 
00063 #endif
00064