From 278cdfd865ee437d7f88f22bedadc363ff62fa2a Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Mon, 25 Aug 2025 20:44:35 +0900 Subject: [PATCH] libcamera: clock_recovery: Use nanoseconds in addSample() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FrameWallClock was recently changed to nanoseconds, and all users of ClockRecovery use SensorTimestamp directly, which is also in nanoseconds. Thus addSample() should also use nanoseconds. Fix this. Signed-off-by: Paul Elder Reviewed-by: Barnabás Pőcze Reviewed-by: Naushir Patuck Tested-by: Naushir Patuck Signed-off-by: Kieran Bingham --- src/libcamera/clock_recovery.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libcamera/clock_recovery.cpp b/src/libcamera/clock_recovery.cpp index abacf444..f9ccb6ae 100644 --- a/src/libcamera/clock_recovery.cpp +++ b/src/libcamera/clock_recovery.cpp @@ -118,10 +118,10 @@ void ClockRecovery::addSample() clock_gettime(CLOCK_BOOTTIME, &bootTime1); clock_gettime(CLOCK_REALTIME, &wallTime); clock_gettime(CLOCK_BOOTTIME, &bootTime2); - uint64_t boot1 = bootTime1.tv_sec * 1000000ULL + bootTime1.tv_nsec / 1000; - uint64_t boot2 = bootTime2.tv_sec * 1000000ULL + bootTime2.tv_nsec / 1000; + uint64_t boot1 = bootTime1.tv_sec * 1000000000ULL + bootTime1.tv_nsec; + uint64_t boot2 = bootTime2.tv_sec * 1000000000ULL + bootTime2.tv_nsec; uint64_t boot = (boot1 + boot2) / 2; - uint64_t wall = wallTime.tv_sec * 1000000ULL + wallTime.tv_nsec / 1000; + uint64_t wall = wallTime.tv_sec * 1000000000ULL + wallTime.tv_nsec; addSample(boot, wall); }