MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / dct_error

Function dct_error

libavcodec/dct-test.c:195–379  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

193}
194
195static void dct_error(const char *name, int is_idct,
196 void (*fdct_func)(DCTELEM *block),
197 void (*fdct_ref)(DCTELEM *block), int form, int test)
198{
199 int it, i, scale;
200 int err_inf, v;
201 int64_t err2, ti, ti1, it1;
202 int64_t sysErr[64], sysErrMax=0;
203 int maxout=0;
204 int blockSumErrMax=0, blockSumErr;
205 AVLFG prng;
206
207 av_lfg_init(&prng, 1);
208
209 err_inf = 0;
210 err2 = 0;
211 for(i=0; i<64; i++) sysErr[i]=0;
212 for(it=0;it<NB_ITS;it++) {
213 for(i=0;i<64;i++)
214 block1[i] = 0;
215 switch(test){
216 case 0:
217 for(i=0;i<64;i++)
218 block1[i] = (av_lfg_get(&prng) % 512) -256;
219 if (is_idct){
220 ff_ref_fdct(block1);
221
222 for(i=0;i<64;i++)
223 block1[i]>>=3;
224 }
225 break;
226 case 1:{
227 int num = av_lfg_get(&prng) % 10 + 1;
228 for(i=0;i<num;i++)
229 block1[av_lfg_get(&prng) % 64] = av_lfg_get(&prng) % 512 -256;
230 }break;
231 case 2:
232 block1[0] = av_lfg_get(&prng) % 4096 - 2048;
233 block1[63]= (block1[0]&1)^1;
234 break;
235 }
236
237#if 0 // simulate mismatch control
238{ int sum=0;
239 for(i=0;i<64;i++)
240 sum+=block1[i];
241
242 if((sum&1)==0) block1[63]^=1;
243}
244#endif
245
246 for(i=0; i<64; i++)
247 block_org[i]= block1[i];
248
249 if (form == MMX_PERM) {
250 for(i=0;i<64;i++)
251 block[idct_mmx_perm[i]] = block1[i];
252 } else if (form == MMX_SIMPLE_PERM) {

Callers 1

mainFunction · 0.85

Calls 5

av_lfg_initFunction · 0.85
av_lfg_getFunction · 0.85
ff_ref_fdctFunction · 0.85
mmx_emmsFunction · 0.85
gettimeFunction · 0.70

Tested by

no test coverage detected