^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.