1 .. SPDX-License-Identifier: GFDL-1.1-no-invari 1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 .. c:namespace:: V4L 2 .. c:namespace:: V4L 3 3 4 .. _VIDIOC_SUBDEV_G_CLIENT_CAP: 4 .. _VIDIOC_SUBDEV_G_CLIENT_CAP: 5 5 6 ********************************************** 6 ************************************************************ 7 ioctl VIDIOC_SUBDEV_G_CLIENT_CAP, VIDIOC_SUBDE 7 ioctl VIDIOC_SUBDEV_G_CLIENT_CAP, VIDIOC_SUBDEV_S_CLIENT_CAP 8 ********************************************** 8 ************************************************************ 9 9 10 Name 10 Name 11 ==== 11 ==== 12 12 13 VIDIOC_SUBDEV_G_CLIENT_CAP - VIDIOC_SUBDEV_S_C 13 VIDIOC_SUBDEV_G_CLIENT_CAP - VIDIOC_SUBDEV_S_CLIENT_CAP - Get or set client 14 capabilities. 14 capabilities. 15 15 16 Synopsis 16 Synopsis 17 ======== 17 ======== 18 18 19 .. c:macro:: VIDIOC_SUBDEV_G_CLIENT_CAP 19 .. c:macro:: VIDIOC_SUBDEV_G_CLIENT_CAP 20 20 21 ``int ioctl(int fd, VIDIOC_SUBDEV_G_CLIENT_CAP 21 ``int ioctl(int fd, VIDIOC_SUBDEV_G_CLIENT_CAP, struct v4l2_subdev_client_capability *argp)`` 22 22 23 .. c:macro:: VIDIOC_SUBDEV_S_CLIENT_CAP 23 .. c:macro:: VIDIOC_SUBDEV_S_CLIENT_CAP 24 24 25 ``int ioctl(int fd, VIDIOC_SUBDEV_S_CLIENT_CAP 25 ``int ioctl(int fd, VIDIOC_SUBDEV_S_CLIENT_CAP, struct v4l2_subdev_client_capability *argp)`` 26 26 27 Arguments 27 Arguments 28 ========= 28 ========= 29 29 30 ``fd`` 30 ``fd`` 31 File descriptor returned by :ref:`open() < 31 File descriptor returned by :ref:`open() <func-open>`. 32 32 33 ``argp`` 33 ``argp`` 34 Pointer to struct :c:type:`v4l2_subdev_cli 34 Pointer to struct :c:type:`v4l2_subdev_client_capability`. 35 35 36 Description 36 Description 37 =========== 37 =========== 38 38 39 These ioctls are used to get and set the clien 39 These ioctls are used to get and set the client (the application using the 40 subdevice ioctls) capabilities. The client cap 40 subdevice ioctls) capabilities. The client capabilities are stored in the file 41 handle of the opened subdev device node, and t 41 handle of the opened subdev device node, and the client must set the 42 capabilities for each opened subdev separately 42 capabilities for each opened subdev separately. 43 43 44 By default no client capabilities are set when 44 By default no client capabilities are set when a subdev device node is opened. 45 45 46 The purpose of the client capabilities are to 46 The purpose of the client capabilities are to inform the kernel of the behavior 47 of the client, mainly related to maintaining c 47 of the client, mainly related to maintaining compatibility with different 48 kernel and userspace versions. 48 kernel and userspace versions. 49 49 50 The ``VIDIOC_SUBDEV_G_CLIENT_CAP`` ioctl retur 50 The ``VIDIOC_SUBDEV_G_CLIENT_CAP`` ioctl returns the current client capabilities 51 associated with the file handle ``fd``. 51 associated with the file handle ``fd``. 52 52 53 The ``VIDIOC_SUBDEV_S_CLIENT_CAP`` ioctl sets 53 The ``VIDIOC_SUBDEV_S_CLIENT_CAP`` ioctl sets client capabilities for the file 54 handle ``fd``. The new capabilities fully repl 54 handle ``fd``. The new capabilities fully replace the current capabilities, the 55 ioctl can therefore also be used to remove cap 55 ioctl can therefore also be used to remove capabilities that have previously 56 been set. 56 been set. 57 57 58 ``VIDIOC_SUBDEV_S_CLIENT_CAP`` modifies the st 58 ``VIDIOC_SUBDEV_S_CLIENT_CAP`` modifies the struct 59 :c:type:`v4l2_subdev_client_capability` to ref 59 :c:type:`v4l2_subdev_client_capability` to reflect the capabilities that have 60 been accepted. A common case for the kernel no 60 been accepted. A common case for the kernel not accepting a capability is that 61 the kernel is older than the headers the users 61 the kernel is older than the headers the userspace uses, and thus the capability 62 is unknown to the kernel. 62 is unknown to the kernel. 63 63 64 .. tabularcolumns:: |p{1.5cm}|p{2.9cm}|p{12.9c 64 .. tabularcolumns:: |p{1.5cm}|p{2.9cm}|p{12.9cm}| 65 65 66 .. c:type:: v4l2_subdev_client_capability 66 .. c:type:: v4l2_subdev_client_capability 67 67 68 .. flat-table:: struct v4l2_subdev_client_capa 68 .. flat-table:: struct v4l2_subdev_client_capability 69 :header-rows: 0 69 :header-rows: 0 70 :stub-columns: 0 70 :stub-columns: 0 71 :widths: 3 4 20 71 :widths: 3 4 20 72 72 73 * - __u64 73 * - __u64 74 - ``capabilities`` 74 - ``capabilities`` 75 - Sub-device client capabilities of the 75 - Sub-device client capabilities of the opened device. 76 76 77 .. tabularcolumns:: |p{6.8cm}|p{2.4cm}|p{8.1cm 77 .. tabularcolumns:: |p{6.8cm}|p{2.4cm}|p{8.1cm}| 78 78 79 .. flat-table:: Client Capabilities 79 .. flat-table:: Client Capabilities 80 :header-rows: 1 80 :header-rows: 1 81 81 82 * - Capability 82 * - Capability 83 - Description 83 - Description 84 * - ``V4L2_SUBDEV_CLIENT_CAP_STREAMS`` 84 * - ``V4L2_SUBDEV_CLIENT_CAP_STREAMS`` 85 - The client is aware of streams. Settin 85 - The client is aware of streams. Setting this flag enables the use 86 of 'stream' fields (referring to the s 86 of 'stream' fields (referring to the stream number) with various 87 ioctls. If this is not set (which is t 87 ioctls. If this is not set (which is the default), the 'stream' fields 88 will be forced to 0 by the kernel. 88 will be forced to 0 by the kernel. 89 * - ``V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES 89 * - ``V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH`` 90 - The client is aware of the :c:type:`v4 90 - The client is aware of the :c:type:`v4l2_subdev_frame_interval` 91 ``which`` field. If this is not set (w 91 ``which`` field. If this is not set (which is the default), the 92 ``which`` field is forced to ``V4L2_SU 92 ``which`` field is forced to ``V4L2_SUBDEV_FORMAT_ACTIVE`` by the 93 kernel. 93 kernel. 94 94 95 Return Value 95 Return Value 96 ============ 96 ============ 97 97 98 On success 0 is returned, on error -1 and the 98 On success 0 is returned, on error -1 and the ``errno`` variable is set 99 appropriately. The generic error codes are des 99 appropriately. The generic error codes are described at the 100 :ref:`Generic Error Codes <gen-errors>` chapte 100 :ref:`Generic Error Codes <gen-errors>` chapter. 101 101 102 ENOIOCTLCMD 102 ENOIOCTLCMD 103 The kernel does not support this ioctl. 103 The kernel does not support this ioctl.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.