📄 prnt_hdr.c
字号:
/* psps - prints ESPS data files * * This material contains proprietary software of Entropic Speech, Inc. * Any reproduction, distribution, or publication without the prior * written permission of Entropic Speech, Inc. is strictly prohibited. * Any public distribution of copies of this work authorized in writing by * Entropic Speech, Inc. must bear the notice * * "Copyright (c) 1987 Entropic Speech, Inc.; All rights reserved" * * psps - dumps an ESPS data file on standard output. This verison by * Alan Parker, based on the SDS version by Joe Buck. */#ifdef SCCS static char *sccs_id = "@(#)prnt_hdr.c 1.24 7/31/87 ESI";#endif#include <stdio.h>#include <esps/esps.h>void tab(), print_generic();char *file_typeX();int idx_ok();voidpr_zfunc(lev,label,zf)int lev;char *label;struct zfunc *zf;{ int i; if(zf == NULL) { tab (lev); printf("No %s zfunc\n",label); return; } tab (lev); printf ("%s: nsiz: %d, dsiz: %d, { ", label,zf->nsiz,zf->dsiz); for (i = 0; i < zf -> nsiz; i++) printf ("%.4g ", zf -> zeros[i]); printf ("} / { "); for (i = 0; i < zf -> dsiz; i++) printf ("%.4g ", zf -> poles[i]); printf ("}\n");}voidtab(indent) { while (indent--) printf(" ");}voidprint_common(indent, hdr)int indent;struct header *hdr;{ int i; char *text = hdr->variable.typtxt; char *comment = hdr->variable.comment; char *refer = hdr->variable.refer; printf("\n"); tab(indent); (void) printf("---Common Part of Header---\n"); tab(indent); (void) printf("File type: %s\n", file_typeX(hdr->common.type)); tab(indent); (void) printf("File header date: %s, header version: %s\n", hdr->common.date, hdr->common.hdvers); tab(indent); (void) printf("Produced by: %s, version: %s, of: %s\n", hdr->common.prog, hdr->common.vers, hdr->common.progdate); tab(indent); (void) printf("User: %s\n",hdr->common.user); tab(indent); (void) printf("Number of data records: %d\n",hdr->common.ndrec); tab(indent); (void) printf("Data is %s tagged.\n", (hdr->common.tag ? "" : "not")); tab(indent); (void) printf("Data format is %d doubles, %d floats, %d longs,\n", hdr->common.ndouble, hdr->common.nfloat, hdr->common.nlong); tab(indent); (void) printf("%d shorts, and %d chars (bytes).\n",hdr->common.nshort, hdr->common.nchar); if(text != NULL) { tab(indent); printf("typtxt: "); fputs(text,stdout); if(text[strlen(text)-1] != '\n') putchar('\n'); } if(refer != NULL) { tab(indent); printf("refer file: "); fputs(refer,stdout); if(refer[strlen(refer)-1] != '\n') putchar('\n'); } if(comment != NULL) { tab(indent); printf("comment text: "); fputs(comment,stdout); if(comment[strlen(comment)-1] != '\n') putchar('\n'); } if(hdr->variable.source[0] != NULL) { int i=1; tab(indent); printf("Source files: %s\n",hdr->variable.source[0]); while((hdr->variable.source[i] != NULL) && i < hdr->variable.nnames){ tab(indent); printf(" %s\n",hdr->variable.source[i++]); } } if(hdr->variable.refhd != NULL) { tab(indent); printf("There is a reference header.\n"); } else { tab(indent); printf("There is no reference header.\n"); } for (i=0; i<NSPARES; i++) if (hdr->common.spares[i] != 0) { tab(indent); (void) printf("spares[%d]: 0x%x\n", i, (int) hdr->common.spares[i]); } printf("\n"); return;}voidprint_generic(indent,hdr)int indent;struct header *hdr;{ char **names; int j,i,k=0,num,size,type; int strcmp (); int swap (); if(hdr->variable.ngen == 0) return; tab(indent); (void) printf("---Generic Header---"); names = genhd_list(&num,hdr); /* sort the generic header names */ sort (names, num, strcmp, swap); for (i=0; i<num; i++) { char *cptr; double *dptr; float *fptr; long *lptr; short *sptr; type = genhd_type(names[i],&size,hdr); printf("\n"); tab(indent); if (size > 7) printf("%s[0]: ", names[i]); else printf("%s: ", names[i]); k=0; cptr = get_genhd(names[i],hdr); if (type == CHAR && size > 1) { printf("%s",cptr); tab(indent); } else for (j=0;j<size; j++) { k++; if(k>7) { printf("\n"); tab(indent); printf("%s[%d]: ",names[i],j); k=0; } switch(type) { case DOUBLE: dptr = (double *)get_genhd(names[i],hdr); printf("%lg ",dptr[j]); break; case FLOAT: fptr = (float *)get_genhd(names[i],hdr); printf("%g ",fptr[j]); break; case SHORT: sptr = (short *)get_genhd(names[i],hdr); printf("%d ",sptr[j]); break; case LONG: lptr = (long *)get_genhd(names[i],hdr); printf("%ld ",lptr[j]); break; case CHAR: cptr = get_genhd(names[i],hdr); printf("0x%x ",cptr[j]); break; case CODED: { char **codes = genhd_codes(names[i],hdr); sptr = (short *)get_genhd(names[i],hdr); if(idx_ok(sptr[j],codes)) printf("%s ",codes[sptr[j]]); else printf("invalid code %d ",sptr[j]); break; } } } } printf("\n\n");}voidprint_sd(indent, hdr)int indent;struct header *hdr;{ struct sd_header *h = hdr->hd.sd; int i; tab(indent); (void) printf("---Sampled Data File Header---\n"); tab(indent); if(idx_ok(h->equip,equip_codes)) (void) printf("equip: %s\n",equip_codes[h->equip]); else (void) printf("equip: invalid code %d\n",(int)h->equip); tab(indent); (void) printf("max_value: %g, sf: %g, src_sf: %g\n", h->max_value, h->sf, h->src_sf); tab(indent); if(idx_ok(h->synt_method,synt_methods)) (void) printf("synt_method: %s\n",synt_methods[h->synt_method]); else (void) printf("synt_method: invalid code %d\n",(int)h->synt_method); tab(indent); (void) printf("scale: %g, dcrem: %g\n",h->scale,h->dcrem); tab(indent); if(idx_ok(h->q_method,synt_methods)) (void) printf("q_method: %s\n",quant_methods[h->q_method]); else (void) printf("q_method: invalid code %d\n",(int)h->q_method); tab(indent); if(idx_ok(h->v_excit_method,excit_methods)) (void) printf("v_excit_method: %s\n",excit_methods[h->v_excit_method]); else (void) printf("v_excit_method: invalid code %d\n",(int)h->v_excit_method); tab(indent); if(idx_ok(h->uv_excit_method,excit_methods)) (void) printf("uv_excit_method: %s\n",excit_methods[h->uv_excit_method]); else (void) printf("uv_excit_method: invalid code %d\n",(int)h->uv_excit_method); tab(indent); (void) printf("spare1: %d, nchan: %d\n",(int)h->spare1,(int)h->nchan); tab(indent); if(idx_ok(h->synt_interp,synt_inter_methods)) (void) printf("synt_interp: %s\n",synt_inter_methods[h->synt_interp]); else (void) printf("synt_interp: invalid code %d\n",(int)h->synt_interp); tab(indent); if(idx_ok(h->synt_pwr,synt_inter_methods)) (void) printf("synt_pwr: %s\n",synt_pwr_codes[h->synt_pwr]); else (void) printf("synt_pwr: invalid code %d\n",(int)h->synt_pwr); tab(indent); if(idx_ok(h->synt_rc,synt_inter_methods)) (void) printf("synt_rc: %s\n",synt_ref_methods[h->synt_rc]); else (void) printf("synt_rc: invalid code %d\n",(int)h->synt_rc); tab(indent); (void) printf("synt_order: %d\n",(int)h->synt_order); tab(indent); (void) printf("start: %ld, nan: %ld\n",h->start,h->nan); for (i=0; i<SD_SPARES; i++) if (h->spares[i] != 0) { tab(indent); (void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]); } pr_zfunc(indent,"prefilter",h->prefilter); pr_zfunc(indent,"de_emp",h->de_emp); return;}voidprint_spec(indent, hdr)int indent;struct header *hdr;{ int i; struct spec_header *h = hdr->hd.spec; tab(indent); (void) printf("---Spectral File Header---\n"); tab(indent); (void) printf("start: %ld, nan: %ld, frmlen: %d\n", h->start, h->nan, (int)h->frmlen); tab(indent); (void) printf("order_vcd: %d, order_unvcd: %d\n", (int)h->order_vcd, (int)h->order_unvcd); tab(indent); if(idx_ok(h->win_type,win_type_codes)) (void) printf("win_type: %s\n",win_type_codes[h->win_type]); else (void) printf("win_type: invalid code %d\n",(int)h->win_type); tab(indent); (void) printf("sf: %g\n",h->sf); tab(indent); if(idx_ok(h->spec_an_meth,spec_an_methods)) (void) printf("spec_an_meth: %s\n",spec_an_methods[h->spec_an_meth]); else (void) printf("spec_an_meth: invalid code %d\n",(int)h->spec_an_meth); tab(indent); (void) printf("dcrem: %g\n",h->dcrem); tab(indent); if(idx_ok(h->post_proc,post_proc_codes)) (void) printf("post_proc: %s\n",post_proc_codes[h->post_proc]); else (void) printf("post_proc: invalid code %d\n",(int)h->post_proc); tab(indent); if(idx_ok(h->frame_meth,frame_methods)) (void) printf("frame_meth: %s\n",frame_methods[h->frame_meth]); else (void) printf("frame_meth: invalid code %d\n",(int)h->frame_meth); tab(indent); (void) printf("voicing: %d\n",h->voicing); tab(indent); if(idx_ok(h->freq_format,freq_format_codes)) (void) printf("freq_format: %s\n",freq_format_codes[h->freq_format]); else (void) printf("freq_format: invalid code %d\n",(int)h->freq_format); tab(indent); if(idx_ok(h->spec_type,spec_type_codes)) (void) printf("spec_type: %s\n",spec_type_codes[h->spec_type]); else (void) printf("spec_type: invalid code %d\n",(int)h->spec_type); tab(indent); (void) printf("contin: %d, num_freqs: %ld\n",(int)h->contin, h->num_freqs); for (i=0; i<SPEC_SPARES; i++) if (h->spares[i] != 0) { tab(indent); (void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]); } pr_zfunc(indent,"pre_emp",h->pre_emp); if(h->freqs) { int j=6; for(i=0; i<h->num_freqs; i++) { if(j>5) { tab(indent); printf("freqs[%d]: ",i); j=0; } printf("%10.4f",h->freqs[i]); j++; } } return;}voidprint_filt(indent,hdr)int indent;struct header *hdr;{ int i,n; struct filt_header *h = hdr->hd.filt; tab(indent); (void) printf("---Filter Coefficient File---\n"); tab(indent); (void) printf("max_num: %d, max_den: %d\n",h->max_num,h->max_den); tab(indent); if(idx_ok(h->func_spec,filt_func_spec)) (void) printf("func_spec: %s\n",filt_func_spec[h->func_spec]); else (void) printf("func_spec: invalid code %d\n",h->func_spec); tab(indent); printf("nbands: %d, npoints: %d, g_size: %d, nbits: %d\n", h->nbands,h->npoints,h->g_size,h->nbits); tab(indent); printf("type: %d, method: %d\n",h->type,h->method); tab(indent); for (i=0; i<FILT_SPARES; i++) if (h->spares[i] != 0) { tab(indent); (void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]); } if(h->nbands != 0) { int j=6; for(i=0; i<h->nbands; i++) { if(j>5) { tab(indent); (void) printf("\nbandedges[%d]: ",i); j=0; } (void) printf("%g ",h->bandedges[i]); j++; } (void)printf("\n"); } if(h->npoints != 0) { int j=6; for(i=0; i<h->npoints; i++) { if(j>5) { tab(indent); (void) printf("\npoints[%d]: ",i); j=0; } (void) printf("%g ",h->points[i]); j++; } (void)printf("\n"); } if(h->func_spec == BAND) n = h->nbands; else n = h->npoints; if(n != 0) { int j=6; for(i=0; i<n; i++) { if(j>5) { tab(indent); (void) printf("\ngains[%d]: ",i); j=0; } (void) printf("%g ",h->gains[i]); j++; } (void)printf("\n"); } if(n != 0) { int j=6; for(i=0; i<n; i++) { if(j>5) { tab(indent); (void) printf("\nwts[%d]: ",i); j=0; } (void) printf("%g ",h->wts[i]); j++; } (void)printf("\n"); } (void)printf("\n"); return;}voidprint_scbk(indent,hdr)int indent;struct header *hdr;{ int i; struct scbk_header *h = hdr->hd.scbk; tab(indent); (void) printf("---Scaler Codebook File---\n"); tab(indent); (void) printf("num_items: %ld, num_cdwds: %d\n", h->num_items,h->num_cdwds); tab(indent); (void) printf("convergence: %f, element_num: %d\n", h->convergence,h->element_num); tab(indent); if(idx_ok(h->distortion,scbk_distortion)) (void) printf("distortion: %s\n",scbk_distortion[h->distortion]); else (void) printf("distortion: invalid code %d\n",h->distortion); tab(indent); if(idx_ok(h->codebook_type,scbk_codebook_type)) (void) printf("codebook_type: %s\n",scbk_codebook_type[h->codebook_type]); else (void) printf("codebook_type: invalid code %d\n",h->codebook_type); for (i=0; i<SCBK_SPARES; i++) if (h->spares[i] != 0) { tab(indent); (void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]); }}voidprint_fea(indent,hdr)int indent;struct header *hdr;{ int i, j; struct fea_header *h = hdr->hd.fea; extern char *fea_file_type[]; extern int vflag; tab(indent); (void) printf("---Feature File Header---\n"); tab(indent); if(idx_ok(h->fea_type,fea_file_type)) (void) printf("fea_type: %s, ", fea_file_type[h->fea_type]); else (void) printf("fea_type: invalid code %d, ",h->fea_type); printf("segment_labeled: %d, field_count: %d\n", h->segment_labeled, h->field_count); if (vflag) for (i=0; i<h->field_count; i++) { tab(indent); printf("Item name: %s, ", h->names[i]); tab(indent); if(idx_ok(h->types[i],type_codes)) printf("type: %s, ",type_codes[h->types[i]]); else printf("type: invalid code: %d, ",h->types[i]); tab(indent); printf("size: %ld", h->sizes[i]); if(h->sizes[i] > 1) printf(", rank: %d", h->ranks[i]); printf("\n"); if(h->ranks[i] > 1) { tab(indent); printf(" Dimensions: "); for(j=0; j<h->ranks[i]; j++) printf("% ld",h->dimens[i][j]); printf("\n"); } if (h->types[i] == CODED) { char **s; tab(indent); printf(" Possible coded values:\n"); s = h->enums[i]; while(*s != NULL) { tab(indent); printf(" %s\n",*s++); } } if(h->derived[i]) { char **s; tab(indent); printf(" Derived from:\n"); s = h->srcfields[i]; while(*s != NULL) { tab(indent); printf(" %s\n",*s++); } } } /* end for (i = 0; i < h->field_count; i++) */ if (vflag) for (i=0; i<FEA_SPARES; i++) if (h->spares[i] != 0) { tab(indent); (void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]); } (void) printf ("\n");}sort (v, n, comp, exch) /* sort strings v[0]...v[n-1] */char *v[];int n;int (*comp) (), (*exch) ();{ int gap, i, j; for (gap = n/2; gap > 0; gap /= 2) for (i = gap; i < n; i++) for (j = i-gap; j >= 0; j -= gap) { if ((*comp) (v[j], v[j+gap]) <= 0) break; (*exch) (&v[j], &v[j+gap]); }}swap (px, py) /* interchange *px and *py */char *px[], *py[];{ char *temp; temp = *px; *px = *py; *py = temp;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -