From patchwork Thu Feb 2 11:12:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthias Fend X-Patchwork-Id: 18236 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id D426DC329F for ; Thu, 2 Feb 2023 11:13:09 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 03FBA62600; Thu, 2 Feb 2023 12:13:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1675336389; bh=BVKpqVC9xGR6xzI0O91hmWTtwDzCtMT6oCu/Y2MVGbg=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=pqRxk6UlZfTvfe6pY3vpOG0wpZu1Ll5pNzoOrkLTLX+TK/iZNjMbOJoufSGoTZ/fF dGwKh/AdfB8S65Ghh1E4VD6fzY/aSx4NAU1bzZI8crhKy8Qj5563tfYhS76BYkX7qZ TcfvG0u9NsRpxrk50B+uEhDq3S5peaF6wosC1zhMK2+Z60kl518ZUoHbCvSahss6rJ FtIorn2zD7HxbgCXfdNQ1/b92t2osyW9SVqWTjV0vuPjwCj+uZ3Qhxtk7DIBQkE1Q9 lo8g6SWXLtEQ8bSduJwaRDDZ1q7W+8mvmD/F+5xjE91EsQBLpkE8/D2ciDwho72VJl FVDj2UOt2jM5w== Received: from lx20.hoststar.hosting (lx20.hoststar.hosting [168.119.41.54]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A6482603BF for ; Thu, 2 Feb 2023 12:13:05 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=emfend.at header.i=@emfend.at header.b="nWK1meAj"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=emfend.at; s=mail; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=9GZ+zWhGJaBVEBa+rOxQbXfMFUX89kReqVqYSHT0yE8=; b=nWK1meAj+WK8o8I7PZnoGlJ+rp qBBNlfqwqdS0NvIg8l2mvK9MgooH9hy1ulqVRi5+CvalPUNjqU7x0e6dHR8lprcLb22BW715zAQfc CWpz5v4tGbFnVvNUrfpqKeY7w1Fth2GTqYqoWx/uWdMS8oeFIFo3JPcEkR2VGqISCjGQ=; Received: from 194-208-208-245.tele.net ([194.208.208.245]:51050 helo=localhost.localdomain) by lx20.hoststar.hosting with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93) (envelope-from ) id 1pNXWa-008Uhs-Li; Thu, 02 Feb 2023 12:13:05 +0100 To: libcamera-devel@lists.libcamera.org Date: Thu, 2 Feb 2023 12:12:52 +0100 Message-Id: <20230202111252.3366729-8-matthias.fend@emfend.at> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230202111252.3366729-1-matthias.fend@emfend.at> References: <20230202111252.3366729-1-matthias.fend@emfend.at> MIME-Version: 1.0 X-Spam-Score: -1.0 X-Spam-Bar: - X-Spam-Report: Spam detection software, running on the system "lx20.hoststar.hosting", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This method reads all v4l2 controls marked as volatile from the underlying v4l2 subdevice. Signed-off-by: Matthias Fend --- include/libcamera/internal/camera_lens.h | 1 + src/libcamera/camera_lens.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) Content analysis details: (-1.0 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP 0.0 TVD_RCVD_IP Message was received from an IP address 0.0 KAM_DMARC_STATUS Test Rule for DKIM or SPF Failure with Strict Alignment Subject: [libcamera-devel] [RFC PATCH 7/7] ipa: rkisp1: pass volatile lens controls to IPA X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Matthias Fend via libcamera-devel From: Matthias Fend Reply-To: Matthias Fend Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" All v4l2 controls that may change by themselves (volatile) are passed to the IPA. An example for this can be the current actual position of the focus lens, which is needed for an autofocus algorithm. Signed-off-by: Matthias Fend --- include/libcamera/ipa/rkisp1.mojom | 3 ++- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom index d33e93df..9ede5fde 100644 --- a/include/libcamera/ipa/rkisp1.mojom +++ b/include/libcamera/ipa/rkisp1.mojom @@ -33,7 +33,8 @@ interface IPARkISP1Interface { [async] queueRequest(uint32 frame, libcamera.ControlList reqControls); [async] fillParamsBuffer(uint32 frame, uint32 bufferId); [async] processStatsBuffer(uint32 frame, uint32 bufferId, - libcamera.ControlList sensorControls); + libcamera.ControlList sensorControls, + libcamera.ControlList lensControls); }; interface IPARkISP1EventInterface { diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index e4f328cb..6073e5fa 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -1275,9 +1275,10 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer) metadata.timestamp); if (isRaw_) { + const ControlList lensCtrls; const ControlList &ctrls = data->delayedCtrls_->get(metadata.sequence); - data->ipa_->processStatsBuffer(info->frame, 0, ctrls); + data->ipa_->processStatsBuffer(info->frame, 0, ctrls, lensCtrls); } } else { if (isRaw_) @@ -1319,8 +1320,15 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer) if (data->frame_ <= buffer->metadata().sequence) data->frame_ = buffer->metadata().sequence + 1; + ControlInfoMap emptyInfoMap; + ControlList lensControls = ControlList(emptyInfoMap); + CameraLens *lens = data->sensor_->focusLens(); + if (lens) + lensControls.merge(lens->getVolatileControls()); + data->ipa_->processStatsBuffer(info->frame, info->statBuffer->cookie(), - data->delayedCtrls_->get(buffer->metadata().sequence)); + data->delayedCtrls_->get(buffer->metadata().sequence), + lensControls); } REGISTER_PIPELINE_HANDLER(PipelineHandlerRkISP1)