Mercurial > hg > piper-vamp-js
comparison VamPipePluginLibrary.cpp @ 92:3b7b709db48e
Update adapter etc for feature set strings
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 16 Sep 2016 16:28:47 +0100 |
parents | 6c4b43298968 |
children | 2df80eb3e962 |
comparison
equal
deleted
inserted
replaced
91:fb3912e09acf | 92:3b7b709db48e |
---|---|
121 VampJson::BufferSerialisation serialisation = | 121 VampJson::BufferSerialisation serialisation = |
122 (m_useBase64 ? | 122 (m_useBase64 ? |
123 VampJson::BufferSerialisation::Base64 : | 123 VampJson::BufferSerialisation::Base64 : |
124 VampJson::BufferSerialisation::Text); | 124 VampJson::BufferSerialisation::Text); |
125 | 125 |
126 switch (rr.type) { | 126 if (!rr.success) { |
127 | 127 |
128 case RRType::List: | 128 j = VampJson::fromError(rr.errorText, rr.type); |
129 j = VampJson::fromVampResponse_List("", rr.listResponse); | 129 |
130 break; | 130 } else { |
131 case RRType::Load: | 131 |
132 j = VampJson::fromVampResponse_Load(rr.loadResponse, m_mapper); | 132 switch (rr.type) { |
133 break; | 133 |
134 case RRType::Configure: | 134 case RRType::List: |
135 j = VampJson::fromVampResponse_Configure(rr.configurationResponse); | 135 j = VampJson::fromVampResponse_List("", rr.listResponse); |
136 break; | 136 break; |
137 case RRType::Process: | 137 case RRType::Load: |
138 j = VampJson::fromVampResponse_Process(rr.processResponse, serialisation); | 138 j = VampJson::fromVampResponse_Load(rr.loadResponse, m_mapper); |
139 break; | 139 break; |
140 case RRType::Finish: | 140 case RRType::Configure: |
141 j = VampJson::fromVampResponse_Finish(rr.finishResponse, serialisation); | 141 j = VampJson::fromVampResponse_Configure(rr.configurationResponse); |
142 break; | 142 break; |
143 case RRType::NotValid: | 143 case RRType::Process: |
144 break; | 144 j = VampJson::fromVampResponse_Process |
145 (rr.processResponse, m_mapper, serialisation); | |
146 break; | |
147 case RRType::Finish: | |
148 j = VampJson::fromVampResponse_Finish | |
149 (rr.finishResponse, m_mapper, serialisation); | |
150 break; | |
151 case RRType::NotValid: | |
152 break; | |
153 } | |
145 } | 154 } |
146 | 155 |
147 return j.dump(); | 156 return j.dump(); |
148 } | 157 } |
149 | 158 |
207 throw runtime_error("plugin has not been configured"); | 216 throw runtime_error("plugin has not been configured"); |
208 } | 217 } |
209 | 218 |
210 Vamp::Plugin *plugin = m_mapper.handleToPlugin(pluginHandle); | 219 Vamp::Plugin *plugin = m_mapper.handleToPlugin(pluginHandle); |
211 Vamp::RealTime timestamp(sec, nsec); | 220 Vamp::RealTime timestamp(sec, nsec); |
212 | 221 |
222 response.processResponse.plugin = plugin; | |
213 response.processResponse.features = plugin->process(inputBuffers, timestamp); | 223 response.processResponse.features = plugin->process(inputBuffers, timestamp); |
214 response.success = true; | 224 response.success = true; |
215 | 225 |
216 m_useBase64 = true; | 226 m_useBase64 = true; |
217 | 227 |
291 throw runtime_error("wrong block size supplied to process"); | 301 throw runtime_error("wrong block size supplied to process"); |
292 } | 302 } |
293 fbuffers[i] = preq.inputBuffers[i].data(); | 303 fbuffers[i] = preq.inputBuffers[i].data(); |
294 } | 304 } |
295 | 305 |
306 response.processResponse.plugin = preq.plugin; | |
296 response.processResponse.features = | 307 response.processResponse.features = |
297 preq.plugin->process(fbuffers, preq.timestamp); | 308 preq.plugin->process(fbuffers, preq.timestamp); |
298 response.success = true; | 309 response.success = true; |
299 | 310 |
300 delete[] fbuffers; | 311 delete[] fbuffers; |
301 break; | 312 break; |
302 } | 313 } |
303 | 314 |
304 case RRType::Finish: | 315 case RRType::Finish: |
305 { | 316 { |
306 auto h = m_mapper.pluginToHandle(request.finishPlugin); | 317 response.finishResponse.plugin = request.finishPlugin; |
307 | |
308 response.finishResponse.features = | 318 response.finishResponse.features = |
309 request.finishPlugin->getRemainingFeatures(); | 319 request.finishPlugin->getRemainingFeatures(); |
310 | 320 |
311 m_mapper.removePlugin(h); | 321 // We do not delete the plugin here -- we need it in the |
312 delete request.finishPlugin; | 322 // mapper when converting the features. It gets deleted |
323 // below, after the writeResponse() call. | |
324 | |
313 response.success = true; | 325 response.success = true; |
314 break; | 326 break; |
315 } | 327 } |
316 | 328 |
317 case RRType::NotValid: | 329 case RRType::NotValid: |
318 break; | 330 break; |
319 } | 331 } |
320 | 332 |
321 return writeResponse(response); | 333 string rstr = writeResponse(response); |
334 | |
335 if (request.type == RRType::Finish) { | |
336 auto h = m_mapper.pluginToHandle(request.finishPlugin); | |
337 m_mapper.removePlugin(h); | |
338 delete request.finishPlugin; | |
339 } | |
340 | |
341 return rstr; | |
322 | 342 |
323 } catch (const std::exception &e) { | 343 } catch (const std::exception &e) { |
324 return VampJson::fromException(e, request.type).dump(); | 344 return VampJson::fromException(e, request.type).dump(); |
325 } | 345 } |
326 } | 346 } |