У меня есть библиотека C ++, обрабатывающая чтение и обработку данных DAB (prety large, многопоточность)
Я пишу (пытаясь написать) интерфейс Python для этого. Интерфейс содержит несколько обратных вызовов, один для аудио. Он вызывается из библиотеки с параметрами: массив C с образцами PCM, количеством образцов и частотой дискретизации. Для «передачи» данных в интерфейс Python массив C «Python», а обратный вызов C вызывает функцию Python (ссылка на которую передается ранее)
Вопрос в том, что я, вероятно, что-то делаю не так, поскольку библиотека — при вызове из Python — вылетает при точном вызове PyArray_SimpleNewFromData.
Мне — новичку в Python — может показаться, что библиотека C, содержащая реализацию PyArray_SimpleNewFromData (которая на самом деле кажется макросом) отсутствует (ошибка постоянно является нарушением сегментации.
Если да, то есть ли библиотека, которую мне не хватает (и где ее найти?)
Моя система:
Fedora 25, 64б
Python 3.5
void callback_audio (int16_t *b, int size, int rate) {
PyObject *arglist;
PyObject *result;
PyObject *theArray;
PyGILState_STATE gstate;
npy_intp dims [1];
dims [0] = size;
if (size == 0)
return;
gstate = PyGILState_Ensure ();
theArray = PyArray_SimpleNewFromData (1, dims, NPY_SHORT, (void *)b);
arglist = Py_BuildValue ("Oh", theArray, rate);
result = PyEval_CallObject (callbackAudio, arglist);
Py_DECREF (arglist);
Py_DECREF (theArray);
PyGILState_Release (gstate);
}
Любая помощь приветствуется
Спасибо
Задача ещё не решена.
Других решений пока нет …