Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/22096/?format=api
{ "id": 22096, "url": "https://patchwork.libcamera.org/api/1.1/covers/22096/?format=api", "web_url": "https://patchwork.libcamera.org/cover/22096/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20241126121706.4350-1-david.plowman@raspberrypi.com>", "date": "2024-11-26T12:17:03", "name": "[RFC,0/3] Frame wallclock timestamps and metadata", "submitter": { "id": 42, "url": "https://patchwork.libcamera.org/api/1.1/people/42/?format=api", "name": "David Plowman", "email": "david.plowman@raspberrypi.com" }, "mbox": "https://patchwork.libcamera.org/cover/22096/mbox/", "series": [ { "id": 4822, "url": "https://patchwork.libcamera.org/api/1.1/series/4822/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4822", "date": "2024-11-26T12:17:03", "name": "Frame wallclock timestamps and metadata", "version": 1, "mbox": "https://patchwork.libcamera.org/series/4822/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/22096/comments/", "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 60AD6C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 26 Nov 2024 12:17:13 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4F63966063;\n\tTue, 26 Nov 2024 13:17:12 +0100 (CET)", "from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com\n\t[IPv6:2a00:1450:4864:20::32d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5057F65FBA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Nov 2024 13:17:10 +0100 (CET)", "by mail-wm1-x32d.google.com with SMTP id\n\t5b1f17b1804b1-4316f3d3c21so48531465e9.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Nov 2024 04:17:10 -0800 (PST)", "from raspberrypi.pitowers.org\n\t([2a00:1098:3142:1f:c68a:6be1:5ba3:eddd])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-434a15d86a4sm51070325e9.36.2024.11.26.04.17.08\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 26 Nov 2024 04:17:09 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"StF9x7ZK\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1732623429; x=1733228229;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=CDhzpiee5IpMCJf78wYq9db/CW1GUElLMV2tv19EzCs=;\n\tb=StF9x7ZKvclykOUxZuBPmNdoO99LCB+dykGWeCqeeeOnethk9APFXE8+/xSbXA4OrB\n\tqkJ1nejcSVaFjWieWN8i/zECHBgiyTvqRh6jgavAoEcPalrLNs9fNC4KvaxqmyRaNv0W\n\t58sGN7pUVzm4i3FsvDCYAcJb3thX5BqmdyWjEoQbRKC+r701s5Nf2mtbU04mVguXxBlZ\n\typYrBUcdUhvxdGnsExiCQffwaAFmIIEQWp+GDn7q+An0gGUoJa8+mJ+/jz8eqMy/gp/6\n\tKLAzLfuqxZuwlWLi32uin3iX1UdfqN9kCHFKAVGOPO36ejsyIPDayI+Xl7k1L96gPDSQ\n\tIOJQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1732623429; x=1733228229;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=CDhzpiee5IpMCJf78wYq9db/CW1GUElLMV2tv19EzCs=;\n\tb=mSp9JI4eJTTRwvI846KU/lYDw501E/nIxSD7wfTlsOCLR1ke7mIiUbcrQVu4oHySQO\n\tapabgiU2ZbOiq7bqUwxiSe0987pNNm4uwBC4b9K3NWA7R9Ixm4EPeB8qQWEZbdvwW2CR\n\t6I+VbhFhdqyQ+qj60Q2uW3kVyhgGCQP28fGBEFEmRo5s2UN5eOMr9l9v25rBjCqO9ND0\n\tUjARweNxHKPsZ9fuxoqtLGqXiglgjeR27KpYsjby1X7ATrYxDCS9zmYIhOiBIhBP/PKF\n\tPNCeTIDY/V8QASnP4L6wVCUTQDLzTHZJ+7ODvUc0OQIlebSppXvEZaISXc2f9ezBEZuX\n\tUjRw==", "X-Gm-Message-State": "AOJu0Yw0L6foLGby69A66zQj8iIAXj2L8griwjjjjVx5FvQZPPMCcKoh\n\tRz2TAX73VZk0bMU1la9mPECJztCoGxwfPkj5L31gSqsP8HvzT9kaiphj5CRGmXH2CjXfx2tOYHp\n\t4", "X-Gm-Gg": "ASbGncs3cwL7goejwOxaeDJ1m6aZGaIuYpTheqC6Bcmb/kOEdob1BVjbyeUCseztO5C\n\tJqo8X/0T5TAXJWQ/NeV7jAyM7N3b+R1BLGHCE++ESibXKgf+GWO/vaoYpoX6csQ6eFAsFxL+Sp8\n\tlC/PmfsF3joCDrWGB4P0T/RxsKjPKrtoi3qkXA5Vsj9MN+I/YFlmBmXWGbtjhA+/opqOsoww+L4\n\tPJT4HmxAqymxSXxzp26NcX2dZkUaM0Jog5CcokTk8GRKk7prn4QciAqrRPAv8jNQnHymqgvmwXE\n\tMKrHRA==", "X-Google-Smtp-Source": "AGHT+IHh11Bwm8LJ6JkFih9haHKL4wTF8llywituy6FEUuQQuv/M8SjvYK17tPW9r+PcTify26ziZA==", "X-Received": "by 2002:a05:600c:45cd:b0:434:a529:3b87 with SMTP id\n\t5b1f17b1804b1-434a5293ebemr28739405e9.10.1732623429459; \n\tTue, 26 Nov 2024 04:17:09 -0800 (PST)", "From": "David Plowman <david.plowman@raspberrypi.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "David Plowman <david.plowman@raspberrypi.com>", "Subject": "[RFC PATCH 0/3] Frame wallclock timestamps and metadata", "Date": "Tue, 26 Nov 2024 12:17:03 +0000", "Message-Id": "<20241126121706.4350-1-david.plowman@raspberrypi.com>", "X-Mailer": "git-send-email 2.39.5", "MIME-Version": "1.0", "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>" }, "content": "Hi everyone\n\nThis patch set is actually all about the camera sync patches that I\nsent several weeks ago. One thing we said back then was that we'd try\nand make some of this functionality more accessible to other libcamera\nusers. So this patch set (which would precede subsequent patches that\nactually implement camera sync) moves the recovery of a de-jittered\n\"wallclock timestamp\" into non-Raspberry Pi code. It feels like a\ngenerally useful thing.\n\nI've left it as an RFC for the minute because there are certainly a\nfew things to think about. Let me talk through the 3 patches.\n\nPatch 1 just defines the new controls that will return the wallclock\ntimestamps. I've left it so that you get both a \"raw\" (un-smoothed)\nwallclock and the smoothed version. Actually I think this probably\nmakes sense because how would a developer really understand whether\nthe de-jittering is working properly for them without the \"raw\" value.\n(It's hard to promise at this point that it will work perfectly on\nevery camera on every platform forever...)\n\nPatch 2 is the ClockRecovery class that implements fairly\nsimple-minded clock smoothing. It does have some configuration\nparameters, and I do wonder whether the values here will suit\neveryone, or whether pipeline handlers will want to customise them. I\nthink it's easy enough to allow that, but all the more reason to\nreport the \"raw\" wallclock as well so that developers can keep an eye\non what's really happening.\n\nPatch 3 adds wallclock timestamps to the V4L2 devices, so that\neveryone using V4L2 can access them easily. A slight quirk here is\nthat the frame start handling is under the control of the V4L2Device,\nwhile the frame end (dequeueBuffer) happens through the\nV4L2Videodevice. Another side effect is that you have to register for\nframe start events to get the functionality. Perhaps folks can say\nwhat they make of that.\n\nObviously I have a couple more patches that make the Raspberry Pi PH\noutput these new wallclock controls. Let me know if you'd like to try\nthem.\n\nThanks!\nDavid\n\n\nDavid Plowman (3):\n controls: Add FrameWallClock and FrameWallClockRaw controls\n libcamera: clock: Add ClockRecovery class to help generate wallclock\n timestamps\n libcamera: v4l2: Add wallclock metadata to video devices\n\n include/libcamera/framebuffer.h | 2 +\n include/libcamera/internal/clock_recovery.h | 64 ++++++++++\n include/libcamera/internal/meson.build | 1 +\n include/libcamera/internal/v4l2_device.h | 4 +\n include/libcamera/internal/v4l2_videodevice.h | 3 +\n src/libcamera/clock_recovery.cpp | 110 ++++++++++++++++++\n src/libcamera/control_ids_core.yaml | 29 +++++\n src/libcamera/meson.build | 1 +\n src/libcamera/v4l2_device.cpp | 22 ++++\n src/libcamera/v4l2_videodevice.cpp | 29 +++++\n 10 files changed, 265 insertions(+)\n create mode 100644 include/libcamera/internal/clock_recovery.h\n create mode 100644 src/libcamera/clock_recovery.cpp" }