From: Paul Brossier Date: Thu, 13 Dec 2018 00:46:29 +0000 (+0100) Subject: [io] sink_wavwrite_do writes all to channels if more than one X-Git-Tag: 0.4.9~115 X-Git-Url: https://git.aubio.org/?p=aubio.git;a=commitdiff_plain;h=a97eb17080f83a762b0004119080b07926e4bf7e [io] sink_wavwrite_do writes all to channels if more than one --- diff --git a/src/io/sink_wavwrite.c b/src/io/sink_wavwrite.c index 2e456ea7..6e39a3ee 100644 --- a/src/io/sink_wavwrite.c +++ b/src/io/sink_wavwrite.c @@ -233,7 +233,7 @@ beach: void aubio_sink_wavwrite_do(aubio_sink_wavwrite_t *s, fvec_t * write_data, uint_t write){ - uint_t i = 0, written_frames = 0; + uint_t c = 0, i = 0, written_frames = 0; if (write > s->max_size) { AUBIO_WRN("sink_wavwrite: trying to write %d frames to %s, " @@ -241,10 +241,12 @@ void aubio_sink_wavwrite_do(aubio_sink_wavwrite_t *s, fvec_t * write_data, uint_ write = s->max_size; } - for (i = 0; i < write; i++) { - s->scratch_data[i] = HTOLES(FLOAT_TO_SHORT(write_data->data[i])); + for (c = 0; c < s->channels; c++) { + for (i = 0; i < write; i++) { + s->scratch_data[i * s->channels + c] = HTOLES(FLOAT_TO_SHORT(write_data->data[i])); + } } - written_frames = fwrite(s->scratch_data, 2, write, s->fid); + written_frames = fwrite(s->scratch_data, 2, write * s->channels, s->fid); if (written_frames != write) { AUBIO_WRN("sink_wavwrite: trying to write %d frames to %s, "