Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/19740/?format=api
{ "id": 19740, "url": "https://patchwork.libcamera.org/api/1.1/covers/19740/?format=api", "web_url": "https://patchwork.libcamera.org/cover/19740/", "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": "<20240319120517.362082-1-stefan.klug@ideasonboard.com>", "date": "2024-03-19T12:05:01", "name": "[v3,00/16] 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/19740/mbox/", "series": [ { "id": 4230, "url": "https://patchwork.libcamera.org/api/1.1/series/4230/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4230", "date": "2024-03-19T12:05:01", "name": "Preparation for per-frame-controls and initial tests", "version": 3, "mbox": "https://patchwork.libcamera.org/series/4230/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/19740/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 F41AABD160\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 19 Mar 2024 12:05:30 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8669D62CAA;\n\tTue, 19 Mar 2024 13:05:29 +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 8A20562973\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 Mar 2024 13:05:27 +0100 (CET)", "from jasper.fritz.box (unknown\n\t[IPv6:2a00:6020:448c:6c00:1478:344b:8fcb:baf5])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A87AC480;\n\tTue, 19 Mar 2024 13:05:00 +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=\"MeMgt+QQ\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1710849900;\n\tbh=ybj8HVHuZT74963GJubgMqXGvoEgBMJXWhA8Whf/jgQ=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=MeMgt+QQIJYRIG+0YaGgoBPEiDrTL1VmxIvIyHA6hrSw8Dwp2hiwokKgjI506ZnPz\n\tvDeqSpllRwGubpdtDl/54sIthJLf/SKq671KvjWemt7rptAHr/HYYiynbMHJhLBeNB\n\tvaVe8eKL/ALSBOqkzPoAgwvS10BH1b2Qxd9NhNnQ=", "From": "Stefan Klug <stefan.klug@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>", "Subject": "[PATCH v3 00/16] Preparation for per-frame-controls and initial\n\ttests", "Date": "Tue, 19 Mar 2024 13:05:01 +0100", "Message-Id": "<20240319120517.362082-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>", "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.\nv2->v3:\n - Fixed compile issues found in CI\n - Fixed style issues from reviews\n - Implemented most suggestions from reviews\n - Time sheet now uses unique_ptr\n - Time sheet uses lambdas for pixel access\n - Fixed unchecked access to vector in time sheet\n - Tests are now in a proper testsuite PerFrameControlTests\n - Replaced DelayedControls::pushForFrame() with overload for push(). I left \n the existing semantics (without sequence) in place for now, so that the\n tests can run on both impementations\n - Fixed another corner case in delayed controls and added a test for that (12/16)\n - Reworked the big delayed controls patch into smaller patches that are easier\n to digest (4/16 - 12/16)\n - Cover letter mostly unchanged\n\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\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\nStefan Klug (16):\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: Make listSize unsigned\n libcamera: delayed_controls: Add controlsAreQueued() helper\n libcamera: delayed_controls: Add ctrls list parameter to reset()\n function\n libcamera: delayed_controls: Add sourceSequence property\n libcamera: delayed_controls: Add fillValues() helper\n libcamera: delayed_controls: Rework delayed controls implementation\n libcamera: delayed_controls: Ignore delayed request, if there is a\n newer one\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 | 25 +-\n include/libcamera/ipa/rkisp1.mojom | 7 +-\n src/apps/lc-compliance/meson.build | 2 +\n .../lc-compliance/per_frame_controls_test.cpp | 398 ++++++++++++++++++\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 | 148 +++++++\n src/apps/lc-compliance/time_sheet.h | 62 +++\n src/ipa/rkisp1/algorithms/agc.cpp | 4 +-\n src/ipa/rkisp1/rkisp1.cpp | 49 ++-\n src/libcamera/delayed_controls.cpp | 262 ++++++++++--\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 11 +-\n test/delayed_controls.cpp | 389 ++++++++++++++---\n 13 files changed, 1239 insertions(+), 124 deletions(-)\n create mode 100644 src/apps/lc-compliance/per_frame_controls_test.cpp\n create mode 100644 src/apps/lc-compliance/time_sheet.cpp\n create mode 100644 src/apps/lc-compliance/time_sheet.h" }