Patch Detail
Show a patch.
GET /api/patches/21672/?format=api
{ "id": 21672, "url": "https://patchwork.libcamera.org/api/patches/21672/?format=api", "web_url": "https://patchwork.libcamera.org/patch/21672/", "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": "<20241018092628.293586-3-mzamazal@redhat.com>", "date": "2024-10-18T09:26:28", "name": "[v5,2/2] libcamera: software_isp: Black level from tuning file", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "7770f24ca16964e330b2d221c5689dc1aab9e160", "submitter": { "id": 177, "url": "https://patchwork.libcamera.org/api/people/177/?format=api", "name": "Milan Zamazal", "email": "mzamazal@redhat.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/21672/mbox/", "series": [ { "id": 4716, "url": "https://patchwork.libcamera.org/api/series/4716/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4716", "date": "2024-10-18T09:26:26", "name": "Get black level from the camera helper", "version": 5, "mbox": "https://patchwork.libcamera.org/series/4716/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/21672/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/21672/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 E0B6EC32FE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 18 Oct 2024 09:26:51 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 898DA65394;\n\tFri, 18 Oct 2024 11:26:51 +0200 (CEST)", "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2E7526538B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 18 Oct 2024 11:26:47 +0200 (CEST)", "from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-617-Nxqj1d9cO4alaWpzNpHAoA-1;\n\tFri, 18 Oct 2024 05:26:44 -0400", "from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com\n\t[10.30.177.40])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 7A98E19560B1; Fri, 18 Oct 2024 09:26:43 +0000 (UTC)", "from nuthatch.redhat.com (unknown [10.45.225.61])\n\tby mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 5716E19560AD; Fri, 18 Oct 2024 09:26:41 +0000 (UTC)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"iryq7TVL\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1729243605;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=q7iwKdJQ3CFutu26USFSiI8ibjecodZa5Qooa/JcFLU=;\n\tb=iryq7TVLY6V+7ZKHNWPpCuZzyHIiAAJaZX5l7RTpl7Jtg+7nASL9wGgNcsboAk3RPMWfag\n\tYgTnaxEHbUEYbyHieZSSSisSSUI+P1Ih8D1ipjcw7v3ZixmR69G+/iHObOK5v8gguAJTvn\n\tgcHxmte2kQZTSGhBG+zJVQWe/hkKivs=", "X-MC-Unique": "Nxqj1d9cO4alaWpzNpHAoA-1", "From": "Milan Zamazal <mzamazal@redhat.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Milan Zamazal <mzamazal@redhat.com>,\n\tDaniel Scally <dan.scally@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tRobert Mader <robert.mader@collabora.com>", "Subject": "[PATCH v5 2/2] libcamera: software_isp: Black level from tuning file", "Date": "Fri, 18 Oct 2024 11:26:28 +0200", "Message-ID": "<20241018092628.293586-3-mzamazal@redhat.com>", "In-Reply-To": "<20241018092628.293586-1-mzamazal@redhat.com>", "References": "<20241018092628.293586-1-mzamazal@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.40", "X-Mimecast-Spam-Score": "0", "X-Mimecast-Originator": "redhat.com", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain; charset=\"US-ASCII\"; x-default=true", "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": "This patch allows obtaining a black level from a tuning file in addition\nto the camera sensor helper. If both of them define a black level, the\none from the tuning file takes precedence.\n\nThe use cases are:\n\n- A user wants to use a different black level, for whatever reason.\n\n- There is a sensor without known gains but with a known black level.\n Because a camera sensor helper cannot be defined without specifying\n gains, the only way to specify the black level is using the tuning\n file. Software ISP uses its fallback gain handling in such a case.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\n---\n src/ipa/simple/algorithms/blc.cpp | 9 +++++++++\n src/ipa/simple/algorithms/blc.h | 1 +\n src/ipa/simple/soft_simple.cpp | 3 ++-\n 3 files changed, 12 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp\nindex a7af2e12c..8516c4335 100644\n--- a/src/ipa/simple/algorithms/blc.cpp\n+++ b/src/ipa/simple/algorithms/blc.cpp\n@@ -21,11 +21,20 @@ BlackLevel::BlackLevel()\n {\n }\n \n+int BlackLevel::init(IPAContext &context, const YamlObject &tuningData)\n+{\n+\tauto blackLevel = tuningData[\"blackLevel\"].get<int16_t>();\n+\tif (blackLevel.has_value())\n+\t\tcontext.configuration.black.level = blackLevel.value() / 256;\n+\treturn 0;\n+}\n+\n int BlackLevel::configure(IPAContext &context,\n \t\t\t [[maybe_unused]] const IPAConfigInfo &configInfo)\n {\n \tcontext.activeState.blc.level =\n \t\tcontext.configuration.black.level.value_or(255);\n+\tLOG(IPASoftBL, Info) << \"pdm: blll: \" << context.activeState.blc.level;\n \treturn 0;\n }\n \ndiff --git a/src/ipa/simple/algorithms/blc.h b/src/ipa/simple/algorithms/blc.h\nindex 828ad8b18..2cf2a8774 100644\n--- a/src/ipa/simple/algorithms/blc.h\n+++ b/src/ipa/simple/algorithms/blc.h\n@@ -19,6 +19,7 @@ public:\n \tBlackLevel();\n \t~BlackLevel() = default;\n \n+\tint init(IPAContext &context, const YamlObject &tuningData) override;\n \tint configure(IPAContext &context, const IPAConfigInfo &configInfo) override;\n \tvoid process(IPAContext &context, const uint32_t frame,\n \t\t IPAFrameContext &frameContext,\ndiff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\nindex e96e65bd1..03525b2f2 100644\n--- a/src/ipa/simple/soft_simple.cpp\n+++ b/src/ipa/simple/soft_simple.cpp\n@@ -201,7 +201,8 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo)\n \t\t\t(context_.configuration.agc.againMax -\n \t\t\t context_.configuration.agc.againMin) /\n \t\t\t100.0;\n-\t\tif (camHelper_->blackLevel().has_value()) {\n+\t\tif (!context_.configuration.black.level.has_value() &&\n+\t\t camHelper_->blackLevel().has_value()) {\n \t\t\t/*\n \t\t\t * The black level from camHelper_ is a 16 bit value, software ISP\n \t\t\t * works with 8 bit pixel values, both regardless of the actual\n", "prefixes": [ "v5", "2/2" ] }