7.35. ioctl VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR¶
7.35.1. 名称¶
VIDIOC_G_MODULATOR - VIDIOC_S_MODULATOR - 获取或设置调制器属性
7.35.2. 概要¶
-
VIDIOC_G_MODULATOR¶
int ioctl(int fd, VIDIOC_G_MODULATOR, struct v4l2_modulator *argp)
-
VIDIOC_S_MODULATOR¶
int ioctl(int fd, VIDIOC_S_MODULATOR, const struct v4l2_modulator *argp)
7.35.3. 参数¶
fd
open()
返回的文件描述符。argp
指向 struct
v4l2_modulator
的指针。
7.35.4. 描述¶
要查询调制器的属性,应用程序需要初始化 struct v4l2_modulator
的 index
字段,并将 reserved
数组清零,然后使用指向此结构的指针调用 VIDIOC_G_MODULATOR ioctl。驱动程序会填充结构的其余部分,或者当索引超出范围时返回 EINVAL
错误代码。要枚举所有调制器,应用程序应从索引零开始,每次递增一,直到驱动程序返回 EINVAL。
调制器具有两个可写属性,一个音频调制集和一个射频。要更改调制的音频子程序,应用程序需要初始化 index
和 txsubchans
字段以及 reserved
数组,然后调用 VIDIOC_S_MODULATOR ioctl。如果请求无法满足,驱动程序可以选择不同的音频调制。然而,这是一个只写 ioctl,它不会返回实际选择的音频调制。
SDR 特定的调制器类型是 V4L2_TUNER_SDR
和 V4L2_TUNER_RF
。对于 SDR 设备,txsubchans
字段必须初始化为零。在此上下文中,“调制器”指的是 SDR 发射器。
要更改射频,可以使用 VIDIOC_S_FREQUENCY ioctl。
-
type v4l2_modulator¶
__u32 |
|
标识调制器,由应用程序设置。 |
||
__u8 |
|
调制器的名称,一个以 NUL 结尾的 ASCII 字符串。 此信息供用户使用。 |
||
__u32 |
|
调制器功能标志。此字段未定义任何标志, |
||
__u32 |
|
最低可调频率,单位为 62.5 KHz,或者如果设置了 |
||
__u32 |
|
最高可调频率,单位为 62.5 KHz,或者如果设置了 |
||
__u32 |
|
通过此字段,应用程序可以确定如何调制音频子载波。它包含一组标志,如 调制器音频传输标志 中所定义。 注意 调谐器的 |
||
__u32 |
|
调制器的类型,请参阅 |
||
__u32 |
|
保留用于将来的扩展。 驱动程序和应用程序必须将数组设置为零。 |
|
0x0001 |
将通道 1 调制为单声道音频,当输入有多个通道时,混合通道 1 和 2。此标志不与 |
|
0x0002 |
将通道 1 和 2 调制为立体声音频信号的左右声道。当输入只有一个通道或两个通道并且还设置了 |
|
0x0008 |
将通道 1 和 2 调制为双语音频信号的主要和次要语言。当输入只有一个通道时,它用于两种语言。无法仅编码主要语言或次要语言。此标志不与 |
|
0x0004 |
与 |
|
0x0004 |
当与 |
|
0x0010 |
为无线电 FM 发射器启用 RDS 编码器。 |
7.35.5. 返回值¶
成功时返回 0,失败时返回 -1,并适当设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- EINVAL
struct
v4l2_modulator
的index
超出范围。