[{"id":4038,"web_url":"https://patchwork.libcamera.org/comment/4038/","msgid":"<02887a71-9250-aac7-5e90-ca681434b871@st.com>","date":"2020-03-17T08:15:38","subject":"Re: [libcamera-devel] [PATCH v2 00/10] Simple pipeline handler","submitter":{"id":14,"url":"https://patchwork.libcamera.org/api/people/14/","name":"Benjamin GAIGNARD","email":"benjamin.gaignard@st.com"},"content":"On 3/16/20 10:43 PM, Laurent Pinchart wrote:\n> Hello,\n>\n> This patch series builds on Martijn's work to implement a pipeline\n> handler for simpler pipelines. Additional information about the pipeline\n> handler itself can be found in patch 08/10.\n>\n> Compared to v1, this version has been rebased on top of the buffer\n> management simplification ([1]). It also includes support for simple\n> converters, V4L2 mem2mem device that perform format conversion, to\n> extend the number of supported pixel formats.\n>\n> [1] https://lists.libcamera.org/pipermail/libcamera-devel/2020-March/007224.html\n>\n> Patches 01/10 to 07/10 haven't been changed compare to v1. They add a\n> V4L2 API extension required for pipeline auto-configuration (01/10), as\n> well aw new utility functions and miscellaneous small extensions (02/10\n> to 07/10).\nHi Laurent,\n\nCould you give a link to this new V4L2 API extension ?\nI will try to find time to test it with this series on stm32.\n\nThanks.\nBenjamin\n\n>\n> Patch 08/10 adds the new simple pipeline handler, patch 09/10 the\n> simpler converter, and patch 10/10 integrates converter support into the\n> simple pipeline handler. The converter API should probably be improved,\n> I've implemented it as a proof of concept. Other options also exist,\n> such as making the simple pipeline handler a base class from which more\n> specialized pipeline handlers could derive from, and implement support\n> for converters in device-specific code.\n>\n> The code has been tested on an i.MX7 platform with a greyscale sensor\n> and the i.MX PXP as format converter to produce RGB. I've kept sun6i-csi\n> from Martijn's work in the list of supported drivers, but supporting\n> that platform will require extending the corresponding driver to support\n> the VIDIOC_ENUM_FMT extension. Once done, if all goes well, the platform\n> should work out of the box.\n>\n> As before, this is meant to be compatible with the stm32 and qcom-camss\n> that pipeline handlers have previously been submitted for. The\n> respective drivers need be added to the drivers array in\n> SimplePipelineHandler::match(), and, as for sun6i-csi, support for the\n> VIDIOC_ENUM_FMT extension needs to be implemented in the drivers, which\n> should be fairly easy.\n>\n> Laurent Pinchart (9):\n>    [DNI] include: linux: Extend VIDIOC_ENUM_FMT to support MC-centric\n>      devices\n>    libcamera: utils: Add string join function\n>    libcamera: v4l2_subdevice: Extend [gs]etFormat() to specify format\n>      type\n>    libcamera: v4l2_videodevice: Support filtering formats by media bus\n>      code\n>    libcamera: v4l2_videodevice: Expose the device capabilities\n>    libcamera: v4l2_videodevice: Downgrade 4CC conversion errors to\n>      warnings\n>    libcamera: v4l2_videodevice: Map V4L2_PIX_FMT_GREY to DRM FourCC\n>    libcamera: pipeline: simple: Add simple format converter\n>    libcamera: pipeline: simple: Integrate converter support\n>\n> Martijn Braam (1):\n>    libcamera: pipeline: Add a simple pipeline handler\n>\n>   include/linux/videodev2.h                   |   4 +-\n>   src/libcamera/include/utils.h               |  44 +\n>   src/libcamera/include/v4l2_subdevice.h      |  11 +-\n>   src/libcamera/include/v4l2_videodevice.h    |   6 +-\n>   src/libcamera/pipeline/meson.build          |   1 +\n>   src/libcamera/pipeline/simple/converter.cpp | 210 +++++\n>   src/libcamera/pipeline/simple/converter.h   |  60 ++\n>   src/libcamera/pipeline/simple/meson.build   |   4 +\n>   src/libcamera/pipeline/simple/simple.cpp    | 855 ++++++++++++++++++++\n>   src/libcamera/utils.cpp                     |  16 +\n>   src/libcamera/v4l2_subdevice.cpp            |  23 +-\n>   src/libcamera/v4l2_videodevice.cpp          |  36 +-\n>   test/utils.cpp                              |   7 +-\n>   13 files changed, 1261 insertions(+), 16 deletions(-)\n>   create mode 100644 src/libcamera/pipeline/simple/converter.cpp\n>   create mode 100644 src/libcamera/pipeline/simple/converter.h\n>   create mode 100644 src/libcamera/pipeline/simple/meson.build\n>   create mode 100644 src/libcamera/pipeline/simple/simple.cpp\n>","headers":{"Return-Path":"<benjamin.gaignard@st.com>","Received":["from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com\n\t[62.209.51.94])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BB83560418\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Mar 2020 09:15:42 +0100 (CET)","from pps.filterd (m0046668.ppops.net [127.0.0.1])\n\tby mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id\n\t02H8EHOP029876; Tue, 17 Mar 2020 09:15:39 +0100","from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35])\n\tby mx07-00178001.pphosted.com with ESMTP id 2yrqv06a58-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256\n\tverify=NOT); Tue, 17 Mar 2020 09:15:39 +0100","from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20])\n\tby beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 0717210002A; \n\tTue, 17 Mar 2020 09:15:38 +0100 (CET)","from Webmail-eu.st.com (sfhdag5node2.st.com [10.75.127.14])\n\tby euls16034.sgp.st.com (STMicroelectronics) with ESMTP id\n\tC3F55210F9E; Tue, 17 Mar 2020 09:15:38 +0100 (CET)","from SFHDAG3NODE3.st.com (10.75.127.9) by SFHDAG5NODE2.st.com\n\t(10.75.127.14) with Microsoft SMTP Server (TLS) id 15.0.1473.3;\n\tTue, 17 Mar 2020 09:15:38 +0100","from SFHDAG3NODE3.st.com ([fe80::3507:b372:7648:476]) by\n\tSFHDAG3NODE3.st.com ([fe80::3507:b372:7648:476%20]) with mapi id\n\t15.00.1347.000; Tue, 17 Mar 2020 09:15:38 +0100"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com;\n\th=from : to : cc : subject\n\t: date : message-id : references : in-reply-to : content-type :\n\tcontent-id\n\t: content-transfer-encoding : mime-version; s=STMicroelectronics;\n\tbh=SHJWKEl3zkE90lVeYMZkm+km2VwpS3U5k6XWBLmaRag=;\n\tb=TfnrJCMa8u3ekEr7Iz+E6vTU2GCThcynTY+c+cj1mk2O3e5hJvb6XjgtoQlfTINrrzd7\n\tbwdMakKwPUuiIOSGyZ2CKHp5uvq++i3GnKeB5m9kYIsZ3pewgQlQQ9mjfxFu0NfQIRJ2\n\tWSgt7HN2GVERq3NU7gLntOVMWs/JJp7JJJ6lCLwzE9dTgSkORpw/dEHYLxEWLMkl9jgZ\n\tk9qGzK12DtGbjLQDiquvBb7LPPmZ7/gRznGFEo4wbBFauxWCwixBUexJQb3dDEaTbRAn\n\tF6oqoDqyOGuzdlZfQfI1myKdH/3U5FGOMNJ2dJ1xJwaZlPszSRIPym4lsXo7j0h8PIQy\n\t/w== ","From":"Benjamin GAIGNARD <benjamin.gaignard@st.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\t\"libcamera-devel@lists.libcamera.org\"\n\t<libcamera-devel@lists.libcamera.org>","CC":"Martijn Braam <martijn@brixit.nl>, Mickael GUENE <mickael.guene@st.com>, \n\tAndrey Konovalov <andrey.konovalov@linaro.org>, Hugues FRUCHET\n\t<hugues.fruchet@st.com>","Thread-Topic":"[PATCH v2 00/10] Simple pipeline handler","Thread-Index":"AQHV+9vqqPUXR4BpXkqx8nEIdga8PahMX/6A","Date":"Tue, 17 Mar 2020 08:15:38 +0000","Message-ID":"<02887a71-9250-aac7-5e90-ca681434b871@st.com>","References":"<20200316214310.27665-1-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20200316214310.27665-1-laurent.pinchart@ideasonboard.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","user-agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.9.0","x-ms-exchange-messagesentrepresentingtype":"1","x-ms-exchange-transport-fromentityheader":"Hosted","x-originating-ip":"[10.75.127.44]","Content-Type":"text/plain; charset=\"utf-8\"","Content-ID":"<68B9D42BC2F85A49AA16B3DE208AD372@st.com>","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Proofpoint-Virus-Version":"vendor=fsecure engine=2.50.10434:6.0.138,\n\t18.0.645 definitions=2020-03-17_02:2020-03-12,\n\t2020-03-17 signatures=0","Subject":"Re: [libcamera-devel] [PATCH v2 00/10] Simple pipeline handler","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>","X-List-Received-Date":"Tue, 17 Mar 2020 08:15:42 -0000"}},{"id":4039,"web_url":"https://patchwork.libcamera.org/comment/4039/","msgid":"<20200317090000.GA4864@pendragon.ideasonboard.com>","date":"2020-03-17T09:00:00","subject":"Re: [libcamera-devel] [PATCH v2 00/10] Simple pipeline handler","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Benjamin,\n\nOn Tue, Mar 17, 2020 at 08:15:38AM +0000, Benjamin GAIGNARD wrote:\n> On 3/16/20 10:43 PM, Laurent Pinchart wrote:\n> > Hello,\n> >\n> > This patch series builds on Martijn's work to implement a pipeline\n> > handler for simpler pipelines. Additional information about the pipeline\n> > handler itself can be found in patch 08/10.\n> >\n> > Compared to v1, this version has been rebased on top of the buffer\n> > management simplification ([1]). It also includes support for simple\n> > converters, V4L2 mem2mem device that perform format conversion, to\n> > extend the number of supported pixel formats.\n> >\n> > [1] https://lists.libcamera.org/pipermail/libcamera-devel/2020-March/007224.html\n> >\n> > Patches 01/10 to 07/10 haven't been changed compare to v1. They add a\n> > V4L2 API extension required for pipeline auto-configuration (01/10), as\n> > well aw new utility functions and miscellaneous small extensions (02/10\n> > to 07/10).\n>\n> Hi Laurent,\n> \n> Could you give a link to this new V4L2 API extension ?\n\nhttps://lore.kernel.org/linux-media/20200314114410.GA5320@pendragon.ideasonboard.com/T/#m770b852445c2aa61388e8bc2f9ec4b3d7cc0ebc0\n\nReviews are appreciated :-)\n\n> I will try to find time to test it with this series on stm32.\n\nThank you.\n\n> > Patch 08/10 adds the new simple pipeline handler, patch 09/10 the\n> > simpler converter, and patch 10/10 integrates converter support into the\n> > simple pipeline handler. The converter API should probably be improved,\n> > I've implemented it as a proof of concept. Other options also exist,\n> > such as making the simple pipeline handler a base class from which more\n> > specialized pipeline handlers could derive from, and implement support\n> > for converters in device-specific code.\n> >\n> > The code has been tested on an i.MX7 platform with a greyscale sensor\n> > and the i.MX PXP as format converter to produce RGB. I've kept sun6i-csi\n> > from Martijn's work in the list of supported drivers, but supporting\n> > that platform will require extending the corresponding driver to support\n> > the VIDIOC_ENUM_FMT extension. Once done, if all goes well, the platform\n> > should work out of the box.\n> >\n> > As before, this is meant to be compatible with the stm32 and qcom-camss\n> > that pipeline handlers have previously been submitted for. The\n> > respective drivers need be added to the drivers array in\n> > SimplePipelineHandler::match(), and, as for sun6i-csi, support for the\n> > VIDIOC_ENUM_FMT extension needs to be implemented in the drivers, which\n> > should be fairly easy.\n> >\n> > Laurent Pinchart (9):\n> >    [DNI] include: linux: Extend VIDIOC_ENUM_FMT to support MC-centric\n> >      devices\n> >    libcamera: utils: Add string join function\n> >    libcamera: v4l2_subdevice: Extend [gs]etFormat() to specify format\n> >      type\n> >    libcamera: v4l2_videodevice: Support filtering formats by media bus\n> >      code\n> >    libcamera: v4l2_videodevice: Expose the device capabilities\n> >    libcamera: v4l2_videodevice: Downgrade 4CC conversion errors to\n> >      warnings\n> >    libcamera: v4l2_videodevice: Map V4L2_PIX_FMT_GREY to DRM FourCC\n> >    libcamera: pipeline: simple: Add simple format converter\n> >    libcamera: pipeline: simple: Integrate converter support\n> >\n> > Martijn Braam (1):\n> >    libcamera: pipeline: Add a simple pipeline handler\n> >\n> >   include/linux/videodev2.h                   |   4 +-\n> >   src/libcamera/include/utils.h               |  44 +\n> >   src/libcamera/include/v4l2_subdevice.h      |  11 +-\n> >   src/libcamera/include/v4l2_videodevice.h    |   6 +-\n> >   src/libcamera/pipeline/meson.build          |   1 +\n> >   src/libcamera/pipeline/simple/converter.cpp | 210 +++++\n> >   src/libcamera/pipeline/simple/converter.h   |  60 ++\n> >   src/libcamera/pipeline/simple/meson.build   |   4 +\n> >   src/libcamera/pipeline/simple/simple.cpp    | 855 ++++++++++++++++++++\n> >   src/libcamera/utils.cpp                     |  16 +\n> >   src/libcamera/v4l2_subdevice.cpp            |  23 +-\n> >   src/libcamera/v4l2_videodevice.cpp          |  36 +-\n> >   test/utils.cpp                              |   7 +-\n> >   13 files changed, 1261 insertions(+), 16 deletions(-)\n> >   create mode 100644 src/libcamera/pipeline/simple/converter.cpp\n> >   create mode 100644 src/libcamera/pipeline/simple/converter.h\n> >   create mode 100644 src/libcamera/pipeline/simple/meson.build\n> >   create mode 100644 src/libcamera/pipeline/simple/simple.cpp","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 628DF60418\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Mar 2020 10:00:06 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B33EAF9;\n\tTue, 17 Mar 2020 10:00:05 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1584435605;\n\tbh=A5/UjUPI+8WGIoKMm0o4/sA1bRQ8xmzz4XtYCQzqjNQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=tGxxipDMCtfxySPx9/WTE8N2mPxCf7T++9WT8Dn1AlfbAli2Vd4SkiUc1XF1q1F0I\n\toCNSRxfwBmGhBvzSBLe1C6f1yxiqqFgWZhaFlRmFwtaF9qT5gfkhtA9RFh6+HvAxvG\n\tGzVYLo914STpXwHnqREmppys8tnKXRqcOnkRTVp0=","Date":"Tue, 17 Mar 2020 11:00:00 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Benjamin GAIGNARD <benjamin.gaignard@st.com>","Cc":"\"libcamera-devel@lists.libcamera.org\"\n\t<libcamera-devel@lists.libcamera.org>,\n\tMartijn Braam <martijn@brixit.nl>, Mickael GUENE <mickael.guene@st.com>,\n\tAndrey Konovalov <andrey.konovalov@linaro.org>,\n\tHugues FRUCHET <hugues.fruchet@st.com>","Message-ID":"<20200317090000.GA4864@pendragon.ideasonboard.com>","References":"<20200316214310.27665-1-laurent.pinchart@ideasonboard.com>\n\t<02887a71-9250-aac7-5e90-ca681434b871@st.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<02887a71-9250-aac7-5e90-ca681434b871@st.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v2 00/10] Simple pipeline handler","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>","X-List-Received-Date":"Tue, 17 Mar 2020 09:00:06 -0000"}}]