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 }