summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/api1
diff options
context:
space:
mode:
authorZhijun He <zhijunhe@google.com>2014-01-21 12:15:56 -0800
committerZhijun He <zhijunhe@google.com>2014-01-24 08:02:38 -0800
commitc1b7cc4d3eeb55fd03ff77b099b827e7568480e4 (patch)
tree3938b70a7222394e71542993a0ba6ff86d95dfa9 /services/camera/libcameraservice/api1
parent491e341211b4772c75f719158f6b397e1c40497d (diff)
downloadframeworks_av-c1b7cc4d3eeb55fd03ff77b099b827e7568480e4.zip
frameworks_av-c1b7cc4d3eeb55fd03ff77b099b827e7568480e4.tar.gz
frameworks_av-c1b7cc4d3eeb55fd03ff77b099b827e7568480e4.tar.bz2
Camera: delete preview callback when preview size is changed
Preview callback stream is left configured even the preview size is changed. This makes the callback stream unnecessarily configured even in recording mode, which could cause distorted preview for some devices. Bug: 12210027 Bug: 12591410 Change-Id: If50cddfe5562e91aec1feb1760eccb82ddb21730
Diffstat (limited to 'services/camera/libcameraservice/api1')
-rw-r--r--services/camera/libcameraservice/api1/Camera2Client.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp
index c370536..0244aec 100644
--- a/services/camera/libcameraservice/api1/Camera2Client.cpp
+++ b/services/camera/libcameraservice/api1/Camera2Client.cpp
@@ -731,6 +731,7 @@ status_t Camera2Client::startPreviewL(Parameters &params, 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 &params, 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 &params, 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);