{"id":21323,"url":"https://patchwork.libcamera.org/api/patches/21323/?format=json","web_url":"https://patchwork.libcamera.org/patch/21323/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20240920183143.1674117-19-mzamazal@redhat.com>","date":"2024-09-20T18:31:43","name":"[v7,18/18] libcamera: software_isp: Update black level only on exposure changes","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"feb651b254c616944991b5e82e803ce5450723a5","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/?format=json","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/21323/mbox/","series":[{"id":4610,"url":"https://patchwork.libcamera.org/api/series/4610/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4610","date":"2024-09-20T18:31:25","name":"Software ISP refactoring","version":7,"mbox":"https://patchwork.libcamera.org/series/4610/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/21323/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/21323/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 41052C32D5\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Sep 2024 18:33:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C441263508;\n\tFri, 20 Sep 2024 20:32:59 +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 C903663508\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Sep 2024 20:32:55 +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-581-Ugj2cu68PXW3qY3bzDLiDQ-1;\n\tFri, 20 Sep 2024 14:32:51 -0400","from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (unknown\n\t[10.30.177.17])\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 1479B192DE0B; Fri, 20 Sep 2024 18:32:50 +0000 (UTC)","from nuthatch.redhat.com (unknown [10.45.224.12])\n\tby mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id C9A101956052; Fri, 20 Sep 2024 18:32:47 +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=\"TR6CQYJY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1726857174;\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=vpas/fu/XnEjRwJAP23V6yw16vesSUezxKjqCqsaYVw=;\n\tb=TR6CQYJYbJ2e+0JzNdM/Mc7WFLs33G7QPMiZvzDO0x3kG8lZ86KFRG9O00Uvp1fhERZOZZ\n\t3bj95fS36P+Foew86Z8bRWM4sUfAqcq0/v65OrNmy3jSMasxtwfBiesNGu9y0rnPiPH82e\n\tbdhsoxo6Sdt7tyEJbyo0tWNwN4MD+J4=","X-MC-Unique":"Ugj2cu68PXW3qY3bzDLiDQ-1","From":"Milan Zamazal <mzamazal@redhat.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Milan Zamazal <mzamazal@redhat.com>,\n\tUmang Jain <umang.jain@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tDaniel Scally <dan.scally@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"[PATCH v7 18/18] libcamera: software_isp: Update black level only on\n\texposure changes","Date":"Fri, 20 Sep 2024 20:31:43 +0200","Message-ID":"<20240920183143.1674117-19-mzamazal@redhat.com>","In-Reply-To":"<20240920183143.1674117-1-mzamazal@redhat.com>","References":"<20240920183143.1674117-1-mzamazal@redhat.com>","MIME-Version":"1.0","X-Scanned-By":"MIMEDefang 3.0 on 10.30.177.17","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":"The black level is likely to get updated, if ever, only after exposure\nor gain changes.  Don't compute its possible updates if exposure and\ngain are unchanged.\n\nIt's probably not worth trying to implement something more\nsophisticated.  Better to spend the effort on supporting tuning files.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/ipa/simple/algorithms/blc.cpp | 9 ++++++++-\n src/ipa/simple/algorithms/blc.h   | 4 ++++\n 2 files changed, 12 insertions(+), 1 deletion(-)","diff":"diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp\nindex 755108b0..b9f2aaa6 100644\n--- a/src/ipa/simple/algorithms/blc.cpp\n+++ b/src/ipa/simple/algorithms/blc.cpp\n@@ -30,10 +30,15 @@ int BlackLevel::configure(IPAContext &context,\n \n void BlackLevel::process(IPAContext &context,\n \t\t\t [[maybe_unused]] const uint32_t frame,\n-\t\t\t [[maybe_unused]] IPAFrameContext &frameContext,\n+\t\t\t IPAFrameContext &frameContext,\n \t\t\t const SwIspStats *stats,\n \t\t\t [[maybe_unused]] ControlList &metadata)\n {\n+\tif (frameContext.sensor.exposure == exposure_ &&\n+\t    frameContext.sensor.gain == gain_) {\n+\t\treturn;\n+\t}\n+\n \tconst SwIspStats::Histogram &histogram = stats->yHistogram;\n \n \t/*\n@@ -54,6 +59,8 @@ void BlackLevel::process(IPAContext &context,\n \t\tseen += histogram[i];\n \t\tif (seen >= pixelThreshold) {\n \t\t\tcontext.activeState.blc.level = i * histogramRatio;\n+\t\t\texposure_ = frameContext.sensor.exposure;\n+\t\t\tgain_ = frameContext.sensor.gain;\n \t\t\tLOG(IPASoftBL, Debug)\n \t\t\t\t<< \"Auto-set black level: \"\n \t\t\t\t<< i << \"/\" << SwIspStats::kYHistogramSize\ndiff --git a/src/ipa/simple/algorithms/blc.h b/src/ipa/simple/algorithms/blc.h\nindex 49bdcc61..828ad8b1 100644\n--- a/src/ipa/simple/algorithms/blc.h\n+++ b/src/ipa/simple/algorithms/blc.h\n@@ -24,6 +24,10 @@ public:\n \t\t     IPAFrameContext &frameContext,\n \t\t     const SwIspStats *stats,\n \t\t     ControlList &metadata) override;\n+\n+private:\n+\tuint32_t exposure_;\n+\tdouble gain_;\n };\n \n } /* namespace ipa::soft::algorithms */\n","prefixes":["v7","18/18"]}