7.56. ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL

7.56.1. 名称

VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL - 枚举帧间隔

7.56.2. 概要

VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL

int ioctl(int fd, VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL, struct v4l2_subdev_frame_interval_enum * argp)

7.56.3. 参数

fd

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

argp

指向结构体 v4l2_subdev_frame_interval_enum 的指针。

7.56.4. 描述

此 ioctl 允许应用程序枚举给定子设备焊盘上的可用帧间隔。帧间隔仅对可以自行控制帧周期的子设备有意义。这包括例如图像传感器和电视调谐器。

对于图像传感器的常见用例,子设备输出焊盘上可用的帧间隔取决于同一焊盘上的帧格式和大小。因此,应用程序在枚举帧间隔时必须指定所需的格式和大小。

为了枚举帧间隔,应用程序需要初始化 indexpadwhichcodewidthheight 结构体的字段 v4l2_subdev_frame_interval_enum 并调用带有指向此结构的指针的 ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL ioctl。驱动程序填充结构的其余部分,或者如果输入字段之一无效,则返回 EINVAL 错误代码。通过从索引零开始并递增一,直到返回 EINVAL,可以枚举所有帧间隔。

可用的帧间隔可能取决于子设备其他焊盘上的当前“尝试”格式,以及当前活动链接。有关尝试格式的更多信息,请参阅 ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT

支持帧间隔枚举 ioctl 的子设备应仅在单个焊盘上实现它。在同一子设备的多个焊盘上支持时,其行为未定义。

类型 v4l2_subdev_frame_interval_enum
struct v4l2_subdev_frame_interval_enum

__u32

index

枚举中格式的编号,由应用程序设置。

__u32

pad

由媒体控制器 API 报告的焊盘编号。

__u32

code

媒体总线格式代码,如 媒体总线格式 中定义。

__u32

width

帧宽度,以像素为单位。

__u32

height

帧高度,以像素为单位。

struct v4l2_fract

interval

连续视频帧之间的周期,以秒为单位。

__u32

which

要枚举的帧间隔,来自枚举 v4l2_subdev_format_whence

__u32

stream

流标识符。

__u32

reserved[7]

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

7.56.5. 返回值

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

EINVAL

结构体 v4l2_subdev_frame_interval_enumpad 引用了不存在的焊盘, which 字段具有不受支持的值,codewidthheight 字段之一对于给定的焊盘无效,或者 index 字段超出范围。