>sphinx.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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget9/translations/pt_BR/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_FBUFhNtauh1j%hjhhhNhNubhdesc)}(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}(hjOhhhNhNubah}(h]h ]nah"]h$]h&]uh1jMhjIubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jGhjChhhhhKubah}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jAsphinx_line_type declaratorhj=hhhhhKubah}(h]j4ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j;hhhKhj8hhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jyhj8hhhhhKubeh}(h]h ](cmacroeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j6hhhjhNhNubh)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj&)}(hhh]h}(h]h ]h"]h$]h&]entries](j2V4L.VIDIOC_S_FBUF (C macro)c.V4L.VIDIOC_S_FBUFhNtauh1j%hjhhhNhNubj7)}(hhh](j<)}(h VIDIOC_S_FBUFh]jB)}(h VIDIOC_S_FBUFh]jH)}(h VIDIOC_S_FBUFh]jN)}(hjh]h VIDIOC_S_FBUF}(hjhhhNhNubah}(h]h ]jYah"]h$]h&]uh1jMhjubah}(h]h ](j`jaeh"]h$]h&]hhuh1jGhjhhhhhKubah}(h]h ]h"]h$]h&]hhjkuh1jAjljmhjhhhhhKubah}(h]jah ](jqjreh"]h$]h&]jvjw)jxhuh1j;hhhKhjhhubjz)}(hhh]h}(h]h ]h"]h$]h&]uh1jyhjhhhhhKubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1j6hhhjhNhNubh)}(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)}(hj6h]hfd}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1j2hhhKhj.ubh definition)}(hhh]h)}(h-File descriptor returned by :c:func:`open()`.h](hFile descriptor returned by }(hjPhhhNhNubh)}(h:c:func:`open()`h]j)}(hjZh]hopen()}(hj\hhhNhNubah}(h]h ](xrefjc-funceh"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]refdoc%userspace-api/media/v4l/vidioc-g-fbuf refdomainjreftypefunc refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]jy ASTIdentifier)} identifierV4LsbNasb reftargetopenuh1hhhhKhjPubh.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjMubah}(h]h ]h"]h$]h&]uh1jKhj.ubeh}(h]h ]h"]h$]h&]uh1j,hhhKhj)ubj-)}(h7``argp`` Pointer to struct :c:type:`v4l2_framebuffer`. h](j3)}(h``argp``h]j)}(hjh]hargp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j2hhhK!hjubjL)}(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 ](jfjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|jv4l2_framebufferuh1hhhhK!hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]uh1j,hhhK!hj)hhubeh}(h]h ]h"]h$]h&]uh1j'hjhhhhhNubeh}(h] argumentsah ]h"] argumentsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Descriptionh]h Description}(hj hhhNhNubah}(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)}(hj#h]h VIDIOC_G_FBUF}(hj'hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj!ubah}(h]h ]h"]h$]h&]refdocjr refdomainj1reftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhK&hjubh and }(hjhhhNhNubh)}(h$:ref:`VIDIOC_S_FBUF `h]j&)}(hjIh]h VIDIOC_S_FBUF}(hjKhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjGubah}(h]h ]h"]h$]h&]refdocjr refdomainjUreftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhK&hjubh7 ioctl to get and set the framebuffer parameters for a }(hjhhhNhNubh)}(h:ref:`Video Overlay `h]j&)}(hjmh]h Video Overlay}(hjohhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjkubah}(h]h ]h"]h$]h&]refdocjr refdomainjyreftyperef refexplicitrefwarnjoverlayuh1hhhhK&hjubh or }(hjhhhNhNubh)}(h!:ref:`Video Output Overlay `h]j&)}(hjh]hVideo Output Overlay}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjosduh1hhhhK&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 ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjvidioc_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 }(hjhhhNhNubh)}(h$:ref:`VIDIOC_G_FBUF `h]j&)}(hj)h]h VIDIOC_G_FBUF}(hj+hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj'ubah}(h]h ]h"]h$]h&]refdocjr refdomainj5reftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhK7hjubh" ioctl with a pointer to a struct }(hjhhhNhNubh)}(h:c:type:`v4l2_framebuffer`h]j)}(hjMh]hv4l2_framebuffer}(hjOhhhNhNubah}(h]h ](jfjc-typeeh"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|jv4l2_framebufferuh1hhhhK7hjubhy structure. The driver fills all fields of the structure or returns an EINVAL error code when overlays are not supported.}(hjhhhNhNubeh}(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 }(hjthhhNhNubj)}(h*Video Output Overlay*h]hVideo Output Overlay}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh#, applications must initialize the }(hjthhhNhNubj)}(h ``flags``h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh field of a struct }(hjthhhNhNubh)}(h:c:type:`v4l2_framebuffer`h]j)}(hjh]hv4l2_framebuffer}(hjhhhNhNubah}(h]h ](jfjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|jv4l2_framebufferuh1hhhhK`h]j&)}(hjh]h VIDIOC_S_FBUF}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhK`h]j&)}(hjh]h VIDIOC_G_FBUF}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj 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}(hj+hhhNhNubah}(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&)}(hjQh]h VIDIOC_S_FBUF}(hjShhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjOubah}(h]h ]h"]h$]h&]refdocjr refdomainj]reftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhKEhjubhV. Again the driver prepares for the overlay and returns the framebuffer parameters as }(hjhhhNhNubh)}(h$:ref:`VIDIOC_G_FBUF `h]j&)}(hjuh]h VIDIOC_G_FBUF}(hjwhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjsubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj 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](j2V4L.v4l2_framebuffer (C type)c.V4L.v4l2_framebufferhNtauh1j%hjhhhNhNubj7)}(hhh](j<)}(hv4l2_framebufferh]jB)}(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&]uh1jhjhhhhhKMubjH)}(hv4l2_framebufferh]jN)}(hjh]hv4l2_framebuffer}(hjhhhNhNubah}(h]h ]jYah"]h$]h&]uh1jMhjubah}(h]h ](j`jaeh"]h$]h&]hhuh1jGhjhhhhhKMubeh}(h]h ]h"]h$]h&]hhjkuh1jAjljmhjhhhhhKMubah}(h]jah ](jqjreh"]h$]h&]jvjw)jxhuh1j;hhhKMhjhhubjz)}(hhh]h}(h]h ]h"]h$]h&]uh1jyhjhhhhhKMubeh}(h]h ](jtypeeh"]h$]h&]jjjjjjjjjuh1j6hhhjhNhNubhtable)}(hhh](h)}(hstruct v4l2_framebufferh]hstruct v4l2_framebuffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj-ubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj-ubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj-ubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj-ubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h__u32h]h__u32}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjfubah}(h]h ]h"]h$]h&]uh1jdhjaubje)}(hhh]h)}(h``capability``h]j)}(hjh]h capability}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKWhj}ubah}(h]h ]h"]h$]h&]uh1jdhjaubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhjaubje)}(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 ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjframebuffer-capuh1hhhhKYhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jdhjaubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h)}(h__u32h]h__u32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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&]uh1jdhjubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhjubje)}(hhh]h)}(hQOverlay control flags set by application and driver, see :ref:`framebuffer-flags`h](h9Overlay control flags set by application and driver, see }(hj-hhhNhNubh)}(h:ref:`framebuffer-flags`h]j&)}(hj7h]hframebuffer-flags}(hj9hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj5ubah}(h]h ]h"]h$]h&]refdocjr refdomainjCreftyperef refexplicitrefwarnjframebuffer-flagsuh1hhhhK^hj-ubeh}(h]h ]h"]h$]h&]uh1hhhhK^hj*ubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h)}(hvoid *h]hvoid *}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK`hjjubah}(h]h ]h"]h$]h&]uh1jdhjgubje)}(hhh]h)}(h``base``h]j)}(hjh]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1jdhjgubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhjgubje)}(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 ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj 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 ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjosduh1hhhhKchjubh). 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&]uh1jdhjgubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h)}(hstructh]hstruct}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhj6ubah}(h]h ]h"]h$]h&]uh1jdhj3ubje)}(hhh]h)}(h``fmt``h]j)}(hjRh]hfmt}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhhhKmhjMubah}(h]h ]h"]h$]h&]uh1jdhj3ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj3ubje)}(hhh]h)}(hLayout of the frame buffer.h]hLayout of the frame buffer.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjvubah}(h]h ]h"]h$]h&]uh1jdhj3ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhjubje)}(hhh]h)}(h__u32h]h__u32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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&]uh1jdhjubje)}(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&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhjubje)}(hhh]h)}(h__u32h]h__u32}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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&]uh1jdhjubje)}(hhh]h)}(h%Height of the frame buffer in pixels.h]h%Height of the frame buffer in pixels.}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhj6 ubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhjS ubje)}(hhh]h)}(h__u32h]h__u32}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj_ ubah}(h]h ]h"]h$]h&]uh1jdhjS ubje)}(hhh]h)}(h``pixelformat``h]j)}(hj{ h]h pixelformat}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy ubah}(h]h ]h"]h$]h&]uh1hhhhKzhjv ubah}(h]h ]h"]h$]h&]uh1jdhjS ubje)}(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&]uh1jdhjS ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(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 ](jfjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j 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&]uh1jdhj ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj5 ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj5 ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj5 ubje)}(hhh]h)}(hBFor *Video Output Overlays* the driver must return a valid format.h](hFor }(hjV hhhNhNubj)}(h*Video Output Overlays*h]hVideo Output Overlays}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV ubh' the driver must return a valid format.}(hjV hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjS ubah}(h]h ]h"]h$]h&]uh1jdhj5 ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(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 ](jfstdstd-refeh"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]refdocjr refdomainj reftyperef refexplicitrefwarnjv4l2-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 ](jfstdstd-refeh"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]refdocjr refdomainj reftyperef refexplicitrefwarnjpixfmtuh1hhhhKhj ubh" for information on pixel formats.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jdhj ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj; ubje)}(hhh]h)}(henum :c:type:`v4l2_field`h](henum }(hjJ hhhNhNubh)}(h:c:type:`v4l2_field`h]j)}(hjT h]h v4l2_field}(hjV hhhNhNubah}(h]h ](jfjc-typeeh"]h$]h&]uh1jhjR ubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j v4l2_fielduh1hhhhKhjJ ubeh}(h]h ]h"]h$]h&]uh1hhhhKhjG ubah}(h]h ]h"]h$]h&]uh1jdhj; ubje)}(hhh]h)}(h ``field``h]j)}(hj h]hfield}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj} ubah}(h]h ]h"]h$]h&]uh1jdhj; ubje)}(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 ](jfstdstd-refeh"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]refdocjr refdomainj reftyperef refexplicitrefwarnj 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 ](jfjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j v4l2_windowuh1hhhhKhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jdhj; ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h)}(h__u32h]h__u32}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h)}(h``bytesperline``h]j)}(hj; h]h bytesperline}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9 ubah}(h]h ]h"]h$]h&]uh1hhhhKhj6 ubah}(h]h ]h"]h$]h&]uh1jdhj ubje)}(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.}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjV ubah}(h]h ]h"]h$]h&]uh1jdhj ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh]je)}(hhh](h)}(h :cspan:`3`h]h}(h]h ]h"]h$]h&]uh1hhhhKhjv ubh)}(h=This field is irrelevant to *non-destructive Video Overlays*.h](hThis field is irrelevant to }(hj hhhNhNubj)}(h *non-destructive Video Overlays*h]hnon-destructive Video Overlays}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjv 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&]uh1hhhhKhjv 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&]uh1hhhhKhjv 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&]uh1hhhhKhjv ubeh}(h]h ]h"]h$]h&]morecolsKuh1jdhjs ubah}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj" ubje)}(hhh]h)}(h__u32h]h__u32}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj. ubah}(h]h ]h"]h$]h&]uh1jdhj" ubje)}(hhh]h)}(h ``sizeimage``h]j)}(hjJ h]h sizeimage}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH ubah}(h]h ]h"]h$]h&]uh1hhhhKhjE ubah}(h]h ]h"]h$]h&]uh1jdhj" ubje)}(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 }(hjh hhhNhNubj)}(h *non-destructive Video Overlays*h]hnon-destructive Video Overlays}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh ubh. For }(hjh hhhNhNubj)}(h*Video Output Overlays*h]hVideo Output Overlays}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh ubh' the driver must return a valid format.}(hjh hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhje 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&]uh1hhhhKhje ubeh}(h]h ]h"]h$]h&]uh1jdhj" ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj ubje)}(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 ](jfjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|jv4l2_colorspaceuh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h)}(h``colorspace``h]j)}(hj h]h colorspace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jdhj ubje)}(hhh]h)}(hgThis information supplements the ``pixelformat`` and must be set by the driver, see :ref:`colorspaces`.h](h!This information supplements the }(hj+hhhNhNubj)}(h``pixelformat``h]h pixelformat}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubh$ and must be set by the driver, see }(hj+hhhNhNubh)}(h:ref:`colorspaces`h]j&)}(hjGh]h colorspaces}(hjIhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjEubah}(h]h ]h"]h$]h&]refdocjr refdomainjSreftyperef refexplicitrefwarnj colorspacesuh1hhhhKhj+ubh.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj(ubah}(h]h ]h"]h$]h&]uh1jdhj ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubj`)}(hhh](je)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj{ubje)}(hhh]h)}(h__u32h]h__u32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jdhj{ubje)}(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&]uh1jdhj{ubje)}(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&]uh1jdhj{ubeh}(h]h ]h"]h$]h&]uh1j_hj\ubeh}(h]h ]h"]h$]h&]uh1jZhj-ubeh}(h]h ]h"]h$]h&]colsKuh1j+hjubeh}(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&]hԌframebuffer-capuh1hhKhjhhhhubj)}(hhh](h)}(hFrame Buffer Capability Flagsh]hFrame Buffer Capability Flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj,)}(hhh](j1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hjubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hjubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hjubj[)}(hhh](j`)}(hhh](je)}(hhh]h)}(h``V4L2_FBUF_CAP_EXTERNOVERLAY``h]j)}(hjBh]hV4L2_FBUF_CAP_EXTERNOVERLAY}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhhhKhj=ubah}(h]h ]h"]h$]h&]uh1jdhj:ubje)}(hhh]h)}(h0x0001h]h0x0001}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jdhj:ubje)}(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.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjtubah}(h]h ]h"]h$]h&]uh1jdhj:ubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0002h]h0x0002}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0004h]h0x0004}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj"ubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(hhh]h)}(h!``V4L2_FBUF_CAP_BITMAP_CLIPPING``h]j)}(hjGh]hV4L2_FBUF_CAP_BITMAP_CLIPPING}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhhhKhjBubah}(h]h ]h"]h$]h&]uh1jdhj?ubje)}(hhh]h)}(h0x0008h]h0x0008}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjbubah}(h]h ]h"]h$]h&]uh1jdhj?ubje)}(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.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjyubah}(h]h ]h"]h$]h&]uh1jdhj?ubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0010h]h0x0010}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0020h]h0x0020}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(hhh]h)}(h!``V4L2_FBUF_CAP_LOCAL_INV_ALPHA``h]j)}(hjLh]hV4L2_FBUF_CAP_LOCAL_INV_ALPHA}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1jdhjDubje)}(hhh]h)}(h0x0040h]h0x0040}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjgubah}(h]h ]h"]h$]h&]uh1jdhjDubje)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ubah}(h]h ]h"]h$]h&]uh1jdhjDubeh}(h]h ]h"]h$]h&]uh1j_hj7ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0080h]h0x0080}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj7ubeh}(h]h ]h"]h$]h&]uh1jZhjubeh}(h]h ]h"]h$]h&]colsKuh1j+hjubeh}(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&]hԌframebuffer-flagsuh1hhKhjhhhhubj)}(hhh](h)}(hFrame Buffer Flagsh]hFrame Buffer Flags}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj.ubj,)}(hhh](j1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj?ubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj?ubj1)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j0hj?ubj[)}(hhh](j`)}(hhh](je)}(hhh]h)}(h``V4L2_FBUF_FLAG_PRIMARY``h]j)}(hjkh]hV4L2_FBUF_FLAG_PRIMARY}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhhhMhjfubah}(h]h ]h"]h$]h&]uh1jdhjcubje)}(hhh]h)}(h0x0001h]h0x0001}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jdhjcubje)}(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&]uh1jdhjcubeh}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0002h]h0x0002}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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 }(hj hhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j&)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhMhj ubh) 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 }(hj hhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j&)}(hj7h]h VIDIOC_S_FMT}(hj9hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj5ubah}(h]h ]h"]h$]h&]refdocjr refdomainjCreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhMhj ubhX. 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.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh](je)}(hhh]h)}(h``V4L2_FBUF_FLAG_CHROMAKEY``h]j)}(hjsh]hV4L2_FBUF_FLAG_CHROMAKEY}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhhhMhjnubah}(h]h ]h"]h$]h&]uh1jdhjkubje)}(hhh]h)}(h0x0004h]h0x0004}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jdhjkubje)}(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 ](jfjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j v4l2_windowuh1hhhhMhjubh and negotiated with the }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j&)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhMhjubh ioctl, see }(hjhhhNhNubh)}(h:ref:`overlay`h]j&)}(hj h]hoverlay}(hj hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjoverlayuh1hhhhMhjubh and }(hjhhhNhNubh)}(h :ref:`osd`h]j&)}(hj/h]hosd}(hj1hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj-ubah}(h]h ]h"]h$]h&]refdocjr refdomainj;reftyperef refexplicitrefwarnjosduh1hhhhMhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jdhjkubeh}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh]je)}(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 }(hjihhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j&)}(hjsh]h VIDIOC_S_FMT}(hjuhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjqubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhMhjiubh ioctl, see }(hjihhhNhNubh)}(h:ref:`overlay`h]j&)}(hjh]hoverlay}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjoverlayuh1hhhhMhjiubh and }(hjihhhNhNubh)}(h :ref:`osd`h]j&)}(hjh]hosd}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjosduh1hhhhMhjiubh.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjfubah}(h]h ]h"]h$]h&]morecolsKuh1jdhjcubah}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0008h]h0x0008}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM!hj*ubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh](je)}(hhh]h)}(h``V4L2_FBUF_FLAG_GLOBAL_ALPHA``h]j)}(hjOh]hV4L2_FBUF_FLAG_GLOBAL_ALPHA}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hhhhM%hjJubah}(h]h ]h"]h$]h&]uh1jdhjGubje)}(hhh]h)}(h0x0010h]h0x0010}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjjubah}(h]h ]h"]h$]h&]uh1jdhjGubje)}(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 }(hjhhhNhNubj)}(h``global_alpha``h]h global_alpha}(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 ](jfjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j v4l2_windowuh1hhhhM'hjubh and negotiated with the }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j&)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhM'hjubh ioctl, see }(hjhhhNhNubh)}(h:ref:`overlay`h]j&)}(hjh]hoverlay}(hjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjoverlayuh1hhhhM'hjubh and }(hjhhhNhNubh)}(h :ref:`osd`h]j&)}(hj h]hosd}(hj hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnjosduh1hhhhM'hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM'hjubah}(h]h ]h"]h$]h&]uh1jdhjGubeh}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh](je)}(hhh]h)}(h"``V4L2_FBUF_FLAG_LOCAL_INV_ALPHA``h]j)}(hjGh]hV4L2_FBUF_FLAG_LOCAL_INV_ALPHA}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhhhM.hjBubah}(h]h ]h"]h$]h&]uh1jdhj?ubje)}(hhh]h)}(h0x0020h]h0x0020}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hjbubah}(h]h ]h"]h$]h&]uh1jdhj?ubje)}(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 }(hj|hhhNhNubj)}(h``V4L2_FBUF_FLAG_LOCAL_ALPHA``h]hV4L2_FBUF_FLAG_LOCAL_ALPHA}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubhX, 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.}(hj|hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM0hjyubah}(h]h ]h"]h$]h&]uh1jdhj?ubeh}(h]h ]h"]h$]h&]uh1j_hj`ubj`)}(hhh](je)}(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&]uh1jdhjubje)}(hhh]h)}(h0x0040h]h0x0040}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjubah}(h]h ]h"]h$]h&]uh1jdhjubje)}(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 ](jfjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j v4l2_windowuh1hhhhM7hjubh and negotiated with the }(hjhhhNhNubh)}(h":ref:`VIDIOC_S_FMT `h]j&)}(hj$h]h VIDIOC_S_FMT}(hj&hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj"ubah}(h]h ]h"]h$]h&]refdocjr refdomainj0reftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhM7hjubh ioctl, see }(hjhhhNhNubh)}(h:ref:`overlay`h]j&)}(hjHh]hoverlay}(hjJhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjFubah}(h]h ]h"]h$]h&]refdocjr refdomainjTreftyperef refexplicitrefwarnjoverlayuh1hhhhM7hjubh and }(hjhhhNhNubh)}(h :ref:`osd`h]j&)}(hjlh]hosd}(hjnhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjjubah}(h]h ]h"]h$]h&]refdocjr refdomainjxreftyperef refexplicitrefwarnjosduh1hhhhM7hjubhA. Both chroma-keying are mutual exclusive to each other, so same }(hjhhhNhNubj)}(h ``chromakey``h]h chromakey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field of struct }hjsbh)}(h:c:type:`v4l2_window`h]j)}(hjh]h v4l2_window}(hjhhhNhNubah}(h]h ](jfjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftypetype refexplicitrefwarnjxj|j v4l2_windowuh1hhhhM7hjubh is being used.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM7hjubah}(h]h ]h"]h$]h&]uh1jdhjubeh}(h]h ]h"]h$]h&]uh1j_hj`ubeh}(h]h ]h"]h$]h&]uh1jZhj?ubeh}(h]h ]h"]h$]h&]colsKuh1j+hj.ubeh}(h](id3j-eh ] longtableah"]framebuffer-flagsah$]h&]uh1jhjhhhNhNj}jj#sj}j-j#subeh}(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&)}(hj"h]hGeneric Error Codes}(hj$hhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]refdocjr refdomainj.reftyperef refexplicitrefwarnj 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](j3)}(hEPERMh]hEPERM}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j2hhhMHhjMubjL)}(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&)}(hjhh]h VIDIOC_S_FBUF}(hjjhhhNhNubah}(h]h ](jfstdstd-refeh"]h$]h&]uh1j%hjfubah}(h]h ]h"]h$]h&]refdocjr refdomainjtreftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhMGhjbubh_ can only be called by a privileged user to negotiate the parameters for a destructive overlay.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMGhj_ubah}(h]h ]h"]h$]h&]uh1jKhjMubeh}(h]h ]h"]h$]h&]uh1j,hhhMHhjJubj-)}(hJEINVAL The :ref:`VIDIOC_S_FBUF ` parameters are unsuitable.h](j3)}(hEINVALh]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j2hhhMJhjubjL)}(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 ](jfstdstd-refeh"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]refdocjr refdomainjreftyperef refexplicitrefwarnj vidioc_g_fbufuh1hhhhMKhjubh parameters are unsuitable.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMKhjubah}(h]h ]h"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]uh1j,hhhMJhjJhhubeh}(h]h ]h"]h$]h&]uh1j'hjhhhhhNubeh}(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_backlinksjdfootnote_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_handlerj*error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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-]j#aunameids}(jhjjjjjjjjjjjjjj-jju nametypes}(jjjjjjjjjuh}(hhjhjhjjj4j=jjjjjjjjjjj-j.jjjjjjjj.u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j8KsRparse_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&]levelKtypeINFOsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h5Hyperlink target "framebuffer-cap" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h7Hyperlink target "framebuffer-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1jube transformerN include_log] decorationNhhub.