c@117: c@117: #include c@117: #include c@117: c@117: using namespace std; c@117: c@117: int main(int, char **) c@117: { cannam@147: string example = "../examples/vamp-example-plugins/VampExamplePlugins.so"; c@117: c@117: void *lib = dlopen(example.c_str(), RTLD_LAZY | RTLD_LOCAL); c@117: if (!lib) { c@117: cerr << "failed to open " + example + ": " << dlerror() << endl; c@117: return 1; c@117: } c@117: c@117: typedef const char *(*RequestFn)(const char *); c@117: RequestFn reqFn = (RequestFn)dlsym(lib, "piperRequestJson"); c@117: if (!reqFn) { c@117: cerr << "failed to find request function in " + c@117: example + ": " << dlerror() << endl; c@117: return 1; c@117: } c@117: c@117: typedef void (*FreeFn)(const char *); c@117: FreeFn freeFn = (FreeFn)dlsym(lib, "piperFreeJson"); c@117: if (!freeFn) { c@117: cerr << "failed to find free function in " + c@117: example + ": " << dlerror() << endl; c@117: return 1; c@117: } c@117: c@117: string listRequest = "{\"method\": \"list\"}"; c@117: const char *listResponse = reqFn(listRequest.c_str()); c@117: cout << listResponse << endl; c@117: freeFn(listResponse); c@117: c@117: string loadRequest = "{\"method\":\"load\",\"params\": {\"key\":\"vamp-example-plugins:powerspectrum\",\"inputSampleRate\":44100,\"adapterFlags\":[\"AdaptAllSafe\"]}}"; c@117: const char *loadResponse = reqFn(loadRequest.c_str()); c@117: cout << loadResponse << endl; c@117: freeFn(loadResponse); c@117: cannam@147: string configRequest = "{\"method\":\"configure\",\"params\":{\"handle\":1,\"configuration\":{\"framing\":{\"blockSize\":8,\"stepSize\": 8},\"channelCount\":1}}}"; c@117: const char *configResponse = reqFn(configRequest.c_str()); c@117: cout << configResponse << endl; c@117: freeFn(configResponse); c@117: c@117: string processRequest = "{\"method\":\"process\",\"id\": 6,\"params\":{\"handle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[[0,1,0,-1,0,1,0,-1]]}}}"; c@117: const char *processResponse = reqFn(processRequest.c_str()); c@117: cout << processResponse << endl; c@117: freeFn(processResponse); c@117: c@117: string b64processRequest = "{\"method\":\"process\",\"params\":{\"handle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[\"AAAAAAAAgD8AAAAAAACAvwAAAAAAAIA/AAAAAAAAgL8\"]}}}"; c@117: const char *b64processResponse = reqFn(b64processRequest.c_str()); c@117: cout << b64processResponse << endl; c@117: freeFn(b64processResponse); c@117: c@117: string finishRequest = "{\"method\":\"finish\",\"params\":{\"handle\":1}}"; c@117: const char *finishResponse = reqFn(finishRequest.c_str()); c@117: cout << finishResponse << endl; c@117: freeFn(finishResponse); cannam@147: cannam@147: return 0; c@117: } c@117: