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 时序集。

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

类型 v4l2_enum_dv_timings
结构体 v4l2_enum_dv_timings

__u32

index

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

__u32

pad

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

__u32

reserved[2]

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

结构体 v4l2_dv_timings

timings

时序。

7.13.5. 返回值

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

EINVAL

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

ENODATA

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