[{"id":35551,"web_url":"https://patchwork.libcamera.org/comment/35551/","msgid":"<bd907949-c845-4b27-8203-5612f1cd5fc1@ideasonboard.com>","date":"2025-08-25T11:58:36","subject":"Re: [PATCH] libcamera: clock_recovery: Use nanoseconds in\n\taddSample()","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 08. 25. 13:44 keltezéssel, Paul Elder írta:\n> FrameWallClock was recently changed to nanoseconds, and all users of\n> ClockRecovery use SensorTimestamp directly, which is also in\n> nanoseconds. Thus addSample() should also use nanoseconds. Fix this.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n\nMaybe\n   Fixes: 29a88d85b730b (\"libcamera: controls: Use nanoseconds units for FrameWallClock\")\n\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n>   src/libcamera/clock_recovery.cpp | 6 +++---\n>   1 file changed, 3 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/libcamera/clock_recovery.cpp b/src/libcamera/clock_recovery.cpp\n> index abacf444fbf8..f9ccb6ae2144 100644\n> --- a/src/libcamera/clock_recovery.cpp\n> +++ b/src/libcamera/clock_recovery.cpp\n> @@ -118,10 +118,10 @@ void ClockRecovery::addSample()\n>   \tclock_gettime(CLOCK_BOOTTIME, &bootTime1);\n>   \tclock_gettime(CLOCK_REALTIME, &wallTime);\n>   \tclock_gettime(CLOCK_BOOTTIME, &bootTime2);\n> -\tuint64_t boot1 = bootTime1.tv_sec * 1000000ULL + bootTime1.tv_nsec / 1000;\n> -\tuint64_t boot2 = bootTime2.tv_sec * 1000000ULL + bootTime2.tv_nsec / 1000;\n> +\tuint64_t boot1 = bootTime1.tv_sec * 1000000000ULL + bootTime1.tv_nsec;\n> +\tuint64_t boot2 = bootTime2.tv_sec * 1000000000ULL + bootTime2.tv_nsec;\n>   \tuint64_t boot = (boot1 + boot2) / 2;\n> -\tuint64_t wall = wallTime.tv_sec * 1000000ULL + wallTime.tv_nsec / 1000;\n> +\tuint64_t wall = wallTime.tv_sec * 1000000000ULL + wallTime.tv_nsec;\n>   \n>   \taddSample(boot, wall);\n>   }","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8806ABD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 25 Aug 2025 11:58:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B6B15692CA;\n\tMon, 25 Aug 2025 13:58:43 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D7CA5692CA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 25 Aug 2025 13:58:40 +0200 (CEST)","from [192.168.33.19] (185.182.215.11.nat.pool.zt.hu\n\t[185.182.215.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 04D182285;\n\tMon, 25 Aug 2025 13:57:37 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"dhY7jKm9\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1756123058;\n\tbh=7d4F5c40TEKyPO747ngJTHNVaRP/PvlYUf+yIRfLnxg=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=dhY7jKm9MOsQKm2lAZ3jzd2LhfSg8+SzZ4T4K9wzkdll0d7iJ0C5CTNVQ9m93rWym\n\tsWuyF5XNHr5KMfBEd6wmGP4RszlFJphi629GuuIDLtUFa2IpTrou68ZAGV1Y4IDVKI\n\t34mvEyH7D+UQHLsxLwQZ7nyX57mIcGymQf2dh7vI=","Message-ID":"<bd907949-c845-4b27-8203-5612f1cd5fc1@ideasonboard.com>","Date":"Mon, 25 Aug 2025 13:58:36 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] libcamera: clock_recovery: Use nanoseconds in\n\taddSample()","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20250825114435.570351-1-paul.elder@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20250825114435.570351-1-paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":35662,"web_url":"https://patchwork.libcamera.org/comment/35662/","msgid":"<CAEmqJPqFokPe2-kHx_LOk9UAe+y4yr-+P73RTmy6p50XXpmPsQ@mail.gmail.com>","date":"2025-09-01T11:25:42","subject":"Re: [PATCH] libcamera: clock_recovery: Use nanoseconds in\n\taddSample()","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Paul,\n\nThank you for the fix!\n\nOn Mon, 25 Aug 2025 at 12:44, Paul Elder <paul.elder@ideasonboard.com> wrote:\n>\n> FrameWallClock was recently changed to nanoseconds, and all users of\n> ClockRecovery use SensorTimestamp directly, which is also in\n> nanoseconds. Thus addSample() should also use nanoseconds. Fix this.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\nTested-by: Naushir Patuck <naush@raspberrypi.com>\n\n> ---\n>  src/libcamera/clock_recovery.cpp | 6 +++---\n>  1 file changed, 3 insertions(+), 3 deletions(-)\n>\n> diff --git a/src/libcamera/clock_recovery.cpp b/src/libcamera/clock_recovery.cpp\n> index abacf444fbf8..f9ccb6ae2144 100644\n> --- a/src/libcamera/clock_recovery.cpp\n> +++ b/src/libcamera/clock_recovery.cpp\n> @@ -118,10 +118,10 @@ void ClockRecovery::addSample()\n>         clock_gettime(CLOCK_BOOTTIME, &bootTime1);\n>         clock_gettime(CLOCK_REALTIME, &wallTime);\n>         clock_gettime(CLOCK_BOOTTIME, &bootTime2);\n> -       uint64_t boot1 = bootTime1.tv_sec * 1000000ULL + bootTime1.tv_nsec / 1000;\n> -       uint64_t boot2 = bootTime2.tv_sec * 1000000ULL + bootTime2.tv_nsec / 1000;\n> +       uint64_t boot1 = bootTime1.tv_sec * 1000000000ULL + bootTime1.tv_nsec;\n> +       uint64_t boot2 = bootTime2.tv_sec * 1000000000ULL + bootTime2.tv_nsec;\n>         uint64_t boot = (boot1 + boot2) / 2;\n> -       uint64_t wall = wallTime.tv_sec * 1000000ULL + wallTime.tv_nsec / 1000;\n> +       uint64_t wall = wallTime.tv_sec * 1000000000ULL + wallTime.tv_nsec;\n>\n>         addSample(boot, wall);\n>  }\n> --\n> 2.47.2\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 0E42CBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  1 Sep 2025 11:26:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1D27169330;\n\tMon,  1 Sep 2025 13:26:21 +0200 (CEST)","from mail-vs1-xe29.google.com (mail-vs1-xe29.google.com\n\t[IPv6:2607:f8b0:4864:20::e29])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6694469323\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  1 Sep 2025 13:26:19 +0200 (CEST)","by mail-vs1-xe29.google.com with SMTP id\n\tada2fe7eead31-529758aac9cso99431137.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 01 Sep 2025 04:26:19 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"GuUsjEDh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1756725978; x=1757330778;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Bljz1iJyWoRFvmH3d3iFM/B3FlzRe0w/OSmDRmZnSO4=;\n\tb=GuUsjEDhdRdmgbYAkPBs+AskQqZXHO3nUC6B0Z97AtGmXiuSOMEqO0q+Cs4JjKA0m8\n\tnyQq5SoyfwBNsePIHVo6u//a++IGXeNJnZDGt8I/8dVno3tqCbB9PcFlY0rwPpD0UH3n\n\tQgZrvAkXeCty1GwJzDvoHXg6Usl3Jxts8JnYtmtgxherDJbgnO3ZnZY2wy0XVZMq7oJF\n\tD1dt6b4P5gYMrT6Y8K9hKT3fpptJ7872PaNCeJsP/wFE8Ip1SHzHOrQvPta7yDa0XOwz\n\tb+rZC4j/xrf5SxKmnCICYb4QCpP/rYb8r5/JBpolxTHtjgSF2rGvuIKfA4f6von2cIJ2\n\td15g==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1756725978; x=1757330778;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=Bljz1iJyWoRFvmH3d3iFM/B3FlzRe0w/OSmDRmZnSO4=;\n\tb=WCTtILuo6P9/tVuS2OAFug4+FUqe4hEQTkrJmAjREYwOkEA8/mTjGomRBuMGZapkEY\n\t084EdZpkmbuhbqb3GQXj8C4jlB/4KB4D/KRAP4+nOi3VhzK6uEZdcjzNLT0NQt80wvAC\n\ti3nve1IMjwGqogWGD2GngqC0wodDigiQgfJkDOIZZ7hmhnDWPH6HJa190YfAq+G1IIkP\n\tvKIXWrY8MgEaEM6A/YGeBQmNMf+7K6DazTcykl87KGscaiCGtpWvxDjUUtYuL6VN6XOV\n\t2IprUPyy2CBVbrRNE8PoNvmr2PMyUbkIQsPtQmEofbTNvm7GEdP5lg219KUbRr2k0Pa/\n\tX2ow==","X-Gm-Message-State":"AOJu0YxDJvFGy0ACSw8rhSDQZUTEDxRSlxf3QEtq5PzZKtP/YZ7sIU68\n\tMrt8nvNBGT4uVy6VYxqaGtFKQadHvlh4JqL0Dd0tS9xqIDz3WfL5P+zJ9rD+3llXb8P2Te9mih/\n\tFJJzw/05nhFwFjQHmRLfRCFLObF50HabqX78rPrZILXY/bEqJqmIy5Xc=","X-Gm-Gg":"ASbGnct+iEGQwcmu+Kd4W/qRsT6FxxYp+tlVbvM51KmteF5aj+5gnDB4Vt/A7tc0v3X\n\thlOS1LVNuD7I5CpdH4IfvP3ZBjHUo2yTDh+EGTkB+4UM0fh2JmFCrzu0TVeDKXujIdJyhoss1sm\n\tkuUohDk9MDbOYniIuUZng68oPSNvzejNTVbbBTfPAT7XP/jLqpN3qirOfi1LeH2K87YHQB66wWt\n\tBClybV7eN12mKZ8CidSkZfyew+O6cbyROJ6tRA=","X-Google-Smtp-Source":"AGHT+IFkH5secGsJ7E/kS4oPS9bHEQ7iGSRjcpr9gaBl4FtGImlKg7umpeEmsiKprriFMHOKUvta5ThphQAt+Gq0Yrs=","X-Received":"by 2002:a05:6102:a50:b0:4fd:191:dcb4 with SMTP id\n\tada2fe7eead31-52a343e1853mr1089861137.8.1756725978117;\n\tMon, 01 Sep 2025 04:26:18 -0700 (PDT)","MIME-Version":"1.0","References":"<20250825114435.570351-1-paul.elder@ideasonboard.com>","In-Reply-To":"<20250825114435.570351-1-paul.elder@ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Mon, 1 Sep 2025 12:25:42 +0100","X-Gm-Features":"Ac12FXxCoeXJwQHODwtAuIi0e-qioGrPsy9752D98Y_oVcdMUyA3i8um9uHHX70","Message-ID":"<CAEmqJPqFokPe2-kHx_LOk9UAe+y4yr-+P73RTmy6p50XXpmPsQ@mail.gmail.com>","Subject":"Re: [PATCH] libcamera: clock_recovery: Use nanoseconds in\n\taddSample()","To":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]