1721a5a24e2278f4012109865d62b98190b3185afJason Sams/*
2721a5a24e2278f4012109865d62b98190b3185afJason Sams * Copyright (C) 2014 The Android Open Source Project
3721a5a24e2278f4012109865d62b98190b3185afJason Sams *
4721a5a24e2278f4012109865d62b98190b3185afJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5721a5a24e2278f4012109865d62b98190b3185afJason Sams * you may not use this file except in compliance with the License.
6721a5a24e2278f4012109865d62b98190b3185afJason Sams * You may obtain a copy of the License at
7721a5a24e2278f4012109865d62b98190b3185afJason Sams *
8721a5a24e2278f4012109865d62b98190b3185afJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9721a5a24e2278f4012109865d62b98190b3185afJason Sams *
10721a5a24e2278f4012109865d62b98190b3185afJason Sams * Unless required by applicable law or agreed to in writing, software
11721a5a24e2278f4012109865d62b98190b3185afJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12721a5a24e2278f4012109865d62b98190b3185afJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13721a5a24e2278f4012109865d62b98190b3185afJason Sams * See the License for the specific language governing permissions and
14721a5a24e2278f4012109865d62b98190b3185afJason Sams * limitations under the License.
15721a5a24e2278f4012109865d62b98190b3185afJason Sams */
16721a5a24e2278f4012109865d62b98190b3185afJason Sams
17721a5a24e2278f4012109865d62b98190b3185afJason Sams#include "ip.rsh"
18721a5a24e2278f4012109865d62b98190b3185afJason Sams#pragma rs_fp_relaxed
19721a5a24e2278f4012109865d62b98190b3185afJason Sams
20721a5a24e2278f4012109865d62b98190b3185afJason Samsrs_allocation inputImage;
21721a5a24e2278f4012109865d62b98190b3185afJason Sams
22721a5a24e2278f4012109865d62b98190b3185afJason Samsfloat intensityLow = 0.f;
23721a5a24e2278f4012109865d62b98190b3185afJason Samsfloat intensityHigh;
24721a5a24e2278f4012109865d62b98190b3185afJason Samsuchar4 color;
25721a5a24e2278f4012109865d62b98190b3185afJason Samsconst static float3 mono = {0.299f, 0.587f, 0.114f};
26721a5a24e2278f4012109865d62b98190b3185afJason Sams
27721a5a24e2278f4012109865d62b98190b3185afJason Samsvoid setParams(float intensHigh, float intensLow, uchar r, uchar g, uchar b) {
28721a5a24e2278f4012109865d62b98190b3185afJason Sams    intensityLow = intensLow;
29721a5a24e2278f4012109865d62b98190b3185afJason Sams    intensityHigh = intensHigh;
30721a5a24e2278f4012109865d62b98190b3185afJason Sams    uchar4 hats = {r, g, b, 255};
31721a5a24e2278f4012109865d62b98190b3185afJason Sams    color = hats;
32721a5a24e2278f4012109865d62b98190b3185afJason Sams}
33721a5a24e2278f4012109865d62b98190b3185afJason Sams
34721a5a24e2278f4012109865d62b98190b3185afJason Samsuchar4 RS_KERNEL root(uchar4 v_in, uint32_t x, uint32_t y) {
35721a5a24e2278f4012109865d62b98190b3185afJason Sams    uchar4 refpix = rsGetElementAt_uchar4(inputImage, x, y);
36721a5a24e2278f4012109865d62b98190b3185afJason Sams    float pixelIntensity = dot(rsUnpackColor8888(refpix).rgb, mono);
37721a5a24e2278f4012109865d62b98190b3185afJason Sams    if ((pixelIntensity <= intensityHigh) && (pixelIntensity >= intensityLow)) {
38721a5a24e2278f4012109865d62b98190b3185afJason Sams        return color;
39721a5a24e2278f4012109865d62b98190b3185afJason Sams    } else {
40721a5a24e2278f4012109865d62b98190b3185afJason Sams        return v_in;
41721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
42721a5a24e2278f4012109865d62b98190b3185afJason Sams}
43721a5a24e2278f4012109865d62b98190b3185afJason Sams
44721a5a24e2278f4012109865d62b98190b3185afJason Sams
45