84 lines
2.7 KiB
ReStructuredText
84 lines
2.7 KiB
ReStructuredText
|
.. 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() <func-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.
|
||
|
|
||
|
.. 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.
|
||
|
|
||
|
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 <gen-errors>` chapter.
|
||
|
|
||
|
ENOIOCTLCMD
|
||
|
The kernel does not support this ioctl.
|