shithub: aubio

Download patch

ref: f1100a49500036d9d901ce7869ce92f5c806dde3
parent: 9e58e78ffa2aa6c2cf653879c820919bdf28ca4b
author: Paul Brossier <piem@piem.org>
date: Thu Jan 23 17:17:18 EST 2014

ext/py-sink.c: do not generate

--- a/python/ext/aubio-types.h
+++ b/python/ext/aubio-types.h
@@ -70,3 +70,4 @@
 
 extern PyTypeObject Py_sourceType;
 
+extern PyTypeObject Py_sinkType;
--- a/python/ext/aubiomodule.c
+++ b/python/ext/aubiomodule.c
@@ -199,6 +199,7 @@
       || (PyType_Ready (&Py_fftType) < 0)
       || (PyType_Ready (&Py_pvocType) < 0)
       || (PyType_Ready (&Py_sourceType) < 0)
+      || (PyType_Ready (&Py_sinkType) < 0)
       // generated objects
       || (generated_types_ready() < 0 )
   ) {
@@ -229,6 +230,8 @@
   PyModule_AddObject (m, "pvoc", (PyObject *) & Py_pvocType);
   Py_INCREF (&Py_sourceType);
   PyModule_AddObject (m, "source", (PyObject *) & Py_sourceType);
+  Py_INCREF (&Py_sinkType);
+  PyModule_AddObject (m, "sink", (PyObject *) & Py_sinkType);
 
   // add generated objects
   add_generated_objects(m);
--- /dev/null
+++ b/python/ext/py-sink.c
@@ -1,0 +1,97 @@
+#include "aubiowraphell.h"
+
+typedef struct
+{
+  PyObject_HEAD
+  aubio_sink_t * o;
+  char_t* uri;
+  uint_t samplerate;
+} Py_sink;
+
+static char Py_sink_doc[] = "sink object";
+
+static PyObject *
+Py_sink_new (PyTypeObject * pytype, PyObject * args, PyObject * kwds)
+{
+  Py_sink *self;
+  char_t* uri = NULL;
+  uint_t samplerate = 0;
+  static char *kwlist[] = { "uri", "samplerate", NULL };
+
+  if (!PyArg_ParseTupleAndKeywords (args, kwds, "|sI", kwlist,
+          &uri, &samplerate)) {
+    return NULL;
+  }
+
+  self = (Py_sink *) pytype->tp_alloc (pytype, 0);
+
+  if (self == NULL) {
+    return NULL;
+  }
+
+  self->uri = "none";
+  if (uri != NULL) {
+    self->uri = uri;
+  }
+
+  self->samplerate = Py_aubio_default_samplerate;
+  if ((sint_t)samplerate > 0) {
+    self->samplerate = samplerate;
+  } else if ((sint_t)samplerate < 0) {
+    PyErr_SetString (PyExc_ValueError,
+        "can not use negative value for samplerate");
+    return NULL;
+  }
+
+  return (PyObject *) self;
+}
+
+AUBIO_INIT(sink , self->uri, self->samplerate)
+
+AUBIO_DEL(sink)
+
+/* function Py_sink_do */
+static PyObject * 
+Py_sink_do(Py_sink * self, PyObject * args)
+{
+  /* input vectors python prototypes */
+  PyObject * write_data_obj;
+
+  /* input vectors prototypes */
+  fvec_t* write_data;
+  uint_t write;
+
+
+  if (!PyArg_ParseTuple (args, "OI", &write_data_obj, &write)) {
+    return NULL;
+  }
+
+
+  /* input vectors parsing */
+  write_data = PyAubio_ArrayToCFvec (write_data_obj);
+
+  if (write_data == NULL) {
+    return NULL;
+  }
+
+  
+  
+
+
+  /* compute _do function */
+  aubio_sink_do (self->o, write_data, write);
+
+  Py_RETURN_NONE;
+}
+
+AUBIO_MEMBERS_START(sink)
+  {"uri", T_STRING, offsetof (Py_sink, uri), READONLY, ""},
+  {"samplerate", T_INT, offsetof (Py_sink, samplerate), READONLY, ""},
+AUBIO_MEMBERS_STOP(sink)
+
+
+static PyMethodDef Py_sink_methods[] = {
+  {NULL} /* sentinel */
+};
+
+AUBIO_TYPEOBJECT(sink, "aubio.sink")
--- a/python/lib/generator.py
+++ b/python/lib/generator.py
@@ -54,6 +54,7 @@
       'pitchspecacf',
       'pitchyin',
       'pitchyinfft',
+      'sink',
       'sink_apple_audio',
       'sink_sndfile',
       'source',
--- a/python/setup.py
+++ b/python/setup.py
@@ -54,6 +54,7 @@
     "ext/py-fft.c",
     "ext/py-phasevoc.c",
     "ext/py-source.c",
+    "ext/py-sink.c",
     # generated files
     ] + generated_object_files,
     include_dirs = include_dirs,