diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-06-27 19:16:19 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-06-27 19:16:19 -0700 |
commit | f77535628448dc8722a6686438de9fc026b8d9cd (patch) | |
tree | c9c0ace31249e03ade385fdbad5f8b215d8399de | |
parent | 14c18f2a53e783c488a3ec6e832b8f0baaf5585d (diff) | |
parent | 6ad2c3462f35b8668372a9522df204c9d52409c8 (diff) | |
download | android_packages_apps_Snap-f77535628448dc8722a6686438de9fc026b8d9cd.tar.gz android_packages_apps_Snap-f77535628448dc8722a6686438de9fc026b8d9cd.tar.bz2 android_packages_apps_Snap-f77535628448dc8722a6686438de9fc026b8d9cd.zip |
Merge "SnapdragonCamera: Complete the function of AWB Gains and CCT"
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 71 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 4 |
2 files changed, 74 insertions, 1 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index fb4e8994f..901ac94da 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -291,6 +291,21 @@ public class CaptureModule implements CameraModule, PhotoController, public static final CameraCharacteristics.Key<int[]> highSpeedVideoConfigs = new CameraCharacteristics.Key<>("android.control.availableHighSpeedVideoConfigurations", int[].class); + // AWB WarmStart gain and AWB WarmStart CCT + public static final CaptureResult.Key<Float> awbFrame_control_rgain = + new CaptureResult.Key<>("org.quic.camera2.statsconfigs.AWBFrameControlRGain", Float.class); + public static final CaptureResult.Key<Float> awbFrame_control_ggain = + new CaptureResult.Key<>("org.quic.camera2.statsconfigs.AWBFrameControlGGain", Float.class); + public static final CaptureResult.Key<Float> awbFrame_control_bgain = + new CaptureResult.Key<>("org.quic.camera2.statsconfigs.AWBFrameControlBGain", Float.class); + public static final CaptureResult.Key<Integer> awbFrame_control_cct = + new CaptureResult.Key<>("org.quic.camera2.statsconfigs.AWBFrameControlCCT", Integer.class); + + public static final CaptureRequest.Key<Float[]> awbWarmStart_gain = + new CaptureRequest.Key<>("org.quic.camera2.statsconfigs.AWBWarmstartGain", Float[].class); + private static final CaptureRequest.Key<Float> awbWarmStart_cct = + new CaptureRequest.Key<>("org.quic.camera2.statsconfigs.AWBWarmstartCCT", Float.class); + public static final CaptureRequest.Key<Integer> sharpness_control = new CaptureRequest.Key<>( "org.codeaurora.qcamera3.sharpness.strength", Integer.class); public static final CaptureRequest.Key<Integer> exposure_metering = new CaptureRequest.Key<>( @@ -657,6 +672,9 @@ public class CaptureModule implements CameraModule, PhotoController, int id = (int) result.getRequest().getTag(); if (id == getMainCameraId()) { updateFocusStateChange(result); + if (mPaused) { + saveAWBCCTAndgains(result); + } Face[] faces = result.get(CaptureResult.STATISTICS_FACES); if (faces != null && isBsgcDetecionOn()) { updateFaceView(faces, getBsgcInfo(result, faces.length)); @@ -2586,6 +2604,7 @@ public class CaptureModule implements CameraModule, PhotoController, applyExposureMeteringModes(builder); applyHistogram(builder); applyEarlyPCR(builder); + applyAWBCCTAndAgain(builder); } /** @@ -2702,8 +2721,9 @@ public class CaptureModule implements CameraModule, PhotoController, closeCamera(); resetAudioMute(); mUI.showPreviewCover(); - if (mUI.getGLCameraPreview() != null) + if (mUI.getGLCameraPreview() != null) { mUI.getGLCameraPreview().onPause(); + } mUI.hideSurfaceView(); mFirstPreviewLoaded = false; stopBackgroundThread(); @@ -5179,6 +5199,55 @@ public class CaptureModule implements CameraModule, PhotoController, return result; } + private boolean applyAWBCCTAndAgain(CaptureRequest.Builder request) { + boolean result = false; + final SharedPreferences pref = mActivity.getSharedPreferences( + ComboPreferences.getLocalSharedPreferencesName(mActivity, getMainCameraId()), + Context.MODE_PRIVATE); + float awbDefault = -1f; + float rGain = pref.getFloat(SettingsManager.KEY_AWB_RAGIN_VALUE, awbDefault); + float gGain = pref.getFloat(SettingsManager.KEY_AWB_GAGIN_VALUE, awbDefault); + float bGain = pref.getFloat(SettingsManager.KEY_AWB_BAGIN_VALUE, awbDefault); + float cct = pref.getFloat(SettingsManager.KEY_AWB_CCT_VALUE, awbDefault); + if (rGain != awbDefault && gGain != awbDefault && gGain != bGain) { + Float[] awbGains = {rGain, gGain, bGain}; + try { + request.set(CaptureModule.awbWarmStart_gain, awbGains); + if (cct != awbDefault) { + request.set(CaptureModule.awbWarmStart_cct, cct); + } + result = true; + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + } + return result; + } + + private boolean saveAWBCCTAndgains(CaptureResult awbResult) { + boolean result = false; + final SharedPreferences pref = mActivity.getSharedPreferences( + ComboPreferences.getLocalSharedPreferencesName(mActivity, getMainCameraId()), + Context.MODE_PRIVATE); + if (awbResult != null) { + try { + float rGain = awbResult.get(CaptureModule.awbFrame_control_rgain); + float gGain = awbResult.get(CaptureModule.awbFrame_control_ggain); + float bGain = awbResult.get(CaptureModule.awbFrame_control_bgain); + int cct = awbResult.get(CaptureModule.awbFrame_control_cct); + SharedPreferences.Editor editor = pref.edit(); + editor.putFloat(SettingsManager.KEY_AWB_RAGIN_VALUE, rGain); + editor.putFloat(SettingsManager.KEY_AWB_GAGIN_VALUE, gGain); + editor.putFloat(SettingsManager.KEY_AWB_BAGIN_VALUE, bGain); + editor.putFloat(SettingsManager.KEY_AWB_CCT_VALUE, (float)cct); + editor.apply(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + } + return result; + } + private void applyColorEffect(CaptureRequest.Builder request) { String value = mSettingsManager.getValue(SettingsManager.KEY_COLOR_EFFECT); if (value == null) return; diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index d2d995157..cd5097c78 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -166,6 +166,10 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_FOVC_VALUE = "pref_camera2_fovc_key"; public static final String KEY_DEEPPORTRAIT_VALUE = "pref_camera2_deepportrait_key"; public static final String KEY_EARLY_PCR_VALUE = "pref_camera2_earlypcr_key"; + public static final String KEY_AWB_RAGIN_VALUE = "pref_camera2_awb_cct_rgain_key"; + public static final String KEY_AWB_GAGIN_VALUE = "pref_camera2_awb_cct_ggain_key"; + public static final String KEY_AWB_BAGIN_VALUE = "pref_camera2_awb_cct_bgain_key"; + public static final String KEY_AWB_CCT_VALUE = "pref_camera2_awb_cct_key"; public static final HashMap<String, Integer> KEY_ISO_INDEX = new HashMap<String, Integer>(); public static final String KEY_BSGC_DETECTION = "pref_camera2_bsgc_key"; |