Show a cover letter.

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

{
    "id": 19702,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/19702/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/19702/",
    "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": "<20240313121223.138150-1-stefan.klug@ideasonboard.com>",
    "date": "2024-03-13T12:12:11",
    "name": "[v2,00/12] Preparation for per-frame-controls and initial tests",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/19702/mbox/",
    "series": [
        {
            "id": 4221,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4221/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4221",
            "date": "2024-03-13T12:12:11",
            "name": "Preparation for per-frame-controls and initial tests",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/4221/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/19702/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 1A068BD160\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 13 Mar 2024 12:12:34 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1E2F362C8B;\n\tWed, 13 Mar 2024 13:12:33 +0100 (CET)",
            "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 6925762C80\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 13 Mar 2024 13:12:31 +0100 (CET)",
            "from jasper.fritz.box (unknown\n\t[IPv6:2a00:6020:448c:6c00:9b07:31b5:38e1:e957])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A9A57899;\n\tWed, 13 Mar 2024 13:12:08 +0100 (CET)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"FvGRMUqF\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1710331928;\n\tbh=N5CyHNkxmItYlDjvE/AGn1f2uYqPt1IQfrxSZVNB8Ew=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=FvGRMUqF2dzG4kv8G4M1wwyQaKH1doFWiqz76lJ/PtJIlVqxONMFx9evMCK6Ghnth\n\tpgDtVDaAdkc8SUsJ71Wj45KaCaig0qNjdo9OpgukGFl+JsUi32Ez83iGk9iY1rIb0I\n\tiFo1g7WgRMUeJTZlCZtnqe01a9dSFd800PgsNO3k=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Subject": "[PATCH v2 00/12] Preparation for per-frame-controls and initial\n\ttests",
        "Date": "Wed, 13 Mar 2024 13:12:11 +0100",
        "Message-Id": "<20240313121223.138150-1-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.40.1",
        "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>",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "v1->v2:\n  v1 errornously contained patch 08 two time and therefore didn't apply.\n\nHi everyone,\n\nunknowingly I stumbled into a topic that is way larger than I thought in the \nbeginning. Delayed-controls and a closely related topic per-frame-controls.\n\nI (now) know that a lot of work already went into this, noteably by \nJacopo Mondi, David Plowman and Naushir Patuck:\nhttps://patchwork.libcamera.org/cover/16458/\nhttps://github.com/raspberrypi/libcamera/tree/pfc\nThanks for that!\n\nI started off without per-frame-controls in mind (only delayed-controls)  \nand soon realized, that these two are closely related. (It's difficult to\ntest delayed-controls in a real pipeline without working per-frame-controls)\n\nTo be able to tackle the whole topic in the long run I'd like to split it into parts:\n\n1. Get a initial set of tests on mainline\nI'd like to have them as a discussion basis and a reference to test against. \nThese shouldn't be treated as mandatory for now (ideas on how to express that in \ncode are very welcome)\n- Initial lc-compliance tests for delayed-controls (and because these are system tests\n also for per-frame-controls)\n- A reworked delayed controls class that hopefully makes things easier\n- Tested on rkisp1 (details see below)\n\n2. Get an agreement on \"RaspberryPi\" mode\nIn the previous work by David and Naushir, the (in my understanding) most prominent\nrequiremnet was the ability to set a control ASAP even when multiple \nrequests are queued already (which makes complete sense IMHO). This requirement \nshall not get lost and I think there is a way to make it work.\n\n3. Get the tests to pass on rkisp1, rpi and ipu3\nI guess this will take a while and involve different parties, so let's not wait\nuntil everything works everywhere...\n\n4. Make the tests mandatory (details tbd)\n\nThis series contains part 1.\n\nOne change of thought is, that we add the ability to push requests to delayed\ncontrols for a given sequence number and to re-push for the \nsame sequence number. This has the benefit, that we don't have to decide \nearly on if we operate in strict per-frame-controls mode (sometimes called \n\"android mode\") or in \"raspberry pi\" mode.\n\n\n\nStefan Klug (12):\n  libcamera: lc-compliance: Add controls param to start() function\n  libcamera: lc-compliance: Add TimeSheet class\n  libcamera: lc-compliance: Add initial set of per-frame-control tests\n  libcamera: delayed_controls: Update unit tests to expected semantics\n  libcamera: delayed_controls: Rename class members\n  libcamera: delayed_controls: Rework delayed controls implementation\n  libcamera: delayed_controls: Add some logging\n  libcamera: delayed_controls: Add ctrls list parameter to reset()\n    function\n  pipeline: rkisp1: Move call to setSensorControls.emit()\n  pipeline: rkisp1: Add more debug logging\n  pipeline: rkisp1: Fix per-frame-controls in manual mode\n  pipeline: rkisp1: Apply initial controls\n\n include/libcamera/internal/delayed_controls.h |  20 +-\n include/libcamera/ipa/rkisp1.mojom            |   7 +-\n src/apps/lc-compliance/capture_test.cpp       |  46 +++\n src/apps/lc-compliance/meson.build            |   2 +\n src/apps/lc-compliance/per_frame_controls.cpp | 316 ++++++++++++++++++\n src/apps/lc-compliance/per_frame_controls.h   |  43 +++\n src/apps/lc-compliance/simple_capture.cpp     |   4 +-\n src/apps/lc-compliance/simple_capture.h       |   2 +-\n src/apps/lc-compliance/time_sheet.cpp         | 145 ++++++++\n src/apps/lc-compliance/time_sheet.h           |  55 +++\n src/ipa/rkisp1/algorithms/agc.cpp             |   4 +-\n src/ipa/rkisp1/rkisp1.cpp                     |  49 ++-\n src/libcamera/delayed_controls.cpp            | 235 ++++++++++---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  11 +-\n test/delayed_controls.cpp                     | 203 ++++++++---\n 15 files changed, 1021 insertions(+), 121 deletions(-)\n create mode 100644 src/apps/lc-compliance/per_frame_controls.cpp\n create mode 100644 src/apps/lc-compliance/per_frame_controls.h\n create mode 100644 src/apps/lc-compliance/time_sheet.cpp\n create mode 100644 src/apps/lc-compliance/time_sheet.h"
}