[{"id":34979,"web_url":"https://patchwork.libcamera.org/comment/34979/","msgid":"<df8f3f2392a666289ece853ffe716185122b9188.camel@ideasonboard.com>","date":"2025-07-21T17:45:55","subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","submitter":{"id":215,"url":"https://patchwork.libcamera.org/api/people/215/","name":"Isaac Scott","email":"isaac.scott@ideasonboard.com"},"content":"Hi Barnabás,\n\nThank you for the patch!\n\nOn Mon, 2025-07-21 at 13:50 +0200, Barnabás Pőcze wrote:\n> Accept empty `ControlList`s without an info map. Serialization\n> supports `ControlList`s without an associated `ControlInfoMap`\n> object. However, for deserialization, a \"v4l2\" control list\n> without an info map resulted in a fatal error.\n> \n> After 30114cadd8cb65 (\"ipa: rpi: Defer initialising AF LensPosition\n> ControlInfo and value\")\n> the `lensControls` member of `ipa::RPi::ConfigResult` is left empty\n> and without an info map in every case, not just when a lens is not\n> present.\n> This causes the above assertion to trigger every single time.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n>  src/libcamera/control_serializer.cpp | 7 +++++--\n>  1 file changed, 5 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/control_serializer.cpp\n> b/src/libcamera/control_serializer.cpp\n> index 17834648c..1534fc5c8 100644\n> --- a/src/libcamera/control_serializer.cpp\n> +++ b/src/libcamera/control_serializer.cpp\n> @@ -601,8 +601,11 @@ ControlList\n> ControlSerializer::deserialize<ControlList>(ByteStreamBuffer &buffer\n>  \n>  \t\tcase IPA_CONTROL_ID_MAP_V4L2:\n>  \t\tdefault:\n> -\t\t\tLOG(Serializer, Fatal)\n> -\t\t\t\t<< \"A list of V4L2 controls requires\n> an ControlInfoMap\";\n> +\t\t\tif (hdr->entries > 0) {\n> +\t\t\t\tLOG(Serializer, Fatal)\n> +\t\t\t\t\t<< \"A list of V4L2 controls\n> requires an ControlInfoMap\";\n> +\t\t\t}\n> +\n\nReviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>\n\n>  \t\t\treturn {};\n>  \t\t}\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 BEFA7C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Jul 2025 17:46:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D4F0F68FF6;\n\tMon, 21 Jul 2025 19:46:00 +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 7A89368FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jul 2025 19:45:59 +0200 (CEST)","from isaac-ThinkPad-T16-Gen-2.localdomain\n\t(cpc90716-aztw32-2-0-cust408.18-1.cable.virginm.net [86.26.101.153])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 457607939;\n\tMon, 21 Jul 2025 19:45:22 +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=\"Eg/4f8EO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753119922;\n\tbh=bHUEa7J0zUuvxLMOj3fo65Nu/iPpq9i/pyikatk4yPY=;\n\th=Subject:From:To:Date:In-Reply-To:References:From;\n\tb=Eg/4f8EOtQibal9N1k9aarA2zg953LMhCJor6IQnLiAob4aBhXdhrakAeq7pwu6mD\n\tUh9MtMX0hA/urCaiYCn25iXKE4/t0lXle81d76SwPe1OgP2gdTCB4URZeM38QgIfzd\n\tGaQ5KF6DhDlCvGb/mE6xxqvGuBrjnbKskk3dq9Pk=","Message-ID":"<df8f3f2392a666289ece853ffe716185122b9188.camel@ideasonboard.com>","Subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","From":"Isaac Scott <isaac.scott@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 21 Jul 2025 18:45:55 +0100","In-Reply-To":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>","References":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.56.2 (by Flathub.org) ","MIME-Version":"1.0","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>"}},{"id":34994,"web_url":"https://patchwork.libcamera.org/comment/34994/","msgid":"<175312494120.50296.18085078835905724656@ping.linuxembedded.co.uk>","date":"2025-07-21T19:09:01","subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2025-07-21 12:50:29)\n> Accept empty `ControlList`s without an info map. Serialization\n> supports `ControlList`s without an associated `ControlInfoMap`\n> object. However, for deserialization, a \"v4l2\" control list\n> without an info map resulted in a fatal error.\n> \n> After 30114cadd8cb65 (\"ipa: rpi: Defer initialising AF LensPosition ControlInfo and value\")\n> the `lensControls` member of `ipa::RPi::ConfigResult` is left empty\n> and without an info map in every case, not just when a lens is not present.\n> This causes the above assertion to trigger every single time.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n>  src/libcamera/control_serializer.cpp | 7 +++++--\n>  1 file changed, 5 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp\n> index 17834648c..1534fc5c8 100644\n> --- a/src/libcamera/control_serializer.cpp\n> +++ b/src/libcamera/control_serializer.cpp\n> @@ -601,8 +601,11 @@ ControlList ControlSerializer::deserialize<ControlList>(ByteStreamBuffer &buffer\n>  \n>                 case IPA_CONTROL_ID_MAP_V4L2:\n>                 default:\n> -                       LOG(Serializer, Fatal)\n> -                               << \"A list of V4L2 controls requires an ControlInfoMap\";\n> +                       if (hdr->entries > 0) {\n> +                               LOG(Serializer, Fatal)\n> +                                       << \"A list of V4L2 controls requires an ControlInfoMap\";\n> +                       }\n> +\n\nI think this sounds ok ... I have nothing to argue against it ...\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n>                         return {};\n>                 }\n>         }\n> -- \n> 2.50.1\n>","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 029B0C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Jul 2025 19:09:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AB09C6900E;\n\tMon, 21 Jul 2025 21:09:05 +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 1A57668FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jul 2025 21:09:04 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0E8137950;\n\tMon, 21 Jul 2025 21:08:27 +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=\"GsZItJ/v\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753124907;\n\tbh=6FWTkaBHmayzvVzygmJ4VjffNBixZL1wnRV2Qk6F1is=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=GsZItJ/vvMRq62it675IflYOIh8Spa6m97w+AIJSwbaEUZdOMMmWfVqTPszorW5qe\n\tZyRiu4ynaSxZw/bbfOrhrs3DsURw+dRYpT0osUgF5vKiQi4kkyhxPXkyRQFR4q91nt\n\tlAihmggMdldTuibBfxo8+VyDthpER7BeDqlPLyhU=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>","References":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>","Subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 21 Jul 2025 20:09:01 +0100","Message-ID":"<175312494120.50296.18085078835905724656@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>"}},{"id":35069,"web_url":"https://patchwork.libcamera.org/comment/35069/","msgid":"<175334039025.774292.6113529176381280519@neptunite.rasen.tech>","date":"2025-07-24T06:59:50","subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2025-07-21 20:50:29)\n> Accept empty `ControlList`s without an info map. Serialization\n> supports `ControlList`s without an associated `ControlInfoMap`\n> object. However, for deserialization, a \"v4l2\" control list\n> without an info map resulted in a fatal error.\n> \n> After 30114cadd8cb65 (\"ipa: rpi: Defer initialising AF LensPosition ControlInfo and value\")\n> the `lensControls` member of `ipa::RPi::ConfigResult` is left empty\n> and without an info map in every case, not just when a lens is not present.\n> This causes the above assertion to trigger every single time.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  src/libcamera/control_serializer.cpp | 7 +++++--\n>  1 file changed, 5 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp\n> index 17834648c..1534fc5c8 100644\n> --- a/src/libcamera/control_serializer.cpp\n> +++ b/src/libcamera/control_serializer.cpp\n> @@ -601,8 +601,11 @@ ControlList ControlSerializer::deserialize<ControlList>(ByteStreamBuffer &buffer\n>  \n>                 case IPA_CONTROL_ID_MAP_V4L2:\n>                 default:\n> -                       LOG(Serializer, Fatal)\n> -                               << \"A list of V4L2 controls requires an ControlInfoMap\";\n> +                       if (hdr->entries > 0) {\n> +                               LOG(Serializer, Fatal)\n> +                                       << \"A list of V4L2 controls requires an ControlInfoMap\";\n> +                       }\n> +\n>                         return {};\n>                 }\n>         }\n> -- \n> 2.50.1\n>","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 EE0C9C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Jul 2025 06:59:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 98473690A6;\n\tThu, 24 Jul 2025 08:59:58 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9BEA96909C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Jul 2025 08:59:56 +0200 (CEST)","from neptunite.rasen.tech (unknown\n\t[IPv6:2404:7a81:160:2100:be7f:7fca:78b4:1343])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 5FA8CC0B;\n\tThu, 24 Jul 2025 08:59:17 +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=\"WbiM8oRX\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753340357;\n\tbh=CaV+d1BoU9ob38lwACnykruyU7YLdbq66c2Y0x0uJxM=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=WbiM8oRX4HDj1xkXGyJeNAly3PTIgWpMrmL5gEqcesI9EzREG01cUlhwCwhjBj8+k\n\tj9nNzolbyZbxinP8eAlcLPjHnOkeKnVL3iCd6PKVSUB7/o3AG5W4tnr+bNpfyVeb3+\n\tRabvfry11wdbwVcB9Ylca4h+0H9WdHutoW17Db2k=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>","References":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>","Subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 24 Jul 2025 15:59:50 +0900","Message-ID":"<175334039025.774292.6113529176381280519@neptunite.rasen.tech>","User-Agent":"alot/0.0.0","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>"}},{"id":35102,"web_url":"https://patchwork.libcamera.org/comment/35102/","msgid":"<20250724122202.GO11202@pendragon.ideasonboard.com>","date":"2025-07-24T12:22:02","subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Jul 21, 2025 at 08:09:01PM +0100, Kieran Bingham wrote:\n> Quoting Barnabás Pőcze (2025-07-21 12:50:29)\n> > Accept empty `ControlList`s without an info map. Serialization\n> > supports `ControlList`s without an associated `ControlInfoMap`\n> > object. However, for deserialization, a \"v4l2\" control list\n> > without an info map resulted in a fatal error.\n> > \n> > After 30114cadd8cb65 (\"ipa: rpi: Defer initialising AF LensPosition ControlInfo and value\")\n> > the `lensControls` member of `ipa::RPi::ConfigResult` is left empty\n> > and without an info map in every case, not just when a lens is not present.\n> > This causes the above assertion to trigger every single time.\n> > \n> > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> > ---\n> >  src/libcamera/control_serializer.cpp | 7 +++++--\n> >  1 file changed, 5 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp\n> > index 17834648c..1534fc5c8 100644\n> > --- a/src/libcamera/control_serializer.cpp\n> > +++ b/src/libcamera/control_serializer.cpp\n> > @@ -601,8 +601,11 @@ ControlList ControlSerializer::deserialize<ControlList>(ByteStreamBuffer &buffer\n> >  \n> >                 case IPA_CONTROL_ID_MAP_V4L2:\n> >                 default:\n> > -                       LOG(Serializer, Fatal)\n> > -                               << \"A list of V4L2 controls requires an ControlInfoMap\";\n> > +                       if (hdr->entries > 0) {\n> > +                               LOG(Serializer, Fatal)\n> > +                                       << \"A list of V4L2 controls requires an ControlInfoMap\";\n\nWhile at it, s/ an / a /\n\n> > +                       }\n> > +\n> \n> I think this sounds ok ... I have nothing to argue against it ...\n\nNo need for curly braces though.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> >                         return {};\n> >                 }\n> >         }","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 0F630C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Jul 2025 12:22:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D054B690F6;\n\tThu, 24 Jul 2025 14:22:07 +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 1F5B0690E2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Jul 2025 14:22:06 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id CCBE8C74;\n\tThu, 24 Jul 2025 14:21:26 +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=\"WMdmBMzL\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753359687;\n\tbh=mQixyjGv/SyMfRHExwzebvDWDE5yaGCpzHJlF9BTD1s=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=WMdmBMzL7sfopDvZKyEd53YmRj+9stAvwapaztMD/XxWtN5LfWCv56Wf9LHCCFjo4\n\tYvdOda5QZbJvPQ2Hz9v0iSF0QtZd3LLRDF1EFogQe0TrjGEfI54eAbEgspZ3ifZ9lj\n\tMdNmylzW1X7HOT5xQNsLiflo6yZ8LKL9QpEl9ZN8=","Date":"Thu, 24 Jul 2025 15:22:02 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","Message-ID":"<20250724122202.GO11202@pendragon.ideasonboard.com>","References":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>\n\t<175312494120.50296.18085078835905724656@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<175312494120.50296.18085078835905724656@ping.linuxembedded.co.uk>","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>"}},{"id":35115,"web_url":"https://patchwork.libcamera.org/comment/35115/","msgid":"<f1406bb8-1de5-4c9f-b42a-062565cdc0ee@ideasonboard.com>","date":"2025-07-25T07:34:57","subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 07. 24. 14:22 keltezéssel, Laurent Pinchart írta:\n> On Mon, Jul 21, 2025 at 08:09:01PM +0100, Kieran Bingham wrote:\n>> Quoting Barnabás Pőcze (2025-07-21 12:50:29)\n>>> Accept empty `ControlList`s without an info map. Serialization\n>>> supports `ControlList`s without an associated `ControlInfoMap`\n>>> object. However, for deserialization, a \"v4l2\" control list\n>>> without an info map resulted in a fatal error.\n>>>\n>>> After 30114cadd8cb65 (\"ipa: rpi: Defer initialising AF LensPosition ControlInfo and value\")\n>>> the `lensControls` member of `ipa::RPi::ConfigResult` is left empty\n>>> and without an info map in every case, not just when a lens is not present.\n>>> This causes the above assertion to trigger every single time.\n>>>\n>>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>>> ---\n>>>   src/libcamera/control_serializer.cpp | 7 +++++--\n>>>   1 file changed, 5 insertions(+), 2 deletions(-)\n>>>\n>>> diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp\n>>> index 17834648c..1534fc5c8 100644\n>>> --- a/src/libcamera/control_serializer.cpp\n>>> +++ b/src/libcamera/control_serializer.cpp\n>>> @@ -601,8 +601,11 @@ ControlList ControlSerializer::deserialize<ControlList>(ByteStreamBuffer &buffer\n>>>   \n>>>                  case IPA_CONTROL_ID_MAP_V4L2:\n>>>                  default:\n>>> -                       LOG(Serializer, Fatal)\n>>> -                               << \"A list of V4L2 controls requires an ControlInfoMap\";\n>>> +                       if (hdr->entries > 0) {\n>>> +                               LOG(Serializer, Fatal)\n>>> +                                       << \"A list of V4L2 controls requires an ControlInfoMap\";\n> \n> While at it, s/ an / a /\n> \n>>> +                       }\n>>> +\n>>\n>> I think this sounds ok ... I have nothing to argue against it ...\n> \n> No need for curly braces though.\n\nHmmm, true... I just like to use them if the statements is more than 1 line.\n\n\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n>> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>\n>>>                          return {};\n>>>                  }\n>>>          }\n>","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 A7D03C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Jul 2025 07:35:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 82FD66908D;\n\tFri, 25 Jul 2025 09:35:02 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2E6D269080\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Jul 2025 09:35:00 +0200 (CEST)","from [192.168.33.15] (185.221.140.39.nat.pool.zt.hu\n\t[185.221.140.39])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 42E299CE;\n\tFri, 25 Jul 2025 09:34:20 +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=\"jy5dDWmV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753428860;\n\tbh=JRD7S5F52bxhRGdh/MQhLGZTd7+roQNp/dZTdE+NUE0=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=jy5dDWmV64VOI1xaZRC9wOXStFQ94BKAbbLS7P1Z7cVQbiskVdQ8SbzmcwskzkWlr\n\tCPHMwpnh89zgETnqUAOQU51iISE/HiQyDXGCniXChVLaFNk0dMtNHJDVzW9CbmwSax\n\tI3svQ6uUjN7dfNvXRAPDW1NLIZv4XCbcjxup9MUQ=","Message-ID":"<f1406bb8-1de5-4c9f-b42a-062565cdc0ee@ideasonboard.com>","Date":"Fri, 25 Jul 2025 09:34:57 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v1] libcamera: control_serializer: Accept empty\n\t`ControlList`","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20250721115029.1561179-1-barnabas.pocze@ideasonboard.com>\n\t<175312494120.50296.18085078835905724656@ping.linuxembedded.co.uk>\n\t<20250724122202.GO11202@pendragon.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":"<20250724122202.GO11202@pendragon.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>"}}]