summaryrefslogtreecommitdiff
path: root/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rscript')
-rw-r--r--tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rscript71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rscript b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rscript
new file mode 100644
index 00000000..6513bc1b
--- /dev/null
+++ b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rscript
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma version(1)
+#pragma rs java_package_name(com.android.example.rscamera)
+#pragma rs_fp_relaxed
+
+rs_allocation gCurrentFrame;
+
+uchar4 __attribute__((kernel)) peak(uint32_t x, uint32_t y) {
+
+ uchar4 curPixel;
+ curPixel.r = rsGetElementAtYuv_uchar_Y(gCurrentFrame, x, y);
+ curPixel.g = rsGetElementAtYuv_uchar_U(gCurrentFrame, x, y);
+ curPixel.b = rsGetElementAtYuv_uchar_V(gCurrentFrame, x, y);
+
+ int dx = x + ((x == 0) ? 1 : -1);
+ int sum = 0;
+ int tmp;
+
+ tmp = rsGetElementAtYuv_uchar_Y(gCurrentFrame, dx, y) - curPixel.r;
+ sum += tmp * tmp;
+ tmp = rsGetElementAtYuv_uchar_U(gCurrentFrame, dx, y) - curPixel.g;
+ sum += tmp * tmp;
+ tmp = rsGetElementAtYuv_uchar_V(gCurrentFrame, dx, y) - curPixel.b;
+ sum += tmp * tmp;
+
+
+ int dy = y + ((y == 0) ? 1 : -1);
+ tmp = rsGetElementAtYuv_uchar_Y(gCurrentFrame, x, dy) - curPixel.r;
+ sum += tmp * tmp;
+ tmp = rsGetElementAtYuv_uchar_U(gCurrentFrame, x, dy) - curPixel.g;
+ sum += tmp * tmp;
+ tmp = rsGetElementAtYuv_uchar_V(gCurrentFrame, x, dy) - curPixel.b;
+ sum += tmp * tmp;
+
+ sum >>= 9;
+ sum *= sum * sum;
+
+ curPixel.a = 255;
+
+ uchar4 mergedPixel = curPixel;
+
+ int4 rgb;
+ rgb.r = mergedPixel.r +
+ mergedPixel.b * 1436 / 1024 - 179 + sum;
+ rgb.g = mergedPixel.r -
+ mergedPixel.g * 46549 / 131072 + 44 -
+ mergedPixel.b * 93604 / 131072 + 91 + sum;
+ rgb.b = mergedPixel.r +
+ mergedPixel.g * 1814 / 1024 - 227;
+ rgb.a = 255;
+
+ // Write out merged HDR result
+ uchar4 out = convert_uchar4(clamp(rgb, 0, 255));
+
+ return out;
+} \ No newline at end of file