Show a cover letter.

GET /api/covers/22211/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 22211,
    "url": "https://patchwork.libcamera.org/api/covers/22211/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/22211/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20241206142742.7931-1-david.plowman@raspberrypi.com>",
    "date": "2024-12-06T14:27:37",
    "name": "[0/5] Implement wallclock timestamps for frames",
    "submitter": {
        "id": 42,
        "url": "https://patchwork.libcamera.org/api/people/42/?format=api",
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/22211/mbox/",
    "series": [
        {
            "id": 4856,
            "url": "https://patchwork.libcamera.org/api/series/4856/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4856",
            "date": "2024-12-06T14:27:37",
            "name": "Implement wallclock timestamps for frames",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/4856/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/22211/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 982D2BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Dec 2024 14:27:50 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BCEAB6616B;\n\tFri,  6 Dec 2024 15:27:48 +0100 (CET)",
            "from mail-wm1-x333.google.com (mail-wm1-x333.google.com\n\t[IPv6:2a00:1450:4864:20::333])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1CE6F618B3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Dec 2024 15:27:46 +0100 (CET)",
            "by mail-wm1-x333.google.com with SMTP id\n\t5b1f17b1804b1-434acf1f9abso20953565e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 06 Dec 2024 06:27:46 -0800 (PST)",
            "from localhost.localdomain ([88.202.252.90])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-386220b071dsm4608219f8f.101.2024.12.06.06.27.44\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 06 Dec 2024 06:27:44 -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=\"gWkV+uUt\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1733495265; x=1734100065;\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=Ym57vKKbuIG9G5jAdrl1HOlEgNSspU9Ui0lCCQ1OTRE=;\n\tb=gWkV+uUtrbceLVR+2ecccRuc4NU6VWYrXeceexx2bogq2fmUlSZxK84By5N9DJ15iT\n\t2sFC5lVRqUnvPHS7uM6KDEkyfuKHADu+do0vJXoZ2Q18yYJTVnYL5ZGm/JJmfXYFqULY\n\t4+qX5O10CN159QwVwyiKnp6GMkaZEDM7ON29QAoTXMlo+Hi/g0T6E0TtbzGXpn6HMVLG\n\te4NW4SVZe+VRZaIMblbjOm6sL0YXlPMJ+XqmT760l8nAeuuCAO4Sqc0NFoU6vOhPb3rO\n\tkIHsx12tgZSoI/LqpSE5x34NXqYH5wlp012cCCYL4k6pp44oeuX3EsTPYbPd1BYtUTEZ\n\tK9/A==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1733495265; x=1734100065;\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=Ym57vKKbuIG9G5jAdrl1HOlEgNSspU9Ui0lCCQ1OTRE=;\n\tb=a9r7tv9Tifq1ufBOWfsdE9WaOlvM9eGM0t7jWJKa3AzUBy5P+zUbEAe8/rFCpne2Ls\n\tgUgMochY+c9uitjImD5zazhPSbG8qLC6qhWQiDmWj5xwWAnLmIYCDViuIRGVCziwHAdb\n\t+ZNToqfL03l+nfzSSjMLUm0NWn2nyp3yIqFbqgc9/AYoWNSMKR2f8vRr3wY+mS79QwAe\n\te1NGuxqWIy8jV9sUJQKN9QlBC5K5Eq31uaY79r1c/GwT0iR28FM7e0D8pV441YoZ5hUC\n\tt4x+BhVTqVIxjsXXAaj+281j05UtB6F4tQDBOc6RSesQXJF+FyEe4TYRgXZLlw4+6AS5\n\tckrg==",
        "X-Gm-Message-State": "AOJu0Yw380jiRvIBKtMUN4dDUPwIZ3enMtAnlP0PJZoX5QODBf7/5cux\n\t2Gomp1H9VotQTUW39JPTl6xPE/4cK/9KS+gnxfakOzBnPXpr5TU/0NZaCkUiXfcTbO2rh7JyyrR\n\t6",
        "X-Gm-Gg": "ASbGncuIWCs/xEBJD/n7YEKBMIV26qs8pAB2tQ1ZWcgHUlbUBr1NI/gGj/wFD5iDfn0\n\tO39P2+FLvfggbOzBVyfn+UmiMH2zna20lVCmIfl/tjbLpkUFzdayTNcTTg3NtEIHYdroSue00Yd\n\tGd9lxwVEvMPLResjHkAjTFI+Bb70UO55sRovNpQJCqchue0HrP5//CdghTwc74JqT81itofsK+j\n\t3Ic8Bcu/oB7uMjcJDJkeNrSQ3R66gClFOP1exY7AKgVmlpKXaE5lBRjEsaT+F7adFImnhCDjSo=",
        "X-Google-Smtp-Source": "AGHT+IFicjW+emi2tS0wywbsLr2u5FjinQ2DkFV0cbBEyIunl1nEL0Ennwfw7IzSd3A9hd74mnuJJg==",
        "X-Received": "by 2002:a05:6000:784:b0:385:f220:f789 with SMTP id\n\tffacd0b85a97d-3862b3f50fbmr2377573f8f.48.1733495265296; \n\tFri, 06 Dec 2024 06:27:45 -0800 (PST)",
        "From": "David Plowman <david.plowman@raspberrypi.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "David Plowman <david.plowman@raspberrypi.com>",
        "Subject": "[PATCH 0/5] Implement wallclock timestamps for frames",
        "Date": "Fri,  6 Dec 2024 14:27:37 +0000",
        "Message-Id": "<20241206142742.7931-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\nHere's a version that incorporates the various comments and decisions\nfrom yesterday's useful discussions. So thanks to everyone for taking\nthe time yesterday! To summarise what has changed:\n\n* It's been simplified by sampling both clocks in dequeueBuffer. It\n  works better like this too, as there's less chance of context\n  switches intervening. (I've also provided an option to have the\n  ClockRecovery class sample the timestamps for you, for convenience.)\n\n* I've stopped talking about \"steady clocks\" and \"system clocks\" in\n  the C++ fashion. It doesn't seem 100% explicit exactly what these\n  are, so I've gone over to Linux CLOCK_BOOTTIME and CLOCK_REALTIME\n  instead (which do appear to be equivalent, at least).\n\n* I've removed the raw wallclock entirely. It's not really useful on\n  its own, because of the other changes, and I couldn't really decide\n  what to do. I've left some logging in the clock recovery code,\n  though, so at least there's that.\n\n* Pipeline handlers have to enable wallclocks for a device, by passing\n  in a ClockRecovery (which they could tweak, if they don't like the\n  default configuration).\n\n* There's a near-duplicate of the final patch for the Pi 5\n  too. Looking forward to being able to submit that!!\n\nBut lots still to talk about, I'm sure - looking forward to it!\n\nThanks\nDavid\n\nDavid Plowman (5):\n  controls: Add FrameWallClock control\n  libcamera: Add ClockRecovery class to generate wallclock timestamps\n  libcamera: v4l2: Add wallclock metadata to video devices\n  pipeline: rpi: common: Add wallclock timestamp support\n  pipeline: rpi: vc4: Add wallclock timestamp support\n\n include/libcamera/framebuffer.h               |   1 +\n include/libcamera/internal/clock_recovery.h   |  72 ++++++\n include/libcamera/internal/meson.build        |   1 +\n include/libcamera/internal/v4l2_videodevice.h |   5 +\n src/libcamera/clock_recovery.cpp              | 207 ++++++++++++++++++\n src/libcamera/control_ids_core.yaml           |  14 ++\n src/libcamera/meson.build                     |   1 +\n .../pipeline/rpi/common/pipeline_base.cpp     |   2 +\n .../pipeline/rpi/common/pipeline_base.h       |   3 +\n src/libcamera/pipeline/rpi/vc4/vc4.cpp        |   4 +\n src/libcamera/v4l2_videodevice.cpp            |  36 ++-\n 11 files changed, 345 insertions(+), 1 deletion(-)\n create mode 100644 include/libcamera/internal/clock_recovery.h\n create mode 100644 src/libcamera/clock_recovery.cpp"
}