Merge "Cleanup example code."
This commit is contained in:
@@ -2,29 +2,26 @@
|
|||||||
|
|
||||||
#include "ip.rsh"
|
#include "ip.rsh"
|
||||||
|
|
||||||
void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
|
void root(float4 *out, const void *usrData, uint32_t x, uint32_t y) {
|
||||||
float4 *output = (float4 *)v_out;
|
|
||||||
const FilterStruct *fs = (const FilterStruct *)usrData;
|
const FilterStruct *fs = (const FilterStruct *)usrData;
|
||||||
const float4 *input = (const float4 *)rsGetElementAt(fs->ain, 0, y);
|
|
||||||
|
|
||||||
float3 blurredPixel = 0;
|
float3 blurredPixel = 0;
|
||||||
const float *gPtr = fs->gaussian;
|
const float *gPtr = fs->gaussian;
|
||||||
if ((x > fs->radius) && (x < (fs->width - fs->radius))) {
|
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 ++) {
|
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];
|
blurredPixel += i->xyz * gPtr[0];
|
||||||
gPtr++;
|
gPtr++;
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int r = -fs->radius; r <= fs->radius; r ++) {
|
for (int r = -fs->radius; r <= fs->radius; r ++) {
|
||||||
// Stepping left and right away from the pixel
|
// Stepping left and right away from the pixel
|
||||||
int validW = rsClamp((int)x + r, (int)0, (int)(fs->width - 1));
|
int validX = rsClamp((int)x + r, (int)0, (int)(fs->width - 1));
|
||||||
blurredPixel += input[validW].xyz * gPtr[0];
|
const float4 *i = (const float4 *)rsGetElementAt(fs->ain, validX, y);
|
||||||
|
blurredPixel += i->xyz * gPtr[0];
|
||||||
gPtr++;
|
gPtr++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output->xyz = blurredPixel;
|
out->xyz = blurredPixel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,27 +55,20 @@ void setGamma(float g) {
|
|||||||
gamma = (float3)g;
|
gamma = (float3)g;
|
||||||
}
|
}
|
||||||
|
|
||||||
//sliao
|
void root(uchar4 *out, const void *usrData, uint32_t x, uint32_t y) {
|
||||||
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;
|
|
||||||
const FilterStruct *fs = (const FilterStruct *)usrData;
|
const FilterStruct *fs = (const FilterStruct *)usrData;
|
||||||
const float4 *input = (const float4 *)rsGetElementAt(fs->ain, x, 0);
|
|
||||||
|
|
||||||
float3 blurredPixel = 0;
|
float3 blurredPixel = 0;
|
||||||
const float *gPtr = fs->gaussian;
|
const float *gPtr = fs->gaussian;
|
||||||
if ((y > fs->radius) && (y < (fs->height - fs->radius))) {
|
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 ++) {
|
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];
|
blurredPixel += i->xyz * gPtr[0];
|
||||||
gPtr++;
|
gPtr++;
|
||||||
i += fs->width;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int r = -fs->radius; r <= fs->radius; r ++) {
|
for (int r = -fs->radius; r <= fs->radius; r ++) {
|
||||||
int validH = rsClamp((int)y + r, (int)0, (int)(fs->height - 1));
|
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];
|
blurredPixel += i->xyz * gPtr[0];
|
||||||
gPtr++;
|
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 = pow(temp, (float3)gamma);
|
||||||
temp = clamp(temp * outWMinOutB + outBlack, 0.f, 255.f);
|
temp = clamp(temp * outWMinOutB + outBlack, 0.f, 255.f);
|
||||||
|
|
||||||
output->xyz = convert_uchar3(temp);
|
out->xyz = convert_uchar3(temp);
|
||||||
//output->w = input->w;
|
//output->w = input->w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user