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 类型的指针。驱动程序在此处存储一组候选值,这可以是一个单独的标志,或者是一组受支持的标准,例如,如果硬件只能区分 50Hz 和 60Hz 系统。如果未检测到信号,则驱动程序将返回 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
此输入或输出不支持标准视频时序。