[PATCH resend 1/2] libcamera: v4l2_videodevice: Fix devices which set both V4L2_CAP_VIDEO and V4L2_CAP_META
Hans de Goede
hdegoede at redhat.com
Wed Jul 3 17:09:22 CEST 2024
The /dev/video# nodes of the IPU6 driver set both V4L2_CAP_VIDEO_CAPTURE
and V4L2_CAP_META_CAPTURE.
This was resulting in V4L2VideoDevice::getFormat() / tryFormat() /
setFormat() calling the metadata related ioctls instead of the videocap
ioctls causing things to not work.
Fix this by making V4L2Capability::isMeta() return false when the device
also has one of the video capabilities.
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
include/libcamera/internal/v4l2_videodevice.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
index 9057be08..fdd877c8 100644
--- a/include/libcamera/internal/v4l2_videodevice.h
+++ b/include/libcamera/internal/v4l2_videodevice.h
@@ -92,6 +92,10 @@ struct V4L2Capability final : v4l2_capability {
}
bool isMeta() const
{
+ /* Treat devs which combine video and meta as video not meta */
+ if (isVideo())
+ return false;
+
return device_caps() & (V4L2_CAP_META_CAPTURE |
V4L2_CAP_META_OUTPUT);
}
--
2.45.1
More information about the libcamera-devel
mailing list