📄 headers.c
字号:
lev,p->common.hdvers);*/ ndouble = p->common.nd1; nfloat = p->common.ndouble >> 16; nlong = (p->common.ndouble << 16) >> 16; nshort = p->common.nfloat >> 16; nchar = (p->common.nfloat << 16) >> 16; fixpartsiz = p->common.nlong >> 16; hsize = p->common.nshort; uname = savestring((char *)&p->common.nchar);/* (void)fprintf(stderr,"ndouble: %d, nfloat: %d, nlong: %d, nshort: %d\n", ndouble, nfloat, nlong, nshort); (void)fprintf(stderr,"nchar: %d, fixpartsiz: %d, hsize: %ld, uname: %s\n", nchar, fixpartsiz, hsize, uname);*/ p->common.ndouble = ndouble; p->common.nfloat = nfloat; p->common.nlong = nlong; p->common.nshort = nshort; p->common.nchar = nchar; p->common.fixpartsiz = fixpartsiz; p->common.hsize = hsize; (void)strcpy(p->common.user, uname); }#endif#ifndef DEC_ALPHA if ((p->common.machine_code != DEC_ALPHA_CODE) && (p -> common.fixpartsiz >= p -> common.hsize || p -> common.fixpartsiz < FIX_HEADER_SIZE-sizeof(p->common.edr)- sizeof(p->common.machine_code))) BADHEAD (lev, "bad header size");#endif /* get type specific part of header */ switch (p -> common.type) {#ifdef ESI case FT_ANA: p -> hd.ana = (struct ana_header *) calloc (1, ANA_SIZE); if (fread ((char *) p -> hd.ana, 1, ANA_SIZE, fd) == 0) BADHEAD (lev, "bad specfic part -ana"); break; case FT_PIT: p -> hd.pit = (struct pit_header *) calloc (1, PIT_SIZE); if (fread ((char *) p -> hd.pit, 1, PIT_SIZE, fd) == 0) BADHEAD (lev, "bad specfic part -pit"); break; case FT_ROS: { struct ros_header *ros; p -> hd.ros = (struct ros_header *) calloc (1, ROS_SIZE); if (fread ((char *) p -> hd.ros, 1, ROS_SIZE, fd) == 0) BADHEAD (lev, "bad specfic part -ros"); ros = p -> hd.ros; ros -> type_bits = get_shorts (fd, lev, ros -> maxtype); ros -> rc_ubits = get_shorts (fd, lev, ros -> order_unvcd); ros -> rc_vbits = get_shorts (fd, lev, ros -> order_vcd); ros -> pulse_bits = get_shorts (fd, lev, ros -> maxpulses); ros -> pow_bits = get_shorts (fd, lev, ros -> maxpow); break; }#endif ESI case FT_SD: p -> hd.sd = (struct sd_header *) calloc (1, SD_SIZE); if (!miio_get_short(&p->hd.sd->equip, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");#ifndef NOPAD if (!miio_get_short(&p->hd.sd->pad1, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");#endif if (!miio_get_float(&p->hd.sd->max_value, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_float(&p->hd.sd->sf, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_float(&p->hd.sd->src_sf, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->synt_method, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");#ifndef NOPAD if (!miio_get_short(&p->hd.sd->pad2, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");#endif if (!miio_get_float(&p->hd.sd->scale, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_float(&p->hd.sd->dcrem, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->q_method, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->v_excit_method, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->uv_excit_method, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->spare1, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->nchan, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->synt_interp, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->synt_pwr, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->synt_rc, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(&p->hd.sd->synt_order, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");#ifndef NOPAD if (!miio_get_short(&p->hd.sd->pad3, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");#endif if (!miio_get_long(&p->hd.sd->start, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_long(&p->hd.sd->nan, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_short(p->hd.sd->spares, SD_SPARES, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd");/* the following two are to account for the fact that pointers were written out with the structure in the old way of doing things. This assume that a pointer == a long in size*/ if (!miio_get_long(&long_dummy, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); if (!miio_get_long(&long_dummy, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -sd"); p -> hd.sd ->prefilter = NULL; p -> hd.sd ->de_emp = NULL; break; case FT_SPEC: p -> hd.spec = (struct spec_header *) calloc (1, SPEC_SIZE); if (!miio_get_long(&p->hd.spec->start, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_long(&p->hd.spec->nan, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->frmlen, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->order_vcd, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->order_unvcd, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->win_type, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_float(&p->hd.spec->sf, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->spec_an_meth, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec");#ifndef NOPAD if (!miio_get_short(&p->hd.spec->pad1, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec");#endif if (!miio_get_float(&p->hd.spec->dcrem, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->post_proc, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->frame_meth, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->voicing, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->freq_format, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->spec_type, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(&p->hd.spec->contin, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_long(&p->hd.spec->num_freqs, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_short(p->hd.spec->spares, SPEC_SPARES, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_long(&long_dummy, 1, edr_flag, machine_code, fd)) /* pre_emp */ BADHEAD (lev, "bad specfic part -spec"); if (!miio_get_long(&long_dummy, 1, edr_flag, machine_code, fd)) /* pre_emp */ BADHEAD (lev, "bad specfic part -spec"); p -> hd.spec -> freqs = NULL; p -> hd.spec -> pre_emp = NULL; break; case FT_FILT: { struct filt_header *filt; long dummy_long[4]; p -> hd.filt = (struct filt_header *) calloc (1, FILT_SIZE); if (!miio_get_short(&p->hd.filt->max_num, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->max_den, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->func_spec, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->nbands, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->npoints, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->g_size, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->nbits, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->type, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(&p->hd.filt->method, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); if (!miio_get_short(p->hd.filt->spares, FILT_SPARES, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt");#ifndef NOPAD if (!miio_get_short(&p->hd.filt->pad1, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt");#endif if (!miio_get_long(dummy_long, 4, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -filt"); p -> hd.filt -> bandedges = NULL; p -> hd.filt -> points = NULL; p -> hd.filt -> gains = NULL; p -> hd.filt -> wts = NULL; filt = p -> hd.filt; if (filt -> nbands != 0) filt -> bandedges = get_floats (fd, lev, 2 * filt -> nbands); if (filt -> npoints != 0) filt -> points = get_floats (fd, lev, filt -> npoints); if (filt -> func_spec == BAND && filt -> nbands != 0) filt -> gains = get_floats (fd, lev, filt -> nbands); if (filt -> func_spec == POINT && filt -> npoints != 0) filt -> gains = get_floats (fd, lev, filt -> npoints); if (filt -> func_spec == BAND && filt -> nbands != 0) filt -> wts = get_floats (fd, lev, filt -> nbands); if (filt -> func_spec == POINT && filt -> npoints != 0) filt -> wts = get_floats (fd, lev, filt -> npoints); break; } case FT_SCBK: p -> hd.scbk = (struct scbk_header *) calloc (1, SCBK_SIZE); if (!miio_get_long(&p->hd.scbk->num_items, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); if (!miio_get_short(&p->hd.scbk->distortion, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); if (!miio_get_short(&p->hd.scbk->num_cdwds, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); if (!miio_get_float(&p->hd.scbk->convergence, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); if (!miio_get_short(&p->hd.scbk->codebook_type, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); if (!miio_get_short(&p->hd.scbk->element_num, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); if (!miio_get_short(p->hd.scbk->spares, SCBK_SPARES, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specfic part -scbk"); break; case FT_FEA: { struct fea_header *fea; unsigned size; short len, i, j; long dummy[9]; p -> hd.fea = (struct fea_header *) calloc (1, FEA_SIZE); fea = p -> hd.fea; if (!miio_get_short(&p->hd.fea->fea_type, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_short(&p->hd.fea->segment_labeled,1,edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_short(&(p->hd.fea->field_count),1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea");#ifndef NOPAD if (!miio_get_short(&p->hd.fea->field_order,1,edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea");#endif if (!miio_get_long(dummy,9,edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_short(p->hd.fea->spares,FEA_SPARES,edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); size = fea -> field_count; spsassert(fea -> field_count != 0, "recursive_rh: internal error");#ifndef NOPAD/* if an old header, ignore the field_order flag*/ if (fea -> field_order == YES && old_version(p->common.hdvers, PRE_FIELD_ORDER)) fea->field_order = NO;#endif fea -> names = (char **) calloc (size + 1, sizeof (char *)); fea -> dimens = (long **) calloc (size, sizeof (long *)); fea -> enums = (char ***) calloc (size, sizeof (char **)); fea -> srcfields = (char ***)calloc(size,sizeof(char **)); fea -> sizes = get_longs (fd, lev, (int)size); fea -> starts = get_longs (fd, lev, (int)size); fea -> ranks = get_shorts (fd, lev, (int)size); fea -> types = get_shorts (fd, lev, (int)size);/* for versions of the header with complex data type in feature files*/ if (!old_version(p->common.hdvers,PRE_COMPLEX)) { if(EspsDebug) Fprintf(stderr,"read_header: new FEA header.\n"); if (!miio_get_long(&p->hd.fea->ndouble, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nfloat, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nlong, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nshort, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nbyte, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->ndcplx, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nfcplx, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nlcplx, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nscplx, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); if (!miio_get_long(&p->hd.fea->nbcplx, 1, edr_flag, machine_code, fd)) BADHEAD (lev, "bad specific part -fea"); } else { if(EspsDebug) Fprintf(stderr,"read_header: old FEA header.\n"); p->hd.fea->ndouble = p->common.ndouble; p->hd.fea->nfloat = p->common.nfloat; p->hd.fea->nlong = p->common.nlong; p->hd.fea->nshort = p->common.nshort; p->hd.fea->nbyte = p->common.nchar; }/* don't read this for old versions*/ if (!old_version(p->common.hdvers,PRE_DERIVED)){ fea -> derived = get_shorts (fd, lev, (int)size); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -