src/spectral/mfcc.c: also loop over channels
authorPaul Brossier <piem@piem.org>
Sun, 11 Oct 2009 10:49:49 +0000 (12:49 +0200)
committerPaul Brossier <piem@piem.org>
Sun, 11 Oct 2009 10:49:49 +0000 (12:49 +0200)
src/spectral/mfcc.c

index ea82c468c6a5301e243a3825a70f69c6e68dccc2..0b3c2cb9b1ced52a18e06cd90bc8e279bd52e0e0 100644 (file)
@@ -99,7 +99,7 @@ del_aubio_mfcc (aubio_mfcc_t * mf)
 void
 aubio_mfcc_do (aubio_mfcc_t * mf, cvec_t * in, fvec_t * out)
 {
-  uint_t i, j;
+  uint_t i, j, k;
 
   /* compute filterbank */
   aubio_filterbank_do (mf->fb, in, mf->in_dct);
@@ -114,10 +114,12 @@ aubio_mfcc_do (aubio_mfcc_t * mf, cvec_t * in, fvec_t * out)
   fvec_zeros(out);
 
   /* compute discrete cosine transform */
-  for (i = 0; i < mf->n_filters; i++) {
-    for (j = 0; j < mf->n_coefs; j++) {
-      out->data[0][j] += mf->in_dct->data[0][i]
-          * mf->dct_coeffs->data[i][j];
+  for (i = 0; i < out->channels; i++) {
+    for (j = 0; j < mf->n_filters; j++) {
+      for (k = 0; k < mf->n_coefs; k++) {
+        out->data[i][k] += mf->in_dct->data[i][j]
+            * mf->dct_coeffs->data[j][k];
+      }
     }
   }