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. 描述¶
要查询调制器的属性,应用程序初始化 index
字段并将 struct v4l2_modulator
的 reserved
数组清零,并使用指向此结构的指针调用 VIDIOC_G_MODULATOR ioctl。 当索引超出范围时,驱动程序会填充结构的其余部分或返回 EINVAL
错误代码。 要枚举所有调制器,应用程序应从索引零开始,每次递增 1,直到驱动程序返回 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 |
|
调制器功能标志。 未为此字段定义标志,因此相应地使用 struct |
||
__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
超出范围。