Home | History | Annotate | Download | only in vpx_dsp

Lines Matching refs:dst

17 #define DST(x, y) dst[(x) + (y)*stride]
21 static INLINE void d207_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
26 for (r = 0; r < bs - 1; ++r) dst[r * stride] = AVG2(left[r], left[r + 1]);
27 dst[(bs - 1) * stride] = left[bs - 1];
28 dst++;
32 dst[r * stride] = AVG3(left[r], left[r + 1], left[r + 2]);
33 dst[(bs - 2) * stride] = AVG3(left[bs - 2], left[bs - 1], left[bs - 1]);
34 dst[(bs - 1) * stride] = left[bs - 1];
35 dst++;
38 for (c = 0; c < bs - 2; ++c) dst[(bs - 1) * stride + c] = left[bs - 1];
42 dst[r * stride + c] = dst[(r + 1) * stride + c - 2];
45 static INLINE void d63_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
51 dst[c] = AVG2(above[c], above[c + 1]);
52 dst[stride + c] = AVG3(above[c], above[c + 1], above[c + 2]);
55 memcpy(dst + (r + 0) * stride, dst + (r >> 1), size);
56 memset(dst + (r + 0) * stride + size, above[bs - 1], bs - size);
57 memcpy(dst + (r + 1) * stride, dst + stride + (r >> 1), size);
58 memset(dst + (r + 1) * stride + size, above[bs - 1], bs - size);
62 static INLINE void d45_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
65 const uint8_t *const dst_row0 = dst;
70 dst[x] = AVG3(above[x], above[x + 1], above[x + 2]);
72 dst[bs - 1] = above_right;
73 dst += stride;
75 memcpy(dst, dst_row0 + x, size);
76 memset(dst + size, above_right, x + 1);
77 dst += stride;
81 static INLINE void d117_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
86 for (c = 0; c < bs; c++) dst[c] = AVG2(above[c - 1], above[c]);
87 dst += stride;
90 dst[0] = AVG3(left[0], above[-1], above[0]);
91 for (c = 1; c < bs; c++) dst[c] = AVG3(above[c - 2], above[c - 1], above[c]);
92 dst += stride;
95 dst[0] = AVG3(above[-1], left[0], left[1]);
97 dst[(r - 2) * stride] = AVG3(left[r - 3], left[r - 2], left[r - 1]);
101 for (c = 1; c < bs; c++) dst[c] = dst[-2 * stride + c - 1];
102 dst += stride;
106 static INLINE void d135_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
117 // dst(bs, bs - 2)[0], i.e., border starting at bottom-left
124 // dst[0][2, size), i.e., remaining top border ascending
130 memcpy(dst + i * stride, border + bs - 1 - i, bs);
134 static INLINE void d153_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
137 dst[0] = AVG2(above[-1], left[0]);
138 for (r = 1; r < bs; r++) dst[r * stride] = AVG2(left[r - 1], left[r]);
139 dst++;
141 dst[0] = AVG3(left[0], above[-1], above[0]);
142 dst[stride] = AVG3(above[-1], left[0], left[1]);
144 dst[r * stride] = AVG3(left[r - 2], left[r - 1], left[r]);
145 dst++;
148 dst[c] = AVG3(above[c - 1], above[c], above[c + 1]);
149 dst += stride;
152 for (c = 0; c < bs - 2; c++) dst[c] = dst[-stride + c - 2];
153 dst += stride;
157 static INLINE void v_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
163 memcpy(dst, above, bs);
164 dst += stride;
168 static INLINE void h_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
174 memset(dst, left[r], bs);
175 dst += stride;
179 static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
186 dst[c] = clip_pixel(left[r] + above[c] - ytop_left);
187 dst += stride;
191 static INLINE void dc_128_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
198 memset(dst, 128, bs);
199 dst += stride;
203 static INLINE void dc_left_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
213 memset(dst, expected_dc, bs);
214 dst += stride;
218 static INLINE void dc_top_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
227 memset(dst, expected_dc, bs);
228 dst += stride;
232 static INLINE void dc_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
245 memset(dst, expected_dc, bs);
246 dst += stride;
250 void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
258 memset(dst + stride * 0, AVG3(H, I, J), 4);
259 memset(dst + stride * 1, AVG3(I, J, K), 4);
260 memset(dst + stride * 2, AVG3(J, K, L), 4);
261 memset(dst + stride * 3, AVG3(K, L, L), 4);
264 void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
274 dst[0] = AVG3(H, I, J);
275 dst[1] = AVG3(I, J, K);
276 dst[2] = AVG3(J, K, L);
277 dst[3] = AVG3(K, L, M);
278 memcpy(dst + stride * 1, dst, 4);
279 memcpy(dst + stride * 2, dst, 4);
280 memcpy(dst + stride * 3, dst, 4);
283 void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
290 DST(0, 0) = AVG2(I, J);
291 DST(2, 0) = DST(0, 1) = AVG2(J, K);
292 DST(2, 1) = DST(0, 2) = AVG2(K, L);
293 DST(1, 0) = AVG3(I, J, K);
294 DST(3, 0) = DST(1, 1) = AVG3(J, K, L);
295 DST(3, 1) = DST(1, 2) = AVG3(K, L, L);
296 DST(3, 2) = DST(2, 2) = DST(0, 3) = DST(1, 3) = DST(2, 3) = DST(3, 3) = L;
299 void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
309 DST(0, 0) = AVG2(A, B);
310 DST(1, 0) = DST(0, 2) = AVG2(B, C);
311 DST(2, 0) = DST(1, 2) = AVG2(C, D);
312 DST(3, 0) = DST(2, 2) = AVG2(D, E);
313 DST(3, 2) = AVG2(E, F); // differs from vp8
315 DST(0, 1) = AVG3(A, B, C);
316 DST(1, 1) = DST(0, 3) = AVG3(B, C, D);
317 DST(2, 1) = DST(1, 3) = AVG3(C, D, E);
318 DST(3, 1) = DST(2, 3) = AVG3(D, E, F);
319 DST(3, 3) = AVG3(E, F, G); // differs from vp8
322 void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
333 DST(0, 0) = AVG2(A, B);
334 DST(1, 0) = DST(0, 2) = AVG2(B, C);
335 DST(2, 0) = DST(1, 2) = AVG2(C, D);
336 DST(3, 0) = DST(2, 2) = AVG2(D, E);
337 DST(3, 2) = AVG3(E, F, G);
339 DST(0, 1) = AVG3(A, B, C);
340 DST(1, 1) = DST(0, 3) = AVG3(B, C, D);
341 DST(2, 1) = DST(1, 3) = AVG3(C, D, E);
342 DST(3, 1) = DST(2, 3) = AVG3(D, E, F);
343 DST(3, 3) = AVG3(F, G, H);
346 void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
358 DST(0, 0) = AVG3(A, B, C);
359 DST(1, 0) = DST(0, 1) = AVG3(B, C, D);
360 DST(2, 0) = DST(1, 1) = DST(0, 2) = AVG3(C, D, E);
361 DST(3, 0) = DST(2, 1) = DST(1, 2) = DST(0, 3) = AVG3(D, E, F);
362 DST(3, 1) = DST(2, 2) = DST(1, 3) = AVG3(E, F, G);
363 DST(3, 2) = DST(2, 3) = AVG3(F, G, H);
364 DST(3, 3) = H; // differs from vp8
367 void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
379 DST(0, 0) = AVG3(A, B, C);
380 DST(1, 0) = DST(0, 1) = AVG3(B, C, D);
381 DST(2, 0) = DST(1, 1) = DST(0, 2) = AVG3(C, D, E);
382 DST(3, 0) = DST(2, 1) = DST(1, 2) = DST(0, 3) = AVG3(D, E, F);
383 DST(3, 1) = DST(2, 2) = DST(1, 3) = AVG3(E, F, G);
384 DST(3, 2) = DST(2, 3) = AVG3(F, G, H);
385 DST(3, 3) = AVG3(G, H, H);
388 void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
398 DST(0, 0) = DST(1, 2) = AVG2(X, A);
399 DST(1, 0) = DST(2, 2) = AVG2(A, B);
400 DST(2, 0) = DST(3, 2) = AVG2(B, C);
401 DST(3, 0) = AVG2(C, D);
403 DST(0, 3) = AVG3(K, J, I);
404 DST(0, 2) = AVG3(J, I, X);
405 DST(0, 1) = DST(1, 3) = AVG3(I, X, A);
406 DST(1, 1) = DST(2, 3) = AVG3(X, A, B);
407 DST(2, 1) = DST(3, 3) = AVG3(A, B, C);
408 DST(3, 1) = AVG3(B, C, D);
411 void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
423 DST(0, 3) = AVG3(J, K, L);
424 DST(1, 3) = DST(0, 2) = AVG3(I, J, K);
425 DST(2, 3) = DST(1, 2) = DST(0, 1) = AVG3(X, I, J);
426 DST(3, 3) = DST(2, 2) = DST(1, 1) = DST(0, 0) = AVG3(A, X, I);
427 DST(3, 2) = DST(2, 1) = DST(1, 0) = AVG3(B, A, X);
428 DST(3, 1) = DST(2, 0) = AVG3(C, B, A);
429 DST(3, 0) = AVG3(D, C, B);
432 void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t stride,
443 DST(0, 0) = DST(2, 1) = AVG2(I, X);
444 DST(0, 1) = DST(2, 2) = AVG2(J, I);
445 DST(0, 2) = DST(2, 3) = AVG2(K, J);
446 DST(0, 3) = AVG2(L, K);
448 DST(3, 0) = AVG3(A, B, C);
449 DST(2, 0) = AVG3(X, A, B);
450 DST(1, 0) = DST(3, 1) = AVG3(I, X, A);
451 DST(1, 1) = DST(3, 2) = AVG3(J, I, X);
452 DST(1, 2) = DST(3, 3) = AVG3(K, J, I);
453 DST(1, 3) = AVG3(L, K, J);
457 static INLINE void highbd_d207_predictor(uint16_t *dst, ptrdiff_t stride,
466 dst[r * stride] = AVG2(left[r], left[r + 1]);
468 dst[(bs - 1) * stride] = left[bs - 1];
469 dst++;
473 dst[r * stride] = AVG3(left[r], left[r + 1], left[r + 2]);
475 dst[(bs - 2) * stride] = AVG3(left[bs - 2], left[bs - 1], left[bs - 1]);
476 dst[(bs - 1) * stride] = left[bs - 1];
477 dst++;
480 for (c = 0; c < bs - 2; ++c) dst[(bs - 1) * stride + c] = left[bs - 1];
484 dst[r * stride + c] = dst[(r + 1) * stride + c - 2];
488 static INLINE void highbd_d63_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
496 dst[c] = AVG2(above[c], above[c + 1]);
497 dst[stride + c] = AVG3(above[c], above[c + 1], above[c + 2]);
500 memcpy(dst + (r + 0) * stride, dst + (r >> 1), size * sizeof(*dst));
501 vpx_memset16(dst + (r + 0) * stride + size, above[bs - 1], bs - size);
502 memcpy(dst + (r + 1) * stride, dst + stride + (r >> 1),
503 size * sizeof(*dst));
504 vpx_memset16(dst + (r + 1) * stride + size, above[bs - 1], bs - size);
508 static INLINE void highbd_d45_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
512 const uint16_t *const dst_row0 = dst;
518 dst[x] = AVG3(above[x], above[x + 1], above[x + 2]);
520 dst[bs - 1] = above_right;
521 dst += stride;
523 memcpy(dst, dst_row0 + x, size * sizeof(*dst));
524 vpx_memset16(dst + size, above_right, x + 1);
525 dst += stride;
529 dst, ptrdiff_t stride,
536 for (c = 0; c < bs; c++) dst[c] = AVG2(above[c - 1], above[c]);
537 dst += stride;
540 dst[0] = AVG3(left[0], above[-1], above[0]);
541 for (c = 1; c < bs; c++) dst[c] = AVG3(above[c - 2], above[c - 1], above[c]);
542 dst += stride;
545 dst[0] = AVG3(above[-1], left[0], left[1]);
547 dst[(r - 2) * stride] = AVG3(left[r - 3], left[r - 2], left[r - 1]);
551 for (c = 1; c < bs; c++) dst[c] = dst[-2 * stride + c - 1];
552 dst += stride;
556 static INLINE void highbd_d135_predictor(uint16_t *dst, ptrdiff_t stride,
569 // dst(bs, bs - 2)[0], i.e., border starting at bottom-left
576 // dst[0][2, size), i.e., remaining top border ascending
582 memcpy(dst + i * stride, border + bs - 1 - i, bs * sizeof(dst[0]));
586 static INLINE void highbd_d153_predictor(uint16_t *dst, ptrdiff_t stride,
591 dst[0] = AVG2(above[-1], left[0]);
592 for (r = 1; r < bs; r++) dst[r * stride] = AVG2(left[r - 1], left[r]);
593 dst++;
595 dst[0] = AVG3(left[0], above[-1], above[0]);
596 dst[stride] = AVG3(above[-1], left[0], left[1]);
598 dst[r * stride] = AVG3(left[r - 2], left[r - 1], left[r]);
599 dst++;
602 dst[c] = AVG3(above[c - 1], above[c], above[c + 1]);
603 dst += stride;
606 for (c = 0; c < bs - 2; c++) dst[c] = dst[-stride + c - 2];
607 dst += stride;
611 static INLINE void highbd_v_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
618 memcpy(dst, above, bs * sizeof(uint16_t));
619 dst += stride;
623 static INLINE void highbd_h_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
630 vpx_memset16(dst, left[r], bs);
631 dst += stride;
635 static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
644 dst[c] = clip_pixel_highbd(left[r] + above[c] - ytop_left, bd);
645 dst += stride;
649 static INLINE void highbd_dc_128_predictor(uint16_t *dst, ptrdiff_t stride,
657 vpx_memset16(dst, 128 << (bd - 8), bs);
658 dst += stride;
662 static INLINE void highbd_dc_left_predictor(uint16_t *dst, ptrdiff_t stride,
673 vpx_memset16(dst, expected_dc, bs);
674 dst += stride;
678 static INLINE void highbd_dc_top_predictor(uint16_t *dst, ptrdiff_t stride,
689 vpx_memset16(dst, expected_dc, bs);
690 dst += stride;
694 static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
709 vpx_memset16(dst, expected_dc, bs);
710 dst += stride;
714 void vpx_highbd_d207_predictor_4x4_c(uint16_t *dst, ptrdiff_t stride,
723 DST(0, 0) = AVG2(I, J);
724 DST(2, 0) = DST(0, 1) = AVG2(J, K);
725 DST(2, 1) = DST(0, 2) = AVG2(K, L);
726 DST(1, 0) = AVG3(I, J, K);
727 DST(3, 0) = DST(1, 1) = AVG3(J, K, L);
728 DST(3, 1) = DST(1, 2) = AVG3(K, L, L);
729 DST(3, 2) = DST(2, 2) = DST(0, 3) = DST(1, 3) = DST(2, 3) = DST(3, 3) = L;
732 void vpx_highbd_d63_predictor_4x4_c(uint16_t *dst, ptrdiff_t stride,
744 DST(0, 0) = AVG2(A, B);
745 DST(1, 0) = DST(0, 2) = AVG2(B, C);
746 DST(2, 0) = DST(1, 2) = AVG2(C, D);
747 DST(3, 0) = DST(2, 2) = AVG2(D, E);
748 DST(3, 2) = AVG2(E, F); // differs from vp8
750 DST(0, 1) = AVG3(A, B, C);
751 DST(1, 1) = DST(0, 3) = AVG3(B, C, D);
752 DST(2, 1) = DST(1, 3) = AVG3(C, D, E);
753 DST(3, 1) = DST(2, 3) = AVG3(D, E, F);
754 DST(3, 3) = AVG3(E, F, G); // differs from vp8
757 void vpx_highbd_d45_predictor_4x4_c(uint16_t *dst, ptrdiff_t stride,
770 DST(0, 0) = AVG3(A, B, C);
771 DST(1, 0) = DST(0, 1) = AVG3(B, C, D);
772 DST(2, 0) = DST(1, 1) = DST(0, 2) = AVG3(C, D, E);
773 DST(3, 0) = DST(2, 1) = DST(1, 2) = DST(0, 3) = AVG3(D, E, F);
774 DST(3, 1) = DST(2, 2) = DST(1, 3) = AVG3(E, F, G);
775 DST(3, 2) = DST(2, 3) = AVG3(F, G, H);
776 DST(3, 3) = H; // differs from vp8
779 void vpx_highbd_d117_predictor_4x4_c(uint16_t *dst, ptrdiff_t stride,
791 DST(0, 0) = DST(1, 2) = AVG2(X, A);
792 DST(1, 0) = DST(2, 2) = AVG2(A, B);
793 DST(2, 0) = DST(3, 2) = AVG2(B, C);
794 DST(3, 0) = AVG2(C, D);
796 DST(0, 3) = AVG3(K, J, I);
797 DST(0, 2) = AVG3(J, I, X);
798 DST(0, 1) = DST(1, 3) = AVG3(I, X, A);
799 DST(1, 1) = DST(2, 3) = AVG3(X, A, B);
800 DST(2, 1) = DST(3, 3) = AVG3(A, B, C);
801 DST(3, 1) = AVG3(B, C, D);
804 void vpx_highbd_d135_predictor_4x4_c(uint16_t *dst, ptrdiff_t stride,
817 DST(0, 3) = AVG3(J, K, L);
818 DST(1, 3) = DST(0, 2) = AVG3(I, J, K);
819 DST(2, 3) = DST(1, 2) = DST(0, 1) = AVG3(X, I, J);
820 DST(3, 3) = DST(2, 2) = DST(1, 1) = DST(0, 0) = AVG3(A, X, I);
821 DST(3, 2) = DST(2, 1) = DST(1, 0) = AVG3(B, A, X);
822 DST(3, 1) = DST(2, 0) = AVG3(C, B, A);
823 DST(3, 0) = AVG3(D, C, B);
826 void vpx_highbd_d153_predictor_4x4_c(uint16_t *dst, ptrdiff_t stride,
839 DST(0, 0) = DST(2, 1) = AVG2(I, X);
840 DST(0, 1) = DST(2, 2) = AVG2(J, I);
841 DST(0, 2) = DST(2, 3) = AVG2(K, J);
842 DST(0, 3) = AVG2(L, K);
844 DST(3, 0) = AVG3(A, B, C);
845 DST(2, 0) = AVG3(X, A, B);
846 DST(1, 0) = DST(3, 1) = AVG3(I, X, A);
847 DST(1, 1) = DST(3, 2) = AVG3(J, I, X);
848 DST(1, 2) = DST(3, 3) = AVG3(K, J, I);
849 DST(1, 3) = AVG3(L, K, J);
858 uint8_t *dst, ptrdiff_t stride, const uint8_t *above, \
860 type##_predictor(dst, stride, size, above, left); \
866 uint16_t *dst, ptrdiff_t stride, const uint16_t *above, \
868 highbd_##type##_predictor(dst, stride, size, above, left, bd); \