7.58. ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE

7.58.1. 名称

VIDIOC_SUBDEV_ENUM_MBUS_CODE - 枚举媒体总线格式

7.58.2. 概要

VIDIOC_SUBDEV_ENUM_MBUS_CODE

int ioctl(int fd, VIDIOC_SUBDEV_ENUM_MBUS_CODE, struct v4l2_subdev_mbus_code_enum * argp)

7.58.3. 参数

fd

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

argp

指向结构体 v4l2_subdev_mbus_code_enum 的指针。

7.58.4. 描述

此调用由应用程序用于访问所选焊盘的媒体总线格式的枚举。

枚举由驱动程序定义,并使用结构体 v4l2_subdev_mbus_code_enumindex 字段进行索引。每个枚举都以 index 为 0 开始,最低的无效索引标志着枚举的结束。

因此,要枚举给定子设备焊盘上可用的媒体总线格式,请将 padwhich 字段初始化为所需的值,并将 index 设置为 0。然后,使用指向此结构的指针调用 ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE ioctl。

成功调用将返回,其中 code 字段填充了 mbus 代码值。重复增加 index,直到收到 EINVALEINVAL 表示 pad 无效,或者此焊盘上没有更多可用的代码。

驱动程序不得在同一焊盘上的不同索引处返回相同的 code 值。

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

type v4l2_subdev_mbus_code_enum
struct v4l2_subdev_mbus_code_enum

__u32

pad

媒体控制器 API 报告的焊盘编号。由应用程序填写。

__u32

index

属于给定焊盘的枚举中 mbus 代码的索引。由应用程序填写。

__u32

code

媒体总线格式代码,如 媒体总线格式 中定义。由驱动程序填写。

__u32

which

要枚举的媒体总线格式代码,来自枚举 v4l2_subdev_format_whence

__u32

flags

请参阅 子设备媒体总线代码枚举标志

__u32

stream

流标识符。

__u32

reserved[6]

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

子设备媒体总线代码枚举标志

V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE

0x00000001

驱动程序允许应用程序尝试更改默认的色彩空间编码。应用程序可以在调用 VIDIOC_SUBDEV_S_FMT ioctl 时,设置 V4L2_MBUS_FRAMEFMT_SET_CSC 来请求配置子设备的色彩空间。有关如何执行此操作,请参阅 媒体总线格式

V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC

0x00000002

驱动程序允许应用程序尝试更改默认的变换函数。应用程序可以在调用 VIDIOC_SUBDEV_S_FMT ioctl 时,设置 V4L2_MBUS_FRAMEFMT_SET_CSC 来请求配置子设备的变换函数。有关如何执行此操作,请参阅 媒体总线格式

V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC

0x00000004

驱动程序允许应用程序尝试更改默认的 Y’CbCr 编码。应用程序可以在调用 VIDIOC_SUBDEV_S_FMT ioctl 时,设置 V4L2_MBUS_FRAMEFMT_SET_CSC 来请求配置子设备的 Y’CbCr 编码。有关如何执行此操作,请参阅 媒体总线格式

V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC

0x00000004

驱动程序允许应用程序尝试更改默认的 HSV 编码。应用程序可以在调用 VIDIOC_SUBDEV_S_FMT ioctl 时,设置 V4L2_MBUS_FRAMEFMT_SET_CSC 来请求配置子设备的 HSV 编码。有关如何执行此操作,请参阅 媒体总线格式

V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION

0x00000008

驱动程序允许应用程序尝试更改默认的量化。应用程序可以在调用 VIDIOC_SUBDEV_S_FMT ioctl 时,设置 V4L2_MBUS_FRAMEFMT_SET_CSC 来请求配置子设备的量化。有关如何执行此操作,请参阅 媒体总线格式

7.58.5. 返回值

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

EINVAL

结构体 v4l2_subdev_mbus_code_enumpad 引用了不存在的焊盘,which 字段具有不支持的值,或者 index 字段超出范围。