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