[libcamera-devel] [PATCH v5 3/4] libcamera: pipeline_handler: uvcvideo: register all Cameras along with a devnum

Paul Elder paul.elder at ideasonboard.com
Fri Jan 3 06:41:19 CET 2020


This patch depends on patch "libcamera: pipeline: uvcvideo: Fix crash
when default entity is not found".

Register all UVC Cameras along with their device numbers, to eventually
allow the V4L2 compatibility layer to match against it.

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

---
Changes in v5:
- rebased on "libcamera: pipeline: uvcvideo: Fix crash when default
  entity is not found"

No change in v4

New in v3
---
 src/libcamera/pipeline/uvcvideo.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
index 8d7f7ea7..662b2462 100644
--- a/src/libcamera/pipeline/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo.cpp
@@ -7,6 +7,7 @@
 
 #include <algorithm>
 #include <iomanip>
+#include <sys/sysmacros.h>
 #include <tuple>
 
 #include <libcamera/camera.h>
@@ -294,6 +295,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
 		return false;
 
 	std::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(this);
+	dev_t devnum = 0;
 
 	/* Locate and initialise the camera data with the default video node. */
 	const std::vector<MediaEntity *> &entities = media->entities();
@@ -309,10 +311,12 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
 	if (data->init(*entity))
 		return false;
 
+	devnum = makedev((*entity)->deviceMajor(), (*entity)->deviceMinor());
+
 	/* Create and register the camera. */
 	std::set<Stream *> streams{ &data->stream_ };
 	std::shared_ptr<Camera> camera = Camera::create(this, media->model(), streams);
-	registerCamera(std::move(camera), std::move(data));
+	registerCamera(std::move(camera), std::move(data), devnum);
 
 	/* Enable hot-unplug notifications. */
 	hotplugMediaDevice(media);
-- 
2.24.1



More information about the libcamera-devel mailing list