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

指向 struct v4l2_output 的指针。

7.19.4. 描述

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

type 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 连接器,此字段标识调制器。它对应于 struct 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

struct v4l2_outputindex 超出范围。