diff options
author | Zhijun He <zhijunhe@google.com> | 2014-01-27 19:37:39 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-01-27 19:37:39 +0000 |
commit | 4bbf8ea1f17e85123abd2b037d357e2a89664511 (patch) | |
tree | 4ccca335443dee54fbb0151b155d1f4c257a2f32 /services/camera/libcameraservice/api1 | |
parent | ad1763b4ae3c60eb11182d2fd4c5a79f15275a52 (diff) | |
parent | c1b7cc4d3eeb55fd03ff77b099b827e7568480e4 (diff) | |
download | frameworks_av-4bbf8ea1f17e85123abd2b037d357e2a89664511.zip frameworks_av-4bbf8ea1f17e85123abd2b037d357e2a89664511.tar.gz frameworks_av-4bbf8ea1f17e85123abd2b037d357e2a89664511.tar.bz2 |
Merge "Camera: delete preview callback when preview size is changed"
Diffstat (limited to 'services/camera/libcameraservice/api1')
-rw-r--r-- | services/camera/libcameraservice/api1/Camera2Client.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp index 02be634..2bb3ff8 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.cpp +++ b/services/camera/libcameraservice/api1/Camera2Client.cpp @@ -731,6 +731,7 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { return OK; } params.state = Parameters::STOPPED; + int lastPreviewStreamId = mStreamingProcessor->getPreviewStreamId(); res = mStreamingProcessor->updatePreviewStream(params); if (res != OK) { @@ -739,6 +740,8 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { return res; } + bool previewStreamChanged = mStreamingProcessor->getPreviewStreamId() != lastPreviewStreamId; + // We could wait to create the JPEG output stream until first actual use // (first takePicture call). However, this would substantially increase the // first capture latency on HAL3 devices, and potentially on some HAL2 @@ -788,6 +791,19 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { return res; } outputStreams.push(getCallbackStreamId()); + } else if (previewStreamChanged && mCallbackProcessor->getStreamId() != NO_STREAM) { + /** + * Delete the unused callback stream when preview stream is changed and + * preview is not enabled. Don't need stop preview stream as preview is in + * STOPPED state now. + */ + ALOGV("%s: Camera %d: Delete unused preview callback stream.", __FUNCTION__, mCameraId); + res = mCallbackProcessor->deleteStream(); + if (res != OK) { + ALOGE("%s: Camera %d: Unable to delete callback stream %s (%d)", + __FUNCTION__, mCameraId, strerror(-res), res); + return res; + } } if (params.zslMode && !params.recordingHint) { res = updateProcessorStream(mZslProcessor, params); |