[PATCH 1/2] libcamera: v4l2_videodevice: Fix devices which set both V4L2_CAP_VIDEO and V4L2_CAP_META
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed May 1 00:11:40 CEST 2024
Hi Hans,
Thank you for the patch.
On Tue, Apr 30, 2024 at 07:17:27PM +0200, Hans de Goede wrote:
> 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.
This seems to be a quick hack. What would it take to solve the issue
correctly ?
> 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 d157a447..5816c18d 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 */
s/devs/devices/
s/meta/metadata/g
> + if (isVideo())
> + return false;
> +
> return device_caps() & (V4L2_CAP_META_CAPTURE |
> V4L2_CAP_META_OUTPUT);
> }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list