summaryrefslogtreecommitdiff
path: root/main/libresample/tests/compareresample.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2008-07-21 14:47:41 +0000
committerRussell Bryant <russell@russellbryant.com>2008-07-21 14:47:41 +0000
commitc87f901cfd9a5729273c18156e487a9634819610 (patch)
tree071ce68d73a14074b35b40b234c63df8f40737fb /main/libresample/tests/compareresample.c
parent5de127e1036bdc6c31b1fc94ed31eb1b09f964c0 (diff)
Remove libresample from the Asterisk source tree. It is now available in its
own repository, and must be installed like any other library for Asterisk to use. The two modules that require it are codec_resample and app_jack. To install libresample: $ svn co http://svn.digium.com/svn/libresample/trunk libresample $ cd libresample $ ./configure $ make $ sudo make install This code is currently in our own repository because the build system did not include the appropriate targets for building a dynamic library or for installing the library. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@132390 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/libresample/tests/compareresample.c')
-rw-r--r--main/libresample/tests/compareresample.c183
1 files changed, 0 insertions, 183 deletions
diff --git a/main/libresample/tests/compareresample.c b/main/libresample/tests/compareresample.c
deleted file mode 100644
index 8773c9d4e..000000000
--- a/main/libresample/tests/compareresample.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/**********************************************************************
-
- compareresample.c
-
- Real-time library interface by Dominic Mazzoni
-
- Based on resample-1.7:
- http://www-ccrma.stanford.edu/~jos/resample/
-
- License: LGPL - see the file LICENSE.txt for more information
-
-**********************************************************************/
-
-#include "../include/libresample.h"
-
-#include <samplerate.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include <sys/time.h>
-
-#define MIN(A, B) (A) < (B)? (A) : (B)
-
-void dostat(char *name, float *d1, float *d2, int len)
-{
- int i;
- double sum, sumsq, err, rmserr;
-
- sum = 0.0;
- sumsq = 0.0;
- for(i=0; i<len; i++) {
- double diff = d1[i] - d2[i];
- sum += fabs(diff);
- sumsq += diff * diff;
- }
- err = sum / len;
- rmserr = sqrt(sumsq / len);
- printf(" %s: Avg err: %f RMS err: %f\n", name, err, rmserr);
-}
-
-void runtest(float *src, int srclen,
- float *ans, int anslen,
- double factor)
-{
- struct timeval tv0, tv1;
- int dstlen = (int)(srclen * factor);
- float *dst_rs = (float *)malloc((dstlen+100) * sizeof(float));
- float *dst_rabbit = (float *)malloc((dstlen+100) * sizeof(float));
- void *handle;
- SRC_DATA rabbit;
- double deltat;
- int srcblocksize = srclen;
- int dstblocksize = dstlen;
- int i, out, out_rabbit, o, srcused;
- int statlen, srcpos;
-
- /* do resample */
-
- for(i=0; i<dstlen+100; i++)
- dst_rs[i] = -99.0;
-
- gettimeofday(&tv0, NULL);
-
- handle = resample_open(1, factor, factor);
- out = 0;
- srcpos = 0;
- for(;;) {
- int srcBlock = MIN(srclen-srcpos, srcblocksize);
- int lastFlag = (srcBlock == srclen-srcpos);
-
- o = resample_process(handle, factor,
- &src[srcpos], srcBlock,
- lastFlag, &srcused,
- &dst_rs[out], MIN(dstlen-out, dstblocksize));
- srcpos += srcused;
- if (o >= 0)
- out += o;
- if (o < 0 || (o == 0 && srcpos == srclen))
- break;
- }
- resample_close(handle);
-
- gettimeofday(&tv1, NULL);
- deltat =
- (tv1.tv_sec + tv1.tv_usec * 0.000001) -
- (tv0.tv_sec + tv0.tv_usec * 0.000001);
-
- if (o < 0) {
- printf("Error: resample_process returned an error: %d\n", o);
- }
-
- if (out <= 0) {
- printf("Error: resample_process returned %d samples\n", out);
- free(dst_rs);
- return;
- }
-
- printf(" resample: %.3f seconds, %d outputs\n", deltat, out);
-
- /* do rabbit (Erik's libsamplerate) */
-
- for(i=0; i<dstlen+100; i++)
- dst_rabbit[i] = -99.0;
-
- rabbit.data_in = src;
- rabbit.data_out = dst_rabbit;
- rabbit.input_frames = srclen;
- rabbit.output_frames = dstlen;
- rabbit.input_frames_used = 0;
- rabbit.output_frames_gen = 0;
- rabbit.end_of_input = 1;
- rabbit.src_ratio = factor;
-
- gettimeofday(&tv0, NULL);
-
- /* src_simple(&rabbit, SRC_SINC_BEST_QUALITY, 1); */
- src_simple(&rabbit, SRC_SINC_FASTEST, 1);
- /* src_simple(&rabbit, SRC_LINEAR, 1); */
-
- gettimeofday(&tv1, NULL);
- deltat =
- (tv1.tv_sec + tv1.tv_usec * 0.000001) -
- (tv0.tv_sec + tv0.tv_usec * 0.000001);
-
- out_rabbit = rabbit.output_frames_gen;
-
- printf(" rabbit : %.3f seconds, %d outputs\n",
- deltat, out_rabbit);
-
- statlen = MIN(out, out_rabbit);
- if (anslen > 0)
- statlen = MIN(statlen, anslen);
-
- if (ans) {
- dostat("resample ", dst_rs, ans, statlen);
- dostat("rabbit ", dst_rabbit, ans, statlen);
- }
- dostat( "RS vs rabbit", dst_rs, dst_rabbit, statlen);
-
- free(dst_rs);
- free(dst_rabbit);
-}
-
-int main(int argc, char **argv)
-{
- int i, srclen;
- float *src, *ans;
-
- printf("\n*** sin wave, factor = 1.0 *** \n\n");
- srclen = 100000;
- src = malloc(srclen * sizeof(float));
- for(i=0; i<srclen; i++)
- src[i] = sin(i/100.0);
-
- runtest(src, srclen, src, srclen, 1.0);
-
- printf("\n*** sin wave, factor = 0.25 *** \n\n");
- srclen = 100000;
- for(i=0; i<srclen; i++)
- src[i] = sin(i/100.0);
- ans = malloc((srclen/4) * sizeof(float));
- for(i=0; i<srclen/4; i++)
- ans[i] = sin(i/25.0);
-
- runtest(src, srclen, ans, srclen/4, 0.25);
- free(ans);
-
- printf("\n*** sin wave, factor = 4.0 *** \n\n");
- srclen = 20000;
- for(i=0; i<srclen; i++)
- src[i] = sin(i/100.0);
- ans = malloc((srclen*4) * sizeof(float));
- for(i=0; i<srclen*4; i++)
- ans[i] = sin(i/400.0);
-
- runtest(src, srclen, ans, srclen*4, 4.0);
- free(ans);
- free(src);
-
- return 0;
-}