cameraservice: Allow AIDL Devices to not support sensor readout timestamp
CameraService currently force adds
ANDROID_SENSOR_READOUT_TIMESTAMP_HARDWARE to all AIDL devices. This
effectively means all Camera HALs implementing the AIDL interfaces
are forced to support sensor timestamp.
Forcing AIDL HALs to support sensor readout timestamp means HALs will
have to fake sensor readout value if the camera sensor does not report
sensor readout timestamp (for example in the case of ExternalCameraHAL).
This CL allows AIDL HALs to not support sensor readout timestamp.
Bug: 309543399
Test: ReadoutTimestampTest#testReadoutTimestamp passes for
ExternalCameraHAL
Test: atest CtsCameraTestCases:android.hardware.camera2.cts.ReadoutTimestampTest
passes for normal AIDL HALs when the value is not explicitly set.
Change-Id: Iecf84372f2f6e2812d9c148a94b15eed01917fb1
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index 1ba3de4..d5eb413 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -1807,18 +1807,13 @@
auto& c = mCameraCharacteristics;
auto entry = c.find(ANDROID_SENSOR_READOUT_TIMESTAMP);
- if (entry.count != 0) {
- ALOGE("%s: CameraCharacteristics must not contain ANDROID_SENSOR_READOUT_TIMESTAMP!",
- __FUNCTION__);
+ if (entry.count == 0) {
+ uint8_t defaultReadoutTimestamp = readoutTimestampSupported ?
+ ANDROID_SENSOR_READOUT_TIMESTAMP_HARDWARE :
+ ANDROID_SENSOR_READOUT_TIMESTAMP_NOT_SUPPORTED;
+ res = c.update(ANDROID_SENSOR_READOUT_TIMESTAMP, &defaultReadoutTimestamp, 1);
}
- uint8_t readoutTimestamp = ANDROID_SENSOR_READOUT_TIMESTAMP_NOT_SUPPORTED;
- if (readoutTimestampSupported) {
- readoutTimestamp = ANDROID_SENSOR_READOUT_TIMESTAMP_HARDWARE;
- }
-
- res = c.update(ANDROID_SENSOR_READOUT_TIMESTAMP, &readoutTimestamp, 1);
-
return res;
}