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

📄 pcm.c

📁 Vovida 社区开源的 SIP 协议源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		f2let_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, 1.0) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_f2les */static intpcm_write_f2bet	(SF_PRIVATE *psf, float *ptr, int len){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		f2bet_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, 1.0) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_f2bes */static intpcm_write_f2bei	(SF_PRIVATE *psf, float *ptr, int len){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		f2bei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, 1.0) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_f2bei */static intpcm_write_f2lei	(SF_PRIVATE *psf, float *ptr, int len){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		f2lei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, 1.0) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_f2lei *//*-----------------------------------------------------------------------------------------------*/static intpcm_write_d2sc	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x80) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2sc_array (ptr, index, (signed char*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2sc */static intpcm_write_d2uc	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x80) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2uc_array (ptr, index, (unsigned char*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2uc */static intpcm_write_d2bes	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x8000) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2bes_array (ptr, index, (short*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2bes */static intpcm_write_d2les	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x8000) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2les_array (ptr, index, (short*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2les */static intpcm_write_d2let	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x800000) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2let_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2les */static intpcm_write_d2bet	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x800000) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2bet_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2bes */static intpcm_write_d2bei	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x80000000) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2bei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2bei */static intpcm_write_d2lei	(SF_PRIVATE *psf, double *ptr, int len, int normalize){	unsigned int	writecount, thiswrite ;	int	bytecount, bufferlen ;	int		index = 0, total = 0 ;	double		normfact ;		normfact = (normalize ? ((double) 0x80000000) : 1.0) ;	bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ;	bytecount = len * psf->bytewidth ;	while (bytecount > 0)	{	writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ;		d2lei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, normfact) ;		thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ;		total += thiswrite ;		if (thiswrite < writecount)			break ;		index += thiswrite / psf->bytewidth ;		bytecount -= thiswrite ;		} ;	total /= psf->bytewidth ;	if (total < len)		psf->error = SFE_SHORT_WRITE ;		return total ;} /* pcm_write_d2lei *//*-----------------------------------------------------------------------------------------------*/static	void	sc2s_array	(signed char *buffer, unsigned int count, short *ptr, int index){	int	k ;	for (k = 0 ; k < count ; k++)	{	ptr [index] = ((short) buffer [k]) ;		index ++ ;		} ;} /* sc2s_array */static	void	uc2s_array	(unsigned char *buffer, unsigned int count, short *ptr, int index){	int	k ;	for (k = 0 ; k < count ; k++)	{	ptr [index] = ((((short) buffer [k]) - 128) % 256) ;		index ++ ;		} ;} /* uc2s_array */static void	bet2s_array (tribyte *buffer, unsigned int count, short *ptr, int index){	unsigned char	*cptr ;	int		k ;	int 	value;	cptr = (unsigned char*) buffer ;	for (k = 0 ; k < count ; k++)	{	value = (cptr [0] << 24) + (cptr [1] << 16) + (cptr [2] << 8) ;		value = BE2H_INT (value) ;		ptr [index] = (short) (value >> 16) ;		index ++ ;		cptr += 3 ;			} ;} /* bet2s_array */static void	let2s_array (tribyte *buffer, unsigned int count, short *ptr, int index){	unsigned char	*cptr ;	int		k ;	int 	value;	cptr = (unsigned char*) buffer ;	for (k = 0 ; k < count ; k++)	{	value = (cptr [0] << 8) + (cptr [1] << 16) + (cptr [2] << 24) ;		value = LE2H_INT (value) ;		ptr [index] = (short) (value >> 16) ;		index ++ ;		cptr += 3 ;		} ;} /* let2s_array */static void	bei2s_array (int *buffer, unsigned int count, short *ptr, int index){	int	k ;	int		value ;	for (k = 0 ; k < count ; k++)	{	value = BE2H_INT (buffer [k]) ;		ptr [index] = (short) (value >> 16) ;		index ++ ;		} ;} /* bei2s_array */static void	lei2s_array (int *buffer, unsigned int count, short *ptr, int index){	int	k ;	int		value ;	for (k = 0 ; k < count ; k++)	{	value = LE2H_INT (buffer [k]) ;		ptr [index] = (short) (value >> 16) ;		index ++ ;		} ;} /* lei2s_array *//*-----------------------------------------------------------------------------------------

⌨️ 快捷键说明

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