7.13. ioctl VIDIOC_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUM_DV_TIMINGS

7.13.1. 名称

VIDIOC_ENUM_DV_TIMINGS - VIDIOC_SUBDEV_ENUM_DV_TIMINGS - 枚举支持的数字视频时序

7.13.2. 概要

VIDIOC_ENUM_DV_TIMINGS

int ioctl(int fd, VIDIOC_ENUM_DV_TIMINGS, struct v4l2_enum_dv_timings *argp)

VIDIOC_SUBDEV_ENUM_DV_TIMINGS

int ioctl(int fd, VIDIOC_SUBDEV_ENUM_DV_TIMINGS, struct v4l2_enum_dv_timings *argp)

7.13.3. 参数

fd

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

argp

指向结构体v4l2_enum_dv_timings的指针。

7.13.4. 描述

虽然一些DV接收器或发射器支持范围广泛的时序,但其他一些只支持有限数量的时序。通过此ioctl,应用程序可以枚举已知支持的时序列表。调用ioctl VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP来检查它是否也支持其他标准,甚至是不在此列表中的自定义时序。

要查询可用的时序,应用程序初始化index字段,将pad字段设置为0,将结构体v4l2_enum_dv_timings的保留数组置零,然后在视频节点上调用VIDIOC_ENUM_DV_TIMINGS ioctl,并将指向此结构的指针作为参数。当索引超出范围时,驱动程序将填充结构的其余部分,或返回EINVAL错误代码。要枚举所有支持的DV时序,应用程序应从索引零开始,每次递增1,直到驱动程序返回EINVAL

注意

在切换视频输入或输出后,驱动程序可能会枚举一组不同的DV时序。

如果驱动程序实现了子设备的DV时序,则可以通过直接在子设备节点上调用VIDIOC_SUBDEV_ENUM_DV_TIMINGSioctl来查询。DV时序特定于输入(对于DV接收器)或输出(对于DV发射器),应用程序必须在结构体v4l2_enum_dv_timingspad字段中指定所需的pad编号。尝试枚举不支持时序的pad将返回EINVAL错误代码。

type v4l2_enum_dv_timings
结构体 v4l2_enum_dv_timings

__u32

index

DV时序的编号,由应用程序设置。

__u32

pad

媒体控制器API报告的Pad编号。仅在对子设备节点进行操作时使用此字段。在对视频节点进行操作时,应用程序必须将此字段设置为零。

__u32

reserved[2]

保留用于未来扩展。驱动程序和应用程序必须将数组设置为零。

struct v4l2_dv_timings

timings

时序。

7.13.5. 返回值

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

EINVAL

结构体v4l2_enum_dv_timingsindex超出范围或pad编号无效。

ENODATA

此输入或输出不支持数字视频预设。