7.19. ioctl VIDIOC_ENUMOUTPUT

7.19.1. 名称

VIDIOC_ENUMOUTPUT - 枚举视频输出

7.19.2. 概要

VIDIOC_ENUMOUTPUT

int ioctl(int fd, VIDIOC_ENUMOUTPUT, struct v4l2_output *argp)

7.19.3. 参数

fd

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

argp

指向结构体 v4l2_output 的指针。

7.19.4. 描述

要查询视频输出的属性,应用程序初始化结构体 v4l2_outputindex 字段,并使用指向此结构的指针调用 ioctl VIDIOC_ENUMOUTPUT。 如果索引超出范围,驱动程序将填充结构的其余部分或返回 EINVAL 错误代码。 要枚举所有输出,应用程序应从索引零开始,每次递增一,直到驱动程序返回 EINVAL

类型 v4l2_output
struct v4l2_output

__u32

index

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

__u8

name[32]

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

__u32

type

输出类型,请参阅 输出类型

__u32

audioset

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

当驱动程序不枚举音频输出时,不得设置任何位。 应用程序不得将其解释为缺乏音频支持。 驱动程序可能会自动选择音频输出而不枚举它们。

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

__u32

modulator

输出设备可以有零个或多个 RF 调制器。 当 typeV4L2_OUTPUT_TYPE_MODULATOR 时,这是一个 RF 连接器,此字段标识调制器。 它对应于结构体 v4l2_modulator 字段 index。 有关调制器的详细信息,请参阅 调谐器和调制器

v4l2_std_id

std

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

__u32

capabilities

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

__u32

reserved[3]

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

输出类型

V4L2_OUTPUT_TYPE_MODULATOR

1

此输出是一个模拟电视调制器。

V4L2_OUTPUT_TYPE_ANALOG

2

任何非调制器视频输出,例如复合视频、S-Video、HDMI。 命名为 _TYPE_ANALOG 是历史原因,今天我们会将其称为 _TYPE_VIDEO

V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY

3

视频输出将被复制到 视频叠加

输出功能

V4L2_OUT_CAP_DV_TIMINGS

0x00000002

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

V4L2_OUT_CAP_STD

0x00000004

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

V4L2_OUT_CAP_NATIVE_SIZE

0x00000008

此输出支持使用 V4L2_SEL_TGT_NATIVE_SIZE 选择目标设置原始大小,请参阅 通用选择定义

7.19.5. 返回值

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

EINVAL

结构体 v4l2_output index 超出范围。