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

Function dct_error

libavcodec/tests/dct.c:188–296  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186}
187
188static int dct_error(const struct algo *dct, int test, int is_idct, int speed, const int bits)
189{
190 void (*ref)(int16_t *block) = is_idct ? ff_ref_idct : ff_ref_fdct;
191 int it, i, scale;
192 int err_inf, v;
193 int64_t err2, ti, ti1, it1, err_sum = 0;
194 int64_t sysErr[64], sysErrMax = 0;
195 int64_t err2_matrix[64], err2_max = 0;
196 int maxout = 0;
197 int blockSumErrMax = 0, blockSumErr;
198 AVLFG prng;
199 const int vals=1<<bits;
200 double omse, ome;
201 int spec_err;
202
203 av_lfg_init(&prng, 1);
204
205 err_inf = 0;
206 err2 = 0;
207 for (i = 0; i < 64; i++)
208 err2_matrix[i] = sysErr[i] = 0;
209 for (it = 0; it < NB_ITS; it++) {
210 init_block(block1, test, is_idct, &prng, vals);
211 permute(block, block1, dct->perm_type);
212
213 dct->func(block);
214
215 if (!strcmp(dct->name, "IJG-AAN-INT")) {
216 for (i = 0; i < 64; i++) {
217 scale = 8 * (1 << (AANSCALE_BITS + 11)) / ff_aanscales[i];
218 block[i] = (block[i] * scale) >> AANSCALE_BITS;
219 }
220 }
221
222 ref(block1);
223 if (!strcmp(dct->name, "PR-SSE2"))
224 for (i = 0; i < 64; i++)
225 block1[i] = av_clip(block1[i], 4-512, 1019-512);
226
227 blockSumErr = 0;
228 for (i = 0; i < 64; i++) {
229 int err = block[i] - block1[i];
230 err_sum += err;
231 v = abs(err);
232 if (v > err_inf)
233 err_inf = v;
234 err2_matrix[i] += v * (int64_t)v;
235 err2 += v * (int64_t)v;
236 sysErr[i] += block[i] - block1[i];
237 blockSumErr += v;
238 if (abs(block[i]) > maxout)
239 maxout = abs(block[i]);
240 }
241 if (blockSumErrMax < blockSumErr)
242 blockSumErrMax = blockSumErr;
243 }
244 for (i = 0; i < 64; i++) {
245 sysErrMax = FFMAX(sysErrMax, FFABS(sysErr[i]));

Callers 1

mainFunction · 0.85

Calls 5

av_lfg_initFunction · 0.85
init_blockFunction · 0.85
permuteFunction · 0.85
fabsFunction · 0.85
av_gettime_relativeFunction · 0.85

Tested by

no test coverage detected