comparison PyPluginObject.cpp @ 41:55fcd0e3e513

Fix handling of 2D NumPy arrays
author Chris Cannam
date Wed, 26 Nov 2014 18:08:53 +0000
parents fa3f80d4e340
children 9dd449a19004
comparison
equal deleted inserted replaced
40:fa3f80d4e340 41:55fcd0e3e513
390 if (conv.error) { 390 if (conv.error) {
391 PyErr_SetString(PyExc_TypeError, conv.getError().str().c_str()); 391 PyErr_SetString(PyExc_TypeError, conv.getError().str().c_str());
392 return data; 392 return data;
393 } 393 }
394 394
395 if ((int)data.size() != channels) {
396 // cerr << "Wrong number of channels: got " << data.size() << ", expected " << channels << endl;
397 PyErr_SetString(PyExc_TypeError, "Wrong number of channels");
398 return vector<vector<float> >();
399 }
400
395 } else { 401 } else {
396 402
397 if (!PyList_Check(pyBuffer)) { 403 if (!PyList_Check(pyBuffer)) {
398 PyErr_SetString(PyExc_TypeError, "List of NumPy Array required for process input."); 404 PyErr_SetString(PyExc_TypeError, "List of NumPy Array required for process input.");
399 return data; 405 return data;
400 } 406 }
401 407
402 if (PyList_GET_SIZE(pyBuffer) != channels) { 408 if (PyList_GET_SIZE(pyBuffer) != channels) {
403 cerr << "Wrong number of channels: got " << PyList_GET_SIZE(pyBuffer) << ", expected " << channels << endl; 409 // cerr << "Wrong number of channels: got " << PyList_GET_SIZE(pyBuffer) << ", expected " << channels << endl;
404 PyErr_SetString(PyExc_TypeError, "Wrong number of channels"); 410 PyErr_SetString(PyExc_TypeError, "Wrong number of channels");
405 return data; 411 return data;
406 } 412 }
407 413
408 for (int c = 0; c < channels; ++c) { 414 for (int c = 0; c < channels; ++c) {
409 PyObject *cbuf = PyList_GET_ITEM(pyBuffer, c); 415 PyObject *cbuf = PyList_GET_ITEM(pyBuffer, c);
410 data.push_back(conv.PyValue_To_FloatVector(cbuf)); 416 data.push_back(conv.PyValue_To_FloatVector(cbuf));
411 } 417 }
412 418 }
413 for (int c = 0; c < channels; ++c) { 419
414 if ((int)data[c].size() != blockSize) { 420 for (int c = 0; c < channels; ++c) {
415 cerr << "Wrong number of samples on channel " << c << ": expected " << blockSize << " (plugin's block size), got " << data[c].size() << endl; 421 if ((int)data[c].size() != blockSize) {
416 PyErr_SetString(PyExc_TypeError, "Wrong number of samples"); 422 // cerr << "Wrong number of samples on channel " << c << ": expected " << blockSize << " (plugin's block size), got " << data[c].size() << endl;
417 return vector<vector<float> >(); 423 PyErr_SetString(PyExc_TypeError, "Wrong number of samples");
418 } 424 return vector<vector<float> >();
419 } 425 }
420 } 426 }
421 427
422 return data; 428 return data;
423 } 429 }