ref: 2eccf22c76ecb7e80b3d1678147b0451cee34ad5
parent: 4ed4b1f010a68edc99c5edaf7e77f3135cead02c
	author: Paul Brossier <piem@piem.org>
	date: Sun Feb 23 08:29:42 EST 2014
	
src/io/sink_sndfile.c: add missing do_multi
--- a/src/io/sink_sndfile.c
+++ b/src/io/sink_sndfile.c
@@ -26,8 +26,9 @@
#include <sndfile.h>
#include "aubio_priv.h"
-#include "sink_sndfile.h"
#include "fvec.h"
+#include "fmat.h"
+#include "io/sink_sndfile.h"
#define MAX_CHANNELS 6
#define MAX_SIZE 4096
@@ -153,6 +154,34 @@
/* interleaving data */
   for ( i = 0; i < channels; i++) {pwrite = (smpl_t *)write_data->data;
+    for (j = 0; j < write; j++) {+ s->scratch_data[channels*j+i] = pwrite[j];
+ }
+ }
+
+ written_frames = sf_write_float (s->handle, s->scratch_data, nsamples);
+  if (written_frames/channels != write) {+    AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written",+ write, s->path, (uint_t)written_frames);
+ }
+ return;
+}
+
+void aubio_sink_sndfile_do_multi(aubio_sink_sndfile_t *s, fmat_t * write_data, uint_t write){+ uint_t i, j, channels = s->channels;
+ int nsamples = channels*write;
+ smpl_t *pwrite;
+ sf_count_t written_frames;
+
+  if (write > s->max_size) {+    AUBIO_WRN("trying to write %d frames, but only %d can be written at a time",+ write, s->max_size);
+ write = s->max_size;
+ }
+
+ /* interleaving data */
+  for ( i = 0; i < write_data->height; i++) {+ pwrite = (smpl_t *)write_data->data[i];
     for (j = 0; j < write; j++) {s->scratch_data[channels*j+i] = pwrite[j];
}
--
⑨