7.58. ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE

7.58.1. 名稱

VIDIOC_SUBDEV_ENUM_MBUS_CODE - 列舉媒體匯流排格式

7.58.2. 概要

VIDIOC_SUBDEV_ENUM_MBUS_CODE

int ioctl(int fd, VIDIOC_SUBDEV_ENUM_MBUS_CODE, struct v4l2_subdev_mbus_code_enum * argp)

7.58.3. 引數

fd

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

argp

指向 struct v4l2_subdev_mbus_code_enum 的指標。

7.58.4. 描述

此呼叫由應用程式用於訪問所選 pad 的媒體匯流排格式的列舉。

列舉由驅動程式定義,並使用 struct v4l2_subdev_mbus_code_enumindex 欄位進行索引。每個列舉都以 index 0 開始,並且最低的無效索引標記列舉的結束。

因此,要列舉給定子裝置 pad 上可用的媒體匯流排格式,請將 padwhich 欄位初始化為所需值,並將 index 設定為 0。然後使用指向此結構的指標呼叫 ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE ioctl。

成功呼叫將返回,並且 code 欄位填充有 mbus 程式碼值。重複增加 index 直到收到 EINVALEINVAL 表示 pad 無效,或者此 pad 上沒有更多可用的程式碼。

對於同一 pad 上的不同索引,驅動程式不得返回相同的 code 值。

可用的媒體匯流排格式可能取決於子裝置的其他 pad 上的當前“try”格式,以及當前活動的連結。有關 try 格式的更多資訊,請參見 ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT

type v4l2_subdev_mbus_code_enum
struct v4l2_subdev_mbus_code_enum

__u32

pad

媒體控制器 API 報告的 Pad 編號。由應用程式填充。

__u32

index

屬於給定 pad 的列舉中的 mbus 程式碼的索引。由應用程式填充。

__u32

code

媒體匯流排格式程式碼,如 媒體匯流排格式 中定義。由驅動程式填充。

__u32

which

要列舉的媒體匯流排格式程式碼,來自 enum v4l2_subdev_format_whence

__u32

flags

參見 Subdev 媒體匯流排程式碼列舉標誌

__u32

stream

流識別符號。

__u32

reserved[6]

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

Subdev 媒體匯流排程式碼列舉標誌

V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE

0x00000001

驅動程式允許應用程式嘗試更改預設顏色空間編碼。呼叫帶有 V4L2_MBUS_FRAMEFMT_SET_CSC 設定的 VIDIOC_SUBDEV_S_FMT ioctl 時,應用程式可以請求配置子裝置的顏色空間。有關如何執行此操作,請參見 媒體匯流排格式

V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC

0x00000002

驅動程式允許應用程式嘗試更改預設轉換函式。呼叫帶有 V4L2_MBUS_FRAMEFMT_SET_CSC 設定的 VIDIOC_SUBDEV_S_FMT ioctl 時,應用程式可以請求配置子裝置的轉換函式。有關如何執行此操作,請參見 媒體匯流排格式

V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC

0x00000004

驅動程式允許應用程式嘗試更改預設 Y’CbCr 編碼。呼叫帶有 V4L2_MBUS_FRAMEFMT_SET_CSC 設定的 VIDIOC_SUBDEV_S_FMT ioctl 時,應用程式可以請求配置子裝置的 Y’CbCr 編碼。有關如何執行此操作,請參見 媒體匯流排格式

V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC

0x00000004

驅動程式允許應用程式嘗試更改預設 HSV 編碼。呼叫帶有 V4L2_MBUS_FRAMEFMT_SET_CSC 設定的 VIDIOC_SUBDEV_S_FMT ioctl 時,應用程式可以請求配置子裝置的 HSV 編碼。有關如何執行此操作,請參見 媒體匯流排格式

V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION

0x00000008

驅動程式允許應用程式嘗試更改預設量化。呼叫帶有 V4L2_MBUS_FRAMEFMT_SET_CSC 設定的 VIDIOC_SUBDEV_S_FMT ioctl 時,應用程式可以請求配置子裝置的量化。有關如何執行此操作,請參見 媒體匯流排格式

7.58.5. 返回值

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

EINVAL

struct v4l2_subdev_mbus_code_enum pad 引用了一個不存在的 pad,which 欄位具有不支援的值,或者 index 欄位超出範圍。