7.22. ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO

7.22.1. 名称

VIDIOC_G_AUDIO - VIDIOC_S_AUDIO - 查询或选择当前的音频输入及其属性

7.22.2. 概要

VIDIOC_G_AUDIO

int ioctl(int fd, VIDIOC_G_AUDIO, struct v4l2_audio *argp)

VIDIOC_S_AUDIO

int ioctl(int fd, VIDIOC_S_AUDIO, const struct v4l2_audio *argp)

7.22.3. 参数

fd

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

argp

指向结构体 v4l2_audio 的指针。

7.22.4. 描述

要查询当前的音频输入,应用程序将结构体 v4l2_audioreserved 数组清零,并使用指向该结构的指针调用 VIDIOC_G_AUDIO ioctl。当设备没有音频输入,或者没有与当前视频输入组合的音频输入时,驱动程序会填充结构的其余部分或返回 EINVAL 错误代码。

音频输入有一个可写属性,即音频模式。要选择当前的音频输入更改音频模式,应用程序需要初始化结构体 v4l2_audioindexmode 字段以及 reserved 数组,并调用 VIDIOC_S_AUDIO ioctl。如果请求无法满足,驱动程序可能会切换到不同的音频模式。但是,这是一个只写 ioctl,它不返回实际的新音频模式。

type v4l2_audio
struct v4l2_audio

__u32

index

标识音频输入,由驱动程序或应用程序设置。

__u8

name[32]

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

__u32

capability

音频功能标志,请参见 音频功能标志

__u32

mode

由驱动程序和应用程序设置的音频模式标志(在 VIDIOC_S_AUDIO ioctl 上),请参见 音频模式标志

__u32

reserved[2]

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

音频功能标志

V4L2_AUDCAP_STEREO

0x00001

这是一个立体声输入。该标志旨在在信号始终为单声道时自动禁用立体声录制等。除非音频输入属于调谐器,否则 API 不提供检测是否接收到立体声的方法。

V4L2_AUDCAP_AVL

0x00002

支持自动音量级别模式。

音频模式标志

V4L2_AUDMODE_AVL

0x00001

AVL 模式已开启。

7.22.5. 返回值

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

EINVAL

没有与当前视频输入组合的音频输入,或者所选音频输入的数量超出范围,或者它没有组合。