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

Commit 53fc3e18 authored by Jason Sams's avatar Jason Sams
Browse files

Cleanup example code.

Change-Id: I060ea53c867ded0e6956776859fc2710c7302148
parent 7fc8f515
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -2,29 +2,26 @@

#include "ip.rsh"

void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
    float4 *output = (float4 *)v_out;
void root(float4 *out, const void *usrData, uint32_t x, uint32_t y) {
    const FilterStruct *fs = (const FilterStruct *)usrData;
    const float4 *input = (const float4 *)rsGetElementAt(fs->ain, 0, y);

    float3 blurredPixel = 0;
    const float *gPtr = fs->gaussian;
    if ((x > fs->radius) && (x < (fs->width - fs->radius))) {
        const float4 *i = input + (x - fs->radius);
        for (int r = -fs->radius; r <= fs->radius; r ++) {
            const float4 *i = (const float4 *)rsGetElementAt(fs->ain, x + r, y);
            blurredPixel += i->xyz * gPtr[0];
            gPtr++;
            i++;
        }
    } else {
        for (int r = -fs->radius; r <= fs->radius; r ++) {
            // Stepping left and right away from the pixel
            int validW = rsClamp((int)x + r, (int)0, (int)(fs->width - 1));
            blurredPixel += input[validW].xyz * gPtr[0];
            int validX = rsClamp((int)x + r, (int)0, (int)(fs->width - 1));
            const float4 *i = (const float4 *)rsGetElementAt(fs->ain, validX, y);
            blurredPixel += i->xyz * gPtr[0];
            gPtr++;
        }
    }

    output->xyz = blurredPixel;
    out->xyz = blurredPixel;
}
+4 −11
Original line number Diff line number Diff line
@@ -55,27 +55,20 @@ void setGamma(float g) {
    gamma = (float3)g;
}

//sliao
extern uchar3 __attribute__((overloadable)) convert2uchar3(float3 xyz);

void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
    uchar4 *output = (uchar4 *)v_out;
void root(uchar4 *out, const void *usrData, uint32_t x, uint32_t y) {
    const FilterStruct *fs = (const FilterStruct *)usrData;
    const float4 *input = (const float4 *)rsGetElementAt(fs->ain, x, 0);

    float3 blurredPixel = 0;
    const float *gPtr = fs->gaussian;
    if ((y > fs->radius) && (y < (fs->height - fs->radius))) {
        const float4 *i = input + ((y - fs->radius) * fs->width);
        for (int r = -fs->radius; r <= fs->radius; r ++) {
            const float4 *i = (const float4 *)rsGetElementAt(fs->ain, x, y + r);
            blurredPixel += i->xyz * gPtr[0];
            gPtr++;
            i += fs->width;
        }
    } else {
        for (int r = -fs->radius; r <= fs->radius; r ++) {
            int validH = rsClamp((int)y + r, (int)0, (int)(fs->height - 1));
            const float4 *i = input + validH * fs->width;
            const float4 *i = (const float4 *)rsGetElementAt(fs->ain, x, validH);
            blurredPixel += i->xyz * gPtr[0];
            gPtr++;
        }
@@ -87,7 +80,7 @@ void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32
        temp = pow(temp, (float3)gamma);
    temp = clamp(temp * outWMinOutB + outBlack, 0.f, 255.f);

    output->xyz = convert_uchar3(temp);
    out->xyz = convert_uchar3(temp);
    //output->w = input->w;
}