From patchwork Wed Dec 18 18:03:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Plowman X-Patchwork-Id: 22398 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 F115AC3301 for ; Wed, 18 Dec 2024 18:03:17 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B3050680B2; Wed, 18 Dec 2024 19:03:16 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="Jy+wBKLH"; dkim-atps=neutral Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 14AEC67F59 for ; Wed, 18 Dec 2024 19:03:15 +0100 (CET) Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4361f65ca01so65843635e9.1 for ; Wed, 18 Dec 2024 10:03:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1734544994; x=1735149794; 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=4yJQddugP73yRIVsGD9Qg7LoYvrSFtqy658JgXcXbCk=; b=Jy+wBKLH0VSCKAX2pmyT7RKTmqKpyVmRozgIqqn1bSFVS+z8jJjQm49OOY6N/EZliz 5f+fu6DGQ4ZlYpicaaENdq2RIhVSF/tH35bO27llAFYexJ/hR5wXYAF81UcMX0HSfjur Mxt6+QJd2HXw+PuGYwqXy2AmZ0pqN+CI1SPtfoqLtb7PalkiJcG4hB6MgvVwYFWbRDBj p2g8xPCMhCASdS73c/4S2kBa3mgp0VdXnjHz+vbFnDzU5XrkS0Sucyrldc8zXBUECWur RtElkYAqDiPX77HH09s30qsmunuPY48dlTpTTlaR7fwh9kTg79MCHHF7Ehl1Y7WADRvb 660Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734544994; x=1735149794; 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=4yJQddugP73yRIVsGD9Qg7LoYvrSFtqy658JgXcXbCk=; b=skb1HpTX3u/V/PdXiraQ+pvAV/a4KEm4YG887bagPhBWF+zuCIKHXsifgiuOflCKK9 WJJR5seAmxuAQZgVnyuNKdJdOXw8qjdsAONQmM4Mn9VxBGzr1cbXw9Kl5yfSk1KTb0EZ oo4vxGUQkbL3QB/+rxKXKS5BIfC1LKpqvTBAyTYnBzl259IUDma3P86SFfS82Wdscu0V rTBT6fMUJ12pkFipF4l8vBHz4dWViOmZEInTejeRkLTnGZaSDPzB+2lvZ9cmsWUbB+7I io2mXuVyy4F5vj+wDrUhyLnQaphfh5OBxXY1To0AeHEsJTSoV7qtxA28Y/rhScd0c00j xYxQ== X-Gm-Message-State: AOJu0Yz4UEoEj6AAorIxMTIeDIdjb0a+evnoP/x0cWhWNak59rSKN1aY +yOuicOLEoe5pcyUoArgLBbSTQQyssD8woc++UpHGatwgYH9Hggp+V35Zpq/RL/bqUitlrsXCV3 u X-Gm-Gg: ASbGncsxAuVGqcyNsXGCwLAGgu5prp/uCrRyQ54FGhmI9wPpKkZ8xVC/YinsmFJ6t3f ckso5BnreoCmvEEZNxdQdsIaE1nLHWXw0bFn4yJyw58TyFm9KTxH94kf3q4Ad2gxVkyr1VVU5Js 9aYOBFJGrbKRliqc4tk0zEfieyMpgdhna+4ZTv0+xYHhkN6rWy7AKX6aMZO5w9E+37LKsuQFOa2 SPjsRzeqQKaNZR4pY/HjlDUGD9hVkW2QkR9Ktr3Q0gnHITqHmk4gDWONV4DbahyHTw63gyD+oSR dEM08Xzv0Hvx X-Google-Smtp-Source: AGHT+IG1KgnuVior5C9RjfRoPVkDmt/RlkQ/QTwBa1aAjBiF2JMwiYPpsS1vvRfh2lOPrBEIPppEuQ== X-Received: by 2002:a05:600c:3111:b0:435:32e:8270 with SMTP id 5b1f17b1804b1-4365535dec5mr37219585e9.14.1734544994000; Wed, 18 Dec 2024 10:03:14 -0800 (PST) Received: from raspberrypi.pitowers.org ([2a00:1098:3142:1f:c68a:6be1:5ba3:eddd]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43656b01c88sm27927285e9.17.2024.12.18.10.03.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Dec 2024 10:03:12 -0800 (PST) From: David Plowman To: libcamera-devel@lists.libcamera.org Cc: David Plowman Subject: [PATCH v2 0/3] Wall clocks and camera sync Date: Wed, 18 Dec 2024 18:03:07 +0000 Message-Id: <20241218180310.7824-1-david.plowman@raspberrypi.com> X-Mailer: git-send-email 2.39.5 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" Hi Here's a first revision of previous wall clock and camera sync patch sets. The functionality has been shifting around a bit so it doesn't entirely correspond to any previous patch set, nonetheless I hope it's clear that it does supercede everything prior. The main differences here are: * I've made most of the updates from reviews so far. I realise there's still some stuff under discussion, but, you know, trying to make progress where we can! * THe clock recovery has been taken out of the V4l2VideoDevice, and therefore wallclocks don't feature in buffer metadata either (I think this was the preferred route?). This means that these patches are the sum total of changes that affect core code. Pipeline handlers will pick up some very small mods in subsequent patches to derive wallclock values and forward them to the request metadata. Hope that makes sense! Thanks David David Plowman (3): controls: Add FrameWallClock control libcamera: Add ClockRecovery class to generate wallclock timestamps controls: Add camera synchronisation controls include/libcamera/internal/clock_recovery.h | 68 ++++++ include/libcamera/internal/meson.build | 1 + src/libcamera/clock_recovery.cpp | 230 ++++++++++++++++++++ src/libcamera/control_ids_core.yaml | 127 ++++++++++- src/libcamera/meson.build | 1 + 5 files changed, 424 insertions(+), 3 deletions(-) create mode 100644 include/libcamera/internal/clock_recovery.h create mode 100644 src/libcamera/clock_recovery.cpp