[{"id":27192,"web_url":"https://patchwork.libcamera.org/comment/27192/","msgid":"<CAHW6GYJ4G5AfVk4fwD=p2LHs4-h1-GzzgKkY+y58hP4Qu9mBwA@mail.gmail.com>","date":"2023-05-31T15:09:39","subject":"Re: [libcamera-devel] [PATCH v1 2/2] ipa: rpi: Handle controls for\n\tmono variant sensors","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Naush\n\nThanks for the patch!\n\nOn Wed, 31 May 2023 at 15:39, Naushir Patuck via libcamera-devel\n<libcamera-devel@lists.libcamera.org> wrote:\n>\n> Do not advertise colour related controls (i.e. [A]WB, colour saturation)\n> in the ControlInfoMap of available controls returned out to the\n> application.\n>\n> Silently fail these controls in the control handler in case applications\n> don't use the advertised ControlInfoMap to validate controls.\n>\n> As a drive-by, don't advertise controls::ColourCorrectionMatrix in the\n> ControlInfoMap as it is not handled by the IPA.\n>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n\nI think silently ignoring the colour controls in this situation seems\nreasonable.\n\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nThanks\nDavid\n\n> ---\n>  src/ipa/rpi/common/ipa_base.cpp | 34 ++++++++++++++++++++++++++++-----\n>  1 file changed, 29 insertions(+), 5 deletions(-)\n>\n> diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp\n> index 150fe433d0df..8de454637cfe 100644\n> --- a/src/ipa/rpi/common/ipa_base.cpp\n> +++ b/src/ipa/rpi/common/ipa_base.cpp\n> @@ -60,19 +60,22 @@ const ControlInfoMap::Map ipaControls{\n>         { &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },\n>         { &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },\n>         { &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) },\n> -       { &controls::AwbEnable, ControlInfo(false, true) },\n> -       { &controls::ColourGains, ControlInfo(0.0f, 32.0f) },\n> -       { &controls::AwbMode, ControlInfo(controls::AwbModeValues) },\n>         { &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) },\n>         { &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) },\n> -       { &controls::Saturation, ControlInfo(0.0f, 32.0f, 1.0f) },\n>         { &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },\n> -       { &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) },\n>         { &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },\n>         { &controls::FrameDurationLimits, ControlInfo(INT64_C(33333), INT64_C(120000)) },\n>         { &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) }\n>  };\n>\n> +/* IPA controls handled conditionally, if the sensor is not mono */\n> +const ControlInfoMap::Map ipaColourControls{\n> +       { &controls::AwbEnable, ControlInfo(false, true) },\n> +       { &controls::AwbMode, ControlInfo(controls::AwbModeValues) },\n> +       { &controls::ColourGains, ControlInfo(0.0f, 32.0f) },\n> +       { &controls::Saturation, ControlInfo(0.0f, 32.0f, 1.0f) },\n> +};\n> +\n>  /* IPA controls handled conditionally, if the lens has a focus control */\n>  const ControlInfoMap::Map ipaAfControls{\n>         { &controls::AfMode, ControlInfo(controls::AfModeValues) },\n> @@ -145,6 +148,8 @@ int32_t IpaBase::init(const IPASettings &settings, const InitParams &params, Ini\n>\n>         /* Return the controls handled by the IPA */\n>         ControlInfoMap::Map ctrlMap = ipaControls;\n> +       if (!monoSensor_)\n> +               ctrlMap.merge(ControlInfoMap::Map(ipaColourControls));\n>         if (lensPresent_)\n>                 ctrlMap.merge(ControlInfoMap::Map(ipaAfControls));\n>         result->controlInfo = ControlInfoMap(std::move(ctrlMap), controls::controls);\n> @@ -221,6 +226,9 @@ int32_t IpaBase::configure(const IPACameraSensorInfo &sensorInfo, const ConfigPa\n>                 ControlInfo(static_cast<int32_t>(mode_.minShutter.get<std::micro>()),\n>                             static_cast<int32_t>(mode_.maxShutter.get<std::micro>()));\n>\n> +       if (!monoSensor_)\n> +               ctrlMap.merge(ControlInfoMap::Map(ipaColourControls));\n> +\n>         /* Declare Autofocus controls, only if we have a controllable lens */\n>         if (lensPresent_)\n>                 ctrlMap.merge(ControlInfoMap::Map(ipaAfControls));\n> @@ -781,6 +789,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>                 }\n>\n>                 case controls::AWB_ENABLE: {\n> +                       /* Silently ignore this control for a mono sensor. */\n> +                       if (monoSensor_)\n> +                               break;\n> +\n>                         RPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(\n>                                 controller_.getAlgorithm(\"awb\"));\n>                         if (!awb) {\n> @@ -800,6 +812,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>                 }\n>\n>                 case controls::AWB_MODE: {\n> +                       /* Silently ignore this control for a mono sensor. */\n> +                       if (monoSensor_)\n> +                               break;\n> +\n>                         RPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(\n>                                 controller_.getAlgorithm(\"awb\"));\n>                         if (!awb) {\n> @@ -820,6 +836,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>                 }\n>\n>                 case controls::COLOUR_GAINS: {\n> +                       /* Silently ignore this control for a mono sensor. */\n> +                       if (monoSensor_)\n> +                               break;\n> +\n>                         auto gains = ctrl.second.get<Span<const float>>();\n>                         RPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(\n>                                 controller_.getAlgorithm(\"awb\"));\n> @@ -868,6 +888,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>                 }\n>\n>                 case controls::SATURATION: {\n> +                       /* Silently ignore this control for a mono sensor. */\n> +                       if (monoSensor_)\n> +                               break;\n> +\n>                         RPiController::CcmAlgorithm *ccm = dynamic_cast<RPiController::CcmAlgorithm *>(\n>                                 controller_.getAlgorithm(\"ccm\"));\n>                         if (!ccm) {\n> --\n> 2.34.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 63D25C3213\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 31 May 2023 15:09:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D6393626FE;\n\tWed, 31 May 2023 17:09:52 +0200 (CEST)","from mail-oa1-x2f.google.com (mail-oa1-x2f.google.com\n\t[IPv6:2001:4860:4864:20::2f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 614B8626F8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 31 May 2023 17:09:51 +0200 (CEST)","by mail-oa1-x2f.google.com with SMTP id\n\t586e51a60fabf-1a213e3acbcso187691fac.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 31 May 2023 08:09:51 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685545792;\n\tbh=UHp3irU34nIW1NY2g3pedH19GDwj7ugipQ8ZewJfpNM=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=rzziC8APFTAxzbXzmtIoEa7LN68ECaG+eGnCjq+50Wpz+CS5K/CW3gyxl1xWsc776\n\tRNSa0KVtdA4yr2ospXfVjz84MepVfq+DGokdWJJ/X37E+O6hZXokWLzGxmu9WdVcPK\n\tzBddhzZ5r8V3KoXG7LIdwDFM1NiNBjHmcIhnicUDW/psyBSt71y3puf6OkdfXd9LXX\n\tcJZJOJOL0zKKYODy6c5EvfHpCVooOhV2JKlaIo16heq8v+pjJ5zFOZqSoEYnm/90n1\n\t8MGJo8clQYxLUFkThe96xA0brUch4ZHbiiV1jBgSfiq0CmhKGcYPBouzdbGMiGCidk\n\t0w9ElCQQtJyiQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1685545790; x=1688137790;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Oh+XmGyPeTiy7z+FoDb4gWkF6VXEirM2uCosaIqqTl0=;\n\tb=olDgTdAJhEFydKj/HbE/ftJvFgfNwaqtnDOjNYkUixb9eLSE6xEKsoCkbny1vl4veB\n\tKLnfOCUcQNn9xhrKVQWmDip0AJPaSMf9VX0pBef+NFa4CSQ0Fi7K7XSr6B7w3wQ04AKT\n\t1SB+abG1m+hA2U3aUIdP2+x3OcVjUcFGaaJ5vgeC8TkOuzfXAaFQKyPD5O6cDkUaqWCa\n\tcnsXJ00//HBPS4BjRjD2kx3Fa1A9WL3r+NejqGhzVpdOPEJEm8PjnzJN5lb8bx61IjJS\n\tg1ZSw7fRxcHxKnTG+E7VHseLBZTsKSDdd0cql2Ro96WRhsyAwwIGdbNtgpgcYxYzuL/t\n\tBIng=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"olDgTdAJ\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1685545790; x=1688137790;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=Oh+XmGyPeTiy7z+FoDb4gWkF6VXEirM2uCosaIqqTl0=;\n\tb=VhksDl3gWCylL5Mwc3nutN4RTaVZyM3L6nssCC4ffNqjaZkM+HJbWqjH0pdiYhrr7C\n\tibytVBJpoHIiSDk0rk0fiGqGaQLlM68THsH8RbdK6dm25wF/7VNpAJ5BYVc5GfUXvMH5\n\tqLUxLQPkyT1h5fkOZEw5uFY8DUOXOtnoarCM7JhNp++Ds3HwEEfs1Ifi704zyA75IyiK\n\tc48pHVQdDSFXZZSzGwwYw6T+kFOdhTlYDh8/zsbNkA1ZbG1POhcUy6mcD82J7maFvlox\n\tA7yrk5E6/GqjCCALWfbHVh6/hZWq1yA5Arpx3rTK+XFFQ3CXm54g9zezoiIylcHqRLCy\n\twWTA==","X-Gm-Message-State":"AC+VfDzZtaJ0RVCQOoXmagseJ9ZjQ+Ag5AZzZrqAj7p9sVzkN7Y9lf0q\n\tXGUnIHEF8dKjFMxLknSI23ZLWXH6RiVIwmayHjbzD1vVK0JZxrUAPic=","X-Google-Smtp-Source":"ACHHUZ53HSID4MUwEI65ITiA0LfbiitN3dhxctlb6jU/Fwyj/W4X9respHzXGYjRHNGjzBPt8eMX/HDCOdVeLnB8iKc=","X-Received":"by 2002:a05:6870:e7c3:b0:192:55c8:454b with SMTP id\n\tq3-20020a056870e7c300b0019255c8454bmr2775389oak.10.1685545790145;\n\tWed, 31 May 2023 08:09:50 -0700 (PDT)","MIME-Version":"1.0","References":"<20230531143946.23571-1-naush@raspberrypi.com>\n\t<20230531143946.23571-3-naush@raspberrypi.com>","In-Reply-To":"<20230531143946.23571-3-naush@raspberrypi.com>","Date":"Wed, 31 May 2023 16:09:39 +0100","Message-ID":"<CAHW6GYJ4G5AfVk4fwD=p2LHs4-h1-GzzgKkY+y58hP4Qu9mBwA@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v1 2/2] ipa: rpi: Handle controls for\n\tmono variant sensors","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>","From":"David Plowman via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"David Plowman <david.plowman@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27219,"web_url":"https://patchwork.libcamera.org/comment/27219/","msgid":"<20230602075000.GB19463@pendragon.ideasonboard.com>","date":"2023-06-02T07:50:00","subject":"Re: [libcamera-devel] [PATCH v1 2/2] ipa: rpi: Handle controls for\n\tmono variant sensors","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nThank you for the patch.\n\nOn Wed, May 31, 2023 at 03:39:46PM +0100, Naushir Patuck via libcamera-devel wrote:\n> Do not advertise colour related controls (i.e. [A]WB, colour saturation)\n> in the ControlInfoMap of available controls returned out to the\n> application.\n> \n> Silently fail these controls in the control handler in case applications\n\nDid you mean \"ignore\" instead of \"fail\" ?\n\n> don't use the advertised ControlInfoMap to validate controls.\n> \n> As a drive-by, don't advertise controls::ColourCorrectionMatrix in the\n> ControlInfoMap as it is not handled by the IPA.\n> \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nI will wait until we finish the discussion regarding 1/2 before applying\nthe series.\n\n> ---\n>  src/ipa/rpi/common/ipa_base.cpp | 34 ++++++++++++++++++++++++++++-----\n>  1 file changed, 29 insertions(+), 5 deletions(-)\n> \n> diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp\n> index 150fe433d0df..8de454637cfe 100644\n> --- a/src/ipa/rpi/common/ipa_base.cpp\n> +++ b/src/ipa/rpi/common/ipa_base.cpp\n> @@ -60,19 +60,22 @@ const ControlInfoMap::Map ipaControls{\n>  \t{ &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },\n>  \t{ &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },\n>  \t{ &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) },\n> -\t{ &controls::AwbEnable, ControlInfo(false, true) },\n> -\t{ &controls::ColourGains, ControlInfo(0.0f, 32.0f) },\n> -\t{ &controls::AwbMode, ControlInfo(controls::AwbModeValues) },\n>  \t{ &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) },\n>  \t{ &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) },\n> -\t{ &controls::Saturation, ControlInfo(0.0f, 32.0f, 1.0f) },\n>  \t{ &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },\n> -\t{ &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) },\n>  \t{ &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },\n>  \t{ &controls::FrameDurationLimits, ControlInfo(INT64_C(33333), INT64_C(120000)) },\n>  \t{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) }\n>  };\n>  \n> +/* IPA controls handled conditionally, if the sensor is not mono */\n> +const ControlInfoMap::Map ipaColourControls{\n> +\t{ &controls::AwbEnable, ControlInfo(false, true) },\n> +\t{ &controls::AwbMode, ControlInfo(controls::AwbModeValues) },\n> +\t{ &controls::ColourGains, ControlInfo(0.0f, 32.0f) },\n> +\t{ &controls::Saturation, ControlInfo(0.0f, 32.0f, 1.0f) },\n> +};\n> +\n>  /* IPA controls handled conditionally, if the lens has a focus control */\n>  const ControlInfoMap::Map ipaAfControls{\n>  \t{ &controls::AfMode, ControlInfo(controls::AfModeValues) },\n> @@ -145,6 +148,8 @@ int32_t IpaBase::init(const IPASettings &settings, const InitParams &params, Ini\n>  \n>  \t/* Return the controls handled by the IPA */\n>  \tControlInfoMap::Map ctrlMap = ipaControls;\n> +\tif (!monoSensor_)\n> +\t\tctrlMap.merge(ControlInfoMap::Map(ipaColourControls));\n>  \tif (lensPresent_)\n>  \t\tctrlMap.merge(ControlInfoMap::Map(ipaAfControls));\n>  \tresult->controlInfo = ControlInfoMap(std::move(ctrlMap), controls::controls);\n> @@ -221,6 +226,9 @@ int32_t IpaBase::configure(const IPACameraSensorInfo &sensorInfo, const ConfigPa\n>  \t\tControlInfo(static_cast<int32_t>(mode_.minShutter.get<std::micro>()),\n>  \t\t\t    static_cast<int32_t>(mode_.maxShutter.get<std::micro>()));\n>  \n> +\tif (!monoSensor_)\n> +\t\tctrlMap.merge(ControlInfoMap::Map(ipaColourControls));\n> +\n>  \t/* Declare Autofocus controls, only if we have a controllable lens */\n>  \tif (lensPresent_)\n>  \t\tctrlMap.merge(ControlInfoMap::Map(ipaAfControls));\n> @@ -781,6 +789,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>  \t\t}\n>  \n>  \t\tcase controls::AWB_ENABLE: {\n> +\t\t\t/* Silently ignore this control for a mono sensor. */\n> +\t\t\tif (monoSensor_)\n> +\t\t\t\tbreak;\n> +\n>  \t\t\tRPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(\n>  \t\t\t\tcontroller_.getAlgorithm(\"awb\"));\n>  \t\t\tif (!awb) {\n> @@ -800,6 +812,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>  \t\t}\n>  \n>  \t\tcase controls::AWB_MODE: {\n> +\t\t\t/* Silently ignore this control for a mono sensor. */\n> +\t\t\tif (monoSensor_)\n> +\t\t\t\tbreak;\n> +\n>  \t\t\tRPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(\n>  \t\t\t\tcontroller_.getAlgorithm(\"awb\"));\n>  \t\t\tif (!awb) {\n> @@ -820,6 +836,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>  \t\t}\n>  \n>  \t\tcase controls::COLOUR_GAINS: {\n> +\t\t\t/* Silently ignore this control for a mono sensor. */\n> +\t\t\tif (monoSensor_)\n> +\t\t\t\tbreak;\n> +\n>  \t\t\tauto gains = ctrl.second.get<Span<const float>>();\n>  \t\t\tRPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(\n>  \t\t\t\tcontroller_.getAlgorithm(\"awb\"));\n> @@ -868,6 +888,10 @@ void IpaBase::applyControls(const ControlList &controls)\n>  \t\t}\n>  \n>  \t\tcase controls::SATURATION: {\n> +\t\t\t/* Silently ignore this control for a mono sensor. */\n> +\t\t\tif (monoSensor_)\n> +\t\t\t\tbreak;\n> +\n>  \t\t\tRPiController::CcmAlgorithm *ccm = dynamic_cast<RPiController::CcmAlgorithm *>(\n>  \t\t\t\tcontroller_.getAlgorithm(\"ccm\"));\n>  \t\t\tif (!ccm) {","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 9C154C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  2 Jun 2023 07:50:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0636C626F8;\n\tFri,  2 Jun 2023 09:50:04 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8B63E626F5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  2 Jun 2023 09:50:02 +0200 (CEST)","from pendragon.ideasonboard.com (om126156168104.26.openmobile.ne.jp\n\t[126.156.168.104])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 13A70B2A;\n\tFri,  2 Jun 2023 09:49:38 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685692204;\n\tbh=j7SOXN5grGPwvXIubxxYvo4YNtmthGiKmoT1pTUs5q4=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=ZwJ+dQq+AB1qz3taUZdctUj89DtnWQStvqtI+yWa2YNiWvs9GKmCLZuhnHTfYArQr\n\tv4/fSRprS1Z0KLx8SXALH9rE5U5KFeTeyRGKvsNNXr7zUrIERa2b73NeC8fAS4hQiz\n\tZPuVdyWHZP1+TYj8RIVE4e8s/kb1lh7HzX2e6duXAW8JPkwZfQdPcg4Y732corgkG4\n\t6RbDro60yTgqyOraC6AcHP/J03oaC/l0Bields+vjv3YAiPPzcfvA/kK35Lxh1m13N\n\tuloM5F00B8wFAAGbl+IBRBhfeIj+yJ+fPQweL5FXqrIsTmM1q2B9I+m0w3Ldvt7BrA\n\t+t/CN7lCOdBJQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1685692180;\n\tbh=j7SOXN5grGPwvXIubxxYvo4YNtmthGiKmoT1pTUs5q4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=HT+2nt2mC0IR0JIaHdexbgjVxGbDOavxVUs6WPPSOWLqgVv7tMhy3ATBz/fB8+Te2\n\tEsVgEuUPR5LYSp/ZXifH2jiY+q0gvEv2xZLeBroB3VuC+xY1s7QE5ndaZJPxssVCDi\n\tO/LWOXZCEzVXGLi6Xo7zQY/id5rCmpPDXxqiSHkE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"HT+2nt2m\"; dkim-atps=neutral","Date":"Fri, 2 Jun 2023 10:50:00 +0300","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<20230602075000.GB19463@pendragon.ideasonboard.com>","References":"<20230531143946.23571-1-naush@raspberrypi.com>\n\t<20230531143946.23571-3-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20230531143946.23571-3-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v1 2/2] ipa: rpi: Handle controls for\n\tmono variant sensors","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]