in Transform_V1/vf_transform_v1.c [785:822]
static void filter_slice_boundcheck(
const int tile_i,
const int tile_j,
const int linesize,
const int subs,
const TransformPlaneMap *p,
const uint8_t* in_data, uint8_t* out_data
)
{
for (int i = 0; i < 16; ++i) {
if (tile_i + i >= p->h) {
break;
}
int out_line = linesize * (tile_i + i);
int map_line = p->w * (tile_i + i);
for (int j = 0; j < 16; ++j) {
if (tile_j + j >= p->w) {
break;
}
int out_sample = out_line + tile_j + j;
int id = map_line + tile_j + j;
TransformPixelWeights *ws = &p->weights[id];
if (ws->n == 1) {
out_data[out_sample] = in_data[UNPACK_ID(ws->pairs[0])];
} else {
int color_sum = 0;
for (int k = 0; k < ws->n; ++k) {
color_sum += ((int) in_data[UNPACK_ID(ws->pairs[k])]) *
UNPACK_COUNT(ws->pairs[k]);
}
// Round to nearest
out_data[out_sample] = (uint8_t) ((color_sum + (subs >> 1)) / subs);
}
}
}
}