src/io/source_sndfile.c: pad with 0 when end of file is reached
authorPaul Brossier <piem@piem.org>
Fri, 22 Mar 2013 01:50:06 +0000 (20:50 -0500)
committerPaul Brossier <piem@piem.org>
Fri, 22 Mar 2013 01:50:06 +0000 (20:50 -0500)
src/io/source_sndfile.c

index 57a069ee953178ae974b29c05e5d578de2519f7d..489dfbb72f01da9fcb4bd80de7d2892c2d88fc8a 100644 (file)
@@ -171,6 +171,13 @@ void aubio_source_sndfile_do(aubio_source_sndfile_t * s, fvec_t * read_data, uin
 #endif /* HAVE_SAMPLERATE */
 
   *read = (int)FLOOR(s->ratio * read_samples / input_channels + .5);
+
+  if (*read < s->hop_size) {
+    for (j = *read; j < s->hop_size; j++) {
+      data[j] = 0;
+    }
+  }
+
 }
 
 void aubio_source_sndfile_do_multi(aubio_source_sndfile_t * s, fmat_t * read_data, uint_t * read){
@@ -205,6 +212,15 @@ void aubio_source_sndfile_do_multi(aubio_source_sndfile_t * s, fmat_t * read_dat
 #endif /* HAVE_SAMPLERATE */
 
   *read = (int)FLOOR(s->ratio * read_samples / input_channels + .5);
+
+  if (*read < s->hop_size) {
+    for (i = 0; i < input_channels; i++) {
+      for (j = *read; j < s->hop_size; j++) {
+        data[i][j] = 0.;
+      }
+    }
+  }
+
 }
 
 uint_t aubio_source_sndfile_get_samplerate(aubio_source_sndfile_t * s) {