forked from Qortal/Brooklyn
128 lines
4.3 KiB
ReStructuredText
128 lines
4.3 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
BCM2835 ISP Driver
|
|
==================
|
|
|
|
Introduction
|
|
------------
|
|
|
|
The BCM2835 Image Sensor Pipeline (ISP) is a fixed function hardware pipeline
|
|
for performing image processing operations. Images are fed to the input
|
|
of the ISP through memory frame buffers. These images may be in various YUV,
|
|
RGB, or Bayer formats. A typical use case would have Bayer images obtained from
|
|
an image sensor by the BCM2835 Unicam peripheral, written to a memory
|
|
frame buffer, and finally fed into the input of the ISP. Two concurrent output
|
|
images may be generated in YUV or RGB format at different resolutions.
|
|
Statistics output is also generated for Bayer input images.
|
|
|
|
The bcm2835-isp driver exposes the following media pads as V4L2 device nodes:
|
|
|
|
.. tabularcolumns:: |l|l|l|l|
|
|
|
|
.. cssclass: longtable
|
|
|
|
.. flat-table::
|
|
|
|
* - *Pad*
|
|
- *Direction*
|
|
- *Purpose*
|
|
- *Formats*
|
|
|
|
* - "bcm2835-isp0-output0"
|
|
- sink
|
|
- Accepts Bayer, RGB or YUV format frame buffers as input to the ISP HW
|
|
pipeline.
|
|
- :ref:`RAW8 <V4L2-PIX-FMT-SRGGB8>`,
|
|
:ref:`RAW10P <V4L2-PIX-FMT-SRGGB10P>`,
|
|
:ref:`RAW12P <V4L2-PIX-FMT-SRGGB12P>`,
|
|
:ref:`RAW14P <V4L2-PIX-FMT-SRGGB14P>`,
|
|
:ref:`RAW16 <V4L2-PIX-FMT-SRGGB16>`,
|
|
:ref:`RGB24/BGR24 <V4L2-PIX-FMT-RGB24>`,
|
|
:ref:`YUYV <V4L2-PIX-FMT-YUYV>`,
|
|
:ref:`YVYU <V4L2-PIX-FMT-YVYU>`,
|
|
:ref:`UYVY <V4L2-PIX-FMT-UYVY>`,
|
|
:ref:`VYUY <V4L2-PIX-FMT-VYUY>`,
|
|
:ref:`YUV420/YVU420 <V4L2-PIX-FMT-YUV420>`
|
|
|
|
* - "bcm2835-isp0-capture1"
|
|
- source
|
|
- High resolution YUV or RGB processed output from the ISP.
|
|
- :ref:`RGB565 <V4L2-PIX-FMT-RGB565>`,
|
|
:ref:`RGB24/BGR24 <V4L2-PIX-FMT-RGB24>`,
|
|
:ref:`ABGR32 <V4L2-PIX-FMT-ABGR32>`,
|
|
:ref:`YUYV <V4L2-PIX-FMT-YUYV>`,
|
|
:ref:`YVYU <V4L2-PIX-FMT-YVYU>`,
|
|
:ref:`UYVY <V4L2-PIX-FMT-UYVY>`,
|
|
:ref:`VYUY <V4L2-PIX-FMT-VYUY>`.
|
|
:ref:`YUV420/YVU420 <V4L2-PIX-FMT-YUV420>`,
|
|
:ref:`NV12/NV21 <V4L2-PIX-FMT-NV12>`,
|
|
|
|
* - "bcm2835-isp0-capture2"
|
|
- source
|
|
- Low resolution YUV processed output from the ISP. The output of
|
|
this pad cannot have a resolution larger than the "bcm2835-isp0-capture1" pad in any dimension.
|
|
- :ref:`YUYV <V4L2-PIX-FMT-YUYV>`,
|
|
:ref:`YVYU <V4L2-PIX-FMT-YVYU>`,
|
|
:ref:`UYVY <V4L2-PIX-FMT-UYVY>`,
|
|
:ref:`VYUY <V4L2-PIX-FMT-VYUY>`.
|
|
:ref:`YUV420/YVU420 <V4L2-PIX-FMT-YUV420>`,
|
|
:ref:`NV12/NV21 <V4L2-PIX-FMT-NV12>`,
|
|
|
|
* - "bcm2835-isp0-capture1"
|
|
- source
|
|
- Image statistics calculated from the input image provided on the
|
|
"bcm2835-isp0-output0" pad. Statistics are only available for Bayer
|
|
format input images.
|
|
- :ref:`v4l2-meta-fmt-bcm2835-isp-stats`.
|
|
|
|
Pipeline Configuration
|
|
----------------------
|
|
|
|
The ISP pipeline can be configure through user-space by calling
|
|
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` on the “bcm2835-isp0-output0”
|
|
node with the appropriate parameters as shown in the table below.
|
|
|
|
.. tabularcolumns:: |p{2cm}|p{5.0cm}|
|
|
|
|
.. cssclass: longtable
|
|
|
|
.. flat-table::
|
|
|
|
* - *id*
|
|
- *Parameter*
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_CC_MATRIX``
|
|
- struct :c:type:`bcm2835_isp_custom_ccm`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_LENS_SHADING``
|
|
- struct :c:type:`bcm2835_isp_lens_shading`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL``
|
|
- struct :c:type:`bcm2835_isp_black_level`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_GEQ``
|
|
- struct :c:type:`bcm2835_isp_geq`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_GAMMA``
|
|
- struct :c:type:`bcm2835_isp_gamma`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_DENOISE``
|
|
- struct :c:type:`bcm2835_isp_denoise`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_SHARPEN``
|
|
- struct :c:type:`bcm2835_isp_sharpen`
|
|
|
|
* - ``V4L2_CID_USER_BCM2835_ISP_DPC``
|
|
- struct :c:type:`bcm2835_isp_dpc`
|
|
|
|
++++++++++++++++++++++++
|
|
Configuration Parameters
|
|
++++++++++++++++++++++++
|
|
|
|
.. kernel-doc:: include/uapi/linux/bcm2835-isp.h
|
|
:functions: bcm2835_isp_rational bcm2835_isp_ccm bcm2835_isp_custom_ccm
|
|
bcm2835_isp_gain_format bcm2835_isp_lens_shading
|
|
bcm2835_isp_black_level bcm2835_isp_geq bcm2835_isp_gamma
|
|
bcm2835_isp_denoise bcm2835_isp_sharpen
|
|
bcm2835_isp_dpc_mode bcm2835_isp_dpc
|