[{"id":1713,"web_url":"https://patchwork.libcamera.org/comment/1713/","msgid":"<20190528143601.GC14336@pendragon.ideasonboard.com>","date":"2019-05-28T14:36:01","subject":"Re: [libcamera-devel] [PATCH v2 3/6] libcamera: v4l2_device: Add\n\tMETA support in g/s_fmt","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Mon, May 27, 2019 at 11:05:56AM +0200, Jacopo Mondi wrote:\n> Add two operations to set and get format on devices implementing the\n> V4L2 Metadata Interface, identified by the META_OUTPUT or META_CAPTURE\n> capabilities.\n> \n> While at it, sort get/setFormat operations alphabetically and unify\n> their style (eg. no empty line before ioctl).\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/libcamera/include/v4l2_device.h |   7 +-\n>  src/libcamera/v4l2_device.cpp       | 108 +++++++++++++++++++++-------\n>  2 files changed, 89 insertions(+), 26 deletions(-)\n> \n> diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h\n> index cecafa151caa..bdecc087fe5a 100644\n> --- a/src/libcamera/include/v4l2_device.h\n> +++ b/src/libcamera/include/v4l2_device.h\n> @@ -150,12 +150,15 @@ protected:\n>  \tstd::string logPrefix() const;\n>  \n>  private:\n> -\tint getFormatSingleplane(V4L2DeviceFormat *format);\n> -\tint setFormatSingleplane(V4L2DeviceFormat *format);\n> +\tint getFormatMeta(V4L2DeviceFormat *format);\n> +\tint setFormatMeta(V4L2DeviceFormat *format);\n>  \n>  \tint getFormatMultiplane(V4L2DeviceFormat *format);\n>  \tint setFormatMultiplane(V4L2DeviceFormat *format);\n>  \n> +\tint getFormatSingleplane(V4L2DeviceFormat *format);\n> +\tint setFormatSingleplane(V4L2DeviceFormat *format);\n> +\n>  \tint requestBuffers(unsigned int count);\n>  \tint createPlane(Buffer *buffer, unsigned int plane,\n>  \t\t\tunsigned int length);\n> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> index e42f6ef0c340..c9251da465af 100644\n> --- a/src/libcamera/v4l2_device.cpp\n> +++ b/src/libcamera/v4l2_device.cpp\n> @@ -428,8 +428,12 @@ std::string V4L2Device::logPrefix() const\n>   */\n>  int V4L2Device::getFormat(V4L2DeviceFormat *format)\n>  {\n> -\treturn caps_.isMultiplanar() ? getFormatMultiplane(format) :\n> -\t\t\t\t       getFormatSingleplane(format);\n> +\tif (caps_.isMeta())\n> +\t\treturn getFormatMeta(format);\n> +\telse if (caps_.isMultiplanar())\n> +\t\treturn getFormatMultiplane(format);\n> +\telse\n> +\t\treturn getFormatSingleplane(format);\n>  }\n>  \n>  /**\n> @@ -443,14 +447,18 @@ int V4L2Device::getFormat(V4L2DeviceFormat *format)\n>   */\n>  int V4L2Device::setFormat(V4L2DeviceFormat *format)\n>  {\n> -\treturn caps_.isMultiplanar() ? setFormatMultiplane(format) :\n> -\t\t\t\t       setFormatSingleplane(format);\n> +\tif (caps_.isMeta())\n> +\t\treturn setFormatMeta(format);\n> +\telse if (caps_.isMultiplanar())\n> +\t\treturn setFormatMultiplane(format);\n> +\telse\n> +\t\treturn setFormatSingleplane(format);\n>  }\n>  \n> -int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> +int V4L2Device::getFormatMeta(V4L2DeviceFormat *format)\n>  {\n>  \tstruct v4l2_format v4l2Format = {};\n> -\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> +\tstruct v4l2_meta_format *pix = &v4l2Format.fmt.meta;\n>  \tint ret;\n>  \n>  \tv4l2Format.type = bufferType_;\n> @@ -461,29 +469,24 @@ int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n>  \t\treturn ret;\n>  \t}\n>  \n> -\tformat->size.width = pix->width;\n> -\tformat->size.height = pix->height;\n> -\tformat->fourcc = pix->pixelformat;\n> +\tformat->size.width = 0;\n> +\tformat->size.height = 0;\n> +\tformat->fourcc = pix->dataformat;\n>  \tformat->planesCount = 1;\n> -\tformat->planes[0].bpl = pix->bytesperline;\n> -\tformat->planes[0].size = pix->sizeimage;\n> +\tformat->planes[0].bpl = pix->buffersize;\n> +\tformat->planes[0].size = pix->buffersize;\n>  \n>  \treturn 0;\n>  }\n>  \n> -int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> +int V4L2Device::setFormatMeta(V4L2DeviceFormat *format)\n>  {\n>  \tstruct v4l2_format v4l2Format = {};\n> -\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> +\tstruct v4l2_meta_format *pix = &v4l2Format.fmt.meta;\n>  \tint ret;\n>  \n>  \tv4l2Format.type = bufferType_;\n> -\tpix->width = format->size.width;\n> -\tpix->height = format->size.height;\n> -\tpix->pixelformat = format->fourcc;\n> -\tpix->bytesperline = format->planes[0].bpl;\n> -\tpix->field = V4L2_FIELD_NONE;\n> -\n> +\tpix->dataformat = format->fourcc;\n\nShouldn't you set bytesperline ?\n\nWith that fixed,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  \tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n>  \tif (ret) {\n>  \t\tret = -errno;\n> @@ -495,12 +498,12 @@ int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n>  \t * Return to caller the format actually applied on the device,\n>  \t * which might differ from the requested one.\n>  \t */\n> -\tformat->size.width = pix->width;\n> -\tformat->size.height = pix->height;\n> -\tformat->fourcc = pix->pixelformat;\n> +\tformat->size.width = 0;\n> +\tformat->size.height = 0;\n> +\tformat->fourcc = format->fourcc;\n>  \tformat->planesCount = 1;\n> -\tformat->planes[0].bpl = pix->bytesperline;\n> -\tformat->planes[0].size = pix->sizeimage;\n> +\tformat->planes[0].bpl = pix->buffersize;\n> +\tformat->planes[0].size = pix->buffersize;\n>  \n>  \treturn 0;\n>  }\n> @@ -573,6 +576,63 @@ int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)\n>  \treturn 0;\n>  }\n>  \n> +int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> +{\n> +\tstruct v4l2_format v4l2Format = {};\n> +\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> +\tint ret;\n> +\n> +\tv4l2Format.type = bufferType_;\n> +\tret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);\n> +\tif (ret) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error) << \"Unable to get format: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tformat->size.width = pix->width;\n> +\tformat->size.height = pix->height;\n> +\tformat->fourcc = pix->pixelformat;\n> +\tformat->planesCount = 1;\n> +\tformat->planes[0].bpl = pix->bytesperline;\n> +\tformat->planes[0].size = pix->sizeimage;\n> +\n> +\treturn 0;\n> +}\n> +\n> +int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> +{\n> +\tstruct v4l2_format v4l2Format = {};\n> +\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> +\tint ret;\n> +\n> +\tv4l2Format.type = bufferType_;\n> +\tpix->width = format->size.width;\n> +\tpix->height = format->size.height;\n> +\tpix->pixelformat = format->fourcc;\n> +\tpix->bytesperline = format->planes[0].bpl;\n> +\tpix->field = V4L2_FIELD_NONE;\n> +\tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> +\tif (ret) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error) << \"Unable to set format: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\t/*\n> +\t * Return to caller the format actually applied on the device,\n> +\t * which might differ from the requested one.\n> +\t */\n> +\tformat->size.width = pix->width;\n> +\tformat->size.height = pix->height;\n> +\tformat->fourcc = pix->pixelformat;\n> +\tformat->planesCount = 1;\n> +\tformat->planes[0].bpl = pix->bytesperline;\n> +\tformat->planes[0].size = pix->sizeimage;\n> +\n> +\treturn 0;\n> +}\n> +\n>  int V4L2Device::requestBuffers(unsigned int count)\n>  {\n>  \tstruct v4l2_requestbuffers rb = {};","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["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 E8D02600EA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 May 2019 16:36:21 +0200 (CEST)","from pendragon.ideasonboard.com (85-76-65-42-nat.elisa-mobile.fi\n\t[85.76.65.42])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BB25BD85;\n\tTue, 28 May 2019 16:36:20 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1559054181;\n\tbh=ZWRV1s1ChLNcYpuogHdWY+HSKjaPDZyRnFh8XKaKrhw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=GNqqQwgUnAQinQ+U9cFgnLvvhS6mJf3yl+plCY0jXQwHbQNrSYYY5oAgkpdklrfbH\n\tg572bxLkBZrzdgM47YflKPC8W2r51ihe7vmQDoZjkOYCAvvrVpDF7fsGVv/KVfa5wv\n\tb7dtseXDZh07WFhAey23CmNglgZapE5ZmlVatvbY=","Date":"Tue, 28 May 2019 17:36:01 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190528143601.GC14336@pendragon.ideasonboard.com>","References":"<20190527090559.26549-1-jacopo@jmondi.org>\n\t<20190527090559.26549-4-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20190527090559.26549-4-jacopo@jmondi.org>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v2 3/6] libcamera: v4l2_device: Add\n\tMETA support in g/s_fmt","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 28 May 2019 14:36:22 -0000"}},{"id":1734,"web_url":"https://patchwork.libcamera.org/comment/1734/","msgid":"<20190602122646.bjgq6mjf7ohtng64@uno.localdomain>","date":"2019-06-02T12:26:46","subject":"Re: [libcamera-devel] [PATCH v2 3/6] libcamera: v4l2_device: Add\n\tMETA support in g/s_fmt","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Tue, May 28, 2019 at 05:36:01PM +0300, Laurent Pinchart wrote:\n> Hi Jacopo,\n>\n> Thank you for the patch.\n>\n> On Mon, May 27, 2019 at 11:05:56AM +0200, Jacopo Mondi wrote:\n> > Add two operations to set and get format on devices implementing the\n> > V4L2 Metadata Interface, identified by the META_OUTPUT or META_CAPTURE\n> > capabilities.\n> >\n> > While at it, sort get/setFormat operations alphabetically and unify\n> > their style (eg. no empty line before ioctl).\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/libcamera/include/v4l2_device.h |   7 +-\n> >  src/libcamera/v4l2_device.cpp       | 108 +++++++++++++++++++++-------\n> >  2 files changed, 89 insertions(+), 26 deletions(-)\n> >\n> > diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h\n> > index cecafa151caa..bdecc087fe5a 100644\n> > --- a/src/libcamera/include/v4l2_device.h\n> > +++ b/src/libcamera/include/v4l2_device.h\n> > @@ -150,12 +150,15 @@ protected:\n> >  \tstd::string logPrefix() const;\n> >\n> >  private:\n> > -\tint getFormatSingleplane(V4L2DeviceFormat *format);\n> > -\tint setFormatSingleplane(V4L2DeviceFormat *format);\n> > +\tint getFormatMeta(V4L2DeviceFormat *format);\n> > +\tint setFormatMeta(V4L2DeviceFormat *format);\n> >\n> >  \tint getFormatMultiplane(V4L2DeviceFormat *format);\n> >  \tint setFormatMultiplane(V4L2DeviceFormat *format);\n> >\n> > +\tint getFormatSingleplane(V4L2DeviceFormat *format);\n> > +\tint setFormatSingleplane(V4L2DeviceFormat *format);\n> > +\n> >  \tint requestBuffers(unsigned int count);\n> >  \tint createPlane(Buffer *buffer, unsigned int plane,\n> >  \t\t\tunsigned int length);\n> > diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> > index e42f6ef0c340..c9251da465af 100644\n> > --- a/src/libcamera/v4l2_device.cpp\n> > +++ b/src/libcamera/v4l2_device.cpp\n> > @@ -428,8 +428,12 @@ std::string V4L2Device::logPrefix() const\n> >   */\n> >  int V4L2Device::getFormat(V4L2DeviceFormat *format)\n> >  {\n> > -\treturn caps_.isMultiplanar() ? getFormatMultiplane(format) :\n> > -\t\t\t\t       getFormatSingleplane(format);\n> > +\tif (caps_.isMeta())\n> > +\t\treturn getFormatMeta(format);\n> > +\telse if (caps_.isMultiplanar())\n> > +\t\treturn getFormatMultiplane(format);\n> > +\telse\n> > +\t\treturn getFormatSingleplane(format);\n> >  }\n> >\n> >  /**\n> > @@ -443,14 +447,18 @@ int V4L2Device::getFormat(V4L2DeviceFormat *format)\n> >   */\n> >  int V4L2Device::setFormat(V4L2DeviceFormat *format)\n> >  {\n> > -\treturn caps_.isMultiplanar() ? setFormatMultiplane(format) :\n> > -\t\t\t\t       setFormatSingleplane(format);\n> > +\tif (caps_.isMeta())\n> > +\t\treturn setFormatMeta(format);\n> > +\telse if (caps_.isMultiplanar())\n> > +\t\treturn setFormatMultiplane(format);\n> > +\telse\n> > +\t\treturn setFormatSingleplane(format);\n> >  }\n> >\n> > -int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> > +int V4L2Device::getFormatMeta(V4L2DeviceFormat *format)\n> >  {\n> >  \tstruct v4l2_format v4l2Format = {};\n> > -\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> > +\tstruct v4l2_meta_format *pix = &v4l2Format.fmt.meta;\n> >  \tint ret;\n> >\n> >  \tv4l2Format.type = bufferType_;\n> > @@ -461,29 +469,24 @@ int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> >  \t\treturn ret;\n> >  \t}\n> >\n> > -\tformat->size.width = pix->width;\n> > -\tformat->size.height = pix->height;\n> > -\tformat->fourcc = pix->pixelformat;\n> > +\tformat->size.width = 0;\n> > +\tformat->size.height = 0;\n> > +\tformat->fourcc = pix->dataformat;\n> >  \tformat->planesCount = 1;\n> > -\tformat->planes[0].bpl = pix->bytesperline;\n> > -\tformat->planes[0].size = pix->sizeimage;\n> > +\tformat->planes[0].bpl = pix->buffersize;\n> > +\tformat->planes[0].size = pix->buffersize;\n> >\n> >  \treturn 0;\n> >  }\n> >\n> > -int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> > +int V4L2Device::setFormatMeta(V4L2DeviceFormat *format)\n> >  {\n> >  \tstruct v4l2_format v4l2Format = {};\n> > -\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> > +\tstruct v4l2_meta_format *pix = &v4l2Format.fmt.meta;\n> >  \tint ret;\n> >\n> >  \tv4l2Format.type = bufferType_;\n> > -\tpix->width = format->size.width;\n> > -\tpix->height = format->size.height;\n> > -\tpix->pixelformat = format->fourcc;\n> > -\tpix->bytesperline = format->planes[0].bpl;\n> > -\tpix->field = V4L2_FIELD_NONE;\n> > -\n> > +\tpix->dataformat = format->fourcc;\n>\n> Shouldn't you set bytesperline ?\n\nIf you mean pix->buffersize, yes I should. It went unnoticed on IPU3 as the\nsize for both the metadata nodes is ignored and harcoded.\n\nWith this fixed and your ack collected, I have now pushed the first 3\npatches of the series to master.\n\nThanks\n  j\n\n>\n> With that fixed,\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> >  \tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> >  \tif (ret) {\n> >  \t\tret = -errno;\n> > @@ -495,12 +498,12 @@ int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> >  \t * Return to caller the format actually applied on the device,\n> >  \t * which might differ from the requested one.\n> >  \t */\n> > -\tformat->size.width = pix->width;\n> > -\tformat->size.height = pix->height;\n> > -\tformat->fourcc = pix->pixelformat;\n> > +\tformat->size.width = 0;\n> > +\tformat->size.height = 0;\n> > +\tformat->fourcc = format->fourcc;\n> >  \tformat->planesCount = 1;\n> > -\tformat->planes[0].bpl = pix->bytesperline;\n> > -\tformat->planes[0].size = pix->sizeimage;\n> > +\tformat->planes[0].bpl = pix->buffersize;\n> > +\tformat->planes[0].size = pix->buffersize;\n> >\n> >  \treturn 0;\n> >  }\n> > @@ -573,6 +576,63 @@ int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)\n> >  \treturn 0;\n> >  }\n> >\n> > +int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> > +{\n> > +\tstruct v4l2_format v4l2Format = {};\n> > +\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> > +\tint ret;\n> > +\n> > +\tv4l2Format.type = bufferType_;\n> > +\tret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);\n> > +\tif (ret) {\n> > +\t\tret = -errno;\n> > +\t\tLOG(V4L2, Error) << \"Unable to get format: \" << strerror(-ret);\n> > +\t\treturn ret;\n> > +\t}\n> > +\n> > +\tformat->size.width = pix->width;\n> > +\tformat->size.height = pix->height;\n> > +\tformat->fourcc = pix->pixelformat;\n> > +\tformat->planesCount = 1;\n> > +\tformat->planes[0].bpl = pix->bytesperline;\n> > +\tformat->planes[0].size = pix->sizeimage;\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> > +{\n> > +\tstruct v4l2_format v4l2Format = {};\n> > +\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> > +\tint ret;\n> > +\n> > +\tv4l2Format.type = bufferType_;\n> > +\tpix->width = format->size.width;\n> > +\tpix->height = format->size.height;\n> > +\tpix->pixelformat = format->fourcc;\n> > +\tpix->bytesperline = format->planes[0].bpl;\n> > +\tpix->field = V4L2_FIELD_NONE;\n> > +\tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> > +\tif (ret) {\n> > +\t\tret = -errno;\n> > +\t\tLOG(V4L2, Error) << \"Unable to set format: \" << strerror(-ret);\n> > +\t\treturn ret;\n> > +\t}\n> > +\n> > +\t/*\n> > +\t * Return to caller the format actually applied on the device,\n> > +\t * which might differ from the requested one.\n> > +\t */\n> > +\tformat->size.width = pix->width;\n> > +\tformat->size.height = pix->height;\n> > +\tformat->fourcc = pix->pixelformat;\n> > +\tformat->planesCount = 1;\n> > +\tformat->planes[0].bpl = pix->bytesperline;\n> > +\tformat->planes[0].size = pix->sizeimage;\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> >  int V4L2Device::requestBuffers(unsigned int count)\n> >  {\n> >  \tstruct v4l2_requestbuffers rb = {};\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[217.70.183.199])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 21424618F4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun,  2 Jun 2019 14:25:42 +0200 (CEST)","from uno.localdomain\n\t(host123-79-dynamic.35-79-r.retail.telecomitalia.it [79.35.79.123])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 4E437FF803;\n\tSun,  2 Jun 2019 12:25:40 +0000 (UTC)"],"X-Originating-IP":"79.35.79.123","Date":"Sun, 2 Jun 2019 14:26:46 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190602122646.bjgq6mjf7ohtng64@uno.localdomain>","References":"<20190527090559.26549-1-jacopo@jmondi.org>\n\t<20190527090559.26549-4-jacopo@jmondi.org>\n\t<20190528143601.GC14336@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"tzgopaet2mlrwqis\"","Content-Disposition":"inline","In-Reply-To":"<20190528143601.GC14336@pendragon.ideasonboard.com>","User-Agent":"NeoMutt/20180716","Subject":"Re: [libcamera-devel] [PATCH v2 3/6] libcamera: v4l2_device: Add\n\tMETA support in g/s_fmt","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Sun, 02 Jun 2019 12:25:42 -0000"}}]