[libcamera-devel] [PATCH 2/2] libcamera: pipeline: uvc: Try a default format against the device

Kieran Bingham kieran.bingham at ideasonboard.com
Fri May 3 17:34:03 CEST 2019


We can not predict a suitable default for a UVC camera as they are so
varied.

Take a starting point as a default configuration and test it against the
device with the tryFormat call. The camera will return the closest
supported format from that configuration.

Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 src/libcamera/pipeline/uvcvideo.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
index 5d2f1c98fa36..9247dff33606 100644
--- a/src/libcamera/pipeline/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo.cpp
@@ -91,9 +91,16 @@ PipelineHandlerUVC::streamConfiguration(Camera *camera,
 	UVCCameraData *data = cameraData(camera);
 	CameraConfiguration config;
 	StreamConfiguration cfg{};
+	V4L2DeviceFormat format;
 
-	cfg.pixelFormat = V4L2_PIX_FMT_YUYV;
-	cfg.size = { 640, 480 };
+	format.fourcc = V4L2_PIX_FMT_YUYV;
+	format.size = { 1920, 1080 };
+
+	/* Ask the video device to confirm a suitable default configuration. */
+	data->video_->tryFormat(&format);
+
+	cfg.size = format.size;
+	cfg.pixelFormat = format.fourcc;
 	cfg.bufferCount = 4;
 
 	config[&data->stream_] = cfg;
-- 
2.20.1



More information about the libcamera-devel mailing list