7.54. ioctl VIDIOC_S_HW_FREQ_SEEK¶
7.54.1. 名称¶
VIDIOC_S_HW_FREQ_SEEK - 执行硬件频率搜索
7.54.2. 概要¶
-
VIDIOC_S_HW_FREQ_SEEK¶
int ioctl(int fd, VIDIOC_S_HW_FREQ_SEEK, struct v4l2_hw_freq_seek *argp)
7.54.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向结构体
v4l2_hw_freq_seek
的指针。
7.54.4. 描述¶
从当前频率开始硬件频率搜索。为此,应用程序初始化结构体 v4l2_hw_freq_seek
的 tuner
,type
,seek_upward
,wrap_around
,spacing
,rangelow
和 rangehigh
字段,并将 reserved
数组清零,然后使用指向此结构的指针调用 VIDIOC_S_HW_FREQ_SEEK
ioctl。
可以将 rangelow
和 rangehigh
字段设置为非零值,以告诉驱动程序搜索特定的频段。如果结构体 v4l2_tuner
的 capability
字段设置了 V4L2_TUNER_CAP_HWSEEK_PROG_LIM
标志,则这些值必须落在 ioctl VIDIOC_ENUM_FREQ_BANDS 返回的频段之一内。如果未设置 V4L2_TUNER_CAP_HWSEEK_PROG_LIM
标志,则这些值必须与 ioctl VIDIOC_ENUM_FREQ_BANDS 返回的频段之一的值完全匹配。如果调谐器的当前频率不在选定的频段内,则在开始搜索之前,它将被钳位以适合该频段。
如果返回错误,则原始频率将被恢复。
如果设置了 V4L2_CAP_HW_FREQ_SEEK
功能,则支持此 ioctl。
如果从非阻塞文件句柄调用此 ioctl,则会返回 EAGAIN
错误代码,并且不进行搜索。
-
类型 v4l2_hw_freq_seek¶
__u32 |
|
调谐器索引号。这与结构体 |
__u32 |
|
调谐器类型。这与结构体 |
__u32 |
|
如果非零,则从当前频率向上搜索,否则向下搜索。 |
__u32 |
|
如果非零,则在到达频率范围的末尾时环绕,否则停止搜索。结构体 |
__u32 |
|
如果非零,则定义硬件搜索分辨率(以 Hz 为单位)。驱动程序选择设备支持的最接近的值。如果间距为零,则使用合理的默认值。 |
__u32 |
|
如果非零,则要搜索的频段的最低可调谐频率(以 62.5 kHz 为单位),或者如果结构体 |
__u32 |
|
如果非零,则要搜索的频段的最高可调谐频率(以 62.5 kHz 为单位),或者如果结构体 |
__u32 |
|
保留以供将来扩展。应用程序必须将数组设置为零。 |
7.54.5. 返回值¶
成功时返回 0,错误时返回 -1,并且会适当地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- EINVAL
tuner
索引超出范围,不支持wrap_around
值,或者type
、rangelow
或rangehigh
字段中的某个值错误。- EAGAIN
尝试在非阻塞模式下使用文件句柄调用
VIDIOC_S_HW_FREQ_SEEK
。- ENODATA
硬件搜索未找到任何频道。
- EBUSY
另一个硬件搜索已经在进行中。