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

📄 sndfile.c

📁 radius协议源码÷The Radius Stack will connect to a Radius Server. This stack implementation is built upo
💻 C
📖 第 1 页 / 共 3 页
字号:
		} ;		if (len % psf->sf.channels)	{	psf->error = SFE_BAD_READ_ALIGN ;		return (size_t) -1 ;		} ;		if (psf->current >= psf->sf.samples)	{	memset (ptr, 0, len * sizeof (short)) ;		return 0 ; /* End of file. */		} ;	if (! psf->read_short)	{	psf->error = SFE_UNIMPLEMENTED ;		return	(size_t) -1 ;		} ;			count = psf->read_short (psf, ptr, len) ;		if (psf->current + count / psf->sf.channels > psf->sf.samples)	{	count = (psf->sf.samples - psf->current) * psf->sf.channels ;		extra = len - count ;		memset (ptr + count, 0, extra * sizeof (short)) ;		psf->current = psf->sf.samples ;		} ;		psf->current += count / psf->sf.channels ;		return count ;} /* sf_read_short */size_t	sf_readf_short		(SNDFILE *sndfile, short *ptr, size_t frames){	SF_PRIVATE 	*psf ;	size_t		count, extra ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;		if (psf->mode != SF_MODE_READ)	{	psf->error = SFE_NOT_READMODE ;		return (size_t) -1 ;		} ;		if (psf->current >= psf->sf.samples)	{	memset (ptr, 0, frames * psf->sf.channels * sizeof (short)) ;		return 0 ; /* End of file. */		} ;	if (! psf->read_short)	{	psf->error = SFE_UNIMPLEMENTED ;		return	(size_t) -1 ;		} ;			count = psf->read_short (psf, ptr, frames * psf->sf.channels) ;		if (psf->current + count / psf->sf.channels > psf->sf.samples)	{	count = (psf->sf.samples - psf->current) * psf->sf.channels ;		extra =  frames * psf->sf.channels - count ;		memset (ptr + count, 0, extra * sizeof (short)) ;		psf->current = psf->sf.samples ;		} ;		psf->current += count / psf->sf.channels ;		return count / psf->sf.channels ;} /* sf_readf_short *//*------------------------------------------------------------------------------*/size_t	sf_read_int		(SNDFILE *sndfile, int *ptr, size_t len){	SF_PRIVATE 	*psf ;	size_t		count, extra ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF   (sndfile,psf) ;	if (psf->mode != SF_MODE_READ)		return SFE_NOT_READMODE ;		if (len % psf->sf.channels)		return	(psf->error = SFE_BAD_READ_ALIGN) ;		if (psf->current >= psf->sf.samples)	{	memset (ptr, 0, len * sizeof (int)) ;		return 0 ;		} ;	if (! psf->read_int)	{	psf->error = SFE_UNIMPLEMENTED ;		return	(size_t) -1 ;		} ;			count = psf->read_int (psf, ptr, len) ;		if (psf->current + count / psf->sf.channels > psf->sf.samples)	{	count = (psf->sf.samples - psf->current) * psf->sf.channels ;		extra = len - count ;		memset (ptr + count, 0, extra * sizeof (int)) ;		psf->current = psf->sf.samples ;		} ;		psf->current += count / psf->sf.channels ;		return count ;} /* sf_read_int */size_t	sf_readf_int		(SNDFILE *sndfile, int *ptr, size_t frames){	SF_PRIVATE 	*psf ;	size_t		count, extra ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF   (sndfile,psf) ;	if (psf->mode != SF_MODE_READ)		return SFE_NOT_READMODE ;		if (psf->current >= psf->sf.samples)	{	memset (ptr, 0, frames * psf->sf.channels * sizeof (int)) ;		return 0 ;		} ;	if (! psf->read_int)	{	psf->error = SFE_UNIMPLEMENTED ;		return	(size_t) -1 ;		} ;			count = psf->read_int (psf, ptr, frames * psf->sf.channels) ;		if (psf->current + count / psf->sf.channels > psf->sf.samples)	{	count = (psf->sf.samples - psf->current) * psf->sf.channels ;		extra = frames * psf->sf.channels - count ;		memset (ptr + count, 0, extra * sizeof (int)) ;		psf->current = psf->sf.samples ;		} ;		psf->current += count / psf->sf.channels ;		return count / psf->sf.channels ;} /* sf_readf_int *//*------------------------------------------------------------------------------*/size_t	sf_read_double	(SNDFILE *sndfile, double *ptr, size_t len, int normalize){	SF_PRIVATE 	*psf ;	size_t		count, extra ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf) ;		if (psf->mode != SF_MODE_READ)		return SFE_NOT_READMODE ;		if (len % psf->sf.channels)		return	(psf->error = SFE_BAD_READ_ALIGN) ;		if (psf->current >= psf->sf.samples)	{	memset (ptr, 0, len * sizeof (double)) ;		return 0 ;		} ;			if (! psf->read_double)	{	psf->error = SFE_UNIMPLEMENTED ;		return	(size_t) -1 ;		} ;			count = psf->read_double (psf, ptr, len, normalize) ;		if (psf->current + count / psf->sf.channels > psf->sf.samples)	{	count = (psf->sf.samples - psf->current) * psf->sf.channels ;		extra = len - count ;		memset (ptr + count, 0, extra * sizeof (double)) ;		psf->current = psf->sf.samples ;		} ;		psf->current += count / psf->sf.channels ;		return count ;} /* sf_read_double */size_t	sf_readf_double	(SNDFILE *sndfile, double *ptr, size_t frames, int normalize){	SF_PRIVATE 	*psf ;	size_t		count, extra ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf) ;		if (psf->mode != SF_MODE_READ)		return SFE_NOT_READMODE ;		if (psf->current >= psf->sf.samples)	{	memset (ptr, 0, frames * psf->sf.channels * sizeof (double)) ;		return 0 ;		} ;			if (! psf->read_double)	{	psf->error = SFE_UNIMPLEMENTED ;		return	(size_t) -1 ;		} ;			count = psf->read_double (psf, ptr, frames * psf->sf.channels, normalize) ;		if (psf->current + count / psf->sf.channels > psf->sf.samples)	{	count = (psf->sf.samples - psf->current) * psf->sf.channels ;		extra = frames * psf->sf.channels - count ;		memset (ptr + count, 0, extra * sizeof (double)) ;		psf->current = psf->sf.samples ;		} ;		psf->current += count / psf->sf.channels ;		return count / psf->sf.channels ;} /* sf_readf_double *//*------------------------------------------------------------------------------*/size_t	sf_write_raw	(SNDFILE *sndfile, void *ptr, size_t len){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (len % (psf->sf.channels * psf->bytewidth))	{	psf->error = SFE_BAD_WRITE_ALIGN ;		return (size_t) -1 ;		} ;		count = fwrite (ptr, 1, len, psf->file) ;		psf->current += count / psf->blockwidth ;		return count ;} /* sf_write_raw *//*------------------------------------------------------------------------------*/size_t	sf_write_short		(SNDFILE *sndfile, short *ptr, size_t len){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (len % psf->sf.channels)	{	psf->error = SFE_BAD_WRITE_ALIGN ;		return (size_t) -1 ;		} ;		if (! psf->write_short)	{	psf->error = SFE_UNIMPLEMENTED ;		return (size_t) -1 ;		} ;			count = psf->write_short (sndfile, ptr, len) ;		psf->current += count / psf->sf.channels ;		return count ;} /* sf_write_short */size_t	sf_writef_short		(SNDFILE *sndfile, short *ptr, size_t frames){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (! psf->write_short)	{	psf->error = SFE_UNIMPLEMENTED ;		return (size_t) -1 ;		} ;			count = psf->write_short (sndfile, ptr, frames * psf->sf.channels) ;		psf->current += count / psf->sf.channels ;		return count / psf->sf.channels ;} /* sf_writef_short *//*------------------------------------------------------------------------------*/size_t	sf_write_int		(SNDFILE *sndfile, int *ptr, size_t len){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (len % psf->sf.channels)	{	psf->error = SFE_BAD_WRITE_ALIGN ;		return (size_t) -1 ;		} ;		if (! psf->write_int)	{	psf->error = SFE_UNIMPLEMENTED ;		return (size_t) -1 ;		} ;			count = psf->write_int (sndfile, ptr, len) ;		psf->current += count / psf->sf.channels ;		return count ;} /* sf_write_int */size_t	sf_writef_int		(SNDFILE *sndfile, int *ptr, size_t frames){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (! psf->write_int)	{	psf->error = SFE_UNIMPLEMENTED ;		return (size_t) -1 ;		} ;			count = psf->write_int (sndfile, ptr, frames * psf->sf.channels) ;		psf->current += count / psf->sf.channels ;		return count / psf->sf.channels ;} /* sf_writef_int *//*------------------------------------------------------------------------------*/size_t	sf_write_double		(SNDFILE *sndfile, double *ptr, size_t len, int normalize){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (len % psf->sf.channels)	{	psf->error = SFE_BAD_WRITE_ALIGN ;		return	(size_t) -1 ;		} ;			if (! psf->write_double)	{	psf->error = SFE_UNIMPLEMENTED ;		return (size_t) -1 ;		} ;			count = psf->write_double (sndfile, ptr, len, normalize) ;		psf->current += count / psf->sf.channels ;		return count ;} /* sf_write_double */size_t	sf_writef_double		(SNDFILE *sndfile, double *ptr, size_t frames, int normalize){	SF_PRIVATE 	*psf ;	size_t		count ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->mode != SF_MODE_WRITE)	{	psf->error = SFE_NOT_WRITEMODE ;		return (size_t) -1 ;		} ;		if (! psf->write_double)	{	psf->error = SFE_UNIMPLEMENTED ;		return (size_t) -1 ;		} ;			count = psf->write_double (sndfile, ptr, frames * psf->sf.channels, normalize) ;		psf->current += count / psf->sf.channels ;		return count / psf->sf.channels ;} /* sf_writef_double *//*------------------------------------------------------------------------------*/int	sf_close	(SNDFILE *sndfile){	SF_PRIVATE  *psf ;	int			error ;	VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile,psf) ;	if (psf->close)		error = psf->close (psf) ;		fclose (psf->file) ;	memset (psf, 0, sizeof (SF_PRIVATE)) ;			free (psf) ;	return 0 ;} /* sf_close *//*=========================================================================** Private functions.*/

⌨️ 快捷键说明

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