summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/util
diff options
context:
space:
mode:
authorWeijie Wang <weijiew@codeaurora.org>2017-07-13 19:54:35 +0800
committerWeijie Wang <weijiew@codeaurora.org>2017-08-29 15:59:20 +0800
commitcc7d48d76185ed95ff9b00dcc23373186257b03b (patch)
tree6c6c37222ad392d1d59c3677b967337217f4538a /src/com/android/camera/util
parent21a4a7c612e47af9f06550976b74aa984f5a6b69 (diff)
downloadandroid_packages_apps_Snap-cc7d48d76185ed95ff9b00dcc23373186257b03b.tar.gz
android_packages_apps_Snap-cc7d48d76185ed95ff9b00dcc23373186257b03b.tar.bz2
android_packages_apps_Snap-cc7d48d76185ed95ff9b00dcc23373186257b03b.zip
SnapdragonCamera: Add vendor tag util
Check if the tag is available before apply the settings Change-Id: Ic0242b8aa7711ad230f3aba9e30d5da61d188fe5
Diffstat (limited to 'src/com/android/camera/util')
-rw-r--r--src/com/android/camera/util/VendorTagUtil.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/com/android/camera/util/VendorTagUtil.java b/src/com/android/camera/util/VendorTagUtil.java
new file mode 100644
index 000000000..9c2f6cc1c
--- /dev/null
+++ b/src/com/android/camera/util/VendorTagUtil.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2017, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package com.android.camera.util;
+
+import android.hardware.camera2.CaptureRequest;
+import android.util.Log;
+
+public class VendorTagUtil {
+ private static final String TAG = "VendorTagUtil";
+
+ private static CaptureRequest.Key<Integer> CdsModeKey =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.CDS.cds_mode",
+ Integer.class);
+ private static CaptureRequest.Key<Byte> JpegCropEnableKey =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.jpeg_encode_crop.enable",
+ Byte.class);
+ private static CaptureRequest.Key<int[]> JpegCropRectKey =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.jpeg_encode_crop.rect",
+ int[].class);
+ private static CaptureRequest.Key<int[]> JpegRoiRectKey =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.jpeg_encode_crop.roi",
+ int[].class);
+ private static CaptureRequest.Key<Integer> SELECT_PRIORITY =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.iso_exp_priority.select_priority",
+ Integer.class);
+ private static CaptureRequest.Key<Long> ISO_EXP =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.iso_exp_priority.use_iso_exp_priority",
+ Long.class);
+
+
+ private static boolean isSupported(CaptureRequest.Builder builder,
+ CaptureRequest.Key<?> key) {
+ boolean supported = true;
+ try {
+ builder.get(key);
+ }catch(IllegalArgumentException exception){
+ supported = false;
+ Log.d(TAG, "vendor tag " + key.getName() + " is not supported");
+ }
+ if ( supported ) {
+ Log.d(TAG, "vendor tag " + key.getName() + " is supported");
+ }
+ return supported;
+ }
+
+ // value=0:OFF
+ // value=1:ON
+ // value=2:AUTO
+ public static void setCdsMode(CaptureRequest.Builder builder, Integer value) {
+ if ( isCdsModeSupported(builder) ) {
+ builder.set(CdsModeKey, value);
+ }
+ }
+
+ private static boolean isCdsModeSupported(CaptureRequest.Builder builder) {
+ return isSupported(builder, CdsModeKey);
+ }
+
+ public static void setJpegCropEnable(CaptureRequest.Builder builder, Byte value) {
+ if ( isJpegCropEnableSupported(builder) ) {
+ builder.set(JpegCropEnableKey, value);
+ }
+ }
+
+ private static boolean isJpegCropEnableSupported(CaptureRequest.Builder builder) {
+ return isSupported(builder, JpegCropEnableKey);
+ }
+
+ public static void setJpegCropRect(CaptureRequest.Builder builder, int[] value) {
+ if ( isJpegCropRectSupported(builder) ) {
+ builder.set(JpegCropRectKey, value);
+ }
+ }
+
+ private static boolean isJpegCropRectSupported(CaptureRequest.Builder builder) {
+ return isSupported(builder, JpegCropRectKey);
+ }
+
+ public static void setJpegRoiRect(CaptureRequest.Builder builder, int[] value) {
+ if ( isJpegRoiRectSupported(builder) ) {
+ builder.set(JpegRoiRectKey, value);
+ }
+ }
+
+ private static boolean isJpegRoiRectSupported(CaptureRequest.Builder builder) {
+ return isSupported(builder, JpegRoiRectKey);
+ }
+
+ public static void setIsoExpPrioritySelectPriority(CaptureRequest.Builder builder,
+ Integer value) {
+ if ( isIsoExpPrioritySelectPrioritySupported(builder) ) {
+ builder.set(SELECT_PRIORITY, value);
+ }
+ }
+ private static boolean isIsoExpPrioritySelectPrioritySupported(CaptureRequest.Builder builder) {
+ return isSupported(builder, SELECT_PRIORITY);
+ }
+
+ public static void setIsoExpPriority(CaptureRequest.Builder builder,Long value) {
+ if ( isIsoExpPrioritySupported(builder) ) {
+ builder.set(ISO_EXP, value);
+ }
+ }
+ private static boolean isIsoExpPrioritySupported(CaptureRequest.Builder builder) {
+ return isSupported(builder, ISO_EXP);
+ }
+
+}