Camera: use rational/double for external camera framerate
For better precision.
Ex: minFrameDuration of 30fps 333333334->333333333
Bug: 72261912
Change-Id: I830d694d34eb01426e46279c4c986d8879b9d847
diff --git a/camera/device/3.4/default/ExternalCameraDeviceSession.cpp b/camera/device/3.4/default/ExternalCameraDeviceSession.cpp
index 74fd7f4..5de1442 100644
--- a/camera/device/3.4/default/ExternalCameraDeviceSession.cpp
+++ b/camera/device/3.4/default/ExternalCameraDeviceSession.cpp
@@ -1904,7 +1904,8 @@
float fps = 1000.f;
const float kDefaultFps = 30.f;
// Try to pick the slowest fps that is at least 30
- for (const auto& f : v4l2Fmt.frameRates) {
+ for (const auto& fr : v4l2Fmt.frameRates) {
+ double f = fr.getDouble();
if (maxFps < f) {
maxFps = f;
}
@@ -2346,8 +2347,8 @@
bool support30Fps = false;
int32_t maxFps = std::numeric_limits<int32_t>::min();
for (const auto& supportedFormat : mSupportedFormats) {
- for (const auto& frameRate : supportedFormat.frameRates) {
- int32_t framerateInt = static_cast<int32_t>(frameRate);
+ for (const auto& fr : supportedFormat.frameRates) {
+ int32_t framerateInt = static_cast<int32_t>(fr.getDouble());
if (maxFps < framerateInt) {
maxFps = framerateInt;
}