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_timings
的 pad
字段中指定所需的 pad 编号。尝试在不支持它们的 pad 上枚举时序将返回 EINVAL
错误代码。
-
类型 v4l2_enum_dv_timings¶
__u32 |
|
DV 时序的编号,由应用程序设置。 |
__u32 |
|
媒体控制器 API 报告的 Pad 编号。仅在子设备节点上操作时使用此字段。在视频节点上操作时,应用程序必须将此字段设置为零。 |
__u32 |
|
为将来扩展保留。驱动程序和应用程序必须将数组设置为零。 |
结构体 |
|
时序。 |
7.13.5. 返回值¶
成功时返回 0,出错时返回 -1,并适当设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- EINVAL
结构体
v4l2_enum_dv_timings
的index
超出范围或pad
编号无效。- ENODATA
此输入或输出不支持数字视频预设。