annotate transform/RealTimeEffectModelTransformer.h @ 1211:5a1198083d9a piper

Pull out model creation into the transformer thread run(), so that all communications with the plugin server happen on a single thread. Then make the model accessor wait for them to be created (which still happens right at the start of processing) before returning.
author Chris Cannam
date Mon, 17 Oct 2016 14:18:23 +0100
parents 418cd2064769
children c01cbe41aeb5
rev   line source
Chris@320 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@320 2
Chris@320 3 /*
Chris@320 4 Sonic Visualiser
Chris@320 5 An audio file viewer and annotation editor.
Chris@320 6 Centre for Digital Music, Queen Mary, University of London.
Chris@320 7 This file copyright 2006 Chris Cannam and QMUL.
Chris@320 8
Chris@320 9 This program is free software; you can redistribute it and/or
Chris@320 10 modify it under the terms of the GNU General Public License as
Chris@320 11 published by the Free Software Foundation; either version 2 of the
Chris@320 12 License, or (at your option) any later version. See the file
Chris@320 13 COPYING included with this distribution for more information.
Chris@320 14 */
Chris@320 15
Chris@849 16 #ifndef _REAL_TIME_EFFECT_TRANSFORMER_H_
Chris@849 17 #define _REAL_TIME_EFFECT_TRANSFORMER_H_
Chris@320 18
Chris@350 19 #include "ModelTransformer.h"
Chris@320 20 #include "plugin/RealTimePluginInstance.h"
Chris@320 21
Chris@320 22 class DenseTimeValueModel;
Chris@320 23
Chris@350 24 class RealTimeEffectModelTransformer : public ModelTransformer
Chris@320 25 {
Chris@320 26 public:
Chris@350 27 RealTimeEffectModelTransformer(Input input,
Chris@350 28 const Transform &transform);
Chris@331 29 virtual ~RealTimeEffectModelTransformer();
Chris@320 30
Chris@320 31 protected:
Chris@320 32 virtual void run();
Chris@320 33
Chris@1211 34 virtual void awaitOutputModels() { } // they're created synchronously
Chris@1211 35
Chris@320 36 QString m_units;
Chris@320 37 RealTimePluginInstance *m_plugin;
Chris@320 38 int m_outputNo;
Chris@320 39
Chris@320 40 // just casts
Chris@350 41 DenseTimeValueModel *getConformingInput();
Chris@320 42 };
Chris@320 43
Chris@320 44 #endif
Chris@320 45