162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci.. c:namespace:: V4L
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci.. _VIDIOC_G_FBUF:
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci**********************************
762306a36Sopenharmony_ciioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF
862306a36Sopenharmony_ci**********************************
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciName
1162306a36Sopenharmony_ci====
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciVIDIOC_G_FBUF - VIDIOC_S_FBUF - Get or set frame buffer overlay parameters
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciSynopsis
1662306a36Sopenharmony_ci========
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. c:macro:: VIDIOC_G_FBUF
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci``int ioctl(int fd, VIDIOC_G_FBUF, struct v4l2_framebuffer *argp)``
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci.. c:macro:: VIDIOC_S_FBUF
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci``int ioctl(int fd, VIDIOC_S_FBUF, const struct v4l2_framebuffer *argp)``
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciArguments
2762306a36Sopenharmony_ci=========
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci``fd``
3062306a36Sopenharmony_ci    File descriptor returned by :c:func:`open()`.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci``argp``
3362306a36Sopenharmony_ci    Pointer to struct :c:type:`v4l2_framebuffer`.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciDescription
3662306a36Sopenharmony_ci===========
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciApplications can use the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctl
3962306a36Sopenharmony_cito get and set the framebuffer parameters for a
4062306a36Sopenharmony_ci:ref:`Video Overlay <overlay>` or :ref:`Video Output Overlay <osd>`
4162306a36Sopenharmony_ci(OSD). The type of overlay is implied by the device type (capture or
4262306a36Sopenharmony_cioutput device) and can be determined with the
4362306a36Sopenharmony_ci:ref:`VIDIOC_QUERYCAP` ioctl. One ``/dev/videoN``
4462306a36Sopenharmony_cidevice must not support both kinds of overlay.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciThe V4L2 API distinguishes destructive and non-destructive overlays. A
4762306a36Sopenharmony_cidestructive overlay copies captured video images into the video memory
4862306a36Sopenharmony_ciof a graphics card. A non-destructive overlay blends video images into a
4962306a36Sopenharmony_ciVGA signal or graphics into a video signal. *Video Output Overlays* are
5062306a36Sopenharmony_cialways non-destructive.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciDestructive overlay support has been removed: with modern GPUs and CPUs
5362306a36Sopenharmony_cithis is no longer needed, and it was always a very dangerous feature.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciTo get the current parameters applications call the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>`
5662306a36Sopenharmony_ciioctl with a pointer to a struct :c:type:`v4l2_framebuffer`
5762306a36Sopenharmony_cistructure. The driver fills all fields of the structure or returns an
5862306a36Sopenharmony_ciEINVAL error code when overlays are not supported.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciTo set the parameters for a *Video Output Overlay*, applications must
6162306a36Sopenharmony_ciinitialize the ``flags`` field of a struct
6262306a36Sopenharmony_ci:c:type:`v4l2_framebuffer`. Since the framebuffer is
6362306a36Sopenharmony_ciimplemented on the TV card all other parameters are determined by the
6462306a36Sopenharmony_cidriver. When an application calls :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` with a pointer to
6562306a36Sopenharmony_cithis structure, the driver prepares for the overlay and returns the
6662306a36Sopenharmony_ciframebuffer parameters as :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` does, or it returns an error
6762306a36Sopenharmony_cicode.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciTo set the parameters for a *Video Capture Overlay*
7062306a36Sopenharmony_ciapplications must initialize the ``flags`` field, the ``fmt``
7162306a36Sopenharmony_cisubstructure, and call :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>`. Again the driver prepares for
7262306a36Sopenharmony_cithe overlay and returns the framebuffer parameters as :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>`
7362306a36Sopenharmony_cidoes, or it returns an error code.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{6.6cm}|
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci.. c:type:: v4l2_framebuffer
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci.. cssclass:: longtable
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci.. flat-table:: struct v4l2_framebuffer
8262306a36Sopenharmony_ci    :header-rows:  0
8362306a36Sopenharmony_ci    :stub-columns: 0
8462306a36Sopenharmony_ci    :widths:       1 1 1 2
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci    * - __u32
8762306a36Sopenharmony_ci      - ``capability``
8862306a36Sopenharmony_ci      -
8962306a36Sopenharmony_ci      - Overlay capability flags set by the driver, see
9062306a36Sopenharmony_ci	:ref:`framebuffer-cap`.
9162306a36Sopenharmony_ci    * - __u32
9262306a36Sopenharmony_ci      - ``flags``
9362306a36Sopenharmony_ci      -
9462306a36Sopenharmony_ci      - Overlay control flags set by application and driver, see
9562306a36Sopenharmony_ci	:ref:`framebuffer-flags`
9662306a36Sopenharmony_ci    * - void *
9762306a36Sopenharmony_ci      - ``base``
9862306a36Sopenharmony_ci      -
9962306a36Sopenharmony_ci      - Physical base address of the framebuffer, that is the address of
10062306a36Sopenharmony_ci	the pixel in the top left corner of the framebuffer.
10162306a36Sopenharmony_ci	For :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` this field is no longer supported
10262306a36Sopenharmony_ci	and the kernel will always set this to NULL.
10362306a36Sopenharmony_ci	For *Video Output Overlays*
10462306a36Sopenharmony_ci	the driver will return a valid base address, so applications can
10562306a36Sopenharmony_ci	find the corresponding Linux framebuffer device (see
10662306a36Sopenharmony_ci	:ref:`osd`). For *Video Capture Overlays* this field will always be
10762306a36Sopenharmony_ci	NULL.
10862306a36Sopenharmony_ci    * - struct
10962306a36Sopenharmony_ci      - ``fmt``
11062306a36Sopenharmony_ci      -
11162306a36Sopenharmony_ci      - Layout of the frame buffer.
11262306a36Sopenharmony_ci    * -
11362306a36Sopenharmony_ci      - __u32
11462306a36Sopenharmony_ci      - ``width``
11562306a36Sopenharmony_ci      - Width of the frame buffer in pixels.
11662306a36Sopenharmony_ci    * -
11762306a36Sopenharmony_ci      - __u32
11862306a36Sopenharmony_ci      - ``height``
11962306a36Sopenharmony_ci      - Height of the frame buffer in pixels.
12062306a36Sopenharmony_ci    * -
12162306a36Sopenharmony_ci      - __u32
12262306a36Sopenharmony_ci      - ``pixelformat``
12362306a36Sopenharmony_ci      - The pixel format of the framebuffer.
12462306a36Sopenharmony_ci    * -
12562306a36Sopenharmony_ci      -
12662306a36Sopenharmony_ci      -
12762306a36Sopenharmony_ci      - For *non-destructive Video Overlays* this field only defines a
12862306a36Sopenharmony_ci	format for the struct :c:type:`v4l2_window`
12962306a36Sopenharmony_ci	``chromakey`` field.
13062306a36Sopenharmony_ci    * -
13162306a36Sopenharmony_ci      -
13262306a36Sopenharmony_ci      -
13362306a36Sopenharmony_ci      - For *Video Output Overlays* the driver must return a valid
13462306a36Sopenharmony_ci	format.
13562306a36Sopenharmony_ci    * -
13662306a36Sopenharmony_ci      -
13762306a36Sopenharmony_ci      -
13862306a36Sopenharmony_ci      - Usually this is an RGB format (for example
13962306a36Sopenharmony_ci	:ref:`V4L2_PIX_FMT_RGB565 <V4L2-PIX-FMT-RGB565>`) but YUV
14062306a36Sopenharmony_ci	formats (only packed YUV formats when chroma keying is used, not
14162306a36Sopenharmony_ci	including ``V4L2_PIX_FMT_YUYV`` and ``V4L2_PIX_FMT_UYVY``) and the
14262306a36Sopenharmony_ci	``V4L2_PIX_FMT_PAL8`` format are also permitted. The behavior of
14362306a36Sopenharmony_ci	the driver when an application requests a compressed format is
14462306a36Sopenharmony_ci	undefined. See :ref:`pixfmt` for information on pixel formats.
14562306a36Sopenharmony_ci    * -
14662306a36Sopenharmony_ci      - enum :c:type:`v4l2_field`
14762306a36Sopenharmony_ci      - ``field``
14862306a36Sopenharmony_ci      - Drivers and applications shall ignore this field. If applicable,
14962306a36Sopenharmony_ci	the field order is selected with the
15062306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, using the ``field``
15162306a36Sopenharmony_ci	field of struct :c:type:`v4l2_window`.
15262306a36Sopenharmony_ci    * -
15362306a36Sopenharmony_ci      - __u32
15462306a36Sopenharmony_ci      - ``bytesperline``
15562306a36Sopenharmony_ci      - Distance in bytes between the leftmost pixels in two adjacent
15662306a36Sopenharmony_ci	lines.
15762306a36Sopenharmony_ci    * - :cspan:`3`
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci	This field is irrelevant to *non-destructive Video Overlays*.
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci	For *Video Output Overlays* the driver must return a valid value.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	Video hardware may access padding bytes, therefore they must
16462306a36Sopenharmony_ci	reside in accessible memory. Consider for example the case where
16562306a36Sopenharmony_ci	padding bytes after the last line of an image cross a system page
16662306a36Sopenharmony_ci	boundary. Capture devices may write padding bytes, the value is
16762306a36Sopenharmony_ci	undefined. Output devices ignore the contents of padding bytes.
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci	When the image format is planar the ``bytesperline`` value applies
17062306a36Sopenharmony_ci	to the first plane and is divided by the same factor as the
17162306a36Sopenharmony_ci	``width`` field for the other planes. For example the Cb and Cr
17262306a36Sopenharmony_ci	planes of a YUV 4:2:0 image have half as many padding bytes
17362306a36Sopenharmony_ci	following each line as the Y plane. To avoid ambiguities drivers
17462306a36Sopenharmony_ci	must return a ``bytesperline`` value rounded up to a multiple of
17562306a36Sopenharmony_ci	the scale factor.
17662306a36Sopenharmony_ci    * -
17762306a36Sopenharmony_ci      - __u32
17862306a36Sopenharmony_ci      - ``sizeimage``
17962306a36Sopenharmony_ci      - This field is irrelevant to *non-destructive Video Overlays*.
18062306a36Sopenharmony_ci	For *Video Output Overlays* the driver must return a valid
18162306a36Sopenharmony_ci	format.
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	Together with ``base`` it defines the framebuffer memory
18462306a36Sopenharmony_ci	accessible by the driver.
18562306a36Sopenharmony_ci    * -
18662306a36Sopenharmony_ci      - enum :c:type:`v4l2_colorspace`
18762306a36Sopenharmony_ci      - ``colorspace``
18862306a36Sopenharmony_ci      - This information supplements the ``pixelformat`` and must be set
18962306a36Sopenharmony_ci	by the driver, see :ref:`colorspaces`.
19062306a36Sopenharmony_ci    * -
19162306a36Sopenharmony_ci      - __u32
19262306a36Sopenharmony_ci      - ``priv``
19362306a36Sopenharmony_ci      - Reserved. Drivers and applications must set this field to zero.
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{1.6cm}|p{8.3cm}|
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci.. _framebuffer-cap:
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci.. flat-table:: Frame Buffer Capability Flags
20062306a36Sopenharmony_ci    :header-rows:  0
20162306a36Sopenharmony_ci    :stub-columns: 0
20262306a36Sopenharmony_ci    :widths:       3 1 4
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_EXTERNOVERLAY``
20562306a36Sopenharmony_ci      - 0x0001
20662306a36Sopenharmony_ci      - The device is capable of non-destructive overlays. When the driver
20762306a36Sopenharmony_ci	clears this flag, only destructive overlays are supported. There
20862306a36Sopenharmony_ci	are no drivers yet which support both destructive and
20962306a36Sopenharmony_ci	non-destructive overlays. Video Output Overlays are in practice
21062306a36Sopenharmony_ci	always non-destructive.
21162306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_CHROMAKEY``
21262306a36Sopenharmony_ci      - 0x0002
21362306a36Sopenharmony_ci      - The device supports clipping by chroma-keying the images. That is,
21462306a36Sopenharmony_ci	image pixels replace pixels in the VGA or video signal only where
21562306a36Sopenharmony_ci	the latter assume a certain color. Chroma-keying makes no sense
21662306a36Sopenharmony_ci	for destructive overlays.
21762306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_LIST_CLIPPING``
21862306a36Sopenharmony_ci      - 0x0004
21962306a36Sopenharmony_ci      - The device supports clipping using a list of clip rectangles.
22062306a36Sopenharmony_ci        Note that this is no longer supported.
22162306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_BITMAP_CLIPPING``
22262306a36Sopenharmony_ci      - 0x0008
22362306a36Sopenharmony_ci      - The device supports clipping using a bit mask.
22462306a36Sopenharmony_ci        Note that this is no longer supported.
22562306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_LOCAL_ALPHA``
22662306a36Sopenharmony_ci      - 0x0010
22762306a36Sopenharmony_ci      - The device supports clipping/blending using the alpha channel of
22862306a36Sopenharmony_ci	the framebuffer or VGA signal. Alpha blending makes no sense for
22962306a36Sopenharmony_ci	destructive overlays.
23062306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_GLOBAL_ALPHA``
23162306a36Sopenharmony_ci      - 0x0020
23262306a36Sopenharmony_ci      - The device supports alpha blending using a global alpha value.
23362306a36Sopenharmony_ci	Alpha blending makes no sense for destructive overlays.
23462306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_LOCAL_INV_ALPHA``
23562306a36Sopenharmony_ci      - 0x0040
23662306a36Sopenharmony_ci      - The device supports clipping/blending using the inverted alpha
23762306a36Sopenharmony_ci	channel of the framebuffer or VGA signal. Alpha blending makes no
23862306a36Sopenharmony_ci	sense for destructive overlays.
23962306a36Sopenharmony_ci    * - ``V4L2_FBUF_CAP_SRC_CHROMAKEY``
24062306a36Sopenharmony_ci      - 0x0080
24162306a36Sopenharmony_ci      - The device supports Source Chroma-keying. Video pixels with the
24262306a36Sopenharmony_ci	chroma-key colors are replaced by framebuffer pixels, which is
24362306a36Sopenharmony_ci	exactly opposite of ``V4L2_FBUF_CAP_CHROMAKEY``
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{1.6cm}|p{8.3cm}|
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci.. _framebuffer-flags:
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci.. cssclass:: longtable
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci.. flat-table:: Frame Buffer Flags
25262306a36Sopenharmony_ci    :header-rows:  0
25362306a36Sopenharmony_ci    :stub-columns: 0
25462306a36Sopenharmony_ci    :widths:       3 1 4
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_PRIMARY``
25762306a36Sopenharmony_ci      - 0x0001
25862306a36Sopenharmony_ci      - The framebuffer is the primary graphics surface. In other words,
25962306a36Sopenharmony_ci	the overlay is destructive. This flag is typically set by any
26062306a36Sopenharmony_ci	driver that doesn't have the ``V4L2_FBUF_CAP_EXTERNOVERLAY``
26162306a36Sopenharmony_ci	capability and it is cleared otherwise.
26262306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_OVERLAY``
26362306a36Sopenharmony_ci      - 0x0002
26462306a36Sopenharmony_ci      - If this flag is set for a video capture device, then the driver
26562306a36Sopenharmony_ci	will set the initial overlay size to cover the full framebuffer
26662306a36Sopenharmony_ci	size, otherwise the existing overlay size (as set by
26762306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`) will be used. Only one
26862306a36Sopenharmony_ci	video capture driver (bttv) supports this flag. The use of this
26962306a36Sopenharmony_ci	flag for capture devices is deprecated. There is no way to detect
27062306a36Sopenharmony_ci	which drivers support this flag, so the only reliable method of
27162306a36Sopenharmony_ci	setting the overlay size is through
27262306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. If this flag is set for a
27362306a36Sopenharmony_ci	video output device, then the video output overlay window is
27462306a36Sopenharmony_ci	relative to the top-left corner of the framebuffer and restricted
27562306a36Sopenharmony_ci	to the size of the framebuffer. If it is cleared, then the video
27662306a36Sopenharmony_ci	output overlay window is relative to the video output display.
27762306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_CHROMAKEY``
27862306a36Sopenharmony_ci      - 0x0004
27962306a36Sopenharmony_ci      - Use chroma-keying. The chroma-key color is determined by the
28062306a36Sopenharmony_ci	``chromakey`` field of struct :c:type:`v4l2_window`
28162306a36Sopenharmony_ci	and negotiated with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
28262306a36Sopenharmony_ci	ioctl, see :ref:`overlay` and :ref:`osd`.
28362306a36Sopenharmony_ci    * - :cspan:`2` There are no flags to enable clipping using a list of
28462306a36Sopenharmony_ci	clip rectangles or a bitmap. These methods are negotiated with the
28562306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay`
28662306a36Sopenharmony_ci	and :ref:`osd`.
28762306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_LOCAL_ALPHA``
28862306a36Sopenharmony_ci      - 0x0008
28962306a36Sopenharmony_ci      - Use the alpha channel of the framebuffer to clip or blend
29062306a36Sopenharmony_ci	framebuffer pixels with video images. The blend function is:
29162306a36Sopenharmony_ci	output = framebuffer pixel * alpha + video pixel * (1 - alpha).
29262306a36Sopenharmony_ci	The actual alpha depth depends on the framebuffer pixel format.
29362306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_GLOBAL_ALPHA``
29462306a36Sopenharmony_ci      - 0x0010
29562306a36Sopenharmony_ci      - Use a global alpha value to blend the framebuffer with video
29662306a36Sopenharmony_ci	images. The blend function is: output = (framebuffer pixel * alpha
29762306a36Sopenharmony_ci	+ video pixel * (255 - alpha)) / 255. The alpha value is
29862306a36Sopenharmony_ci	determined by the ``global_alpha`` field of struct
29962306a36Sopenharmony_ci	:c:type:`v4l2_window` and negotiated with the
30062306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay`
30162306a36Sopenharmony_ci	and :ref:`osd`.
30262306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_LOCAL_INV_ALPHA``
30362306a36Sopenharmony_ci      - 0x0020
30462306a36Sopenharmony_ci      - Like ``V4L2_FBUF_FLAG_LOCAL_ALPHA``, use the alpha channel of the
30562306a36Sopenharmony_ci	framebuffer to clip or blend framebuffer pixels with video images,
30662306a36Sopenharmony_ci	but with an inverted alpha value. The blend function is: output =
30762306a36Sopenharmony_ci	framebuffer pixel * (1 - alpha) + video pixel * alpha. The actual
30862306a36Sopenharmony_ci	alpha depth depends on the framebuffer pixel format.
30962306a36Sopenharmony_ci    * - ``V4L2_FBUF_FLAG_SRC_CHROMAKEY``
31062306a36Sopenharmony_ci      - 0x0040
31162306a36Sopenharmony_ci      - Use source chroma-keying. The source chroma-key color is
31262306a36Sopenharmony_ci	determined by the ``chromakey`` field of struct
31362306a36Sopenharmony_ci	:c:type:`v4l2_window` and negotiated with the
31462306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay`
31562306a36Sopenharmony_ci	and :ref:`osd`. Both chroma-keying are mutual exclusive to each
31662306a36Sopenharmony_ci	other, so same ``chromakey`` field of struct
31762306a36Sopenharmony_ci	:c:type:`v4l2_window` is being used.
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ciReturn Value
32062306a36Sopenharmony_ci============
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ciOn success 0 is returned, on error -1 and the ``errno`` variable is set
32362306a36Sopenharmony_ciappropriately. The generic error codes are described at the
32462306a36Sopenharmony_ci:ref:`Generic Error Codes <gen-errors>` chapter.
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ciEPERM
32762306a36Sopenharmony_ci    :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` can only be called by a privileged user to
32862306a36Sopenharmony_ci    negotiate the parameters for a destructive overlay.
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ciEINVAL
33162306a36Sopenharmony_ci    The :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` parameters are unsuitable.
332