From patchwork Tue Oct 7 10:27:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 24565 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 AE5F3BF415 for ; Tue, 7 Oct 2025 10:28:02 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id EA6966B5F3; Tue, 7 Oct 2025 12:28:00 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="qesZ21XV"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D240B69367 for ; Tue, 7 Oct 2025 12:27:58 +0200 (CEST) Received: from neptunite.hamster-moth.ts.net (unknown [IPv6:2404:7a81:160:2100:859f:ca72:88bf:8f12]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 64DD46F3; Tue, 7 Oct 2025 12:26:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1759832785; bh=WTVavup2jVxvOB5RzBU0aQBrAjttZ9HNvsS5XWOj6LA=; h=From:To:Cc:Subject:Date:From; b=qesZ21XV9pXnB7nwwOUEWo/91fMO+xgNt/w9V349WktYJyzrMjp1dBpYj3cUWgtdF wpBs3Bb1l2GmEbhRhJ2WVHU6GfML4vvDL1ZV8ph0iloS0csDIjHn8qik9lcsdyei1g bXzGCO4SA3ZNnjRfxtCZKE5KQkW/ODCPsVOuqduc= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder Subject: [PATCH v2 0/2] Fix ControlSerializer deserializing array controls Date: Tue, 7 Oct 2025 19:27:42 +0900 Message-ID: <20251007102747.2746478-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.47.2 MIME-Version: 1.0 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" This series fixes bug 285 [0] where running IPAs in isolation with array controls would cause the control deserialization to fail, since the deserializer didn't properly deserialize array controls. This is fixed by making the deserializer properly deserialize array controls. As a side effect, array controls that didn't report default array values must now report default array values, so the second patch does that. In v2 the arrayness and size are stored in the serialized form of ControlValue instead of using the information registered in the ControlId. This allows us to support variable-length arrays (which v1 didn't), and allows us to support both non-array and array types min/max ControlValues in the ControlInfo, depending on which type of min/max value makes more sense for the specific control. [0] https://bugs.libcamera.org/show_bug.cgi?id=285 Paul Elder (2): libcamera: control_serializer: Add array info to serialized ControlValue ipa: ipu3, mali-c55, rkisp1, rpi: Fix reporting non-scalar controls .../libcamera/internal/control_serializer.h | 8 +++-- src/ipa/ipu3/ipu3.cpp | 4 ++- src/ipa/mali-c55/mali-c55.cpp | 5 +++- src/ipa/rkisp1/algorithms/awb.cpp | 5 +++- src/ipa/rkisp1/rkisp1.cpp | 4 ++- src/ipa/rpi/common/ipa_base.cpp | 7 ++++- src/libcamera/control_serializer.cpp | 30 ++++++++++++++----- 7 files changed, 49 insertions(+), 14 deletions(-)