Add Nexus experimental AE flash mode
Test: New experimental camera tests pass
Bug: 32161255
Change-Id: If91cfedaf1f32b6ff5c9bdac4f11f59bf7391ed3
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 53d9006..4cc25b4 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -8018,6 +8018,9 @@
} else if (aeMode == CAM_AE_MODE_OFF) {
fwk_aeMode = ANDROID_CONTROL_AE_MODE_OFF;
camMetadata.update(ANDROID_CONTROL_AE_MODE, &fwk_aeMode, 1);
+ } else if (aeMode == CAM_AE_MODE_ON_EXTERNAL_FLASH) {
+ fwk_aeMode = NEXUS_EXPERIMENTAL_2016_CONTROL_AE_MODE_EXTERNAL_FLASH;
+ camMetadata.update(ANDROID_CONTROL_AE_MODE, &fwk_aeMode, 1);
} else {
LOGE("Not enough info to deduce ANDROID_CONTROL_AE_MODE redeye:%d, "
"flashMode:%d, aeMode:%u!!!",
@@ -9557,7 +9560,11 @@
count = CAM_AE_MODE_MAX;
count = MIN(gCamCapability[cameraId]->supported_ae_modes_cnt, count);
for (size_t i = 0; i < count; i++) {
- avail_ae_modes.add(gCamCapability[cameraId]->supported_ae_modes[i]);
+ uint8_t aeMode = gCamCapability[cameraId]->supported_ae_modes[i];
+ if (aeMode == CAM_AE_MODE_ON_EXTERNAL_FLASH) {
+ aeMode = NEXUS_EXPERIMENTAL_2016_CONTROL_AE_MODE_EXTERNAL_FLASH;
+ }
+ avail_ae_modes.add(aeMode);
}
if (flashAvailable) {
avail_ae_modes.add(ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH);
@@ -11622,6 +11629,8 @@
if (fwk_aeMode == ANDROID_CONTROL_AE_MODE_OFF ) {
aeMode = CAM_AE_MODE_OFF;
+ } else if (fwk_aeMode == NEXUS_EXPERIMENTAL_2016_CONTROL_AE_MODE_EXTERNAL_FLASH) {
+ aeMode = CAM_AE_MODE_ON_EXTERNAL_FLASH;
} else {
aeMode = CAM_AE_MODE_ON;
}
@@ -11911,7 +11920,9 @@
if (frame_settings.exists(ANDROID_CONTROL_AE_MODE)) {
uint8_t fwk_aeMode =
frame_settings.find(ANDROID_CONTROL_AE_MODE).data.u8[0];
- if (fwk_aeMode > ANDROID_CONTROL_AE_MODE_ON) {
+ if (fwk_aeMode == ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH ||
+ fwk_aeMode == ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH ||
+ fwk_aeMode == ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE) {
respectFlashMode = 0;
LOGH("AE Mode controls flash, ignore android.flash.mode");
}