-
Notifications
You must be signed in to change notification settings - Fork 3
/
VisPlugin.h
99 lines (78 loc) · 2.41 KB
/
VisPlugin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
Copyright 2014 British Broadcasting Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef VISPLUGIN_HPP
#define VISPLUGIN_HPP
#include "vamp-hostsdk/Plugin.h"
#include <cstring>
#include <vector>
using Vamp::Plugin;
using Vamp::RealTime;
class VisPlugin
{
protected:
int width;
int height;
public:
typedef struct _VampParameter
{
std::string name;
float value;
bool operator<(const _VampParameter &n) const {
if (this->name < n.name) return true;
if (this->name > n.name) return false;
return this->value < n.value;
}
} VampParameter;
typedef std::vector<VampParameter> VampParameterList;
typedef struct _VampPlugin
{
const char *name;
int blockSize;
int stepSize;
VampParameterList parameters;
bool operator<( const _VampPlugin &n ) const {
if (this->name < n.name) return true;
if (this->name > n.name) return false;
if (this->blockSize < n.blockSize) return true;
if (this->blockSize > n.blockSize) return false;
if (this->stepSize < n.stepSize) return true;
if (this->stepSize > n.stepSize) return false;
return this->parameters < n.parameters;
}
} VampPlugin;
typedef struct _VampOutput
{
VampPlugin plugin;
const char *name;
} VampOutput;
typedef std::vector<VampOutput> VampOutputList;
VisPlugin() {}
virtual ~VisPlugin() {}
virtual int ARGB(Plugin::FeatureSet features,
int width,
int height,
unsigned char *bitmap,
int sampleRate)
{
return -1;
}
virtual VampOutputList getVampPlugins() {
VampOutputList out;
return out;
}
virtual double getVersion() const = 0;
};
// the types of the class factories
typedef VisPlugin* create_t();
typedef void destroy_t(VisPlugin*);
#endif