summaryrefslogtreecommitdiff
path: root/vamphost/src/ofxVamphost.h
blob: 2c618eba5872f7afd87866e9f75e1a11402a2a29 (plain)
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
#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();

		float avg;
		int num;
		int numFeat;
		
	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