7.15. ioctl VIDIOC_ENUM_FRAMESIZES

7.15.1. 名称

VIDIOC_ENUM_FRAMESIZES - 枚举帧大小

7.15.2. 概要

VIDIOC_ENUM_FRAMESIZES

int ioctl(int fd, VIDIOC_ENUM_FRAMESIZES, struct v4l2_frmsizeenum *argp)

7.15.3. 参数

fd

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

argp

指向 struct v4l2_frmsizeenum 的指针,该结构包含索引和像素格式,并接收帧宽度和高度。

7.15.4. 描述

此 ioctl 允许应用程序枚举设备支持的给定像素格式的所有帧大小(即像素宽度和高度)。

支持的像素格式可以通过使用 ioctl VIDIOC_ENUM_FMT 函数获得。

返回值和 v4l2_frmsizeenum.type 字段的内容取决于设备支持的帧大小类型。以下是该函数在不同情况下的语义

  • 离散: 如果给定的索引值(从零开始)有效,则该函数返回成功。应用程序应为每次调用将索引增加 1,直到返回 EINVALv4l2_frmsizeenum.type 字段由驱动程序设置为 V4L2_FRMSIZE_TYPE_DISCRETE。联合中只有 discrete 成员有效。

  • 逐步: 如果给定的索引值为零,则该函数返回成功;对于任何其他索引值,则返回 EINVALv4l2_frmsizeenum.type 字段由驱动程序设置为 V4L2_FRMSIZE_TYPE_STEPWISE。联合中只有 stepwise 成员有效。

  • 连续: 这是上面逐步类型的一个特殊情况。如果给定的索引值为零,则该函数返回成功;对于任何其他索引值,则返回 EINVALv4l2_frmsizeenum.type 字段由驱动程序设置为 V4L2_FRMSIZE_TYPE_CONTINUOUS。联合中只有 stepwise 成员有效,并且 step_widthstep_height 值设置为 1。

当应用程序使用索引零调用该函数时,它必须检查 type 字段以确定设备支持的帧大小枚举类型。只有对于 V4L2_FRMSIZE_TYPE_DISCRETE 类型,增加索引值以接收更多帧大小才有意义。

注意

返回帧大小的顺序没有特殊含义。特别是,它没有说明任何关于潜在默认格式大小的信息。

应用程序可以假定枚举数据不会在没有任何应用程序交互的情况下发生更改。这意味着如果应用程序在运行帧大小枚举时不执行任何其他 ioctl 调用,则枚举数据是一致的。

7.15.5. 结构体

在下面的结构体中,IN 表示必须由应用程序填充的值,OUT 表示驱动程序填充的值。应用程序应将除 IN 字段之外的所有成员清零。

类型 v4l2_frmsize_discrete
struct v4l2_frmsize_discrete

__u32

width

帧的宽度 [像素]。

__u32

height

帧的高度 [像素]。

类型 v4l2_frmsize_stepwise
struct v4l2_frmsize_stepwise

__u32

min_width

最小帧宽度 [像素]。

__u32

max_width

最大帧宽度 [像素]。

__u32

step_width

帧宽度步长 [像素]。

__u32

min_height

最小帧高度 [像素]。

__u32

max_height

最大帧高度 [像素]。

__u32

step_height

帧高度步长 [像素]。

类型 v4l2_frmsizeenum
struct v4l2_frmsizeenum

__u32

index

IN: 枚举中给定帧大小的索引。

__u32

pixel_format

IN: 枚举帧大小的像素格式。

__u32

type

OUT: 设备支持的帧大小类型。

union {

(anonymous)

OUT: 具有给定索引的帧大小。

struct v4l2_frmsize_discrete

discrete

struct v4l2_frmsize_stepwise

stepwise

}

__u32

reserved[2]

为将来使用保留的空间。必须由驱动程序和应用程序清零。

7.15.6. 枚举

类型 v4l2_frmsizetypes
enum v4l2_frmsizetypes

V4L2_FRMSIZE_TYPE_DISCRETE

1

离散帧大小。

V4L2_FRMSIZE_TYPE_CONTINUOUS

2

连续帧大小。

V4L2_FRMSIZE_TYPE_STEPWISE

3

逐步定义的帧大小。

7.15.7. 返回值

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