7.42. ioctl VIDIOC_G_TUNER, VIDIOC_S_TUNER¶
7.42.1. 名称¶
VIDIOC_G_TUNER - VIDIOC_S_TUNER - 获取或设置调谐器属性
7.42.2. 概要¶
-
VIDIOC_G_TUNER¶
int ioctl(int fd, VIDIOC_G_TUNER, struct v4l2_tuner *argp)
-
VIDIOC_S_TUNER¶
int ioctl(int fd, VIDIOC_S_TUNER, const struct v4l2_tuner *argp)
7.42.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向结构体
v4l2_tuner
的指针。
7.42.4. 描述¶
要查询调谐器的属性,应用程序初始化 index
字段并将结构体 v4l2_tuner
的 reserved
数组置零,然后使用指向此结构的指针调用 VIDIOC_G_TUNER
ioctl。驱动程序填充结构的其余部分,或者当索引超出范围时返回 EINVAL
错误代码。要枚举所有调谐器,应用程序应从索引零开始,每次递增一,直到驱动程序返回 EINVAL
。
调谐器有两个可写的属性,即音频模式和无线电频率。要更改音频模式,应用程序初始化 index
、audmode
和 reserved
字段,然后调用 VIDIOC_S_TUNER
ioctl。这不会更改当前调谐器,当前调谐器由当前的视频输入决定。如果请求的模式无效或不受支持,驱动程序可以选择不同的音频模式。由于这是一个只写 ioctl,它不会返回实际选择的音频模式。
SDR 特定调谐器类型为 V4L2_TUNER_SDR
和 V4L2_TUNER_RF
。对于 SDR 设备,必须将 audmode
字段初始化为零。在此上下文中,“调谐器”是指 SDR 接收器。
要更改无线电频率,可以使用 VIDIOC_S_FREQUENCY ioctl。
-
类型 v4l2_tuner¶
__u32 |
|
标识调谐器,由应用程序设置。 |
|
__u8 |
|
调谐器的名称,一个以 NULL 结尾的 ASCII 字符串。 此信息供用户使用。 |
|
__u32 |
|
调谐器的类型,请参阅 |
|
__u32 |
|
调谐器功能标志,请参阅 调谐器和调制器功能标志。音频标志表示解码音频子节目的能力。它们不会改变,例如,随着当前视频标准的变化。 当结构体引用无线电调谐器时,不能使用 如果支持多个频段,则 |
|
__u32 |
|
最低可调频率,单位为 62.5 kHz,或者如果设置了 |
|
__u32 |
|
最高可调频率,单位为 62.5 kHz,或者如果设置了 |
|
__u32 |
|
某些调谐器或音频解码器可以通过分析音频载波、导频音或其他指示器来确定接收到的音频子节目。为了传递此信息,驱动程序在此字段中设置 调谐器音频接收标志 中定义的标志。例如 |
|
|
接收单声道音频 |
||
|
接收立体声音频和辅助音频节目 |
||
|
接收单声道或立体声音频,硬件无法区分 |
||
|
接收双语音频 |
||
|
接收单声道、立体声或双语音频 |
||
当 仅当这是当前视频输入的调谐器时,或者当结构体引用无线电调谐器时,此字段才有效。 |
|||
__u32 |
|
选择的音频模式,有关有效值,请参阅 调谐器音频模式。音频模式不影响音频子节目检测,并且像用户控件 一样,它不会自动更改,除非请求的模式无效或不受支持。有关当选定和接收到的音频节目不匹配时可能出现的结果,请参阅 调谐器音频矩阵。 目前,这是应用程序可以更改的结构体 |
|
__u32 |
|
如果已知,则为信号强度。 范围从 0 到 65535。值越高表示信号越好。 |
|
__s32 |
|
自动频率控制。 当 |
|
__u32 |
|
保留用于未来扩展。 驱动程序和应用程序必须将数组设置为零。 |
-
类型 v4l2_tuner_type¶
|
1 |
调谐器支持无线电 |
|
2 |
调谐器支持模拟电视 |
|
4 |
调谐器控制软件数字无线电 (SDR) 的 A/D 和/或 D/A 模块 |
|
5 |
调谐器控制软件数字无线电 (SDR) 的 RF 部分 |
|
0x0001 |
设置后,调谐频率以 62.5 Hz 而不是 62.5 kHz 为单位表示。 |
|
0x0002 |
这是一个多标准调谐器;视频标准可以或必须切换。(例如,B/G PAL 调谐器通常不被认为是多标准的,因为视频标准是从频段自动确定的。)支持的视频标准集可从指向此调谐器的 |
|
0x0004 |
如果设置,则此调谐器支持硬件搜索功能,当搜索达到频率范围的末尾时,搜索会停止。 |
|
0x0008 |
如果设置,则此调谐器支持硬件搜索功能,当搜索达到频率范围的末尾时,搜索会环绕。 |
|
0x0010 |
支持立体声音频接收。 |
|
0x0040 |
支持双语音频节目的主要语言接收。双语音频是双通道系统的一项功能,在主音频载波上以单声道传输主要语言,在第二个载波上以单声道传输辅助语言。只有 |
|
0x0020 |
支持双语音频节目的辅助语言接收。只有 |
|
0x0020 |
支持辅助音频节目接收。这是 BTSC 系统的一个功能,该系统伴随 NTSC 视频标准。有两个音频载波可用于单声道或立体声传输主要语言,以及一个独立的第三个载波用于单声道辅助语言。只有 注意
|
|
0x0080 |
支持 RDS 捕获。此功能仅对无线电调谐器有效。 |
|
0x0100 |
RDS 数据作为未解析的 RDS 数据块传递。 |
|
0x0200 |
RDS 数据由硬件解析并通过控件设置。 |
|
0x0400 |
可以使用 ioctl VIDIOC_ENUM_FREQ_BANDS ioctl 来枚举可用的频段。 |
|
0x0800 |
使用硬件搜索功能时要搜索的范围是可编程的,有关详细信息,请参阅 ioctl VIDIOC_S_HW_FREQ_SEEK。 |
|
0x1000 |
如果设置,则调谐频率以 1 Hz 为单位表示,而不是以 62.5 kHz 为单位表示。 |
|
0x0001 |
调谐器接收单声道音频信号。 |
|
0x0002 |
调谐器接收立体声音频信号。 |
|
0x0008 |
调谐器接收双语音频信号的主要语言。当当前视频标准为 |
|
0x0004 |
调谐器接收双语音频信号的辅助语言(或第二个音频节目)。 |
|
0x0004 |
调谐器接收辅助音频节目。 注意
|
|
0x0010 |
调谐器接收 RDS 通道。 |
|
0 |
播放单声道音频。当调谐器接收到立体声信号时,这是左右声道的下混。当调谐器接收到双语或 SAP 信号时,此模式选择主要语言。 |
|
1 |
播放立体声音频。当调谐器接收到双语音频时,它可能会在左右声道上播放不同的语言,或者在两个声道上播放主要语言。 在这种模式下播放不同的语言已被弃用。新的驱动程序应仅在 当调谐器未接收到立体声信号或不支持立体声接收时,驱动程序应回退到 |
|
3 |
播放主要语言,单声道或立体声。只有 |
|
2 |
播放辅助语言,单声道。当调谐器未接收到双语音频或 SAP,或者不支持其接收时,驱动程序应回退到单声道或立体声模式。只有 |
|
2 |
播放辅助音频节目。当调谐器未接收到双语音频或 SAP,或者不支持其接收时,驱动程序应回退到单声道或立体声模式。只有 注意
|
|
4 |
在左声道播放主要语言,在右声道播放辅助语言。当调谐器未接收到双语音频或 SAP 时,应回退到 |
选定的 |
|||||
---|---|---|---|---|---|
接收到的 |
|
|
|
|
|
|
单声道 |
单声道/单声道 |
单声道 |
单声道 |
单声道/单声道 |
|
单声道 |
单声道/单声道 |
单声道 |
SAP |
单声道/SAP(首选)或单声道/单声道 |
|
L+R |
L/R |
立体声 L/R(首选)或单声道 L+R |
立体声 L/R(首选)或单声道 L+R |
L/R(首选)或 L+R/L+R |
|
L+R |
L/R |
立体声 L/R(首选)或单声道 L+R |
SAP |
L+R/SAP(首选)或 L/R 或 L+R/L+R |
|
语言 1 |
语言 1/语言 2(已弃用[2])或语言 1/语言 1 |
语言 1 |
语言 2 |
语言 1/语言 2(首选)或语言 1/语言 1 |
7.42.5. 返回值¶
成功时返回 0,出错时返回 -1,并设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- EINVAL
v4l2_tuner
结构体的index
超出范围。