QCamera2: Enables longshot mode
- Longshot mode is also triggered by every
'takePicture()' call instead of the continuous
processing that was done before.
TODO:
- Instead of calling the shutter callback after
re-process we need to call it after CAC is done.
There is still no support for this V4L2 event.
CRs-Fixed: 514199
Change-Id: I6a8e33965883350028e7e8672a9dfa2c0a251726
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index cc72381..07931c1 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -2555,6 +2555,10 @@
rc = m_parent->sendCommand(cmd_payload->cmd,
cmd_payload->arg1,
cmd_payload->arg2);
+ if ( CAMERA_CMD_LONGSHOT_OFF == cmd_payload->cmd ) {
+ // move state to previewing state
+ m_state = QCAMERA_SM_STATE_PREVIEWING;
+ }
result.status = rc;
result.request_api = evt;
result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
@@ -2636,11 +2640,25 @@
m_parent->signalAPIResult(&result);
}
break;
+ case QCAMERA_SM_EVT_TAKE_PICTURE:
+ {
+ if ( m_parent->isLongshotEnabled() ) {
+ rc = m_parent->longShot();
+ } else {
+ ALOGE("%s: cannot handle evt(%d) in state(%d)", __func__, evt, m_state);
+ rc = INVALID_OPERATION;
+ }
+
+ result.status = rc;
+ result.request_api = evt;
+ result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+ m_parent->signalAPIResult(&result);
+ }
+ break;
+ case QCAMERA_SM_EVT_PREPARE_SNAPSHOT:
case QCAMERA_SM_EVT_STOP_RECORDING:
case QCAMERA_SM_EVT_START_PREVIEW:
case QCAMERA_SM_EVT_START_NODISPLAY_PREVIEW:
- case QCAMERA_SM_EVT_PREPARE_SNAPSHOT:
- case QCAMERA_SM_EVT_TAKE_PICTURE:
case QCAMERA_SM_EVT_SET_PREVIEW_WINDOW:
case QCAMERA_SM_EVT_RELEASE:
{
@@ -2756,4 +2774,26 @@
}
}
+/*===========================================================================
+ * FUNCTION : isCaptureRunning
+ *
+ * DESCRIPTION: check if image capture is in process.
+ *
+ * PARAMETERS : None
+ *
+ * RETURN : true -- capture running
+ * false -- capture stopped
+ *==========================================================================*/
+bool QCameraStateMachine::isCaptureRunning()
+{
+ switch (m_state) {
+ case QCAMERA_SM_STATE_PIC_TAKING:
+ case QCAMERA_SM_STATE_VIDEO_PIC_TAKING:
+ case QCAMERA_SM_STATE_PREVIEW_PIC_TAKING:
+ return true;
+ default:
+ return false;
+ }
+}
+
}; // namespace qcamera