# HG changeset patch # User Chris Cannam # Date 1474985099 -3600 # Node ID 34480328bf5c39a3c28a92db904f7a28a644f50e # Parent 3faa4e3eedac9b600d90911d514cf60a34c6e748 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). diff -r 3faa4e3eedac -r 34480328bf5c Makefile.inc.em --- 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) diff -r 3faa4e3eedac -r 34480328bf5c VamPipePluginLibrary.cpp --- 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; diff -r 3faa4e3eedac -r 34480328bf5c perf-test-node.js --- 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; } diff -r 3faa4e3eedac -r 34480328bf5c perf-test.js --- 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; } diff -r 3faa4e3eedac -r 34480328bf5c quick-test.cpp --- 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);