Camera: various external camera CTS fixes
1. Update the FPS range to list (0.5*fps, fps) only
as webcams tends to skip a lot of frames and not
able to output at stable framerate.
2. Exif: don't expect focal length to present
3. Thumbnail: allow 0x0 size for no thumbnail output
4. Allow retry some ioctl during configureStream as
some webcams seems having problem in quick close
reopen operation.
Test: CTS CameraTest
Bug: 72261912
Change-Id: Ic23b7fb293b7579694c59240e854d750c842886d
diff --git a/camera/device/3.4/default/ExternalCameraDevice.cpp b/camera/device/3.4/default/ExternalCameraDevice.cpp
index 9a02ce8..037cef8 100644
--- a/camera/device/3.4/default/ExternalCameraDevice.cpp
+++ b/camera/device/3.4/default/ExternalCameraDevice.cpp
@@ -639,14 +639,14 @@
}
std::vector<int32_t> fpsRanges;
- // Variable range
- fpsRanges.push_back(minFps);
- fpsRanges.push_back(maxFps);
- // Fixed ranges
+ // FPS ranges
for (const auto& framerate : framerates) {
- fpsRanges.push_back(framerate);
+ // Empirical: webcams often have close to 2x fps error and cannot support fixed fps range
+ fpsRanges.push_back(framerate / 2);
fpsRanges.push_back(framerate);
}
+ maxFrameDuration *= 2;
+
UPDATE(ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, fpsRanges.data(),
fpsRanges.size());