[io] source_pad_do_output to pad extra channels
[aubio.git] / src / io / ioutils.c
index 55f7c4f..3427cd1 100644 (file)
@@ -111,6 +111,15 @@ aubio_source_pad_multi_output (fmat_t *read_data,
           read_data->length - source_read);
     }
   }
+
+  // destination matrix has more channels than the file
+  // copy channels from the source to extra output channels
+  if (read_data->height > source_channels) {
+    for (i = source_channels; i < read_data->height; i++) {
+      AUBIO_MEMCPY(read_data->data[i], read_data->data[i % source_channels],
+          sizeof(smpl_t) * read_data->length);
+    }
+  }
 }
 
 uint_t