| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- .. SPDX-License-Identifier: GPL-2.0
- V4L2 generic ISP parameters and statistics support
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Design rationale
- ================
- ISP configuration parameters and statistics are processed and collected by
- drivers and exchanged with userspace through data types that usually
- reflect the ISP peripheral registers layout.
- Each ISP driver defines its own metadata output format for parameters and
- a metadata capture format for statistics. The buffer layout is realized by a
- set of C structures that reflects the registers layout. The number and types
- of C structures is fixed by the format definition and becomes part of the Linux
- kernel uAPI/uABI interface.
- Because of the hard requirement of backward compatibility when extending the
- user API/ABI interface, modifying an ISP driver capture or output metadata
- format after it has been accepted by mainline is very hard if not impossible.
- It generally happens, in fact, that after the first accepted revision of an ISP
- driver the buffers layout need to be modified, either to support new hardware
- blocks, to fix bugs or to support different revisions of the hardware.
- Each of these situations would require defining a new metadata format, making it
- really hard to maintain and extend drivers and requiring userspace to use
- the correct format depending on the kernel revision in use.
- V4L2 ISP configuration parameters
- =================================
- For these reasons, Video4Linux2 defines generic types for ISP configuration
- parameters and statistics. Drivers are still expected to define their own
- formats for their metadata output and capture nodes, but the buffers layout can
- be defined using the extensible and versioned types defined by
- include/uapi/linux/media/v4l2-isp.h.
- Drivers are expected to provide the definitions of their supported ISP blocks
- and the expected maximum size of a buffer.
- For driver developers a set of helper functions to assist them with validation
- of the buffer received from userspace is available in
- drivers/media/v4l2-core/v4l2-isp.c
- V4L2 ISP support driver documentation
- =====================================
- .. kernel-doc:: include/media/v4l2-isp.h
|