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 + -
显示快捷键?