QCamera3: Fix Easel HDR+ mode
Only enable Easel HDR+ mode for the first request that has
preview intent and does not disable HDR+.
This allows GCA to disable EASEL HDR+ when Easel HDR+ is enabled
be default.
Test: CTS
Bug: 65693945
Change-Id: I3f6ef41167fdbc219c20bf5baaf3bd3faa442fca
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 7a6249e..044b60d 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -6084,14 +6084,16 @@
}
}
- // Enable HDR+ mode for the first PREVIEW_INTENT request.
+ // Enable HDR+ mode for the first PREVIEW_INTENT request that doesn't disable HDR+.
{
std::unique_lock<std::mutex> l(gHdrPlusClientLock);
if (gEaselManagerClient != nullptr && gEaselManagerClient->isEaselPresentOnDevice() &&
!gEaselBypassOnly && !mFirstPreviewIntentSeen &&
meta.exists(ANDROID_CONTROL_CAPTURE_INTENT) &&
meta.find(ANDROID_CONTROL_CAPTURE_INTENT).data.u8[0] ==
- ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW) {
+ ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW &&
+ meta.exists(NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS) &&
+ meta.find(NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS).data.i32[0] == 0) {
if (isSessionHdrPlusModeCompatible()) {
rc = enableHdrPlusModeLocked();
@@ -11612,8 +11614,10 @@
settings.update(NEXUS_EXPERIMENTAL_2017_POSTVIEW, &postview, 1);
int32_t continuousZslCapture = 0;
settings.update(NEXUS_EXPERIMENTAL_2017_CONTINUOUS_ZSL_CAPTURE, &continuousZslCapture, 1);
- // Disable HDR+ for templates other than CAMERA3_TEMPLATE_STILL_CAPTURE.
- int32_t disableHdrplus = (type == CAMERA3_TEMPLATE_STILL_CAPTURE) ? 0 : 1;
+ // Disable HDR+ for templates other than CAMERA3_TEMPLATE_STILL_CAPTURE and
+ // CAMERA3_TEMPLATE_PREVIEW.
+ int32_t disableHdrplus = (type == CAMERA3_TEMPLATE_STILL_CAPTURE ||
+ type == CAMERA3_TEMPLATE_PREVIEW) ? 0 : 1;
settings.update(NEXUS_EXPERIMENTAL_2017_DISABLE_HDRPLUS, &disableHdrplus, 1);
// Set hybrid_ae tag in PREVIEW and STILL_CAPTURE templates to 1 so that