00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _MODEL_TRANSFORMER_FACTORY_H_
00017 #define _MODEL_TRANSFORMER_FACTORY_H_
00018
00019 #include "Transform.h"
00020 #include "TransformDescription.h"
00021
00022 #include "ModelTransformer.h"
00023
00024 #include <map>
00025 #include <set>
00026
00027 namespace Vamp { class PluginBase; }
00028
00029 class AudioCallbackPlaySource;
00030
00031 class ModelTransformerFactory : public QObject
00032 {
00033 Q_OBJECT
00034
00035 public:
00036 virtual ~ModelTransformerFactory();
00037
00038 static ModelTransformerFactory *getInstance();
00039
00048 ModelTransformer::Input
00049 getConfigurationForTransform(Transform &transform,
00050 const std::vector<Model *> &candidateInputModels,
00051 Model *defaultInputModel,
00052 AudioCallbackPlaySource *source = 0,
00053 size_t startFrame = 0,
00054 size_t duration = 0);
00055
00070 Model *transform(const Transform &transform,
00071 const ModelTransformer::Input &input,
00072 QString &message);
00073
00074 protected slots:
00075 void transformerFinished();
00076
00077 void modelAboutToBeDeleted(Model *);
00078
00079 protected:
00080 ModelTransformer *createTransformer(const Transform &transform,
00081 const ModelTransformer::Input &input);
00082
00083 typedef std::map<TransformId, QString> TransformerConfigurationMap;
00084 TransformerConfigurationMap m_lastConfigurations;
00085
00086 typedef std::set<ModelTransformer *> TransformerSet;
00087 TransformerSet m_runningTransformers;
00088
00089 bool getChannelRange(TransformId identifier,
00090 Vamp::PluginBase *plugin, int &min, int &max);
00091
00092 static ModelTransformerFactory *m_instance;
00093 };
00094
00095
00096 #endif