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
|
#ifndef OFXVAMPHOST_H_
#define OFXVAMPHOST_H_
#include <vamp-hostsdk/PluginHostAdapter.h>
#include <vamp-hostsdk/PluginInputDomainAdapter.h>
#include <vamp-hostsdk/PluginLoader.h>
#include <map>
#include <math.h>
#include <sndfile.h>
using Vamp::Plugin;
using Vamp::PluginHostAdapter;
using Vamp::RealTime;
using Vamp::HostExt::PluginLoader;
using Vamp::HostExt::PluginWrapper;
using Vamp::HostExt::PluginInputDomainAdapter;
#define HOST_VERSION "1.5"
class Vamphost{
//can load any vamp analysis plugin and present its data with a unified interface
public:
int init(const std::string &soname,const std::string &id,const int &_channels,const int &_rate,const int &_outputNo=0,const std::string &_output="");
void process_frame(float *data,int samples_in_frame);
void cleanup();
std::map<float,int> features;
//map<time,featureNo>
//this is the best way to store features: because map allows to search for the key below and above the present time
int getRT();
private:
PluginLoader *loader;
PluginLoader::PluginKey key;
Plugin *plugin;
RealTime rt;
int channels,bits,samples,rate;
int bytes,stride;
float scale;
int blockSize,stepSize,overlapSize,finalStepsRemaining,currentStep,outputNo;
int in_block,blocks_processed;
std::string output;
float **plugbuf;
int featureNo;
};
#endif
|