comparison dct-test.c @ 9199:ea0e5e9a520f libavcodec

Replace random() usage in test programs by av_lfg_*().
author diego
date Fri, 20 Mar 2009 11:48:27 +0000
parents 6d7c38f60b06
children dc9005dec909
comparison
equal deleted inserted replaced
9198:342e95d4784b 9199:ea0e5e9a520f
31 #include <sys/time.h> 31 #include <sys/time.h>
32 #include <unistd.h> 32 #include <unistd.h>
33 #include <math.h> 33 #include <math.h>
34 34
35 #include "libavutil/common.h" 35 #include "libavutil/common.h"
36 #include "libavutil/lfg.h"
36 37
37 #include "simple_idct.h" 38 #include "simple_idct.h"
38 #include "aandcttab.h" 39 #include "aandcttab.h"
39 #include "faandct.h" 40 #include "faandct.h"
40 #include "faanidct.h" 41 #include "faanidct.h"
41 #include "x86/idct_xvid.h" 42 #include "x86/idct_xvid.h"
42 43
43 #undef printf 44 #undef printf
44 #undef random
45 45
46 void *fast_memcpy(void *a, const void *b, size_t c){return memcpy(a,b,c);}; 46 void *fast_memcpy(void *a, const void *b, size_t c){return memcpy(a,b,c);};
47 47
48 /* reference fdct/idct */ 48 /* reference fdct/idct */
49 void fdct(DCTELEM *block); 49 void fdct(DCTELEM *block);
206 int err_inf, v; 206 int err_inf, v;
207 int64_t err2, ti, ti1, it1; 207 int64_t err2, ti, ti1, it1;
208 int64_t sysErr[64], sysErrMax=0; 208 int64_t sysErr[64], sysErrMax=0;
209 int maxout=0; 209 int maxout=0;
210 int blockSumErrMax=0, blockSumErr; 210 int blockSumErrMax=0, blockSumErr;
211 211 AVLFG prn;
212 srandom(0); 212
213 av_lfg_init(&prn, 1);
213 214
214 err_inf = 0; 215 err_inf = 0;
215 err2 = 0; 216 err2 = 0;
216 for(i=0; i<64; i++) sysErr[i]=0; 217 for(i=0; i<64; i++) sysErr[i]=0;
217 for(it=0;it<NB_ITS;it++) { 218 for(it=0;it<NB_ITS;it++) {
218 for(i=0;i<64;i++) 219 for(i=0;i<64;i++)
219 block1[i] = 0; 220 block1[i] = 0;
220 switch(test){ 221 switch(test){
221 case 0: 222 case 0:
222 for(i=0;i<64;i++) 223 for(i=0;i<64;i++)
223 block1[i] = (random() % 512) -256; 224 block1[i] = (av_lfg_get(&prn) % 512) -256;
224 if (is_idct){ 225 if (is_idct){
225 fdct(block1); 226 fdct(block1);
226 227
227 for(i=0;i<64;i++) 228 for(i=0;i<64;i++)
228 block1[i]>>=3; 229 block1[i]>>=3;
229 } 230 }
230 break; 231 break;
231 case 1:{ 232 case 1:{
232 int num= (random()%10)+1; 233 int num = av_lfg_get(&prn) % 10 + 1;
233 for(i=0;i<num;i++) 234 for(i=0;i<num;i++)
234 block1[random()%64] = (random() % 512) -256; 235 block1[av_lfg_get(&prn) % 64] = av_lfg_get(&prn) % 512 -256;
235 }break; 236 }break;
236 case 2: 237 case 2:
237 block1[0]= (random()%4096)-2048; 238 block1[0] = av_lfg_get(&prn) % 4096 - 2048;
238 block1[63]= (block1[0]&1)^1; 239 block1[63]= (block1[0]&1)^1;
239 break; 240 break;
240 } 241 }
241 242
242 #if 0 // simulate mismatch control 243 #if 0 // simulate mismatch control
332 for(i=0;i<64;i++) 333 for(i=0;i<64;i++)
333 block1[i] = 0; 334 block1[i] = 0;
334 switch(test){ 335 switch(test){
335 case 0: 336 case 0:
336 for(i=0;i<64;i++) 337 for(i=0;i<64;i++)
337 block1[i] = (random() % 512) -256; 338 block1[i] = av_lfg_get(&prn) % 512 -256;
338 if (is_idct){ 339 if (is_idct){
339 fdct(block1); 340 fdct(block1);
340 341
341 for(i=0;i<64;i++) 342 for(i=0;i<64;i++)
342 block1[i]>>=3; 343 block1[i]>>=3;
343 } 344 }
344 break; 345 break;
345 case 1:{ 346 case 1:{
346 case 2: 347 case 2:
347 block1[0] = (random() % 512) -256; 348 block1[0] = av_lfg_get(&prn) % 512 -256;
348 block1[1] = (random() % 512) -256; 349 block1[1] = av_lfg_get(&prn) % 512 -256;
349 block1[2] = (random() % 512) -256; 350 block1[2] = av_lfg_get(&prn) % 512 -256;
350 block1[3] = (random() % 512) -256; 351 block1[3] = av_lfg_get(&prn) % 512 -256;
351 }break; 352 }break;
352 } 353 }
353 354
354 if (form == MMX_PERM) { 355 if (form == MMX_PERM) {
355 for(i=0;i<64;i++) 356 for(i=0;i<64;i++)
469 void idct248_error(const char *name, 470 void idct248_error(const char *name,
470 void (*idct248_put)(uint8_t *dest, int line_size, int16_t *block)) 471 void (*idct248_put)(uint8_t *dest, int line_size, int16_t *block))
471 { 472 {
472 int it, i, it1, ti, ti1, err_max, v; 473 int it, i, it1, ti, ti1, err_max, v;
473 474
474 srandom(0); 475 AVLFG prn;
476
477 av_lfg_init(&prn, 1);
475 478
476 /* just one test to see if code is correct (precision is less 479 /* just one test to see if code is correct (precision is less
477 important here) */ 480 important here) */
478 err_max = 0; 481 err_max = 0;
479 for(it=0;it<NB_ITS;it++) { 482 for(it=0;it<NB_ITS;it++) {
480 483
481 /* XXX: use forward transform to generate values */ 484 /* XXX: use forward transform to generate values */
482 for(i=0;i<64;i++) 485 for(i=0;i<64;i++)
483 block1[i] = (random() % 256) - 128; 486 block1[i] = av_lfg_get(&prn) % 256 - 128;
484 block1[0] += 1024; 487 block1[0] += 1024;
485 488
486 for(i=0; i<64; i++) 489 for(i=0; i<64; i++)
487 block[i]= block1[i]; 490 block[i]= block1[i];
488 idct248_ref(img_dest1, 8, block); 491 idct248_ref(img_dest1, 8, block);