29 static const uint32_t
pixel_mask[] = { 0xffffffff, 0x01ff01ff, 0x03ff03ff, 0x07ff07ff, 0x0fff0fff };
30 static const uint32_t
pixel_mask16[] = { 0x00ff00ff, 0x01ff01ff, 0x03ff03ff, 0x07ff07ff, 0x0fff0fff };
31 static const int sizes[] = { -1, 4, 6, 8, 12, 16, 24, 32, 48, 64 };
32 static const int weights[] = { 0, 128, 255, -1 };
33 static const int denoms[] = {0, 7, 12, -1 };
34 static const int offsets[] = {0, 255, -1 };
36 #define SIZEOF_PIXEL ((bit_depth + 7) / 8)
37 #define BUF_SIZE (2 * MAX_PB_SIZE * (2 * 4 + MAX_PB_SIZE))
39 #define randomize_buffers() \
41 uint32_t mask = pixel_mask[bit_depth - 8]; \
43 for (k = 0; k < BUF_SIZE + SRC_EXTRA; k += 4) { \
44 uint32_t r = rnd() & mask; \
45 AV_WN32A(buf0 + k, r); \
46 AV_WN32A(buf1 + k, r); \
50 #define randomize_buffers_dst() \
53 for (k = 0; k < BUF_SIZE; k += 4) { \
55 AV_WN32A(dst0 + k, r); \
56 AV_WN32A(dst1 + k, r); \
60 #define randomize_buffers_ref() \
61 randomize_buffers(); \
63 uint32_t mask = pixel_mask16[bit_depth - 8]; \
65 for (k = 0; k < BUF_SIZE; k += 2) { \
66 uint32_t r = rnd() & mask; \
67 AV_WN32A(ref0 + k, r); \
68 AV_WN32A(ref1 + k, r); \
72 #define src0 (buf0 + 2 * 4 * MAX_PB_SIZE)
73 #define src1 (buf1 + 2 * 4 * MAX_PB_SIZE)
93 for (
i = 0;
i < 2;
i++) {
94 for (j = 0; j < 2; j++) {
97 switch ((j << 1) |
i) {
98 case 0:
type =
"pel_pixels";
break;
99 case 1:
type =
"qpel_h";
break;
100 case 2:
type =
"qpel_v";
break;
101 case 3:
type =
"qpel_hv";
break;
106 int16_t *dstw0 = (int16_t *) dst0, *dstw1 = (int16_t *) dst1;
138 for (
i = 0;
i < 2;
i++) {
139 for (j = 0; j < 2; j++) {
142 switch ((j << 1) |
i) {
143 case 0:
type =
"pel_uni_pixels";
break;
144 case 1:
type =
"qpel_uni_h";
break;
145 case 2:
type =
"qpel_uni_v";
break;
146 case 3:
type =
"qpel_uni_hv";
break;
183 const int *denom, *wx, *ox;
185 int height,
int denom,
int wx,
int ox, intptr_t
mx, intptr_t
my,
int width);
190 for (
i = 0;
i < 2;
i++) {
191 for (j = 0; j < 2; j++) {
194 switch ((j << 1) |
i) {
195 case 0:
type =
"pel_uni_w_pixels";
break;
196 case 1:
type =
"qpel_uni_w_h";
break;
197 case 2:
type =
"qpel_uni_w_v";
break;
198 case 3:
type =
"qpel_uni_w_hv";
break;
203 for (denom =
denoms; *denom >= 0; denom++) {
204 for (wx =
weights; *wx >= 0; wx++) {
205 for (ox =
offsets; *ox >= 0; ox++) {
250 for (
i = 0;
i < 2;
i++) {
251 for (j = 0; j < 2; j++) {
254 switch ((j << 1) |
i) {
255 case 0:
type =
"pel_bi_pixels";
break;
256 case 1:
type =
"qpel_bi_h";
break;
257 case 2:
type =
"qpel_bi_v";
break;
258 case 3:
type =
"qpel_bi_hv";
break;
297 const int *denom, *wx, *ox;
300 int height,
int denom,
int wx0,
int wx1,
301 int ox0,
int ox1, intptr_t
mx, intptr_t
my,
int width);
306 for (
i = 0;
i < 2;
i++) {
307 for (j = 0; j < 2; j++) {
310 switch ((j << 1) |
i) {
311 case 0:
type =
"pel_bi_w_pixels";
break;
312 case 1:
type =
"qpel_bi_w_h";
break;
313 case 2:
type =
"qpel_bi_w_v";
break;
314 case 3:
type =
"qpel_bi_w_hv";
break;
319 for (denom =
denoms; *denom >= 0; denom++) {
320 for (wx =
weights; *wx >= 0; wx++) {
321 for (ox =
offsets; *ox >= 0; ox++) {
366 for (
i = 0;
i < 2;
i++) {
367 for (j = 0; j < 2; j++) {
370 switch ((j << 1) |
i) {
371 case 0:
type =
"pel_pixels";
break;
372 case 1:
type =
"epel_h";
break;
373 case 2:
type =
"epel_v";
break;
374 case 3:
type =
"epel_hv";
break;
379 int16_t *dstw0 = (int16_t *) dst0, *dstw1 = (int16_t *) dst1;
411 for (
i = 0;
i < 2;
i++) {
412 for (j = 0; j < 2; j++) {
415 switch ((j << 1) |
i) {
416 case 0:
type =
"pel_uni_pixels";
break;
417 case 1:
type =
"epel_uni_h";
break;
418 case 2:
type =
"epel_uni_v";
break;
419 case 3:
type =
"epel_uni_hv";
break;
456 const int *denom, *wx, *ox;
458 int height,
int denom,
int wx,
int ox, intptr_t
mx, intptr_t
my,
int width);
463 for (
i = 0;
i < 2;
i++) {
464 for (j = 0; j < 2; j++) {
467 switch ((j << 1) |
i) {
468 case 0:
type =
"pel_uni_w_pixels";
break;
469 case 1:
type =
"epel_uni_w_h";
break;
470 case 2:
type =
"epel_uni_w_v";
break;
471 case 3:
type =
"epel_uni_w_hv";
break;
476 for (denom =
denoms; *denom >= 0; denom++) {
477 for (wx =
weights; *wx >= 0; wx++) {
478 for (ox =
offsets; *ox >= 0; ox++) {
523 for (
i = 0;
i < 2;
i++) {
524 for (j = 0; j < 2; j++) {
527 switch ((j << 1) |
i) {
528 case 0:
type =
"pel_bi_pixels";
break;
529 case 1:
type =
"epel_bi_h";
break;
530 case 2:
type =
"epel_bi_v";
break;
531 case 3:
type =
"epel_bi_hv";
break;
570 const int *denom, *wx, *ox;
573 int height,
int denom,
int wx0,
int wx1,
574 int ox0,
int ox1, intptr_t
mx, intptr_t
my,
int width);
579 for (
i = 0;
i < 2;
i++) {
580 for (j = 0; j < 2; j++) {
583 switch ((j << 1) |
i) {
584 case 0:
type =
"pel_bi_w_pixels";
break;
585 case 1:
type =
"epel_bi_w_h";
break;
586 case 2:
type =
"epel_bi_w_v";
break;
587 case 3:
type =
"epel_bi_w_hv";
break;
592 for (denom =
denoms; *denom >= 0; denom++) {
593 for (wx =
weights; *wx >= 0; wx++) {
594 for (ox =
offsets; *ox >= 0; ox++) {