From ad1ba08727f1b932eee30ba876ab11a5d675330f Mon Sep 17 00:00:00 2001 From: Paul Brossier Date: Sat, 20 Sep 2014 10:26:13 -0300 Subject: [PATCH] src/io/sink_sndfile.c: improve error messages, set nsamples after write --- src/io/sink_sndfile.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/io/sink_sndfile.c b/src/io/sink_sndfile.c index 5fae2cfd..82d6167b 100644 --- a/src/io/sink_sndfile.c +++ b/src/io/sink_sndfile.c @@ -141,16 +141,18 @@ uint_t aubio_sink_sndfile_open(aubio_sink_sndfile_t *s) { void aubio_sink_sndfile_do(aubio_sink_sndfile_t *s, fvec_t * write_data, uint_t write){ uint_t i, j, channels = s->channels; - int nsamples = channels*write; + int nsamples = 0; 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", + AUBIO_WRN("sink_sndfile: trying to write %d frames, but only %d can be written at a time\n", write, s->max_size); write = s->max_size; } + nsamples = channels * write; + /* interleaving data */ for ( i = 0; i < channels; i++) { pwrite = (smpl_t *)write_data->data; @@ -161,7 +163,7 @@ void aubio_sink_sndfile_do(aubio_sink_sndfile_t *s, fvec_t * write_data, uint_t 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", + AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written\n", write, s->path, (uint_t)written_frames); } return; @@ -169,16 +171,18 @@ void aubio_sink_sndfile_do(aubio_sink_sndfile_t *s, fvec_t * write_data, uint_t 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; + int nsamples = 0; 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", + AUBIO_WRN("sink_sndfile: trying to write %d frames, but only %d can be written at a time\n", write, s->max_size); write = s->max_size; } + nsamples = channels * write; + /* interleaving data */ for ( i = 0; i < write_data->height; i++) { pwrite = (smpl_t *)write_data->data[i]; @@ -189,7 +193,7 @@ void aubio_sink_sndfile_do_multi(aubio_sink_sndfile_t *s, fmat_t * write_data, u 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", + AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written\n", write, s->path, (uint_t)written_frames); } return; -- 2.11.0