QCamera2: HAL3: correct timestamp calculation in HFR mode
When the phone powers up for several days,
the timestamp (in ns, nano sec) of frames will exceed the
precision of float data type.
It will lead to incorrect timestamp calculation in
HFR batch mode. Use double instead
Ack-by: Gaoxiang Chen
BUG=24842044
Change-Id: I63598e56178b980fa817c1c77f77f0e6a005767b
(cherry picked from commit ece15b4fa7cc4c622e41cc9a4cd28187ae584e9e)
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 59ef87b..490cd2e 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -2379,9 +2379,9 @@
if (last_frame_capture_time) {
//Infer timestamp
first_frame_capture_time = last_frame_capture_time -
- (((loopCount - 1) * NSEC_PER_SEC) / mHFRVideoFps);
+ (((loopCount - 1) * NSEC_PER_SEC) / (double) mHFRVideoFps);
capture_time =
- first_frame_capture_time + (i * NSEC_PER_SEC / mHFRVideoFps);
+ first_frame_capture_time + (i * NSEC_PER_SEC / (double) mHFRVideoFps);
ADD_SET_PARAM_ENTRY_TO_BATCH(metadata,
CAM_INTF_META_SENSOR_TIMESTAMP, capture_time);
CDBG("%s: batch capture_time: %lld, capture_time: %lld",