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

📄 float32.c

📁 Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
💻 C
📖 第 1 页 / 共 2 页
字号:
	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;/* Fix me : Need lef2s_array */		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* host_read_f2s */static sf_count_thost_read_f2i	(SF_PRIVATE *psf, int *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	float		scale ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* host_read_f2i */static sf_count_thost_read_f	(SF_PRIVATE *psf, float *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	if (psf->float_endswap != SF_TRUE)		return psf_fread (ptr, sizeof (float), len, psf) ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		endswap_int_copy ((int*) (ptr + total), psf->u.ibuf, readcount) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* host_read_f */static sf_count_thost_read_f2d	(SF_PRIVATE *psf, double *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;/* Fix me : Need lef2d_array */		f2d_array (psf->u.fbuf, readcount, ptr + total) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* host_read_f2d */static sf_count_thost_write_s2f	(SF_PRIVATE *psf, short *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		s2f_array (ptr + total, psf->u.fbuf, bufferlen) ;		if (psf->has_peak)			float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* host_write_s2f */static sf_count_thost_write_i2f	(SF_PRIVATE *psf, int *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		i2f_array (ptr + total, psf->u.fbuf, bufferlen) ;		if (psf->has_peak)			float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* host_write_i2f */static sf_count_thost_write_f	(SF_PRIVATE *psf, float *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	if (psf->has_peak)		float32_peak_update (psf, ptr, len, 0) ;	if (psf->float_endswap != SF_TRUE)		return psf_fwrite (ptr, sizeof (float), len, psf) ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		endswap_int_copy (psf->u.ibuf, (int*) (ptr + total), bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* host_write_f */static sf_count_thost_write_d2f	(SF_PRIVATE *psf, double *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		d2f_array (ptr + total, psf->u.fbuf, bufferlen) ;		if (psf->has_peak)			float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* host_write_d2f *//*=======================================================================================*/static sf_count_treplace_read_f2s	(SF_PRIVATE *psf, short *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	float		scale ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		bf2f_array (psf->u.fbuf, bufferlen) ;		f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* replace_read_f2s */static sf_count_treplace_read_f2i	(SF_PRIVATE *psf, int *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	float		scale ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		bf2f_array (psf->u.fbuf, bufferlen) ;		f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* replace_read_f2i */static sf_count_treplace_read_f	(SF_PRIVATE *psf, float *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	/* FIX THIS */	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		bf2f_array (psf->u.fbuf, bufferlen) ;		memcpy (ptr + total, psf->u.fbuf, bufferlen * sizeof (float)) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* replace_read_f */static sf_count_treplace_read_f2d	(SF_PRIVATE *psf, double *ptr, sf_count_t len){	int			bufferlen, readcount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		bf2f_array (psf->u.fbuf, bufferlen) ;		f2d_array (psf->u.fbuf, readcount, ptr + total) ;		total += readcount ;		if (readcount < bufferlen)			break ;		len -= readcount ;		} ;	return total ;} /* replace_read_f2d */static sf_count_treplace_write_s2f	(SF_PRIVATE *psf, short *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		s2f_array (ptr + total, psf->u.fbuf, bufferlen) ;		if (psf->has_peak)			float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ;		f2bf_array (psf->u.fbuf, bufferlen) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* replace_write_s2f */static sf_count_treplace_write_i2f	(SF_PRIVATE *psf, int *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		i2f_array (ptr + total, psf->u.fbuf, bufferlen) ;		if (psf->has_peak)			float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ;		f2bf_array (psf->u.fbuf, bufferlen) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* replace_write_i2f */static sf_count_treplace_write_f	(SF_PRIVATE *psf, float *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	/* FIX THIS */	if (psf->has_peak)		float32_peak_update (psf, ptr, len, 0) ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		memcpy (psf->u.fbuf, ptr + total, bufferlen * sizeof (float)) ;		f2bf_array (psf->u.fbuf, bufferlen) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* replace_write_f */static sf_count_treplace_write_d2f	(SF_PRIVATE *psf, double *ptr, sf_count_t len){	int			bufferlen, writecount ;	sf_count_t	total = 0 ;	bufferlen = ARRAY_LEN (psf->u.fbuf) ;	while (len > 0)	{	if (len < bufferlen)			bufferlen = (int) len ;		d2f_array (ptr + total, psf->u.fbuf, bufferlen) ;		if (psf->has_peak)			float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ;		f2bf_array (psf->u.fbuf, bufferlen) ;		if (psf->float_endswap == SF_TRUE)			endswap_int_array (psf->u.ibuf, bufferlen) ;		writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ;		total += writecount ;		if (writecount < bufferlen)			break ;		len -= writecount ;		} ;	return total ;} /* replace_write_d2f *//*----------------------------------------------------------------------------------------------*/static voidbf2f_array (float *buffer, int count){	while (--count >= 0)	{	buffer [count] = FLOAT32_READ ((unsigned char *) (buffer + count)) ;		} ;} /* bf2f_array */static voidf2bf_array (float *buffer, int count){	while (--count >= 0)	{	FLOAT32_WRITE (buffer [count], (unsigned char*) (buffer + count)) ;		} ;} /* f2bf_array *//*** 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: b6c34917-488c-4145-9648-f4371fc4c889*/

⌨️ 快捷键说明

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