[{"id":31480,"web_url":"https://patchwork.libcamera.org/comment/31480/","msgid":"<CAEB1aht4BvERExSBn_2rLgmAPh63Jc4AUbQpTJ2LDy=Q6yaoHw@mail.gmail.com>","date":"2024-10-01T07:10:03","subject":"Re: [PATCH v9 3/5] libcamera: controls: Add ControlTypePoint","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Thanks Jacopo,\n\nReviewed-by: Harvey Yang <chenghaoyang@chromium.org>\n\nBR,\nHarvey\n\n\n\nOn Tue, Oct 1, 2024 at 3:59 AM Jacopo Mondi\n<jacopo.mondi@ideasonboard.com> wrote:\n>\n> From: Yudhistira Erlandinata <yerlandinata@chromium.org>\n>\n> Add a control_type<> specialization for libcamera::Point to allow\n> storing data of that type in a ControlValue instance.\n>\n> The new control type will be used by controls introduced in the\n> next patches.\n>\n> Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> Co-developed-by: Becker Hsieh <beckerh@chromium.org>\n> Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> ---\n>  include/libcamera/controls.h | 6 ++++++\n>  src/libcamera/controls.cpp   | 6 ++++++\n>  2 files changed, 12 insertions(+)\n>\n> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> index c5131870d402..ca60bbacad17 100644\n> --- a/include/libcamera/controls.h\n> +++ b/include/libcamera/controls.h\n> @@ -35,6 +35,7 @@ enum ControlType {\n>         ControlTypeString,\n>         ControlTypeRectangle,\n>         ControlTypeSize,\n> +       ControlTypePoint,\n>  };\n>\n>  namespace details {\n> @@ -97,6 +98,11 @@ struct control_type<Size> {\n>         static constexpr std::size_t size = 0;\n>  };\n>\n> +template<>\n> +struct control_type<Point> {\n> +       static constexpr ControlType value = ControlTypePoint;\n> +};\n> +\n>  template<typename T, std::size_t N>\n>  struct control_type<Span<T, N>> : public control_type<std::remove_cv_t<T>> {\n>         static constexpr std::size_t size = N;\n> diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp\n> index ea4397302a21..62185d643ecd 100644\n> --- a/src/libcamera/controls.cpp\n> +++ b/src/libcamera/controls.cpp\n> @@ -60,6 +60,7 @@ static constexpr size_t ControlValueSize[] = {\n>         [ControlTypeString]             = sizeof(char),\n>         [ControlTypeRectangle]          = sizeof(Rectangle),\n>         [ControlTypeSize]               = sizeof(Size),\n> +       [ControlTypePoint]              = sizeof(Point),\n>  };\n>\n>  } /* namespace */\n> @@ -254,6 +255,11 @@ std::string ControlValue::toString() const\n>                         str += value->toString();\n>                         break;\n>                 }\n> +               case ControlTypePoint: {\n> +                       const Point *value = reinterpret_cast<const Point *>(data);\n> +                       str += value->toString();\n> +                       break;\n> +               }\n>                 case ControlTypeNone:\n>                 case ControlTypeString:\n>                         break;\n> --\n> 2.46.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 B521FBD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  1 Oct 2024 07:10:17 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CA31D63512;\n\tTue,  1 Oct 2024 09:10:16 +0200 (CEST)","from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com\n\t[IPv6:2a00:1450:4864:20::22f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 07C8B60553\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  1 Oct 2024 09:10:14 +0200 (CEST)","by mail-lj1-x22f.google.com with SMTP id\n\t38308e7fff4ca-2faccada15bso18545101fa.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 01 Oct 2024 00:10:14 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"GGZm3FC0\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1727766614; x=1728371414;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=fCqMFI1hyqhesMQZUQscKYtMpm+kQHAlalSRflz1g0c=;\n\tb=GGZm3FC0TRTQpvgbu11AcqVo2XcKEXy0zp5uNrYanO+pU1tHJypRWnkUf/aHfD9jMe\n\tGivjW5Aga5HgnDTzpu2/p1dcFs+8TJic/2WLcaNcAx2yAfHtV/sOvNvKukD7bwmjlxUq\n\t/tqIhVVlrG6F/laFZ9djlhG4kbwOKC9Ra9oBs=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1727766614; x=1728371414;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=fCqMFI1hyqhesMQZUQscKYtMpm+kQHAlalSRflz1g0c=;\n\tb=uYzMhXYQ6IfJVYq3/fjvoEb58uMgWCcWtyVu6Oq9sJYIw/TVNWp27EHJbhM4kqVf9w\n\tPXIXuzh0Oxg3bj2i4szw/GGe1Hdkb4dyoKnrLEKSCWYmEQziAx51Ks/PyKiCFN1Nb775\n\tCS1cgE9DTWab9hkZCgiXQbwRDxGxpzKsaNcnbBZW2vV+F7Iyg0RIwxx81WG0Kcl1Y6zw\n\twWbifOqY+eawJuDE5N4Sg5eFBUT8CVyvW4kMwreh68nueLaqf+UJ1loq2pV6TKrzFIdF\n\tMTBEzDzTzi4UpFPRuhJlVPj1U8wTlkPl6drX+acpXdXcmtp1WdvEgHVcgaOnFg0ypJ59\n\ttqcQ==","X-Gm-Message-State":"AOJu0Yw++pBzSW2bbLsyz+zLn9hQtGRU7QZPWp7UaNtepyvexp58qnQh\n\tD/Uvx5W49xiopUD0OHT1Oy1z0qki6GDCJYnUGja+Eep9OdQkzOQSaR9zVuZ6I2ceZS2qM8meytI\n\tEHJqgUSj93vo9ykGldgGum8Q6LChlTGAoOnPc","X-Google-Smtp-Source":"AGHT+IG/XFBC7DUtbkKa9pPbdiUMlDUMclyBWQizbBVeI2Na+geDVvX7KJjQYXkcBXPUw75DxR4qCzB/im0/5Ki0Vas=","X-Received":"by 2002:a2e:be1a:0:b0:2fa:d4c1:3b6b with SMTP id\n\t38308e7fff4ca-2fad4c13ecfmr22205871fa.33.1727766613968;\n\tTue, 01 Oct 2024 00:10:13 -0700 (PDT)","MIME-Version":"1.0","References":"<20240930195915.152187-1-jacopo.mondi@ideasonboard.com>\n\t<20240930195915.152187-4-jacopo.mondi@ideasonboard.com>","In-Reply-To":"<20240930195915.152187-4-jacopo.mondi@ideasonboard.com>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Tue, 1 Oct 2024 15:10:03 +0800","Message-ID":"<CAEB1aht4BvERExSBn_2rLgmAPh63Jc4AUbQpTJ2LDy=Q6yaoHw@mail.gmail.com>","Subject":"Re: [PATCH v9 3/5] libcamera: controls: Add ControlTypePoint","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>, \n\tYudhistira Erlandinata <yerlandinata@chromium.org>,\n\tBecker Hsieh <beckerh@chromium.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","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":31505,"web_url":"https://patchwork.libcamera.org/comment/31505/","msgid":"<20241001175831.GB6117@pendragon.ideasonboard.com>","date":"2024-10-01T17:58:31","subject":"Re: [PATCH v9 3/5] libcamera: controls: Add ControlTypePoint","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Sep 30, 2024 at 09:59:11PM +0200, Jacopo Mondi wrote:\n> From: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> \n> Add a control_type<> specialization for libcamera::Point to allow\n> storing data of that type in a ControlValue instance.\n> \n> The new control type will be used by controls introduced in the\n> next patches.\n> \n> Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> Co-developed-by: Becker Hsieh <beckerh@chromium.org>\n> Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  include/libcamera/controls.h | 6 ++++++\n>  src/libcamera/controls.cpp   | 6 ++++++\n>  2 files changed, 12 insertions(+)\n> \n> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> index c5131870d402..ca60bbacad17 100644\n> --- a/include/libcamera/controls.h\n> +++ b/include/libcamera/controls.h\n> @@ -35,6 +35,7 @@ enum ControlType {\n>  \tControlTypeString,\n>  \tControlTypeRectangle,\n>  \tControlTypeSize,\n> +\tControlTypePoint,\n>  };\n>  \n>  namespace details {\n> @@ -97,6 +98,11 @@ struct control_type<Size> {\n>  \tstatic constexpr std::size_t size = 0;\n>  };\n>  \n> +template<>\n> +struct control_type<Point> {\n> +\tstatic constexpr ControlType value = ControlTypePoint;\n> +};\n> +\n>  template<typename T, std::size_t N>\n>  struct control_type<Span<T, N>> : public control_type<std::remove_cv_t<T>> {\n>  \tstatic constexpr std::size_t size = N;\n> diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp\n> index ea4397302a21..62185d643ecd 100644\n> --- a/src/libcamera/controls.cpp\n> +++ b/src/libcamera/controls.cpp\n> @@ -60,6 +60,7 @@ static constexpr size_t ControlValueSize[] = {\n>  \t[ControlTypeString]\t\t= sizeof(char),\n>  \t[ControlTypeRectangle]\t\t= sizeof(Rectangle),\n>  \t[ControlTypeSize]\t\t= sizeof(Size),\n> +\t[ControlTypePoint]\t\t= sizeof(Point),\n>  };\n>  \n>  } /* namespace */\n> @@ -254,6 +255,11 @@ std::string ControlValue::toString() const\n>  \t\t\tstr += value->toString();\n>  \t\t\tbreak;\n>  \t\t}\n> +\t\tcase ControlTypePoint: {\n> +\t\t\tconst Point *value = reinterpret_cast<const Point *>(data);\n> +\t\t\tstr += value->toString();\n> +\t\t\tbreak;\n> +\t\t}\n>  \t\tcase ControlTypeNone:\n>  \t\tcase ControlTypeString:\n>  \t\t\tbreak;","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 B1636C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  1 Oct 2024 17:58:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 81174618D7;\n\tTue,  1 Oct 2024 19:58:36 +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 731AD60553\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  1 Oct 2024 19:58:34 +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 ESMTPSA id 1CE831083;\n\tTue,  1 Oct 2024 19:57:02 +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=\"vkWqLeu+\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1727805422;\n\tbh=WPrfoyTlWgGNsrJb/v8qyBaFnuYQwPE8LMx09SFU8VI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=vkWqLeu+e8RM+/dhNO0MWXwWRs6NSSXOiBAPGuroV9f9fbQFPP9zZH7oQNsc+UiZ/\n\t5Gsx2ruLh+OGMIQRNDBCUOKCDXxHyNM1oaH2EM/n5xDpRA7Q7OeXSYKGXRbpzPF8id\n\tr+ICnzXyuckK4Rzg7DzgIMFxE7DR6CiyTFKWiQsg=","Date":"Tue, 1 Oct 2024 20:58:31 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tHarvey Yang <chenghaoyang@google.com>, \n\tYudhistira Erlandinata <yerlandinata@chromium.org>,\n\tBecker Hsieh <beckerh@chromium.org>,\n\tHarvey Yang <chenghaoyang@chromium.org>","Subject":"Re: [PATCH v9 3/5] libcamera: controls: Add ControlTypePoint","Message-ID":"<20241001175831.GB6117@pendragon.ideasonboard.com>","References":"<20240930195915.152187-1-jacopo.mondi@ideasonboard.com>\n\t<20240930195915.152187-4-jacopo.mondi@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20240930195915.152187-4-jacopo.mondi@ideasonboard.com>","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>"}}]