1 .. SPDX-License-Identifier: GFDL-1.1-no-invari 1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 .. c:namespace:: V4L 2 .. c:namespace:: V4L 3 3 4 .. _io: 4 .. _io: 5 5 6 ############ 6 ############ 7 Input/Output 7 Input/Output 8 ############ 8 ############ 9 The V4L2 API defines several different methods 9 The V4L2 API defines several different methods to read from or write to 10 a device. All drivers exchanging data with app 10 a device. All drivers exchanging data with applications must support at 11 least one of them. 11 least one of them. 12 12 13 The classic I/O method using the :c:func:`read 13 The classic I/O method using the :c:func:`read()` and 14 :c:func:`write()` function is automatically se 14 :c:func:`write()` function is automatically selected after opening a 15 V4L2 device. When the driver does not support 15 V4L2 device. When the driver does not support this method attempts to 16 read or write will fail at any time. 16 read or write will fail at any time. 17 17 18 Other methods must be negotiated. To select th 18 Other methods must be negotiated. To select the streaming I/O method 19 with memory mapped or user buffers application 19 with memory mapped or user buffers applications call the 20 :ref:`VIDIOC_REQBUFS` ioctl. 20 :ref:`VIDIOC_REQBUFS` ioctl. 21 21 22 Video overlay can be considered another I/O me 22 Video overlay can be considered another I/O method, although the 23 application does not directly receive the imag 23 application does not directly receive the image data. It is selected by 24 initiating video overlay with the :ref:`VIDIOC 24 initiating video overlay with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` 25 ioctl. For more information see :ref:`overlay` 25 ioctl. For more information see :ref:`overlay`. 26 26 27 Generally exactly one I/O method, including ov 27 Generally exactly one I/O method, including overlay, is associated with 28 each file descriptor. The only exceptions are 28 each file descriptor. The only exceptions are applications not 29 exchanging data with a driver ("panel applicat 29 exchanging data with a driver ("panel applications", see :ref:`open`) 30 and drivers permitting simultaneous video capt 30 and drivers permitting simultaneous video capturing and overlay using 31 the same file descriptor, for compatibility wi 31 the same file descriptor, for compatibility with V4L and earlier 32 versions of V4L2. 32 versions of V4L2. 33 33 34 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`V 34 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_REQBUFS` would permit this to some 35 degree, but for simplicity drivers need not su 35 degree, but for simplicity drivers need not support switching the I/O 36 method (after first switching away from read/w 36 method (after first switching away from read/write) other than by 37 closing and reopening the device. 37 closing and reopening the device. 38 38 39 The following sections describe the various I/ 39 The following sections describe the various I/O methods in more detail. 40 40 41 .. toctree:: 41 .. toctree:: 42 :maxdepth: 1 42 :maxdepth: 1 43 43 44 rw 44 rw 45 mmap 45 mmap 46 userp 46 userp 47 dmabuf 47 dmabuf 48 buffer 48 buffer 49 field-order 49 field-order
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.