7.17. ioctl VIDIOC_ENUM_FREQ_BANDS

7.17.1. 名稱

VIDIOC_ENUM_FREQ_BANDS - 列舉支援的頻段

7.17.2. 概要

VIDIOC_ENUM_FREQ_BANDS

int ioctl(int fd, VIDIOC_ENUM_FREQ_BANDS, struct v4l2_frequency_band *argp)

7.17.3. 引數

fd

open() 返回的檔案描述符。

argp

指向 struct v4l2_frequency_band 的指標。

7.17.4. 描述

列舉調諧器或調製器支援的頻段。為此,應用程式初始化 tunertypeindex 欄位,並將 struct v4l2_frequency_bandreserved 陣列清零,然後使用指向此結構的指標呼叫 ioctl VIDIOC_ENUM_FREQ_BANDS ioctl。

如果設定了相應調諧器/調製器的 V4L2_TUNER_CAP_FREQ_BANDS 功能,則支援此ioctl。

type v4l2_frequency_band
struct v4l2_frequency_band

__u32

tuner

調諧器或調製器索引號。這與 struct v4l2_input tuner 欄位和 struct v4l2_tuner index 欄位,或者 struct v4l2_output modulator 欄位和 struct v4l2_modulator index 欄位中的值相同。

__u32

type

調諧器型別。這與 struct v4l2_tuner type 欄位中的值相同。對於 /dev/radioX 裝置節點,型別必須設定為 V4L2_TUNER_RADIO,對於所有其他裝置,型別必須設定為 V4L2_TUNER_ANALOG_TV。對於調製器,將此欄位設定為 V4L2_TUNER_RADIO (目前僅支援無線電調製器)。請參閱 v4l2_tuner_type

__u32

index

標識頻段,由應用程式設定。

__u32

capability

此頻段的調諧器/調製器功能標誌,請參閱 調諧器和調製器功能標誌V4L2_TUNER_CAP_LOWV4L2_TUNER_CAP_1HZ 功能對於所選調諧器/調製器的所有頻段必須相同。因此,要麼所有頻段都設定了該功能,要麼所有頻段都沒有設定該功能。

__u32

rangelow

此頻段的最低可調頻率,以 62.5 kHz 為單位,或者如果設定了 capability 標誌 V4L2_TUNER_CAP_LOW,則以 62.5 Hz 為單位。當設定了 capability 標誌 V4L2_TUNER_CAP_1HZ 時,使用 1 Hz 單位。

__u32

rangehigh

此頻段的最高可調頻率,以 62.5 kHz 為單位,或者如果設定了 capability 標誌 V4L2_TUNER_CAP_LOW,則以 62.5 Hz 為單位。當設定了 capability 標誌 V4L2_TUNER_CAP_1HZ 時,使用 1 Hz 單位。

__u32

modulation

此頻段支援的調製系統。請參閱 頻段調製系統

注意

目前,每個頻段僅支援一種調製系統。如果可能存在多種調製系統,則需要進行更多工作。如果您需要此功能,請聯絡 linux-media 郵件列表 (https://linuxtv.org/lists.php)。

__u32

reserved[9]

保留供將來擴充套件使用。

應用程式和驅動程式必須將陣列設定為零。

頻段調製系統

V4L2_BAND_MODULATION_VSB

0x02

殘留邊帶調製,用於模擬電視。

V4L2_BAND_MODULATION_FM

0x04

頻率調製,通常用於模擬無線電。

V4L2_BAND_MODULATION_AM

0x08

幅度調製,通常用於模擬無線電。

7.17.5. 返回值

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

EINVAL

tunerindex 超出範圍,或者 type 欄位錯誤。