~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/userspace-api/media/v4l/format.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/userspace-api/media/v4l/format.rst (Version linux-6.12-rc7) and /Documentation/userspace-api/media/v4l/format.rst (Version linux-6.6.60)


  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 .. _format:                                         4 .. _format:
  5                                                     5 
  6 ************                                        6 ************
  7 Data Formats                                        7 Data Formats
  8 ************                                        8 ************
  9                                                     9 
 10 Data Format Negotiation                            10 Data Format Negotiation
 11 =======================                            11 =======================
 12                                                    12 
 13 Different devices exchange different kinds of      13 Different devices exchange different kinds of data with applications,
 14 for example video images, raw or sliced VBI da     14 for example video images, raw or sliced VBI data, RDS datagrams. Even
 15 within one kind many different formats are pos     15 within one kind many different formats are possible, in particular there is an
 16 abundance of image formats. Although drivers m     16 abundance of image formats. Although drivers must provide a default and
 17 the selection persists across closing and reop     17 the selection persists across closing and reopening a device,
 18 applications should always negotiate a data fo     18 applications should always negotiate a data format before engaging in
 19 data exchange. Negotiation means the applicati     19 data exchange. Negotiation means the application asks for a particular
 20 format and the driver selects and reports the      20 format and the driver selects and reports the best the hardware can do
 21 to satisfy the request. Of course applications     21 to satisfy the request. Of course applications can also just query the
 22 current selection.                                 22 current selection.
 23                                                    23 
 24 A single mechanism exists to negotiate all dat     24 A single mechanism exists to negotiate all data formats using the
 25 aggregate struct :c:type:`v4l2_format` and the     25 aggregate struct :c:type:`v4l2_format` and the
 26 :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and             26 :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
 27 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls. Add     27 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls. Additionally the
 28 :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can     28 :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to examine
 29 what the hardware *could* do, without actually     29 what the hardware *could* do, without actually selecting a new data
 30 format. The data formats supported by the V4L2     30 format. The data formats supported by the V4L2 API are covered in the
 31 respective device section in :ref:`devices`. F     31 respective device section in :ref:`devices`. For a closer look at
 32 image formats see :ref:`pixfmt`.                   32 image formats see :ref:`pixfmt`.
 33                                                    33 
 34 The :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl i     34 The :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl is a major turning-point in the
 35 initialization sequence. Prior to this point m     35 initialization sequence. Prior to this point multiple panel applications
 36 can access the same device concurrently to sel     36 can access the same device concurrently to select the current input,
 37 change controls or modify other properties. Th     37 change controls or modify other properties. The first :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
 38 assigns a logical stream (video data, VBI data     38 assigns a logical stream (video data, VBI data etc.) exclusively to one
 39 file descriptor.                                   39 file descriptor.
 40                                                    40 
 41 Exclusive means no other application, more pre     41 Exclusive means no other application, more precisely no other file
 42 descriptor, can grab this stream or change dev     42 descriptor, can grab this stream or change device properties
 43 inconsistent with the negotiated parameters. A     43 inconsistent with the negotiated parameters. A video standard change for
 44 example, when the new standard uses a differen     44 example, when the new standard uses a different number of scan lines,
 45 can invalidate the selected image format. Ther     45 can invalidate the selected image format. Therefore only the file
 46 descriptor owning the stream can make invalida     46 descriptor owning the stream can make invalidating changes. Accordingly
 47 multiple file descriptors which grabbed differ     47 multiple file descriptors which grabbed different logical streams
 48 prevent each other from interfering with their     48 prevent each other from interfering with their settings. When for
 49 example video overlay is about to start or alr     49 example video overlay is about to start or already in progress,
 50 simultaneous video capturing may be restricted     50 simultaneous video capturing may be restricted to the same cropping and
 51 image size.                                        51 image size.
 52                                                    52 
 53 When applications omit the :ref:`VIDIOC_S_FMT      53 When applications omit the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl its locking side
 54 effects are implied by the next step, the sele     54 effects are implied by the next step, the selection of an I/O method
 55 with the :ref:`VIDIOC_REQBUFS` ioctl or implic     55 with the :ref:`VIDIOC_REQBUFS` ioctl or implicit
 56 with the first :c:func:`read()` or                 56 with the first :c:func:`read()` or
 57 :c:func:`write()` call.                            57 :c:func:`write()` call.
 58                                                    58 
 59 Generally only one logical stream can be assig     59 Generally only one logical stream can be assigned to a file descriptor,
 60 the exception being drivers permitting simulta     60 the exception being drivers permitting simultaneous video capturing and
 61 overlay using the same file descriptor for com     61 overlay using the same file descriptor for compatibility with V4L and
 62 earlier versions of V4L2. Switching the logica     62 earlier versions of V4L2. Switching the logical stream or returning into
 63 "panel mode" is possible by closing and reopen     63 "panel mode" is possible by closing and reopening the device. Drivers
 64 *may* support a switch using :ref:`VIDIOC_S_FM     64 *may* support a switch using :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`.
 65                                                    65 
 66 All drivers exchanging data with applications      66 All drivers exchanging data with applications must support the
 67 :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and :ref:`V     67 :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. Implementation of the
 68 :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is highly     68 :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is highly recommended but optional.
 69                                                    69 
 70 Image Format Enumeration                           70 Image Format Enumeration
 71 ========================                           71 ========================
 72                                                    72 
 73 Apart of the generic format negotiation functi     73 Apart of the generic format negotiation functions a special ioctl to
 74 enumerate all image formats supported by video     74 enumerate all image formats supported by video capture, overlay or
 75 output devices is available. [#f1]_                75 output devices is available. [#f1]_
 76                                                    76 
 77 The :ref:`VIDIOC_ENUM_FMT` ioctl must be suppo     77 The :ref:`VIDIOC_ENUM_FMT` ioctl must be supported
 78 by all drivers exchanging image data with appl     78 by all drivers exchanging image data with applications.
 79                                                    79 
 80 .. important::                                     80 .. important::
 81                                                    81 
 82     Drivers are not supposed to convert image      82     Drivers are not supposed to convert image formats in kernel space.
 83     They must enumerate only formats directly      83     They must enumerate only formats directly supported by the hardware.
 84     If necessary driver writers should publish     84     If necessary driver writers should publish an example conversion
 85     routine or library for integration into ap     85     routine or library for integration into applications.
 86                                                    86 
 87 .. [#f1]                                           87 .. [#f1]
 88    Enumerating formats an application has no a     88    Enumerating formats an application has no a-priori knowledge of
 89    (otherwise it could explicitly ask for them     89    (otherwise it could explicitly ask for them and need not enumerate)
 90    seems useless, but there are applications s     90    seems useless, but there are applications serving as proxy between
 91    drivers and the actual video applications f     91    drivers and the actual video applications for which this is useful.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php