Mercurial > hg > vamp-live-host
view host/Processor.h @ 1:4342352b8ef3
* run more than one plugin, etc
author | cannam |
---|---|
date | Fri, 20 Oct 2006 15:31:00 +0000 |
parents | a6020bf991cd |
children | f0e9092bd3e4 |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ #ifndef _PROCESSOR_H_ #define _PROCESSOR_H_ #include <QThread> #include <QString> #include <QMutex> #include "audioio/BufferingAudioCallbackRecordTarget.h" #include <vamp-sdk/Plugin.h> #include <map> #include <set> class Processor : public QThread { public: Processor(BufferingAudioCallbackRecordTarget *audioRecordTarget); virtual ~Processor(); int addPlugin(QString pluginId); // returns reference number, 0 for failure void removePlugin(int number); protected: virtual void run(); bool runPlugins(); bool m_exiting; BufferingAudioCallbackRecordTarget *m_audioRecordTarget; // Plugins indexed by plugin number typedef std::map<int, Vamp::Plugin *> PluginMap; PluginMap m_plugins; int m_nextNumber; // The same plugins, indexed by step and block sizes typedef std::set<Vamp::Plugin *> PluginSet; typedef std::map<size_t, PluginSet> BlockSizePluginMap; typedef std::map<size_t, BlockSizePluginMap> StepSizePluginMap; StepSizePluginMap m_processingMap; // A map from step size to ring buffer reader number typedef std::map<size_t, int> StepSizeReaderMap; StepSizeReaderMap m_stepSizeReaderMap; int m_nextReader; bool m_havePlugins; size_t m_minBlockSize; size_t m_maxBlockSize; QMutex m_mutex; }; #endif