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,直到返回
EINVAL。v4l2_frmsizeenum.type欄位由驅動程式設定為V4L2_FRMSIZE_TYPE_DISCRETE。聯合中只有discrete成員有效。逐步: 如果給定的索引值為零,則該函式返回成功;對於任何其他索引值,則返回
EINVAL。v4l2_frmsizeenum.type欄位由驅動程式設定為V4L2_FRMSIZE_TYPE_STEPWISE。聯合中只有stepwise成員有效。連續: 這是上面逐步型別的一個特殊情況。如果給定的索引值為零,則該函式返回成功;對於任何其他索引值,則返回
EINVAL。v4l2_frmsizeenum.type欄位由驅動程式設定為V4L2_FRMSIZE_TYPE_CONTINUOUS。聯合中只有stepwise成員有效,並且step_width和step_height值設定為 1。
當應用程式使用索引零呼叫該函式時,它必須檢查 type 欄位以確定裝置支援的幀大小列舉型別。只有對於 V4L2_FRMSIZE_TYPE_DISCRETE 型別,增加索引值以接收更多幀大小才有意義。
注意
返回幀大小的順序沒有特殊含義。特別是,它沒有說明任何關於潛在預設格式大小的資訊。
應用程式可以假定列舉資料不會在沒有任何應用程式互動的情況下發生更改。這意味著如果應用程式在執行幀大小列舉時不執行任何其他 ioctl 呼叫,則列舉資料是一致的。
7.15.5. 結構體¶
在下面的結構體中,IN 表示必須由應用程式填充的值,OUT 表示驅動程式填充的值。應用程式應將除 IN 欄位之外的所有成員清零。
-
型別 v4l2_frmsize_discrete¶
__u32 |
|
幀的寬度 [畫素]。 |
__u32 |
|
幀的高度 [畫素]。 |
-
型別 v4l2_frmsize_stepwise¶
__u32 |
|
最小幀寬度 [畫素]。 |
__u32 |
|
最大幀寬度 [畫素]。 |
__u32 |
|
幀寬度步長 [畫素]。 |
__u32 |
|
最小幀高度 [畫素]。 |
__u32 |
|
最大幀高度 [畫素]。 |
__u32 |
|
幀高度步長 [畫素]。 |
-
型別 v4l2_frmsizeenum¶
__u32 |
|
IN: 列舉中給定幀大小的索引。 |
__u32 |
|
IN: 列舉幀大小的畫素格式。 |
__u32 |
|
OUT: 裝置支援的幀大小型別。 |
union { |
(anonymous) |
OUT: 具有給定索引的幀大小。 |
struct |
|
|
struct |
|
|
} |
||
__u32 |
|
為將來使用保留的空間。必須由驅動程式和應用程式清零。 |
7.15.6. 列舉¶
-
型別 v4l2_frmsizetypes¶
|
1 |
離散幀大小。 |
|
2 |
連續幀大小。 |
|
3 |
逐步定義的幀大小。 |
7.15.7. 返回值¶
成功時返回 0,出錯時返回 -1 並且會適當地設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。