📄 toast_audio.c
字号:
/* * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische * Universitaet Berlin. See the accompanying file "COPYRIGHT" for * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. *//* $Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/toast_audio.c,v 1.6 1995/03/07 21:21:24 jutta Exp $ */#include "toast.h"/* toast_audio -- functions to manipulate SunOS audio files. * * This is reverse engineered from our present soundfiles * and in no way portable, durable or aesthetically pleasing. */extern FILE * in, * out;extern char * inname;extern char * progname;extern int (*output) P((gsm_signal *)), (*input ) P((gsm_signal *));extern int alaw_input P((gsm_signal *)), ulaw_input P((gsm_signal *)), linear_input P((gsm_signal *));extern int ulaw_output P((gsm_signal *));static int put_u32 P2((f, u), FILE * f, unsigned long u){ /* Write a 32-bit unsigned value msb first. */ if ( putc( (char)((u>>24) & 0x0FF), f) == EOF || putc( (char)((u>>16) & 0x0FF), f) == EOF || putc( (char)((u>> 8) & 0x0FF), f) == EOF || putc( (char)( u & 0x0FF), f) == EOF) return -1; return 0;}static int get_u32 P2((f, up), FILE * f, unsigned long * up){ /* Read a 32-bit unsigned value msb first. */ int i; unsigned long u; if ( (i = getc(f)) == EOF || ((u = (unsigned char)i), (i = getc(f)) == EOF) || ((u = (u<<8)|(unsigned char)i), (i = getc(f)) == EOF) || ((u = (u<<8)|(unsigned char)i), (i = getc(f)) == EOF)) return -1; *up = (u<<8)|(unsigned char)i; return 0;}int audio_init_input P0(){ unsigned long len, enc; /* unsigned 32 bits */ if ( fgetc(in) != '.' || fgetc(in) != 's' || fgetc(in) != 'n' || fgetc(in) != 'd' || get_u32( in, &len ) || get_u32( in, &enc ) /* skip this */ || get_u32( in, &enc )) { fprintf(stderr, "%s: bad (missing?) header in Sun audio file \"%s\";\n\ Try one of -u, -a, -l instead (%s -h for help).\n", progname, inname ? inname : "stdin", progname); return -1; } switch (enc) { case 1: input = ulaw_input; break; case 2: input = alaw_input; break; case 3: input = linear_input; break; default: fprintf(stderr,"%s: warning: file format #%lu for %s not implemented, defaulting to u-law.\n", progname, enc, inname); input = ulaw_input; break; } while (len > 4*4) if (getc(in) == EOF) { fprintf(stderr, "%s: EOF in header of Sun audio file \"%s\";\n\ Try one of -u, -a, -l instead (%s -h for help).\n", progname, inname ? inname : "stdin", progname); return -1; } else len--; return 0;}int audio_init_output P0(){ if ( fputs(".snd", out) == EOF || put_u32(out, 32) || put_u32(out, ~(unsigned long)0) || put_u32(out, 1) || put_u32(out, 8000) || put_u32(out, 1) || put_u32(out, 0) || put_u32(out, 0)) return -1; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -