7.63. ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION¶
7.63.1. 名称¶
VIDIOC_SUBDEV_G_SELECTION - VIDIOC_SUBDEV_S_SELECTION - 获取或设置 subdev pad 上的选择矩形
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
。
选择目标和标志在 通用选择定义 中进行了说明。
-
type v4l2_subdev_selection¶
__u32 |
|
活动或尝试选择,来自枚举 v4l2_subdev_format_whence。 |
__u32 |
|
媒体框架报告的 Pad 编号。 |
__u32 |
|
目标选择矩形。 请参见 通用选择定义。 |
__u32 |
|
标志。 请参见 选择标志。 |
struct |
|
选择矩形,以像素为单位。 |
__u32 |
|
流标识符。 |
__u32 |
|
保留供将来扩展使用。 应用程序和驱动程序必须将数组设置为零。 |
7.63.5. 返回值¶
成功时返回 0,错误时返回 -1,并且 errno
变量会相应设置。 通用错误代码在 通用错误代码 章节中进行了描述。
- EBUSY
由于 pad 当前正忙,因此无法更改选择矩形。 例如,这可能是由于 pad 上有活动的视频流引起的。 在没有执行其他操作以首先解决问题的情况下,不得重试 ioctl。 仅由
VIDIOC_SUBDEV_S_SELECTION
返回- EINVAL
结构体
v4l2_subdev_selection
pad
引用了不存在的 pad,which
字段具有不受支持的值,或者给定 subdev pad 上不支持选择目标。- EPERM
已经在只读子设备上调用了
VIDIOC_SUBDEV_S_SELECTION
ioctl,并且which
字段已设置为V4L2_SUBDEV_FORMAT_ACTIVE
。