3.1. 讀/寫

ioctl VIDIOC_QUERYCAP ioctl 返回的 v4l2_capability 結構體的 capabilities 欄位中的 V4L2_CAP_READWRITE 標誌被設定時,輸入和輸出裝置分別支援 read()write() 函式。

驅動程式可能需要 CPU 複製資料,但它們也可能支援 DMA 到使用者記憶體或從使用者記憶體 DMA,因此這種 I/O 方法不一定比僅僅交換緩衝區指標的其他方法效率低。但它被認為是較差的,因為沒有傳遞像幀計數器或時間戳這樣的元資訊。這些資訊對於識別丟幀和與其他資料流同步是必要的。然而,這也是最簡單的 I/O 方法,幾乎不需要設定來交換資料。它允許這樣的命令列技巧(vidctrl 工具是虛構的)

$ vidctrl /dev/video --input=0 --format=YUYV --size=352x288
$ dd if=/dev/video of=myimage.422 bs=202752 count=1

要從裝置讀取資料,應用程式使用 read() 函式,要寫入資料,則使用 write() 函式。如果驅動程式與應用程式交換資料,則必須實現一種 I/O 方法,但不一定是這種方法。[1] 當支援讀取或寫入時,驅動程式還必須支援 select()poll() 函式。[2]