[{"id":25266,"web_url":"https://patchwork.libcamera.org/comment/25266/","msgid":"<Yzxiqxd0vnNGpi+w@pendragon.ideasonboard.com>","date":"2022-10-04T16:43:23","subject":"Re: [libcamera-devel] [PATCH v1 2/9] ipa: raspberrypi: Add minimum\n\tand maximum line length fields to CameraMode","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 Mon, Oct 03, 2022 at 09:39:28AM +0100, Naushir Patuck via libcamera-devel wrote:\n> Add fields for minimum and maximum line length (in units of pixels) to the\n\nI think the unit is seconds, not pixels.\n\n> CameraMode structure. This replaces the existing lineLength field.\n> \n> Any use of the existing lineLength field is replaced by the new minLineLength\n> field, as logically we always want to use the fastest sensor readout by default.\n\nI wonder if that's always the case, but I think it's fine here.\n\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  src/ipa/raspberrypi/cam_helper.cpp           |  8 ++++----\n>  src/ipa/raspberrypi/controller/camera_mode.h |  2 +-\n>  src/ipa/raspberrypi/raspberrypi.cpp          | 13 +++++++------\n>  3 files changed, 12 insertions(+), 11 deletions(-)\n> \n> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp\n> index cac8f39ee763..42251ba29682 100644\n> --- a/src/ipa/raspberrypi/cam_helper.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> @@ -64,13 +64,13 @@ void CamHelper::process([[maybe_unused]] StatisticsPtr &stats,\n>  uint32_t CamHelper::exposureLines(const Duration exposure) const\n>  {\n>  \tassert(initialized_);\n> -\treturn exposure / mode_.lineLength;\n> +\treturn exposure / mode_.minLineLength;\n>  }\n>  \n>  Duration CamHelper::exposure(uint32_t exposureLines) const\n>  {\n>  \tassert(initialized_);\n> -\treturn exposureLines * mode_.lineLength;\n> +\treturn exposureLines * mode_.minLineLength;\n>  }\n>  \n>  uint32_t CamHelper::getVBlanking(Duration &exposure,\n> @@ -86,8 +86,8 @@ uint32_t CamHelper::getVBlanking(Duration &exposure,\n>  \t * minFrameDuration and maxFrameDuration are clamped by the caller\n>  \t * based on the limits for the active sensor mode.\n>  \t */\n> -\tframeLengthMin = minFrameDuration / mode_.lineLength;\n> -\tframeLengthMax = maxFrameDuration / mode_.lineLength;\n> +\tframeLengthMin = minFrameDuration / mode_.minLineLength;\n> +\tframeLengthMax = maxFrameDuration / mode_.minLineLength;\n>  \n>  \t/*\n>  \t * Limit the exposure to the maximum frame duration requested, and\n> diff --git a/src/ipa/raspberrypi/controller/camera_mode.h b/src/ipa/raspberrypi/controller/camera_mode.h\n> index a6ccf8c1c600..b7e73aae4698 100644\n> --- a/src/ipa/raspberrypi/controller/camera_mode.h\n> +++ b/src/ipa/raspberrypi/controller/camera_mode.h\n> @@ -32,7 +32,7 @@ struct CameraMode {\n>  \t/* scaling of the noise compared to the native sensor mode */\n>  \tdouble noiseFactor;\n>  \t/* line time */\n> -\tlibcamera::utils::Duration lineLength;\n> +\tlibcamera::utils::Duration minLineLength, maxLineLength;\n\n\tlibcamera::utils::Duration minLineLength;\n\tlibcamera::utils::Duration maxLineLength;\n\nwould be more readable.\n\n>  \t/* any camera transform *not* reflected already in the camera tuning */\n>  \tlibcamera::Transform transform;\n>  \t/* minimum and maximum fame lengths in units of lines */\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 358a119da222..67326bcf4a14 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -314,7 +314,7 @@ void IPARPi::start(const ControlList &controls, StartConfig *startConfig)\n>  \t}\n>  \n>  \tstartConfig->dropFrameCount = dropFrameCount_;\n> -\tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.lineLength;\n> +\tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.minLineLength;\n>  \tstartConfig->maxSensorFrameLengthMs = maxSensorFrameDuration.get<std::milli>();\n>  \n>  \tfirstStart_ = false;\n> @@ -356,7 +356,8 @@ void IPARPi::setMode(const IPACameraSensorInfo &sensorInfo)\n>  \t * Calculate the line length as the ratio between the line length in\n>  \t * pixels and the pixel rate.\n>  \t */\n> -\tmode_.lineLength = sensorInfo.minLineLength * (1.0s / sensorInfo.pixelRate);\n> +\tmode_.minLineLength = sensorInfo.minLineLength * (1.0s / sensorInfo.pixelRate);\n> +\tmode_.maxLineLength = sensorInfo.maxLineLength * (1.0s / sensorInfo.pixelRate);\n>  \n>  \t/*\n>  \t * Set the frame length limits for the mode to ensure exposure and\n> @@ -458,8 +459,8 @@ int IPARPi::configure(const IPACameraSensorInfo &sensorInfo,\n>  \t * based on the current sensor mode.\n>  \t */\n>  \tControlInfoMap::Map ctrlMap = ipaControls;\n> -\tconst Duration minSensorFrameDuration = mode_.minFrameLength * mode_.lineLength;\n> -\tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.lineLength;\n> +\tconst Duration minSensorFrameDuration = mode_.minFrameLength * mode_.minLineLength;\n> +\tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.minLineLength;\n>  \tctrlMap[&controls::FrameDurationLimits] =\n>  \t\tControlInfo(static_cast<int64_t>(minSensorFrameDuration.get<std::micro>()),\n>  \t\t\t    static_cast<int64_t>(maxSensorFrameDuration.get<std::micro>()));\n> @@ -1150,8 +1151,8 @@ void IPARPi::applyAWB(const struct AwbStatus *awbStatus, ControlList &ctrls)\n>  \n>  void IPARPi::applyFrameDurations(Duration minFrameDuration, Duration maxFrameDuration)\n>  {\n> -\tconst Duration minSensorFrameDuration = mode_.minFrameLength * mode_.lineLength;\n> -\tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.lineLength;\n> +\tconst Duration minSensorFrameDuration = mode_.minFrameLength * mode_.minLineLength;\n> +\tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.minLineLength;\n>  \n>  \t/*\n>  \t * This will only be applied once AGC recalculations occur.","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 A9E12BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  4 Oct 2022 16:43:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E489460AAE;\n\tTue,  4 Oct 2022 18:43:28 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3F66B601C7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Oct 2022 18:43:27 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id ABB172D9;\n\tTue,  4 Oct 2022 18:43:26 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1664901808;\n\tbh=dvEM/1Gx+5Y3cvj6plumyusFPPdwrOi9K301Wmqahr0=;\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=j08t9CC08r0U7662x/Z3/V2J2iraHcVteJI6haLOpFIekDJxtsMUxUo2RaUfk6LNe\n\tDz6O6ngc0FN1LnyKoVYNX5NOBt7EStAkMopQyXEX7S3gUae1sST4anCpwLcPHtHIQi\n\t6ymP1ScsPP0q/qUyMNvUASagFzzmLiuCST7J122leOi0wHkgvqw1L9EHX1dKTqaSMA\n\tKpHlOoFy3nA+PI7Q3M4Ev1+jtzFw576jUuKhj5cv/I4MPaAG5H84Ohr0FQ9Ygn+vDL\n\twLGTufTZQsUD2PmrQfzd2MYIffPV01b5x4ZX5fOcRLbas/9zFlXfHLoAwA7dw8sorG\n\tOrQ25w/y/8fDg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1664901806;\n\tbh=dvEM/1Gx+5Y3cvj6plumyusFPPdwrOi9K301Wmqahr0=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=IgrjKuhlUziSBe7IizxST0/Holx2q25NL3hEp7NxPstPvtFxEzcFg3NBBH3d++vCc\n\tUWuwIMrXuq4bTkarJdzJJmkQJct3v4FhcpIGTD9dkYHDHR0aZvNgNzWw1+SVI6ylm1\n\tEUEsMmzAJyD4Q9ohNMKHaBpBulryu8MFIWIbw5xc="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"IgrjKuhl\"; dkim-atps=neutral","Date":"Tue, 4 Oct 2022 19:43:23 +0300","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<Yzxiqxd0vnNGpi+w@pendragon.ideasonboard.com>","References":"<20221003083934.31629-1-naush@raspberrypi.com>\n\t<20221003083934.31629-3-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20221003083934.31629-3-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v1 2/9] ipa: raspberrypi: Add minimum\n\tand maximum line length fields to CameraMode","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>"}},{"id":25305,"web_url":"https://patchwork.libcamera.org/comment/25305/","msgid":"<CAEmqJPqQerwTBXkMOr2UkVoXf08Ab79LZmNWq9ULEJnAbGVOFw@mail.gmail.com>","date":"2022-10-05T12:03:25","subject":"Re: [libcamera-devel] [PATCH v1 2/9] ipa: raspberrypi: Add minimum\n\tand maximum line length fields to CameraMode","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nThank you for your feedback.\n\nOn Tue, 4 Oct 2022 at 17:43, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Thank you for the patch.\n>\n> On Mon, Oct 03, 2022 at 09:39:28AM +0100, Naushir Patuck via\n> libcamera-devel wrote:\n> > Add fields for minimum and maximum line length (in units of pixels) to\n> the\n>\n> I think the unit is seconds, not pixels.\n>\n> > CameraMode structure. This replaces the existing lineLength field.\n> >\n> > Any use of the existing lineLength field is replaced by the new\n> minLineLength\n> > field, as logically we always want to use the fastest sensor readout by\n> default.\n>\n> I wonder if that's always the case, but I think it's fine here.\n>\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  src/ipa/raspberrypi/cam_helper.cpp           |  8 ++++----\n> >  src/ipa/raspberrypi/controller/camera_mode.h |  2 +-\n> >  src/ipa/raspberrypi/raspberrypi.cpp          | 13 +++++++------\n> >  3 files changed, 12 insertions(+), 11 deletions(-)\n> >\n> > diff --git a/src/ipa/raspberrypi/cam_helper.cpp\n> b/src/ipa/raspberrypi/cam_helper.cpp\n> > index cac8f39ee763..42251ba29682 100644\n> > --- a/src/ipa/raspberrypi/cam_helper.cpp\n> > +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> > @@ -64,13 +64,13 @@ void CamHelper::process([[maybe_unused]]\n> StatisticsPtr &stats,\n> >  uint32_t CamHelper::exposureLines(const Duration exposure) const\n> >  {\n> >       assert(initialized_);\n> > -     return exposure / mode_.lineLength;\n> > +     return exposure / mode_.minLineLength;\n> >  }\n> >\n> >  Duration CamHelper::exposure(uint32_t exposureLines) const\n> >  {\n> >       assert(initialized_);\n> > -     return exposureLines * mode_.lineLength;\n> > +     return exposureLines * mode_.minLineLength;\n> >  }\n> >\n> >  uint32_t CamHelper::getVBlanking(Duration &exposure,\n> > @@ -86,8 +86,8 @@ uint32_t CamHelper::getVBlanking(Duration &exposure,\n> >        * minFrameDuration and maxFrameDuration are clamped by the caller\n> >        * based on the limits for the active sensor mode.\n> >        */\n> > -     frameLengthMin = minFrameDuration / mode_.lineLength;\n> > -     frameLengthMax = maxFrameDuration / mode_.lineLength;\n> > +     frameLengthMin = minFrameDuration / mode_.minLineLength;\n> > +     frameLengthMax = maxFrameDuration / mode_.minLineLength;\n> >\n> >       /*\n> >        * Limit the exposure to the maximum frame duration requested, and\n> > diff --git a/src/ipa/raspberrypi/controller/camera_mode.h\n> b/src/ipa/raspberrypi/controller/camera_mode.h\n> > index a6ccf8c1c600..b7e73aae4698 100644\n> > --- a/src/ipa/raspberrypi/controller/camera_mode.h\n> > +++ b/src/ipa/raspberrypi/controller/camera_mode.h\n> > @@ -32,7 +32,7 @@ struct CameraMode {\n> >       /* scaling of the noise compared to the native sensor mode */\n> >       double noiseFactor;\n> >       /* line time */\n> > -     libcamera::utils::Duration lineLength;\n> > +     libcamera::utils::Duration minLineLength, maxLineLength;\n>\n>         libcamera::utils::Duration minLineLength;\n>         libcamera::utils::Duration maxLineLength;\n>\n> would be more readable.\n>\n\nI did the single line statement to be consistent with the rest of the\nstruct definition, but I can amend this change so that all fields\nare on a single line.\n\nRegards,\nNaush\n\n\n>\n> >       /* any camera transform *not* reflected already in the camera\n> tuning */\n> >       libcamera::Transform transform;\n> >       /* minimum and maximum fame lengths in units of lines */\n> > diff --git a/src/ipa/raspberrypi/raspberrypi.cpp\n> b/src/ipa/raspberrypi/raspberrypi.cpp\n> > index 358a119da222..67326bcf4a14 100644\n> > --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> > +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> > @@ -314,7 +314,7 @@ void IPARPi::start(const ControlList &controls,\n> StartConfig *startConfig)\n> >       }\n> >\n> >       startConfig->dropFrameCount = dropFrameCount_;\n> > -     const Duration maxSensorFrameDuration = mode_.maxFrameLength *\n> mode_.lineLength;\n> > +     const Duration maxSensorFrameDuration = mode_.maxFrameLength *\n> mode_.minLineLength;\n> >       startConfig->maxSensorFrameLengthMs =\n> maxSensorFrameDuration.get<std::milli>();\n> >\n> >       firstStart_ = false;\n> > @@ -356,7 +356,8 @@ void IPARPi::setMode(const IPACameraSensorInfo\n> &sensorInfo)\n> >        * Calculate the line length as the ratio between the line length\n> in\n> >        * pixels and the pixel rate.\n> >        */\n> > -     mode_.lineLength = sensorInfo.minLineLength * (1.0s /\n> sensorInfo.pixelRate);\n> > +     mode_.minLineLength = sensorInfo.minLineLength * (1.0s /\n> sensorInfo.pixelRate);\n> > +     mode_.maxLineLength = sensorInfo.maxLineLength * (1.0s /\n> sensorInfo.pixelRate);\n> >\n> >       /*\n> >        * Set the frame length limits for the mode to ensure exposure and\n> > @@ -458,8 +459,8 @@ int IPARPi::configure(const IPACameraSensorInfo\n> &sensorInfo,\n> >        * based on the current sensor mode.\n> >        */\n> >       ControlInfoMap::Map ctrlMap = ipaControls;\n> > -     const Duration minSensorFrameDuration = mode_.minFrameLength *\n> mode_.lineLength;\n> > -     const Duration maxSensorFrameDuration = mode_.maxFrameLength *\n> mode_.lineLength;\n> > +     const Duration minSensorFrameDuration = mode_.minFrameLength *\n> mode_.minLineLength;\n> > +     const Duration maxSensorFrameDuration = mode_.maxFrameLength *\n> mode_.minLineLength;\n> >       ctrlMap[&controls::FrameDurationLimits] =\n> >\n>  ControlInfo(static_cast<int64_t>(minSensorFrameDuration.get<std::micro>()),\n> >\n>  static_cast<int64_t>(maxSensorFrameDuration.get<std::micro>()));\n> > @@ -1150,8 +1151,8 @@ void IPARPi::applyAWB(const struct AwbStatus\n> *awbStatus, ControlList &ctrls)\n> >\n> >  void IPARPi::applyFrameDurations(Duration minFrameDuration, Duration\n> maxFrameDuration)\n> >  {\n> > -     const Duration minSensorFrameDuration = mode_.minFrameLength *\n> mode_.lineLength;\n> > -     const Duration maxSensorFrameDuration = mode_.maxFrameLength *\n> mode_.lineLength;\n> > +     const Duration minSensorFrameDuration = mode_.minFrameLength *\n> mode_.minLineLength;\n> > +     const Duration maxSensorFrameDuration = mode_.maxFrameLength *\n> mode_.minLineLength;\n> >\n> >       /*\n> >        * This will only be applied once AGC recalculations occur.\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 17ED5C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  5 Oct 2022 12:03:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AFE2862369;\n\tWed,  5 Oct 2022 14:03:43 +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 44968601C7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  5 Oct 2022 14:03:42 +0200 (CEST)","by mail-lj1-x22f.google.com with SMTP id a10so18513049ljq.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 05 Oct 2022 05:03:42 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1664971423;\n\tbh=m6f5zq9cgQjCGFfUEIOy06XZ0F45zWdFRWh6/WKUXSI=;\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=1bLrN3F6yqC4+m4Qx6vteazgLQgj9w5rurtrc9YQD7rZqIKVsCZyqPXdzni3xmzRS\n\t63OCICEbS1HA0eSH+dv5hN2xOJxmN4B/U8ZRVWlNx3QK5DpfwDQRPCC03ntimULt1L\n\t2ySe9x018IiX85KTBEAVcxoKmaN8N1JjyhXsLK/aZi4wNDXcENml4/QvLDGYzgKLiV\n\tF29PfKb5npQW1UphO2wARxkJRz+b8E1UdL3bR10ElluCltsKQ0UZf1DAKSH9YkekdR\n\t1WtyAGE65nUywxymgnfqJGGsXP7nadGg2js33r/ZDGYNhM529zd6UhdFaGUmIqPhtY\n\tf8OsGCLtWZogQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date;\n\tbh=k6se8zNt0gCDWFZid8GRRG2Fe2tNRlFWk6o1QuVEIsA=;\n\tb=Khx0HCd4J2PDBd7jvCNzeZsJQpapDCl1n30dN40hEi0YtvCjosBR1fo8D2I7pgGIEk\n\t198DKuAEBEABerhgrC2RPmxeTRZvdUUGBBlUs+GEBxDYYmxxgTG8UPveKegrewGr3RbH\n\tCPhLwadqmtjzu73CCuStC3qQfTSDRrRz5xqDKwZnGIkPeyMxB8s5ZSplWAqcwXaUqPzm\n\tUgUxzWsShw70oSg1jHq5rqyPtIzeBHQi4tzYzaKyxcUl3w2ZnSzDCtYYedgCIuRysWUE\n\t0LDmSGxqHx1wFgjVcDRryxadJpqN/Zgxsgq+z8kLXJGnmuEa8yFGRtu85hNWo3DzK6yU\n\t+fzw=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"Khx0HCd4\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\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;\n\tbh=k6se8zNt0gCDWFZid8GRRG2Fe2tNRlFWk6o1QuVEIsA=;\n\tb=pKxV1gz88iIgFRRTjRp57Gnu6G36o5NYj1gm9YyjR8H6+Z4LI5VIvhj/uAtGEkwXd/\n\trvjcipi35Oc0p6PgvAC8tVF0F3z8kqISWWch1mxF3UPuRU0UZQp8TesAYm4v3opVMHsI\n\tigtwhgZpQnT7zuY2Tx0T+QJWhaC+kQBWq22KxlUtpXNPbJ/plMYNk81AkN3SSTXGdcZP\n\tPUWvBR9Z3JbtFDV/N5w8R69yxyw8v1htW8enXVmINThH1ozMiRitg+J6+3Khz7WZ4FNC\n\tJXfGFCZgZnxE56GarE+3+l4QhyFXG++WGoz6iZ65B4RpmyyOft9Ln/Tav/rLXSNoJRnZ\n\tlMjw==","X-Gm-Message-State":"ACrzQf2I+HyqQ+WIZHykRCxZhLd2gidQ4roNaOfhTRz7tNuDM7PDoqNK\n\tdSKNWfaIy6AyNy5FEpqfozYGH76wg68aQCAXkA8knw==","X-Google-Smtp-Source":"AMsMyM6fpmCEC00KLS/xJ+JQaGw0F19rTkQhzpDzC/rnjM2zLUpNBWepwByLXtlfSp+dNmmC7LBVI4j3V7zbUSESGZc=","X-Received":"by 2002:a05:651c:244:b0:26d:e2af:db15 with SMTP id\n\tx4-20020a05651c024400b0026de2afdb15mr4503251ljn.271.1664971421617;\n\tWed, 05 Oct 2022 05:03:41 -0700 (PDT)","MIME-Version":"1.0","References":"<20221003083934.31629-1-naush@raspberrypi.com>\n\t<20221003083934.31629-3-naush@raspberrypi.com>\n\t<Yzxiqxd0vnNGpi+w@pendragon.ideasonboard.com>","In-Reply-To":"<Yzxiqxd0vnNGpi+w@pendragon.ideasonboard.com>","Date":"Wed, 5 Oct 2022 13:03:25 +0100","Message-ID":"<CAEmqJPqQerwTBXkMOr2UkVoXf08Ab79LZmNWq9ULEJnAbGVOFw@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000025b0ea05ea485e02\"","Subject":"Re: [libcamera-devel] [PATCH v1 2/9] ipa: raspberrypi: Add minimum\n\tand maximum line length fields to CameraMode","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":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@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>"}}]