QCamera2: Adds support for early preview restart
- This change will internally restart preview
during the jpeg encoding stage in non-zsl.
This feature can be enabled via this property:
"persist.camera.feature.restart -> 0/1"
Change-Id: I3044b99cc0cac6c088d4435583aa2c703ba4ed8c
CRs-fixed: 547748
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index ed68400..f90e24e 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -1687,7 +1687,17 @@
break;
case QCAMERA_SM_EVT_STOP_CAPTURE_CHANNEL:
{
- rc = m_parent->stopCaptureChannel();
+ bool restartPreview = m_parent->isPreviewRestartEnabled();
+ rc = m_parent->stopCaptureChannel(restartPreview);
+
+ if (restartPreview && (NO_ERROR == rc)) {
+ rc = m_parent->preparePreview();
+ if (NO_ERROR == rc) {
+ m_parent->m_bPreviewStarted = true;
+ rc = m_parent->startPreview();
+ }
+ }
+
result.status = rc;
result.request_api = evt;
result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
@@ -1697,7 +1707,14 @@
case QCAMERA_SM_EVT_SNAPSHOT_DONE:
{
rc = m_parent->cancelPicture();
- m_state = QCAMERA_SM_STATE_PREVIEW_STOPPED;
+
+ bool restartPreview = m_parent->isPreviewRestartEnabled();
+ if (restartPreview) {
+ m_state = QCAMERA_SM_STATE_PREVIEWING;
+ } else {
+ m_state = QCAMERA_SM_STATE_PREVIEW_STOPPED;
+ }
+
result.status = rc;
result.request_api = evt;
result.result_type = QCAMERA_API_RESULT_TYPE_DEF;