int32 fe_close(fe_t * FE) { /* kill FE instance - free everything... */ if (FE->FB_TYPE == MEL_SCALE) { fe_free_2d((void *) FE->MEL_FB->filter_coeffs); fe_free_2d((void *) FE->MEL_FB->mel_cosine); if (FE->MEL_FB->lifter) free(FE->MEL_FB->lifter); free(FE->MEL_FB->left_apex); free(FE->MEL_FB->width); free(FE->MEL_FB); } else { /* We won't end up here, since this was already checked up when we * started. But just in case, let's break, if we're debugging. */ assert(0); } free(FE->OVERFLOW_SAMPS); free(FE->HAMMING_WINDOW); free(FE); return (0); }
int fe_free(fe_t * fe) { if (fe == NULL) return 0; if (--fe->refcount > 0) return fe->refcount; /* kill FE instance - free everything... */ if (fe->mel_fb) { if (fe->mel_fb->mel_cosine) fe_free_2d((void *) fe->mel_fb->mel_cosine); ckd_free(fe->mel_fb->lifter); ckd_free(fe->mel_fb->spec_start); ckd_free(fe->mel_fb->filt_start); ckd_free(fe->mel_fb->filt_width); ckd_free(fe->mel_fb->filt_coeffs); ckd_free(fe->mel_fb); } ckd_free(fe->spch); ckd_free(fe->frame); ckd_free(fe->ccc); ckd_free(fe->sss); ckd_free(fe->spec); ckd_free(fe->mfspec); ckd_free(fe->overflow_samps); ckd_free(fe->hamming_window); cmd_ln_free_r(fe->config); ckd_free(fe); return 0; }
int32 fe_close(fe_t *FE) { /* kill FE instance - free everything... */ if (FE->FB_TYPE==MEL_SCALE) { fe_free_2d((void *)FE->MEL_FB->filter_coeffs); fe_free_2d((void *)FE->MEL_FB->mel_cosine); free(FE->MEL_FB->left_apex); free(FE->MEL_FB->width); free(FE->MEL_FB); } else { fprintf(stderr,"MEL SCALE IS CURRENTLY THE ONLY IMPLEMENTATION!\n"); } free(FE->OVERFLOW_SAMPS); free(FE); return(0); }
static int process(sbthread_t *th) { FILE *raw; int16 *buf; mfcc_t **cepbuf; size_t nsamps; fe_t *fe; long fsize; int32 nfr; char outfile[16]; FILE *logfile; sprintf(outfile, "%03ld.log", (long) sbthread_arg(th)); logfile = fopen(outfile, "w"); pthread_setspecific(logfp_index, (void *)logfile); if ((fe = fe_init_auto_r(sbthread_config(th))) == NULL) return -1; if ((raw = fopen(TESTDATADIR "/chan3.raw", "rb")) == NULL) return -1; fseek(raw, 0, SEEK_END); fsize = ftell(raw); fseek(raw, 0, SEEK_SET); buf = ckd_malloc(fsize); fread(buf, 1, fsize, raw); nsamps = fsize / 2; fe_process_utt(fe, buf, nsamps, &cepbuf, &nfr); E_INFO("nfr = %d\n", nfr); fe_free_2d(cepbuf); ckd_free(buf); fclose(raw); fe_free(fe); fclose(logfile); return 0; }