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