xacf.c

来自「speech signal process tools」· C语言 代码 · 共 1,682 行 · 第 1/3 页

C
1,682
字号
/*----------------------------------------------------------------------+|									|   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) 1988,1991 Entropic Speech, Inc.                      |    All rights reserved."	                               |									+-----------------------------------------------------------------------+|									|  Program: xacf.c|  |  User interface for acoustic feature program acf.  Xacf is a menu'd|  interface for creating parameter files for acf.||  Author: Bill Byrne|									+----------------------------------------------------------------------*/#ifndef lint  static char *sccs_id = "@(#)xacf.c	1.9 07 Apr 1993 ERL";#endif#include <stdio.h>#include <sys/param.h>#include <sys/types.h>#include <xview/xview.h>#include <xview/canvas.h>#include <xview/panel.h>#include <xview/scrollbar.h>#include <xview/svrimage.h>#include <xview/termsw.h>#include <xview/text.h>#include <xview/tty.h>#include <xview/textsw.h>#include <xview/xv_xrect.h>#include <xview/cms.h>#include <esps/esps.h>#include <esps/unix.h>#include <esps/exview.h>#include "xacf.h"#ifndef NULL#define NULL 0#endif/*#define FCS(item) \  xv_set(item, \	 WIN_BACKGROUND_COLOR, CMS_CONTROL_COLORS + EC_GRAY, \	 WIN_FOREGROUND_COLOR, CMS_CONTROL_COLORS + EC_BLACK,\	 NULL);*/#define FCS(item) /*#define PICS(item) \  xv_set(item, PANEL_ITEM_COLOR, CMS_CONTROL_COLORS + EC_BLACK, NULL);*/#define PICS(item)#define PCHK(item) \if (symtype(item)==ST_UNDEF) { \Fprintf(stderr, "%s: can't get parameter %s.\n", PROG, item); \exit(1);}#define Fprintf (void)fprintf#define SYNTAX {\Fprintf(stderr, "%s: [-x debug_level] [-P params] acf_params\n", PROG); \exit(1);}int debug_level=0;Attr_attribute INSTANCE;int do_color=1;extern optind;extern char *optarg;char  *pfile=NULL;       /* destination parameter file */extern int fullscreendebug;	/* defined in xview library */int getopt();void copysym();void text_pi_serv();void shared_text_pi_serv();void choice_pi_serv();void flag_pi_serv();void set_defaults();void serve_default_button();void done();char **symchoices();void get_nrows_ncols();char **symlist();char **symchoices();char *getsymdef_string();char *get_helpfile();char *symprompt();char getsymdef_c();double getsymdef_d();char* getsymdef_s();long strtol();double strtod();char *savestring();void main(argc, argv)     int argc;     char **argv;{  Xv_opaque		main_window_image;  char  c;  char  *ipfile="Pxacf";      /* initial parameter file */  int   rp_ret;            /* read params return val */    int atoi();  void create_helpframe();  void create_frameparams();  void create_acfopts();  fullscreendebug = 1;		/* prevents server grabs that crash SGIs */  xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);    while ( (c=getopt(argc, argv, "x:P:")) != EOF )     switch (c) {    case 'x':      debug_level = (int) atoi(optarg);      Fprintf(stderr, "%s: debug level %d\n", PROG, debug_level);      break;    case 'P':       ipfile = optarg;      break;    default:      SYNTAX;    }  if ( argc != (optind + 1) )     SYNTAX;  pfile = savestring(argv[optind++]);  if ( pfile == NULL ) {    Fprintf(stderr, "must specifiy output file.\n");    SYNTAX;  }  /* get parameters */  if (ipfile != NULL)    rp_ret = read_params(ipfile, SC_NOCOMMON, (char *)NULL);  else    rp_ret = read_params(XACFPARAMFILE, SC_NOCOMMON, (char *)NULL);  symerr_exit();  if ( rp_ret < 0 ) {    Fprintf(stderr, "%s: can't read parameter file %s.\n",	    PROG, ipfile);    exit(1);  }  xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, 0);  INSTANCE = xv_unique_key();  EXVK_FIELD_NAME = xv_unique_key();    main_window = xv_create((Xv_opaque) NULL, FRAME,		XV_KEY_DATA, INSTANCE, (Xv_opaque) NULL,		XV_WIDTH, 632,		XV_HEIGHT, 770,		XV_LABEL, "xacf: acoustic feature parameter maker",		FRAME_CLOSED, FALSE,		FRAME_SHOW_FOOTER, TRUE,		FRAME_SHOW_RESIZE_CORNER, TRUE,		NULL);/*  e_cms = exv_init_colors(main_window); */  create_helpframe(main_window);  create_frameparams(main_window);  create_acfopts(main_window);  (void) exv_attach_icon( main_window, ERL_NOBORD_ICON, "xacf", TRANSPARENT);  set_defaults();   xv_main_loop(main_window);  exit(0);}voidcreate_helpframe(main_window)     Xv_opaque main_window;{  caddr_t ip = NULL;  helpframe = xv_create(main_window, PANEL,			XV_KEY_DATA, INSTANCE, ip,			XV_X, 0,			XV_Y, 0,			XV_WIDTH, WIN_EXTEND_TO_EDGE,			XV_HEIGHT, 28,			WIN_BORDER, TRUE,			NULL);  FCS(helpframe);  man = xv_create(helpframe, PANEL_BUTTON,			XV_KEY_DATA, INSTANCE, ip,			XV_KEY_DATA, EXVK_HELP_TITLE, "xacf: acf man page",			XV_KEY_DATA, EXVK_HELP_NAME, "acf",			PANEL_NOTIFY_PROC, exv_get_help, 			XV_X, 280,			XV_Y, 4,			XV_WIDTH, 109,			XV_HEIGHT, 19,			PANEL_LABEL_STRING, "Acf Man Page...",		        PANEL_NOTIFY_PROC, exv_get_help,			NULL);  PICS(man);  help = xv_create(helpframe, PANEL_BUTTON,		   XV_KEY_DATA, INSTANCE, ip,		   XV_X, 408,		   XV_Y, 4,		   XV_WIDTH, 55,		   XV_HEIGHT, 19,		   XV_KEY_DATA, EXVK_HELP_TITLE, "xacf: xacf man page",		   XV_KEY_DATA, EXVK_HELP_NAME, "xacf",		   PANEL_NOTIFY_PROC, exv_get_help,		   PANEL_LABEL_STRING, "Help...",		   NULL);  PICS(help);#if !defined(M5600)  defaults = xv_create(helpframe, PANEL_BUTTON,		       XV_KEY_DATA, INSTANCE, ip,		       XV_X, 480,		       XV_Y, 4,		       XV_WIDTH, 130,		       XV_HEIGHT, 19,		       PANEL_LABEL_STRING, "Set Default Values",		       PANEL_NOTIFY_PROC, serve_default_button,		       NULL);  PICS(defaults);#endif  quit = xv_create(helpframe, PANEL_BUTTON,		   XV_KEY_DATA, INSTANCE, ip,		   XV_X, 8,		   XV_Y, 4,		   XV_WIDTH, 55,		   XV_HEIGHT, 19,		   PANEL_NOTIFY_PROC, done,		   PANEL_LABEL_STRING, "Done",		   NULL);  PICS(quit);  return;}staticvoiddone(item, event)     Panel_item item;     Event      *event;{  /*This function gets called when the user is done, so all it has to do    is destroy the main window, causing the termination of the notifier    loop; note that this is ok since the panel notify procedures do the    parameter-file writing directly; hence the file is up to date when    done is called.    *//*  Frame frame = xv_get(item, PANEL_CLIENT_DATA);  xv_destroy_safe(frame); */  xv_destroy_safe(main_window);  return;}voidserve_default_button(item, event)Panel_item item;Event event;{  set_defaults();}voidcreate_frameparams(main_window)     Xv_opaque main_window;{  caddr_t ip = NULL;  frameparams = xv_create(main_window, PANEL,		XV_KEY_DATA, INSTANCE, ip,		XV_X, 0,		XV_Y, 24,		XV_WIDTH, WIN_EXTEND_TO_EDGE,		XV_HEIGHT, 131,		WIN_BORDER, TRUE,		NULL);  FCS(frameparams);  frameparamsmsg = xv_create(frameparams, PANEL_MESSAGE,			     XV_KEY_DATA, INSTANCE, ip,			     XV_X, 8,			     XV_Y, 8,			     XV_WIDTH, 125,			     XV_HEIGHT, 13,			     PANEL_LABEL_STRING, "Frame Parameters",			     PANEL_LABEL_BOLD, TRUE,			     NULL);  PICS(frameparamsmsg);  sdfieldname = xv_create(frameparams, PANEL_TEXT,			  XV_KEY_DATA, INSTANCE, ip, 			  XV_KEY_DATA, EXVK_FIELD_NAME, savestring("sd_field_name"),			  XV_X, 20,			  XV_Y, 32,			  XV_WIDTH, 249,			  XV_HEIGHT, 15,			  PANEL_LABEL_STRING, "Input Field Name:",			  PANEL_VALUE_X, 149,			  PANEL_VALUE_Y, 32,			  PANEL_LAYOUT, PANEL_HORIZONTAL,			  PANEL_VALUE_DISPLAY_LENGTH, 15,			  PANEL_VALUE_STORED_LENGTH, 80,			  PANEL_READ_ONLY, FALSE,			  PANEL_NOTIFY_PROC, text_pi_serv, 			  PANEL_VALUE, getsymdef_string("sd_field_name"),			  NULL);  window = xv_create(frameparams, PANEL_CHOICE, PANEL_DISPLAY_LEVEL, PANEL_CURRENT,		     XV_KEY_DATA, INSTANCE, ip,		     XV_KEY_DATA, EXVK_FIELD_NAME, savestring("window_type"),		     XV_X, 84,		     XV_Y, 76,		     XV_WIDTH, 190,		     XV_HEIGHT, 23,		     PANEL_VALUE_X, 149,		     PANEL_VALUE_Y, 76,		     PANEL_LAYOUT, PANEL_HORIZONTAL,		     PANEL_CHOICE_NROWS, 1,		     PANEL_LABEL_STRING, "Window:",		     PANEL_CHOICE_STRINGS,		     "RECT",		     "HAMMING",		     "HANNING",		     "TRIANG",		     "COS4",		     NULL, 		     PANEL_NOTIFY_PROC, choice_pi_serv,		     NULL);  PICS(window);  preemp = xv_create(frameparams, PANEL_TEXT,		     XV_KEY_DATA, INSTANCE, ip,		     XV_KEY_DATA, EXVK_FIELD_NAME, savestring("preemphasis"),		     XV_X, 48,		     XV_Y, 56,		     XV_WIDTH, 166,		     XV_HEIGHT, 15,		     PANEL_LABEL_STRING, "Preemphasis:",		     PANEL_VALUE_X, 150,		     PANEL_VALUE_Y, 56,		     PANEL_LAYOUT, PANEL_HORIZONTAL,		     PANEL_VALUE_DISPLAY_LENGTH, 8,		     PANEL_VALUE_STORED_LENGTH, 80,		     PANEL_READ_ONLY, FALSE,		     PANEL_NOTIFY_PROC, text_pi_serv,		     PANEL_VALUE, getsymdef_string("preemphasis"),		     NULL);  PICS(preemp);  units = xv_create(frameparams, PANEL_CHOICE,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("units"),		XV_X, 320,		XV_Y, 24,		XV_WIDTH, 241,		XV_HEIGHT, 23,		PANEL_VALUE_X, 429,		PANEL_VALUE_Y, 24,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_CHOICE_NROWS, 1,		PANEL_LABEL_STRING, "Framing Units:",		PANEL_CHOICE_STRINGS,			"samples",			"seconds",		        NULL,		PANEL_NOTIFY_PROC, choice_pi_serv, 		NULL);  framelen = xv_create(frameparams, PANEL_TEXT,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("frame_len"), 		XV_X, 324,		XV_Y, 56,		XV_WIDTH, 169,		XV_HEIGHT, 15,		PANEL_LABEL_STRING, "Frame Length:",		PANEL_VALUE_X, 429,		PANEL_VALUE_Y, 56,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_VALUE_DISPLAY_LENGTH, 8,		PANEL_VALUE_STORED_LENGTH, 80,		PANEL_READ_ONLY, FALSE,		PANEL_NOTIFY_PROC, text_pi_serv,		PANEL_VALUE, getsymdef_string("frame_len"),		NULL);  start = xv_create(frameparams, PANEL_TEXT,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("start"),		XV_X, 515,		XV_Y, 56,		XV_WIDTH, 108,		XV_HEIGHT, 15,		PANEL_LABEL_STRING, "Start:",		PANEL_VALUE_X, 559,		PANEL_VALUE_Y, 56,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_VALUE_DISPLAY_LENGTH, 8,		PANEL_VALUE_STORED_LENGTH, 80,		PANEL_READ_ONLY, FALSE,		PANEL_NOTIFY_PROC, text_pi_serv,		PANEL_VALUE, getsymdef_string("start"),		NULL);  PICS(start);  step = xv_create(frameparams, PANEL_TEXT,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("step"),		XV_X, 388,		XV_Y, 80,		XV_WIDTH, 106,		XV_HEIGHT, 15,		PANEL_LABEL_STRING, "Step:",		PANEL_VALUE_X, 430,		PANEL_VALUE_Y, 80,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_VALUE_DISPLAY_LENGTH, 8,		PANEL_VALUE_STORED_LENGTH, 80,		PANEL_READ_ONLY, FALSE,		PANEL_NOTIFY_PROC, text_pi_serv,		PANEL_VALUE, getsymdef_string("step"),		NULL);  PICS(step);  nan = xv_create(frameparams, PANEL_TEXT,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("nan"),		XV_X, 521,		XV_Y, 80,		XV_WIDTH, 103,		XV_HEIGHT, 15,		PANEL_LABEL_STRING, "Nan:",		PANEL_VALUE_X, 560,		PANEL_VALUE_Y, 80,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_VALUE_DISPLAY_LENGTH, 8,		PANEL_VALUE_STORED_LENGTH, 80,		PANEL_READ_ONLY, FALSE,		PANEL_NOTIFY_PROC, text_pi_serv,		PANEL_VALUE, getsymdef_string("nan"), 		NULL);    PICS(nan);  sd_flag = xv_create(frameparams, PANEL_CHOICE,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("sd_flag"),		XV_X, 24,		XV_Y, 100,		XV_WIDTH, 270,		XV_HEIGHT, 23,		PANEL_VALUE_X, 225,		PANEL_VALUE_Y, 100,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_CHOICE_NROWS, 1,		PANEL_LABEL_STRING, "Store windowed data frame:",		PANEL_NOTIFY_PROC, flag_pi_serv,		PANEL_CHOICE_STRINGS,			"NO",			"YES",			0,		NULL);  sd_fname = xv_create(frameparams, PANEL_TEXT,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("sd_fname"),		XV_X, 348,		XV_Y, 108,		XV_WIDTH, 152,		XV_HEIGHT, 15,		PANEL_LABEL_STRING, "Field Name:",		PANEL_VALUE_X, 436,		PANEL_VALUE_Y, 104,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_VALUE_DISPLAY_LENGTH, 23,		PANEL_VALUE_STORED_LENGTH, 80,		PANEL_READ_ONLY, FALSE,		PANEL_NOTIFY_PROC, text_pi_serv,		PANEL_VALUE, getsymdef_string("sd_fname"),		NULL);}void create_acfopts(main_window)     Xv_opaque main_window;{  caddr_t ip = NULL;  acfopts = xv_create(main_window, PANEL,		      XV_KEY_DATA, INSTANCE, ip,		      XV_X, 0,		      XV_Y, 152,		      XV_WIDTH, WIN_EXTEND_TO_EDGE,		      XV_HEIGHT, WIN_EXTEND_TO_EDGE,		      WIN_BORDER, TRUE,		      NULL);  FCS(acfopts);  acfmsg = xv_create(acfopts, PANEL_MESSAGE,		XV_KEY_DATA, INSTANCE, ip,		XV_X, 8,		XV_Y, 8,		XV_WIDTH, 196,		XV_HEIGHT, 13,		PANEL_LABEL_STRING, "Acoustic Feature Parameters",		PANEL_LABEL_BOLD, TRUE,		NULL);  pwr_flag = xv_create(acfopts, PANEL_CHOICE,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("pwr_flag"),		XV_X, 170,		XV_Y, 32,		XV_WIDTH, 126,		XV_HEIGHT, 23,		PANEL_VALUE_X, 223,		PANEL_VALUE_Y, 32,		PANEL_LAYOUT, PANEL_HORIZONTAL,		PANEL_CHOICE_NROWS, 1,		PANEL_LABEL_STRING, "Power:",		PANEL_NOTIFY_PROC, flag_pi_serv,		PANEL_CHOICE_STRINGS,			"NO",			"YES",			0,		NULL);  pwr_fname = xv_create(acfopts, PANEL_TEXT,		XV_KEY_DATA, INSTANCE, ip,		XV_KEY_DATA, EXVK_FIELD_NAME, savestring("pwr_fname"),		XV_X, 348,		XV_Y, 32,

⌨️ 快捷键说明

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