{"id":15183,"url":"https://patchwork.libcamera.org/api/1.1/patches/15183/?format=json","web_url":"https://patchwork.libcamera.org/patch/15183/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/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":"<20211221043610.2512334-6-paul.elder@ideasonboard.com>","date":"2021-12-21T04:36:07","name":"[libcamera-devel,v3,5/8] libcamera: pipeline: rkisp1: Support the new AE controls","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"18a7943f240bb9a598f0d3d92e5b710d5cdddb28","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/1.1/people/17/?format=json","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"delegate":{"id":17,"url":"https://patchwork.libcamera.org/api/1.1/users/17/?format=json","username":"epaul","first_name":"Paul","last_name":"Elder","email":"paul.elder@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/patch/15183/mbox/","series":[{"id":2849,"url":"https://patchwork.libcamera.org/api/1.1/series/2849/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=2849","date":"2021-12-21T04:36:02","name":"The Great AE Changes","version":3,"mbox":"https://patchwork.libcamera.org/series/2849/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/15183/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/15183/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 E4131C3258\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Dec 2021 04:36:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 80B916090D;\n\tTue, 21 Dec 2021 05:36:28 +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 3A1F0608EB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Dec 2021 05:36:25 +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 493EB881;\n\tTue, 21 Dec 2021 05:36:24 +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=\"b40D8j0m\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1640061385;\n\tbh=aETxTnlwCxl/PzdYj8t+u7nf2NpC+nUu0Tskm2TU8VA=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=b40D8j0mQ5xkts4K1cJhLXCiKMrrxZyGvNW+7LdibsW3kDyixpFm+i+BWPKXdP/DF\n\t/ASY2iGLnD2zvyWFaZc8pqwuHnCBPnrsfsMi4qd+HgxWWeJOvDHgSblhRsQ0XGLR4D\n\t1AWR/lQk3XOmdkhph0udEepkRk5Jl5Hk5bP4Ihp0=","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Mon, 20 Dec 2021 22:36:07 -0600","Message-Id":"<20211221043610.2512334-6-paul.elder@ideasonboard.com>","X-Mailer":"git-send-email 2.27.0","In-Reply-To":"<20211221043610.2512334-1-paul.elder@ideasonboard.com>","References":"<20211221043610.2512334-1-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v3 5/8] libcamera: pipeline: rkisp1:\n\tSupport the new AE controls","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 support for the new AE controls in the rkisp1 pipeline handler, and\nin the IPA.\n\nBug: https://bugs.libcamera.org/show_bug.cgi?id=42\nBug: https://bugs.libcamera.org/show_bug.cgi?id=43\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\n---\nNo change in v2\n\nInitial version:\nIt seems that the rkisp1 pipeline handler doesn't properly expose its\ncontrol capabilities? And even though it exposed AeEnable with both true\nand false it didn't expose or handle AnalogueGain nor ExposureTime\neither? So I just simply replaced AeEnable with ExposureTimeMode for\nnow.\n---\n src/ipa/rkisp1/rkisp1.cpp                | 9 ++++-----\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 ++--\n 2 files changed, 6 insertions(+), 7 deletions(-)","diff":"diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex 2d79f15f..245e9940 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -60,7 +60,7 @@ private:\n \t\t\t      const rkisp1_stat_buffer *stats);\n \n \tvoid setControls(unsigned int frame);\n-\tvoid metadataReady(unsigned int frame, unsigned int aeState);\n+\tvoid metadataReady(unsigned int frame, int aeState);\n \n \tstd::map<unsigned int, FrameBuffer> buffers_;\n \tstd::map<unsigned int, MappedFrameBuffer> mappedBuffers_;\n@@ -289,7 +289,7 @@ void IPARkISP1::queueRequest(unsigned int frame, rkisp1_params_cfg *params,\n void IPARkISP1::updateStatistics(unsigned int frame,\n \t\t\t\t const rkisp1_stat_buffer *stats)\n {\n-\tunsigned int aeState = 0;\n+\tint aeState = controls::AeStateInactive;\n \n \tfor (auto const &algo : algorithms_)\n \t\talgo->process(context_, stats);\n@@ -315,12 +315,11 @@ void IPARkISP1::setControls(unsigned int frame)\n \tqueueFrameAction.emit(frame, op);\n }\n \n-void IPARkISP1::metadataReady(unsigned int frame, unsigned int aeState)\n+void IPARkISP1::metadataReady(unsigned int frame, int aeState)\n {\n \tControlList ctrls(controls::controls);\n \n-\tif (aeState)\n-\t\tctrls.set(controls::AeLocked, aeState == 2);\n+\tctrls.set(controls::AeState, aeState);\n \n \tRkISP1Action op;\n \top.op = ActionMetadata;\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 8cca8a15..659ece06 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -935,8 +935,8 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \n \tControlInfoMap::Map ctrls;\n \tctrls.emplace(std::piecewise_construct,\n-\t\t      std::forward_as_tuple(&controls::AeEnable),\n-\t\t      std::forward_as_tuple(false, true));\n+\t\t      std::forward_as_tuple(&controls::ExposureTimeMode),\n+\t\t      std::forward_as_tuple(ControlInfo(controls::AeExposureModeValues)));\n \n \tdata->controlInfo_ = ControlInfoMap(std::move(ctrls),\n \t\t\t\t\t    controls::controls);\n","prefixes":["libcamera-devel","v3","5/8"]}