ispc-downsampler 0.4.0

Image downsampler crate using ISPC
Documentation
#include "weights.ispc"
export void calculate_weight_dimensions(uniform float filter_scale, uniform uint32 src, uniform uint32 target, uniform WeightDimensions out_dimensions[]) {
    uniform float ratio = src / target;

    uniform float filter_radius = ceil(ratio * filter_scale);

    foreach(pixel = 0 ... target) {
        WeightDimensions vars;

        vars.src_center = (pixel + 0.5) * ratio - 0.5;

        float start = ceil(vars.src_center - filter_radius);
        vars.src_start = min(max(start, 0), src - 1);

        float end = floor(vars.src_center + filter_radius);
        end = min(max(end, 0), src - 1);
        vars.src_end = max(end, (float)vars.src_start);

        out_dimensions[pixel] = vars;
    }
}