/* HTS_Window_load: load dynamic windows */ static HTS_Boolean HTS_Window_load(HTS_Window * win, HTS_File ** fp, int size) { int i, j; int fsize, length; char buff[HTS_MAXBUFLEN]; HTS_Boolean result = TRUE; /* check */ if (win == NULL || fp == NULL || size <= 0) return FALSE; win->size = size; win->l_width = (int *) HTS_calloc(win->size, sizeof(int)); win->r_width = (int *) HTS_calloc(win->size, sizeof(int)); win->coefficient = (double **) HTS_calloc(win->size, sizeof(double *)); /* set delta coefficents */ for (i = 0; i < win->size; i++) { if (HTS_get_token(fp[i], buff) == FALSE) { result = FALSE; fsize = 1; } else { fsize = atoi(buff); if (fsize <= 0) { result = FALSE; fsize = 1; } } /* read coefficients */ win->coefficient[i] = (double *) HTS_calloc(fsize, sizeof(double)); for (j = 0; j < fsize; j++) { if (HTS_get_token(fp[i], buff) == FALSE) { result = FALSE; win->coefficient[i][j] = 0.0; } else { win->coefficient[i][j] = (double) atof(buff); } } /* set pointer */ length = fsize / 2; win->coefficient[i] += length; win->l_width[i] = -length; win->r_width[i] = length; if (fsize % 2 == 0) win->r_width[i]--; } /* calcurate max_width to determine size of band matrix */ win->max_width = 0; for (i = 0; i < win->size; i++) { if (win->max_width < abs(win->l_width[i])) win->max_width = abs(win->l_width[i]); if (win->max_width < abs(win->r_width[i])) win->max_width = abs(win->r_width[i]); } if (result == FALSE) { HTS_Window_clear(win); return FALSE; } return TRUE; }
/* HTS_Label_load_from_fp: load label from file pointer */ void HTS_Label_load_from_fp(HTS_Label * label, int sampling_rate, int fperiod, FILE * fp) { char buff[HTS_MAXBUFLEN]; HTS_LabelString *lstring = NULL; double start, end; const double rate = (double) sampling_rate / ((double) fperiod * 1e+7); if (label->head || label->size != 0) HTS_error(1, "HTS_Label_load_from_fp: label is not initialized.\n"); /* parse label file */ while (HTS_get_token(fp, buff)) { if (!isgraph(buff[0])) break; label->size++; if (lstring) { lstring->next = (HTS_LabelString *) HTS_calloc(1, sizeof(HTS_LabelString)); lstring = lstring->next; } else { /* first time */ lstring = (HTS_LabelString *) HTS_calloc(1, sizeof(HTS_LabelString)); label->head = lstring; } if (isdigit_string(buff)) { /* has frame infomation */ start = atof(buff); HTS_get_token(fp, buff); end = atof(buff); HTS_get_token(fp, buff); lstring->start = rate * start; lstring->end = rate * end; } else { lstring->start = -1.0; lstring->end = -1.0; } lstring->next = NULL; lstring->name = HTS_strdup(buff); } HTS_Label_check_time(label); }
/* HTS_Window_load: load dynamic windows */ static void HTS_Window_load(HTS_Window * win, FILE ** fp, int size) { int i, j; int fsize, length; char buff[HTS_MAXBUFLEN]; win->size = size; win->l_width = (int *) HTS_calloc(win->size, sizeof(int)); win->r_width = (int *) HTS_calloc(win->size, sizeof(int)); win->coefficient = (double **) HTS_calloc(win->size, sizeof(double *)); /* set delta coefficents */ for (i = 0; i < win->size; i++) { HTS_get_token(fp[i], buff); fsize = atoi(buff); /* read coefficients */ win->coefficient[i] = (double *) HTS_calloc(fsize, sizeof(double)); for (j = 0; j < fsize; j++) { HTS_get_token(fp[i], buff); win->coefficient[i][j] = strtod_c(buff,NULL); } /* set pointer */ length = fsize / 2; win->coefficient[i] += length; win->l_width[i] = -length; win->r_width[i] = length; if (fsize % 2 == 0) win->r_width[i]--; } /* calcurate max_width to determine size of band matrix */ win->max_width = 0; for (i = 0; i < win->size; i++) { if (win->max_width < abs(win->l_width[i])) win->max_width = abs(win->l_width[i]); if (win->max_width < abs(win->r_width[i])) win->max_width = abs(win->r_width[i]); } }