{"id":24565,"url":"https://patchwork.libcamera.org/api/covers/24565/?format=json","web_url":"https://patchwork.libcamera.org/cover/24565/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20251007102747.2746478-1-paul.elder@ideasonboard.com>","date":"2025-10-07T10:27:42","name":"[v2,0/2] Fix ControlSerializer deserializing array controls","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/?format=json","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/24565/mbox/","series":[{"id":5479,"url":"https://patchwork.libcamera.org/api/series/5479/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5479","date":"2025-10-07T10:27:42","name":"Fix ControlSerializer deserializing array controls","version":2,"mbox":"https://patchwork.libcamera.org/series/5479/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/24565/comments/","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 AE5F3BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Oct 2025 10:28:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EA6966B5F3;\n\tTue,  7 Oct 2025 12:28:00 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D240B69367\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Oct 2025 12:27:58 +0200 (CEST)","from neptunite.hamster-moth.ts.net (unknown\n\t[IPv6:2404:7a81:160:2100:859f:ca72:88bf:8f12])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 64DD46F3;\n\tTue,  7 Oct 2025 12:26:24 +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=\"qesZ21XV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1759832785;\n\tbh=WTVavup2jVxvOB5RzBU0aQBrAjttZ9HNvsS5XWOj6LA=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=qesZ21XV9pXnB7nwwOUEWo/91fMO+xgNt/w9V349WktYJyzrMjp1dBpYj3cUWgtdF\n\twpBs3Bb1l2GmEbhRhJ2WVHU6GfML4vvDL1ZV8ph0iloS0csDIjHn8qik9lcsdyei1g\n\tbXzGCO4SA3ZNnjRfxtCZKE5KQkW/ODCPsVOuqduc=","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Paul Elder <paul.elder@ideasonboard.com>","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","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>"},"content":"This series fixes bug 285 [0] where running IPAs in isolation with array\ncontrols would cause the control deserialization to fail, since the\ndeserializer didn't properly deserialize array controls.\n\nThis is fixed by making the deserializer properly deserialize array\ncontrols. As a side effect, array controls that didn't report default\narray values must now report default array values, so the second patch\ndoes that.\n\nIn v2 the arrayness and size are stored in the serialized form of\nControlValue instead of using the information registered in the\nControlId. This allows us to support variable-length arrays (which v1\ndidn't), and allows us to support both non-array and array types min/max\nControlValues in the ControlInfo, depending on which type of min/max\nvalue makes more sense for the specific control.\n\n[0] https://bugs.libcamera.org/show_bug.cgi?id=285\n\nPaul Elder (2):\n  libcamera: control_serializer: Add array info to serialized\n    ControlValue\n  ipa: ipu3, mali-c55, rkisp1, rpi: Fix reporting non-scalar controls\n\n .../libcamera/internal/control_serializer.h   |  8 +++--\n src/ipa/ipu3/ipu3.cpp                         |  4 ++-\n src/ipa/mali-c55/mali-c55.cpp                 |  5 +++-\n src/ipa/rkisp1/algorithms/awb.cpp             |  5 +++-\n src/ipa/rkisp1/rkisp1.cpp                     |  4 ++-\n src/ipa/rpi/common/ipa_base.cpp               |  7 ++++-\n src/libcamera/control_serializer.cpp          | 30 ++++++++++++++-----\n 7 files changed, 49 insertions(+), 14 deletions(-)"}