diff options
author | Thomas Vander Stichele <thomas@apestaart.org> | 2004-03-14 22:34:33 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2004-03-14 22:34:33 +0000 |
commit | 7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2 (patch) | |
tree | f863b467dea9559a6ec9c48affbfae11f8104164 /gst-libs/gst/resample/test.c | |
parent | a19db4bbdc4a15ea0d8f4d28e9a1302c9c3d1657 (diff) | |
download | gst-plugins-bad-7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2.tar.gz gst-plugins-bad-7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2.tar.bz2 gst-plugins-bad-7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2.zip |
gst-indent
Original commit message from CVS:
gst-indent
Diffstat (limited to 'gst-libs/gst/resample/test.c')
-rw-r--r-- | gst-libs/gst/resample/test.c | 523 |
1 files changed, 273 insertions, 250 deletions
diff --git a/gst-libs/gst/resample/test.c b/gst-libs/gst/resample/test.c index f268a592..152d12a6 100644 --- a/gst-libs/gst/resample/test.c +++ b/gst-libs/gst/resample/test.c @@ -16,337 +16,360 @@ /*#define test_func(x) sin(2*M_PI*(x)*(x)*1000) */ #define test_func(x) sin(2*M_PI*(x)*(x)*12000) -short i_buf[I_RATE*2*2]; -short o_buf[O_RATE*2*2]; +short i_buf[I_RATE * 2 * 2]; +short o_buf[O_RATE * 2 * 2]; static int i_offset; static int o_offset; FILE *out; -void test_res1(void); -void test_res2(void); -void test_res3(void); -void test_res4(void); -void test_res5(void); -void test_res6(void); -void test_res7(void); +void test_res1 (void); +void test_res2 (void); +void test_res3 (void); +void test_res4 (void); +void test_res5 (void); +void test_res6 (void); +void test_res7 (void); -int main(int argc,char *argv[]) +int +main (int argc, char *argv[]) { - out = fopen("out","w"); + out = fopen ("out", "w"); - test_res7(); + test_res7 (); - return 0; + return 0; } -void *get_buffer(void *priv, unsigned int size) +void * +get_buffer (void *priv, unsigned int size) { - void *ret; - ret = ((void *)o_buf) + o_offset; - o_offset += size; - return ret; + void *ret; + + ret = ((void *) o_buf) + o_offset; + o_offset += size; + return ret; } struct timeval start_time; -void start_timer(void) +void +start_timer (void) { - gettimeofday(&start_time,NULL); - /*printf("start %ld.%06ld\n",start_time.tv_sec,start_time.tv_usec); */ + gettimeofday (&start_time, NULL); + /*printf("start %ld.%06ld\n",start_time.tv_sec,start_time.tv_usec); */ } -void end_timer(void) +void +end_timer (void) { - struct timeval end_time; - double diff; + struct timeval end_time; + double diff; - gettimeofday(&end_time,NULL); - /*printf("end %ld.%06ld\n",end_time.tv_sec,end_time.tv_usec); */ - diff = (end_time.tv_sec - start_time.tv_sec) + - 1e-6*(end_time.tv_usec - start_time.tv_usec); + gettimeofday (&end_time, NULL); + /*printf("end %ld.%06ld\n",end_time.tv_sec,end_time.tv_usec); */ + diff = (end_time.tv_sec - start_time.tv_sec) + + 1e-6 * (end_time.tv_usec - start_time.tv_usec); - printf("time %g\n",diff); + printf ("time %g\n", diff); } -void test_res1(void) +void +test_res1 (void) { - resample_t *r; - int i; - double sum10k,sum22k; - double f; - int n10k,n22k; - double x; - - for(i=0;i<I_RATE;i++){ - i_buf[i*2+0] = rint(AMP * test_func((double)i/I_RATE)); - /*i_buf[i*2+1] = rint(AMP * test_func((double)i/I_RATE)); */ - i_buf[i*2+1] = (i<1000)?AMP:0; - } - - r = malloc(sizeof(resample_t)); - memset(r,0,sizeof(resample_t)); - - r->i_rate = I_RATE; - r->o_rate = O_RATE; - /*r->method = RESAMPLE_SINC_SLOW; */ - r->method = RESAMPLE_SINC; - r->channels = 2; - /*r->verbose = 1; */ - r->filter_length = 64; - r->get_buffer = get_buffer; - - resample_init(r); - - start_timer(); + resample_t *r; + int i; + double sum10k, sum22k; + double f; + int n10k, n22k; + double x; + + for (i = 0; i < I_RATE; i++) { + i_buf[i * 2 + 0] = rint (AMP * test_func ((double) i / I_RATE)); + /*i_buf[i*2+1] = rint(AMP * test_func((double)i/I_RATE)); */ + i_buf[i * 2 + 1] = (i < 1000) ? AMP : 0; + } + + r = malloc (sizeof (resample_t)); + memset (r, 0, sizeof (resample_t)); + + r->i_rate = I_RATE; + r->o_rate = O_RATE; + /*r->method = RESAMPLE_SINC_SLOW; */ + r->method = RESAMPLE_SINC; + r->channels = 2; + /*r->verbose = 1; */ + r->filter_length = 64; + r->get_buffer = get_buffer; + + resample_init (r); + + start_timer (); #define blocked #ifdef blocked - for(i=0;i+256<I_RATE;i+=256){ - resample_scale(r,i_buf+i*2,256*2*2); - } - if(I_RATE-i){ - resample_scale(r,i_buf+i*2,(I_RATE-i)*2*2); - } + for (i = 0; i + 256 < I_RATE; i += 256) { + resample_scale (r, i_buf + i * 2, 256 * 2 * 2); + } + if (I_RATE - i) { + resample_scale (r, i_buf + i * 2, (I_RATE - i) * 2 * 2); + } #else - resample_scale(r,i_buf,I_RATE*2*2); + resample_scale (r, i_buf, I_RATE * 2 * 2); #endif - end_timer(); - - for(i=0;i<O_RATE;i++){ - f = AMP*test_func((double)i/O_RATE); - /*f = rint(AMP*test_func((double)i/O_RATE)); */ - fprintf(out,"%d %d %d %g %g\n",i, - o_buf[2*i+0],o_buf[2*i+1], - f,o_buf[2*i+0]-f); - } - - sum10k=0; - sum22k=0; - n10k=0; - n22k=0; - for(i=0;i<O_RATE;i++){ - f = AMP*test_func((double)i/O_RATE); - /*f = rint(AMP*test_func((double)i/O_RATE)); */ - x = o_buf[2*i+0]-f; - if(((0.5*i)/O_RATE*I_RATE)<10000){ - sum10k += x*x; - n10k++; - } - if(((0.5*i)/O_RATE*I_RATE)<22050){ - sum22k += x*x; - n22k++; - } - } - printf("average error 10k=%g 22k=%g\n", - sqrt(sum10k/n10k), - sqrt(sum22k/n22k)); + end_timer (); + + for (i = 0; i < O_RATE; i++) { + f = AMP * test_func ((double) i / O_RATE); + /*f = rint(AMP*test_func((double)i/O_RATE)); */ + fprintf (out, "%d %d %d %g %g\n", i, + o_buf[2 * i + 0], o_buf[2 * i + 1], f, o_buf[2 * i + 0] - f); + } + + sum10k = 0; + sum22k = 0; + n10k = 0; + n22k = 0; + for (i = 0; i < O_RATE; i++) { + f = AMP * test_func ((double) i / O_RATE); + /*f = rint(AMP*test_func((double)i/O_RATE)); */ + x = o_buf[2 * i + 0] - f; + if (((0.5 * i) / O_RATE * I_RATE) < 10000) { + sum10k += x * x; + n10k++; + } + if (((0.5 * i) / O_RATE * I_RATE) < 22050) { + sum22k += x * x; + n22k++; + } + } + printf ("average error 10k=%g 22k=%g\n", + sqrt (sum10k / n10k), sqrt (sum22k / n22k)); } -void test_res2(void) +void +test_res2 (void) { - functable_t *t; - int i; - double x; - double f1,f2; + functable_t *t; + int i; + double x; + double f1, f2; - t = malloc(sizeof(*t)); - memset(t,0,sizeof(*t)); + t = malloc (sizeof (*t)); + memset (t, 0, sizeof (*t)); - t->start = -50.0; - t->offset = 1; - t->len = 100; + t->start = -50.0; + t->offset = 1; + t->len = 100; - t->func_x = functable_sinc; - t->func_dx = functable_dsinc; + t->func_x = functable_sinc; + t->func_dx = functable_dsinc; - functable_init(t); + functable_init (t); - for(i=0;i<1000;i++){ - x = -50.0 + 0.1 * i; - f1 = functable_sinc(NULL,x); - f2 = functable_eval(t,x); - fprintf(out,"%d %g %g %g\n",i,f1,f2,f1-f2); - } + for (i = 0; i < 1000; i++) { + x = -50.0 + 0.1 * i; + f1 = functable_sinc (NULL, x); + f2 = functable_eval (t, x); + fprintf (out, "%d %g %g %g\n", i, f1, f2, f1 - f2); + } } -void test_res3(void) +void +test_res3 (void) { - functable_t *t; - int i; - double x; - double f1,f2; - int n = 1; + functable_t *t; + int i; + double x; + double f1, f2; + int n = 1; - t = malloc(sizeof(*t)); - memset(t,0,sizeof(*t)); + t = malloc (sizeof (*t)); + memset (t, 0, sizeof (*t)); - t->start = -50.0; - t->offset = 1.0 / n; - t->len = 100 * n; + t->start = -50.0; + t->offset = 1.0 / n; + t->len = 100 * n; - t->func_x = functable_sinc; - t->func_dx = functable_dsinc; + t->func_x = functable_sinc; + t->func_dx = functable_dsinc; - t->func2_x = functable_window_std; - t->func2_dx = functable_window_dstd; + t->func2_x = functable_window_std; + t->func2_dx = functable_window_dstd; - t->scale = 1.0; - t->scale2 = 1.0 / (M_PI * 16); + t->scale = 1.0; + t->scale2 = 1.0 / (M_PI * 16); - functable_init(t); + functable_init (t); - for(i=0;i<1000 * n;i++){ - x = -50.0 + 0.1/n * i; - f1 = functable_sinc(NULL,t->scale * x) * - functable_window_std(NULL,t->scale2 * x); - f2 = functable_eval(t,x); - fprintf(out,"%d %g %g %g\n",i,f1,f2,f2-f1); - } + for (i = 0; i < 1000 * n; i++) { + x = -50.0 + 0.1 / n * i; + f1 = functable_sinc (NULL, t->scale * x) * + functable_window_std (NULL, t->scale2 * x); + f2 = functable_eval (t, x); + fprintf (out, "%d %g %g %g\n", i, f1, f2, f2 - f1); + } } -double sinc_poly(double x) +double +sinc_poly (double x) { #define INV3FAC 1.66666666666666666e-1 #define INV5FAC 8.33333333333333333e-3 #define INV7FAC 1.984126984e-4 #define INV9FAC 2.755731922e-6 #define INV11FAC 2.505210839e-8 - double x2 = x * x; + double x2 = x * x; - return 1 - - x2 * INV3FAC - + x2 * x2 * INV5FAC - - x2 * x2 * x2 * INV7FAC; - /*+ x2 * x2 * x2 * x2 * INV9FAC */ + return 1 - x2 * INV3FAC + x2 * x2 * INV5FAC - x2 * x2 * x2 * INV7FAC; + /*+ x2 * x2 * x2 * x2 * INV9FAC */ /*- x2 * x2 * x2 * x2 * x2 * INV11FAC; */ } -void test_res4(void) +void +test_res4 (void) { - int i; - double x,f1,f2; - - for(i=1;i<100;i++){ - x = 0.01 * i; - f1 = 1 - sin(x)/x; - f2 = 1 - sinc_poly(x); - - fprintf(out,"%g %.20g %.20g %.20g\n",x,f1,f2,f2-f1); - } + int i; + double x, f1, f2; + + for (i = 1; i < 100; i++) { + x = 0.01 * i; + f1 = 1 - sin (x) / x; + f2 = 1 - sinc_poly (x); + + fprintf (out, "%g %.20g %.20g %.20g\n", x, f1, f2, f2 - f1); + } } -void test_res5(void) +void +test_res5 (void) { - int i; - double sum; - - start_timer(); - sum = 0; - for(i=0;i<I_RATE;i++){ - sum += i_buf[i*2]; - } - end_timer(); - i_buf[0] = sum; + int i; + double sum; + + start_timer (); + sum = 0; + for (i = 0; i < I_RATE; i++) { + sum += i_buf[i * 2]; + } + end_timer (); + i_buf[0] = sum; } -void short_to_double(double *d,short *x) { *d = *x; } -void short_to_float(float *f,short *x) { *f = *x; } -void float_to_double(double *f,float *x) { *f = *x; } -void double_to_short(short *f,double *x) { *f = *x; } +void +short_to_double (double *d, short *x) +{ + *d = *x; +} + +void +short_to_float (float *f, short *x) +{ + *f = *x; +} + +void +float_to_double (double *f, float *x) +{ + *f = *x; +} + +void +double_to_short (short *f, double *x) +{ + *f = *x; +} double res6_tmp[1000]; -void test_res6(void) +void +test_res6 (void) { - int i; + int i; - for(i=0;i<I_RATE;i++){ - i_buf[i] = rint(AMP * test_func((double)i/I_RATE)); - } + for (i = 0; i < I_RATE; i++) { + i_buf[i] = rint (AMP * test_func ((double) i / I_RATE)); + } - conv_double_short_ref(res6_tmp,i_buf,1000); - for(i=0;i<1000;i++){ - res6_tmp[i] *= 3.0; - } - conv_short_double_ppcasm(o_buf,res6_tmp,1000); + conv_double_short_ref (res6_tmp, i_buf, 1000); + for (i = 0; i < 1000; i++) { + res6_tmp[i] *= 3.0; + } + conv_short_double_ppcasm (o_buf, res6_tmp, 1000); - for(i=0;i<1000;i++){ - fprintf(out,"%d %d %g %d\n",i,i_buf[i],res6_tmp[i],o_buf[i]); - } + for (i = 0; i < 1000; i++) { + fprintf (out, "%d %d %g %d\n", i, i_buf[i], res6_tmp[i], o_buf[i]); + } } -void test_res7(void) +void +test_res7 (void) { - resample_t *r; - int i; - double sum10k,sum22k; - double f; - int n10k,n22k; - double x; - - for(i=0;i<I_RATE;i++){ - i_buf[i] = rint(AMP * test_func((double)i/I_RATE)); - } - - r = malloc(sizeof(resample_t)); - memset(r,0,sizeof(resample_t)); - - r->i_rate = I_RATE; - r->o_rate = O_RATE; - /*r->method = RESAMPLE_SINC_SLOW; */ - r->method = RESAMPLE_SINC; - r->channels = 1; - /*r->verbose = 1; */ - r->filter_length = 64; - r->get_buffer = get_buffer; - - resample_init(r); - - start_timer(); + resample_t *r; + int i; + double sum10k, sum22k; + double f; + int n10k, n22k; + double x; + + for (i = 0; i < I_RATE; i++) { + i_buf[i] = rint (AMP * test_func ((double) i / I_RATE)); + } + + r = malloc (sizeof (resample_t)); + memset (r, 0, sizeof (resample_t)); + + r->i_rate = I_RATE; + r->o_rate = O_RATE; + /*r->method = RESAMPLE_SINC_SLOW; */ + r->method = RESAMPLE_SINC; + r->channels = 1; + /*r->verbose = 1; */ + r->filter_length = 64; + r->get_buffer = get_buffer; + + resample_init (r); + + start_timer (); #define blocked #ifdef blocked - for(i=0;i+256<I_RATE;i+=256){ - resample_scale(r,i_buf+i,256*2); - } - if(I_RATE-i){ - resample_scale(r,i_buf+i,(I_RATE-i)*2); - } + for (i = 0; i + 256 < I_RATE; i += 256) { + resample_scale (r, i_buf + i, 256 * 2); + } + if (I_RATE - i) { + resample_scale (r, i_buf + i, (I_RATE - i) * 2); + } #else - resample_scale(r,i_buf,I_RATE*2); + resample_scale (r, i_buf, I_RATE * 2); #endif - end_timer(); - - for(i=0;i<O_RATE;i++){ - f = AMP*test_func((double)i/O_RATE); - /*f = rint(AMP*test_func((double)i/O_RATE)); */ - fprintf(out,"%d %d %d %g %g\n",i, - o_buf[i],0, - f,o_buf[i]-f); - } - - sum10k=0; - sum22k=0; - n10k=0; - n22k=0; - for(i=0;i<O_RATE;i++){ - f = AMP*test_func((double)i/O_RATE); - /*f = rint(AMP*test_func((double)i/O_RATE)); */ - x = o_buf[i]-f; - if(((0.5*i)/O_RATE*I_RATE)<10000){ - sum10k += x*x; - n10k++; - } - if(((0.5*i)/O_RATE*I_RATE)<22050){ - sum22k += x*x; - n22k++; - } - } - printf("average error 10k=%g 22k=%g\n", - sqrt(sum10k/n10k), - sqrt(sum22k/n22k)); + end_timer (); + + for (i = 0; i < O_RATE; i++) { + f = AMP * test_func ((double) i / O_RATE); + /*f = rint(AMP*test_func((double)i/O_RATE)); */ + fprintf (out, "%d %d %d %g %g\n", i, o_buf[i], 0, f, o_buf[i] - f); + } + + sum10k = 0; + sum22k = 0; + n10k = 0; + n22k = 0; + for (i = 0; i < O_RATE; i++) { + f = AMP * test_func ((double) i / O_RATE); + /*f = rint(AMP*test_func((double)i/O_RATE)); */ + x = o_buf[i] - f; + if (((0.5 * i) / O_RATE * I_RATE) < 10000) { + sum10k += x * x; + n10k++; + } + if (((0.5 * i) / O_RATE * I_RATE) < 22050) { + sum22k += x * x; + n22k++; + } + } + printf ("average error 10k=%g 22k=%g\n", + sqrt (sum10k / n10k), sqrt (sum22k / n22k)); } - |