QCamera2: Add support for longshot in non-zsl mode
- Longshot mode is currently supported only during
zsl mode. This change will enable longhsot for
the non-zsl case as well.
Change-Id: I8ce5aae1353949abf59a0022c11246e59bee5ce0
CRs-Fixed: 550676
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index b3d2f91..3f41d1a 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -1108,7 +1108,7 @@
case QCAMERA_SM_EVT_TAKE_PICTURE:
{
if ( m_parent->mParameters.getRecordingHintValue() == false) {
- if (m_parent->isZSLMode()) {
+ if (m_parent->isZSLMode() || m_parent->isLongshotEnabled()) {
m_state = QCAMERA_SM_STATE_PREVIEW_PIC_TAKING;
rc = m_parent->takePicture();
if (rc != NO_ERROR) {
@@ -1569,6 +1569,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;
@@ -1600,8 +1604,22 @@
m_parent->signalAPIResult(&result);
}
break;
- case QCAMERA_SM_EVT_PREPARE_SNAPSHOT:
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_START_RECORDING:
case QCAMERA_SM_EVT_STOP_RECORDING:
case QCAMERA_SM_EVT_RELEASE_RECORIDNG_FRAME:
@@ -2576,7 +2594,7 @@
break;
case QCAMERA_SM_EVT_CANCEL_PICTURE:
{
- if (m_parent->isZSLMode()) {
+ if (m_parent->isZSLMode() || m_parent->isLongshotEnabled()) {
rc = m_parent->cancelPicture();
} else {
rc = m_parent->cancelLiveSnapshot();
@@ -2594,6 +2612,9 @@
// cancel picture first
rc = m_parent->cancelPicture();
m_parent->stopChannel(QCAMERA_CH_TYPE_ZSL);
+ } else if (m_parent->isLongshotEnabled()) {
+ // just cancel picture
+ rc = m_parent->cancelPicture();
} else {
rc = m_parent->cancelLiveSnapshot();
m_parent->stopChannel(QCAMERA_CH_TYPE_PREVIEW);
@@ -2613,6 +2634,10 @@
ALOGE("%s: cannot handle evt(%d) in state(%d) in ZSL mode",
__func__, evt, m_state);
rc = INVALID_OPERATION;
+ } else if (m_parent->isLongshotEnabled()) {
+ ALOGE("%s: cannot handle evt(%d) in state(%d) in Longshot mode",
+ __func__, evt, m_state);
+ rc = INVALID_OPERATION;
} else {
rc = m_parent->startRecording();
if (rc == NO_ERROR) {
@@ -2724,7 +2749,7 @@
break;
case QCAMERA_SM_EVT_SNAPSHOT_DONE:
{
- if (m_parent->isZSLMode()) {
+ if (m_parent->isZSLMode() || m_parent->isLongshotEnabled()) {
rc = m_parent->cancelPicture();
} else {
rc = m_parent->cancelLiveSnapshot();