%[sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftargetF/translations/zh_CN/userspace-api/media/v4l/vidioc-subdev-g-client-capmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetF/translations/zh_TW/userspace-api/media/v4l/vidioc-subdev-g-client-capmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetF/translations/it_IT/userspace-api/media/v4l/vidioc-subdev-g-client-capmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetF/translations/ja_JP/userspace-api/media/v4l/vidioc-subdev-g-client-capmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetF/translations/ko_KR/userspace-api/media/v4l/vidioc-subdev-g-client-capmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetF/translations/sp_SP/userspace-api/media/v4l/vidioc-subdev-g-client-capmodnameN 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:spacepreserveuh1hhhhhh`/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/vidioc-subdev-g-client-cap.rsthKubhtarget)}(h.. _VIDIOC_SUBDEV_G_CLIENT_CAP:h]h}(h]h ]h"]h$]h&]refidvidioc-subdev-g-client-capuh1hhKhhhhhhubhsection)}(hhh](htitle)}(h``fd`` File descriptor returned by :ref:`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)}(h6File descriptor returned by :ref:`open() `.h](hFile descriptor returned by }(hj<hhhNhNubh)}(h:ref:`open() `h]hinline)}(hjFh]hopen()}(hjJhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jHhjDubah}(h]h ]h"]h$]h&]refdoc2userspace-api/media/v4l/vidioc-subdev-g-client-cap refdomainjUreftyperef refexplicitrefwarn reftarget func-openuh1hhhhKhj<ubh.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj9ubah}(h]h ]h"]h$]h&]uh1j7hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hD``argp`` Pointer to struct :c:type:`v4l2_subdev_client_capability`. 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_subdev_client_capability`.h](hPointer to struct }(hjhhhNhNubh)}(h':c:type:`v4l2_subdev_client_capability`h]j)}(hjh]hv4l2_subdev_client_capability}(hjhhhNhNubah}(h]h ](jTjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocja refdomainjsreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)} identifierV4LsbNasbjgv4l2_subdev_client_capabilityuh1hhhhK"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)}(hXThese ioctls are used to get and set the client (the application using the subdevice ioctls) capabilities. The client capabilities are stored in the file handle of the opened subdev device node, and the client must set the capabilities for each opened subdev separately.h]hXThese ioctls are used to get and set the client (the application using the subdevice ioctls) capabilities. The client capabilities are stored in the file handle of the opened subdev device node, and the client must set the capabilities for each opened subdev separately.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjhhubh)}(hNBy default no client capabilities are set when a subdev device node is opened.h]hNBy default no client capabilities are set when a subdev device node is opened.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjhhubh)}(hThe purpose of the client capabilities are to inform the kernel of the behavior of the client, mainly related to maintaining compatibility with different kernel and userspace versions.h]hThe purpose of the client capabilities are to inform the kernel of the behavior of the client, mainly related to maintaining compatibility with different kernel and userspace versions.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjhhubh)}(hxThe ``VIDIOC_SUBDEV_G_CLIENT_CAP`` ioctl returns the current client capabilities associated with the file handle ``fd``.h](hThe }(hj2hhhNhNubj)}(h``VIDIOC_SUBDEV_G_CLIENT_CAP``h]hVIDIOC_SUBDEV_G_CLIENT_CAP}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubhO ioctl returns the current client capabilities associated with the file handle }(hj2hhhNhNubj)}(h``fd``h]hfd}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubh.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubh)}(hThe ``VIDIOC_SUBDEV_S_CLIENT_CAP`` ioctl sets client capabilities for the file handle ``fd``. The new capabilities fully replace the current capabilities, the ioctl can therefore also be used to remove capabilities that have previously been set.h](hThe }(hjdhhhNhNubj)}(h``VIDIOC_SUBDEV_S_CLIENT_CAP``h]hVIDIOC_SUBDEV_S_CLIENT_CAP}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubh4 ioctl sets client capabilities for the file handle }(hjdhhhNhNubj)}(h``fd``h]hfd}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubh. The new capabilities fully replace the current capabilities, the ioctl can therefore also be used to remove capabilities that have previously been set.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK5hjhhubh)}(hX:``VIDIOC_SUBDEV_S_CLIENT_CAP`` modifies the struct :c:type:`v4l2_subdev_client_capability` to reflect the capabilities that have been accepted. A common case for the kernel not accepting a capability is that the kernel is older than the headers the userspace uses, and thus the capability is unknown to the kernel.h](j)}(h``VIDIOC_SUBDEV_S_CLIENT_CAP``h]hVIDIOC_SUBDEV_S_CLIENT_CAP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh modifies the struct }(hjhhhNhNubh)}(h':c:type:`v4l2_subdev_client_capability`h]j)}(hjh]hv4l2_subdev_client_capability}(hjhhhNhNubah}(h]h ](jTjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocja refdomainjsreftypetype refexplicitrefwarnjjjgv4l2_subdev_client_capabilityuh1hhhhK:hjubh to reflect the capabilities that have been accepted. A common case for the kernel not accepting a capability is that the kernel is older than the headers the userspace uses, and thus the capability is unknown to the kernel.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK:hjhhubhtabular_col_spec)}(hhh]h}(h]h ]h"]h$]h&]spec|p{1.5cm}|p{2.9cm}|p{12.9cm}|uh1jhhhK@hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j*V4L.v4l2_subdev_client_capability (C type)#c.V4L.v4l2_subdev_client_capabilityhNtauh1jhjhhhNhNubj#)}(hhh](j()}(hv4l2_subdev_client_capabilityh]j.)}(h"type v4l2_subdev_client_capabilityh](hdesc_sig_keyword)}(htypeh]htype}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhhhKBubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1j hjhhhhhKBubj4)}(hv4l2_subdev_client_capabilityh]j:)}(hjh]hv4l2_subdev_client_capability}(hj!hhhNhNubah}(h]h ]jEah"]h$]h&]uh1j9hjubah}(h]h ](jLjMeh"]h$]h&]hhuh1j3hjhhhhhKBubeh}(h]h ]h"]h$]h&]hhjWuh1j-jXjYhjhhhhhKBubah}(h]jah ](j]j^eh"]h$]h&]jbjc)jdhuh1j'hhhKBhjhhubjf)}(hhh]h}(h]h ]h"]h$]h&]uh1jehjhhhhhKBubeh}(h]h ](jstypeeh"]h$]h&]jxjsjyjLjzjLj{j|j}uh1j"hhhjhNhNubhtable)}(hhh](h)}(h$struct v4l2_subdev_client_capabilityh]h$struct v4l2_subdev_client_capability}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjRubhtgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhhjeubji)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhhjeubji)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhhjeubhtbody)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(h__u64h]h__u64}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h``capabilities``h]j)}(hjh]h capabilities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKJhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h4Sub-device client capabilities of the opened device.h]h4Sub-device client capabilities of the opened device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]colsKuh1jchjRubeh}(h]id1ah ]h"]h$]h&]uh1jPhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]j|p{6.8cm}|p{2.4cm}|p{8.1cm}|uh1jhhhKMhjhhubjQ)}(hhh](h)}(hClient Capabilitiesh]hClient Capabilities}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjubjd)}(hhh](ji)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jhhjubji)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jhhjubhthead)}(hhh]j)}(hhh](j)}(hhh]h)}(h Capabilityh]h Capability}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhj6ubah}(h]h ]h"]h$]h&]uh1jhj3ubj)}(hhh]h)}(h Descriptionh]h Description}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjMubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1j.hjubj)}(hhh](j)}(hhh](j)}(hhh]h)}(h"``V4L2_SUBDEV_CLIENT_CAP_STREAMS``h]j)}(hj{h]hV4L2_SUBDEV_CLIENT_CAP_STREAMS}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhhhKThjvubah}(h]h ]h"]h$]h&]uh1jhjsubj)}(hhh]h)}(hThe client is aware of streams. Setting this flag enables the use of 'stream' fields (referring to the stream number) with various ioctls. If this is not set (which is the default), the 'stream' fields will be forced to 0 by the kernel.h]hThe client is aware of streams. Setting this flag enables the use of ‘stream’ fields (referring to the stream number) with various ioctls. If this is not set (which is the default), the ‘stream’ fields will be forced to 0 by the kernel.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjpubj)}(hhh](j)}(hhh]h)}(h.``V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH``h]j)}(hjh]h*V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hThe client is aware of the :c:type:`v4l2_subdev_frame_interval` ``which`` field. If this is not set (which is the default), the ``which`` field is forced to ``V4L2_SUBDEV_FORMAT_ACTIVE`` by the kernel.h](hThe client is aware of the }(hjhhhNhNubh)}(h$:c:type:`v4l2_subdev_frame_interval`h]j)}(hjh]hv4l2_subdev_frame_interval}(hjhhhNhNubah}(h]h ](jTjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocja refdomainjsreftypetype refexplicitrefwarnjjjgv4l2_subdev_frame_intervaluh1hhhhKZhjubh }(hjhhhNhNubj)}(h ``which``h]hwhich}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh7 field. If this is not set (which is the default), the }(hjhhhNhNubj)}(h ``which``h]hwhich}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field is forced to }(hjhhhNhNubj)}(h``V4L2_SUBDEV_FORMAT_ACTIVE``h]hV4L2_SUBDEV_FORMAT_ACTIVE}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh by the kernel.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKZhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jchjubeh}(h]id2ah ]h"]h$]h&]uh1jPhjhhhNhNubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhK%ubh)}(hhh](h)}(h Return Valueh]h Return Value}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhhK`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 }(hjyhhhNhNubj)}(h ``errno``h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubhM variable is set appropriately. The generic error codes are described at the }(hjyhhhNhNubh)}(h':ref:`Generic Error Codes `h]jI)}(hjh]hGeneric Error Codes}(hjhhhNhNubah}(h]h ](jTstdstd-refeh"]h$]h&]uh1jHhjubah}(h]h ]h"]h$]h&]refdocja refdomainjreftyperef refexplicitrefwarnjg gen-errorsuh1hhhhKbhjyubh chapter.}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKbhjhhhubj)}(hhh]j)}(h3ENOIOCTLCMD The kernel does not support this ioctl.h](j)}(h ENOIOCTLCMDh]h ENOIOCTLCMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKfhjubj8)}(hhh]h)}(h'The kernel does not support this ioctl.h]h'The kernel does not support this ioctl.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjubah}(h]h ]h"]h$]h&]uh1j7hjubeh}(h]h ]h"]h$]h&]uh1jhhhKfhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhhNubeh}(h] return-valueah ]h"] return valueah$]h&]uh1hhhhhhhhK`ubeh}(h](;ioctl-vidioc-subdev-g-client-cap-vidioc-subdev-s-client-capheh ]h"](