7.63. ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION

7.63.1. 名称

VIDIOC_SUBDEV_G_SELECTION - VIDIOC_SUBDEV_S_SELECTION - 获取或设置子设备焊盘上的选择矩形

7.63.2. 概要

VIDIOC_SUBDEV_G_SELECTION

int ioctl(int fd, VIDIOC_SUBDEV_G_SELECTION, struct v4l2_subdev_selection *argp)

VIDIOC_SUBDEV_S_SELECTION

int ioctl(int fd, VIDIOC_SUBDEV_S_SELECTION, struct v4l2_subdev_selection *argp)

7.63.3. 参数

fd

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

argp

指向结构体 v4l2_subdev_selection 的指针。

7.63.4. 描述

选择用于配置子设备执行的各种影响图像尺寸的图像处理功能。这目前包括裁剪、缩放和合成。

选择API取代了旧的子设备裁剪API。选择API支持裁剪API的所有功能以及更多功能。

有关每个选择目标如何影响子设备内部图像处理管道的更多信息,请参阅子设备接口

如果子设备节点已在只读模式下注册,则仅当 which 字段设置为 V4L2_SUBDEV_FORMAT_TRY 时,对 VIDIOC_SUBDEV_S_SELECTION 的调用才有效,否则将返回错误,并且 errno 变量设置为 -EPERM

7.63.4.1. 选择目标的类型

有两种类型的选择目标:实际的和边界的。实际目标是配置硬件的目标。 BOUNDS目标将返回一个包含所有可能的实际矩形的矩形。

7.63.4.2. 发现支持的功能

要发现支持哪些目标,用户可以在它们上执行 VIDIOC_SUBDEV_G_SELECTION。任何不受支持的目标都将返回 EINVAL

选择目标和标志记录在通用选择定义中。

类型 v4l2_subdev_selection
结构体 v4l2_subdev_selection

__u32

which

来自枚举 v4l2_subdev_format_whence 的活动或尝试选择。

__u32

pad

媒体框架报告的焊盘编号。

__u32

target

目标选择矩形。 请参阅通用选择定义

__u32

flags

标志。 请参阅选择标志

结构体 v4l2_rect

r

选择矩形,以像素为单位。

__u32

stream

流标识符。

__u32

reserved[7]

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

7.63.5. 返回值

成功时返回 0,失败时返回 -1,并且 errno 变量设置为相应的值。 通用错误代码在通用错误代码一章中描述。

EBUSY

由于焊盘当前正忙,无法更改选择矩形。 这可能是由焊盘上的活动视频流引起的。 在不执行其他操作以首先修复问题的情况下,不得重试ioctl。 仅由 VIDIOC_SUBDEV_S_SELECTION 返回

EINVAL

结构体 v4l2_subdev_selectionpad 引用了不存在的焊盘,which 字段具有不受支持的值,或者给定的子设备焊盘不支持选择目标。

EPERM

在只读子设备上调用了 VIDIOC_SUBDEV_S_SELECTION ioctl,并且 which 字段设置为 V4L2_SUBDEV_FORMAT_ACTIVE