7.15. ioctl VIDIOC_ENUM_FRAMESIZES

7.15.1. 名稱

VIDIOC_ENUM_FRAMESIZES - 列舉幀大小

7.15.2. 概要

VIDIOC_ENUM_FRAMESIZES

int ioctl(int fd, VIDIOC_ENUM_FRAMESIZES, struct v4l2_frmsizeenum *argp)

7.15.3. 引數

fd

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

argp

指向 struct v4l2_frmsizeenum 的指標,該結構包含索引和畫素格式,並接收幀寬度和高度。

7.15.4. 描述

此 ioctl 允許應用程式列舉裝置支援的給定畫素格式的所有幀大小(即畫素寬度和高度)。

支援的畫素格式可以透過使用 ioctl VIDIOC_ENUM_FMT 函式獲得。

返回值和 v4l2_frmsizeenum.type 欄位的內容取決於裝置支援的幀大小型別。以下是該函式在不同情況下的語義

  • 離散: 如果給定的索引值(從零開始)有效,則該函式返回成功。應用程式應為每次呼叫將索引增加 1,直到返回 EINVALv4l2_frmsizeenum.type 欄位由驅動程式設定為 V4L2_FRMSIZE_TYPE_DISCRETE。聯合中只有 discrete 成員有效。

  • 逐步: 如果給定的索引值為零,則該函式返回成功;對於任何其他索引值,則返回 EINVALv4l2_frmsizeenum.type 欄位由驅動程式設定為 V4L2_FRMSIZE_TYPE_STEPWISE。聯合中只有 stepwise 成員有效。

  • 連續: 這是上面逐步型別的一個特殊情況。如果給定的索引值為零,則該函式返回成功;對於任何其他索引值,則返回 EINVALv4l2_frmsizeenum.type 欄位由驅動程式設定為 V4L2_FRMSIZE_TYPE_CONTINUOUS。聯合中只有 stepwise 成員有效,並且 step_widthstep_height 值設定為 1。

當應用程式使用索引零呼叫該函式時,它必須檢查 type 欄位以確定裝置支援的幀大小列舉型別。只有對於 V4L2_FRMSIZE_TYPE_DISCRETE 型別,增加索引值以接收更多幀大小才有意義。

注意

返回幀大小的順序沒有特殊含義。特別是,它沒有說明任何關於潛在預設格式大小的資訊。

應用程式可以假定列舉資料不會在沒有任何應用程式互動的情況下發生更改。這意味著如果應用程式在執行幀大小列舉時不執行任何其他 ioctl 呼叫,則列舉資料是一致的。

7.15.5. 結構體

在下面的結構體中,IN 表示必須由應用程式填充的值,OUT 表示驅動程式填充的值。應用程式應將除 IN 欄位之外的所有成員清零。

型別 v4l2_frmsize_discrete
struct v4l2_frmsize_discrete

__u32

width

幀的寬度 [畫素]。

__u32

height

幀的高度 [畫素]。

型別 v4l2_frmsize_stepwise
struct v4l2_frmsize_stepwise

__u32

min_width

最小幀寬度 [畫素]。

__u32

max_width

最大幀寬度 [畫素]。

__u32

step_width

幀寬度步長 [畫素]。

__u32

min_height

最小幀高度 [畫素]。

__u32

max_height

最大幀高度 [畫素]。

__u32

step_height

幀高度步長 [畫素]。

型別 v4l2_frmsizeenum
struct v4l2_frmsizeenum

__u32

index

IN: 列舉中給定幀大小的索引。

__u32

pixel_format

IN: 列舉幀大小的畫素格式。

__u32

type

OUT: 裝置支援的幀大小型別。

union {

(anonymous)

OUT: 具有給定索引的幀大小。

struct v4l2_frmsize_discrete

discrete

struct v4l2_frmsize_stepwise

stepwise

}

__u32

reserved[2]

為將來使用保留的空間。必須由驅動程式和應用程式清零。

7.15.6. 列舉

型別 v4l2_frmsizetypes
enum v4l2_frmsizetypes

V4L2_FRMSIZE_TYPE_DISCRETE

1

離散幀大小。

V4L2_FRMSIZE_TYPE_CONTINUOUS

2

連續幀大小。

V4L2_FRMSIZE_TYPE_STEPWISE

3

逐步定義的幀大小。

7.15.7. 返回值

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