summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/device3
diff options
context:
space:
mode:
authorYin-Chia Yeh <yinchiayeh@google.com>2014-09-05 14:14:44 -0700
committerYin-Chia Yeh <yinchiayeh@google.com>2014-09-08 09:24:39 -0700
commit3ea3fcd0822b2f43d87f1d8f67d7bf145864b201 (patch)
treeea68ff08df4bdcea47bd42b6a33f36140c9e8a5b /services/camera/libcameraservice/device3
parente7494680914c384dc6e93ae85f4337b06b300468 (diff)
downloadframeworks_av-3ea3fcd0822b2f43d87f1d8f67d7bf145864b201.zip
frameworks_av-3ea3fcd0822b2f43d87f1d8f67d7bf145864b201.tar.gz
frameworks_av-3ea3fcd0822b2f43d87f1d8f67d7bf145864b201.tar.bz2
Camera2: reconfigure video snapshot size if needed
When recording fails to start due to stream configuration failed, try configure stream again by setting jpeg stream to video size. Bug: 16162133 Change-Id: Ib20271e787ae07719ce419f0b15c7f86434f7ebb
Diffstat (limited to 'services/camera/libcameraservice/device3')
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.cpp8
-rw-r--r--services/camera/libcameraservice/device3/Camera3Stream.cpp3
2 files changed, 9 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 6f78db5..fafe349 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -601,10 +601,18 @@ sp<Camera3Device::CaptureRequest> Camera3Device::setUpRequestLocked(
if (mStatus == STATUS_UNCONFIGURED || mNeedConfig) {
res = configureStreamsLocked();
+ // Stream configuration failed due to unsupported configuration.
+ // Device back to unconfigured state. Client might try other configuraitons
+ if (res == BAD_VALUE && mStatus == STATUS_UNCONFIGURED) {
+ CLOGE("No streams configured");
+ return NULL;
+ }
+ // Stream configuration failed for other reason. Fatal.
if (res != OK) {
SET_ERR_L("Can't set up streams: %s (%d)", strerror(-res), res);
return NULL;
}
+ // Stream configuration successfully configure to empty stream configuration.
if (mStatus == STATUS_UNCONFIGURED) {
CLOGE("No streams configured");
return NULL;
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.cpp b/services/camera/libcameraservice/device3/Camera3Stream.cpp
index 29ce38c..3c0e908 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Stream.cpp
@@ -233,8 +233,7 @@ status_t Camera3Stream::cancelConfiguration() {
camera3_stream::usage = oldUsage;
camera3_stream::max_buffers = oldMaxBuffers;
- mState = STATE_CONSTRUCTED;
-
+ mState = (mState == STATE_IN_RECONFIG) ? STATE_CONFIGURED : STATE_CONSTRUCTED;
return OK;
}