Cover Letter Detail
Show a cover letter.
GET /api/covers/24071/?format=api
{ "id": 24071, "url": "https://patchwork.libcamera.org/api/covers/24071/?format=api", "web_url": "https://patchwork.libcamera.org/cover/24071/", "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": "<20250808141315.413839-1-stefan.klug@ideasonboard.com>", "date": "2025-08-08T14:12:38", "name": "[v2,00/16] Implement WDR algorithm", "submitter": { "id": 184, "url": "https://patchwork.libcamera.org/api/people/184/?format=api", "name": "Stefan Klug", "email": "stefan.klug@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/24071/mbox/", "series": [ { "id": 5364, "url": "https://patchwork.libcamera.org/api/series/5364/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5364", "date": "2025-08-08T14:12:38", "name": "Implement WDR algorithm", "version": 2, "mbox": "https://patchwork.libcamera.org/series/5364/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/24071/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 C317DBDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 8 Aug 2025 14:13:45 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7E3146921E;\n\tFri, 8 Aug 2025 16:13:44 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 822D96084D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 8 Aug 2025 16:13:43 +0200 (CEST)", "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:3ea1:35ac:90da:a221])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 731EF185B; \n\tFri, 8 Aug 2025 16:12:53 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Yntbjr3C\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1754662373;\n\tbh=ZC/GjiRbqY0GiqLHlG66BwYm3aV5p9K2rxbnCAfaOIk=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=Yntbjr3CbsChST1T7YBnbdPoGEWhOd/mYGNqJvEnh0MXAA8uA5XSzQh3497+/L/b7\n\tzPtmwkwR5ueaofdSY+9ZLjhDx1TnAn5Z9wZg/EULjFlD29g6Fwzdpmac4JCXbYL0l+\n\t7byCjBshCFH0A3j32H6GT4+OoX1uy2D4c8oYAU30=", "From": "Stefan Klug <stefan.klug@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>", "Subject": "[PATCH v2 00/16] Implement WDR algorithm", "Date": "Fri, 8 Aug 2025 16:12:38 +0200", "Message-ID": "<20250808141315.413839-1-stefan.klug@ideasonboard.com>", "X-Mailer": "git-send-email 2.48.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": "Hi all,\n\nThis series implements a global tone mapping algorithm for rkisp1. The\ndetails of the algorithms are explained in patch 15/16, so I won't\nrepeat them here.\n\nv1 of the series was here:\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=5122\n\nCompared to v1 of the series there were quite some changes. The old\nseries contained mitigation for exposure quantization using the AWB\ngains. During my work on HDR stitching support it got clear that we need\nto use the compression curve from the companding block of the imx8mp.\nThat curve can serve as a way better gain than the AWB gains, so I added\na compression algorithm (patches 1-2) which then is used for the\nquantization correction. The quantization correction was generalized to\nsupport exposure and gain quantization effects (patches 3-9). Patch 10\nspilled over from the WDR preparation series and now has a (possibly)\nbetter commit message. The rest is the actual WDR implementation that\nwas mostly there in v1. I fixed a few bugs and included changes from\nreview (thanks Paul). The details are in the individual patches.\n\nBest regards,\nStefan\n\nStefan Klug (16):\n ipa: rkisp1: Add basic compression algorithm\n tuning: rksip1: Add a static Compress entry\n libipa: camera_sensor_helper: Add quantizeGain() function\n libipa: exposure_mode_helper: Take exposure/gain quantization into\n account\n libipa: exposure_mode_helper: Remove double calculation of\n lastStageGain\n libipa: exposure_mode_helper: Remove unnecessary clamp calls\n libipa: agc_mean_luminance: Configure the exposure mode helpers\n libipa: exposure_mode_helper: Calculate quantization gain in\n splitExposure()\n ipa: rkisp1: agc: Add correction for exposure quantization\n pipeline: rkisp1: Add error log when parameter queuing fails\n include: linux: Partially update linux headers from\n v6.16-rc1-310-gd968e50b5c26\n libcamera: Add PID controller class\n ipa: rkisp1: Switch histogram to RGB combined mode\n pipeline: rkisp1: Query kernel for available params blocks\n ipa: rkisp1: Add WDR algorithm\n tuning: rksip1: Add a static WideDynamicRange entry\n\n include/libcamera/internal/meson.build | 1 +\n include/libcamera/internal/pid_controller.h | 46 ++\n include/libcamera/ipa/rkisp1.mojom | 2 +-\n include/linux/rkisp1-config.h | 108 ++++-\n include/linux/v4l2-controls.h | 17 +-\n src/ipa/ipu3/algorithms/agc.cpp | 4 +-\n src/ipa/libipa/agc_mean_luminance.cpp | 22 +-\n src/ipa/libipa/agc_mean_luminance.h | 3 +-\n src/ipa/libipa/camera_sensor_helper.cpp | 23 +\n src/ipa/libipa/camera_sensor_helper.h | 1 +\n src/ipa/libipa/exposure_mode_helper.cpp | 103 ++--\n src/ipa/libipa/exposure_mode_helper.h | 12 +-\n src/ipa/rkisp1/algorithms/agc.cpp | 35 +-\n src/ipa/rkisp1/algorithms/compress.cpp | 100 ++++\n src/ipa/rkisp1/algorithms/compress.h | 33 ++\n src/ipa/rkisp1/algorithms/meson.build | 2 +\n src/ipa/rkisp1/algorithms/wdr.cpp | 510 ++++++++++++++++++++\n src/ipa/rkisp1/algorithms/wdr.h | 64 +++\n src/ipa/rkisp1/ipa_context.h | 23 +\n src/ipa/rkisp1/params.cpp | 1 +\n src/ipa/rkisp1/params.h | 2 +\n src/ipa/rkisp1/rkisp1.cpp | 20 +-\n src/libcamera/control_ids_debug.yaml | 7 +-\n src/libcamera/control_ids_draft.yaml | 70 +++\n src/libcamera/meson.build | 1 +\n src/libcamera/pid_controller.cpp | 172 +++++++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 38 +-\n utils/tuning/rkisp1.py | 9 +-\n 28 files changed, 1364 insertions(+), 65 deletions(-)\n create mode 100644 include/libcamera/internal/pid_controller.h\n create mode 100644 src/ipa/rkisp1/algorithms/compress.cpp\n create mode 100644 src/ipa/rkisp1/algorithms/compress.h\n create mode 100644 src/ipa/rkisp1/algorithms/wdr.cpp\n create mode 100644 src/ipa/rkisp1/algorithms/wdr.h\n create mode 100644 src/libcamera/pid_controller.cpp" }