.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. c:namespace:: V4L .. _VIDIOC_SUBDEV_G_CLIENT_CAP: ************************************************************ ioctl VIDIOC_SUBDEV_G_CLIENT_CAP, VIDIOC_SUBDEV_S_CLIENT_CAP ************************************************************ Name ==== VIDIOC_SUBDEV_G_CLIENT_CAP - VIDIOC_SUBDEV_S_CLIENT_CAP - Get or set client capabilities. Synopsis ======== .. c:macro:: VIDIOC_SUBDEV_G_CLIENT_CAP ``int ioctl(int fd, VIDIOC_SUBDEV_G_CLIENT_CAP, struct v4l2_subdev_client_capability *argp)`` .. c:macro:: VIDIOC_SUBDEV_S_CLIENT_CAP ``int ioctl(int fd, VIDIOC_SUBDEV_S_CLIENT_CAP, struct v4l2_subdev_client_capability *argp)`` Arguments ========= ``fd`` File descriptor returned by :ref:`open() `. ``argp`` Pointer to struct :c:type:`v4l2_subdev_client_capability`. Description =========== These 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. By default no client capabilities are set when a subdev device node is opened. The 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. The ``VIDIOC_SUBDEV_G_CLIENT_CAP`` ioctl returns the current client capabilities associated with the file handle ``fd``. The ``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. ``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. .. tabularcolumns:: |p{1.5cm}|p{2.9cm}|p{12.9cm}| .. c:type:: v4l2_subdev_client_capability .. flat-table:: struct v4l2_subdev_client_capability :header-rows: 0 :stub-columns: 0 :widths: 3 4 20 * - __u64 - ``capabilities`` - Sub-device client capabilities of the opened device. .. tabularcolumns:: |p{6.8cm}|p{2.4cm}|p{8.1cm}| .. flat-table:: Client Capabilities :header-rows: 1 * - Capability - Description * - ``V4L2_SUBDEV_CLIENT_CAP_STREAMS`` - The 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. * - ``V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH`` - The 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. Return Value ============ On 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. ENOIOCTLCMD The kernel does not support this ioctl.