summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-06-27 19:16:19 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-06-27 19:16:19 -0700
commitf77535628448dc8722a6686438de9fc026b8d9cd (patch)
treec9c0ace31249e03ade385fdbad5f8b215d8399de
parent14c18f2a53e783c488a3ec6e832b8f0baaf5585d (diff)
parent6ad2c3462f35b8668372a9522df204c9d52409c8 (diff)
downloadandroid_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-xsrc/com/android/camera/CaptureModule.java71
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java4
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";