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

📄 alaw.c

📁 Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
💻 C
📖 第 1 页 / 共 2 页
字号:
	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, 0x2a} ; /* alaw_encode */#ifdef WIN32 //v for compatibility with MSVC++ 6, 7, & 8beta compilers   #define inline  #endifstatic inline voidalaw2s_array (unsigned char *buffer, int count, short *ptr){	while (--count >= 0)		ptr [count] = alaw_decode [(int) buffer [count]] ;} /* alaw2s_array */static inline voidalaw2i_array (unsigned char *buffer, int count, int *ptr){	while (--count >= 0)		ptr [count] = alaw_decode [(int) buffer [count]] << 16 ;} /* alaw2i_array */static inline voidalaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact){	while (--count >= 0)		ptr [count] = normfact * alaw_decode [(int) buffer [count]] ;} /* alaw2f_array */static inline voidalaw2d_array (unsigned char *buffer, int count, double *ptr, double normfact){	while (--count >= 0)		ptr [count] = normfact * alaw_decode [(int) buffer [count]] ;} /* alaw2d_array */static inline voids2alaw_array (short *ptr, int count, unsigned char *buffer){	while (--count >= 0)	{	if (ptr [count] >= 0)			buffer [count] = alaw_encode [ptr [count] / 16] ;		else			buffer [count] = 0x7F & alaw_encode [ptr [count] / -16] ;		} ;} /* s2alaw_array */static inline voidi2alaw_array (int *ptr, int count, unsigned char *buffer){	while (--count >= 0)	{	if (ptr [count] >= 0)			buffer [count] = alaw_encode [ptr [count] >> (16 + 4)] ;		else			buffer [count] = 0x7F & alaw_encode [- ptr [count] >> (16 + 4)] ;		} ;} /* i2alaw_array */static inline voidf2alaw_array (float *ptr, int count, unsigned char *buffer, float normfact){	while (--count >= 0)	{	if (ptr [count] >= 0)			buffer [count] = alaw_encode [lrintf (normfact * ptr [count])] ;		else			buffer [count] = 0x7F & alaw_encode [- lrintf (normfact * ptr [count])] ;		} ;} /* f2alaw_array */static inline voidd2alaw_array (double *ptr, int count, unsigned char *buffer, double normfact){	while (--count >= 0)	{	if (ptr [count] >= 0)			buffer [count] = alaw_encode [lrint (normfact * ptr [count])] ;		else			buffer [count] = 0x7F & alaw_encode [- lrint (normfact * ptr [count])] ;		} ;} /* d2alaw_array *//*==============================================================================*/static sf_count_talaw_read_alaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;		alaw2s_array (psf->u.ucbuf, readcount, ptr + total) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* alaw_read_alaw2s */static sf_count_talaw_read_alaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;		alaw2i_array (psf->u.ucbuf, readcount, ptr + total) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* alaw_read_alaw2i */static sf_count_talaw_read_alaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	float	normfact ;	normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;		alaw2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* alaw_read_alaw2f */static sf_count_talaw_read_alaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	double	normfact ;	normfact = (psf->norm_double) ? 1.0 / ((double) 0x8000) : 1.0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ;		alaw2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* alaw_read_alaw2d *//*=============================================================================================*/static sf_count_talaw_write_s2alaw	(SF_PRIVATE *psf, short *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		s2alaw_array (ptr + total, bufferlen, psf->u.ucbuf) ;		writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* alaw_write_s2alaw */static sf_count_talaw_write_i2alaw	(SF_PRIVATE *psf, int *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		i2alaw_array (ptr + total, bufferlen, psf->u.ucbuf) ;		writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* alaw_write_i2alaw */static sf_count_talaw_write_f2alaw	(SF_PRIVATE *psf, float *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	float	normfact ;	normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) / 16.0 : 1.0 / 16 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		f2alaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ;		writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* alaw_write_f2alaw */static sf_count_talaw_write_d2alaw	(SF_PRIVATE *psf, double *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	double	normfact ;	normfact = (psf->norm_double) ? (1.0 * 0x7FFF) / 16.0 : 1.0 / 16.0 ;	bufferlen = ARRAY_LEN (psf->u.ucbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		d2alaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ;		writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* alaw_write_d2alaw *//*** Do not edit or modify anything in this comment block.** The arch-tag line is a file identity tag for the GNU Arch ** revision control system.**** arch-tag: 289ccfc2-42a6-4f1f-a29f-4dcc9bfa8752*/

⌨️ 快捷键说明

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