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
指向结构体
v4l2_frmsizeenum
的指针,该结构体包含索引和像素格式,并接收帧宽度和高度。
7.15.4. 描述¶
此ioctl允许应用程序枚举设备对于给定像素格式支持的所有帧大小(即,以像素为单位的宽度和高度)。
支持的像素格式可以通过使用 ioctl VIDIOC_ENUM_FMT 函数获得。
v4l2_frmsizeenum.type
字段的返回值和内容取决于设备支持的帧大小类型。以下是针对不同情况的函数语义:
离散:如果给定的索引值(从零开始)有效,则该函数返回成功。应用程序应每次调用将索引增加1,直到返回
EINVAL
。驱动程序会将v4l2_frmsizeenum.type
字段设置为V4L2_FRMSIZE_TYPE_DISCRETE
。联合体中只有discrete
成员有效。步进式:如果给定的索引值为零,则函数返回成功,而对于任何其他索引值,则返回
EINVAL
。驱动程序会将v4l2_frmsizeenum.type
字段设置为V4L2_FRMSIZE_TYPE_STEPWISE
。联合体中只有stepwise
成员有效。连续:这是上述步进式类型的一种特殊情况。如果给定的索引值为零,则函数返回成功,而对于任何其他索引值,则返回
EINVAL
。驱动程序会将v4l2_frmsizeenum.type
字段设置为V4L2_FRMSIZE_TYPE_CONTINUOUS
。联合体中只有stepwise
成员有效,并且step_width
和step_height
值设置为 1。
当应用程序使用索引零调用该函数时,它必须检查 type
字段以确定设备支持的帧大小枚举类型。只有对于 V4L2_FRMSIZE_TYPE_DISCRETE
类型,增加索引值以接收更多帧大小才有意义。
注意
返回帧大小的顺序没有特殊含义。特别是,它没有说明任何关于潜在默认格式大小的信息。
应用程序可以假设,在没有任何应用程序本身交互的情况下,枚举数据不会更改。这意味着,如果应用程序在运行帧大小枚举时没有执行任何其他 ioctl 调用,则枚举数据是一致的。
7.15.5. 结构体¶
在下面的结构体中,IN 表示必须由应用程序填充的值,OUT 表示驱动程序填充的值。应用程序应将除 IN 字段外的所有成员清零。
-
type v4l2_frmsize_discrete¶
__u32 |
|
帧的宽度[像素]。 |
__u32 |
|
帧的高度[像素]。 |
-
type v4l2_frmsize_stepwise¶
__u32 |
|
最小帧宽度[像素]。 |
__u32 |
|
最大帧宽度[像素]。 |
__u32 |
|
帧宽度步长[像素]。 |
__u32 |
|
最小帧高度[像素]。 |
__u32 |
|
最大帧高度[像素]。 |
__u32 |
|
帧高度步长[像素]。 |
-
type v4l2_frmsizeenum¶
__u32 |
|
IN:枚举中给定帧大小的索引。 |
__u32 |
|
IN:枚举帧大小的像素格式。 |
__u32 |
|
OUT:设备支持的帧大小类型。 |
union { |
(匿名) |
OUT:具有给定索引的帧大小。 |
struct |
|
|
struct |
|
|
} |
||
__u32 |
|
保留供将来使用的空间。必须由驱动程序和应用程序清零。 |
7.15.6. 枚举¶
-
type v4l2_frmsizetypes¶
|
1 |
离散帧大小。 |
|
2 |
连续帧大小。 |
|
3 |
步进式定义的帧大小。 |
7.15.7. 返回值¶
成功时返回 0,错误时返回 -1,并且会适当设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。