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
|