QCamera3HWI: Fix CTS tests in HDR+ mode

Check if HDR+ mode is supported with configured streams before
enabling HDR+ mode.

Reset mPictureChannel to NULL before configuring new streams to
avoid becoming a dangling pointer.

Test: Camera CTS
Bug: 63045786
Change-Id: I481a09fce4f9722218d71c1e580ba432c33dce92
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index e75e057..48056fc 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -1820,6 +1820,8 @@
 
     pthread_mutex_lock(&mMutex);
 
+    mPictureChannel = NULL;
+
     // Check state
     switch (mState) {
         case INITIALIZED:
@@ -5999,11 +6001,14 @@
                 meta.exists(ANDROID_CONTROL_CAPTURE_INTENT) &&
                 meta.find(ANDROID_CONTROL_CAPTURE_INTENT).data.u8[0] ==
                 ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW) {
-            rc = enableHdrPlusModeLocked();
-            if (rc != OK) {
-                LOGE("%s: Failed to open HDR+ asynchronously", __FUNCTION__);
-                pthread_mutex_unlock(&mMutex);
-                return rc;
+
+            if (isSessionHdrPlusModeCompatible()) {
+                rc = enableHdrPlusModeLocked();
+                if (rc != OK) {
+                    LOGE("%s: Failed to open HDR+ asynchronously", __FUNCTION__);
+                    pthread_mutex_unlock(&mMutex);
+                    return rc;
+                }
             }
 
             mFirstPreviewIntentSeen = true;
@@ -14592,6 +14597,17 @@
     ALOGD("%s: HDR+ mode disabled", __FUNCTION__);
 }
 
+bool QCamera3HardwareInterface::isSessionHdrPlusModeCompatible()
+{
+    // Check if mPictureChannel is valid.
+    // TODO: Support YUV (b/36693254) and RAW (b/36690506)
+    if (mPictureChannel == nullptr) {
+        return false;
+    }
+
+    return true;
+}
+
 status_t QCamera3HardwareInterface::configureHdrPlusStreamsLocked()
 {
     pbcamera::InputConfiguration inputConfig;