Mercurial > hg > piper-vamp-js
changeset 23:40da19b655a7 outputid-string-in-featureset
Update adapter etc for feature set strings
author | Chris Cannam |
---|---|
date | Fri, 16 Sep 2016 16:28:47 +0100 |
parents | 922c3381cb20 |
children | 2df80eb3e962 |
files | VamPipePluginLibrary.cpp |
diffstat | 1 files changed, 44 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/VamPipePluginLibrary.cpp Fri Sep 16 10:14:38 2016 +0100 +++ b/VamPipePluginLibrary.cpp Fri Sep 16 16:28:47 2016 +0100 @@ -123,25 +123,34 @@ VampJson::BufferSerialisation::Base64 : VampJson::BufferSerialisation::Text); - switch (rr.type) { + if (!rr.success) { - case RRType::List: - j = VampJson::fromVampResponse_List("", rr.listResponse); - break; - case RRType::Load: - j = VampJson::fromVampResponse_Load(rr.loadResponse, m_mapper); - break; - case RRType::Configure: - j = VampJson::fromVampResponse_Configure(rr.configurationResponse); - break; - case RRType::Process: - j = VampJson::fromVampResponse_Process(rr.processResponse, serialisation); - break; - case RRType::Finish: - j = VampJson::fromVampResponse_Finish(rr.finishResponse, serialisation); - break; - case RRType::NotValid: - break; + j = VampJson::fromError(rr.errorText, rr.type); + + } else { + + switch (rr.type) { + + case RRType::List: + j = VampJson::fromVampResponse_List("", rr.listResponse); + break; + case RRType::Load: + j = VampJson::fromVampResponse_Load(rr.loadResponse, m_mapper); + break; + case RRType::Configure: + j = VampJson::fromVampResponse_Configure(rr.configurationResponse); + break; + case RRType::Process: + j = VampJson::fromVampResponse_Process + (rr.processResponse, m_mapper, serialisation); + break; + case RRType::Finish: + j = VampJson::fromVampResponse_Finish + (rr.finishResponse, m_mapper, serialisation); + break; + case RRType::NotValid: + break; + } } return j.dump(); @@ -209,7 +218,8 @@ Vamp::Plugin *plugin = m_mapper.handleToPlugin(pluginHandle); Vamp::RealTime timestamp(sec, nsec); - + + response.processResponse.plugin = plugin; response.processResponse.features = plugin->process(inputBuffers, timestamp); response.success = true; @@ -293,6 +303,7 @@ fbuffers[i] = preq.inputBuffers[i].data(); } + response.processResponse.plugin = preq.plugin; response.processResponse.features = preq.plugin->process(fbuffers, preq.timestamp); response.success = true; @@ -303,13 +314,14 @@ case RRType::Finish: { - auto h = m_mapper.pluginToHandle(request.finishPlugin); - + response.finishResponse.plugin = request.finishPlugin; response.finishResponse.features = request.finishPlugin->getRemainingFeatures(); - m_mapper.removePlugin(h); - delete request.finishPlugin; + // We do not delete the plugin here -- we need it in the + // mapper when converting the features. It gets deleted + // below, after the writeResponse() call. + response.success = true; break; } @@ -318,7 +330,15 @@ break; } - return writeResponse(response); + string rstr = writeResponse(response); + + if (request.type == RRType::Finish) { + auto h = m_mapper.pluginToHandle(request.finishPlugin); + m_mapper.removePlugin(h); + delete request.finishPlugin; + } + + return rstr; } catch (const std::exception &e) { return VampJson::fromException(e, request.type).dump();