7.37. ioctl VIDIOC_G_PARM, VIDIOC_S_PARM¶
7.37.1. 名稱¶
VIDIOC_G_PARM - VIDIOC_S_PARM - 獲取或設定流式傳輸引數
7.37.2. 概要¶
-
VIDIOC_G_PARM¶
int ioctl(int fd, VIDIOC_G_PARM, v4l2_streamparm *argp)
-
VIDIOC_S_PARM¶
int ioctl(int fd, VIDIOC_S_PARM, v4l2_streamparm *argp)
7.37.3. 引數¶
fd由
open()返回的檔案描述符。argp指向 struct
v4l2_streamparm的指標。
7.37.4. 描述¶
應用程式可以請求不同的幀間隔。捕獲或輸出裝置將被重新配置以支援請求的幀間隔(如果可能)。驅動程式可以選擇跳過或重複幀以實現請求的幀間隔。
對於有狀態編碼器(參見 記憶體到記憶體有狀態影片編碼器介面),這表示通常嵌入在編碼影片流中的幀間隔。
更改幀間隔絕不應更改格式。另一方面,更改格式可能會更改幀間隔。
此外,這些 ioctl 可用於確定驅動程式在讀/寫模式下內部使用的緩衝區數量。有關含義,請參閱討論 read() 函式的部分。
要獲取和設定流式傳輸引數,應用程式分別呼叫 VIDIOC_G_PARM 和 VIDIOC_S_PARM ioctl。它們接受指向 struct v4l2_streamparm 的指標,該結構包含一個聯合,其中包含輸入和輸出裝置的單獨引數。
-
type v4l2_streamparm¶
__u32 |
|
緩衝區(流)型別,與 struct |
union { |
|
|
struct |
|
捕獲裝置的引數,當 |
struct |
|
輸出裝置的引數,當 |
__u8 |
|
未來擴充套件的佔位符。 |
} |
||
-
type v4l2_captureparm¶
__u32 |
|
參見 流式傳輸引數功能。 |
__u32 |
|
由驅動程式和應用程式設定,參見 捕獲引數標誌。 |
struct |
|
這是驅動程式捕獲的連續幀之間的期望週期,以秒為單位。 |
|
這將配置影片源(例如感測器)生成影片幀的速度。如果速度是固定的,則驅動程式可以選擇跳過或重複幀,以實現請求的幀速率。 對於有狀態編碼器(參見 記憶體到記憶體有狀態影片編碼器介面),這表示通常嵌入在編碼影片流中的幀間隔。 應用程式在此處儲存期望的幀週期,驅動程式返回實際幀週期。 更改影片標準(也透過切換影片輸入隱式地更改)可能會將此引數重置為標稱幀週期。要手動重置,應用程式只需將此欄位設定為零。 驅動程式僅在 |
||
__u32 |
|
自定義(特定於驅動程式)流式傳輸引數。當未使用時,應用程式和驅動程式必須將此欄位設定為零。使用此欄位的應用程式應檢查驅動程式名稱和版本,參見 查詢功能。 |
__u32 |
|
應用程式將此欄位設定為驅動程式在 |
__u32 |
|
保留供將來擴充套件使用。驅動程式和應用程式必須將陣列設定為零。 |
-
type v4l2_outputparm¶
__u32 |
|
參見 流式傳輸引數功能。 |
__u32 |
|
由驅動程式和應用程式設定,參見 捕獲引數標誌。 |
struct |
|
這是驅動程式輸出的連續幀之間的期望週期,以秒為單位。 |
|
該欄位旨在在 對於有狀態編碼器(參見 記憶體到記憶體有狀態影片編碼器介面),這表示通常嵌入在編碼影片流中的幀間隔,併為編碼器提供有關原始幀排隊到編碼器的速度的提示。 應用程式在此處儲存期望的幀週期,驅動程式返回實際幀週期。 更改影片標準(也透過切換影片輸出隱式地更改)可能會將此引數重置為標稱幀週期。要手動重置,應用程式只需將此欄位設定為零。 驅動程式僅在 |
||
__u32 |
|
自定義(特定於驅動程式)流式傳輸引數。當未使用時,應用程式和驅動程式必須將此欄位設定為零。使用此欄位的應用程式應檢查驅動程式名稱和版本,參見 查詢功能。 |
__u32 |
|
應用程式將此欄位設定為驅動程式在 |
__u32 |
|
保留供將來擴充套件使用。驅動程式和應用程式必須將陣列設定為零。 |
|
0x1000 |
可以透過設定 |
|
0x0001 |
高質量成像模式。高質量模式適用於靜態成像應用。其目的是獲得硬體可以提供的最佳影像質量。沒有定義驅動程式編寫者如何實現這一點;這將取決於硬體和驅動程式編寫者的聰明才智。高質量模式與常規運動影片捕獲模式不同。在高質量模式下
|
7.37.5. 返回值¶
成功時返回 0,錯誤時返回 -1,並適當設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。