QCamera2: CTS CreateSessions Fix

Issue:
HAL sends Stream configure IOCTL
before stream Off of active streams and hence
ISP resource mapping fails

Fix:
Moved Stream Configure IOCTL to First process capture request

BUG=27408805
Ack-by: Rajaram Gudivada

Change-Id: I094eddae12adabfd3198a3683d5e81c360f3878b
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 6d5a3d5..fe08065 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -1370,21 +1370,7 @@
         stream_config_info.num_streams++;
     }
 
-    // settings/parameters don't carry over for new configureStreams
-    int32_t hal_version = CAM_HAL_V3;
-    memset(mParameters, 0, sizeof(metadata_buffer_t));
-
-    AddSetParmEntryToBatch(mParameters, CAM_INTF_PARM_HAL_VERSION,
-            sizeof(hal_version), &hal_version);
-
-    AddSetParmEntryToBatch(mParameters, CAM_INTF_META_STREAM_INFO,
-            sizeof(cam_stream_size_info_t), &stream_config_info);
-
-    int32_t tintless_value = 1;
-    AddSetParmEntryToBatch(mParameters,CAM_INTF_PARM_TINTLESS,
-                sizeof(tintless_value), &tintless_value);
-
-    mCameraHandle->ops->set_parms(mCameraHandle->camera_handle, mParameters);
+    mStreamConfigInfo = stream_config_info;
 
     /* Initialize mPendingRequestInfo and mPendnigBuffersMap */
     mPendingRequestsList.clear();
@@ -2171,6 +2157,29 @@
     // stream on all streams
     if (mFirstRequest) {
 
+        // settings/parameters don't carry over for new configureStreams
+        int32_t hal_version = CAM_HAL_V3;
+        memset(mParameters, 0, sizeof(metadata_buffer_t));
+
+        AddSetParmEntryToBatch(mParameters, CAM_INTF_PARM_HAL_VERSION,
+                sizeof(hal_version), &hal_version);
+
+        AddSetParmEntryToBatch(mParameters, CAM_INTF_META_STREAM_INFO,
+                sizeof(cam_stream_size_info_t), &mStreamConfigInfo);
+
+        for (uint32_t i = 0; i < mStreamConfigInfo.num_streams; i++) {
+		     CDBG_HIGH("%s STREAM INFO : type %d, wxh: %d x %d, pp_mask: 0x%x",
+                     __func__, mStreamConfigInfo.type[i],
+                     mStreamConfigInfo.stream_sizes[i].width,
+                     mStreamConfigInfo.stream_sizes[i].height,
+                     mStreamConfigInfo.postprocess_mask[i]);
+        }
+
+        int32_t tintless_value = 1;
+        AddSetParmEntryToBatch(mParameters,CAM_INTF_PARM_TINTLESS,
+                sizeof(tintless_value), &tintless_value);
+
+        mCameraHandle->ops->set_parms(mCameraHandle->camera_handle, mParameters);
          /* get eis information for stream configuration */
         cam_is_type_t is_type;
         char is_type_value[PROPERTY_VALUE_MAX];
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.h b/camera/QCamera2/HAL3/QCamera3HWI.h
index a07301f..d59be92 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.h
+++ b/camera/QCamera2/HAL3/QCamera3HWI.h
@@ -340,6 +340,7 @@
     const camera_module_callbacks_t *mCallbacks;
 
     uint8_t mCaptureIntent;
+    cam_stream_size_info_t mStreamConfigInfo;
 
     static const QCameraMap EFFECT_MODES_MAP[];
     static const QCameraMap WHITE_BALANCE_MODES_MAP[];