Patch Detail
Show a patch.
GET /api/patches/15196/?format=api
{ "id": 15196, "url": "https://patchwork.libcamera.org/api/patches/15196/?format=api", "web_url": "https://patchwork.libcamera.org/patch/15196/", "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": "<20211221052117.2665228-3-paul.elder@ideasonboard.com>", "date": "2021-12-21T05:21:15", "name": "[libcamera-devel,2/3] camera_sensor_properties: Add blackLevels", "commit_ref": null, "pull_url": null, "state": "not-applicable", "archived": false, "hash": "4df479bff03a8d546efbe1d3d83f01f29cee2427", "submitter": { "id": 17, "url": "https://patchwork.libcamera.org/api/people/17/?format=api", "name": "Paul Elder", "email": "paul.elder@ideasonboard.com" }, "delegate": { "id": 17, "url": "https://patchwork.libcamera.org/api/users/17/?format=api", "username": "epaul", "first_name": "Paul", "last_name": "Elder", "email": "paul.elder@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/patch/15196/mbox/", "series": [ { "id": 2854, "url": "https://patchwork.libcamera.org/api/series/2854/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2854", "date": "2021-12-21T05:21:13", "name": "android: Plumb static black levels", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2854/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/15196/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/15196/checks/", "tags": {}, "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 074B7C3258\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Dec 2021 05:21:42 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6AF3360900;\n\tTue, 21 Dec 2021 06:21:41 +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 DBADC608E9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Dec 2021 06:21:38 +0100 (CET)", "from pyrite.mediacom.info (unknown\n\t[IPv6:2604:2d80:ad90:fb00:96fd:8874:873:6c16])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E46A6FD2;\n\tTue, 21 Dec 2021 06:21:37 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Sx4qrh7N\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1640064098;\n\tbh=lvzxjxk8Y7gghV6xWsurAK6br6ca/jZZX4EQ/+9ClTo=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Sx4qrh7N+TQ4I/mlgcmkF8NOMSfCU57MeFCgK/GCuowZfilnlItjBFkKfVDaq02RW\n\tsC7WBVLVUOBnb2yPRaxfG8AiEVQeK2IZ6MtEtCibxG/6n4s9q3AulLGkKilxbbdXXy\n\tEP61pMPF2I2YM0p+D39l03ObMbmLaKgyUSuarOYo=", "From": "Paul Elder <paul.elder@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Mon, 20 Dec 2021 23:21:15 -0600", "Message-Id": "<20211221052117.2665228-3-paul.elder@ideasonboard.com>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20211221052117.2665228-1-paul.elder@ideasonboard.com>", "References": "<20211221052117.2665228-1-paul.elder@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 2/3] camera_sensor_properties: Add\n\tblackLevels", "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": "Add an entry to the sensor database for the static black levels. As\nthese are approximate static values for the black levels, they can\nreasonably be tied to the sensor model. Thus add it to the sensor\ndatabase.\n\nBug: https://bugs.libcamera.org/show_bug.cgi?id=48\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n .../libcamera/internal/camera_sensor_properties.h | 2 ++\n src/libcamera/camera_sensor.cpp | 1 +\n src/libcamera/camera_sensor_properties.cpp | 13 +++++++++++++\n 3 files changed, 16 insertions(+)", "diff": "diff --git a/include/libcamera/internal/camera_sensor_properties.h b/include/libcamera/internal/camera_sensor_properties.h\nindex 1ee3cb99..91826e2d 100644\n--- a/include/libcamera/internal/camera_sensor_properties.h\n+++ b/include/libcamera/internal/camera_sensor_properties.h\n@@ -7,6 +7,7 @@\n \n #pragma once\n \n+#include <array>\n #include <map>\n #include <string>\n \n@@ -20,6 +21,7 @@ struct CameraSensorProperties {\n \n \tSize unitCellSize;\n \tstd::map<controls::draft::TestPatternModeEnum, int32_t> testPatternModes;\n+\tstd::array<int32_t, 4> blackLevels;\n };\n \n } /* namespace libcamera */\ndiff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\nindex c3999d35..f9dd00bb 100644\n--- a/src/libcamera/camera_sensor.cpp\n+++ b/src/libcamera/camera_sensor.cpp\n@@ -306,6 +306,7 @@ void CameraSensor::initStaticProperties()\n \n \t/* Register the properties retrieved from the sensor database. */\n \tproperties_.set(properties::UnitCellSize, staticProps_->unitCellSize);\n+\tproperties_.set(properties::SensorFixedBlackLevels, staticProps_->blackLevels);\n \n \tinitTestPatternModes();\n }\ndiff --git a/src/libcamera/camera_sensor_properties.cpp b/src/libcamera/camera_sensor_properties.cpp\nindex 48305ac4..d4485f45 100644\n--- a/src/libcamera/camera_sensor_properties.cpp\n+++ b/src/libcamera/camera_sensor_properties.cpp\n@@ -41,6 +41,11 @@ LOG_DEFINE_CATEGORY(CameraSensorProperties)\n * \\brief Map that associates the TestPattern control value with the indexes of\n * the corresponding sensor test pattern modes as returned by\n * V4L2_CID_TEST_PATTERN.\n+ *\n+ * \\var CameraSensorProperties::blackLevels\n+ * \\brief Fixed black level offset for each of the four color filter\n+ * arrangement (CFA) mosaic channels, specified in the same order as the order\n+ * of color filters.\n */\n \n /**\n@@ -69,6 +74,7 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t * 9: \"Resolution Pattern\"\n \t\t\t\t */\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"imx219\", {\n \t\t\t.unitCellSize = { 1120, 1120 },\n@@ -79,6 +85,7 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t{ controls::draft::TestPatternModeColorBarsFadeToGray, 3 },\n \t\t\t\t{ controls::draft::TestPatternModePn9, 4 },\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"imx258\", {\n \t\t\t.unitCellSize = { 1120, 1120 },\n@@ -89,10 +96,12 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t{ controls::draft::TestPatternModeColorBarsFadeToGray, 3 },\n \t\t\t\t{ controls::draft::TestPatternModePn9, 4 },\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"ov5647\", {\n \t\t\t.unitCellSize = { 1400, 1400 },\n \t\t\t.testPatternModes = {},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"ov5670\", {\n \t\t\t.unitCellSize = { 1120, 1120 },\n@@ -100,6 +109,7 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t{ controls::draft::TestPatternModeOff, 0 },\n \t\t\t\t{ controls::draft::TestPatternModeColorBars, 1 },\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"ov5693\", {\n \t\t\t.unitCellSize = { 1400, 1400 },\n@@ -112,6 +122,7 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t * Rolling Bar\".\n \t\t\t\t */\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"ov8865\", {\n \t\t\t.unitCellSize = { 1400, 1400 },\n@@ -126,6 +137,7 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t * 5: \"Color squares with rolling bar\"\n \t\t\t\t */\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t\t{ \"ov13858\", {\n \t\t\t.unitCellSize = { 1120, 1120 },\n@@ -133,6 +145,7 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen\n \t\t\t\t{ controls::draft::TestPatternModeOff, 0 },\n \t\t\t\t{ controls::draft::TestPatternModeColorBars, 1 },\n \t\t\t},\n+\t\t\t.blackLevels = {},\n \t\t} },\n \t};\n \n", "prefixes": [ "libcamera-devel", "2/3" ] }