linux/Documentation/userspace-api/media/v4l/user-func.rst

86 lines
1.7 KiB
ReStructuredText
Raw Permalink Normal View History

.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. _user-func:
******************
Function Reference
******************
.. toctree::
:maxdepth: 1
func-close
func-ioctl
vidioc-create-bufs
vidioc-cropcap
vidioc-dbg-g-chip-info
vidioc-dbg-g-register
vidioc-decoder-cmd
vidioc-dqevent
vidioc-dv-timings-cap
vidioc-encoder-cmd
vidioc-enumaudio
vidioc-enumaudioout
vidioc-enum-dv-timings
vidioc-enum-fmt
vidioc-enum-framesizes
vidioc-enum-frameintervals
vidioc-enum-freq-bands
vidioc-enuminput
vidioc-enumoutput
vidioc-enumstd
vidioc-expbuf
vidioc-g-audio
vidioc-g-audioout
vidioc-g-crop
vidioc-g-ctrl
vidioc-g-dv-timings
vidioc-g-edid
vidioc-g-enc-index
vidioc-g-ext-ctrls
vidioc-g-fbuf
vidioc-g-fmt
vidioc-g-frequency
vidioc-g-input
vidioc-g-jpegcomp
vidioc-g-modulator
vidioc-g-output
vidioc-g-parm
vidioc-g-priority
vidioc-g-selection
vidioc-g-sliced-vbi-cap
vidioc-g-std
vidioc-g-tuner
vidioc-log-status
vidioc-overlay
vidioc-prepare-buf
vidioc-qbuf
vidioc-querybuf
vidioc-querycap
vidioc-queryctrl
vidioc-query-dv-timings
vidioc-querystd
vidioc-reqbufs
vidioc-remove-bufs
vidioc-s-hw-freq-seek
vidioc-streamon
vidioc-subdev-enum-frame-interval
vidioc-subdev-enum-frame-size
vidioc-subdev-enum-mbus-code
vidioc-subdev-g-crop
vidioc-subdev-g-fmt
vidioc-subdev-g-frame-interval
vidioc-subdev-g-routing
vidioc-subdev-g-selection
media: v4l2-subdev: Add new ioctl for client capabilities Add new ioctls to set and get subdev client capabilities. Client in this context means the userspace application which opens the subdev device node. 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. For now we only add a single flag, V4L2_SUBDEV_CLIENT_CAP_STREAMS, which indicates that the client is streams-aware. The reason for needing such a flag is as follows: Many structs passed via ioctls, e.g. struct v4l2_subdev_format, contain reserved fields (usually a single array field). These reserved fields can be used to extend the ioctl. The userspace is required to zero the reserved fields. We recently added a new 'stream' field to many of these structs, and the space for the field was taken from these reserved arrays. The assumption was that these new 'stream' fields are always initialized to zero if the userspace does not use them. This was a mistake, as, as mentioned above, the userspace is required to zero the _reserved_ fields. In other words, there is no requirement to zero this new stream field, and if the userspace doesn't use the field (which is the case for all userspace applications at the moment), the field may contain random data. This shows that the way the reserved fields are defined in v4l2 is, in my opinion, somewhat broken, but there is nothing to do about that. To fix this issue we need a way for the userspace to tell the kernel that the userspace has indeed set the 'stream' field, and it's fine for the kernel to access it. This is achieved with the new ioctl, which the userspace should usually use right after opening the subdev device node. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2023-03-23 13:58:35 +00:00
vidioc-subdev-g-client-cap
vidioc-subdev-querycap
vidioc-subscribe-event
func-mmap
func-munmap
func-open
func-poll
func-read
func-select
func-write