[libcamera-devel] [PATCH v3 5/8] libcamera: pipeline: uvcvideo: Translate from V4L2 to DRM pixel formats
Niklas Söderlund
niklas.soderlund at ragnatech.se
Wed Mar 18 04:31:57 CET 2020
When generating a camera configuration pixel formats directly from the
video device are used that contains V4L2 pixel formats. Translate the
pixel formats to DRM before using them in the camera configuration.
Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/libcamera/pipeline/uvcvideo.cpp | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
index 320da2685795c041..1de091e0c0e57f7c 100644
--- a/src/libcamera/pipeline/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo.cpp
@@ -153,8 +153,19 @@ CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,
if (roles.empty())
return config;
- ImageFormats v4l2formats = data->video_->formats();
- StreamFormats formats(v4l2formats.data());
+ std::map<unsigned int, std::vector<SizeRange>> v4l2Formats =
+ data->video_->formats().data();
+ std::map<PixelFormat, std::vector<SizeRange>> deviceFormats;
+ std::transform(v4l2Formats.begin(), v4l2Formats.end(),
+ std::inserter(deviceFormats, deviceFormats.begin()),
+ [&](const decltype(v4l2Formats)::value_type &format) {
+ return decltype(deviceFormats)::value_type{
+ data->video_->toPixelFormat(format.first),
+ format.second
+ };
+ });
+
+ StreamFormats formats(deviceFormats);
StreamConfiguration cfg(formats);
cfg.pixelFormat = formats.pixelformats().front();
--
2.25.1
More information about the libcamera-devel
mailing list