From patchwork Wed Oct 13 15:41:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Michel Hautbois X-Patchwork-Id: 14117 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 3BB07BDC71 for ; Wed, 13 Oct 2021 15:41:37 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 4F01B68F60; Wed, 13 Oct 2021 17:41:33 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ikM4g0fU"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 8453D60501 for ; Wed, 13 Oct 2021 17:41:31 +0200 (CEST) Received: from tatooine.ideasonboard.com (unknown [IPv6:2a01:e0a:169:7140:3857:aa01:4281:bd9f]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 56DCF8F0; Wed, 13 Oct 2021 17:41:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1634139690; bh=RkUG5/VD7L3wgNYJw+t/xGYSpWirua81cXQvOlilUIU=; h=From:To:Cc:Subject:Date:From; b=ikM4g0fUo8FD6eqSMXlqoKIWC9MSGxTA52zUv5WAHLECiSlARP3+cipihjnDQ7Re+ E5j2fWu1GOMPwFSrBVZRH7gbdKOzybhhYBszk+1+9y317Mf3tgXJQIhSI9kcN2dYDu r/n5NVeNTBWM5cj+bpHN9NNRYs+jETO6yf1NRDpQ= From: Jean-Michel Hautbois To: libcamera-devel@lists.libcamera.org Date: Wed, 13 Oct 2021 17:41:12 +0200 Message-Id: <20211013154125.133419-1-jeanmichel.hautbois@ideasonboard.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 00/13] ipa: ipu3: Fix AGC bugs 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Hello, I did not know how to title this series, so I have decided to make it appealing somehow :-). There are multiple things here. First, we want to use the saturation ratio included in the AWB statistics. To make it relevant, we need to set a threshold to decide what is a saturated cell (patch 1/13) and use this ratio to avoid including too much saturated cells in the Grey World computation (3/13). While debugging it, it appeared we are not setting the frameContext variables before IPAIPU3::start() is called, while we are setting controls in it which use the frameContext (2/13). We have a small patch 4/13 which is here to lower the limit under which we are not calculating the red and blue gains for white balance. Then, from patch 5/13 to 13/13 it is multiple fixes like renaming variables, changing the way the exposure and gains are calculated, etc. All of those should make the algorithm easier to follow, and the documentation should be added on top of that, in the coming shortly v2 of "Document IPU3 IPA". Jean-Michel Hautbois (13): ipa: ipu3: awb: Set a threshold for the green saturation ipa: ipu3: set frameContext before controls ipa: ipu3: awb: Use saturation under 90% ipa: ipu3: awb: Change minimal green threshold value ipa: ipu3: agc: Rename exposure values properly ipa: ipu3: agc: Change exposure limits ipa: ipu3: agc: Change analogue gain limits ipa: ipu3: agc: Simplify division of exposure/gain ipa: ipu3: agc: Rename gains properly ipa: ipu3: agc: Introduce previous exposure value ipa: ipu3: agc: Remove condition on exposure correction ipa: ipu3: agc: Increase IIR filter speed ipa: ipu3: agc: Remove unused variables src/ipa/ipu3/algorithms/agc.cpp | 133 +++++++++++++++++--------------- src/ipa/ipu3/algorithms/agc.h | 8 +- src/ipa/ipu3/algorithms/awb.cpp | 9 ++- src/ipa/ipu3/ipu3.cpp | 3 + 4 files changed, 81 insertions(+), 72 deletions(-)