summaryrefslogtreecommitdiff
path: root/camera/device/3.4/default/CameraDeviceSession.cpp
diff options
context:
space:
mode:
authorShuzhen Wang <shuzhenwang@google.com>2019-05-20 11:04:29 -0700
committerShuzhen Wang <shuzhenwang@google.com>2019-06-06 07:50:50 -0700
commit22f6dcec7e81c1a747b516377d2e7fc8cb06c508 (patch)
tree28a0503aa0fe326eba6e2d3636bca502c4ec11e9 /camera/device/3.4/default/CameraDeviceSession.cpp
parent84570603384a413e80077117cfad077b33b845ac (diff)
Camera: Use original dataspace/format for 3.5 device
Starting from CameraDeviceSession 3.5, for IMPLEMENTATION_DEFINED pixel format, configureStreams call uses original format and dataspace instead of the overridden value. This makes sure the HAL interface behavior is consistent between first and subsequent processCaptureRequest() calls. Test: Camera CTS and partner testing Bug: 131864007 Change-Id: Id701141d2c11089ef063fd3f32444212855f84ab
Diffstat (limited to 'camera/device/3.4/default/CameraDeviceSession.cpp')
-rw-r--r--camera/device/3.4/default/CameraDeviceSession.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/camera/device/3.4/default/CameraDeviceSession.cpp b/camera/device/3.4/default/CameraDeviceSession.cpp
index 03b6050397..b4ebe22701 100644
--- a/camera/device/3.4/default/CameraDeviceSession.cpp
+++ b/camera/device/3.4/default/CameraDeviceSession.cpp
@@ -75,7 +75,7 @@ Return<void> CameraDeviceSession::configureStreams_3_4(
void CameraDeviceSession::configureStreams_3_4_Impl(
const StreamConfiguration& requestedConfiguration,
ICameraDeviceSession::configureStreams_3_4_cb _hidl_cb,
- uint32_t streamConfigCounter) {
+ uint32_t streamConfigCounter, bool useOverriddenFields) {
Status status = initStatus();
HalStreamConfiguration outStreams;
@@ -133,7 +133,8 @@ void CameraDeviceSession::configureStreams_3_4_Impl(
mStreamConfigCounter = streamConfigCounter;
hidl_vec<camera3_stream_t*> streams;
stream_list.session_parameters = paramBuffer;
- if (!preProcessConfigurationLocked_3_4(requestedConfiguration, &stream_list, &streams)) {
+ if (!preProcessConfigurationLocked_3_4(requestedConfiguration,
+ useOverriddenFields, &stream_list, &streams)) {
_hidl_cb(Status::INTERNAL_ERROR, outStreams);
return;
}
@@ -164,7 +165,7 @@ void CameraDeviceSession::configureStreams_3_4_Impl(
}
bool CameraDeviceSession::preProcessConfigurationLocked_3_4(
- const StreamConfiguration& requestedConfiguration,
+ const StreamConfiguration& requestedConfiguration, bool useOverriddenFields,
camera3_stream_configuration_t *stream_list /*out*/,
hidl_vec<camera3_stream_t*> *streams /*out*/) {
@@ -189,19 +190,31 @@ bool CameraDeviceSession::preProcessConfigurationLocked_3_4(
mStreamMap[id].data_space);
mCirculatingBuffers.emplace(stream.mId, CirculatingBuffers{});
} else {
- // width/height/format must not change, but usage/rotation might need to change
+ // width/height/format must not change, but usage/rotation might need to change.
+ // format and data_space may change.
if (mStreamMap[id].stream_type !=
(int) requestedConfiguration.streams[i].v3_2.streamType ||
mStreamMap[id].width != requestedConfiguration.streams[i].v3_2.width ||
mStreamMap[id].height != requestedConfiguration.streams[i].v3_2.height ||
- mStreamMap[id].format != (int) requestedConfiguration.streams[i].v3_2.format ||
- mStreamMap[id].data_space !=
- mapToLegacyDataspace( static_cast<android_dataspace_t> (
- requestedConfiguration.streams[i].v3_2.dataSpace)) ||
mPhysicalCameraIdMap[id] != requestedConfiguration.streams[i].physicalCameraId) {
ALOGE("%s: stream %d configuration changed!", __FUNCTION__, id);
return false;
}
+ if (useOverriddenFields) {
+ android_dataspace_t requestedDataSpace =
+ mapToLegacyDataspace(static_cast<android_dataspace_t>(
+ requestedConfiguration.streams[i].v3_2.dataSpace));
+ if (mStreamMap[id].format != (int) requestedConfiguration.streams[i].v3_2.format ||
+ mStreamMap[id].data_space != requestedDataSpace) {
+ ALOGE("%s: stream %d configuration changed!", __FUNCTION__, id);
+ return false;
+ }
+ } else {
+ mStreamMap[id].format =
+ (int) requestedConfiguration.streams[i].v3_2.format;
+ mStreamMap[id].data_space = (android_dataspace_t)
+ requestedConfiguration.streams[i].v3_2.dataSpace;
+ }
mStreamMap[id].rotation = (int) requestedConfiguration.streams[i].v3_2.rotation;
mStreamMap[id].usage = (uint32_t) requestedConfiguration.streams[i].v3_2.usage;
}