diff --git a/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp b/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp index 1ee216fd9a..84f0a895b6 100644 --- a/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp +++ b/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp @@ -492,7 +492,6 @@ CaptureSequencer::CaptureState CaptureSequencer::manageStandardCapture( ATRACE_CALL(); SharedParameters::Lock l(client->getParameters()); Vector outputStreams; - uint8_t captureIntent = static_cast(ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE); /** * Set up output streams in the request @@ -522,7 +521,6 @@ CaptureSequencer::CaptureState CaptureSequencer::manageStandardCapture( if (l.mParameters.state == Parameters::VIDEO_SNAPSHOT) { outputStreams.push(client->getRecordingStreamId()); - captureIntent = static_cast(ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT); } res = mCaptureRequest.update(ANDROID_REQUEST_OUTPUT_STREAMS, @@ -531,10 +529,6 @@ CaptureSequencer::CaptureState CaptureSequencer::manageStandardCapture( res = mCaptureRequest.update(ANDROID_REQUEST_ID, &mCaptureId, 1); } - if (res == OK) { - res = mCaptureRequest.update(ANDROID_CONTROL_CAPTURE_INTENT, - &captureIntent, 1); - } if (res == OK) { res = mCaptureRequest.sort(); } @@ -683,6 +677,8 @@ status_t CaptureSequencer::updateCaptureRequest(const Parameters ¶ms, sp &client) { ATRACE_CALL(); status_t res; + uint8_t captureIntent = static_cast(ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE); + if (mCaptureRequest.entryCount() == 0) { res = client->getCameraDevice()->createDefaultRequest( CAMERA2_TEMPLATE_STILL_CAPTURE, @@ -695,6 +691,16 @@ status_t CaptureSequencer::updateCaptureRequest(const Parameters ¶ms, } } + if (params.state == Parameters::VIDEO_SNAPSHOT) { + captureIntent = static_cast(ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT); + } + res = mCaptureRequest.update(ANDROID_CONTROL_CAPTURE_INTENT, &captureIntent, 1); + if (res != OK) { + ALOGE("%s: Camera %d: Unable to update capture intent: %s (%d)", + __FUNCTION__, client->getCameraId(), strerror(-res), res); + return res; + } + res = params.updateRequest(&mCaptureRequest); if (res != OK) { ALOGE("%s: Camera %d: Unable to update common entries of capture "