[{"id":30078,"web_url":"https://patchwork.libcamera.org/comment/30078/","msgid":"<171934871441.739659.11900477062520567230@ping.linuxembedded.co.uk>","date":"2024-06-25T20:51:54","subject":"Re: [PATCH v3 2/4] libcamera: converter_v4l2_m2m: Support crop\n\tselection","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Umang Jain (2024-06-25 07:23:25)\n> Add a helper to set selection rectangle on the video node\n> to support cropping and scaling capabilites.\n> \n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> ---\n>  .../internal/converter/converter_v4l2_m2m.h   |  5 ++++\n>  .../converter/converter_v4l2_m2m.cpp          | 27 +++++++++++++++++++\n>  2 files changed, 32 insertions(+)\n> \n> diff --git a/include/libcamera/internal/converter/converter_v4l2_m2m.h b/include/libcamera/internal/converter/converter_v4l2_m2m.h\n> index b9e59899..846e9f9e 100644\n> --- a/include/libcamera/internal/converter/converter_v4l2_m2m.h\n> +++ b/include/libcamera/internal/converter/converter_v4l2_m2m.h\n> @@ -30,6 +30,7 @@ class Size;\n>  class SizeRange;\n>  class Stream;\n>  struct StreamConfiguration;\n> +class Rectangle;\n>  class V4L2M2MDevice;\n>  \n>  class V4L2M2MConverter : public Converter\n> @@ -57,6 +58,8 @@ public:\n>         int queueBuffers(FrameBuffer *input,\n>                          const std::map<const Stream *, FrameBuffer *> &outputs);\n>  \n> +       int setSelection(const Stream *stream, unsigned int target, Rectangle *rect);\n> +\n>  private:\n>         class V4L2M2MStream : protected Loggable\n>         {\n> @@ -75,6 +78,8 @@ private:\n>  \n>                 int queueBuffers(FrameBuffer *input, FrameBuffer *output);\n>  \n> +               int setSelection(unsigned int target, Rectangle *rect);\n> +\n>         protected:\n>                 std::string logPrefix() const override;\n>  \n> diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp\n> index 2e77872e..c323f677 100644\n> --- a/src/libcamera/converter/converter_v4l2_m2m.cpp\n> +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp\n> @@ -155,6 +155,15 @@ int V4L2M2MConverter::V4L2M2MStream::queueBuffers(FrameBuffer *input, FrameBuffe\n>         return 0;\n>  }\n>  \n> +int V4L2M2MConverter::V4L2M2MStream::setSelection(unsigned int target, Rectangle *rect)\n> +{\n> +       int ret = m2m_->output()->setSelection(target, rect);\n\nCan selections ever be expected to be set on the input()?\n\n> +       if (ret < 0)\n> +               return ret;\n> +\n> +       return 0;\n> +}\n> +\n>  std::string V4L2M2MConverter::V4L2M2MStream::logPrefix() const\n>  {\n>         return stream_->configuration().toString();\n> @@ -374,6 +383,24 @@ int V4L2M2MConverter::exportBuffers(const Stream *stream, unsigned int count,\n>         return iter->second->exportBuffers(count, buffers);\n>  }\n>  \n> +/**\n> + * \\brief Set a selection rectangle \\a rect for \\a target\n> + * \\param[in] stream Pointer to output stream\n> + * \\param[in] target The selection target defined by the V4L2_SEL_TGT_* flags\n> + * \\param[inout] rect The selection rectangle to be applied\n> + *\n> + * \\return 0 on success or a negative error code otherwise\n> + */\n> +int V4L2M2MConverter::setSelection(const Stream *stream, unsigned int target,\n> +                                  Rectangle *rect)\n\nI'm not yet sure how far up the V4L2 types should be transferred in this, but as the class name is V4L2M2M - I think we're still good here.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> +{\n> +       auto iter = streams_.find(stream);\n> +       if (iter == streams_.end())\n> +               return -EINVAL;\n> +\n> +       return iter->second->setSelection(target, rect);\n> +}\n> +\n>  /**\n>   * \\copydoc libcamera::Converter::start\n>   */\n> -- \n> 2.44.0\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 45B12BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 25 Jun 2024 20:52:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5C9AA654AB;\n\tTue, 25 Jun 2024 22:51:59 +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 42C24654A2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 25 Jun 2024 22:51:57 +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 5F8807E0;\n\tTue, 25 Jun 2024 22:51:34 +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=\"buVmAhrI\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1719348694;\n\tbh=Ja1Gt+rwBpQfXdpeWoQct4Ntwoe6vXjdhMs0pVDef+k=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=buVmAhrIYf58AqYezZfE6jEQ/o5DThijk1CrDSvtKX6EdTOXduaZKiiJcwwyLC/3q\n\txBk78yCfGt99oj07197cdkFD6/FKSHjvJeDuYT+9jYqOBs30DR3gEQ4qMEVLTCn45V\n\tEpJ6A1x35B+P8zvW927GXPz0Tn1dPibnkRU4IgBY=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240625062327.50940-3-umang.jain@ideasonboard.com>","References":"<20240625062327.50940-1-umang.jain@ideasonboard.com>\n\t<20240625062327.50940-3-umang.jain@ideasonboard.com>","Subject":"Re: [PATCH v3 2/4] libcamera: converter_v4l2_m2m: Support crop\n\tselection","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Umang Jain <umang.jain@ideasonboard.com>","To":"Umang Jain <umang.jain@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 25 Jun 2024 21:51:54 +0100","Message-ID":"<171934871441.739659.11900477062520567230@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":30082,"web_url":"https://patchwork.libcamera.org/comment/30082/","msgid":"<544c9e39-0372-4a1e-b18f-4a98949d8cee@ideasonboard.com>","date":"2024-06-26T03:48:23","subject":"Re: [PATCH v3 2/4] libcamera: converter_v4l2_m2m: Support crop\n\tselection","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Kieran,\n\nOn 26/06/24 2:21 am, Kieran Bingham wrote:\n> Quoting Umang Jain (2024-06-25 07:23:25)\n>> Add a helper to set selection rectangle on the video node\n>> to support cropping and scaling capabilites.\n>>\n>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n>> ---\n>>   .../internal/converter/converter_v4l2_m2m.h   |  5 ++++\n>>   .../converter/converter_v4l2_m2m.cpp          | 27 +++++++++++++++++++\n>>   2 files changed, 32 insertions(+)\n>>\n>> diff --git a/include/libcamera/internal/converter/converter_v4l2_m2m.h b/include/libcamera/internal/converter/converter_v4l2_m2m.h\n>> index b9e59899..846e9f9e 100644\n>> --- a/include/libcamera/internal/converter/converter_v4l2_m2m.h\n>> +++ b/include/libcamera/internal/converter/converter_v4l2_m2m.h\n>> @@ -30,6 +30,7 @@ class Size;\n>>   class SizeRange;\n>>   class Stream;\n>>   struct StreamConfiguration;\n>> +class Rectangle;\n>>   class V4L2M2MDevice;\n>>   \n>>   class V4L2M2MConverter : public Converter\n>> @@ -57,6 +58,8 @@ public:\n>>          int queueBuffers(FrameBuffer *input,\n>>                           const std::map<const Stream *, FrameBuffer *> &outputs);\n>>   \n>> +       int setSelection(const Stream *stream, unsigned int target, Rectangle *rect);\n>> +\n>>   private:\n>>          class V4L2M2MStream : protected Loggable\n>>          {\n>> @@ -75,6 +78,8 @@ private:\n>>   \n>>                  int queueBuffers(FrameBuffer *input, FrameBuffer *output);\n>>   \n>> +               int setSelection(unsigned int target, Rectangle *rect);\n>> +\n>>          protected:\n>>                  std::string logPrefix() const override;\n>>   \n>> diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp\n>> index 2e77872e..c323f677 100644\n>> --- a/src/libcamera/converter/converter_v4l2_m2m.cpp\n>> +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp\n>> @@ -155,6 +155,15 @@ int V4L2M2MConverter::V4L2M2MStream::queueBuffers(FrameBuffer *input, FrameBuffe\n>>          return 0;\n>>   }\n>>   \n>> +int V4L2M2MConverter::V4L2M2MStream::setSelection(unsigned int target, Rectangle *rect)\n>> +{\n>> +       int ret = m2m_->output()->setSelection(target, rect);\n> Can selections ever be expected to be set on the input()?\n\nI don't think so - You get -EINVAL here if you try to set selection on \ninput (i.e. capture) nodes\n>\n>> +       if (ret < 0)\n>> +               return ret;\n>> +\n>> +       return 0;\n>> +}\n>> +\n>>   std::string V4L2M2MConverter::V4L2M2MStream::logPrefix() const\n>>   {\n>>          return stream_->configuration().toString();\n>> @@ -374,6 +383,24 @@ int V4L2M2MConverter::exportBuffers(const Stream *stream, unsigned int count,\n>>          return iter->second->exportBuffers(count, buffers);\n>>   }\n>>   \n>> +/**\n>> + * \\brief Set a selection rectangle \\a rect for \\a target\n>> + * \\param[in] stream Pointer to output stream\n>> + * \\param[in] target The selection target defined by the V4L2_SEL_TGT_* flags\n>> + * \\param[inout] rect The selection rectangle to be applied\n>> + *\n>> + * \\return 0 on success or a negative error code otherwise\n>> + */\n>> +int V4L2M2MConverter::setSelection(const Stream *stream, unsigned int target,\n>> +                                  Rectangle *rect)\n> I'm not yet sure how far up the V4L2 types should be transferred in this, but as the class name is V4L2M2M - I think we're still good here.\n>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n>> +{\n>> +       auto iter = streams_.find(stream);\n>> +       if (iter == streams_.end())\n>> +               return -EINVAL;\n>> +\n>> +       return iter->second->setSelection(target, rect);\n>> +}\n>> +\n>>   /**\n>>    * \\copydoc libcamera::Converter::start\n>>    */\n>> -- \n>> 2.44.0\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 A8E00BDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 Jun 2024 03:48:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1F570619CC;\n\tWed, 26 Jun 2024 05:48:26 +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 5620C619CC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Jun 2024 05:48:24 +0200 (CEST)","from [IPV6:2405:201:2015:f873:55d7:c02e:b2eb:ee3f] (unknown\n\t[IPv6:2405:201:2015:f873:55d7:c02e:b2eb:ee3f])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0E9FF73E;\n\tWed, 26 Jun 2024 05:48:00 +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=\"eOWjZvs1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1719373681;\n\tbh=pzL7jC+rlV3nLW9aZiNWCXB0nYM5T1rk/LHWrD1AX8k=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=eOWjZvs1OywsDpyIAX31P+Mj9s4TIs8uh9BRntf2LFBdAK3unHXBZ6zNWawF4aIR0\n\tyo7ApdspI9hS9QmLpadWstI9JK6AV8q+HO9dpImWD3cb8zTG1RN/F0UEHsA5XKwecv\n\tARHhg6wcjKUCh8CqZMFImVxzN9LJKGje7h9PpvG0=","Message-ID":"<544c9e39-0372-4a1e-b18f-4a98949d8cee@ideasonboard.com>","Date":"Wed, 26 Jun 2024 09:18:23 +0530","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 2/4] libcamera: converter_v4l2_m2m: Support crop\n\tselection","Content-Language":"en-US","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20240625062327.50940-1-umang.jain@ideasonboard.com>\n\t<20240625062327.50940-3-umang.jain@ideasonboard.com>\n\t<171934871441.739659.11900477062520567230@ping.linuxembedded.co.uk>","From":"Umang Jain <umang.jain@ideasonboard.com>","In-Reply-To":"<171934871441.739659.11900477062520567230@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":30087,"web_url":"https://patchwork.libcamera.org/comment/30087/","msgid":"<20240626073701.GD10453@pendragon.ideasonboard.com>","date":"2024-06-26T07:37:01","subject":"Re: [PATCH v3 2/4] libcamera: converter_v4l2_m2m: Support crop\n\tselection","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Tue, Jun 25, 2024 at 09:51:54PM +0100, Kieran Bingham wrote:\n> Quoting Umang Jain (2024-06-25 07:23:25)\n> > Add a helper to set selection rectangle on the video node\n> > to support cropping and scaling capabilites.\n> > \n> > Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> > ---\n> >  .../internal/converter/converter_v4l2_m2m.h   |  5 ++++\n> >  .../converter/converter_v4l2_m2m.cpp          | 27 +++++++++++++++++++\n> >  2 files changed, 32 insertions(+)\n> > \n> > diff --git a/include/libcamera/internal/converter/converter_v4l2_m2m.h b/include/libcamera/internal/converter/converter_v4l2_m2m.h\n> > index b9e59899..846e9f9e 100644\n> > --- a/include/libcamera/internal/converter/converter_v4l2_m2m.h\n> > +++ b/include/libcamera/internal/converter/converter_v4l2_m2m.h\n> > @@ -30,6 +30,7 @@ class Size;\n> >  class SizeRange;\n> >  class Stream;\n> >  struct StreamConfiguration;\n> > +class Rectangle;\n> >  class V4L2M2MDevice;\n> >  \n> >  class V4L2M2MConverter : public Converter\n> > @@ -57,6 +58,8 @@ public:\n> >         int queueBuffers(FrameBuffer *input,\n> >                          const std::map<const Stream *, FrameBuffer *> &outputs);\n> >  \n> > +       int setSelection(const Stream *stream, unsigned int target, Rectangle *rect);\n\nI think this feature belongs to the Converter API. The ability to crop\nthe input isn't restricted to V4L2-based converters. You will then also\nneed to extend the Converter API to report the supported features, as\nnot all converters will be able to crop. This also means that you\nshouldn't pass a V4L2 selection target, but create functions that focus\non features, not just exposing the V4L2 API to the upper level.\n\n> > +\n> >  private:\n> >         class V4L2M2MStream : protected Loggable\n> >         {\n> > @@ -75,6 +78,8 @@ private:\n> >  \n> >                 int queueBuffers(FrameBuffer *input, FrameBuffer *output);\n> >  \n> > +               int setSelection(unsigned int target, Rectangle *rect);\n> > +\n> >         protected:\n> >                 std::string logPrefix() const override;\n> >  \n> > diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp\n> > index 2e77872e..c323f677 100644\n> > --- a/src/libcamera/converter/converter_v4l2_m2m.cpp\n> > +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp\n> > @@ -155,6 +155,15 @@ int V4L2M2MConverter::V4L2M2MStream::queueBuffers(FrameBuffer *input, FrameBuffe\n> >         return 0;\n> >  }\n> >  \n> > +int V4L2M2MConverter::V4L2M2MStream::setSelection(unsigned int target, Rectangle *rect)\n> > +{\n> > +       int ret = m2m_->output()->setSelection(target, rect);\n> \n> Can selections ever be expected to be set on the input()?\n\nThanks to V4L2's lovely naming scheme, you've confusing input and output\n:-) output() here is the input of the M2M device, the other side is\ncapture().\n\n> > +       if (ret < 0)\n> > +               return ret;\n> > +\n> > +       return 0;\n> > +}\n> > +\n> >  std::string V4L2M2MConverter::V4L2M2MStream::logPrefix() const\n> >  {\n> >         return stream_->configuration().toString();\n> > @@ -374,6 +383,24 @@ int V4L2M2MConverter::exportBuffers(const Stream *stream, unsigned int count,\n> >         return iter->second->exportBuffers(count, buffers);\n> >  }\n> >  \n> > +/**\n> > + * \\brief Set a selection rectangle \\a rect for \\a target\n> > + * \\param[in] stream Pointer to output stream\n> > + * \\param[in] target The selection target defined by the V4L2_SEL_TGT_* flags\n> > + * \\param[inout] rect The selection rectangle to be applied\n> > + *\n> > + * \\return 0 on success or a negative error code otherwise\n> > + */\n> > +int V4L2M2MConverter::setSelection(const Stream *stream, unsigned int target,\n> > +                                  Rectangle *rect)\n> \n> I'm not yet sure how far up the V4L2 types should be transferred in\n> this, but as the class name is V4L2M2M - I think we're still good\n> here.\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n> > +{\n> > +       auto iter = streams_.find(stream);\n> > +       if (iter == streams_.end())\n> > +               return -EINVAL;\n> > +\n> > +       return iter->second->setSelection(target, rect);\n> > +}\n> > +\n> >  /**\n> >   * \\copydoc libcamera::Converter::start\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 7A74BBDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 Jun 2024 07:37:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D3BAD654AA;\n\tWed, 26 Jun 2024 09:37:25 +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 EB1A7654A3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Jun 2024 09:37:23 +0200 (CEST)","from pendragon.ideasonboard.com (unknown [193.209.96.36])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A2C4B73E;\n\tWed, 26 Jun 2024 09:37:00 +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=\"OVWlpMce\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1719387420;\n\tbh=JtAhCVX8TF7A5l5iYflStrkvR8rN3QEqq3nIDQvGmAk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=OVWlpMcenzWGgYcRn7uyLKF4fBgCZHLeMX4JEw7PbC0caw/r++WKwQK0e1h1Ev8fS\n\tFr/1zk54U2jY3eNN47EgJs6Au/1YTTISPzhLFcFw+tD06qW46QVwPw/E3nXP1/U6oJ\n\tvpYUYevu8Z/MyZ2QZuIMcS3uD6noW1J0YfLAvojA=","Date":"Wed, 26 Jun 2024 10:37:01 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Umang Jain <umang.jain@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v3 2/4] libcamera: converter_v4l2_m2m: Support crop\n\tselection","Message-ID":"<20240626073701.GD10453@pendragon.ideasonboard.com>","References":"<20240625062327.50940-1-umang.jain@ideasonboard.com>\n\t<20240625062327.50940-3-umang.jain@ideasonboard.com>\n\t<171934871441.739659.11900477062520567230@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<171934871441.739659.11900477062520567230@ping.linuxembedded.co.uk>","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>"}}]