From patchwork Mon Sep 1 11:19:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naushir Patuck X-Patchwork-Id: 24277 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 313EBBEFBE for ; Mon, 1 Sep 2025 11:20:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 037B569325; Mon, 1 Sep 2025 13:20:18 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="WKuctMk5"; dkim-atps=neutral Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 96B3669318 for ; Mon, 1 Sep 2025 13:20:05 +0200 (CEST) Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-45b76f3b24eso4616675e9.2 for ; Mon, 01 Sep 2025 04:20:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1756725604; x=1757330404; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=zZLTI8Uz6nppH+jsJ31I8VP7tIAsMxi5bsHht8JjEIo=; b=WKuctMk57ykIoiFzu9VeSzcUSOOjFMj84b63vUvJFqyDMJc27JO3f0V/6L5nP5Zg8D 3WoNw+DGpsegfAo/UDz+91yp0Sb8kQUndZJhfzWiyxOMye4U4ljFTgVW39oYk32cxAq6 /3tqCJuxd9Z7jPwcQQkhoo3hblimW4lN9W0vdcCUnhZKo6/Q+TE48S7Qtt5lmTxAuV5V xT5gt1zr3j8sLgox2QO48uWWF1FXjH0yDEzUqMU8AuYTuqVQIrM0UGt+Q0Dq81MxkSC1 tOFFIOmN9+zoFGJhxHeG/p82ApF1rqJJLT0HMi39+sOx9D5oDw6W8WOZOrBTR8HPklOV rKzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756725604; x=1757330404; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zZLTI8Uz6nppH+jsJ31I8VP7tIAsMxi5bsHht8JjEIo=; b=YvTgRxQcBa/LP/KBW2J5aMG2qJLJDB+3gArtjTIwQ1zJmm1e4xfGe3XQNECpZXS7DO +uY3uLFYUwmSdyKZ87bjqkVqoL5hBI9Ds4qVZr1oeqpp06PEC3A9aF4p1eno2DvXseC7 dYwkTyw5s6QQZUsyCGFgaRgLYrliOxmShEaAezUJ3VQqcaX/HrDwI8wW7Zek5aNtXnus yvkCJA+0SuOssr7Y8i3Urvg6u+o1A0DwLTJwb2rXbj8tPFV7op18l7HcUqDmMlalGLgy SkxmqHT8A3XG+V4pIgTx1jytDcPhSdluhHB7Bl6py44+lsEDeblOUmbveoaivoxyVqoo Limw== X-Gm-Message-State: AOJu0YyBPUkkt8eC7OBvMR95dxEOVLQnsH0jxy4C1xdQ60bh0kG6HIsS 6VLJx0GOy+Jiq9S0nvR5pghQcw7ifEKcOkhku9mbxg+NHZnwCJXcGDrDHp1/L85IjFcaiyL7Wtm Yvncz X-Gm-Gg: ASbGncuKzcAiiKTcpmis58Ze2ZMW7SbT2JqRWcaOiIHv/yaKDCOeWSPg/Ql5QkPuGsM PAlFCW1ogOW2chlhWlmu/4smok21Jq9sJCm6hojT7BOgeCRsEGa1Ecvnpj0gJTH91AuFkwBLe0I E/UEeUHzasnxRM1zOZV6M8Wbg/Kin7u1OUkeJX6kEpqJFAQ0TUiPBSjc/VHVpnWV3cftqyMleOI Rh0X9xPaegaX3GWIl3P0mXhgqaARIr6JiYeHaHWu6tMSOoqvgT+eGb+j81/XJXYnGovMkK7MsXL gHpvgV2ZiRPdampXn83elHSZIGVX3VRX+mCQsUzruyMXIKt1UQtiJvGzkSZiE1q1mL4ov1RPEKR dur+btrjSz57VOxoPrPaleV9WkEtUBZpEsAkv1BfZ8A== X-Google-Smtp-Source: AGHT+IG1E55FIlADQNQ03XLt8jfofn68Zm/cF0YvpqqOd/ob0AMckVBI98rBx3FiAh1ysLIE9trz8g== X-Received: by 2002:a05:6000:4304:b0:3cd:edee:c7e9 with SMTP id ffacd0b85a97d-3d0fc0b0e9emr3921926f8f.6.1756725604165; Mon, 01 Sep 2025 04:20:04 -0700 (PDT) Received: from NAUSH-P-DELL.pitowers.org ([93.93.133.154]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3cf3458a67esm14982519f8f.62.2025.09.01.04.20.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 04:20:03 -0700 (PDT) From: Naushir Patuck To: libcamera-devel@lists.libcamera.org Cc: david.plowman@raspberrypi.com, kieran.bingham@ideasonboard.com, Naushir Patuck Subject: [PATCH] libcamera: clock_recovery: Fix for nanosecond conversion for FrameWallClock Date: Mon, 1 Sep 2025 12:19:41 +0100 Message-ID: <20250901111952.2155555-1-naush@raspberrypi.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" When switching the FrameWallClock to use nanoseconds instead of microseconds, the clock recovery class was left untouched. This would cause an inaccurate clock model and return spurious results for kernel -> wallclock timestamping. Annoyingly this was missed as there were no application level consumers of FrameWallClock until now. Fixes: 29a88d85b730 ("libcamera: controls: Use nanoseconds units for FrameWallClock") Signed-off-by: Naushir Patuck --- 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 abacf444fbf8..f9ccb6ae2144 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); }