[{"id":34867,"web_url":"https://patchwork.libcamera.org/comment/34867/","msgid":"<277f5404-886c-4591-a172-59b9355529a9@ideasonboard.com>","date":"2025-07-11T15:37:05","subject":"Re: [PATCH v2 8/8] camera, ipa: all: Remove AeEnable handling","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2025. 07. 03. 13:42 keltezéssel, Paul Elder írta:\n> Remove AeEnable handling from the Camera and all IPAs, as it is now\n> handled by the inject_controls layer.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> \n> ---\n> The mali-c55 IPA needs to support AnalogueGainMode and ExposureTimeMode,\n> but that is out of scope for this series.\n\nThat is https://bugs.libcamera.org/show_bug.cgi?id=262\n\nRegards,\nBarnabás Pőcze\n\n\n> \n> No change in v2\n> ---\n>   src/ipa/mali-c55/algorithms/agc.cpp          |  1 +\n>   src/ipa/rkisp1/algorithms/agc.cpp            |  2 --\n>   src/ipa/rpi/common/ipa_base.cpp              |  2 --\n>   src/libcamera/camera.cpp                     | 19 -------------------\n>   src/libcamera/pipeline/uvcvideo/uvcvideo.cpp |  5 -----\n>   5 files changed, 1 insertion(+), 28 deletions(-)\n> \n> diff --git a/src/ipa/mali-c55/algorithms/agc.cpp b/src/ipa/mali-c55/algorithms/agc.cpp\n> index 70667db34f1e..818cea35afa9 100644\n> --- a/src/ipa/mali-c55/algorithms/agc.cpp\n> +++ b/src/ipa/mali-c55/algorithms/agc.cpp\n> @@ -137,6 +137,7 @@ int Agc::init(IPAContext &context, const YamlObject &tuningData)\n>   \tif (ret)\n>   \t\treturn ret;\n>   \n> +\t/* \\todo Support AnalogueGainMode and ExposureTimeMode */\n>   \tcontext.ctrlMap[&controls::AeEnable] = ControlInfo(false, true);\n>   \tcontext.ctrlMap[&controls::DigitalGain] = ControlInfo(\n>   \t\tstatic_cast<float>(kMinDigitalGain),\n> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp\n> index 137a0750017b..8a890d387efb 100644\n> --- a/src/ipa/rkisp1/algorithms/agc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/agc.cpp\n> @@ -155,8 +155,6 @@ int Agc::init(IPAContext &context, const YamlObject &tuningData)\n>   \t\tControlInfo({ { ControlValue(controls::AnalogueGainModeAuto),\n>   \t\t\t\tControlValue(controls::AnalogueGainModeManual) } },\n>   \t\t\t    ControlValue(controls::AnalogueGainModeAuto));\n> -\t/* \\todo Move this to the Camera class */\n> -\tcontext.ctrlMap[&controls::AeEnable] = ControlInfo(false, true, true);\n>   \tcontext.ctrlMap.merge(controls());\n>   \n>   \treturn 0;\n> diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp\n> index 6565f5366312..059b1bd5942e 100644\n> --- a/src/ipa/rpi/common/ipa_base.cpp\n> +++ b/src/ipa/rpi/common/ipa_base.cpp\n> @@ -55,8 +55,6 @@ constexpr Duration controllerMinFrameDuration = 1.0s / 30.0;\n>   \n>   /* List of controls handled by the Raspberry Pi IPA */\n>   const ControlInfoMap::Map ipaControls{\n> -\t/* \\todo Move this to the Camera class */\n> -\t{ &controls::AeEnable, ControlInfo(false, true, true) },\n>   \t{ &controls::ExposureTimeMode,\n>   \t  ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto),\n>   \t\t\t  ControlValue(controls::ExposureTimeModeManual) } },\n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index 665fc5157349..3d0782a9eed2 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -1374,25 +1374,6 @@ int Camera::queueRequest(Request *request)\n>   \t\t}\n>   \t}\n>   \n> -\t/* Pre-process AeEnable. */\n> -\tControlList &controls = request->controls();\n> -\tconst auto &aeEnable = controls.get(controls::AeEnable);\n> -\tif (aeEnable) {\n> -\t\tif (_d()->controlInfo_.count(controls::AnalogueGainMode.id()) &&\n> -\t\t    !controls.contains(controls::AnalogueGainMode.id())) {\n> -\t\t\tcontrols.set(controls::AnalogueGainMode,\n> -\t\t\t\t     *aeEnable ? controls::AnalogueGainModeAuto\n> -\t\t\t\t\t       : controls::AnalogueGainModeManual);\n> -\t\t}\n> -\n> -\t\tif (_d()->controlInfo_.count(controls::ExposureTimeMode.id()) &&\n> -\t\t    !controls.contains(controls::ExposureTimeMode.id())) {\n> -\t\t\tcontrols.set(controls::ExposureTimeMode,\n> -\t\t\t\t     *aeEnable ? controls::ExposureTimeModeAuto\n> -\t\t\t\t\t       : controls::ExposureTimeModeManual);\n> -\t\t}\n> -\t}\n> -\n>   \tLayerManager *layerManager = d->pipe()->cameraManager()->_d()->layerManager();\n>   \tlayerManager->queueRequest(this, request);\n>   \n> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> index 4b5816dfdde0..ab12d5b5ae9a 100644\n> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> @@ -607,11 +607,6 @@ int UVCCameraData::init(MediaDevice *media)\n>   \t\taddControl(cid, info, &ctrls);\n>   \t}\n>   \n> -\tif (autoExposureMode_ && manualExposureMode_) {\n> -\t\t/* \\todo Move this to the Camera class */\n> -\t\tctrls[&controls::AeEnable] = ControlInfo(false, true, true);\n> -\t}\n> -\n>   \tcontrolInfo_ = ControlInfoMap(std::move(ctrls), controls::controls);\n>   \n>   \t/*","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 6E10ABE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Jul 2025 15:37:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AB58C68F19;\n\tFri, 11 Jul 2025 17:37:12 +0200 (CEST)","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 8055068E30\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Jul 2025 17:37:10 +0200 (CEST)","from [192.168.33.21] (185.221.140.39.nat.pool.zt.hu\n\t[185.221.140.39])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BD7BCD77;\n\tFri, 11 Jul 2025 17:36:39 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"tYs1tVq8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1752248200;\n\tbh=oEpMCwNCuoeEPcEjciF941SwnBhrGWttTehRdfQP4r4=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=tYs1tVq80nTeSj54Mzv66sGzBZNz6SX41bpHOFfk7aeMSovbck+GFrC+GdW3WyFTH\n\t1blNfBT4mWxW8kvpDArdo0KjJGCAnz9P1JU1TiJoPGSkMinpC7pzBTdUftXF9OhXZg\n\tfPw7R/4e6CO+rBKq7hz2ZvI/vHHio69L58UnHAJg=","Message-ID":"<277f5404-886c-4591-a172-59b9355529a9@ideasonboard.com>","Date":"Fri, 11 Jul 2025 17:37:05 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 8/8] camera, ipa: all: Remove AeEnable handling","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org,\n\tDaniel Scally <dan.scally@ideasonboard.com>","Cc":"kieran.bingham@ideasonboard.com","References":"<20250703114225.2074071-1-paul.elder@ideasonboard.com>\n\t<20250703114225.2074071-9-paul.elder@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20250703114225.2074071-9-paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>"}}]