⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cbkdsp.c

📁 speech signal process tools
💻 C
字号:
/* cbkdsp - produce a rosetta quant table from a CBK file   This material contains proprietary software of Entropic Processing, Inc.     Any reproduction, distribution, or publication without the the prior	     written permission of Entropic Processing, Inc. is strictly prohibited.  Any public distribution of copies of this work authorized in writing by  Entropic Processing, Inc. must bear the notice			 								               "Copyright 1986 Entropic Processing, Inc."*/ 				#ifdef SCCS  static char *sccs_id = "@(#)cbkdsp.c	1.3 10/17/86 EPI";#endif#include <stdio.h>#include <sps/sps.h>#include <sps/scbk.h>#define SYNTAX \ USAGE ("cbkdsp [-x debug-level] [-t {rc|p1|pd|r0|pwr}] [-n table name] file")#define MAX_P1	180.0#define MAX_PD	-1000.0#define R0_NORM_VAL 16char *type_codes[] = {"RC","P1","PD","R0","PWR",NULL};main (argc, argv)char  **argv;int     argc;{  int getopt(), c,i;  extern optind, errno;  extern char *optarg, *get_cmd_line();  struct scbk_data *cbk_rec;  struct header *ih;  FILE *in;  int debug=0, type=0;  char *name=NULL, *type_string="rc";  while ((c = getopt(argc, argv, "x:t:n:")) != EOF) {	switch (c) {	 case 'x':	  debug = atoi(optarg);	  break;	 case 't':	  if((type = lin_search(type_codes,optarg)) == -1) {	   SYNTAX;	  }	  type_string = optarg;	  break;	 case 'n':	  name = optarg;	  break;	 default:	  SYNTAX;	}  }  if (argc-optind != 1) SYNTAX;  TRYOPEN("cbkdsp",argv[optind],"r",in);  if(!(ih = read_header(in))) NOTSPS("cbkdsp",argv[optind]);  if(ih->common.type != FT_SCBK) {	fprintf(stderr,"cbkdsp: %s is not a SCBK file.\n",argv[optind]);	exit(1);  }    cbk_rec = allo_scbk_rec(ih);  if(get_scbk_rec(cbk_rec,ih,in) == EOF) {	fprintf(stderr,"cbkdsp: No data record in file.\n");	exit(1);  }  if(!name) name = type_string;  printf("; DSP enc/dec table produced by cbkdsp 1.3 of 10/17/86:\n");  printf("; %s\n",get_cmd_line(argc,argv));  printf(";\n");    switch (type) {	case 0: /* rc */	 if(!name) name = "rc";	 printf("%s_enc_tab:\n",name);		/* put out name of table */	 printf("\tdw\t-2.0\n");		/* start tables with -2 */	 for (i=0; i < ih->hd.scbk->num_cdwds - 1; i++) /* enc table */	  printf("\tdw\t%11.5f\n",cbk_rec->qtable[i].enc);	 printf("\tEND(%s_enc)\n",name);		 printf("%s_dec_tab:\n",name);	 for (i=0; i< ih->hd.scbk->num_cdwds; i++)	/* dec table */	  printf("\tdw\t%11.5f\n",cbk_rec->qtable[i].dec);	 printf("\tEND(%s_dec)\n",name);         break;	case 1: /* p1 */	 printf("%s_enc_tab:\n",name);		/* put out name of table */	 printf("\tdw\t-2.0\n");		/* start with -2 */	 for (i=0; i< ih->hd.scbk->num_cdwds - 1; i++)	  printf("\tdw\t%g\n",cbk_rec->qtable[i].enc+1);	 printf("\tdw\t%g\n",MAX_P1);	 printf("\tEND(%s_enc)\n",name);	 	 printf("%s_dec_tab:\n",name);			 for (i=0; i< ih->hd.scbk->num_cdwds; i++)	  printf("\tdw\t%g\n",cbk_rec->qtable[i].dec);	 printf("\tdw\t%g\n",MAX_P1);	 printf("\tEND(%s_dec)\n",name);	 break;	case 2: /* pd */	 printf("%s_enc_tab:\n",name);	 printf("\tdw\t%g\n",MAX_PD);	 for (i=0; i< ih->hd.scbk->num_cdwds - 1; i++)	  printf("\tdw\t%g\n",cbk_rec->qtable[i].enc+1);	 printf("\tEND(%s_enc)\n",name);	 printf("%s_dec_tab:\n",name);	 for (i=0; i< ih->hd.scbk->num_cdwds; i++)	  printf("\tdw\t%g\n",cbk_rec->qtable[i].dec);	 printf("\tEND(%s_dec)\n",name);	 break;	case 3: /* r0 */	 printf("R0_NORM:equ\t%d\n",R0_NORM_VAL);	 printf("%s_enc_tab:\n",name);	 printf("\tdw\t%f\n",-2.0);	 for (i=0; i< ih->hd.scbk->num_cdwds - 1; i++)	  printf("\tdw\t%g * R0_NORM\n",cbk_rec->qtable[i].enc+1);	 printf("\tEND(%s_enc)\n",name);	 printf("%s_dec_tab:\n",name);	 for (i=0; i< ih->hd.scbk->num_cdwds; i++)	  printf("\tdw\t%g * R0_NORM\n",cbk_rec->qtable[i].dec);	 printf("\tEND(%s_dec)\n",name);	 break;	case 4: /* pwr *//* there are limits on the size of DSP numbers, and we with to encode the   ratio (new power)/(old power).  If this ratio exceeds PWR_BOUND; that   is, if (new power) > (old power)*PWR_BOUND, we use the _g_ table to   encode (old/power)/(new/power) instead.*/	 for (i=0; i< ih->hd.scbk->num_cdwds - 1 && 		   cbk_rec->qtable[i].enc <= 1.0; i++) ;;	 printf("PWR_BOUND: equ\t%f\n",cbk_rec->qtable[i].enc);	 printf("\tglobal\tPWR_BOUND\n\n");	 printf("%s_l_enc_tab:\n",name);	/* do the l table */	 printf("\tdw\t%f\n",-2.0);	 for (i=0; i< ih->hd.scbk->num_cdwds - 1 && 		   cbk_rec->qtable[i].enc <= 1.0; i++)	  printf("\tdw\t%f\n",cbk_rec->qtable[i].enc);	 printf("\tEND(%s_l_enc)\n",name); 	 printf("%s_g_enc_tab:\n",name);	 printf("\tdw\t%f\n",-2.0);	 for (i=ih->hd.scbk->num_cdwds-2; cbk_rec->qtable[i-1].enc > 1.0; i--)	  printf("\tdw\t1.0/%f\n",cbk_rec->qtable[i].enc);	 printf("\tEND(%s_g_enc)\n",name);	 printf("%s_l_dec_tab:\n",name);	 for (i=0; i< ih->hd.scbk->num_cdwds &&		   cbk_rec->qtable[i].dec <= 1.0; i++)	  printf("\tdw\t%f\n",cbk_rec->qtable[i].dec);	 printf("\tEND(%s_l_dec)\n",name); 	 printf("%s_g_dec_tab:\n",name);	 for (i=ih->hd.scbk->num_cdwds-1; cbk_rec->qtable[i-1].dec > 1.0; i--)	  printf("\tdw\t1.0/%f\n",cbk_rec->qtable[i].dec);	 printf("\tEND(%s_g_dec)\n",name);	 break;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -