16a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams/*
26a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * Copyright (C) 2014 The Android Open Source Project
36a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams *
46a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
56a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * you may not use this file except in compliance with the License.
66a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * You may obtain a copy of the License at
76a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams *
86a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
96a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams *
106a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * Unless required by applicable law or agreed to in writing, software
116a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
126a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * See the License for the specific language governing permissions and
146a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams * limitations under the License.
156a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams */
166a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
176a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams#include "ip.rsh"
186a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams#pragma rs_fp_relaxed
196a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
206a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsrs_allocation inputImage;
216a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
226a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsfloat intensityLow = 0.f;
236a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsfloat intensityHigh;
246a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsuchar4 color;
256a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsconst static float3 mono = {0.299f, 0.587f, 0.114f};
266a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
276a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsvoid setParams(float intensHigh, float intensLow, uchar r, uchar g, uchar b) {
286a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    intensityLow = intensLow;
296a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    intensityHigh = intensHigh;
306a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    uchar4 hats = {r, g, b, 255};
316a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    color = hats;
326a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams}
336a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
346a804605b99cab4ffa3cc55c691338fd4a5396eaJason Samsuchar4 RS_KERNEL root(uchar4 v_in, uint32_t x, uint32_t y) {
356a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    uchar4 refpix = rsGetElementAt_uchar4(inputImage, x, y);
366a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    float pixelIntensity = dot(rsUnpackColor8888(refpix).rgb, mono);
376a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    if ((pixelIntensity <= intensityHigh) && (pixelIntensity >= intensityLow)) {
386a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams        return color;
396a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    } else {
406a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams        return v_in;
416a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams    }
426a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams}
436a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
446a804605b99cab4ffa3cc55c691338fd4a5396eaJason Sams
45