annotate quick-test.cpp @ 26:98be88612dd1

Merge from branch outputid-string-in-featureset
author Chris Cannam
date Mon, 19 Sep 2016 14:48:43 +0100
parents 8fdafb8f1c45
children 34480328bf5c
rev   line source
Chris@2 1
Chris@2 2 #include <iostream>
Chris@2 3 #include <dlfcn.h>
Chris@2 4
Chris@2 5 using namespace std;
Chris@2 6
Chris@8 7 int main(int, char **)
Chris@2 8 {
Chris@2 9 string example = "./example.so";
Chris@2 10
Chris@2 11 void *lib = dlopen(example.c_str(), RTLD_LAZY | RTLD_LOCAL);
Chris@2 12 if (!lib) {
Chris@2 13 cerr << "failed to open " + example + ": " << dlerror() << endl;
Chris@2 14 return 1;
Chris@2 15 }
Chris@2 16
Chris@2 17 typedef const char *(*RequestFn)(const char *);
Chris@2 18 RequestFn reqFn = (RequestFn)dlsym(lib, "vampipeRequestJson");
Chris@2 19 if (!reqFn) {
Chris@2 20 cerr << "failed to find request function in " +
Chris@2 21 example + ": " << dlerror() << endl;
Chris@2 22 return 1;
Chris@2 23 }
Chris@2 24
Chris@2 25 typedef void (*FreeFn)(const char *);
Chris@2 26 FreeFn freeFn = (FreeFn)dlsym(lib, "vampipeFreeJson");
Chris@2 27 if (!freeFn) {
Chris@2 28 cerr << "failed to find free function in " +
Chris@2 29 example + ": " << dlerror() << endl;
Chris@2 30 return 1;
Chris@2 31 }
Chris@2 32
Chris@2 33 string listRequest = "{\"type\": \"list\"}";
Chris@2 34 const char *listResponse = reqFn(listRequest.c_str());
Chris@2 35 cout << listResponse << endl;
Chris@2 36 freeFn(listResponse);
Chris@4 37
Chris@8 38 string loadRequest = "{\"type\":\"load\",\"content\": {\"pluginKey\":\"vamp-example-plugins:powerspectrum\",\"inputSampleRate\":44100,\"adapterFlags\":[\"AdaptAllSafe\"]}}";
Chris@4 39 const char *loadResponse = reqFn(loadRequest.c_str());
Chris@4 40 cout << loadResponse << endl;
Chris@4 41 freeFn(loadResponse);
Chris@8 42
Chris@8 43 string configRequest = "{\"type\":\"configure\",\"content\":{\"pluginHandle\":1,\"configuration\":{\"blockSize\":8,\"channelCount\":1,\"stepSize\":8}}}";
Chris@8 44 const char *configResponse = reqFn(configRequest.c_str());
Chris@8 45 cout << configResponse << endl;
Chris@8 46 freeFn(configResponse);
Chris@8 47
Chris@8 48 string processRequest = "{\"type\":\"process\",\"content\":{\"pluginHandle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[{\"values\":[0,1,0,-1,0,1,0,-1]}]}}}";
Chris@8 49 const char *processResponse = reqFn(processRequest.c_str());
Chris@8 50 cout << processResponse << endl;
Chris@8 51 freeFn(processResponse);
Chris@12 52
Chris@12 53 string b64processRequest = "{\"type\":\"process\",\"content\":{\"pluginHandle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[{\"b64values\":\"AAAAAAAAgD8AAAAAAACAvwAAAAAAAIA/AAAAAAAAgL8\"}]}}}";
Chris@12 54 const char *b64processResponse = reqFn(b64processRequest.c_str());
Chris@12 55 cout << b64processResponse << endl;
Chris@12 56 freeFn(b64processResponse);
Chris@8 57
Chris@8 58 string finishRequest = "{\"type\":\"finish\",\"content\":{\"pluginHandle\":1}}";
Chris@8 59 const char *finishResponse = reqFn(finishRequest.c_str());
Chris@8 60 cout << finishResponse << endl;
Chris@8 61 freeFn(finishResponse);
Chris@2 62 }
Chris@2 63