| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- .. 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.
- .. 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 <gen-errors>` chapter.
- ENOIOCTLCMD
- The kernel does not support this ioctl.
|