7.18. ioctl VIDIOC_ENUMINPUT

7.18.1. 名称

VIDIOC_ENUMINPUT - 枚举视频输入

7.18.2. 概要

VIDIOC_ENUMINPUT

int ioctl(int fd, VIDIOC_ENUMINPUT, struct v4l2_input *argp)

7.18.3. 参数

fd

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

argp

指向 struct v4l2_input 的指针。

7.18.4. 描述

要查询视频输入的属性,应用程序初始化 struct v4l2_inputindex 字段,并使用指向此结构的指针调用 ioctl VIDIOC_ENUMINPUT。 驱动程序填充结构的其余部分,或者当索引超出范围时返回 EINVAL 错误代码。 为了枚举所有输入,应用程序应从索引零开始,递增 1,直到驱动程序返回 EINVAL

type v4l2_input
struct v4l2_input

__u32

index

标识输入,由应用程序设置。

__u8

name[32]

视频输入的名称,一个以 NUL 结尾的 ASCII 字符串,例如:“Vin (Composite 2)”。 此信息供用户使用,最好是设备本身的连接器标签。

__u32

type

输入类型,请参阅 输入类型

__u32

audioset

驱动程序最多可以枚举 32 个视频和音频输入。 如果这是当前选定的视频输入,则此字段显示哪些音频输入可以选择作为音频源。 这是一个位掩码。 LSB 对应于音频输入 0,MSB 对应于输入 31。 可以设置任意数量的位,也可以不设置。

当驱动程序不枚举音频输入时,不得设置任何位。 应用程序不应将其解释为缺少音频支持。 一些驱动程序会自动选择音频源,并且不枚举它们,因为无论如何都没有选择。

有关音频输入以及如何选择当前输入的详细信息,请参阅 音频输入和输出

__u32

tuner

捕获设备可以有零个或多个调谐器(RF 解调器)。 当 type 设置为 V4L2_INPUT_TYPE_TUNER 时,这是一个 RF 连接器,此字段标识调谐器。 它对应于 struct v4l2_tuner 字段 index。 有关调谐器的详细信息,请参阅 调谐器和调制器

v4l2_std_id

std

每个视频输入都支持一种或多种不同的视频标准。 此字段是所有支持标准的集合。 有关视频标准以及如何切换的详细信息,请参阅 视频标准

__u32

status

此字段提供有关输入的状态信息。 有关标志,请参阅 输入状态标志。 除了传感器方向位 status 之外,仅当这是当前输入时才有效。

__u32

capabilities

此字段提供输入的功能。 有关标志,请参阅 输入功能

__u32

reserved[3]

为将来的扩展保留。 驱动程序必须将数组设置为零。

输入类型

V4L2_INPUT_TYPE_TUNER

1

此输入使用调谐器(RF 解调器)。

V4L2_INPUT_TYPE_CAMERA

2

任何非调谐器视频输入,例如复合视频、S-Video、HDMI、摄像头传感器。 命名为 _TYPE_CAMERA 是历史原因,今天我们将其称为 _TYPE_VIDEO

V4L2_INPUT_TYPE_TOUCH

3

此输入是用于捕获原始触摸数据的触摸设备。

输入状态标志

常规

V4L2_IN_ST_NO_POWER

0x00000001

连接的设备已关闭。

V4L2_IN_ST_NO_SIGNAL

0x00000002

V4L2_IN_ST_NO_COLOR

0x00000004

硬件支持颜色解码,但未检测到信号中的颜色调制。

传感器方向

V4L2_IN_ST_HFLIP

0x00000010

输入连接到生成水平翻转的信号的设备,并且在将信号传递到用户空间之前不会对其进行校正。

V4L2_IN_ST_VFLIP

0x00000020

输入连接到生成垂直翻转的信号的设备,并且在将信号传递到用户空间之前不会对其进行校正。 .. note:: 180 度旋转与 HFLIP | VFLIP 相同

模拟视频

V4L2_IN_ST_NO_H_LOCK

0x00000100

没有水平同步锁定。

V4L2_IN_ST_COLOR_KILL

0x00000200

当颜色抑制电路检测到没有颜色调制时,会自动禁用颜色解码。 当设置此标志时,颜色抑制已启用已关闭颜色解码。

V4L2_IN_ST_NO_V_LOCK

0x00000400

没有垂直同步锁定。

V4L2_IN_ST_NO_STD_LOCK

0x00000800

在组件自动检测格式的情况下,没有标准格式锁定。

数字视频

V4L2_IN_ST_NO_SYNC

0x00010000

没有同步锁定。

V4L2_IN_ST_NO_EQU

0x00020000

没有均衡器锁定。

V4L2_IN_ST_NO_CARRIER

0x00040000

载波恢复失败。

VCR 和机顶盒

V4L2_IN_ST_MACROVISION

0x01000000

Macrovision 是一种模拟复制保护系统,用于篡改视频信号以混淆录像机。 当设置此标志时,已检测到 Macrovision。

V4L2_IN_ST_NO_ACCESS

0x02000000

条件访问被拒绝。

V4L2_IN_ST_VTR

0x04000000

VTR 时间常数。 [?]

输入功能

V4L2_IN_CAP_DV_TIMINGS

0x00000002

此输入支持使用 VIDIOC_S_DV_TIMINGS 设置视频时序。

V4L2_IN_CAP_STD

0x00000004

此输入支持使用 VIDIOC_S_STD 设置电视标准。

V4L2_IN_CAP_NATIVE_SIZE

0x00000008

此输入支持使用 V4L2_SEL_TGT_NATIVE_SIZE 选择目标设置本机大小,请参阅 通用选择定义

7.18.5. 返回值

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

EINVAL

struct v4l2_input index 超出范围。