50 12, 12, 12, 12, 12, 12, 12, 12,
51 16, 15, 9, 4, -4, -9, -15, -16,
52 16, 6, -6, -16, -16, -6, 6, 16,
53 15, -4, -16, -9, 9, 16, 4, -15,
54 12, -12, -12, 12, 12, -12, -12, 12,
55 9, -16, 4, 15, -15, -4, 16, -9,
56 6, -16, 16, -6, -6, 16, -16, 6,
57 4, -9, 15, -16, 16, -15, 9, -4
68 12, 16, 16, 15, 12, 9, 6, 4,
69 12, 15, 6, -4, -12, -16, -16, -9,
70 12, 9, -6, -16, -12, 4, 16, 15,
71 12, 4, -16, -9, 12, 15, -6, -16,
72 12, -4, -16, 9, 12, -15, -6, 16,
73 12, -9, -6, 16, -12, -4, 16, -15,
74 12, -15, 6, 4, -12, 16, -16, 9,
75 12, -16, 16, -15, 12, -9, 6, -4
117 for (
int j = 0; j <
a->height; ++j)
118 for (
int i = 0;
i <
a->width; ++
i) {
119 float *p =
a->d + j *
a->width +
i;
122 *p /= (
const unsigned[]) { 289, 292, 289, 292 } [j];
124 *p /= (
const unsigned[]) { 288, 289, 292, 289, 288, 289, 292, 289 } [j];
126 *p /= (
const unsigned[]) { 289, 292, 289, 292 } [
i];
128 *p /= (
const unsigned[]) { 288, 289, 292, 289, 288, 289, 292, 289 } [
i];
310 void (*
func)(uint8_t *, ptrdiff_t, int16_t *) = *(
void **)((intptr_t) &
h +
tests[k].offset);
317 for (
int j = 0; j <
tests[k].height; ++j)
318 for (
int i = 0;
i <
tests[k].width; ++
i) {
320 inv_trans_in1[idx] = inv_trans_in0[idx] = coeffs->
d[j *
tests[k].width +
i];
322 call_ref(inv_trans_out0 + 24 + 8, 24, inv_trans_in0);
323 call_new(inv_trans_out1 + 24 + 8, 24, inv_trans_in1);
324 if (memcmp(inv_trans_out0, inv_trans_out1, 10 * 24))
326 bench_new(inv_trans_out1 + 24 + 8, 24, inv_trans_in1);
356 void (*
func)(uint8_t *, ptrdiff_t, int) = *(
void **)((intptr_t) &
h +
tests[k].offset);
359 for (
int count = 1000; count > 0; --count) {
360 int pq =
rnd() % 31 + 1;
362 call_ref(filter_buf0 + 4 * 48 + 16, 48, pq);
363 call_new(filter_buf1 + 4 * 48 + 16, 48, pq);
364 if (memcmp(filter_buf0, filter_buf1, 24 * 48))
368 for (
int j = 0; j < 24; ++j)
369 for (
int i = 0;
i < 48; ++
i)
370 filter_buf1[j * 48 +
i] = 0x60 + 0x40 * (
i >= 16 && j >= 4);
372 bench_new(filter_buf1 + 4 * 48 + 16, 48, 1);
374 bench_new(filter_buf1 + 4 * 48 + 16, 48, 31);
395#define LOG2_UNESCAPE_BUF_SIZE 17
396#define UNESCAPE_BUF_SIZE (1u<<LOG2_UNESCAPE_BUF_SIZE)
406 if (
check_func(
h.vc1_unescape_buffer,
"vc1dsp.vc1_unescape_buffer")) {
407 int len0, len1, escaped_offset, unescaped_offset, escaped_len;
412 escaped1[x] = escaped0[x] = 3 * (x % 3 == 0);
422 escaped1[x+0] = escaped0[x+0] = 0;
423 escaped1[x+1] = escaped0[x+1] = 0;
424 escaped1[x+2] = escaped0[x+2] = 3;
425 escaped1[x+3] = escaped0[x+3] =
rnd() & 3;
426 gap_msb = 2u << (
rnd() % 8);
427 gap = (
rnd() &~ -gap_msb) | gap_msb;
467 const struct MSPelTest {
471#define MSPEL_TEST(elem) { .name = #elem, offsetof(VC1DSPContext, elem) }
480 for (
unsigned j = 0; j < 2; ++j) {
481 const unsigned blocksize = 16 >> j;
483 for (
unsigned dxy = 0; dxy < 16; ++dxy) {
490 const uint8_t *
src0 = srcbuf0 + src_offset, *
src1 = srcbuf1 + src_offset;
491 uint8_t *dst0 = dstbuf0 + dst_offset, *dst1 = dstbuf1 + dst_offset;
495 dst1 += (blocksize - 1) *
stride;
496 dst0 += (blocksize - 1) *
stride;
508 if (memcmp(dstbuf0, dstbuf1,
sizeof(dstbuf0))) {