Merge tag 'irqchip-fixes-5.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / Documentation / userspace-api / media / v4l / streaming-par.rst
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2 .. c:namespace:: V4L
3
4 .. _streaming-par:
5
6 ********************
7 Streaming Parameters
8 ********************
9
10 Streaming parameters are intended to optimize the video capture process
11 as well as I/O. Presently applications can request a high quality
12 capture mode with the :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl.
13
14 The current video standard determines a nominal number of frames per
15 second. If less than this number of frames is to be captured or output,
16 applications can request frame skipping or duplicating on the driver
17 side. This is especially useful when using the
18 :c:func:`read()` or :c:func:`write()`, which are
19 not augmented by timestamps or sequence counters, and to avoid
20 unnecessary data copying.
21
22 Finally these ioctls can be used to determine the number of buffers used
23 internally by a driver in read/write mode. For implications see the
24 section discussing the :c:func:`read()` function.
25
26 To get and set the streaming parameters applications call the
27 :ref:`VIDIOC_G_PARM <VIDIOC_G_PARM>` and
28 :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl, respectively. They take
29 a pointer to a struct :c:type:`v4l2_streamparm`, which
30 contains a union holding separate parameters for input and output
31 devices.
32
33 These ioctls are optional, drivers need not implement them. If so, they
34 return the ``EINVAL`` error code.