Mercurial > libavcodec.hg
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); |