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_STD 和 VIDIOC_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
。