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

📄 toast_audio.c

📁 GSM 6.10语音压缩算法
💻 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 + -