[{"id":31866,"web_url":"https://patchwork.libcamera.org/comment/31866/","msgid":"<172952806610.3353069.9140982882484061738@ping.linuxembedded.co.uk>","date":"2024-10-21T16:27:46","subject":"Re: [PATCH 2/2] libcamera: Add Unsigned 16-bits Control Type","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Harvey Yang (2024-10-11 18:55:12)\n> From: Yudhistira Erlandinata <yerlandinata@google.com>\n> \n> Some camera metadata is of length 16-bits,\n> for example JPEG metadata headers.\n> \n> Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> ---\n>  include/libcamera/controls.h  | 6 ++++++\n>  src/libcamera/controls.cpp    | 8 ++++++++\n>  src/libcamera/v4l2_device.cpp | 9 +++++++++\n>  3 files changed, 23 insertions(+)\n> \n> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> index 25f68040d..1987ca5f5 100644\n> --- a/include/libcamera/controls.h\n> +++ b/include/libcamera/controls.h\n> @@ -29,6 +29,7 @@ enum ControlType {\n>         ControlTypeNone,\n>         ControlTypeBool,\n>         ControlTypeByte,\n> +       ControlTypeUnsigned16,\n>         ControlTypeUnsigned32,\n>         ControlTypeInteger32,\n>         ControlTypeInteger64,\n> @@ -63,6 +64,11 @@ struct control_type<uint8_t> {\n>         static constexpr std::size_t size = 0;\n>  };\n>  \n> +template<>\n> +struct control_type<uint16_t> {\n> +       static constexpr ControlType value = ControlTypeUnsigned16;\n\nDoes this also need to set the size? What is size - why is it always\nzero? \n\n> +};\n> +\n>  template<>\n>  struct control_type<uint32_t> {\n>         static constexpr ControlType value = ControlTypeUnsigned32;\n> diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp\n> index 8ae295191..3a840bb22 100644\n> --- a/src/libcamera/controls.cpp\n> +++ b/src/libcamera/controls.cpp\n> @@ -54,6 +54,7 @@ static constexpr size_t ControlValueSize[] = {\n>         [ControlTypeNone]               = 0,\n>         [ControlTypeBool]               = sizeof(bool),\n>         [ControlTypeByte]               = sizeof(uint8_t),\n> +       [ControlTypeUnsigned16]         = sizeof(uint16_t),\n>         [ControlTypeUnsigned32]         = sizeof(uint32_t),\n>         [ControlTypeInteger32]          = sizeof(int32_t),\n>         [ControlTypeInteger64]          = sizeof(int64_t),\n> @@ -75,6 +76,8 @@ static constexpr size_t ControlValueSize[] = {\n>   * The control stores a boolean value\n>   * \\var ControlTypeByte\n>   * The control stores a byte value as an unsigned 8-bit integer\n> + * \\var ControlTypeUnsigned16\n> + * The control stores an unsigned 16-bit integer value\n>   * \\var ControlTypeUnsigned32\n>   * The control stores an unsigned 32-bit integer value\n>   * \\var ControlTypeInteger32\n> @@ -233,6 +236,11 @@ std::string ControlValue::toString() const\n>                         str += std::to_string(*value);\n>                         break;\n>                 }\n> +               case ControlTypeUnsigned16: {\n> +                       const uint16_t *value = reinterpret_cast<const uint16_t *>(data);\n> +                       str += std::to_string(*value);\n> +                       break;\n> +               }\n>                 case ControlTypeUnsigned32: {\n>                         const uint32_t *value = reinterpret_cast<const uint32_t *>(data);\n>                         str += std::to_string(*value);\n> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> index f3454ba24..cb7327171 100644\n> --- a/src/libcamera/v4l2_device.cpp\n> +++ b/src/libcamera/v4l2_device.cpp\n> @@ -492,6 +492,9 @@ ControlType V4L2Device::v4l2CtrlType(uint32_t ctrlType)\n>         case V4L2_CTRL_TYPE_BOOLEAN:\n>                 return ControlTypeBool;\n>  \n> +       case V4L2_CTRL_TYPE_U16:\n> +               return ControlTypeUnsigned16;\n> +\n>         case V4L2_CTRL_TYPE_U32:\n>                 return ControlTypeUnsigned32;\n>  \n> @@ -543,6 +546,11 @@ std::optional<ControlInfo> V4L2Device::v4l2ControlInfo(const v4l2_query_ext_ctrl\n>                                    static_cast<uint8_t>(ctrl.maximum),\n>                                    static_cast<uint8_t>(ctrl.default_value));\n>  \n> +       case V4L2_CTRL_TYPE_U16:\n> +               return ControlInfo(static_cast<uint16_t>(ctrl.minimum),\n> +                                  static_cast<uint16_t>(ctrl.maximum),\n> +                                  static_cast<uint16_t>(ctrl.default_value));\n> +\n>         case V4L2_CTRL_TYPE_U32:\n>                 return ControlInfo(static_cast<uint32_t>(ctrl.minimum),\n>                                    static_cast<uint32_t>(ctrl.maximum),\n> @@ -634,6 +642,7 @@ void V4L2Device::listControls()\n>                 case V4L2_CTRL_TYPE_BITMASK:\n>                 case V4L2_CTRL_TYPE_INTEGER_MENU:\n>                 case V4L2_CTRL_TYPE_U8:\n> +               case V4L2_CTRL_TYPE_U16:\n>                 case V4L2_CTRL_TYPE_U32:\n>                         break;\n>                 /* \\todo Support other control types. */\n> -- \n> 2.47.0.rc1.288.g06298d1525-goog\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 22FD0C32A3\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Oct 2024 16:27:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A6F2465392;\n\tMon, 21 Oct 2024 18:27:51 +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 CE41D6538A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Oct 2024 18:27:48 +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 E95EF4CF;\n\tMon, 21 Oct 2024 18:26: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=\"o18NecUj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1729527963;\n\tbh=9wMhajGJd3uMys8xC0x1ztd5Qz5JY2PsEt9dC5dEbp8=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=o18NecUjfTGBu3KGot2VC590duO86kFovg/RFDKzCXZWoHcNGXCxrVEy62OQZ1Vsy\n\t2JV8b9FR+yQCIDcfBv5BzuoaaVOfhe0hm3sq+rmSvg/+AghqhMNWaXZFr0MhtcbfCW\n\toT0SOGmNyCf5cDdiA3LH8XETmCYJIPO/HjQlnv6E=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20241011175653.3530945-3-chenghaoyang@chromium.org>","References":"<20241011175653.3530945-1-chenghaoyang@chromium.org>\n\t<20241011175653.3530945-3-chenghaoyang@chromium.org>","Subject":"Re: [PATCH 2/2] libcamera: Add Unsigned 16-bits Control Type","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Yudhistira Erlandinata <yerlandinata@google.com>,\n\tYudhistira Erlandinata <yerlandinata@chromium.org>,\n\tHarvey Yang <chenghaoyang@chromium.org>","To":"Harvey Yang <chenghaoyang@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 21 Oct 2024 17:27:46 +0100","Message-ID":"<172952806610.3353069.9140982882484061738@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":31876,"web_url":"https://patchwork.libcamera.org/comment/31876/","msgid":"<CAEB1ahvzu=p1Uepn8He1_Uf6moR3RXdmOKE_0uAkK81GtHe+gg@mail.gmail.com>","date":"2024-10-22T09:51:09","subject":"Re: [PATCH 2/2] libcamera: Add Unsigned 16-bits Control Type","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Kieran,\n\nOn Tue, Oct 22, 2024 at 12:27 AM Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting Harvey Yang (2024-10-11 18:55:12)\n> > From: Yudhistira Erlandinata <yerlandinata@google.com>\n> >\n> > Some camera metadata is of length 16-bits,\n> > for example JPEG metadata headers.\n> >\n> > Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> > Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> > Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> > ---\n> >  include/libcamera/controls.h  | 6 ++++++\n> >  src/libcamera/controls.cpp    | 8 ++++++++\n> >  src/libcamera/v4l2_device.cpp | 9 +++++++++\n> >  3 files changed, 23 insertions(+)\n> >\n> > diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> > index 25f68040d..1987ca5f5 100644\n> > --- a/include/libcamera/controls.h\n> > +++ b/include/libcamera/controls.h\n> > @@ -29,6 +29,7 @@ enum ControlType {\n> >         ControlTypeNone,\n> >         ControlTypeBool,\n> >         ControlTypeByte,\n> > +       ControlTypeUnsigned16,\n> >         ControlTypeUnsigned32,\n> >         ControlTypeInteger32,\n> >         ControlTypeInteger64,\n> > @@ -63,6 +64,11 @@ struct control_type<uint8_t> {\n> >         static constexpr std::size_t size = 0;\n> >  };\n> >\n> > +template<>\n> > +struct control_type<uint16_t> {\n> > +       static constexpr ControlType value = ControlTypeUnsigned16;\n>\n> Does this also need to set the size? What is size - why is it always\n> zero?\n\nYes, you're right.\n\nI think it's the default value for the potential array size:\nhttps://git.libcamera.org/libcamera/libcamera.git/commit/?id=ab67fdd210e30ad3806f10cb5f6d4e325059f8de\n\nBR,\nHarvey\n\n>\n> > +};\n> > +\n> >  template<>\n> >  struct control_type<uint32_t> {\n> >         static constexpr ControlType value = ControlTypeUnsigned32;\n> > diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp\n> > index 8ae295191..3a840bb22 100644\n> > --- a/src/libcamera/controls.cpp\n> > +++ b/src/libcamera/controls.cpp\n> > @@ -54,6 +54,7 @@ static constexpr size_t ControlValueSize[] = {\n> >         [ControlTypeNone]               = 0,\n> >         [ControlTypeBool]               = sizeof(bool),\n> >         [ControlTypeByte]               = sizeof(uint8_t),\n> > +       [ControlTypeUnsigned16]         = sizeof(uint16_t),\n> >         [ControlTypeUnsigned32]         = sizeof(uint32_t),\n> >         [ControlTypeInteger32]          = sizeof(int32_t),\n> >         [ControlTypeInteger64]          = sizeof(int64_t),\n> > @@ -75,6 +76,8 @@ static constexpr size_t ControlValueSize[] = {\n> >   * The control stores a boolean value\n> >   * \\var ControlTypeByte\n> >   * The control stores a byte value as an unsigned 8-bit integer\n> > + * \\var ControlTypeUnsigned16\n> > + * The control stores an unsigned 16-bit integer value\n> >   * \\var ControlTypeUnsigned32\n> >   * The control stores an unsigned 32-bit integer value\n> >   * \\var ControlTypeInteger32\n> > @@ -233,6 +236,11 @@ std::string ControlValue::toString() const\n> >                         str += std::to_string(*value);\n> >                         break;\n> >                 }\n> > +               case ControlTypeUnsigned16: {\n> > +                       const uint16_t *value = reinterpret_cast<const uint16_t *>(data);\n> > +                       str += std::to_string(*value);\n> > +                       break;\n> > +               }\n> >                 case ControlTypeUnsigned32: {\n> >                         const uint32_t *value = reinterpret_cast<const uint32_t *>(data);\n> >                         str += std::to_string(*value);\n> > diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> > index f3454ba24..cb7327171 100644\n> > --- a/src/libcamera/v4l2_device.cpp\n> > +++ b/src/libcamera/v4l2_device.cpp\n> > @@ -492,6 +492,9 @@ ControlType V4L2Device::v4l2CtrlType(uint32_t ctrlType)\n> >         case V4L2_CTRL_TYPE_BOOLEAN:\n> >                 return ControlTypeBool;\n> >\n> > +       case V4L2_CTRL_TYPE_U16:\n> > +               return ControlTypeUnsigned16;\n> > +\n> >         case V4L2_CTRL_TYPE_U32:\n> >                 return ControlTypeUnsigned32;\n> >\n> > @@ -543,6 +546,11 @@ std::optional<ControlInfo> V4L2Device::v4l2ControlInfo(const v4l2_query_ext_ctrl\n> >                                    static_cast<uint8_t>(ctrl.maximum),\n> >                                    static_cast<uint8_t>(ctrl.default_value));\n> >\n> > +       case V4L2_CTRL_TYPE_U16:\n> > +               return ControlInfo(static_cast<uint16_t>(ctrl.minimum),\n> > +                                  static_cast<uint16_t>(ctrl.maximum),\n> > +                                  static_cast<uint16_t>(ctrl.default_value));\n> > +\n> >         case V4L2_CTRL_TYPE_U32:\n> >                 return ControlInfo(static_cast<uint32_t>(ctrl.minimum),\n> >                                    static_cast<uint32_t>(ctrl.maximum),\n> > @@ -634,6 +642,7 @@ void V4L2Device::listControls()\n> >                 case V4L2_CTRL_TYPE_BITMASK:\n> >                 case V4L2_CTRL_TYPE_INTEGER_MENU:\n> >                 case V4L2_CTRL_TYPE_U8:\n> > +               case V4L2_CTRL_TYPE_U16:\n> >                 case V4L2_CTRL_TYPE_U32:\n> >                         break;\n> >                 /* \\todo Support other control types. */\n> > --\n> > 2.47.0.rc1.288.g06298d1525-goog\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 25691C3274\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 22 Oct 2024 09:51:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3058665392;\n\tTue, 22 Oct 2024 11:51:25 +0200 (CEST)","from mail-lj1-x232.google.com (mail-lj1-x232.google.com\n\t[IPv6:2a00:1450:4864:20::232])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C4EFB6053E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Oct 2024 11:51:22 +0200 (CEST)","by mail-lj1-x232.google.com with SMTP id\n\t38308e7fff4ca-2fb5be4381dso54604461fa.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Oct 2024 02:51:22 -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=\"hTBhf4fD\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1729590682; x=1730195482;\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=c95oHGtTNnGZBn5TR8qjEg7kFxcmpxydvAY3XiKqMk0=;\n\tb=hTBhf4fDtqaLoZZRF+08IUo3UK+tno34Nvl/e5zcneJmX5lErYat6X5iyPEU6oobW6\n\tT97eYGqxXn7wv2SztZzGVvCLOG71Iew0Ks9qd+4qRgu1JbJjtn9OgFmjgzJ5zPZ5W8No\n\tsK3x3ygiprzI7+MWPUwCSeCk2XijYh8MZoNuo=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1729590682; x=1730195482;\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=c95oHGtTNnGZBn5TR8qjEg7kFxcmpxydvAY3XiKqMk0=;\n\tb=oBR6/LmWWbn3Dl9keyfw5v8OQrX2NA6SD22Qi5Ju3w/HjO4/yy4SUPDB1xllg/zTFs\n\tn12nslG05Kw/BQhMzaisqMYIu340QHCnyxAMZYS4AgQKES7mpcgWQCBlsvD3PPXeYyYB\n\tsku+WZ88J8tmi+4MzSoh82G+g3VWNuGaEcHCyhYcMyR1IJECvEnLyXY5LkxsI6Xsirkq\n\tsAgzssKHgpe8dYUFztBWxQuBfc/z+/Z18VEIZ/nWj++18ASmHa5bhIru6Dw1McXtFD9h\n\t4O092mHq2wyMeYci8w92AK7i3fDNXe8XqUolyOVxMl41HWKheevogO6bY5iku2IMJmHh\n\td/qA==","X-Gm-Message-State":"AOJu0Yyd5O89EsYlzYQ7ZWE7S3eC4i/t6s22hCLFyoymlWRvrCpMv4k/\n\tlhdFsuKpi/agtJxNSq0dAGl6VgZQX13DroAiJJdDg3JGrsmn0e0KX6HLmNVK4eQXPYOLtT6dhsV\n\tT8nyh193r3lcPQuy2qZ/Jgc9RIFwxK730pHxIRi35lTstH1857Q==","X-Google-Smtp-Source":"AGHT+IG1fLEervvZPNUBhWO7DUQgWIe1j3Da5IRO9YGYdPn0uXnenZfXzHpsDOl3um+cq3xNTiGRBP+DVbnLdTwJT7w=","X-Received":"by 2002:a05:651c:b0e:b0:2fb:6198:d22b with SMTP id\n\t38308e7fff4ca-2fb82eaf011mr75052851fa.17.1729590681688;\n\tTue, 22 Oct 2024 02:51:21 -0700 (PDT)","MIME-Version":"1.0","References":"<20241011175653.3530945-1-chenghaoyang@chromium.org>\n\t<20241011175653.3530945-3-chenghaoyang@chromium.org>\n\t<172952806610.3353069.9140982882484061738@ping.linuxembedded.co.uk>","In-Reply-To":"<172952806610.3353069.9140982882484061738@ping.linuxembedded.co.uk>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Tue, 22 Oct 2024 17:51:09 +0800","Message-ID":"<CAEB1ahvzu=p1Uepn8He1_Uf6moR3RXdmOKE_0uAkK81GtHe+gg@mail.gmail.com>","Subject":"Re: [PATCH 2/2] libcamera: Add Unsigned 16-bits Control Type","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tYudhistira Erlandinata <yerlandinata@google.com>, \n\tYudhistira Erlandinata <yerlandinata@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":31878,"web_url":"https://patchwork.libcamera.org/comment/31878/","msgid":"<172959244823.3022735.1486590930392863311@ping.linuxembedded.co.uk>","date":"2024-10-22T10:20:48","subject":"Re: [PATCH 2/2] libcamera: Add Unsigned 16-bits Control Type","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Cheng-Hao Yang (2024-10-22 10:51:09)\n> Hi Kieran,\n> \n> On Tue, Oct 22, 2024 at 12:27 AM Kieran Bingham\n> <kieran.bingham@ideasonboard.com> wrote:\n> >\n> > Quoting Harvey Yang (2024-10-11 18:55:12)\n> > > From: Yudhistira Erlandinata <yerlandinata@google.com>\n> > >\n> > > Some camera metadata is of length 16-bits,\n> > > for example JPEG metadata headers.\n> > >\n> > > Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> > > Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> > > Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> > > ---\n> > >  include/libcamera/controls.h  | 6 ++++++\n> > >  src/libcamera/controls.cpp    | 8 ++++++++\n> > >  src/libcamera/v4l2_device.cpp | 9 +++++++++\n> > >  3 files changed, 23 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> > > index 25f68040d..1987ca5f5 100644\n> > > --- a/include/libcamera/controls.h\n> > > +++ b/include/libcamera/controls.h\n> > > @@ -29,6 +29,7 @@ enum ControlType {\n> > >         ControlTypeNone,\n> > >         ControlTypeBool,\n> > >         ControlTypeByte,\n> > > +       ControlTypeUnsigned16,\n> > >         ControlTypeUnsigned32,\n> > >         ControlTypeInteger32,\n> > >         ControlTypeInteger64,\n> > > @@ -63,6 +64,11 @@ struct control_type<uint8_t> {\n> > >         static constexpr std::size_t size = 0;\n> > >  };\n> > >\n> > > +template<>\n> > > +struct control_type<uint16_t> {\n> > > +       static constexpr ControlType value = ControlTypeUnsigned16;\n> >\n> > Does this also need to set the size? What is size - why is it always\n> > zero?\n> \n> Yes, you're right.\n> \n> I think it's the default value for the potential array size:\n> https://git.libcamera.org/libcamera/libcamera.git/commit/?id=ab67fdd210e30ad3806f10cb5f6d4e325059f8de\n> \n\nAha, thanks - that's where it's from...\n\n--\nKieran","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 DDEE9C3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 22 Oct 2024 10:20:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 10F1165391;\n\tTue, 22 Oct 2024 12:20:53 +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 8D7026053E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Oct 2024 12:20:51 +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 E04353EA;\n\tTue, 22 Oct 2024 12:19:04 +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=\"U44FnQHq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1729592345;\n\tbh=NZjjgUwH+O2nlMnJf64WAkztz+ub9jX6jZDJbG8k8Uk=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=U44FnQHqe3/+sXF5ZiCYZ4T4NWkOtHZhVHubJPUlmgLMS++FlnPcVO5ViHcFtAaNr\n\teaYSEEMmndA2YsNJxl9q39KwyXfFLS3m5iL3E+E4YNBbUjnR115alrgYOj/OxlN1LW\n\tvtS6TJGqVUEDaiI+RebZnuu9GTj39FeCEYEBw7Qs=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAEB1ahvzu=p1Uepn8He1_Uf6moR3RXdmOKE_0uAkK81GtHe+gg@mail.gmail.com>","References":"<20241011175653.3530945-1-chenghaoyang@chromium.org>\n\t<20241011175653.3530945-3-chenghaoyang@chromium.org>\n\t<172952806610.3353069.9140982882484061738@ping.linuxembedded.co.uk>\n\t<CAEB1ahvzu=p1Uepn8He1_Uf6moR3RXdmOKE_0uAkK81GtHe+gg@mail.gmail.com>","Subject":"Re: [PATCH 2/2] libcamera: Add Unsigned 16-bits Control Type","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tYudhistira Erlandinata <yerlandinata@google.com>,\n\tYudhistira Erlandinata <yerlandinata@chromium.org>","To":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Tue, 22 Oct 2024 11:20:48 +0100","Message-ID":"<172959244823.3022735.1486590930392863311@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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>"}}]