Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/spectral/mfcc.c

    rd95ff38 r41bf913  
    2222#include "aubio_priv.h"
    2323#include "fvec.h"
    24 #include "fmat.h"
    2524#include "cvec.h"
    2625#include "mathutils.h"
     
    4140  aubio_filterbank_t *fb;   /** filter bank */
    4241  fvec_t *in_dct;           /** input buffer for dct * [fb->n_filters] */
    43   fmat_t *dct_coeffs;       /** DCT transform n_filters * n_coeffs */
     42  fvec_t *dct_coeffs;       /** DCT transform n_filters * n_coeffs */
    4443};
    4544
     
    6564
    6665  /* allocating buffers */
    67   mfcc->in_dct = new_fvec (n_filters);
     66  mfcc->in_dct = new_fvec (n_filters, 1);
    6867
    69   mfcc->dct_coeffs = new_fmat (n_coefs, n_filters);
     68  mfcc->dct_coeffs = new_fvec (n_coefs, n_filters);
    7069
    7170  /* compute DCT transform dct_coeffs[i][j] as
     
    101100aubio_mfcc_do (aubio_mfcc_t * mf, cvec_t * in, fvec_t * out)
    102101{
    103   uint_t j, k;
     102  uint_t i, j, k;
    104103
    105104  /* compute filterbank */
     
    116115
    117116  /* compute discrete cosine transform */
    118   for (j = 0; j < mf->n_filters; j++) {
    119     for (k = 0; k < mf->n_coefs; k++) {
    120       out->data[k] += mf->in_dct->data[j]
    121           * mf->dct_coeffs->data[j][k];
     117  for (i = 0; i < out->channels; i++) {
     118    for (j = 0; j < mf->n_filters; j++) {
     119      for (k = 0; k < mf->n_coefs; k++) {
     120        out->data[i][k] += mf->in_dct->data[i][j]
     121            * mf->dct_coeffs->data[j][k];
     122      }
    122123    }
    123124  }
Note: See TracChangeset for help on using the changeset viewer.