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[];