/* HTS_b2en: calculate frame energy */ static double HTS_b2en(HTS_Vocoder * v, const double *b, const size_t m, const double a) { size_t i; double en = 0.0; double *cep; double *ir; if (v->spectrum2en_size < m) { if (v->spectrum2en_buff != NULL) cst_free(v->spectrum2en_buff); v->spectrum2en_buff = cst_alloc(double,((m + 1) + 2 * IRLENG)); v->spectrum2en_size = m; } cep = v->spectrum2en_buff + m + 1; ir = cep + IRLENG; b2mc(b, v->spectrum2en_buff, m, a); freqt(v->spectrum2en_buff, m, cep, IRLENG, -a); c2ir(cep, IRLENG, ir); for (i = 0; i < IRLENG; i++) en += ir[i] * ir[i]; return (en); }
int main(int argc, char **argv) { int m = ORDER, m1; FILE *fp = stdin; double a = ALPHA, *x; if ((cmnd = strrchr(argv[0], '/')) == NULL) cmnd = argv[0]; else cmnd++; while (--argc) if (**++argv == '-') { switch (*(*argv + 1)) { case 'a': a = atof(*++argv); --argc; break; case 'm': m = atoi(*++argv); --argc; break; case 'h': usage(0); default: fprintf(stderr, "%s : Invalid option '%c'!\n", cmnd, *(*argv + 1)); usage(1); } } else fp = getfp(*argv, "rb"); m1 = m + 1; x = dgetmem(m1); while (freadf(x, sizeof(*x), m1, fp) == m1) { b2mc(x, x, m, a); fwritef(x, sizeof(*x), m1, stdout); } return (0); }