Camera: Use original format and dataSpace for reconfigure
Starting from HAL device version 3.5, the format and dataSpace for
IMPLEMENTATION_DEFINED pixel format uses original instead of overridden
values.
This makes HAL interface behavior consistent in that HAL doesn't need to
distinguish between first-time configureStreams and subsequent
reconfigure.
Test: Camera CTS and partner testing
Bug: 131864007
Change-Id: Ie5fdc7e9b6c11c1c96a069262b9458455855bcef
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.cpp b/services/camera/libcameraservice/device3/Camera3Stream.cpp
index d73a2f9..6d76802 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Stream.cpp
@@ -67,6 +67,8 @@
mBufferLimitLatency(kBufferLimitLatencyBinSize),
mFormatOverridden(false),
mOriginalFormat(-1),
+ mDataSpaceOverridden(false),
+ mOriginalDataSpace(HAL_DATASPACE_UNKNOWN),
mPhysicalCameraId(physicalCameraId),
mLastTimestamp(0) {
@@ -121,7 +123,9 @@
void Camera3Stream::setFormatOverride(bool formatOverridden) {
mFormatOverridden = formatOverridden;
- if (formatOverridden) mOriginalFormat = camera3_stream::format;
+ if (formatOverridden && mOriginalFormat == -1) {
+ mOriginalFormat = camera3_stream::format;
+ }
}
bool Camera3Stream::isFormatOverridden() const {
@@ -134,7 +138,9 @@
void Camera3Stream::setDataSpaceOverride(bool dataSpaceOverridden) {
mDataSpaceOverridden = dataSpaceOverridden;
- if (dataSpaceOverridden) mOriginalDataSpace = camera3_stream::data_space;
+ if (dataSpaceOverridden && mOriginalDataSpace == HAL_DATASPACE_UNKNOWN) {
+ mOriginalDataSpace = camera3_stream::data_space;
+ }
}
bool Camera3Stream::isDataSpaceOverridden() const {