[{"id":3304,"web_url":"https://patchwork.libcamera.org/comment/3304/","msgid":"<20200103082846.hnnlgn6z4xi25mbq@uno.localdomain>","date":"2020-01-03T08:28:46","subject":"Re: [libcamera-devel] [PATCH v5 3/4] libcamera: pipeline_handler:\n\tuvcvideo: register all Cameras along with a devnum","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Fri, Jan 03, 2020 at 12:41:19AM -0500, Paul Elder wrote:\n> This patch depends on patch \"libcamera: pipeline: uvcvideo: Fix crash\n> when default entity is not found\".\n>\n> Register all UVC Cameras along with their device numbers, to eventually\n> allow the V4L2 compatibility layer to match against it.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\n\nThanks\n   j\n\n>\n> ---\n> Changes in v5:\n> - rebased on \"libcamera: pipeline: uvcvideo: Fix crash when default\n>   entity is not found\"\n>\n> No change in v4\n>\n> New in v3\n> ---\n>  src/libcamera/pipeline/uvcvideo.cpp | 6 +++++-\n>  1 file changed, 5 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index 8d7f7ea7..662b2462 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -7,6 +7,7 @@\n>\n>  #include <algorithm>\n>  #include <iomanip>\n> +#include <sys/sysmacros.h>\n>  #include <tuple>\n>\n>  #include <libcamera/camera.h>\n> @@ -294,6 +295,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n>  \t\treturn false;\n>\n>  \tstd::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(this);\n> +\tdev_t devnum = 0;\n>\n>  \t/* Locate and initialise the camera data with the default video node. */\n>  \tconst std::vector<MediaEntity *> &entities = media->entities();\n> @@ -309,10 +311,12 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n>  \tif (data->init(*entity))\n>  \t\treturn false;\n>\n> +\tdevnum = makedev((*entity)->deviceMajor(), (*entity)->deviceMinor());\n> +\n>  \t/* Create and register the camera. */\n>  \tstd::set<Stream *> streams{ &data->stream_ };\n>  \tstd::shared_ptr<Camera> camera = Camera::create(this, media->model(), streams);\n> -\tregisterCamera(std::move(camera), std::move(data));\n> +\tregisterCamera(std::move(camera), std::move(data), devnum);\n>\n>  \t/* Enable hot-unplug notifications. */\n>  \thotplugMediaDevice(media);\n> --\n> 2.24.1\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net\n\t[217.70.183.193])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1424560464\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  3 Jan 2020 09:26:30 +0100 (CET)","from uno.localdomain\n\t(host109-57-dynamic.61-82-r.retail.telecomitalia.it [82.61.57.109])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay1-d.mail.gandi.net (Postfix) with ESMTPSA id 6BC16240008;\n\tFri,  3 Jan 2020 08:26:29 +0000 (UTC)"],"X-Originating-IP":"82.61.57.109","Date":"Fri, 3 Jan 2020 09:28:46 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200103082846.hnnlgn6z4xi25mbq@uno.localdomain>","References":"<20200103054120.30979-1-paul.elder@ideasonboard.com>\n\t<20200103054120.30979-4-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"glfcf2eorzc33y7h\"","Content-Disposition":"inline","In-Reply-To":"<20200103054120.30979-4-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v5 3/4] libcamera: pipeline_handler:\n\tuvcvideo: register all Cameras along with a devnum","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":"Fri, 03 Jan 2020 08:26:30 -0000"}},{"id":3310,"web_url":"https://patchwork.libcamera.org/comment/3310/","msgid":"<20200103112812.GB4847@pendragon.ideasonboard.com>","date":"2020-01-03T11:28:12","subject":"Re: [libcamera-devel] [PATCH v5 3/4] libcamera: pipeline_handler:\n\tuvcvideo: register all Cameras along with a devnum","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Fri, Jan 03, 2020 at 12:41:19AM -0500, Paul Elder wrote:\n> This patch depends on patch \"libcamera: pipeline: uvcvideo: Fix crash\n> when default entity is not found\".\n> \n> Register all UVC Cameras along with their device numbers, to eventually\n> allow the V4L2 compatibility layer to match against it.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> ---\n> Changes in v5:\n> - rebased on \"libcamera: pipeline: uvcvideo: Fix crash when default\n>   entity is not found\"\n> \n> No change in v4\n> \n> New in v3\n> ---\n>  src/libcamera/pipeline/uvcvideo.cpp | 6 +++++-\n>  1 file changed, 5 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index 8d7f7ea7..662b2462 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -7,6 +7,7 @@\n>  \n>  #include <algorithm>\n>  #include <iomanip>\n> +#include <sys/sysmacros.h>\n>  #include <tuple>\n>  \n>  #include <libcamera/camera.h>\n> @@ -294,6 +295,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n>  \t\treturn false;\n>  \n>  \tstd::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(this);\n> +\tdev_t devnum = 0;\n\nYou can drop this line.\n\n>  \n>  \t/* Locate and initialise the camera data with the default video node. */\n>  \tconst std::vector<MediaEntity *> &entities = media->entities();\n> @@ -309,10 +311,12 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n>  \tif (data->init(*entity))\n>  \t\treturn false;\n>  \n> +\tdevnum = makedev((*entity)->deviceMajor(), (*entity)->deviceMinor());\n\nand s/devnum/dev_t devnum/\n\nWith this you can keep my Rb tag.\n\n> +\n>  \t/* Create and register the camera. */\n>  \tstd::set<Stream *> streams{ &data->stream_ };\n>  \tstd::shared_ptr<Camera> camera = Camera::create(this, media->model(), streams);\n> -\tregisterCamera(std::move(camera), std::move(data));\n> +\tregisterCamera(std::move(camera), std::move(data), devnum);\n>  \n>  \t/* Enable hot-unplug notifications. */\n>  \thotplugMediaDevice(media);","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 3E3BA60465\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  3 Jan 2020 12:28:22 +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 C7C2230F;\n\tFri,  3 Jan 2020 12:28:21 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1578050902;\n\tbh=qhsLzTNPW5fTJKSgk6VSZY1bkPfKkxit/oh+tUl/l2M=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=CjB0BJ4E9Y33x1SCTR8zIdosWcZHAPeoISyeYHM25d1bv07p1kUP2U/9eNFiABjbD\n\t4q7q0OqKzl9Ic1lsGLVMIJY3s6oYBApMSD1Ws49+qmHwH/3JDczuhx6qIr4c8e2yWF\n\tXEkgjCIc/LbPovB6QQrwvV4Dg3n6NeElDKQ08GrY=","Date":"Fri, 3 Jan 2020 13:28:12 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200103112812.GB4847@pendragon.ideasonboard.com>","References":"<20200103054120.30979-1-paul.elder@ideasonboard.com>\n\t<20200103054120.30979-4-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20200103054120.30979-4-paul.elder@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v5 3/4] libcamera: pipeline_handler:\n\tuvcvideo: register all Cameras along with a devnum","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":"Fri, 03 Jan 2020 11:28:22 -0000"}}]