Mercurial > hg > piper-vamp-js
changeset 105:4845fbb1a516
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 <c.cannam@qmul.ac.uk> |
---|---|
date | Tue, 27 Sep 2016 15:04:59 +0100 |
parents | 2b20e610c4c2 |
children | 1ab9634703ca |
files | Makefile.inc.em VamPipePluginLibrary.cpp perf-test-node.js perf-test.js quick-test.cpp |
diffstat | 5 files changed, 34 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.inc.em Mon Sep 26 16:18:44 2016 +0100 +++ b/Makefile.inc.em Tue Sep 27 15:04:59 2016 +0100 @@ -44,7 +44,7 @@ DEFINES := $(DEFINES) -CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) +CXXFLAGS := -std=c++11 -fPIC -fno-exceptions -Wall -Wextra $(DEFINES) $(OPTFLAGS) INCPATH := -I$(SDK_DIR) -I.. -I../json $(INCPATH)
--- a/VamPipePluginLibrary.cpp Mon Sep 26 16:18:44 2016 +0100 +++ b/VamPipePluginLibrary.cpp Tue Sep 27 15:04:59 2016 +0100 @@ -178,7 +178,7 @@ VampJson::BufferSerialisation serialisation = (m_useBase64 ? VampJson::BufferSerialisation::Base64 : - VampJson::BufferSerialisation::Text); + VampJson::BufferSerialisation::Array); Json rj;
--- a/perf-test-node.js Mon Sep 26 16:18:44 2016 +0100 +++ b/perf-test-node.js Tue Sep 27 15:04:59 2016 +0100 @@ -39,7 +39,7 @@ function processRaw(request) { const nChannels = request.processInput.inputBuffers.length; - const nFrames = request.processInput.inputBuffers[0].values.length; + const nFrames = request.processInput.inputBuffers[0].length; const buffersPtr = exampleModule._malloc(nChannels * 4); const buffers = new Uint32Array( @@ -49,7 +49,7 @@ const framesPtr = exampleModule._malloc(nFrames * 4); const frames = new Float32Array( exampleModule.HEAPU8.buffer, framesPtr, nFrames); - frames.set(request.processInput.inputBuffers[i].values); + frames.set(request.processInput.inputBuffers[i]); buffers[i] = framesPtr; } @@ -64,8 +64,8 @@ } exampleModule._free(buffersPtr); - const response = JSON.parse( - exampleModule.Pointer_stringify(responseJson)); + const responseJstr = exampleModule.Pointer_stringify(responseJson); + const response = JSON.parse(responseJstr); vampipeFreeJson(responseJson); @@ -121,10 +121,13 @@ if (wfeature.label != null) { out.label = wfeature.label; } - if (wfeature.b64values != null && wfeature.b64values !== "") { - out.values = myFromBase64(wfeature.b64values); - } else if (wfeature.values != null) { - out.values = new Float32Array(wfeature.values); + const vv = wfeature.featureValues; + if (vv != null) { + if (typeof vv === "string") { + out.featureValues = myFromBase64(vv); + } else { + out.featureValues = new Float32Array(vv); + } } return out; } @@ -160,9 +163,8 @@ return { timestamp : frame2timestamp(n * blockSize, rate), inputBuffers : [ - { values : new Float32Array( - Array.from(Array(blockSize).keys(), - n => n / blockSize)) } + new Float32Array(Array.from(Array(blockSize).keys(), + n => n / blockSize)) ], } }); @@ -182,7 +184,7 @@ "processInput": blocks[i] }); let features = responseToFeatureSet(result); - let count = features.get("counts")[0].values[0]; + let count = features.get("counts")[0].featureValues[0]; total += count; } @@ -204,7 +206,7 @@ "processInput": blocks[i] }); let features = responseToFeatureSet(result); - let count = features.get("counts")[0].values[0]; + let count = features.get("counts")[0].featureValues[0]; total += count; }
--- a/perf-test.js Mon Sep 26 16:18:44 2016 +0100 +++ b/perf-test.js Tue Sep 27 15:04:59 2016 +0100 @@ -37,7 +37,7 @@ function processRaw(request) { const nChannels = request.processInput.inputBuffers.length; - const nFrames = request.processInput.inputBuffers[0].values.length; + const nFrames = request.processInput.inputBuffers[0].length; const buffersPtr = exampleModule._malloc(nChannels * 4); const buffers = new Uint32Array( @@ -47,7 +47,7 @@ const framesPtr = exampleModule._malloc(nFrames * 4); const frames = new Float32Array( exampleModule.HEAPU8.buffer, framesPtr, nFrames); - frames.set(request.processInput.inputBuffers[i].values); + frames.set(request.processInput.inputBuffers[i]); buffers[i] = framesPtr; } @@ -62,8 +62,8 @@ } exampleModule._free(buffersPtr); - const response = JSON.parse( - exampleModule.Pointer_stringify(responseJson)); + const responseJstr = exampleModule.Pointer_stringify(responseJson); + const response = JSON.parse(responseJstr); vampipeFreeJson(responseJson); @@ -119,10 +119,13 @@ if (wfeature.label != null) { out.label = wfeature.label; } - if (wfeature.b64values != null && wfeature.b64values !== "") { - out.values = myFromBase64(wfeature.b64values); - } else if (wfeature.values != null) { - out.values = new Float32Array(wfeature.values); + const vv = wfeature.featureValues; + if (vv != null) { + if (typeof vv === "string") { + out.featureValues = myFromBase64(vv); + } else { + out.featureValues = new Float32Array(vv); + } } return out; } @@ -158,9 +161,8 @@ return { timestamp : frame2timestamp(n * blockSize, rate), inputBuffers : [ - { values : new Float32Array( - Array.from(Array(blockSize).keys(), - n => n / blockSize)) } + new Float32Array(Array.from(Array(blockSize).keys(), + n => n / blockSize)) ], } }); @@ -180,7 +182,7 @@ "processInput": blocks[i] }); let features = responseToFeatureSet(result); - let count = features.get("counts")[0].values[0]; + let count = features.get("counts")[0].featureValues[0]; total += count; } @@ -202,7 +204,7 @@ "processInput": blocks[i] }); let features = responseToFeatureSet(result); - let count = features.get("counts")[0].values[0]; + let count = features.get("counts")[0].featureValues[0]; total += count; }
--- a/quick-test.cpp Mon Sep 26 16:18:44 2016 +0100 +++ b/quick-test.cpp Tue Sep 27 15:04:59 2016 +0100 @@ -45,12 +45,12 @@ cout << configResponse << endl; freeFn(configResponse); - string processRequest = "{\"type\":\"process\",\"content\":{\"pluginHandle\":1,\"processInput\":{\"timestamp\":{\"s\":0,\"n\":0},\"inputBuffers\":[{\"values\":[0,1,0,-1,0,1,0,-1]}]}}}"; + 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\":[{\"b64values\":\"AAAAAAAAgD8AAAAAAACAvwAAAAAAAIA/AAAAAAAAgL8\"}]}}}"; + 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);