PyObject_HEAD
aubio_filter_t * o;
uint_t order;
+ fvec_t *out;
} Py_filter;
static char Py_filter_doc[] = "filter object";
if (self->o == NULL) {
return -1;
}
-
+ self->out = new_fvec(Py_default_vector_length);
return 0;
}
static void
Py_filter_del (Py_filter * self)
{
+ del_fvec(self->out);
del_aubio_filter (self->o);
Py_TYPE(self)->tp_free ((PyObject *) self);
}
return NULL;
}
+ // reallocate the output if needed
+ if (vec->length != self->out->length) {
+ del_fvec(self->out);
+ self->out = new_fvec(vec->length);
+ }
// compute the function
- fvec_t * out = new_fvec(vec->length);
- aubio_filter_do_outplace (self->o, vec, out);
- return PyAubio_CFvecToArray(out);
+ aubio_filter_do_outplace (self->o, vec, self->out);
+ return PyAubio_CFvecToArray(self->out);
}
static PyObject *