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 可以返回单个标志或一组标志,如结构体 v4l2_standard 字段 id 中所示。这些标志必须是明确的,它们只能出现在一个枚举结构体 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