Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29110
Modified Files:
Tag: devel_0_37
d_fft.c
Log Message:
moved fftw initialization
Index: d_fft.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_fft.c,v
retrieving revision 1.1.1.1.16.3
retrieving revision 1.1.1.1.16.4
diff -C2 -d -r1.1.1.1.16.3 -r1.1.1.1.16.4
*** d_fft.c 8 Apr 2004 16:53:08 -0000 1.1.1.1.16.3
--- d_fft.c 15 Jun 2004 10:07:33 -0000 1.1.1.1.16.4
***************
*** 284,300 ****
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
x->x_f = 0;
-
- //get ready for the default blocksize
- x->bins=64;
- x->inreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->inimag = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outimag = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->dim.n=64;
- x->dim.is=1;
- x->dim.os=1;
- x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL, x->inreal,
- x->inimag, x->outreal, x->outimag,
- FFTW_ESTIMATE);
return (x);
}
--- 284,287 ----
***************
*** 307,323 ****
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
x->x_f = 0;
-
- //get ready for the default blocksize
- x->bins=64;
- x->inreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->inimag = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outimag = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->dim.n=64;
- x->dim.is=1;
- x->dim.os=1;
- x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL, x->inimag,
- x->inreal, x->outimag, x->outreal,
- FFTW_ESTIMATE);
return (x);
}
--- 294,297 ----
***************
*** 350,376 ****
t_int n =(t_int) w[6];
- if (n != x->bins)
- {
- x->bins=n;
- x->dim.n=n;
-
- //re-allocate fft buffers
- fftwf_free(x->inreal);
- fftwf_free(x->inimag);
- fftwf_free(x->outreal);
- fftwf_free(x->outimag);
- x->inreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->inimag = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outimag = fftwf_malloc(sizeof(t_sample) * x->bins);
-
- //set plan, this might take a few seconds
- //but you don't have to do that on the fly...
- fftwf_destroy_plan(x->plan);
- x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL, x->inreal,
- x->inimag, x->outreal, x->outimag,
- FFTW_ESTIMATE);
- }
-
//prepare, execute and output results
memcpy(x->inreal,in1,(sizeof(t_sample) * x->bins));
--- 324,327 ----
***************
*** 391,417 ****
t_sample * out2 =(t_sample *) w[5];
t_int n =(t_int) w[6];
-
- if (n != x->bins)
- {
- x->bins=n;
- x->dim.n=n;
-
- //re-allocate fft buffers
- fftwf_free(x->inreal);
- fftwf_free(x->inimag);
- fftwf_free(x->outreal);
- fftwf_free(x->outimag);
- x->inreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->inimag = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outreal = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outimag = fftwf_malloc(sizeof(t_sample) * x->bins);
-
- //set plan, this might take a few seconds
- //but you don't have to do that on the fly...
- fftwf_destroy_plan(x->plan);
- x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL, x->inimag,
- x->inreal, x->outimag, x->outreal,
- FFTW_ESTIMATE);
- }
//prepare, execute and output results
--- 342,345 ----
***************
*** 432,435 ****
--- 360,376 ----
float *out1 = sp[2]->s_vec;
float *out2 = sp[3]->s_vec;
+
+ //prepare the fft
+ x->bins=n;
+ x->inreal = fftwf_malloc(sizeof(t_sample) * x->bins);
+ x->inimag = fftwf_malloc(sizeof(t_sample) * x->bins);
+ x->outreal = fftwf_malloc(sizeof(t_sample) * x->bins);
+ x->outimag = fftwf_malloc(sizeof(t_sample) * x->bins);
+ x->dim.n=n;
+ x->dim.is=1;
+ x->dim.os=1;
+ x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL, x->inimag,
+ x->inreal, x->outimag, x->outreal,
+ FFTW_MEASURE);
dsp_add(f, 6, x, in1, in2, out1, out2, n);
}
***************
*** 489,504 ****
outlet_new(&x->x_obj, gensym("signal"));
x->x_f = 0;
-
- //get ready for the default blocksize
- x->bins=64;
- x->infft = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outreal = fftwf_malloc(sizeof(t_sample) * ((x->bins)/2+1));
- x->outimag = fftwf_malloc(sizeof(t_sample) * ((x->bins)/2+1));
- x->dim.n=64;
- x->dim.is=1;
- x->dim.os=1;
- x->plan = fftwf_plan_guru_split_dft_r2c(1, &(x->dim), 0, NULL, x->infft,
- x->outreal, x->outimag,
- FFTW_ESTIMATE);
return (x);
}
--- 430,433 ----
***************
*** 531,555 ****
t_int n =(t_int) w[5];
- if (n != x->bins)
- {
- x->bins=n;
- x->dim.n=n;
-
- //re-allocate fft buffers
- fftwf_free(x->infft);
- fftwf_free(x->outreal);
- fftwf_free(x->outimag);
- x->infft = fftwf_malloc(sizeof(t_sample) * x->bins);
- x->outreal = fftwf_malloc(sizeof(t_sample) * ((x->bins)/2+1));
- x->outimag = fftwf_malloc(sizeof(t_sample) * ((x->bins)/2+1));
-
- //set plan, this might take a few seconds
- //but you don't have to do that on the fly...
- fftwf_destroy_plan(x->plan);
- x->plan = fftwf_plan_guru_split_dft_r2c(1, &(x->dim), 0, NULL,
- x->infft, x->outreal,
- x->outimag, FFTW_ESTIMATE);
- }
-
//prepare, execute and output results
memcpy(x->infft,in1,n*sizeof(t_sample));
--- 460,463 ----
***************
*** 575,580 ****
}
else
dsp_add(sigrfftw_perform,5,x,in1,out1,out2,n);
!
dsp_add_zero(out1 + n2, n2);
dsp_add_zero(out2 + n2, n2);
--- 483,501 ----
}
else
+ {
+ // prepare the fft
+ x->bins=n;
+ x->infft = fftwf_malloc(sizeof(t_sample) * x->bins);
+ x->outreal = fftwf_malloc(sizeof(t_sample) * ((x->bins)/2+1));
+ x->outimag = fftwf_malloc(sizeof(t_sample) * ((x->bins)/2+1));
+ x->dim.n=n;
+ x->dim.is=1;
+ x->dim.os=1;
+ x->plan = fftwf_plan_guru_split_dft_r2c(1, &(x->dim), 0, NULL, x->infft,
+ x->outreal, x->outimag,
+ FFTW_MEASURE);
dsp_add(sigrfftw_perform,5,x,in1,out1,out2,n);
! }
!
dsp_add_zero(out1 + n2, n2);
dsp_add_zero(out2 + n2, n2);
***************
*** 617,633 ****
outlet_new(&x->x_obj, gensym("signal"));
x->x_f = 0;
-
- //get ready for the default blocksize
- x->bins=64;
- x->inreal = fftwf_malloc(sizeof(t_sample) * (x->bins)/2+1);
- x->inimag = fftwf_malloc(sizeof(t_sample) * (x->bins)/2+1);
- x->outfft = fftwf_malloc(sizeof(t_sample) * x->bins);
-
- x->dim.n=64;
- x->dim.is=1;
- x->dim.os=1;
- x->plan = fftwf_plan_guru_split_dft_c2r(1, &(x->dim), 0, NULL, x->inreal,
- x->inimag, x->outfft,
- FFTW_ESTIMATE);
return (x);
}
--- 538,541 ----
***************
*** 650,674 ****
t_int n =(t_int) w[5];
- if (n != x->bins)
- {
- x->bins=n;
- x->dim.n=n;
-
- //re-allocate fft buffers
- fftwf_free(x->inreal);
- fftwf_free(x->inimag);
- fftwf_free(x->outfft);
- x->inreal = fftwf_malloc(sizeof(t_sample) * (x->bins)/2+1);
- x->inimag = fftwf_malloc(sizeof(t_sample) * (x->bins)/2+1);
- x->outfft = fftwf_malloc(sizeof(t_sample) * x->bins);
-
- //set plan, this might take a few seconds
- //but you don't have to do that on the fly...
- fftwf_destroy_plan(x->plan);
- x->plan = fftwf_plan_guru_split_dft_c2r(1, &(x->dim), 0, NULL,
- x->inreal, x->inimag,
- x->outfft, FFTW_ESTIMATE);
- }
-
//prepare, execute and output results
memcpy(x->inreal,in1,(n/2+1)*sizeof(t_sample));
--- 558,561 ----
***************
*** 695,699 ****
--- 582,599 ----
else
+ {
+ //prepare the fft
+ x->bins=n;
+ x->inreal = fftwf_malloc(sizeof(t_sample) * (x->bins)/2+1);
+ x->inimag = fftwf_malloc(sizeof(t_sample) * (x->bins)/2+1);
+ x->outfft = fftwf_malloc(sizeof(t_sample) * x->bins);
+ x->dim.n=n;
+ x->dim.is=1;
+ x->dim.os=1;
+ x->plan = fftwf_plan_guru_split_dft_c2r(1, &(x->dim), 0, NULL, x->inreal,
+ x->inimag, x->outfft,
+ FFTW_MEASURE);
dsp_add(sigrifftw_perform,5,x,in1,in2,out1,n);
+ }
}