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