1.6. 调谐器和调制器

1.6.1. 调谐器

视频输入设备可以有一个或多个调谐器,用于解调 RF 信号。每个调谐器与一个或多个视频输入相关联,具体取决于调谐器上的 RF 连接器数量。由 ioctl VIDIOC_ENUMINPUT ioctl 返回的相应结构体 v4l2_inputtype 字段设置为 V4L2_INPUT_TYPE_TUNER,并且其 tuner 字段包含调谐器的索引号。

无线电输入设备恰好有一个索引为零的调谐器,没有视频输入。

要查询和更改调谐器属性,应用程序分别使用 VIDIOC_G_TUNERVIDIOC_S_TUNER ioctl。由 VIDIOC_G_TUNER 返回的结构体 v4l2_tuner 还包含在查询当前视频或无线电输入的调谐器时适用的信号状态信息。

注意

当有多个调谐器时,VIDIOC_S_TUNER 不会切换当前调谐器。调谐器完全由当前的视频输入决定。当设备有一个或多个调谐器时,驱动程序必须支持这两个 ioctl,并在由 ioctl VIDIOC_QUERYCAP ioctl 返回的结构体 v4l2_capability 中设置 V4L2_CAP_TUNER 标志。

1.6.2. 调制器

视频输出设备可以有一个或多个调制器,用于调制视频信号以进行辐射或连接到电视机或录像机的天线输入。每个调制器与一个或多个视频输出相关联,具体取决于调制器上的 RF 连接器数量。由 ioctl VIDIOC_ENUMOUTPUT ioctl 返回的相应结构体 v4l2_outputtype 字段设置为 V4L2_OUTPUT_TYPE_MODULATOR,并且其 modulator 字段包含调制器的索引号。

无线电输出设备恰好有一个索引为零的调制器,没有视频输出。

视频或无线电设备不能同时支持调谐器和调制器。对于此类硬件,必须使用两个单独的设备节点,一个支持调谐器功能,另一个支持调制器功能。原因是 VIDIOC_S_FREQUENCY ioctl 存在限制,您无法指定频率是用于调谐器还是调制器。

要查询和更改调制器属性,应用程序使用 VIDIOC_G_MODULATORVIDIOC_S_MODULATOR ioctl。请注意,当有多个调制器时,VIDIOC_S_MODULATOR 根本不会切换当前调制器。调制器完全由当前的视频输出决定。当设备有一个或多个调制器时,驱动程序必须支持这两个 ioctl,并在由 ioctl VIDIOC_QUERYCAP ioctl 返回的结构体 v4l2_capability 中设置 V4L2_CAP_MODULATOR 标志。

1.6.3. 射频

要获取和设置调谐器或调制器的射频,应用程序使用 VIDIOC_G_FREQUENCYVIDIOC_S_FREQUENCY ioctl,这两个 ioctl 都接受指向结构体 v4l2_frequency 的指针。这些 ioctl 用于电视和无线电设备。当支持调谐器或调制器 ioctl 时,或者当设备是无线电设备时,驱动程序必须支持这两个 ioctl。