Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b507e711 authored by Jason Sams's avatar Jason Sams Committed by Android (Google) Code Review
Browse files

Merge "Cleanup image processing example script."

parents 87c2b15d 1d317d14
Loading
Loading
Loading
Loading
+10 −22
Original line number Diff line number Diff line
@@ -5,38 +5,26 @@ struct color_s {
    char a;
};

void filter(struct color_s *in, struct color_s *out, struct vecF32_3_s *luminanceVector) {
    struct vecF32_3_s pixel;
    pixel.x = (in->r & 0xFF) / 255.0f;
    pixel.y = (in->g & 0xFF) / 255.0f;
    pixel.z = (in->b & 0xFF) / 255.0f;

    float luminance = vec3Dot(luminanceVector, &pixel);
    luminance = maxf(0.0f, luminance - Params->threshold);
    vec3Scale(&pixel, signf(luminance));

    out->a = in->a;
    out->r = pixel.x * 255.0f;
    out->g = pixel.y * 255.0f;
    out->b = pixel.z * 255.0f;
}

void main() {
    int t = uptimeMillis();

    struct color_s *in = (struct color_s *) InPixel;
    struct color_s *out = (struct color_s *) OutPixel;

    struct vecF32_3_s luminanceVector;
    luminanceVector.x = 0.2125f;
    luminanceVector.y = 0.7154f;
    luminanceVector.z = 0.0721f;

    int count = Params->inWidth * Params->inHeight;
    int i;
    float threshold = (Params->threshold * 255.f);

    for (i = 0; i < count; i++) {
        filter(in, out, &luminanceVector);
        float luminance = 0.2125f * in->r +
                          0.7154f * in->g +
                          0.0721f * in->b;
        luminance = maxf(0.0f, luminance - threshold);
        vec3Scale(&pixel, luminance > 0);
        out->a = in->a;
        out->r = pixel.x;
        out->g = pixel.y;
        out->b = pixel.z;

        in++;
        out++;