7.18. ioctl VIDIOC_ENUMINPUT

7.18.1. 名稱

VIDIOC_ENUMINPUT - 列舉影片輸入

7.18.2. 概要

VIDIOC_ENUMINPUT

int ioctl(int fd, VIDIOC_ENUMINPUT, struct v4l2_input *argp)

7.18.3. 引數

fd

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

argp

指向 struct v4l2_input 的指標。

7.18.4. 描述

要查詢影片輸入的屬性,應用程式初始化 struct v4l2_inputindex 欄位,並使用指向此結構的指標呼叫 ioctl VIDIOC_ENUMINPUT。 驅動程式填充結構的其餘部分,或者當索引超出範圍時返回 EINVAL 錯誤程式碼。 為了列舉所有輸入,應用程式應從索引零開始,遞增 1,直到驅動程式返回 EINVAL

type v4l2_input
struct v4l2_input

__u32

index

標識輸入,由應用程式設定。

__u8

name[32]

影片輸入的名稱,一個以 NUL 結尾的 ASCII 字串,例如:“Vin (Composite 2)”。 此資訊供使用者使用,最好是裝置本身的聯結器標籤。

__u32

type

輸入型別,請參閱 輸入型別

__u32

audioset

驅動程式最多可以列舉 32 個影片和音訊輸入。 如果這是當前選定的影片輸入,則此欄位顯示哪些音訊輸入可以選擇作為音訊源。 這是一個位掩碼。 LSB 對應於音訊輸入 0,MSB 對應於輸入 31。 可以設定任意數量的位,也可以不設定。

當驅動程式不列舉音訊輸入時,不得設定任何位。 應用程式不應將其解釋為缺少音訊支援。 一些驅動程式會自動選擇音訊源,並且不列舉它們,因為無論如何都沒有選擇。

有關音訊輸入以及如何選擇當前輸入的詳細資訊,請參閱 音訊輸入和輸出

__u32

tuner

捕獲裝置可以有零個或多個調諧器(RF 解調器)。 當 type 設定為 V4L2_INPUT_TYPE_TUNER 時,這是一個 RF 聯結器,此欄位標識調諧器。 它對應於 struct v4l2_tuner 欄位 index。 有關調諧器的詳細資訊,請參閱 調諧器和調製器

v4l2_std_id

std

每個影片輸入都支援一種或多種不同的影片標準。 此欄位是所有支援標準的集合。 有關影片標準以及如何切換的詳細資訊,請參閱 影片標準

__u32

status

此欄位提供有關輸入的狀態資訊。 有關標誌,請參閱 輸入狀態標誌。 除了感測器方向位 status 之外,僅當這是當前輸入時才有效。

__u32

capabilities

此欄位提供輸入的功能。 有關標誌,請參閱 輸入功能

__u32

reserved[3]

為將來的擴充套件保留。 驅動程式必須將陣列設定為零。

輸入型別

V4L2_INPUT_TYPE_TUNER

1

此輸入使用調諧器(RF 解調器)。

V4L2_INPUT_TYPE_CAMERA

2

任何非調諧器影片輸入,例如複合影片、S-Video、HDMI、攝像頭感測器。 命名為 _TYPE_CAMERA 是歷史原因,今天我們將其稱為 _TYPE_VIDEO

V4L2_INPUT_TYPE_TOUCH

3

此輸入是用於捕獲原始觸控資料的觸控裝置。

輸入狀態標誌

常規

V4L2_IN_ST_NO_POWER

0x00000001

連線的裝置已關閉。

V4L2_IN_ST_NO_SIGNAL

0x00000002

V4L2_IN_ST_NO_COLOR

0x00000004

硬體支援顏色解碼,但未檢測到訊號中的顏色調製。

感測器方向

V4L2_IN_ST_HFLIP

0x00000010

輸入連線到生成水平翻轉的訊號的裝置,並且在將訊號傳遞到使用者空間之前不會對其進行校正。

V4L2_IN_ST_VFLIP

0x00000020

輸入連線到生成垂直翻轉的訊號的裝置,並且在將訊號傳遞到使用者空間之前不會對其進行校正。 .. note:: 180 度旋轉與 HFLIP | VFLIP 相同

模擬影片

V4L2_IN_ST_NO_H_LOCK

0x00000100

沒有水平同步鎖定。

V4L2_IN_ST_COLOR_KILL

0x00000200

當顏色抑制電路檢測到沒有顏色調製時,會自動停用顏色解碼。 當設定此標誌時,顏色抑制已啟用已關閉顏色解碼。

V4L2_IN_ST_NO_V_LOCK

0x00000400

沒有垂直同步鎖定。

V4L2_IN_ST_NO_STD_LOCK

0x00000800

在元件自動檢測格式的情況下,沒有標準格式鎖定。

數字影片

V4L2_IN_ST_NO_SYNC

0x00010000

沒有同步鎖定。

V4L2_IN_ST_NO_EQU

0x00020000

沒有均衡器鎖定。

V4L2_IN_ST_NO_CARRIER

0x00040000

載波恢復失敗。

VCR 和機頂盒

V4L2_IN_ST_MACROVISION

0x01000000

Macrovision 是一種模擬複製保護系統,用於篡改影片訊號以混淆錄影機。 當設定此標誌時,已檢測到 Macrovision。

V4L2_IN_ST_NO_ACCESS

0x02000000

條件訪問被拒絕。

V4L2_IN_ST_VTR

0x04000000

VTR 時間常數。 [?]

輸入功能

V4L2_IN_CAP_DV_TIMINGS

0x00000002

此輸入支援使用 VIDIOC_S_DV_TIMINGS 設定影片時序。

V4L2_IN_CAP_STD

0x00000004

此輸入支援使用 VIDIOC_S_STD 設定電視標準。

V4L2_IN_CAP_NATIVE_SIZE

0x00000008

此輸入支援使用 V4L2_SEL_TGT_NATIVE_SIZE 選擇目標設定本機大小,請參閱 通用選擇定義

7.18.5. 返回值

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

EINVAL

struct v4l2_input index 超出範圍。