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 57dc5ae2c61e4baa2279b15eb7348c8918a43a62)
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 5add368..4ca009a 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",