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) {