7.41. ioctl VIDIOC_G_STD, VIDIOC_S_STD, VIDIOC_SUBDEV_G_STD, VIDIOC_SUBDEV_S_STD

7.41.1. 名称

VIDIOC_G_STD - VIDIOC_S_STD - VIDIOC_SUBDEV_G_STD - VIDIOC_SUBDEV_S_STD - 查询或选择当前输入的视频标准

7.41.2. 概要

VIDIOC_G_STD

int ioctl(int fd, VIDIOC_G_STD, v4l2_std_id *argp)

VIDIOC_S_STD

int ioctl(int fd, VIDIOC_S_STD, const v4l2_std_id *argp)

VIDIOC_SUBDEV_G_STD

int ioctl(int fd, VIDIOC_SUBDEV_G_STD, v4l2_std_id *argp)

VIDIOC_SUBDEV_S_STD

int ioctl(int fd, VIDIOC_SUBDEV_S_STD, const v4l2_std_id *argp)

7.41.3. 参数

fd

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

argp

指向 v4l2_std_id 的指针。

7.41.4. 描述

要查询和选择当前视频标准,应用程序使用 VIDIOC_G_STDVIDIOC_S_STD ioctl,它们接受指向 v4l2_std_id 类型的指针作为参数。 VIDIOC_G_STD 可以返回单个标志或一组标志,如 struct v4l2_standard 字段 id 中所示。 这些标志必须是明确的,以便它们仅出现在一个枚举的 struct v4l2_standard 结构中。

VIDIOC_S_STD 接受一个或多个标志,作为一个只写ioctl,它不会像 VIDIOC_G_STD 那样返回实际的新标准。 当没有给出标志或者当前输入不支持请求的标准时,驱动程序会返回一个 EINVAL 错误代码。 当标准集不明确时,驱动程序可能会返回 EINVAL 或选择任何请求的标准。 如果当前输入或输出不支持标准视频时序(例如,如果 ioctl VIDIOC_ENUMINPUT 未设置 V4L2_IN_CAP_STD 标志),则会返回 ENODATA 错误代码。

在以只读模式注册的子设备节点上调用 VIDIOC_SUBDEV_S_STD 是不允许的。 将返回一个错误,并且 errno 变量将被设置为 -EPERM

7.41.5. 返回值

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

EINVAL

VIDIOC_S_STD 参数不合适。

ENODATA

此输入或输出不支持标准视频时序。

EPERM

已在只读子设备上调用 VIDIOC_SUBDEV_S_STD