[{"id":11198,"web_url":"https://patchwork.libcamera.org/comment/11198/","msgid":"<20200706091720.ushj4dbnsvfisrts@uno.localdomain>","date":"2020-07-06T09:17:20","subject":"Re: [libcamera-devel] [PATCH v2 09/12] ipa: raspberrypi: Drop\n\tCameraHelper::GetOrientation()","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"replying to my question on the previous patch: yes!\n-.-'\n\nOn Sat, Jul 04, 2020 at 03:52:24AM +0300, Laurent Pinchart wrote:\n> The camera sensor orientation is now handled by the pipeline handler.\n> Drop hardcoded per-sensor orientations from the IPA.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n> ---\n>  src/ipa/raspberrypi/cam_helper.cpp        | 6 ------\n>  src/ipa/raspberrypi/cam_helper.hpp        | 7 -------\n>  src/ipa/raspberrypi/cam_helper_imx219.cpp | 7 -------\n>  src/ipa/raspberrypi/cam_helper_imx477.cpp | 7 -------\n>  src/ipa/raspberrypi/raspberrypi.cpp       | 6 ------\n>  5 files changed, 33 deletions(-)\n>\n> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp\n> index a0c73f99390f..b1343eb2cf4e 100644\n> --- a/src/ipa/raspberrypi/cam_helper.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> @@ -106,12 +106,6 @@ unsigned int CamHelper::MistrustFramesModeSwitch() const\n>  \treturn 0;\n>  }\n>\n> -CamTransform CamHelper::GetOrientation() const\n> -{\n> -\t/* Most sensors will be mounted the \"right\" way up? */\n> -\treturn CamTransform_IDENTITY;\n> -}\n> -\n>  RegisterCamHelper::RegisterCamHelper(char const *cam_name,\n>  \t\t\t\t     CamHelperCreateFunc create_func)\n>  {\n> diff --git a/src/ipa/raspberrypi/cam_helper.hpp b/src/ipa/raspberrypi/cam_helper.hpp\n> index 6877f4735031..97ce3e92ac2f 100644\n> --- a/src/ipa/raspberrypi/cam_helper.hpp\n> +++ b/src/ipa/raspberrypi/cam_helper.hpp\n> @@ -58,12 +58,6 @@ namespace RPi {\n>  //    (other than start-up), for which control algorithms should not run\n>  //    (for example, metadata may be unreliable).\n>\n> -// Bitfield to represent the default orientation of the camera.\n> -typedef int CamTransform;\n> -static constexpr CamTransform CamTransform_IDENTITY = 0;\n> -static constexpr CamTransform CamTransform_HFLIP    = 1;\n> -static constexpr CamTransform CamTransform_VFLIP    = 2;\n> -\n>  class CamHelper\n>  {\n>  public:\n> @@ -82,7 +76,6 @@ public:\n>  \tvirtual unsigned int HideFramesModeSwitch() const;\n>  \tvirtual unsigned int MistrustFramesStartup() const;\n>  \tvirtual unsigned int MistrustFramesModeSwitch() const;\n> -\tvirtual CamTransform GetOrientation() const;\n>  protected:\n>  \tMdParser *parser_;\n>  \tCameraMode mode_;\n> diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> index 35c6597c2016..1b9ce382f330 100644\n> --- a/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> @@ -49,7 +49,6 @@ public:\n>  \tdouble Gain(uint32_t gain_code) const override;\n>  \tunsigned int MistrustFramesModeSwitch() const override;\n>  \tbool SensorEmbeddedDataPresent() const override;\n> -\tCamTransform GetOrientation() const override;\n>  };\n>\n>  CamHelperImx219::CamHelperImx219()\n> @@ -86,12 +85,6 @@ bool CamHelperImx219::SensorEmbeddedDataPresent() const\n>  \treturn ENABLE_EMBEDDED_DATA;\n>  }\n>\n> -CamTransform CamHelperImx219::GetOrientation() const\n> -{\n> -\t/* Camera is \"upside down\" on this board. */\n> -\treturn CamTransform_HFLIP | CamTransform_VFLIP;\n> -}\n> -\n>  static CamHelper *Create()\n>  {\n>  \treturn new CamHelperImx219();\n> diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> index 695444567bb2..a53b47c013cb 100644\n> --- a/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> @@ -38,7 +38,6 @@ public:\n>  \tuint32_t GainCode(double gain) const override;\n>  \tdouble Gain(uint32_t gain_code) const override;\n>  \tbool SensorEmbeddedDataPresent() const override;\n> -\tCamTransform GetOrientation() const override;\n>  };\n>\n>  CamHelperImx477::CamHelperImx477()\n> @@ -61,12 +60,6 @@ bool CamHelperImx477::SensorEmbeddedDataPresent() const\n>  \treturn true;\n>  }\n>\n> -CamTransform CamHelperImx477::GetOrientation() const\n> -{\n> -\t/* Camera is \"upside down\" on this board. */\n> -\treturn CamTransform_HFLIP | CamTransform_VFLIP;\n> -}\n> -\n>  static CamHelper *Create()\n>  {\n>  \treturn new CamHelperImx477();\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 860be22ddb5d..b40ca9e44776 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -215,7 +215,6 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,\n>  \t\tint gainDelay, exposureDelay, sensorMetadata;\n>  \t\thelper_->GetDelays(exposureDelay, gainDelay);\n>  \t\tsensorMetadata = helper_->SensorEmbeddedDataPresent();\n> -\t\tRPi::CamTransform orientation = helper_->GetOrientation();\n>\n>  \t\tIPAOperationData op;\n>  \t\top.operation = RPI_IPA_ACTION_SET_SENSOR_CONFIG;\n> @@ -223,11 +222,6 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,\n>  \t\top.data.push_back(exposureDelay);\n>  \t\top.data.push_back(sensorMetadata);\n>\n> -\t\tControlList ctrls(unicam_ctrls_);\n> -\t\tctrls.set(V4L2_CID_HFLIP, (int32_t) !!(orientation & RPi::CamTransform_HFLIP));\n> -\t\tctrls.set(V4L2_CID_VFLIP, (int32_t) !!(orientation & RPi::CamTransform_VFLIP));\n> -\t\top.controls.push_back(ctrls);\n> -\n>  \t\tqueueFrameAction.emit(0, op);\n>  \t}\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 852FFBD790\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  6 Jul 2020 09:13:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5BB1460E01;\n\tMon,  6 Jul 2020 11:13:48 +0200 (CEST)","from relay12.mail.gandi.net (relay12.mail.gandi.net\n\t[217.70.178.232])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7237A603B1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  6 Jul 2020 11:13:47 +0200 (CEST)","from uno.localdomain (host-79-34-235-173.business.telecomitalia.it\n\t[79.34.235.173]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay12.mail.gandi.net (Postfix) with ESMTPSA id 90D5D20001F;\n\tMon,  6 Jul 2020 09:13:46 +0000 (UTC)"],"Date":"Mon, 6 Jul 2020 11:17:20 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20200706091720.ushj4dbnsvfisrts@uno.localdomain>","References":"<20200704005227.21782-1-laurent.pinchart@ideasonboard.com>\n\t<20200704005227.21782-10-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200704005227.21782-10-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 09/12] ipa: raspberrypi: Drop\n\tCameraHelper::GetOrientation()","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11240,"web_url":"https://patchwork.libcamera.org/comment/11240/","msgid":"<CAEmqJPpCgtMdgQPc6cD_=8rqeP65dR6d4dXWsQr63xEEEwuy6g@mail.gmail.com>","date":"2020-07-08T10:25:35","subject":"Re: [libcamera-devel] [PATCH v2 09/12] ipa: raspberrypi: Drop\n\tCameraHelper::GetOrientation()","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\n\nOn Sat, 4 Jul 2020 at 01:52, Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> The camera sensor orientation is now handled by the pipeline handler.\n> Drop hardcoded per-sensor orientations from the IPA.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n\n> ---\n>  src/ipa/raspberrypi/cam_helper.cpp        | 6 ------\n>  src/ipa/raspberrypi/cam_helper.hpp        | 7 -------\n>  src/ipa/raspberrypi/cam_helper_imx219.cpp | 7 -------\n>  src/ipa/raspberrypi/cam_helper_imx477.cpp | 7 -------\n>  src/ipa/raspberrypi/raspberrypi.cpp       | 6 ------\n>  5 files changed, 33 deletions(-)\n>\n> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp\n> index a0c73f99390f..b1343eb2cf4e 100644\n> --- a/src/ipa/raspberrypi/cam_helper.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> @@ -106,12 +106,6 @@ unsigned int CamHelper::MistrustFramesModeSwitch() const\n>         return 0;\n>  }\n>\n> -CamTransform CamHelper::GetOrientation() const\n> -{\n> -       /* Most sensors will be mounted the \"right\" way up? */\n> -       return CamTransform_IDENTITY;\n> -}\n> -\n>  RegisterCamHelper::RegisterCamHelper(char const *cam_name,\n>                                      CamHelperCreateFunc create_func)\n>  {\n> diff --git a/src/ipa/raspberrypi/cam_helper.hpp b/src/ipa/raspberrypi/cam_helper.hpp\n> index 6877f4735031..97ce3e92ac2f 100644\n> --- a/src/ipa/raspberrypi/cam_helper.hpp\n> +++ b/src/ipa/raspberrypi/cam_helper.hpp\n> @@ -58,12 +58,6 @@ namespace RPi {\n>  //    (other than start-up), for which control algorithms should not run\n>  //    (for example, metadata may be unreliable).\n>\n> -// Bitfield to represent the default orientation of the camera.\n> -typedef int CamTransform;\n> -static constexpr CamTransform CamTransform_IDENTITY = 0;\n> -static constexpr CamTransform CamTransform_HFLIP    = 1;\n> -static constexpr CamTransform CamTransform_VFLIP    = 2;\n> -\n>  class CamHelper\n>  {\n>  public:\n> @@ -82,7 +76,6 @@ public:\n>         virtual unsigned int HideFramesModeSwitch() const;\n>         virtual unsigned int MistrustFramesStartup() const;\n>         virtual unsigned int MistrustFramesModeSwitch() const;\n> -       virtual CamTransform GetOrientation() const;\n>  protected:\n>         MdParser *parser_;\n>         CameraMode mode_;\n> diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> index 35c6597c2016..1b9ce382f330 100644\n> --- a/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> @@ -49,7 +49,6 @@ public:\n>         double Gain(uint32_t gain_code) const override;\n>         unsigned int MistrustFramesModeSwitch() const override;\n>         bool SensorEmbeddedDataPresent() const override;\n> -       CamTransform GetOrientation() const override;\n>  };\n>\n>  CamHelperImx219::CamHelperImx219()\n> @@ -86,12 +85,6 @@ bool CamHelperImx219::SensorEmbeddedDataPresent() const\n>         return ENABLE_EMBEDDED_DATA;\n>  }\n>\n> -CamTransform CamHelperImx219::GetOrientation() const\n> -{\n> -       /* Camera is \"upside down\" on this board. */\n> -       return CamTransform_HFLIP | CamTransform_VFLIP;\n> -}\n> -\n>  static CamHelper *Create()\n>  {\n>         return new CamHelperImx219();\n> diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> index 695444567bb2..a53b47c013cb 100644\n> --- a/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> @@ -38,7 +38,6 @@ public:\n>         uint32_t GainCode(double gain) const override;\n>         double Gain(uint32_t gain_code) const override;\n>         bool SensorEmbeddedDataPresent() const override;\n> -       CamTransform GetOrientation() const override;\n>  };\n>\n>  CamHelperImx477::CamHelperImx477()\n> @@ -61,12 +60,6 @@ bool CamHelperImx477::SensorEmbeddedDataPresent() const\n>         return true;\n>  }\n>\n> -CamTransform CamHelperImx477::GetOrientation() const\n> -{\n> -       /* Camera is \"upside down\" on this board. */\n> -       return CamTransform_HFLIP | CamTransform_VFLIP;\n> -}\n> -\n>  static CamHelper *Create()\n>  {\n>         return new CamHelperImx477();\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 860be22ddb5d..b40ca9e44776 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -215,7 +215,6 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,\n>                 int gainDelay, exposureDelay, sensorMetadata;\n>                 helper_->GetDelays(exposureDelay, gainDelay);\n>                 sensorMetadata = helper_->SensorEmbeddedDataPresent();\n> -               RPi::CamTransform orientation = helper_->GetOrientation();\n>\n>                 IPAOperationData op;\n>                 op.operation = RPI_IPA_ACTION_SET_SENSOR_CONFIG;\n> @@ -223,11 +222,6 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,\n>                 op.data.push_back(exposureDelay);\n>                 op.data.push_back(sensorMetadata);\n>\n> -               ControlList ctrls(unicam_ctrls_);\n> -               ctrls.set(V4L2_CID_HFLIP, (int32_t) !!(orientation & RPi::CamTransform_HFLIP));\n> -               ctrls.set(V4L2_CID_VFLIP, (int32_t) !!(orientation & RPi::CamTransform_VFLIP));\n> -               op.controls.push_back(ctrls);\n> -\n>                 queueFrameAction.emit(0, op);\n>         }\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\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 12016BD792\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  8 Jul 2020 10:25:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C7A9610B2;\n\tWed,  8 Jul 2020 12:25:53 +0200 (CEST)","from mail-lf1-x144.google.com (mail-lf1-x144.google.com\n\t[IPv6:2a00:1450:4864:20::144])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EF368603B1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  8 Jul 2020 12:25:51 +0200 (CEST)","by mail-lf1-x144.google.com with SMTP id o4so26572775lfi.7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Jul 2020 03:25:51 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"X9dLfDWf\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=+YLiB697Ts6pjkTJvr4yrRhLGKcKuziukGe1mu4hE+U=;\n\tb=X9dLfDWfbkdAb4e39geUf/gML+eXH0jLck3qWzZ5bKNvZ86kKGmVihOLXfR4g7ugsI\n\tDiPqEfXw1P0mJe/4OAxqn9+72dfs9KyvOKiCcZOUEdEkV50tBFRaKMbUdZxqKGR6zdl8\n\tmSj30ejCa2JxfdHbMBX92lGEGRZDzXh7oGiLaUXM/bnw4kthSE5eSR6zSF90lWqlVEZk\n\tv8gooBEIcYwSZAnaHlfl5vAw2/i/zzbDjM2dzjhzCFT0X2TyWRpaiQuQh7SUFN1/Emgn\n\tq3GYHZJ90QMml1MDX1zMFOqJOjHt5eYATd8t1/X+SgnctOrzQ+LA3Df1rC4sprxyHxAV\n\t/EUA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=+YLiB697Ts6pjkTJvr4yrRhLGKcKuziukGe1mu4hE+U=;\n\tb=CKgzDo4Ydbr7U44WeIYnBV2xpJ0pm1r8dE0GoZmOs3mzUNkKv2CvdWZfMton19cH8k\n\trdfBscligYlU94Y7Ji4EegfOwFa9RQashmWMZ0hw3GfM3Rosxv2igNLRucgdr68PtU+O\n\tYG+WxP3K55Kpj9xaBVC+eC6BlogbNi+IQP/nI/W6pLUkO+KDtSsd2hHhbqEXzf+65LFr\n\ttbRrqfVeRUdmHkRTzjdq+uL3rKAKAreouNGPtiD8J2AdUoJOmfDEYMVOwJNca/joD0CP\n\tByRjn4F56E0cGoT63nNCk+eDrY0CQnmqtv8EKVKGJEmVHBesglAgWY6BgM4NXXZyN4sx\n\tdLVg==","X-Gm-Message-State":"AOAM5311ry9AuE9gjX8kcIPzHVRHm+n+d/IzZZnpLmYhjOKRV8UYcpdM\n\tIVmHRx/OGC5PuFR3LxVzB3fhN838pkAAPR70oDao9g==","X-Google-Smtp-Source":"ABdhPJwy0WjymEzugvqq8EIBOBsnbEopSk9leyq6mEZpy11DEV8aSWCx5IMIXpByWSz9rIh7/BW6TgBSZzXWFmQEpwo=","X-Received":"by 2002:a05:6512:3107:: with SMTP id\n\tn7mr36868674lfb.63.1594203951207; \n\tWed, 08 Jul 2020 03:25:51 -0700 (PDT)","MIME-Version":"1.0","References":"<20200704005227.21782-1-laurent.pinchart@ideasonboard.com>\n\t<20200704005227.21782-10-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20200704005227.21782-10-laurent.pinchart@ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Wed, 8 Jul 2020 11:25:35 +0100","Message-ID":"<CAEmqJPpCgtMdgQPc6cD_=8rqeP65dR6d4dXWsQr63xEEEwuy6g@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 09/12] ipa: raspberrypi: Drop\n\tCameraHelper::GetOrientation()","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]