3. 輸入/輸出

V4L2 API 定義了幾種不同的讀寫裝置的方法。所有與應用程式交換資料的驅動程式必須至少支援其中一種。

使用 read()write() 函式的經典 I/O 方法在開啟 V4L2 裝置後會自動選擇。如果驅動程式不支援此方法,則任何讀寫嘗試都將失敗。

其他方法必須透過協商確定。要選擇帶有記憶體對映或使用者緩衝區的流式 I/O 方法,應用程式需呼叫 ioctl VIDIOC_REQBUFS ioctl。

影片疊加可以被視為另一種 I/O 方法,儘管應用程式不會直接接收影像資料。透過使用 VIDIOC_S_FMT ioctl 啟動影片疊加來選擇此方法。有關更多資訊,請參閱 影片疊加介面

通常,每個檔案描述符只關聯一個 I/O 方法,包括疊加。唯一的例外是不與驅動程式交換資料的應用程式(“面板應用程式”,請參閱 開啟和關閉裝置)以及為了與 V4L 和 V4L2 的早期版本相容而允許使用相同檔案描述符同時進行影片捕獲和疊加的驅動程式。

VIDIOC_S_FMTioctl VIDIOC_REQBUFS 在一定程度上允許這樣做,但為了簡化,驅動程式無需支援切換 I/O 方法(在首次從讀/寫切換後),除非透過關閉並重新開啟裝置。

以下章節將更詳細地描述各種 I/O 方法。