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

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:
		bool init(const std::string &soname,const std::string &id,const int &_channels,const int &_bits,const int &_samples,const int &_rate,const int &_outputNo=0,const std::string &_output="");
		void process_frame(unsigned char *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
		
	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