Showing the changes to python/ext (1 of 1 file). Show all
Unified · Split
| @@ -9,9 +9,11 @@ typedef struct · 8 unmodified lines | |||
| 9 | uint_t win_s; | 9 | uint_t win_s; |
| 10 | uint_t hop_s; | 10 | uint_t hop_s; |
| 11 | fvec_t vecin; | 11 | fvec_t vecin; |
| 12 | cvec_t *output; | ||
| 13 | cvec_t cvecin; | 12 | cvec_t cvecin; |
| 14 | fvec_t *routput; | 13 | PyObject *output; |
| 14 | cvec_t c_output; | ||
| 15 | PyObject *routput; | ||
| 16 | fvec_t c_routput; | ||
| 15 | } Py_pvoc; | 17 | } Py_pvoc; |
| 16 | 18 | ||
| 17 | 19 | ||
| @@ -70,8 +72,8 @@ Py_pvoc_init (Py_pvoc * self, PyObject * args, PyObject * kwds) · 52 unmodified lines | |||
| 70 | return -1; | 72 | return -1; |
| 71 | } | 73 | } |
| 72 | 74 | ||
| 73 | self->output = new_cvec(self->win_s); | 75 | self->output = new_py_cvec(self->win_s); |
| 74 | self->routput = new_fvec(self->hop_s); | 76 | self->routput = new_py_fvec(self->hop_s); |
| 75 | 77 | ||
| 76 | return 0; | 78 | return 0; |
| 77 | } | 79 | } |
| @@ -80,9 +82,9 @@ Py_pvoc_init (Py_pvoc * self, PyObject * args, PyObject * kwds) · 2 unmodified lines | |||
| 80 | static void | 82 | static void |
| 81 | Py_pvoc_del (Py_pvoc *self, PyObject *unused) | 83 | Py_pvoc_del (Py_pvoc *self, PyObject *unused) |
| 82 | { | 84 | { |
| 85 | Py_XDECREF(self->output); | ||
| 86 | Py_XDECREF(self->routput); | ||
| 83 | del_aubio_pvoc(self->o); | 87 | del_aubio_pvoc(self->o); |
| 84 | del_cvec(self->output); | ||
| 85 | del_fvec(self->routput); | ||
| 86 | Py_TYPE(self)->tp_free((PyObject *) self); | 88 | Py_TYPE(self)->tp_free((PyObject *) self); |
| 87 | } | 89 | } |
| 88 | 90 | ||
| @@ -100,10 +102,13 @@ Py_pvoc_do(Py_pvoc * self, PyObject * args) · 11 unmodified lines | |||
| 100 | return NULL; | 102 | return NULL; |
| 101 | } | 103 | } |
| 102 | 104 | ||
| 105 | Py_INCREF(self->output); | ||
| 106 | if (!PyAubio_PyCvecToCCvec (self->output, &(self->c_output))) { | ||
| 107 | return NULL; | ||
| 108 | } | ||
| 103 | // compute the function | 109 | // compute the function |
| 104 | aubio_pvoc_do (self->o, &(self->vecin), self->output); | 110 | aubio_pvoc_do (self->o, &(self->vecin), &(self->c_output)); |
| 105 | // convert cvec to py_cvec | 111 | return self->output; |
| 106 | return PyAubio_CCvecToPyCvec(self->output); | ||
| 107 | } | 112 | } |
| 108 | 113 | ||
| 109 | static PyMemberDef Py_pvoc_members[] = { | 114 | static PyMemberDef Py_pvoc_members[] = { |
| @@ -114,7 +119,7 @@ static PyMemberDef Py_pvoc_members[] = { · 4 unmodified lines | |||
| 114 | { NULL } // sentinel | 119 | { NULL } // sentinel |
| 115 | }; | 120 | }; |
| 116 | 121 | ||
| 117 | static PyObject * | 122 | static PyObject * |
| 118 | Py_pvoc_rdo(Py_pvoc * self, PyObject * args) | 123 | Py_pvoc_rdo(Py_pvoc * self, PyObject * args) |
| 119 | { | 124 | { |
| 120 | PyObject *input; | 125 | PyObject *input; |
| @@ -126,9 +131,13 @@ Py_pvoc_rdo(Py_pvoc * self, PyObject * args) · 5 unmodified lines | |||
| 126 | return NULL; | 131 | return NULL; |
| 127 | } | 132 | } |
| 128 | 133 | ||
| 134 | Py_INCREF(self->routput); | ||
| 135 | if (!PyAubio_ArrayToCFvec(self->routput, &(self->c_routput)) ) { | ||
| 136 | return NULL; | ||
| 137 | } | ||
| 129 | // compute the function | 138 | // compute the function |
| 130 | aubio_pvoc_rdo (self->o, &(self->cvecin), self->routput); | 139 | aubio_pvoc_rdo (self->o, &(self->cvecin), &(self->c_routput)); |
| 131 | return PyAubio_CFvecToArray(self->routput); | 140 | return self->routput; |
| 132 | } | 141 | } |
| 133 | 142 | ||
| 134 | static PyMethodDef Py_pvoc_methods[] = { | 143 | static PyMethodDef Py_pvoc_methods[] = { |