comparison fft-test.c @ 7546:97383e012cb9 libavcodec

remove mdct tmp buffer
author lorenm
date Tue, 12 Aug 2008 00:36:36 +0000
parents be322248a318
children e9d9d946f213
comparison
equal deleted inserted replaced
7545:2dca9201c400 7546:97383e012cb9
175 175
176 176
177 int main(int argc, char **argv) 177 int main(int argc, char **argv)
178 { 178 {
179 FFTComplex *tab, *tab1, *tab_ref; 179 FFTComplex *tab, *tab1, *tab_ref;
180 FFTSample *tabtmp, *tab2; 180 FFTSample *tab2;
181 int it, i, c; 181 int it, i, c;
182 int do_speed = 0; 182 int do_speed = 0;
183 int do_mdct = 0; 183 int do_mdct = 0;
184 int do_inverse = 0; 184 int do_inverse = 0;
185 FFTContext s1, *s = &s1; 185 FFTContext s1, *s = &s1;
212 212
213 fft_size = 1 << fft_nbits; 213 fft_size = 1 << fft_nbits;
214 tab = av_malloc(fft_size * sizeof(FFTComplex)); 214 tab = av_malloc(fft_size * sizeof(FFTComplex));
215 tab1 = av_malloc(fft_size * sizeof(FFTComplex)); 215 tab1 = av_malloc(fft_size * sizeof(FFTComplex));
216 tab_ref = av_malloc(fft_size * sizeof(FFTComplex)); 216 tab_ref = av_malloc(fft_size * sizeof(FFTComplex));
217 tabtmp = av_malloc(fft_size / 2 * sizeof(FFTSample));
218 tab2 = av_malloc(fft_size * sizeof(FFTSample)); 217 tab2 = av_malloc(fft_size * sizeof(FFTSample));
219 218
220 if (do_mdct) { 219 if (do_mdct) {
221 if (do_inverse) 220 if (do_inverse)
222 av_log(NULL, AV_LOG_INFO,"IMDCT"); 221 av_log(NULL, AV_LOG_INFO,"IMDCT");
244 av_log(NULL, AV_LOG_INFO,"Checking...\n"); 243 av_log(NULL, AV_LOG_INFO,"Checking...\n");
245 244
246 if (do_mdct) { 245 if (do_mdct) {
247 if (do_inverse) { 246 if (do_inverse) {
248 imdct_ref((float *)tab_ref, (float *)tab1, fft_nbits); 247 imdct_ref((float *)tab_ref, (float *)tab1, fft_nbits);
249 ff_imdct_calc(m, tab2, (float *)tab1, tabtmp); 248 ff_imdct_calc(m, tab2, (float *)tab1);
250 check_diff((float *)tab_ref, tab2, fft_size); 249 check_diff((float *)tab_ref, tab2, fft_size);
251 } else { 250 } else {
252 mdct_ref((float *)tab_ref, (float *)tab1, fft_nbits); 251 mdct_ref((float *)tab_ref, (float *)tab1, fft_nbits);
253 252
254 ff_mdct_calc(m, tab2, (float *)tab1, tabtmp); 253 ff_mdct_calc(m, tab2, (float *)tab1);
255 254
256 check_diff((float *)tab_ref, tab2, fft_size / 2); 255 check_diff((float *)tab_ref, tab2, fft_size / 2);
257 } 256 }
258 } else { 257 } else {
259 memcpy(tab, tab1, fft_size * sizeof(FFTComplex)); 258 memcpy(tab, tab1, fft_size * sizeof(FFTComplex));
276 for(;;) { 275 for(;;) {
277 time_start = gettime(); 276 time_start = gettime();
278 for(it=0;it<nb_its;it++) { 277 for(it=0;it<nb_its;it++) {
279 if (do_mdct) { 278 if (do_mdct) {
280 if (do_inverse) { 279 if (do_inverse) {
281 ff_imdct_calc(m, (float *)tab, (float *)tab1, tabtmp); 280 ff_imdct_calc(m, (float *)tab, (float *)tab1);
282 } else { 281 } else {
283 ff_mdct_calc(m, (float *)tab, (float *)tab1, tabtmp); 282 ff_mdct_calc(m, (float *)tab, (float *)tab1);
284 } 283 }
285 } else { 284 } else {
286 memcpy(tab, tab1, fft_size * sizeof(FFTComplex)); 285 memcpy(tab, tab1, fft_size * sizeof(FFTComplex));
287 ff_fft_calc(s, tab); 286 ff_fft_calc(s, tab);
288 } 287 }