media: admin-guide: Document the Raspberry Pi PiSP BE
Add documentation for the PiSP Back End memory-to-memory ISP. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
12187bd5d4
commit
5b683b2030
20
Documentation/admin-guide/media/raspberrypi-pisp-be.dot
Normal file
20
Documentation/admin-guide/media/raspberrypi-pisp-be.dot
Normal file
@ -0,0 +1,20 @@
|
||||
digraph board {
|
||||
rankdir=TB
|
||||
n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port7> 7} | pispbe\n | {<port3> 3 | <port4> 4 | <port5> 5 | <port6> 6}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||
n00000001:port3 -> n0000001c [style=bold]
|
||||
n00000001:port4 -> n00000022 [style=bold]
|
||||
n00000001:port5 -> n00000028 [style=bold]
|
||||
n00000001:port6 -> n0000002e [style=bold]
|
||||
n0000000a [label="pispbe-input\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
|
||||
n0000000a -> n00000001:port0 [style=bold]
|
||||
n00000010 [label="pispbe-tdn_input\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
|
||||
n00000010 -> n00000001:port1 [style=bold]
|
||||
n00000016 [label="pispbe-stitch_input\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
|
||||
n00000016 -> n00000001:port2 [style=bold]
|
||||
n0000001c [label="pispbe-output0\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
|
||||
n00000022 [label="pispbe-output1\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
|
||||
n00000028 [label="pispbe-tdn_output\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
|
||||
n0000002e [label="pispbe-stitch_output\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
|
||||
n00000034 [label="pispbe-config\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
|
||||
n00000034 -> n00000001:port7 [style=bold]
|
||||
}
|
109
Documentation/admin-guide/media/raspberrypi-pisp-be.rst
Normal file
109
Documentation/admin-guide/media/raspberrypi-pisp-be.rst
Normal file
@ -0,0 +1,109 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
=========================================================
|
||||
Raspberry Pi PiSP Back End Memory-to-Memory ISP (pisp-be)
|
||||
=========================================================
|
||||
|
||||
The PiSP Back End
|
||||
=================
|
||||
|
||||
The PiSP Back End is a memory-to-memory Image Signal Processor (ISP) which reads
|
||||
image data from DRAM memory and performs image processing as specified by the
|
||||
application through the parameters in a configuration buffer, before writing
|
||||
pixel data back to memory through two distinct output channels.
|
||||
|
||||
The ISP registers and programming model are documented in the `Raspberry Pi
|
||||
Image Signal Processor (PiSP) Specification document`_
|
||||
|
||||
The PiSP Back End ISP processes images in tiles. The handling of image
|
||||
tessellation and the computation of low-level configuration parameters is
|
||||
realized by a free software library called `libpisp
|
||||
<https://github.com/raspberrypi/libpisp>`_.
|
||||
|
||||
The full image processing pipeline, which involves capturing RAW Bayer data from
|
||||
an image sensor through a MIPI CSI-2 compatible capture interface, storing them
|
||||
in DRAM memory and processing them in the PiSP Back End to obtain images usable
|
||||
by an application is implemented in `libcamera <https://libcamera.org>`_ as
|
||||
part of the Raspberry Pi platform support.
|
||||
|
||||
The pisp-be driver
|
||||
==================
|
||||
|
||||
The Raspberry Pi PiSP Back End (pisp-be) driver is located under
|
||||
drivers/media/platform/raspberrypi/pisp-be. It uses the `V4L2 API` to register
|
||||
a number of video capture and output devices, the `V4L2 subdev API` to register
|
||||
a subdevice for the ISP that connects the video devices in a single media graph
|
||||
realized using the `Media Controller (MC) API`.
|
||||
|
||||
The media topology registered by the `pisp-be` driver is represented below:
|
||||
|
||||
.. _pips-be-topology:
|
||||
|
||||
.. kernel-figure:: raspberrypi-pisp-be.dot
|
||||
:alt: Diagram of the default media pipeline topology
|
||||
:align: center
|
||||
|
||||
|
||||
The media graph registers the following video device nodes:
|
||||
|
||||
- pispbe-input: output device for images to be submitted to the ISP for
|
||||
processing.
|
||||
- pispbe-tdn_input: output device for temporal denoise.
|
||||
- pispbe-stitch_input: output device for image stitching (HDR).
|
||||
- pispbe-output0: first capture device for processed images.
|
||||
- pispbe-output1: second capture device for processed images.
|
||||
- pispbe-tdn_output: capture device for temporal denoise.
|
||||
- pispbe-stitch_output: capture device for image stitching (HDR).
|
||||
- pispbe-config: output device for ISP configuration parameters.
|
||||
|
||||
pispbe-input
|
||||
------------
|
||||
|
||||
Images to be processed by the ISP are queued to the `pispbe-input` output device
|
||||
node. For a list of image formats supported as input to the ISP refer to the
|
||||
`Raspberry Pi Image Signal Processor (PiSP) Specification document`_.
|
||||
|
||||
pispbe-tdn_input, pispbe-tdn_output
|
||||
-----------------------------------
|
||||
|
||||
The `pispbe-tdn_input` output video device receives images to be processed by
|
||||
the temporal denoise block which are captured from the `pispbe-tdn_output`
|
||||
capture video device. Userspace is responsible for maintaining queues on both
|
||||
devices, and ensuring that buffers completed on the output are queued to the
|
||||
input.
|
||||
|
||||
pispbe-stitch_input, pispbe-stitch_output
|
||||
-----------------------------------------
|
||||
|
||||
To realize HDR (high dynamic range) image processing the image stitching and
|
||||
tonemapping blocks are used. The `pispbe-stitch_output` writes images to memory
|
||||
and the `pispbe-stitch_input` receives the previously written frame to process
|
||||
it along with the current input image. Userspace is responsible for maintaining
|
||||
queues on both devices, and ensuring that buffers completed on the output are
|
||||
queued to the input.
|
||||
|
||||
pispbe-output0, pispbe-output1
|
||||
------------------------------
|
||||
|
||||
The two capture devices write to memory the pixel data as processed by the ISP.
|
||||
|
||||
pispbe-config
|
||||
-------------
|
||||
|
||||
The `pispbe-config` output video devices receives a buffer of configuration
|
||||
parameters that define the desired image processing to be performed by the ISP.
|
||||
|
||||
The format of the ISP configuration parameter is defined by
|
||||
:c:type:`pisp_be_tiles_config` C structure and the meaning of each parameter is
|
||||
described in the `Raspberry Pi Image Signal Processor (PiSP) Specification
|
||||
document`_.
|
||||
|
||||
ISP configuration
|
||||
=================
|
||||
|
||||
The ISP configuration is described solely by the content of the parameters
|
||||
buffer. The only parameter that userspace needs to configure using the V4L2 API
|
||||
is the image format on the output and capture video devices for validation of
|
||||
the content of the parameters buffer.
|
||||
|
||||
.. _Raspberry Pi Image Signal Processor (PiSP) Specification document: https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf
|
@ -23,6 +23,7 @@ Video4Linux (V4L) driver-specific documentation
|
||||
omap4_camera
|
||||
philips
|
||||
qcom_camss
|
||||
raspberrypi-pisp-be
|
||||
rcar-fdp1
|
||||
rkisp1
|
||||
saa7134
|
||||
|
Loading…
Reference in New Issue
Block a user