annotate plugin/transform/PluginTransformer.h @ 339:ba30f4a3e3be

* Some work on correct alignment when moving panes during playback * Overhaul alignment for playback frame values (view manager now always refers to reference-timeline values, only the play source deals in playback model timeline values) * When making a selection, ensure the selection regions shown in other panes (and used for playback constraints if appropriate) are aligned correctly. This may be the coolest feature ever implemented in any program ever.
author Chris Cannam
date Thu, 22 Nov 2007 14:17:19 +0000
parents 1afaf98dbf11
children
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 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@328 16 #ifndef _PLUGIN_TRANSFORMER_H_
Chris@328 17 #define _PLUGIN_TRANSFORMER_H_
Chris@320 18
Chris@331 19 #include "ModelTransformer.h"
Chris@320 20
Chris@320 21 #include "base/Window.h"
Chris@320 22
Chris@320 23 #include "vamp-sdk/Plugin.h"
Chris@320 24
Chris@328 25 //!!! should this just move back up to Transformer? It is after all used
Chris@320 26 //directly in all sorts of generic places, like Document
Chris@320 27
Chris@331 28 class PluginTransformer : public ModelTransformer
Chris@320 29 {
Chris@320 30 public:
Chris@320 31 class ExecutionContext {
Chris@320 32 public:
Chris@320 33 // Time domain:
Chris@320 34 ExecutionContext(int _c = -1, size_t _bs = 0);
Chris@320 35
Chris@320 36 // Frequency domain:
Chris@320 37 ExecutionContext(int _c, size_t _ss, size_t _bs, WindowType _wt);
Chris@320 38
Chris@320 39 // From plugin defaults:
Chris@320 40 ExecutionContext(int _c, const Vamp::PluginBase *_plugin);
Chris@320 41
Chris@320 42 bool operator==(const ExecutionContext &);
Chris@320 43
Chris@320 44 void makeConsistentWithPlugin(const Vamp::PluginBase *_plugin);
Chris@320 45
Chris@320 46 int channel;
Chris@320 47 Vamp::Plugin::InputDomain domain;
Chris@320 48 size_t stepSize;
Chris@320 49 size_t blockSize;
Chris@320 50 WindowType windowType;
Chris@320 51 size_t startFrame;
Chris@320 52 size_t duration; // 0 -> whole thing
Chris@320 53 float sampleRate; // 0 -> model's rate
Chris@333 54 bool updates;
Chris@320 55 };
Chris@320 56
Chris@320 57 protected:
Chris@328 58 PluginTransformer(Model *inputModel,
Chris@328 59 const ExecutionContext &context);
Chris@320 60
Chris@320 61 ExecutionContext m_context;
Chris@320 62 };
Chris@320 63
Chris@320 64 #endif