41 const uint8_t *s1, ptrdiff_t linesize1,
42 const uint8_t *s2, ptrdiff_t linesize2,
45 const uint32_t *dst_top =
dst - dst_linesize_32;
50 for (
int y = 0; y <
h; y++) {
51 for (
int x = 0; x <
w; x += 4) {
52 const int d0 = s1[x ] - s2[x ];
53 const int d1 = s1[x + 1] - s2[x + 1];
54 const int d2 = s1[x + 2] - s2[x + 2];
55 const int d3 = s1[x + 3] - s2[x + 3];
57 dst[x ] = dst_top[x ] - dst_top[x - 1] + d0*d0;
58 dst[x + 1] = dst_top[x + 1] - dst_top[x ] + d1*d1;
59 dst[x + 2] = dst_top[x + 2] - dst_top[x + 1] + d2*d2;
60 dst[x + 3] = dst_top[x + 3] - dst_top[x + 2] + d3*d3;
69 dst += dst_linesize_32;
70 dst_top += dst_linesize_32;
void(* compute_safe_ssd_integral_image)(uint32_t *dst, ptrdiff_t dst_linesize_32, const uint8_t *s1, ptrdiff_t linesize1, const uint8_t *s2, ptrdiff_t linesize2, int w, int h)
void(* compute_weights_line)(const uint32_t *const iia, const uint32_t *const iib, const uint32_t *const iid, const uint32_t *const iie, const uint8_t *const src, float *total_weight, float *sum, const float *const weight_lut, ptrdiff_t max_meaningful_diff, ptrdiff_t startx, ptrdiff_t endx)
static void compute_safe_ssd_integral_image_c(uint32_t *dst, ptrdiff_t dst_linesize_32, const uint8_t *s1, ptrdiff_t linesize1, const uint8_t *s2, ptrdiff_t linesize2, int w, int h)
Compute squared difference of the safe area (the zone where s1 and s2 overlap).
static void compute_weights_line_c(const uint32_t *const iia, const uint32_t *const iib, const uint32_t *const iid, const uint32_t *const iie, const uint8_t *const src, float *total_weight, float *sum, const float *const weight_lut, ptrdiff_t max_meaningful_diff, ptrdiff_t startx, ptrdiff_t endx)