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

📄 mkbshift.c

📁 语音处理平台 可以分析语音能量 第一振峰频率等数据
💻 C
字号:
/*******************************************************************************                                                                             **       Copyright (C) 1992-1995 Tony Robinson                                 **                                                                             **       See the file LICENSE for conditions on distribution and usage         **                                                                             *******************************************************************************/# include <stdio.h># include "shorten.h"# define USIZE 256# define HUSIZE 128# define SHIFTSIZE 13char	*argv0 = "mkbshift";char	*filenameo = NULL;FILE	*fileo = NULL;int main() {  FILE *fout;  char *filename = "bitshift.h", *writemode = "w";  int shift, i;  int tab[USIZE];  long sample;  long **forwardmap = long2d((ulong) SHIFTSIZE, (ulong) USIZE);  long **reversemap = long2d((ulong) SHIFTSIZE, (ulong) USIZE);  fout = fopen(filename, writemode);  if(fout == NULL)    perror_exit("fopen(\"%s\", \"%s\")", filename, writemode);  for(i = 0; i < USIZE; i++) tab[i] = 0;  /* brute force search of the largest number of zero bits in a linear value */  for(shift = 0; shift < SHIFTSIZE; shift++)    for(sample = -(1L << 15); sample < (1L << 15); sample += 1 << (shift + 3))      tab[Slinear2ulaw(sample)] = shift;  /* print this out as a lookup table */  fprintf(fout, "char ulaw_maxshift[%d] = {", USIZE);  for(i = 0; i < USIZE - 1; i++)    fprintf(fout, "%d,", tab[i]);  fprintf(fout, "%d};\n\n", tab[USIZE - 1]);  /* compute the greatest inward shift compatable with ??? */  for(shift = 0; shift < SHIFTSIZE; shift++) {    int nused;      nused = 0;    for(i = 255; i >= 128; i--)      if(tab[i] >= shift) forwardmap[shift][i] = nused++;    for(i = 255; i >= 128; i--)      if(tab[i] < shift) forwardmap[shift][i] = nused++;      nused = -1;    for(i = 126; i >= 0; i--)      if(tab[i] >= shift) forwardmap[shift][i] = nused--;    forwardmap[shift][127] = nused--;    for(i = 126; i >= 0; i--)      if(tab[i] < shift) forwardmap[shift][i] = nused--;    for(i = 0; i < USIZE; i++)      reversemap[shift][forwardmap[shift][i] + HUSIZE] = i;  }  /* simple check */  for(shift = 0; shift < SHIFTSIZE; shift++)    for(i = 0; i < USIZE; i++)      if(forwardmap[shift][reversemap[shift][i]] != i - HUSIZE)       error_exit("identity maping failed for shift: %d\tindex: %d\n",shift,i);  /* print out the ulaw_inward lookup table */  fprintf(fout, "schar ulaw_inward[%d][%d] = {\n", SHIFTSIZE, USIZE);  for(shift = 0; shift < SHIFTSIZE; shift++) {    fprintf(fout, "{");    for(i = 0; i < USIZE - 1; i++)      fprintf(fout, "%ld,", forwardmap[shift][i]);    if(shift != SHIFTSIZE - 1)      fprintf(fout, "%ld},\n", forwardmap[shift][USIZE - 1]);    else      fprintf(fout, "%ld}\n};\n", forwardmap[shift][USIZE - 1]);  }  fprintf(fout, "\n");  /* print out the ulaw_outward lookup table */  fprintf(fout, "uchar ulaw_outward[%d][%d] = {\n", SHIFTSIZE, USIZE);  for(shift = 0; shift < SHIFTSIZE; shift++) {    fprintf(fout, "{");    for(i = 0; i < USIZE - 1; i++)      fprintf(fout, "%ld,", reversemap[shift][i]);    if(shift != SHIFTSIZE - 1)      fprintf(fout, "%ld},\n", reversemap[shift][USIZE - 1]);    else      fprintf(fout, "%ld}\n};\n", reversemap[shift][USIZE - 1]);  }  /* exit happy */  return(0);}

⌨️ 快捷键说明

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