104 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.4 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.
 | |
| 
 | |
| .. 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.
 |