Loading services/camera/libcameraservice/device3/Camera3Device.cpp +14 −3 Original line number Original line Diff line number Diff line Loading @@ -4675,15 +4675,21 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { } } bool isStillCapture = false; bool isStillCapture = false; bool isZslCapture = false; bool isZslCapture = false; const camera_metadata_t* settings = halRequest->settings; bool shouldUnlockSettings = false; if (settings == nullptr) { shouldUnlockSettings = true; settings = captureRequest->mSettingsList.begin()->metadata.getAndLock(); } if (!mNextRequests[0].captureRequest->mSettingsList.begin()->metadata.isEmpty()) { if (!mNextRequests[0].captureRequest->mSettingsList.begin()->metadata.isEmpty()) { camera_metadata_ro_entry_t e = camera_metadata_ro_entry_t(); camera_metadata_ro_entry_t e = camera_metadata_ro_entry_t(); find_camera_metadata_ro_entry(halRequest->settings, ANDROID_CONTROL_CAPTURE_INTENT, &e); find_camera_metadata_ro_entry(settings, ANDROID_CONTROL_CAPTURE_INTENT, &e); if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE)) { if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE)) { isStillCapture = true; isStillCapture = true; ATRACE_ASYNC_BEGIN("still capture", mNextRequests[i].halRequest.frame_number); ATRACE_ASYNC_BEGIN("still capture", mNextRequests[i].halRequest.frame_number); } } find_camera_metadata_ro_entry(halRequest->settings, ANDROID_CONTROL_ENABLE_ZSL, &e); find_camera_metadata_ro_entry(settings, ANDROID_CONTROL_ENABLE_ZSL, &e); if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_ENABLE_ZSL_TRUE)) { if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_ENABLE_ZSL_TRUE)) { isZslCapture = true; isZslCapture = true; } } Loading @@ -4692,7 +4698,7 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { totalNumBuffers, captureRequest->mResultExtras, totalNumBuffers, captureRequest->mResultExtras, /*hasInput*/halRequest->input_buffer != NULL, /*hasInput*/halRequest->input_buffer != NULL, hasCallback, hasCallback, calculateMaxExpectedDuration(halRequest->settings), calculateMaxExpectedDuration(settings), requestedPhysicalCameras, isStillCapture, isZslCapture, requestedPhysicalCameras, isStillCapture, isZslCapture, captureRequest->mRotateAndCropAuto, mPrevCameraIdsWithZoom, captureRequest->mRotateAndCropAuto, mPrevCameraIdsWithZoom, (mUseHalBufManager) ? uniqueSurfaceIdMap : (mUseHalBufManager) ? uniqueSurfaceIdMap : Loading @@ -4702,6 +4708,11 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { __FUNCTION__, __FUNCTION__, captureRequest->mResultExtras.requestId, captureRequest->mResultExtras.frameNumber, captureRequest->mResultExtras.requestId, captureRequest->mResultExtras.frameNumber, captureRequest->mResultExtras.burstId); captureRequest->mResultExtras.burstId); if (shouldUnlockSettings) { captureRequest->mSettingsList.begin()->metadata.unlock(settings); } if (res != OK) { if (res != OK) { SET_ERR("RequestThread: Unable to register new in-flight request:" SET_ERR("RequestThread: Unable to register new in-flight request:" " %s (%d)", strerror(-res), res); " %s (%d)", strerror(-res), res); Loading Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +14 −3 Original line number Original line Diff line number Diff line Loading @@ -4675,15 +4675,21 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { } } bool isStillCapture = false; bool isStillCapture = false; bool isZslCapture = false; bool isZslCapture = false; const camera_metadata_t* settings = halRequest->settings; bool shouldUnlockSettings = false; if (settings == nullptr) { shouldUnlockSettings = true; settings = captureRequest->mSettingsList.begin()->metadata.getAndLock(); } if (!mNextRequests[0].captureRequest->mSettingsList.begin()->metadata.isEmpty()) { if (!mNextRequests[0].captureRequest->mSettingsList.begin()->metadata.isEmpty()) { camera_metadata_ro_entry_t e = camera_metadata_ro_entry_t(); camera_metadata_ro_entry_t e = camera_metadata_ro_entry_t(); find_camera_metadata_ro_entry(halRequest->settings, ANDROID_CONTROL_CAPTURE_INTENT, &e); find_camera_metadata_ro_entry(settings, ANDROID_CONTROL_CAPTURE_INTENT, &e); if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE)) { if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE)) { isStillCapture = true; isStillCapture = true; ATRACE_ASYNC_BEGIN("still capture", mNextRequests[i].halRequest.frame_number); ATRACE_ASYNC_BEGIN("still capture", mNextRequests[i].halRequest.frame_number); } } find_camera_metadata_ro_entry(halRequest->settings, ANDROID_CONTROL_ENABLE_ZSL, &e); find_camera_metadata_ro_entry(settings, ANDROID_CONTROL_ENABLE_ZSL, &e); if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_ENABLE_ZSL_TRUE)) { if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_ENABLE_ZSL_TRUE)) { isZslCapture = true; isZslCapture = true; } } Loading @@ -4692,7 +4698,7 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { totalNumBuffers, captureRequest->mResultExtras, totalNumBuffers, captureRequest->mResultExtras, /*hasInput*/halRequest->input_buffer != NULL, /*hasInput*/halRequest->input_buffer != NULL, hasCallback, hasCallback, calculateMaxExpectedDuration(halRequest->settings), calculateMaxExpectedDuration(settings), requestedPhysicalCameras, isStillCapture, isZslCapture, requestedPhysicalCameras, isStillCapture, isZslCapture, captureRequest->mRotateAndCropAuto, mPrevCameraIdsWithZoom, captureRequest->mRotateAndCropAuto, mPrevCameraIdsWithZoom, (mUseHalBufManager) ? uniqueSurfaceIdMap : (mUseHalBufManager) ? uniqueSurfaceIdMap : Loading @@ -4702,6 +4708,11 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { __FUNCTION__, __FUNCTION__, captureRequest->mResultExtras.requestId, captureRequest->mResultExtras.frameNumber, captureRequest->mResultExtras.requestId, captureRequest->mResultExtras.frameNumber, captureRequest->mResultExtras.burstId); captureRequest->mResultExtras.burstId); if (shouldUnlockSettings) { captureRequest->mSettingsList.begin()->metadata.unlock(settings); } if (res != OK) { if (res != OK) { SET_ERR("RequestThread: Unable to register new in-flight request:" SET_ERR("RequestThread: Unable to register new in-flight request:" " %s (%d)", strerror(-res), res); " %s (%d)", strerror(-res), res); Loading