Mercurial > hg > piper-vamp-js
changeset 110:2f621b00747e
Merge from branch jsonrpc
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Thu, 06 Oct 2016 14:33:12 +0100 |
parents | f272e46f5615 (current diff) 9d20eb251fbc (diff) |
children | 02b69e2dc51f |
files | |
diffstat | 9 files changed, 50 insertions(+), 54 deletions(-) [+] |
line wrap: on
line diff
--- a/VamPipePluginLibrary.cpp Fri Sep 30 19:20:23 2016 +0100 +++ b/VamPipePluginLibrary.cpp Thu Oct 06 14:33:12 2016 +0100 @@ -54,10 +54,6 @@ } if (!j.is_object()) { err = "object expected at top level"; - } else if (!j["type"].is_string()) { - err = "string expected for type field"; - } else if (!j["content"].is_null() && !j["content"].is_object()) { - err = "object expected for content field"; } return j; } @@ -130,18 +126,18 @@ } string -VamPipePluginLibrary::processRawImpl(int pluginHandle, +VamPipePluginLibrary::processRawImpl(int handle, const float *const *inputBuffers, int sec, int nsec) { - Vamp::Plugin *plugin = m_mapper.handleToPlugin(pluginHandle); + Vamp::Plugin *plugin = m_mapper.handleToPlugin(handle); if (!plugin) { return VampJson::fromError("unknown plugin handle", RRType::Process) .dump(); } - if (!m_mapper.isConfigured(pluginHandle)) { + if (!m_mapper.isConfigured(handle)) { return VampJson::fromError("plugin has not been configured", RRType::Process) .dump(); } @@ -154,7 +150,7 @@ m_useBase64 = true; - return VampJson::fromVampResponse_Process + return VampJson::fromRpcResponse_Process (resp, m_mapper, VampJson::BufferSerialisation::Base64) .dump(); @@ -185,12 +181,12 @@ switch (type) { case RRType::List: - rj = VampJson::fromVampResponse_List(listPluginData()); + rj = VampJson::fromRpcResponse_List(listPluginData()); break; case RRType::Load: { - auto req = VampJson::toVampRequest_Load(j, err); + auto req = VampJson::toRpcRequest_Load(j, err); if (err != "") { rj = VampJson::fromError(err, type); } else { @@ -199,7 +195,7 @@ rj = VampJson::fromError(err, type); } else { m_mapper.addPlugin(resp.plugin); - rj = VampJson::fromVampResponse_Load(resp, m_mapper); + rj = VampJson::fromRpcResponse_Load(resp, m_mapper); } } break; @@ -207,7 +203,7 @@ case RRType::Configure: { - auto req = VampJson::toVampRequest_Configure(j, m_mapper, err); + auto req = VampJson::toRpcRequest_Configure(j, m_mapper, err); if (err != "") { rj = VampJson::fromError(err, type); } else { @@ -224,7 +220,7 @@ m_mapper.markConfigured(h, req.configuration.channelCount, req.configuration.blockSize); - rj = VampJson::fromVampResponse_Configure(resp, m_mapper); + rj = VampJson::fromRpcResponse_Configure(resp, m_mapper); } } } @@ -235,7 +231,7 @@ { VampJson::BufferSerialisation serialisation; - auto req = VampJson::toVampRequest_Process(j, m_mapper, + auto req = VampJson::toRpcRequest_Process(j, m_mapper, serialisation, err); if (err != "") { rj = VampJson::fromError(err, type); @@ -272,7 +268,7 @@ resp.plugin = req.plugin; resp.features = req.plugin->process(fbuffers, req.timestamp); delete[] fbuffers; - rj = VampJson::fromVampResponse_Process + rj = VampJson::fromRpcResponse_Process (resp, m_mapper, serialisation); } } @@ -282,7 +278,7 @@ case RRType::Finish: { - auto req = VampJson::toVampRequest_Finish(j, m_mapper, err); + auto req = VampJson::toRpcRequest_Finish(j, m_mapper, err); if (err != "") { rj = VampJson::fromError(err, type); } else { @@ -297,7 +293,7 @@ resp.plugin = req.plugin; resp.features = req.plugin->getRemainingFeatures(); - rj = VampJson::fromVampResponse_Finish + rj = VampJson::fromRpcResponse_Finish (resp, m_mapper, serialisation); m_mapper.removePlugin(h);
--- a/example.cpp Fri Sep 30 19:20:23 2016 +0100 +++ b/example.cpp Thu Oct 06 14:33:12 2016 +0100 @@ -69,11 +69,11 @@ return library.requestJson(request); } -const char *vampipeProcessRaw(int pluginHandle, +const char *vampipeProcessRaw(int handle, const float *const *inputBuffers, int sec, int nsec) { - return library.processRaw(pluginHandle, inputBuffers, sec, nsec); + return library.processRaw(handle, inputBuffers, sec, nsec); } void vampipeFreeJson(const char *json) {
--- a/perf-test-node.js Fri Sep 30 19:20:23 2016 +0100 +++ b/perf-test-node.js Thu Oct 06 14:33:12 2016 +0100 @@ -54,7 +54,7 @@ } const responseJson = vampipeProcessRaw( - request.pluginHandle, + request.handle, buffersPtr, request.processInput.timestamp.s, request.processInput.timestamp.n); @@ -138,7 +138,7 @@ function responseToFeatureSet(response) { const features = new Map(); - const processResponse = response.content; + const processResponse = response.result; const wireFeatures = processResponse.features; Object.keys(wireFeatures).forEach(key => { return features.set(key, convertWireFeatureList(wireFeatures[key])); @@ -151,11 +151,11 @@ const rate = 44100; comment("Loading zero crossings plugin..."); - let result = request('{"type":"load","content": {"pluginKey":"vamp-example-plugins:zerocrossing","inputSampleRate":' + rate + ',"adapterFlags":["AdaptAllSafe"]}}'); + let result = request('{"method":"load","params": {"key":"vamp-example-plugins:zerocrossing","inputSampleRate":' + rate + ',"adapterFlags":["AdaptAllSafe"]}}'); const blockSize = 1024; - result = request('{"type":"configure","content":{"pluginHandle":1,"configuration":{"blockSize": ' + blockSize + ', "channelCount": 1, "stepSize": ' + blockSize + '}}}'); + result = request('{"method":"configure","params":{"handle":1,"configuration":{"blockSize": ' + blockSize + ', "channelCount": 1, "stepSize": ' + blockSize + '}}}'); const nblocks = 1000; @@ -180,7 +180,7 @@ for (let i = 0; i < nblocks; ++i) { result = processRaw({ - "pluginHandle": 1, + "handle": 1, "processInput": blocks[i] }); let features = responseToFeatureSet(result); @@ -202,7 +202,7 @@ for (let i = 0; i < nblocks; ++i) { result = processRaw({ - "pluginHandle": 1, + "handle": 1, "processInput": blocks[i] }); let features = responseToFeatureSet(result); @@ -216,7 +216,7 @@ comment("Total = " + total); comment("Cleaning up the plugin and getting any remaining features..."); - result = request('{"type":"finish","content":{"pluginHandle":1}}'); + result = request('{"method":"finish","params":{"handle":1}}'); } test();
--- a/perf-test.js Fri Sep 30 19:20:23 2016 +0100 +++ b/perf-test.js Thu Oct 06 14:33:12 2016 +0100 @@ -52,7 +52,7 @@ } const responseJson = vampipeProcessRaw( - request.pluginHandle, + request.handle, buffersPtr, request.processInput.timestamp.s, request.processInput.timestamp.n); @@ -136,7 +136,7 @@ function responseToFeatureSet(response) { const features = new Map(); - const processResponse = response.content; + const processResponse = response.result; const wireFeatures = processResponse.features; Object.keys(wireFeatures).forEach(key => { return features.set(key, convertWireFeatureList(wireFeatures[key])); @@ -149,11 +149,11 @@ const rate = 44100; comment("Loading zero crossings plugin..."); - let result = request('{"type":"load","content": {"pluginKey":"vamp-example-plugins:zerocrossing","inputSampleRate":' + rate + ',"adapterFlags":["AdaptAllSafe"]}}'); + let result = request('{"method":"load","params": {"key":"vamp-example-plugins:zerocrossing","inputSampleRate":' + rate + ',"adapterFlags":["AdaptAllSafe"]}}'); const blockSize = 1024; - result = request('{"type":"configure","content":{"pluginHandle":1,"configuration":{"blockSize": ' + blockSize + ', "channelCount": 1, "stepSize": ' + blockSize + '}}}'); + result = request('{"method":"configure","params":{"handle":1,"configuration":{"blockSize": ' + blockSize + ', "channelCount": 1, "stepSize": ' + blockSize + '}}}'); const nblocks = 1000; @@ -178,7 +178,7 @@ for (let i = 0; i < nblocks; ++i) { result = processRaw({ - "pluginHandle": 1, + "handle": 1, "processInput": blocks[i] }); let features = responseToFeatureSet(result); @@ -200,7 +200,7 @@ for (let i = 0; i < nblocks; ++i) { result = processRaw({ - "pluginHandle": 1, + "handle": 1, "processInput": blocks[i] }); let features = responseToFeatureSet(result); @@ -214,7 +214,7 @@ comment("Total = " + total); comment("Cleaning up the plugin and getting any remaining features..."); - result = request('{"type":"finish","content":{"pluginHandle":1}}'); + result = request('{"method":"finish","params":{"handle":1}}'); } window.onload = function() {
--- a/qm-vamp-plugins.cpp Fri Sep 30 19:20:23 2016 +0100 +++ b/qm-vamp-plugins.cpp Thu Oct 06 14:33:12 2016 +0100 @@ -90,11 +90,11 @@ return library.requestJson(request); } -const char *vampipeProcessRaw(int pluginHandle, +const char *vampipeProcessRaw(int handle, const float *const *inputBuffers, int sec, int nsec) { - return library.processRaw(pluginHandle, inputBuffers, sec, nsec); + return library.processRaw(handle, inputBuffers, sec, nsec); } void vampipeFreeJson(const char *json) {
--- a/quick-test.cpp Fri Sep 30 19:20:23 2016 +0100 +++ b/quick-test.cpp Thu Oct 06 14:33:12 2016 +0100 @@ -30,32 +30,32 @@ return 1; } - string listRequest = "{\"type\": \"list\"}"; + string listRequest = "{\"method\": \"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\"]}}"; + string loadRequest = "{\"method\":\"load\",\"params\": {\"key\":\"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}}}"; + string configRequest = "{\"method\":\"configure\",\"params\":{\"handle\":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]]}}}"; + string processRequest = "{\"method\":\"process\",\"params\":{\"handle\":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\"]}}}"; + string b64processRequest = "{\"method\":\"process\",\"params\":{\"handle\":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}}"; + string finishRequest = "{\"method\":\"finish\",\"params\":{\"handle\":1}}"; const char *finishResponse = reqFn(finishRequest.c_str()); cout << finishResponse << endl; freeFn(finishResponse);
--- a/quick-test.js Fri Sep 30 19:20:23 2016 +0100 +++ b/quick-test.js Thu Oct 06 14:33:12 2016 +0100 @@ -49,26 +49,26 @@ function test() { comment("Querying plugin list..."); - var result = request('{"type": "list"}'); + var result = request('{"method": "list"}'); comment("Loading zero crossings plugin..."); - result = request('{"type":"load","content": {"pluginKey":"vamp-example-plugins:powerspectrum","inputSampleRate":16,"adapterFlags":["AdaptAllSafe"]}}'); + result = request('{"method":"load","params": {"key":"vamp-example-plugins:powerspectrum","inputSampleRate":16,"adapterFlags":["AdaptAllSafe"]}}'); - comment("I'm now assuming that the load succeeded and the returned pluginHandle was 1. I haven't bothered to parse the JSON. If those assumptions are wrong, this obviously isn't going to work. Configuring the plugin..."); - result = request('{"type":"configure","content":{"pluginHandle":1,"configuration":{"blockSize": 8, "channelCount": 1, "stepSize": 8}}}'); + comment("I'm now assuming that the load succeeded and the returned handle was 1. I haven't bothered to parse the JSON. If those assumptions are wrong, this obviously isn't going to work. Configuring the plugin..."); + result = request('{"method":"configure","params":{"handle":1,"configuration":{"blockSize": 8, "channelCount": 1, "stepSize": 8}}}'); comment("If I try to configure it again, it should fail because it's already configured... but this doesn't change anything, and subsequent processing should work fine. Just an example of a failure call. NB this only works if Emscripten has exception catching enabled -- it's off by default in opt builds, which would just end the script here. Wonder what the performance penalty is like."); - result = request('{"type":"configure","content":{"pluginHandle":1,"configuration":{"blockSize": 8, "channelCount": 1, "stepSize": 8}}}'); + result = request('{"method":"configure","params":{"handle":1,"configuration":{"blockSize": 8, "channelCount": 1, "stepSize": 8}}}'); comment("Now processing a couple of blocks of data, on the same assumptions..."); - result = request('{"type":"process","content":{"pluginHandle":1,"processInput":{"timestamp":{"s":0,"n":0},"inputBuffers":[{"values":[0,1,-1,0,1,-1,0,1]}]}}}'); - result = request('{"type":"process","content":{"pluginHandle":1,"processInput":{"timestamp":{"s":0,"n":500000000},"inputBuffers":[{"values":[0,1,-1,0,1,-1,0,1]}]}}}'); + result = request('{"method":"process","params":{"handle":1,"processInput":{"timestamp":{"s":0,"n":0},"inputBuffers":[[0,1,-1,0,1,-1,0,1]]}}}'); + result = request('{"method":"process","params":{"handle":1,"processInput":{"timestamp":{"s":0,"n":500000000},"inputBuffers":[[0,1,-1,0,1,-1,0,1]]}}}'); comment("Cleaning up the plugin and getting any remaining features..."); - result = request('{"type":"finish","content":{"pluginHandle":1}}'); + result = request('{"method":"finish","params":{"handle":1}}'); comment("A process call should now fail, as the plugin has been cleaned up."); - result = request('{"type":"process","content":{"pluginHandle":1,"processInput":{"timestamp":{"s":0,"n":1000000000},"inputBuffers":[{"values":[0,1,-1,0,1,-1,0,1]}]}}}'); + result = request('{"method":"process","params":{"handle":1,"processInput":{"timestamp":{"s":0,"n":1000000000},"inputBuffers":[{"values":[0,1,-1,0,1,-1,0,1]}]}}}'); } window.onload = function() {
--- a/silvet.cpp Fri Sep 30 19:20:23 2016 +0100 +++ b/silvet.cpp Thu Oct 06 14:33:12 2016 +0100 @@ -21,11 +21,11 @@ return library.requestJson(request); } -const char *vampipeProcessRaw(int pluginHandle, +const char *vampipeProcessRaw(int handle, const float *const *inputBuffers, int sec, int nsec) { - return library.processRaw(pluginHandle, inputBuffers, sec, nsec); + return library.processRaw(handle, inputBuffers, sec, nsec); } void vampipeFreeJson(const char *json) {
--- a/vamp-test-plugin.cpp Fri Sep 30 19:20:23 2016 +0100 +++ b/vamp-test-plugin.cpp Thu Oct 06 14:33:12 2016 +0100 @@ -68,11 +68,11 @@ return library.requestJson(request); } -const char *vampipeProcessRaw(int pluginHandle, +const char *vampipeProcessRaw(int handle, const float *const *inputBuffers, int sec, int nsec) { - return library.processRaw(pluginHandle, inputBuffers, sec, nsec); + return library.processRaw(handle, inputBuffers, sec, nsec); } void vampipeFreeJson(const char *json) {