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. 描述

從當前頻率開始硬體頻率搜尋。為此,應用程式初始化 tunertypeseek_upwardwrap_aroundspacingrangelowrangehigh 欄位,並將結構體 v4l2_hw_freq_seekreserved 陣列清零,然後使用指向此結構的指標呼叫 VIDIOC_S_HW_FREQ_SEEK ioctl。

可以將 rangelowrangehigh 欄位設定為非零值,以告訴驅動程式搜尋特定頻段。如果結構體 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 錯誤程式碼,並且不進行搜尋。

type v4l2_hw_freq_seek
struct v4l2_hw_freq_seek

__u32

tuner

調諧器索引號。這與結構體 v4l2_input tuner 欄位和結構體 v4l2_tuner index 欄位中的值相同。

__u32

type

調諧器型別。這與結構體 v4l2_tuner type 欄位中的值相同。請參閱 v4l2_tuner_type

__u32

seek_upward

如果非零,則從當前頻率向上搜尋,否則向下搜尋。

__u32

wrap_around

如果非零,則在頻率範圍結束時迴繞,否則停止搜尋。結構體 v4l2_tuner capability 欄位將告訴您硬體支援哪些功能。

__u32

spacing

如果非零,則定義硬體搜尋解析度(以 Hz 為單位)。驅動程式選擇裝置支援的最近似的值。如果 spacing 為零,則使用合理的預設值。

__u32

rangelow

如果非零,則搜尋頻段的最低可調頻率,單位為 62.5 kHz,或者如果結構體 v4l2_tuner capability 欄位設定了 V4L2_TUNER_CAP_LOW 標誌,則單位為 62.5 Hz,或者如果結構體 v4l2_tuner capability 欄位設定了 V4L2_TUNER_CAP_1HZ 標誌,則單位為 1 Hz。如果 rangelow 為零,則使用合理的預設值。

__u32

rangehigh

如果非零,則搜尋頻段的最高可調頻率,單位為 62.5 kHz,或者如果結構體 v4l2_tuner capability 欄位設定了 V4L2_TUNER_CAP_LOW 標誌,則單位為 62.5 Hz,或者如果結構體 v4l2_tuner capability 欄位設定了 V4L2_TUNER_CAP_1HZ 標誌,則單位為 1 Hz。如果 rangehigh 為零,則使用合理的預設值。

__u32

reserved[5]

保留以供將來擴充套件。應用程式必須將陣列設定為零。

7.54.5. 返回值

成功時返回 0,錯誤時返回 -1 並適當設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。

EINVAL

tuner 索引超出範圍,不支援 wrap_around 值,或者 typerangelowrangehigh 欄位中的某個值錯誤。

EAGAIN

嘗試以非阻塞模式使用檔案控制代碼呼叫 VIDIOC_S_HW_FREQ_SEEK

ENODATA

硬體搜尋未找到任何頻道。

EBUSY

另一個硬體搜尋已經在進行中。