[libcamera-devel] [PATCH v11 6/8] libcamera: v4l2_subdevice: Support passing ColorSpaces to V4L2 subdevices
David Plowman
david.plowman at raspberrypi.com
Fri Dec 10 12:21:40 CET 2021
The ColorSpace from the StreamConfiguration is now handled
appropriately in the V4L2Subdevice.
Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/libcamera/v4l2_subdevice.cpp | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index b782325a..8caa73d6 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -415,6 +415,7 @@ int V4L2Subdevice::getFormat(unsigned int pad, V4L2SubdeviceFormat *format,
format->size.width = subdevFmt.format.width;
format->size.height = subdevFmt.format.height;
format->mbus_code = subdevFmt.format.code;
+ format->colorSpace = toColorSpace(subdevFmt.format);
return 0;
}
@@ -443,7 +444,13 @@ int V4L2Subdevice::setFormat(unsigned int pad, V4L2SubdeviceFormat *format,
subdevFmt.format.code = format->mbus_code;
subdevFmt.format.field = V4L2_FIELD_NONE;
- int ret = ioctl(VIDIOC_SUBDEV_S_FMT, &subdevFmt);
+ int ret = fromColorSpace(format->colorSpace, subdevFmt.format);
+ if (ret < 0)
+ LOG(V4L2, Warning)
+ << "Setting color space unrecognised by V4L2: "
+ << ColorSpace::toString(format->colorSpace);
+
+ ret = ioctl(VIDIOC_SUBDEV_S_FMT, &subdevFmt);
if (ret) {
LOG(V4L2, Error)
<< "Unable to set format on pad " << pad
@@ -454,6 +461,7 @@ int V4L2Subdevice::setFormat(unsigned int pad, V4L2SubdeviceFormat *format,
format->size.width = subdevFmt.format.width;
format->size.height = subdevFmt.format.height;
format->mbus_code = subdevFmt.format.code;
+ format->colorSpace = toColorSpace(subdevFmt.format);
return 0;
}
--
2.30.2
More information about the libcamera-devel
mailing list