Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) .. c:namespace:: V4L
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) .. _VIDIOC_G_PARM:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) **********************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) ioctl VIDIOC_G_PARM, VIDIOC_S_PARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) **********************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) Name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) ====
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) VIDIOC_G_PARM - VIDIOC_S_PARM - Get or set streaming parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) Synopsis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) ========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) .. c:macro:: VIDIOC_G_PARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) ``int ioctl(int fd, VIDIOC_G_PARM, v4l2_streamparm *argp)``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) .. c:macro:: VIDIOC_S_PARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) ``int ioctl(int fd, VIDIOC_S_PARM, v4l2_streamparm *argp)``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) Arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) ``fd``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)     File descriptor returned by :c:func:`open()`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) ``argp``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)     Pointer to struct :c:type:`v4l2_streamparm`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) Applications can request a different frame interval. The capture or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) output device will be reconfigured to support the requested frame
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) interval if possible. Optionally drivers may choose to skip or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) repeat frames to achieve the requested frame interval.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) For stateful encoders (see :ref:`encoder`) this represents the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) frame interval that is typically embedded in the encoded video stream.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) Changing the frame interval shall never change the format. Changing the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) format, on the other hand, may change the frame interval.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) Further these ioctls can be used to determine the number of buffers used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) internally by a driver in read/write mode. For implications see the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) section discussing the :c:func:`read()` function.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) To get and set the streaming parameters applications call the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) :ref:`VIDIOC_G_PARM <VIDIOC_G_PARM>` and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl, respectively. They take a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) pointer to a struct :c:type:`v4l2_streamparm` which contains a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) union holding separate parameters for input and output devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) .. c:type:: v4l2_streamparm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) .. flat-table:: struct v4l2_streamparm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66)     :widths:       1 1 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)       - ``type``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70)       - The buffer (stream) type, same as struct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	:c:type:`v4l2_format` ``type``, set by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	application. See :c:type:`v4l2_buf_type`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73)     * - union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74)       - ``parm``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)     * - struct :c:type:`v4l2_captureparm`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)       - ``capture``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)       - Parameters for capture devices, used when ``type`` is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)     * - struct :c:type:`v4l2_outputparm`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)       - ``output``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)       - Parameters for output devices, used when ``type`` is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	``V4L2_BUF_TYPE_VIDEO_OUTPUT`` or ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84)     * - __u8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85)       - ``raw_data``\ [200]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86)       - A place holder for future extensions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87)     * - }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88)       -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) .. c:type:: v4l2_captureparm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) .. flat-table:: struct v4l2_captureparm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98)     :widths:       1 1 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)       - ``capability``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)       - See :ref:`parm-caps`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)       - ``capturemode``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)       - Set by drivers and applications, see :ref:`parm-flags`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)     * - struct :c:type:`v4l2_fract`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)       - ``timeperframe``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)       - This is the desired period between successive frames captured by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	the driver, in seconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)     * - :cspan:`2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	This will configure the speed at which the video source (e.g. a sensor)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	generates video frames. If the speed is fixed, then the driver may
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	choose to skip or repeat frames in order to achieve the requested
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	frame rate.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	For stateful encoders (see :ref:`encoder`) this represents the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	frame interval that is typically embedded in the encoded video stream.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	Applications store here the desired frame period, drivers return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	the actual frame period.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	Changing the video standard (also implicitly by switching
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	the video input) may reset this parameter to the nominal frame
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	period. To reset manually applications can just set this field to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	Drivers support this function only when they set the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	``V4L2_CAP_TIMEPERFRAME`` flag in the ``capability`` field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)       - ``extendedmode``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)       - Custom (driver specific) streaming parameters. When unused,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	applications and drivers must set this field to zero. Applications
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	using this field should check the driver name and version, see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	:ref:`querycap`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)       - ``readbuffers``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)       - Applications set this field to the desired number of buffers used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	internally by the driver in :c:func:`read()` mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	Drivers return the actual number of buffers. When an application
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	requests zero buffers, drivers should just return the current
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	setting rather than the minimum or an error code. For details see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	:ref:`rw`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)       - ``reserved``\ [4]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)       - Reserved for future extensions. Drivers and applications must set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	the array to zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) .. c:type:: v4l2_outputparm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) .. flat-table:: struct v4l2_outputparm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)     :widths:       1 1 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)       - ``capability``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)       - See :ref:`parm-caps`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)       - ``outputmode``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)       - Set by drivers and applications, see :ref:`parm-flags`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)     * - struct :c:type:`v4l2_fract`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)       - ``timeperframe``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)       - This is the desired period between successive frames output by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	driver, in seconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)     * - :cspan:`2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	The field is intended to repeat frames on the driver side in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	:c:func:`write()` mode (in streaming mode timestamps
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	can be used to throttle the output), saving I/O bandwidth.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	For stateful encoders (see :ref:`encoder`) this represents the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	frame interval that is typically embedded in the encoded video stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	and it provides a hint to the encoder of the speed at which raw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	frames are queued up to the encoder.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	Applications store here the desired frame period, drivers return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	the actual frame period.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	Changing the video standard (also implicitly by switching
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	the video output) may reset this parameter to the nominal frame
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	period. To reset manually applications can just set this field to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	Drivers support this function only when they set the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 	``V4L2_CAP_TIMEPERFRAME`` flag in the ``capability`` field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)       - ``extendedmode``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)       - Custom (driver specific) streaming parameters. When unused,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	applications and drivers must set this field to zero. Applications
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	using this field should check the driver name and version, see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	:ref:`querycap`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)       - ``writebuffers``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)       - Applications set this field to the desired number of buffers used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	internally by the driver in :c:func:`write()` mode. Drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 	return the actual number of buffers. When an application requests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 	zero buffers, drivers should just return the current setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	rather than the minimum or an error code. For details see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	:ref:`rw`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)     * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)       - ``reserved``\ [4]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)       - Reserved for future extensions. Drivers and applications must set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	the array to zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) .. _parm-caps:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) .. flat-table:: Streaming Parameters Capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)     :widths:       3 1 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)     * - ``V4L2_CAP_TIMEPERFRAME``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)       - 0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)       - The frame period can be modified by setting the ``timeperframe``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) .. _parm-flags:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) .. flat-table:: Capture Parameters Flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)     :header-rows:  0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)     :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)     :widths:       3 1 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)     * - ``V4L2_MODE_HIGHQUALITY``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)       - 0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)       - High quality imaging mode. High quality mode is intended for still
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 	imaging applications. The idea is to get the best possible image
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 	quality that the hardware can deliver. It is not defined how the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 	driver writer may achieve that; it will depend on the hardware and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 	the ingenuity of the driver writer. High quality mode is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 	different mode from the regular motion video capture modes. In
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 	high quality mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 	-  The driver may be able to capture higher resolutions than for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	   motion capture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	-  The driver may support fewer pixel formats than motion capture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 	   (eg; true color).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 	-  The driver may capture and arithmetically combine multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 	   successive fields or frames to remove color edge artifacts and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 	   reduce the noise in the video data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	-  The driver may capture images in slices like a scanner in order
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 	   to handle larger format images than would otherwise be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 	   possible.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 	-  An image capture operation may be significantly slower than
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 	   motion capture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 	-  Moving objects in the image might have excessive motion blur.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 	-  Capture might only work through the :c:func:`read()` call.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) Return Value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) On success 0 is returned, on error -1 and the ``errno`` variable is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) appropriately. The generic error codes are described at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) :ref:`Generic Error Codes <gen-errors>` chapter.