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

📄 lossy_comp_test.c

📁 radius协议源码÷The Radius Stack will connect to a Radius Server. This stack implementation is built upo
💻 C
📖 第 1 页 / 共 4 页
字号:
	{	printf ("sf_read_short (file, data, 1) returned %d.\n", k) ;		exit (1) ;		} ;		if (error_function ((double) data [0], (double) orig [seekpos], margin))	{	printf ("sf_seek (SEEK_SET) followed by sf_read_short failed (%d, %d).\n", orig [1], data [0]) ;		exit (1) ;		} ;		if ((k = sf_seek (file, 0, SEEK_CUR)) != seekpos + 1)	{	printf ("sf_seek (SEEK_CUR) with 0 offset failed (%d should be %d)\n", k, seekpos + 1) ;		exit (1) ;		} ;	seekpos = sf_seek (file, 0, SEEK_CUR) + BUFFER_SIZE / 5 ;	k = sf_seek (file, BUFFER_SIZE / 5, SEEK_CUR) ;	sf_read_short (file, data, 1) ;	if (error_function ((double) data [0], (double) orig [seekpos], margin) || k != seekpos)	{	printf ("sf_seek (forwards, SEEK_CUR) followed by sf_read_short failed (%d, %d) (%d, %d).\n", data [0], orig [seekpos], k, seekpos + 1) ;		exit (1) ;		} ;		seekpos = sf_seek (file, 0, SEEK_CUR) - 20 ;	/* Check seek backward from current position. */	k = sf_seek (file, -20, SEEK_CUR) ;	sf_read_short (file, data, 1) ;	if (error_function ((double) data [0], (double) orig [seekpos], margin) || k != seekpos)	{	printf ("sf_seek (backwards, SEEK_CUR) followed by sf_read_short failed (%d, %d) (%d, %d).\n", data [0], orig [seekpos], k, seekpos) ;		exit (1) ;		} ;		/* Check that read past end of file returns number of items. */	sf_seek (file, (int) datalen, SEEK_SET) ; 	if ((k = sf_read_short (file, data, datalen)) != sfinfo.samples - datalen) 	{	printf ("Return value from sf_read_short past end of file incorrect (%d).\n", k) ; 		exit (1) ; 		} ;		/* Check seek backward from end. */	if ((k = sf_seek (file, 5 - (int) sfinfo.samples, SEEK_END)) != 5)	{	printf ("sf_seek (SEEK_END) returned %d instead of %d.\n", k, 5) ;		exit (1) ;		} ;	sf_read_short (file, data, 1) ;	if (error_function ((double) data [0], (double) orig [5], margin))	{	printf ("sf_seek (SEEK_END) followed by sf_read_short failed (%d should be %d).\n", data [0], orig [5]) ;		exit (1) ;		} ;	sf_close (file) ;	printf ("ok\n") ;} /* lcomp_test_short *//*--------------------------------------------------------------------------------------------*/  static	void	lcomp_test_int (char *str, char *filename, int typemajor, int typeminor, double margin){	SNDFILE			*file ;	SF_INFO			sfinfo ;	int				k, m, seekpos ;	unsigned int	datalen ;	int				*orig, *data ;	printf ("    lcomp_test_int      : %s ... ", str) ;		datalen = BUFFER_SIZE ;	data = (int*) data_buffer ;	orig = (int*) orig_buffer ;	gen_signal (orig_buffer, datalen) ;	for (k = 0 ; k < datalen ; k++)		orig [k] = (int) (orig_buffer [k]) ;			sfinfo.samplerate  = SAMPLE_RATE ;	sfinfo.samples     = 123456789 ;	/* Ridiculous value. */	sfinfo.channels    = 1 ;	sfinfo.pcmbitwidth = 16 ;	sfinfo.format 	   = (typemajor | typeminor) ;	if (! (file = sf_open_write (filename, &sfinfo)))	{	printf ("sf_open_write failed with error : ") ;		sf_perror (NULL) ;		exit (1) ;		} ;		if ((k = sf_write_int (file, orig, datalen)) != datalen)	{	printf ("sf_write_int failed with short write (%d => %d).\n", datalen, k) ;		exit (1) ;		} ;	sf_close (file) ;		memset (data, 0, datalen * sizeof (short)) ;	memset (&sfinfo, 0, sizeof (sfinfo)) ;		if (! (file = sf_open_read (filename, &sfinfo)))	{	printf ("sf_open_read failed with error : ") ;		sf_perror (NULL) ;		exit (1) ;		} ;		if (sfinfo.format != (typemajor | typeminor))	{	printf ("Returned format incorrect (0x%08X => 0x%08X).\n", (typemajor | typeminor), sfinfo.format) ;		exit (1) ;		} ;		if (sfinfo.samples < datalen)	{	printf ("Too few samples in file. (%d should be a little more than %d)\n", datalen, sfinfo.samples) ;		exit (1) ;		} ;		if (sfinfo.samples > (datalen + datalen/2))	{	printf ("Too many samples in file. (%d should be a little more than %d)\n", datalen, sfinfo.samples) ;		exit (1) ;		} ;		if (sfinfo.channels != 1)	{	printf ("Incorrect number of channels in file.\n") ;		exit (1) ;		} ;	if (sfinfo.pcmbitwidth != 16)	{	printf ("Incorrect bit width (%d).\n", sfinfo.pcmbitwidth) ;		exit (1) ;		} ;	if ((k = sf_read_int (file, data, datalen)) != datalen)	{	printf ("short read (%d).\n", k) ;		exit (1) ;		} ;	for (k = 0 ; k < datalen ; k++)	{	if (error_function ((double) data [k], (double) orig [k], margin))		{	printf ("Incorrect sample A (#%d : %d should be %d).\n", k, data [k], orig [k]) ;			exit (1) ;			} ;		} ;	if ((k = sf_read_int (file, data, datalen)) != sfinfo.samples - datalen)	{	printf ("Incorrect read length A (%d should be %d).\n", sfinfo.samples - datalen, k) ;		exit (1) ;		} ;			if ((sfinfo.format & SF_FORMAT_SUBMASK) != SF_FORMAT_MS_ADPCM)		for (k = 0 ; k < sfinfo.samples - datalen ; k++)			if (abs (data [k]) > decay_response (k))			{	printf ("Incorrect sample B (#%d : abs (%d) should be < %d).\n", datalen + k, data [k], decay_response (k)) ;				exit (1) ;				} ;	if (! sfinfo.seekable)	{	printf ("ok\n") ;		return ;		} ;	/* Now test sf_seek function. */		if ((k = sf_seek (file, 0, SEEK_SET)) != 0)	{	printf ("Seek to start of file failed (%d).\n", k) ;		exit (1) ;		} ;	for (m = 0 ; m < 3 ; m++)	{	if ((k = sf_read_int (file, data, datalen/7)) != datalen / 7)		{	printf ("Incorrect read length B (%d => %d).\n", datalen / 7, k) ;			exit (1) ;			} ;		for (k = 0 ; k < datalen/7 ; k++)			if (error_function ((double) data [k], (double) orig [k + m * (datalen / 7)], margin))			{	printf ("Incorrect sample C (#%d : %d => %d).\n", k + m * (datalen / 7), orig [k + m * (datalen / 7)], data [k]) ;				for (m = 0 ; m < 10 ; m++)					printf ("%d ", data [k]) ;				printf ("\n") ;				exit (1) ;				} ;		} ;	seekpos = BUFFER_SIZE / 10 ;		/* Check seek from start of file. */	if ((k = sf_seek (file, seekpos, SEEK_SET)) != seekpos)	{	printf ("Seek to start of file + %d failed (%d).\n", seekpos, k) ;		exit (1) ;		} ;	if ((k = sf_read_int (file, data, 1)) != 1)	{	printf ("sf_read_int (file, data, 1) returned %d.\n", k) ;		exit (1) ;		} ;		if (error_function ((double) data [0], (double) orig [seekpos], margin))	{	printf ("sf_seek (SEEK_SET) followed by sf_read_int failed (%d, %d).\n", orig [1], data [0]) ;		exit (1) ;		} ;		if ((k = sf_seek (file, 0, SEEK_CUR)) != seekpos + 1)	{	printf ("sf_seek (SEEK_CUR) with 0 offset failed (%d should be %d)\n", k, seekpos + 1) ;		exit (1) ;		} ;	seekpos = sf_seek (file, 0, SEEK_CUR) + BUFFER_SIZE / 5 ;	k = sf_seek (file, BUFFER_SIZE / 5, SEEK_CUR) ;	sf_read_int (file, data, 1) ;	if (error_function ((double) data [0], (double) orig [seekpos], margin) || k != seekpos)	{	printf ("sf_seek (forwards, SEEK_CUR) followed by sf_read_int failed (%d, %d) (%d, %d).\n", data [0], orig [seekpos], k, seekpos + 1) ;		exit (1) ;		} ;		seekpos = sf_seek (file, 0, SEEK_CUR) - 20 ;	/* Check seek backward from current position. */	k = sf_seek (file, -20, SEEK_CUR) ;	sf_read_int (file, data, 1) ;	if (error_function ((double) data [0], (double) orig [seekpos], margin) || k != seekpos)	{	printf ("sf_seek (backwards, SEEK_CUR) followed by sf_read_int failed (%d, %d) (%d, %d).\n", data [0], orig [seekpos], k, seekpos) ;		exit (1) ;		} ;		/* Check that read past end of file returns number of items. */	sf_seek (file, (int) datalen, SEEK_SET) ; 	if ((k = sf_read_int (file, data, datalen)) != sfinfo.samples - datalen) 	{	printf ("Return value from sf_read_int past end of file incorrect (%d).\n", k) ; 		exit (1) ; 		} ;		/* Check seek backward from end. */	if ((k = sf_seek (file, 5 - (int) sfinfo.samples, SEEK_END)) != 5)	{	printf ("sf_seek (SEEK_END) returned %d instead of %d.\n", k, 5) ;		exit (1) ;		} ;	sf_read_int (file, data, 1) ;	if (error_function ((double) data [0], (double) orig [5], margin))	{	printf ("sf_seek (SEEK_END) followed by sf_read_short failed (%d should be %d).\n", data [0], orig [5]) ;		exit (1) ;		} ;	sf_close (file) ;	printf ("ok\n") ;} /* lcomp_test_int *//*--------------------------------------------------------------------------------------------*/ static	void	lcomp_test_double (char *str, char *filename, int typemajor, int typeminor, double margin){	SNDFILE			*file ;	SF_INFO			sfinfo ;	int				k, m, seekpos ;	unsigned int	datalen ;	double			*orig, *data ;	printf ("    lcomp_test_double   : %s ... ", str) ;		datalen = BUFFER_SIZE ;	orig = (double*) orig_buffer ;	data = (double*) data_buffer ;	gen_signal (orig_buffer, datalen) ;			sfinfo.samplerate  = SAMPLE_RATE ;	sfinfo.samples     = 123456789 ;	/* Ridiculous value. */	sfinfo.channels    = 1 ;	sfinfo.pcmbitwidth = 16 ;	sfinfo.format 	   = (typemajor | typeminor) ;	if (! (file = sf_open_write (filename, &sfinfo)))	{	printf ("sf_open_write failed with error : ") ;		sf_perror (NULL) ;		exit (1) ;		} ;		if ((k = sf_write_double (file, orig, datalen, 0)) != datalen)	{	printf ("sf_write_double failed with double write (%d => %d).\n", datalen, k) ;		exit (1) ;		} ;	sf_close (file) ;		memset (data, 0, datalen * sizeof (double)) ;	memset (&sfinfo, 0, sizeof (sfinfo)) ;		if (! (file = sf_open_read (filename, &sfinfo)))	{	printf ("sf_open_read failed with error : ") ;		sf_perror (NULL) ;		exit (1) ;		} ;		if (sfinfo.format != (typemajor | typeminor))	{	printf ("Returned format incorrect (0x%08X => 0x%08X).\n", (typemajor | typeminor), sfinfo.format) ;		exit (1) ;		} ;		if (sfinfo.samples < datalen)	{	printf ("Too few samples in file. (%d should be a little more than %d)\n", datalen, sfinfo.samples) ;		exit (1) ;		} ;		if (sfinfo.samples > (datalen + datalen/2))	{	printf ("Too many samples in file. (%d should be a little more than %d)\n", datalen, sfinfo.samples) ;		exit (1) ;		} ;		if (sfinfo.channels != 1)	{	printf ("Incorrect number of channels in file.\n") ;		exit (1) ;		} ;	if (sfinfo.pcmbitwidth != 16)	{	printf ("Incorrect bit width (%d).\n", sfinfo.pcmbitwidth) ;		exit (1) ;		} ;	if ((k = sf_read_double (file, data, datalen, 0)) != datalen)	{	printf ("double read (%d).\n", k) ;		exit (1) ;		} ;	for (k = 0 ; k < datalen ; k++)		if (error_function (data [k], orig [k], margin))		{	printf ("Incorrect sample A (#%d : %f should be %f).\n", k, data [k], orig [k]) ;			exit (1) ;			} ;	if ((k = sf_read_double (file, data, datalen, 0)) != sfinfo.samples - datalen)	{	printf ("Incorrect read length A (%d should be %d).\n", sfinfo.samples - datalen, k) ;		exit (1) ;		} ;			if ((sfinfo.format & SF_FORMAT_SUBMASK) != SF_FORMAT_MS_ADPCM)		for (k = 0 ; k < sfinfo.samples - datalen ; k++)			if (abs ((int) data [k]) > decay_response (k))			{	printf ("Incorrect sample B (#%d : abs (%d) should be < %d).\n", datalen + k, (int) data [k], decay_response (k)) ;				exit (1) ;				} ;	if (! sfinfo.seekable)	{	printf ("ok\n") ;		return ;		} ;	/* Now test sf_seek function. */		if ((k = sf_seek (file, 0, SEEK_SET)) != 0)	{	printf ("Seek to start of file failed (%d).\n", k) ;		exit (1) ;		} ;	for (m = 0 ; m < 3 ; m++)	{	if ((k = sf_read_double (file, data, datalen/7, 0)) != datalen / 7)		{	printf ("Incorrect read length B (%d => %d).\n", datalen / 7, k) ;			exit (1) ;			} ;		for (k = 0 ; k < datalen/7 ; k++)			if (error_function (data [k], orig [k + m * (datalen / 7)], margin))			{	printf ("Incorrect sample C (#%d : %d => %d).\n", k + m * (datalen / 7), (int) orig [k + m * (datalen / 7)], (int) data [k]) ;				for (m = 0 ; m < 10 ; m++)					printf ("%d ", (int) data [k]) ;				printf ("\n") ;				exit (1) ;				} ;		} ;	seekpos = BUFFER_SIZE / 10 ;	

⌨️ 快捷键说明

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