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

📄 libst.c

📁 linux下录音程序
💻 C
📖 第 1 页 / 共 5 页
字号:
/* libst.c - portable sound tools library*/#include "libst.h"#ifndef FAST_ULAW_CONVERSION/*** This routine converts from linear to ulaw.**** Craig Reese: IDA/Supercomputing Research Center** Joe Campbell: Department of Defense** 29 September 1989**** References:** 1) CCITT Recommendation G.711  (very difficult to follow)** 2) "A New Digital Technique for Implementation of Any**     Continuous PCM Companding Law," Villeret, Michel,**     et al. 1973 IEEE Int. Conf. on Communications, Vol 1,**     1973, pg. 11.12-11.17** 3) MIL-STD-188-113,"Interoperability and Performance Standards**     for Analog-to_Digital Conversion Techniques,"**     17 February 1987**** Input: Signed 16 bit linear sample** Output: 8 bit ulaw sample*/#undef ZEROTRAP      /* turn off the trap as per the MIL-STD */#define uBIAS 0x84   /* define the add-in bias for 16 bit samples */#define uCLIP 32635#define ACLIP 31744unsigned charst_linear_to_ulaw( sample )int sample;    {    static int exp_lut[256] = {0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,                               4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,                               5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,                               5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,                               6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,                               6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,                               6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,                               6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,                               7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7};    int sign, exponent, mantissa;    unsigned char ulawbyte;    /* Get the sample into sign-magnitude. */    sign = (sample >> 8) & 0x80;		/* set aside the sign */    if ( sign != 0 ) sample = -sample;		/* get magnitude */    if ( sample > uCLIP ) sample = uCLIP;		/* clip the magnitude */    /* Convert from 16 bit linear to ulaw. */    sample = sample + uBIAS;    exponent = exp_lut[( sample >> 7 ) & 0xFF];    mantissa = ( sample >> ( exponent + 3 ) ) & 0x0F;    ulawbyte = ~ ( sign | ( exponent << 4 ) | mantissa );#ifdef ZEROTRAP    if ( ulawbyte == 0 ) ulawbyte = 0x02;	/* optional CCITT trap */#endif    return ulawbyte;    }/*** This routine converts from ulaw to 16 bit linear.**** Craig Reese: IDA/Supercomputing Research Center** 29 September 1989**** References:** 1) CCITT Recommendation G.711  (very difficult to follow)** 2) MIL-STD-188-113,"Interoperability and Performance Standards**     for Analog-to_Digital Conversion Techniques,"**     17 February 1987**** Input: 8 bit ulaw sample** Output: signed 16 bit linear sample*/intst_ulaw_to_linear( ulawbyte )unsigned char ulawbyte;    {    static int exp_lut[8] = { 0, 132, 396, 924, 1980, 4092, 8316, 16764 };    int sign, exponent, mantissa, sample;    ulawbyte = ~ ulawbyte;    sign = ( ulawbyte & 0x80 );    exponent = ( ulawbyte >> 4 ) & 0x07;    mantissa = ulawbyte & 0x0F;    sample = exp_lut[exponent] + ( mantissa << ( exponent + 3 ) );    if ( sign != 0 ) sample = -sample;    return sample;    }#elseunsigned char ulaw_comp_table[16384] = {	0xff,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,	0xfb,0xfa,0xfa,0xf9,0xf9,0xf8,0xf8,0xf7,	0xf7,0xf6,0xf6,0xf5,0xf5,0xf4,0xf4,0xf3,	0xf3,0xf2,0xf2,0xf1,0xf1,0xf0,0xf0,0xef,	0xef,0xef,0xef,0xee,0xee,0xee,0xee,0xed,	0xed,0xed,0xed,0xec,0xec,0xec,0xec,0xeb,	0xeb,0xeb,0xeb,0xea,0xea,0xea,0xea,0xe9,	0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe8,0xe7,	0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe6,0xe5,	0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe4,0xe3,	0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe2,0xe1,	0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xe0,0xdf,	0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xde,	0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xdd,	0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdc,	0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdb,	0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xda,	0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xd9,	0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd8,	0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd7,	0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd6,	0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd5,	0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd4,	0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd3,	0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd2,	0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd1,	0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd0,	0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xcf,	0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,	0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xce,	0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,	0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xcd,	0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,	0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcc,	0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,	0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcb,	0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,	0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xca,	0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,	0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xc9,	0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,	0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc8,	0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,	0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,	0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,	0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc6,	0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,	0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc5,	0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,	0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc4,	0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,	0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc3,	0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,	0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,	0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,	0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,	0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,	0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc0,	0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,	0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xbf,	0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,	0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,	0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,	0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbe,	0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,	0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,	0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,	0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbd,	0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,	0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,	0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,	0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbc,	0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,	0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,	0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,	0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbb,	0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,	0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,	0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,	0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xba,	0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,	0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,	0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,	0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xb9,	0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,	0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,	0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,	0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb8,	0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,	0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,	0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,	0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb7,	0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,	0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,	0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,	0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb6,	0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,	0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,	0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,	0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb5,	0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,	0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,	0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,	0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb4,	0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,	0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,	0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,	0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb3,	0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,	0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,	0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,	0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,	0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,	0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,	0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,	0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,	0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,	0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,	0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,	0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb0,	0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,	0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,	0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,	0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,	0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,	0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,	0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,	0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,	0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,	0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,	0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,	0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,	0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,	0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa5,	0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,	0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,	0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,	0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,

⌨️ 快捷键说明

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