7.64. ioctl VIDIOC_SUBDEV_G_CLIENT_CAP, VIDIOC_SUBDEV_S_CLIENT_CAP

7.64.1. 名称

VIDIOC_SUBDEV_G_CLIENT_CAP - VIDIOC_SUBDEV_S_CLIENT_CAP - 获取或设置客户端功能。

7.64.2. 概要

VIDIOC_SUBDEV_G_CLIENT_CAP

int ioctl(int fd, VIDIOC_SUBDEV_G_CLIENT_CAP, struct v4l2_subdev_client_capability *argp)

VIDIOC_SUBDEV_S_CLIENT_CAP

int ioctl(int fd, VIDIOC_SUBDEV_S_CLIENT_CAP, struct v4l2_subdev_client_capability *argp)

7.64.3. 参数

fd

open() 返回的文件描述符。

argp

指向 struct v4l2_subdev_client_capability 的指针。

7.64.4. 描述

这些 ioctl 用于获取和设置客户端(使用子设备 ioctl 的应用程序)功能。客户端功能存储在打开的子设备节点的文件句柄中,客户端必须为每个打开的子设备单独设置功能。

默认情况下,打开子设备节点时未设置任何客户端功能。

客户端功能的目的是通知内核客户端的行为,主要与保持与不同内核和用户空间版本的兼容性有关。

VIDIOC_SUBDEV_G_CLIENT_CAP ioctl 返回与文件句柄 fd 关联的当前客户端功能。

VIDIOC_SUBDEV_S_CLIENT_CAP ioctl 设置文件句柄 fd 的客户端功能。新功能完全替换当前功能,因此该 ioctl 也可用于删除先前设置的功能。

VIDIOC_SUBDEV_S_CLIENT_CAP 修改 struct v4l2_subdev_client_capability 以反映已被接受的功能。内核不接受功能的一个常见情况是,内核比用户空间使用的标头旧,因此内核不知道该功能。

type v4l2_subdev_client_capability
struct v4l2_subdev_client_capability

__u64

capabilities

打开的设备的子设备客户端功能。

客户端功能

功能

描述

V4L2_SUBDEV_CLIENT_CAP_STREAMS

客户端知道流。设置此标志后,可以在各种 ioctl 中使用“流”字段(指流编号)。如果未设置此标志(默认设置),则内核将强制将“流”字段设置为 0。

V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH

客户端知道 v4l2_subdev_frame_interval which 字段。如果未设置此标志(默认设置),则内核将强制将 which 字段设置为 V4L2_SUBDEV_FORMAT_ACTIVE

7.64.5. 返回值

成功时返回 0,出错时返回 -1,并适当设置 errno 变量。通用错误代码在 通用错误代码 章节中描述。

ENOIOCTLCMD

内核不支持此 ioctl。