7.51. ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD¶
7.51.1. 名称¶
VIDIOC_QUERYSTD - VIDIOC_SUBDEV_QUERYSTD - 感应当前输入接收到的视频标准
7.51.2. 概要¶
-
VIDIOC_QUERYSTD¶
int ioctl(int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp)
-
VIDIOC_SUBDEV_QUERYSTD¶
int ioctl(int fd, VIDIOC_SUBDEV_QUERYSTD, v4l2_std_id *argp)
7.51.3. 参数¶
fd
open()
返回的文件描述符。argp
指向
v4l2_std_id
的指针。
7.51.4. 描述¶
硬件可能能够自动检测当前视频标准。为此,应用程序调用 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD,并传递指向 v4l2_std_id 类型的指针。驱动程序在此处存储一组候选标准,可以是一个标志或一组支持的标准,例如,如果硬件只能区分 50 和 60 Hz 系统。如果未检测到信号,则驱动程序将返回 V4L2_STD_UNKNOWN。如果检测不可行或失败,则该集合必须包含当前视频输入或输出支持的所有标准。
注意
如果检测到新的视频标准,驱动程序不应自动切换视频标准。相反,驱动程序应发送 V4L2_EVENT_SOURCE_CHANGE
事件(如果它们支持此事件),并期望用户空间通过调用 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD 来采取行动。原因是新的视频标准也可能意味着不同的缓冲区大小,并且您无法动态更改缓冲区大小。一般来说,收到源更改事件的应用程序将需要调用 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD,并且如果检测到的视频标准有效,则它们将需要停止流式传输,设置新标准,分配新缓冲区并再次开始流式传输。
7.51.5. 返回值¶
成功时返回 0,出错时返回 -1 并适当设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- ENODATA
此输入或输出不支持标准视频时序。