Mercurial > hg > piper-vamp-js
view quick-test.cpp @ 36:34480328bf5c
Instead of using separate values and b64values entries in JSON serialisations, allow numeric arrays to be replaced by b64 variants wherever they appear (discriminating by type). Also rename values to featureValues in feature throughout, as values turns out to be a hazardous name in a JS context. Finally use Array instead of Text for array encoding (seems clearer).
author | Chris Cannam |
---|---|
date | Tue, 27 Sep 2016 15:04:59 +0100 |
parents | 8fdafb8f1c45 |
children | a9dbf9f45896 |
line wrap: on
line source
#include <iostream> #include <dlfcn.h> using namespace std; int main(int, char **) { string example = "./example.so"; void *lib = dlopen(example.c_str(), RTLD_LAZY | RTLD_LOCAL); if (!lib) { cerr << "failed to open " + example + ": " << dlerror() << endl; return 1; } typedef const char *(*RequestFn)(const char *); RequestFn reqFn = (RequestFn)dlsym(lib, "vampipeRequestJson"); if (!reqFn) { cerr << "failed to find request function in " + example + ": " << dlerror() << endl; return 1; } typedef void (*FreeFn)(const char *); FreeFn freeFn = (FreeFn)dlsym(lib, "vampipeFreeJson"); if (!freeFn) { cerr << "failed to find free function in " + example + ": " << dlerror() << endl; return 1; } string listRequest = "{\"type\": \"list\"}"; const char *listResponse = reqFn(listRequest.c_str()); cout << listResponse << endl; freeFn(listResponse); string loadRequest = "{\"type\":\"load\",\"content\": {\"pluginKey\":\"vamp-example-plugins:powerspectrum\",\"inputSampleRate\":44100,\"adapterFlags\":[\"AdaptAllSafe\"]}}"; const char *loadResponse = reqFn(loadRequest.c_str()); cout << loadResponse << endl; freeFn(loadResponse); string configRequest = "{\"type\":\"configure\",\"content\":{\"pluginHandle\":1,\"configuration\":{\"blockSize\":8,\"channelCount\":1,\"stepSize\":8}}}"; const char *configResponse = reqFn(configRequest.c_str()); cout << configResponse << endl; freeFn(configResponse); string processRequest = "{\"type\":\"process\",\"content\":{\"pluginHandle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[[0,1,0,-1,0,1,0,-1]]}}}"; const char *processResponse = reqFn(processRequest.c_str()); cout << processResponse << endl; freeFn(processResponse); string b64processRequest = "{\"type\":\"process\",\"content\":{\"pluginHandle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[\"AAAAAAAAgD8AAAAAAACAvwAAAAAAAIA/AAAAAAAAgL8\"]}}}"; const char *b64processResponse = reqFn(b64processRequest.c_str()); cout << b64processResponse << endl; freeFn(b64processResponse); string finishRequest = "{\"type\":\"finish\",\"content\":{\"pluginHandle\":1}}"; const char *finishResponse = reqFn(finishRequest.c_str()); cout << finishResponse << endl; freeFn(finishResponse); }