static void filter_slice_boundcheck()

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);
            }
        }
    }
}