1.6. 调谐器与调制器

1.6.1. 调谐器

视频输入设备可以有一个或多个调谐器,用于解调射频 (RF) 信号。每个调谐器与一个或多个视频输入相关联,这取决于调谐器上的射频 (RF) 连接器数量。由 ioctl VIDIOC_ENUMINPUT ioctl 返回的相应 v4l2_input 结构体的 type 字段被设置为 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_output 结构体的 type 字段被设置为 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。