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