Ysphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget9/translations/zh_CN/userspace-api/media/v4l/vidioc-g-fbufmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget9/translations/zh_TW/userspace-api/media/v4l/vidioc-g-fbufmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget9/translations/it_IT/userspace-api/media/v4l/vidioc-g-fbufmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget9/translations/ja_JP/userspace-api/media/v4l/vidioc-g-fbufmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget9/translations/ko_KR/userspace-api/media/v4l/vidioc-g-fbufmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget9/translations/sp_SP/userspace-api/media/v4l/vidioc-g-fbufmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-laterh]h8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhS/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/vidioc-g-fbuf.rsthKubhtarget)}(h.. _VIDIOC_G_FBUF:h]h}(h]h ]h"]h$]h&]refid vidioc-g-fbufuh1hhKhhhhhhubhsection)}(hhh](htitle)}(h"ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUFh]h"ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hNameh]hName}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh paragraph)}(hJVIDIOC_G_FBUF - VIDIOC_S_FBUF - Get or set frame buffer overlay parametersh]hJVIDIOC_G_FBUF - VIDIOC_S_FBUF - Get or set frame buffer overlay parameters}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h]nameah ]h"]nameah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSynopsish]hSynopsis}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleV4L.VIDIOC_G_FBUF (C macro)c.V4L.VIDIOC_G_FBUFhNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h VIDIOC_G_FBUFh]hdesc_signature_line)}(h VIDIOC_G_FBUFh]h desc_name)}(h VIDIOC_G_FBUFh]h desc_sig_name)}(hj+h]h VIDIOC_G_FBUF}(hj;hhhNhNubah}(h]h ]nah"]h$]h&]uh1j9hj5ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j3hj/hhhhhKubah}(h]h ]h"]h$]h&]hh add_permalinkuh1j-sphinx_line_type declaratorhj)hhhhhKubah}(h]j ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j'hhhKhj$hhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jehj$hhhhhKubeh}(h]h ](cmacroeh"]h$]h&]domainjsobjtypejtdesctypejtnoindex noindexentrynocontentsentryuh1j"hhhjhNhNubh)}(hC``int ioctl(int fd, VIDIOC_G_FBUF, struct v4l2_framebuffer *argp)``h]hliteral)}(hjh]h?int ioctl(int fd, VIDIOC_G_FBUF, struct v4l2_framebuffer *argp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jV4L.VIDIOC_S_FBUF (C macro)c.V4L.VIDIOC_S_FBUFhNtauh1jhjhhhNhNubj#)}(hhh](j()}(h VIDIOC_S_FBUFh]j.)}(h VIDIOC_S_FBUFh]j4)}(h VIDIOC_S_FBUFh]j:)}(hjh]h VIDIOC_S_FBUF}(hjhhhNhNubah}(h]h ]jEah"]h$]h&]uh1j9hjubah}(h]h ](jLjMeh"]h$]h&]hhuh1j3hjhhhhhKubah}(h]h ]h"]h$]h&]hhjWuh1j-jXjYhjhhhhhKubah}(h]jah ](j]j^eh"]h$]h&]jbjc)jdhuh1j'hhhKhjhhubjf)}(hhh]h}(h]h ]h"]h$]h&]uh1jehjhhhhhKubeh}(h]h ](jsmacroeh"]h$]h&]jxjsjyjjzjj{j|j}uh1j"hhhjhNhNubh)}(hI``int ioctl(int fd, VIDIOC_S_FBUF, const struct v4l2_framebuffer *argp)``h]j)}(hjh]hEint ioctl(int fd, VIDIOC_S_FBUF, const struct v4l2_framebuffer *argp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Argumentsh]h Arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhdefinition_list)}(hhh](hdefinition_list_item)}(h5``fd`` File descriptor returned by :c:func:`open()`. h](hterm)}(h``fd``h]j)}(hj"h]hfd}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhjubh definition)}(hhh]h)}(h-File descriptor returned by :c:func:`open()`.h](hFile descriptor returned by }(hj<hhhNhNubh)}(h:c:func:`open()`h]j)}(hjFh]hopen()}(hjHhhhNhNubah}(h]h ](xrefjsc-funceh"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]refdoc%userspace-api/media/v4l/vidioc-g-fbuf refdomainjsreftypefunc refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]je ASTIdentifier)} identifierV4LsbNasb reftargetopenuh1hhhhKhj<ubh.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj9ubah}(h]h ]h"]h$]h&]uh1j7hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(h7``argp`` Pointer to struct :c:type:`v4l2_framebuffer`. h](j)}(h``argp``h]j)}(hjh]hargp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhK!hjubj8)}(hhh]h)}(h-Pointer to struct :c:type:`v4l2_framebuffer`.h](hPointer to struct }(hjhhhNhNubh)}(h:c:type:`v4l2_framebuffer`h]j)}(hjh]hv4l2_framebuffer}(hjhhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjsv4l2_framebufferuh1hhhhK!hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1j7hjubeh}(h]h ]h"]h$]h&]uh1jhhhK!hjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h] argumentsah ]h"] argumentsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK$ubh)}(hXApplications can use the :ref:`VIDIOC_G_FBUF ` and :ref:`VIDIOC_S_FBUF ` ioctl to get and set the framebuffer parameters for a :ref:`Video Overlay ` or :ref:`Video Output Overlay ` (OSD). The type of overlay is implied by the device type (capture or output device) and can be determined with the :ref:`VIDIOC_QUERYCAP` ioctl. One ``/dev/videoN`` device must not support both kinds of overlay.h](hApplications can use the }(hjhhhNhNubh)}(h$:ref:`VIDIOC_G_FBUF `h]hinline)}(hjh]h VIDIOC_G_FBUF}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhK&hjubh and }(hjhhhNhNubh)}(h$:ref:`VIDIOC_S_FBUF `h]j)}(hj5h]h VIDIOC_S_FBUF}(hj7hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjAreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhK&hjubh7 ioctl to get and set the framebuffer parameters for a }(hjhhhNhNubh)}(h:ref:`Video Overlay `h]j)}(hjYh]h Video Overlay}(hj[hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]refdocj^ refdomainjereftyperef refexplicitrefwarnjsoverlayuh1hhhhK&hjubh or }(hjhhhNhNubh)}(h!:ref:`Video Output Overlay `h]j)}(hj}h]hVideo Output Overlay}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsosduh1hhhhK&hjubht (OSD). The type of overlay is implied by the device type (capture or output device) and can be determined with the }(hjhhhNhNubh)}(h:ref:`VIDIOC_QUERYCAP`h]j)}(hjh]hVIDIOC_QUERYCAP}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsvidioc_querycapuh1hhhhK&hjubh ioctl. One }(hjhhhNhNubj)}(h``/dev/videoN``h]h /dev/videoN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh/ device must not support both kinds of overlay.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(hX6The V4L2 API distinguishes destructive and non-destructive overlays. A destructive overlay copies captured video images into the video memory of a graphics card. A non-destructive overlay blends video images into a VGA signal or graphics into a video signal. *Video Output Overlays* are always non-destructive.h](hXThe V4L2 API distinguishes destructive and non-destructive overlays. A destructive overlay copies captured video images into the video memory of a graphics card. A non-destructive overlay blends video images into a VGA signal or graphics into a video signal. }(hjhhhNhNubhemphasis)}(h*Video Output Overlays*h]hVideo Output Overlays}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh are always non-destructive.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK.hjhhubh)}(hDestructive overlay support has been removed: with modern GPUs and CPUs this is no longer needed, and it was always a very dangerous feature.h]hDestructive overlay support has been removed: with modern GPUs and CPUs this is no longer needed, and it was always a very dangerous feature.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubh)}(hX To get the current parameters applications call the :ref:`VIDIOC_G_FBUF ` ioctl with a pointer to a struct :c:type:`v4l2_framebuffer` structure. The driver fills all fields of the structure or returns an EINVAL error code when overlays are not supported.h](h4To get the current parameters applications call the }(hj hhhNhNubh)}(h$:ref:`VIDIOC_G_FBUF `h]j)}(hjh]h VIDIOC_G_FBUF}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainj!reftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhK7hj ubh" ioctl with a pointer to a struct }(hj hhhNhNubh)}(h:c:type:`v4l2_framebuffer`h]j)}(hj9h]hv4l2_framebuffer}(hj;hhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjsv4l2_framebufferuh1hhhhK7hj ubhy structure. The driver fills all fields of the structure or returns an EINVAL error code when overlays are not supported.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubh)}(hXTo set the parameters for a *Video Output Overlay*, applications must initialize the ``flags`` field of a struct :c:type:`v4l2_framebuffer`. Since the framebuffer is implemented on the TV card all other parameters are determined by the driver. When an application calls :ref:`VIDIOC_S_FBUF ` with a pointer to this structure, the driver prepares for the overlay and returns the framebuffer parameters as :ref:`VIDIOC_G_FBUF ` does, or it returns an error code.h](hTo set the parameters for a }(hj`hhhNhNubj)}(h*Video Output Overlay*h]hVideo Output Overlay}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh#, applications must initialize the }(hj`hhhNhNubj)}(h ``flags``h]hflags}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh field of a struct }(hj`hhhNhNubh)}(h:c:type:`v4l2_framebuffer`h]j)}(hjh]hv4l2_framebuffer}(hjhhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjsv4l2_framebufferuh1hhhhK`h]j)}(hjh]h VIDIOC_S_FBUF}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhK`h]j)}(hjh]h VIDIOC_G_FBUF}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhK`. Again the driver prepares for the overlay and returns the framebuffer parameters as :ref:`VIDIOC_G_FBUF ` does, or it returns an error code.h](hTo set the parameters for a }(hjhhhNhNubj)}(h*Video Capture Overlay*h]hVideo Capture Overlay}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh" applications must initialize the }(hjhhhNhNubj)}(h ``flags``h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field, the }(hjhhhNhNubj)}(h``fmt``h]hfmt}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh substructure, and call }(hjhhhNhNubh)}(h$:ref:`VIDIOC_S_FBUF `h]j)}(hj=h]h VIDIOC_S_FBUF}(hj?hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjIreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhKEhjubhV. Again the driver prepares for the overlay and returns the framebuffer parameters as }(hjhhhNhNubh)}(h$:ref:`VIDIOC_G_FBUF `h]j)}(hjah]h VIDIOC_G_FBUF}(hjchhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjmreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhKEhjubh# does, or it returns an error code.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKEhjhhubhtabular_col_spec)}(hhh]h}(h]h ]h"]h$]h&]spec%|p{3.5cm}|p{3.5cm}|p{3.5cm}|p{6.6cm}|uh1jhhhKKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jV4L.v4l2_framebuffer (C type)c.V4L.v4l2_framebufferhNtauh1jhjhhhNhNubj#)}(hhh](j()}(hv4l2_framebufferh]j.)}(htype v4l2_framebufferh](hdesc_sig_keyword)}(htypeh]htype}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhhhKMubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhhhKMubj4)}(hv4l2_framebufferh]j:)}(hjh]hv4l2_framebuffer}(hjhhhNhNubah}(h]h ]jEah"]h$]h&]uh1j9hjubah}(h]h ](jLjMeh"]h$]h&]hhuh1j3hjhhhhhKMubeh}(h]h ]h"]h$]h&]hhjWuh1j-jXjYhjhhhhhKMubah}(h]jah ](j]j^eh"]h$]h&]jbjc)jdhuh1j'hhhKMhjhhubjf)}(hhh]h}(h]h ]h"]h$]h&]uh1jehjhhhhhKMubeh}(h]h ](jstypeeh"]h$]h&]jxjsjyjjzjj{j|j}uh1j"hhhjhNhNubhtable)}(hhh](h)}(hstruct v4l2_framebufferh]hstruct v4l2_framebuffer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h__u32h]h__u32}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjRubah}(h]h ]h"]h$]h&]uh1jPhjMubjQ)}(hhh]h)}(h``capability``h]j)}(hjnh]h capability}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhhhKWhjiubah}(h]h ]h"]h$]h&]uh1jPhjMubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjMubjQ)}(hhh]h)}(hGOverlay capability flags set by the driver, see :ref:`framebuffer-cap`.h](h0Overlay capability flags set by the driver, see }(hjhhhNhNubh)}(h:ref:`framebuffer-cap`h]j)}(hjh]hframebuffer-cap}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsframebuffer-capuh1hhhhKYhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jPhjMubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h)}(h__u32h]h__u32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h ``flags``h]j)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhK\hjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hQOverlay control flags set by application and driver, see :ref:`framebuffer-flags`h](h9Overlay control flags set by application and driver, see }(hjhhhNhNubh)}(h:ref:`framebuffer-flags`h]j)}(hj#h]hframebuffer-flags}(hj%hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj/reftyperef refexplicitrefwarnjsframebuffer-flagsuh1hhhhK^hjubeh}(h]h ]h"]h$]h&]uh1hhhhK^hjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h)}(hvoid *h]hvoid *}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK`hjVubah}(h]h ]h"]h$]h&]uh1jPhjSubjQ)}(hhh]h)}(h``base``h]j)}(hjrh]hbase}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhhhKahjmubah}(h]h ]h"]h$]h&]uh1jPhjSubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjSubjQ)}(hhh]h)}(hXPhysical base address of the framebuffer, that is the address of the pixel in the top left corner of the framebuffer. For :ref:`VIDIOC_S_FBUF ` this field is no longer supported and the kernel will always set this to NULL. For *Video Output Overlays* the driver will return a valid base address, so applications can find the corresponding Linux framebuffer device (see :ref:`osd`). For *Video Capture Overlays* this field will always be NULL.h](hzPhysical base address of the framebuffer, that is the address of the pixel in the top left corner of the framebuffer. For }(hjhhhNhNubh)}(h$:ref:`VIDIOC_S_FBUF `h]j)}(hjh]h VIDIOC_S_FBUF}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhKchjubhT this field is no longer supported and the kernel will always set this to NULL. For }(hjhhhNhNubj)}(h*Video Output Overlays*h]hVideo Output Overlays}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhw the driver will return a valid base address, so applications can find the corresponding Linux framebuffer device (see }(hjhhhNhNubh)}(h :ref:`osd`h]j)}(hjh]hosd}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsosduh1hhhhKchjubh). For }(hjhhhNhNubj)}(h*Video Capture Overlays*h]hVideo Capture Overlays}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh this field will always be NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKchjubah}(h]h ]h"]h$]h&]uh1jPhjSubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h)}(hstructh]hstruct}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhj"ubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h``fmt``h]j)}(hj>h]hfmt}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhhhKmhj9ubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hLayout of the frame buffer.h]hLayout of the frame buffer.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjbubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h__u32h]h__u32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h ``width``h]j)}(hjh]hwidth}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKrhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h$Width of the frame buffer in pixels.h]h$Width of the frame buffer in pixels.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h__u32h]h__u32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h ``height``h]j)}(hj h]hheight}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhKvhj ubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h%Height of the frame buffer in pixels.h]h%Height of the frame buffer in pixels.}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhj" ubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj? ubjQ)}(hhh]h)}(h__u32h]h__u32}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjK ubah}(h]h ]h"]h$]h&]uh1jPhj? ubjQ)}(hhh]h)}(h``pixelformat``h]j)}(hjg h]h pixelformat}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje ubah}(h]h ]h"]h$]h&]uh1hhhhKzhjb ubah}(h]h ]h"]h$]h&]uh1jPhj? ubjQ)}(hhh]h)}(h$The pixel format of the framebuffer.h]h$The pixel format of the framebuffer.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hj ubah}(h]h ]h"]h$]h&]uh1jPhj? ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(hFor *non-destructive Video Overlays* this field only defines a format for the struct :c:type:`v4l2_window` ``chromakey`` field.h](hFor }(hj hhhNhNubj)}(h *non-destructive Video Overlays*h]hnon-destructive Video Overlays}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh1 this field only defines a format for the struct }(hj hhhNhNubh)}(h:c:type:`v4l2_window`h]j)}(hj h]h v4l2_window}(hj hhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_windowuh1hhhhKhj ubh }(hj hhhNhNubj)}(h ``chromakey``h]h chromakey}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh field.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhj ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj! ubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj! ubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj! ubjQ)}(hhh]h)}(hBFor *Video Output Overlays* the driver must return a valid format.h](hFor }(hjB hhhNhNubj)}(h*Video Output Overlays*h]hVideo Output Overlays}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB ubh' the driver must return a valid format.}(hjB hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj? ubah}(h]h ]h"]h$]h&]uh1jPhj! ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjn ubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjn ubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjn ubjQ)}(hhh]h)}(hXUsually this is an RGB format (for example :ref:`V4L2_PIX_FMT_RGB565 `) but YUV formats (only packed YUV formats when chroma keying is used, not including ``V4L2_PIX_FMT_YUYV`` and ``V4L2_PIX_FMT_UYVY``) and the ``V4L2_PIX_FMT_PAL8`` format are also permitted. The behavior of the driver when an application requests a compressed format is undefined. See :ref:`pixfmt` for information on pixel formats.h](h+Usually this is an RGB format (for example }(hj hhhNhNubh)}(h0:ref:`V4L2_PIX_FMT_RGB565 `h]j)}(hj h]hV4L2_PIX_FMT_RGB565}(hj hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj reftyperef refexplicitrefwarnjsv4l2-pix-fmt-rgb565uh1hhhhKhj ubhU) but YUV formats (only packed YUV formats when chroma keying is used, not including }(hj hhhNhNubj)}(h``V4L2_PIX_FMT_YUYV``h]hV4L2_PIX_FMT_YUYV}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh and }(hj hhhNhNubj)}(h``V4L2_PIX_FMT_UYVY``h]hV4L2_PIX_FMT_UYVY}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh ) and the }(hj hhhNhNubj)}(h``V4L2_PIX_FMT_PAL8``h]hV4L2_PIX_FMT_PAL8}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhz format are also permitted. The behavior of the driver when an application requests a compressed format is undefined. See }(hj hhhNhNubh)}(h :ref:`pixfmt`h]j)}(hj h]hpixfmt}(hj hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj reftyperef refexplicitrefwarnjspixfmtuh1hhhhKhj ubh" for information on pixel formats.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhjn ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj' ubjQ)}(hhh]h)}(henum :c:type:`v4l2_field`h](henum }(hj6 hhhNhNubh)}(h:c:type:`v4l2_field`h]j)}(hj@ h]h v4l2_field}(hjB hhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhj> ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_fielduh1hhhhKhj6 ubeh}(h]h ]h"]h$]h&]uh1hhhhKhj3 ubah}(h]h ]h"]h$]h&]uh1jPhj' ubjQ)}(hhh]h)}(h ``field``h]j)}(hjn h]hfield}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl ubah}(h]h ]h"]h$]h&]uh1hhhhKhji ubah}(h]h ]h"]h$]h&]uh1jPhj' ubjQ)}(hhh]h)}(hDrivers and applications shall ignore this field. If applicable, the field order is selected with the :ref:`VIDIOC_S_FMT ` ioctl, using the ``field`` field of struct :c:type:`v4l2_window`.h](hfDrivers and applications shall ignore this field. If applicable, the field order is selected with the }(hj hhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hj h]h VIDIOC_S_FMT}(hj hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj reftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhKhj ubh ioctl, using the }(hj hhhNhNubj)}(h ``field``h]hfield}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh field of struct }(hj hhhNhNubh)}(h:c:type:`v4l2_window`h]j)}(hj h]h v4l2_window}(hj hhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_windowuh1hhhhKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhj' ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(h__u32h]h__u32}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(h``bytesperline``h]j)}(hj' h]h bytesperline}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubah}(h]h ]h"]h$]h&]uh1hhhhKhj" ubah}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(hDDistance in bytes between the leftmost pixels in two adjacent lines.h]hDDistance in bytes between the leftmost pixels in two adjacent lines.}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjB ubah}(h]h ]h"]h$]h&]uh1jPhj ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh]jQ)}(hhh](h)}(h :cspan:`3`h]h}(h]h ]h"]h$]h&]uh1hhhhKhjb ubh)}(h=This field is irrelevant to *non-destructive Video Overlays*.h](hThis field is irrelevant to }(hjo hhhNhNubj)}(h *non-destructive Video Overlays*h]hnon-destructive Video Overlays}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjo ubh.}(hjo hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjb ubh)}(hAFor *Video Output Overlays* the driver must return a valid value.h](hFor }(hj hhhNhNubj)}(h*Video Output Overlays*h]hVideo Output Overlays}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh& the driver must return a valid value.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjb ubh)}(hX?Video hardware may access padding bytes, therefore they must reside in accessible memory. Consider for example the case where padding bytes after the last line of an image cross a system page boundary. Capture devices may write padding bytes, the value is undefined. Output devices ignore the contents of padding bytes.h]hX?Video hardware may access padding bytes, therefore they must reside in accessible memory. Consider for example the case where padding bytes after the last line of an image cross a system page boundary. Capture devices may write padding bytes, the value is undefined. Output devices ignore the contents of padding bytes.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjb ubh)}(hXWhen the image format is planar the ``bytesperline`` value applies to the first plane and is divided by the same factor as the ``width`` field for the other planes. For example the Cb and Cr planes of a YUV 4:2:0 image have half as many padding bytes following each line as the Y plane. To avoid ambiguities drivers must return a ``bytesperline`` value rounded up to a multiple of the scale factor.h](h$When the image format is planar the }(hj hhhNhNubj)}(h``bytesperline``h]h bytesperline}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubhK value applies to the first plane and is divided by the same factor as the }(hj hhhNhNubj)}(h ``width``h]hwidth}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh field for the other planes. For example the Cb and Cr planes of a YUV 4:2:0 image have half as many padding bytes following each line as the Y plane. To avoid ambiguities drivers must return a }(hj hhhNhNubj)}(h``bytesperline``h]h bytesperline}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh4 value rounded up to a multiple of the scale factor.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjb ubeh}(h]h ]h"]h$]h&]morecolsKuh1jPhj_ ubah}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(h__u32h]h__u32}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(h ``sizeimage``h]j)}(hj6 h]h sizeimage}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4 ubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 ubah}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh](h)}(hThis field is irrelevant to *non-destructive Video Overlays*. For *Video Output Overlays* the driver must return a valid format.h](hThis field is irrelevant to }(hjT hhhNhNubj)}(h *non-destructive Video Overlays*h]hnon-destructive Video Overlays}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT ubh. For }(hjT hhhNhNubj)}(h*Video Output Overlays*h]hVideo Output Overlays}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT ubh' the driver must return a valid format.}(hjT hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjQ ubh)}(hRTogether with ``base`` it defines the framebuffer memory accessible by the driver.h](hTogether with }(hj hhhNhNubj)}(h``base``h]hbase}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh< it defines the framebuffer memory accessible by the driver.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjQ ubeh}(h]h ]h"]h$]h&]uh1jPhj ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(henum :c:type:`v4l2_colorspace`h](henum }(hj hhhNhNubh)}(h:c:type:`v4l2_colorspace`h]j)}(hj h]hv4l2_colorspace}(hj hhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjsv4l2_colorspaceuh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(h``colorspace``h]j)}(hj h]h colorspace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jPhj ubjQ)}(hhh]h)}(hgThis information supplements the ``pixelformat`` and must be set by the driver, see :ref:`colorspaces`.h](h!This information supplements the }(hjhhhNhNubj)}(h``pixelformat``h]h pixelformat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh$ and must be set by the driver, see }(hjhhhNhNubh)}(h:ref:`colorspaces`h]j)}(hj3h]h colorspaces}(hj5hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj?reftyperef refexplicitrefwarnjs colorspacesuh1hhhhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhj ubeh}(h]h ]h"]h$]h&]uh1jKhjHubjL)}(hhh](jQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjgubjQ)}(hhh]h)}(h__u32h]h__u32}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjsubah}(h]h ]h"]h$]h&]uh1jPhjgubjQ)}(hhh]h)}(h``priv``h]j)}(hjh]hpriv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjgubjQ)}(hhh]h)}(h?Reserved. Drivers and applications must set this field to zero.h]h?Reserved. Drivers and applications must set this field to zero.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjgubeh}(h]h ]h"]h$]h&]uh1jKhjHubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h]id1ah ] longtableah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]j|p{7.4cm}|p{1.6cm}|p{8.3cm}|uh1jhhhKhjhhubh)}(h.. _framebuffer-cap:h]h}(h]h ]h"]h$]h&]hframebuffer-capuh1hhKhjhhhhubj)}(hhh](h)}(hFrame Buffer Capability Flagsh]hFrame Buffer Capability Flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubjG)}(hhh](jL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_CAP_EXTERNOVERLAY``h]j)}(hj.h]hV4L2_FBUF_CAP_EXTERNOVERLAY}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhhhKhj)ubah}(h]h ]h"]h$]h&]uh1jPhj&ubjQ)}(hhh]h)}(h0x0001h]h0x0001}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjIubah}(h]h ]h"]h$]h&]uh1jPhj&ubjQ)}(hhh]h)}(hXThe device is capable of non-destructive overlays. When the driver clears this flag, only destructive overlays are supported. There are no drivers yet which support both destructive and non-destructive overlays. Video Output Overlays are in practice always non-destructive.h]hXThe device is capable of non-destructive overlays. When the driver clears this flag, only destructive overlays are supported. There are no drivers yet which support both destructive and non-destructive overlays. Video Output Overlays are in practice always non-destructive.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj`ubah}(h]h ]h"]h$]h&]uh1jPhj&ubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_CAP_CHROMAKEY``h]j)}(hjh]hV4L2_FBUF_CAP_CHROMAKEY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhj}ubjQ)}(hhh]h)}(h0x0002h]h0x0002}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhj}ubjQ)}(hhh]h)}(hThe device supports clipping by chroma-keying the images. That is, image pixels replace pixels in the VGA or video signal only where the latter assume a certain color. Chroma-keying makes no sense for destructive overlays.h]hThe device supports clipping by chroma-keying the images. That is, image pixels replace pixels in the VGA or video signal only where the latter assume a certain color. Chroma-keying makes no sense for destructive overlays.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhj}ubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_CAP_LIST_CLIPPING``h]j)}(hjh]hV4L2_FBUF_CAP_LIST_CLIPPING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0004h]h0x0004}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hdThe device supports clipping using a list of clip rectangles. Note that this is no longer supported.h]hdThe device supports clipping using a list of clip rectangles. Note that this is no longer supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h!``V4L2_FBUF_CAP_BITMAP_CLIPPING``h]j)}(hj3h]hV4L2_FBUF_CAP_BITMAP_CLIPPING}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhhhKhj.ubah}(h]h ]h"]h$]h&]uh1jPhj+ubjQ)}(hhh]h)}(h0x0008h]h0x0008}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjNubah}(h]h ]h"]h$]h&]uh1jPhj+ubjQ)}(hhh]h)}(hUThe device supports clipping using a bit mask. Note that this is no longer supported.h]hUThe device supports clipping using a bit mask. Note that this is no longer supported.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjeubah}(h]h ]h"]h$]h&]uh1jPhj+ubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_CAP_LOCAL_ALPHA``h]j)}(hjh]hV4L2_FBUF_CAP_LOCAL_ALPHA}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0010h]h0x0010}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hThe device supports clipping/blending using the alpha channel of the framebuffer or VGA signal. Alpha blending makes no sense for destructive overlays.h]hThe device supports clipping/blending using the alpha channel of the framebuffer or VGA signal. Alpha blending makes no sense for destructive overlays.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_CAP_GLOBAL_ALPHA``h]j)}(hjh]hV4L2_FBUF_CAP_GLOBAL_ALPHA}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0020h]h0x0020}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hvThe device supports alpha blending using a global alpha value. Alpha blending makes no sense for destructive overlays.h]hvThe device supports alpha blending using a global alpha value. Alpha blending makes no sense for destructive overlays.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h!``V4L2_FBUF_CAP_LOCAL_INV_ALPHA``h]j)}(hj8h]hV4L2_FBUF_CAP_LOCAL_INV_ALPHA}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jPhj0ubjQ)}(hhh]h)}(h0x0040h]h0x0040}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]uh1jPhj0ubjQ)}(hhh]h)}(hThe device supports clipping/blending using the inverted alpha channel of the framebuffer or VGA signal. Alpha blending makes no sense for destructive overlays.h]hThe device supports clipping/blending using the inverted alpha channel of the framebuffer or VGA signal. Alpha blending makes no sense for destructive overlays.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjubah}(h]h ]h"]h$]h&]uh1jPhj0ubeh}(h]h ]h"]h$]h&]uh1jKhj#ubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_CAP_SRC_CHROMAKEY``h]j)}(hjh]hV4L2_FBUF_CAP_SRC_CHROMAKEY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0080h]h0x0080}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hThe device supports Source Chroma-keying. Video pixels with the chroma-key colors are replaced by framebuffer pixels, which is exactly opposite of ``V4L2_FBUF_CAP_CHROMAKEY``h](hThe device supports Source Chroma-keying. Video pixels with the chroma-key colors are replaced by framebuffer pixels, which is exactly opposite of }(hjhhhNhNubj)}(h``V4L2_FBUF_CAP_CHROMAKEY``h]hV4L2_FBUF_CAP_CHROMAKEY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhj#ubeh}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h](id2jeh ]h"]framebuffer-capah$]h&]uh1jhjhhhNhNexpect_referenced_by_name}jjsexpect_referenced_by_id}jjsubj)}(hhh]h}(h]h ]h"]h$]h&]j|p{7.4cm}|p{1.6cm}|p{8.3cm}|uh1jhhhKhjhhubh)}(h.. _framebuffer-flags:h]h}(h]h ]h"]h$]h&]hframebuffer-flagsuh1hhKhjhhhhubj)}(hhh](h)}(hFrame Buffer Flagsh]hFrame Buffer Flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhj+ubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhj+ubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhj+ubjG)}(hhh](jL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_FLAG_PRIMARY``h]j)}(hjWh]hV4L2_FBUF_FLAG_PRIMARY}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhhhMhjRubah}(h]h ]h"]h$]h&]uh1jPhjOubjQ)}(hhh]h)}(h0x0001h]h0x0001}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjrubah}(h]h ]h"]h$]h&]uh1jPhjOubjQ)}(hhh]h)}(hThe framebuffer is the primary graphics surface. In other words, the overlay is destructive. This flag is typically set by any driver that doesn't have the ``V4L2_FBUF_CAP_EXTERNOVERLAY`` capability and it is cleared otherwise.h](hThe framebuffer is the primary graphics surface. In other words, the overlay is destructive. This flag is typically set by any driver that doesn’t have the }(hjhhhNhNubj)}(h``V4L2_FBUF_CAP_EXTERNOVERLAY``h]hV4L2_FBUF_CAP_EXTERNOVERLAY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh( capability and it is cleared otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjOubeh}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_FLAG_OVERLAY``h]j)}(hjh]hV4L2_FBUF_FLAG_OVERLAY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0002h]h0x0002}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hXIf this flag is set for a video capture device, then the driver will set the initial overlay size to cover the full framebuffer size, otherwise the existing overlay size (as set by :ref:`VIDIOC_S_FMT `) will be used. Only one video capture driver (bttv) supports this flag. The use of this flag for capture devices is deprecated. There is no way to detect which drivers support this flag, so the only reliable method of setting the overlay size is through :ref:`VIDIOC_S_FMT `. If this flag is set for a video output device, then the video output overlay window is relative to the top-left corner of the framebuffer and restricted to the size of the framebuffer. If it is cleared, then the video output overlay window is relative to the video output display.h](hIf this flag is set for a video capture device, then the driver will set the initial overlay size to cover the full framebuffer size, otherwise the existing overlay size (as set by }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainj reftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhMhjubh) will be used. Only one video capture driver (bttv) supports this flag. The use of this flag for capture devices is deprecated. There is no way to detect which drivers support this flag, so the only reliable method of setting the overlay size is through }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hj#h]h VIDIOC_S_FMT}(hj%hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj/reftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhMhjubhX. If this flag is set for a video output device, then the video output overlay window is relative to the top-left corner of the framebuffer and restricted to the size of the framebuffer. If it is cleared, then the video output overlay window is relative to the video output display.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_FLAG_CHROMAKEY``h]j)}(hj_h]hV4L2_FBUF_FLAG_CHROMAKEY}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hhhhMhjZubah}(h]h ]h"]h$]h&]uh1jPhjWubjQ)}(hhh]h)}(h0x0004h]h0x0004}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjzubah}(h]h ]h"]h$]h&]uh1jPhjWubjQ)}(hhh]h)}(hUse chroma-keying. The chroma-key color is determined by the ``chromakey`` field of struct :c:type:`v4l2_window` and negotiated with the :ref:`VIDIOC_S_FMT ` ioctl, see :ref:`overlay` and :ref:`osd`.h](h=Use chroma-keying. The chroma-key color is determined by the }(hjhhhNhNubj)}(h ``chromakey``h]h chromakey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field of struct }(hjhhhNhNubh)}(h:c:type:`v4l2_window`h]j)}(hjh]h v4l2_window}(hjhhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_windowuh1hhhhMhjubh and negotiated with the }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhMhjubh ioctl, see }(hjhhhNhNubh)}(h:ref:`overlay`h]j)}(hjh]hoverlay}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsoverlayuh1hhhhMhjubh and }(hjhhhNhNubh)}(h :ref:`osd`h]j)}(hjh]hosd}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainj'reftyperef refexplicitrefwarnjsosduh1hhhhMhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjWubeh}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh]jQ)}(hhh]h)}(h:cspan:`2` There are no flags to enable clipping using a list of clip rectangles or a bitmap. These methods are negotiated with the :ref:`VIDIOC_S_FMT ` ioctl, see :ref:`overlay` and :ref:`osd`.h](hz There are no flags to enable clipping using a list of clip rectangles or a bitmap. These methods are negotiated with the }(hjUhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hj_h]h VIDIOC_S_FMT}(hjahhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjkreftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhMhjUubh ioctl, see }(hjUhhhNhNubh)}(h:ref:`overlay`h]j)}(hjh]hoverlay}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsoverlayuh1hhhhMhjUubh and }(hjUhhhNhNubh)}(h :ref:`osd`h]j)}(hjh]hosd}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsosduh1hhhhMhjUubh.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjRubah}(h]h ]h"]h$]h&]morecolsKuh1jPhjOubah}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_FLAG_LOCAL_ALPHA``h]j)}(hjh]hV4L2_FBUF_FLAG_LOCAL_ALPHA}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0008h]h0x0008}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hUse the alpha channel of the framebuffer to clip or blend framebuffer pixels with video images. The blend function is: output = framebuffer pixel * alpha + video pixel * (1 - alpha). The actual alpha depth depends on the framebuffer pixel format.h]hUse the alpha channel of the framebuffer to clip or blend framebuffer pixels with video images. The blend function is: output = framebuffer pixel * alpha + video pixel * (1 - alpha). The actual alpha depth depends on the framebuffer pixel format.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM!hjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh](jQ)}(hhh]h)}(h``V4L2_FBUF_FLAG_GLOBAL_ALPHA``h]j)}(hj;h]hV4L2_FBUF_FLAG_GLOBAL_ALPHA}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhhhM%hj6ubah}(h]h ]h"]h$]h&]uh1jPhj3ubjQ)}(hhh]h)}(h0x0010h]h0x0010}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjVubah}(h]h ]h"]h$]h&]uh1jPhj3ubjQ)}(hhh]h)}(hXfUse a global alpha value to blend the framebuffer with video images. The blend function is: output = (framebuffer pixel * alpha + video pixel * (255 - alpha)) / 255. The alpha value is determined by the ``global_alpha`` field of struct :c:type:`v4l2_window` and negotiated with the :ref:`VIDIOC_S_FMT ` ioctl, see :ref:`overlay` and :ref:`osd`.h](hUse a global alpha value to blend the framebuffer with video images. The blend function is: output = (framebuffer pixel * alpha + video pixel * (255 - alpha)) / 255. The alpha value is determined by the }(hjphhhNhNubj)}(h``global_alpha``h]h global_alpha}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubh field of struct }(hjphhhNhNubh)}(h:c:type:`v4l2_window`h]j)}(hjh]h v4l2_window}(hjhhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_windowuh1hhhhM'hjpubh and negotiated with the }(hjphhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhM'hjpubh ioctl, see }(hjphhhNhNubh)}(h:ref:`overlay`h]j)}(hjh]hoverlay}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsoverlayuh1hhhhM'hjpubh and }(hjphhhNhNubh)}(h :ref:`osd`h]j)}(hjh]hosd}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjsosduh1hhhhM'hjpubh.}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM'hjmubah}(h]h ]h"]h$]h&]uh1jPhj3ubeh}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh](jQ)}(hhh]h)}(h"``V4L2_FBUF_FLAG_LOCAL_INV_ALPHA``h]j)}(hj3h]hV4L2_FBUF_FLAG_LOCAL_INV_ALPHA}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhhhM.hj.ubah}(h]h ]h"]h$]h&]uh1jPhj+ubjQ)}(hhh]h)}(h0x0020h]h0x0020}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hjNubah}(h]h ]h"]h$]h&]uh1jPhj+ubjQ)}(hhh]h)}(hX=Like ``V4L2_FBUF_FLAG_LOCAL_ALPHA``, use the alpha channel of the framebuffer to clip or blend framebuffer pixels with video images, but with an inverted alpha value. The blend function is: output = framebuffer pixel * (1 - alpha) + video pixel * alpha. The actual alpha depth depends on the framebuffer pixel format.h](hLike }(hjhhhhNhNubj)}(h``V4L2_FBUF_FLAG_LOCAL_ALPHA``h]hV4L2_FBUF_FLAG_LOCAL_ALPHA}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubhX, use the alpha channel of the framebuffer to clip or blend framebuffer pixels with video images, but with an inverted alpha value. The blend function is: output = framebuffer pixel * (1 - alpha) + video pixel * alpha. The actual alpha depth depends on the framebuffer pixel format.}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM0hjeubah}(h]h ]h"]h$]h&]uh1jPhj+ubeh}(h]h ]h"]h$]h&]uh1jKhjLubjL)}(hhh](jQ)}(hhh]h)}(h ``V4L2_FBUF_FLAG_SRC_CHROMAKEY``h]j)}(hjh]hV4L2_FBUF_FLAG_SRC_CHROMAKEY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhM5hjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(h0x0040h]h0x0040}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjubah}(h]h ]h"]h$]h&]uh1jPhjubjQ)}(hhh]h)}(hXeUse source chroma-keying. The source chroma-key color is determined by the ``chromakey`` field of struct :c:type:`v4l2_window` and negotiated with the :ref:`VIDIOC_S_FMT ` ioctl, see :ref:`overlay` and :ref:`osd`. Both chroma-keying are mutual exclusive to each other, so same ``chromakey`` field of struct :c:type:`v4l2_window` is being used."h](hKUse source chroma-keying. The source chroma-key color is determined by the }(hjhhhNhNubj)}(h ``chromakey``h]h chromakey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field of struct }(hjhhhNhNubh)}(h:c:type:`v4l2_window`h]j)}(hjh]h v4l2_window}(hjhhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_windowuh1hhhhM7hjubh and negotiated with the }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fmtuh1hhhhM7hjubh ioctl, see }(hjhhhNhNubh)}(h:ref:`overlay`h]j)}(hj4h]hoverlay}(hj6hhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]refdocj^ refdomainj@reftyperef refexplicitrefwarnjsoverlayuh1hhhhM7hjubh and }(hjhhhNhNubh)}(h :ref:`osd`h]j)}(hjXh]hosd}(hjZhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]refdocj^ refdomainjdreftyperef refexplicitrefwarnjsosduh1hhhhM7hjubhA. Both chroma-keying are mutual exclusive to each other, so same }(hjhhhNhNubj)}(h ``chromakey``h]h chromakey}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field of struct }hjsbh)}(h:c:type:`v4l2_window`h]j)}(hjh]h v4l2_window}(hjhhhNhNubah}(h]h ](jRjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjsreftypetype refexplicitrefwarnjdjhjs v4l2_windowuh1hhhhM7hjubh is being used.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM7hjubah}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]uh1jKhjLubeh}(h]h ]h"]h$]h&]uh1jFhj+ubeh}(h]h ]h"]h$]h&]colsKuh1jhjubeh}(h](id3jeh ] longtableah"]framebuffer-flagsah$]h&]uh1jhjhhhNhNj}jjsj}jjsubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhK$ubh)}(hhh](h)}(h Return Valueh]h Return Value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM@ubh)}(hOn success 0 is returned, on error -1 and the ``errno`` variable is set appropriately. The generic error codes are described at the :ref:`Generic Error Codes ` chapter.h](h.On success 0 is returned, on error -1 and the }(hjhhhNhNubj)}(h ``errno``h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhM variable is set appropriately. The generic error codes are described at the }(hjhhhNhNubh)}(h':ref:`Generic Error Codes `h]j)}(hjh]hGeneric Error Codes}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs gen-errorsuh1hhhhMBhjubh chapter.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMBhjhhubj)}(hhh](j)}(hEPERM :ref:`VIDIOC_S_FBUF ` can only be called by a privileged user to negotiate the parameters for a destructive overlay. h](j)}(hEPERMh]hEPERM}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMHhj9ubj8)}(hhh]h)}(h:ref:`VIDIOC_S_FBUF ` can only be called by a privileged user to negotiate the parameters for a destructive overlay.h](h)}(h$:ref:`VIDIOC_S_FBUF `h]j)}(hjTh]h VIDIOC_S_FBUF}(hjVhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]refdocj^ refdomainj`reftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhMGhjNubh_ can only be called by a privileged user to negotiate the parameters for a destructive overlay.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMGhjKubah}(h]h ]h"]h$]h&]uh1j7hj9ubeh}(h]h ]h"]h$]h&]uh1jhhhMHhj6ubj)}(hJEINVAL The :ref:`VIDIOC_S_FBUF ` parameters are unsuitable.h](j)}(hEINVALh]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMJhjubj8)}(hhh]h)}(hCThe :ref:`VIDIOC_S_FBUF ` parameters are unsuitable.h](hThe }(hjhhhNhNubh)}(h$:ref:`VIDIOC_S_FBUF `h]j)}(hjh]h VIDIOC_S_FBUF}(hjhhhNhNubah}(h]h ](jRstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj^ refdomainjreftyperef refexplicitrefwarnjs vidioc_g_fbufuh1hhhhMKhjubh parameters are unsuitable.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMKhjubah}(h]h ]h"]h$]h&]uh1j7hjubeh}(h]h ]h"]h$]h&]uh1jhhhMJhj6hhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h] return-valueah ]h"] return valueah$]h&]uh1hhhhhhhhM@ubeh}(h](!ioctl-vidioc-g-fbuf-vidioc-s-fbufheh ]h"]("ioctl vidioc_g_fbuf, vidioc_s_fbuf vidioc_g_fbufeh$]h&]uh1hhhhhhhhKj}jhsj}hhsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjPfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(h]haj]jaj]jaunameids}(jhjjhhjjjjjjjjjjjju nametypes}(jjhjjjjjjuh}(hhjhhhjjj j)jjjjjjjjjjjjjjjjjjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j$KsRparse_messages]transform_messages](hsystem_message)}(hhh]h)}(hhh]h3Hyperlink target "vidioc-g-fbuf" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1j}ubj~)}(hhh]h)}(hhh]h5Hyperlink target "framebuffer-cap" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1j}ubj~)}(hhh]h)}(hhh]h7Hyperlink target "framebuffer-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1j}ube transformerN include_log] decorationNhhub.