← Documents Documentation/admin-guide/media/raspberrypi-pisp-be.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Media

Raspberry Pi PiSP Back End

PiSP Back End memory-to-memory ISP의 tile 처리, V4L2/Media Controller graph, TDN·HDR feedback queue와 configuration buffer를 설명합니다.

Source pathDocumentation/admin-guide/media/raspberrypi-pisp-be.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

PiSP BE data flow

raspberrypi-pisp-be.rst:1-109

PiSP BE는 DRAM의 input image와 configuration buffer를 받아 tile 기반 processing을 수행하고 두 일반 output, temporal denoise feedback, HDR stitching feedback을 각각 video queue로 노출합니다. Userspace는 feedback output buffer를 대응 input queue로 되돌려야 합니다.

NodeDeviceQueue direction용도
pispbe-input/dev/video0outputISP 처리 대상 image 입력
pispbe-tdn_input/dev/video1outputTemporal denoise 이전 frame 입력
pispbe-stitch_input/dev/video2outputHDR stitching 이전 frame 입력
pispbe-output0/dev/video3capture첫 번째 처리 image 출력
pispbe-output1/dev/video4capture두 번째 처리 image 출력
pispbe-tdn_output/dev/video5captureTemporal denoise frame 출력
pispbe-stitch_output/dev/video6captureHDR stitching frame 출력
pispbe-config/dev/video7outputISP configuration parameter 입력

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =========================================================
4 Raspberry Pi PiSP Back End Memory-to-Memory ISP (pisp-be)
5 =========================================================
6
7 The PiSP Back End
8 =================
9
10 The PiSP Back End is a memory-to-memory Image Signal Processor (ISP) which reads
11 image data from DRAM memory and performs image processing as specified by the
12 application through the parameters in a configuration buffer, before writing
13 pixel data back to memory through two distinct output channels.
14
15 The ISP registers and programming model are documented in the `Raspberry Pi
16 Image Signal Processor (PiSP) Specification document`_
17
18 The PiSP Back End ISP processes images in tiles. The handling of image
19 tessellation and the computation of low-level configuration parameters is
20 realized by a free software library called `libpisp
21 <https://github.com/raspberrypi/libpisp>`_.
22
23 The full image processing pipeline, which involves capturing RAW Bayer data from
24 an image sensor through a MIPI CSI-2 compatible capture interface, storing them
25 in DRAM memory and processing them in the PiSP Back End to obtain images usable
26 by an application is implemented in `libcamera <https://libcamera.org>`_ as
27 part of the Raspberry Pi platform support.
28
29 The pisp-be driver
30 ==================
31
32 The Raspberry Pi PiSP Back End (pisp-be) driver is located under
33 drivers/media/platform/raspberrypi/pisp-be. It uses the `V4L2 API` to register
34 a number of video capture and output devices, the `V4L2 subdev API` to register
35 a subdevice for the ISP that connects the video devices in a single media graph
36 realized using the `Media Controller (MC) API`.
37
38 The media topology registered by the `pisp-be` driver is represented below:
39
40 .. _pips-be-topology:
41
42 .. kernel-figure:: raspberrypi-pisp-be.dot
43 :alt: Diagram of the default media pipeline topology
44 :align: center
45
46
47 The media graph registers the following video device nodes:
48
49 - pispbe-input: output device for images to be submitted to the ISP for
50 processing.
51 - pispbe-tdn_input: output device for temporal denoise.
52 - pispbe-stitch_input: output device for image stitching (HDR).
53 - pispbe-output0: first capture device for processed images.
54 - pispbe-output1: second capture device for processed images.
55 - pispbe-tdn_output: capture device for temporal denoise.
56 - pispbe-stitch_output: capture device for image stitching (HDR).
57 - pispbe-config: output device for ISP configuration parameters.
58
59 pispbe-input
60 ------------
61
62 Images to be processed by the ISP are queued to the `pispbe-input` output device
63 node. For a list of image formats supported as input to the ISP refer to the
64 `Raspberry Pi Image Signal Processor (PiSP) Specification document`_.
65
66 pispbe-tdn_input, pispbe-tdn_output
67 -----------------------------------
68
69 The `pispbe-tdn_input` output video device receives images to be processed by
70 the temporal denoise block which are captured from the `pispbe-tdn_output`
71 capture video device. Userspace is responsible for maintaining queues on both
72 devices, and ensuring that buffers completed on the output are queued to the
73 input.
74
75 pispbe-stitch_input, pispbe-stitch_output
76 -----------------------------------------
77
78 To realize HDR (high dynamic range) image processing the image stitching and
79 tonemapping blocks are used. The `pispbe-stitch_output` writes images to memory
80 and the `pispbe-stitch_input` receives the previously written frame to process
81 it along with the current input image. Userspace is responsible for maintaining
82 queues on both devices, and ensuring that buffers completed on the output are
83 queued to the input.
84
85 pispbe-output0, pispbe-output1
86 ------------------------------
87
88 The two capture devices write to memory the pixel data as processed by the ISP.
89
90 pispbe-config
91 -------------
92
93 The `pispbe-config` output video devices receives a buffer of configuration
94 parameters that define the desired image processing to be performed by the ISP.
95
96 The format of the ISP configuration parameter is defined by
97 :c:type:`pisp_be_tiles_config` C structure and the meaning of each parameter is
98 described in the `Raspberry Pi Image Signal Processor (PiSP) Specification
99 document`_.
100
101 ISP configuration
102 =================
103
104 The ISP configuration is described solely by the content of the parameters
105 buffer. The only parameter that userspace needs to configure using the V4L2 API
106 is the image format on the output and capture video devices for validation of
107 the content of the parameters buffer.
108
109 .. _Raspberry Pi Image Signal Processor (PiSP) Specification document: https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf
110

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

PiSP Back End 개요

1-28

PiSP Back End는 DRAM memory에서 image data를 읽는 memory-to-memory Image Signal Processor(ISP)입니다. Application이 configuration buffer의 parameter로 지정한 image processing을 수행한 뒤, 서로 구분된 두 output channel을 통해 pixel data를 memory에 다시 기록합니다.

ISP register와 programming model은 Raspberry Pi Image Signal Processor(PiSP) Specification document(https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf)에 설명되어 있습니다.

PiSP Back End ISP는 image를 tile 단위로 처리합니다. Image tessellation 처리와 low-level configuration parameter 계산은 free software library인 libpisp(https://github.com/raspberrypi/libpisp)가 담당합니다.

전체 image processing pipeline은 MIPI CSI-2 compatible capture interface로 image sensor의 RAW Bayer data를 capture하고, 이를 DRAM memory에 저장한 뒤, application이 사용할 수 있는 image를 얻도록 PiSP Back End에서 처리합니다. 이 pipeline은 Raspberry Pi platform 지원의 일부로 libcamera(https://libcamera.org)에 구현되어 있습니다.

pisp-be driver와 media graph

29-46

Raspberry Pi PiSP Back End(`pisp-be`) driver는 `drivers/media/platform/raspberrypi/pisp-be`에 있습니다. 이 driver는 `V4L2 API`로 여러 video capture/output device를 등록하고, `V4L2 subdev API`로 ISP subdevice를 등록합니다. ISP subdevice는 `Media Controller (MC) API`로 구성한 하나의 media graph에서 video device들을 연결합니다.

원문의 `raspberrypi-pisp-be.dot` graph는 `pispbe` entity의 input port 0, 1, 2, 7과 output port 3, 4, 5, 6에 여덟 video node가 연결된 기본 topology를 나타냅니다.

PiSP Back End media topology
pispbe-input /dev/video0pispbe port 0ISP processingpispbe-output0 /dev/video3
pispbe-input /dev/video0pispbe port 0ISP processingpispbe-output1 /dev/video4
pispbe-tdn_input /dev/video1pispbe port 1Temporal denoisepispbe-tdn_output /dev/video5
pispbe-stitch_input /dev/video2pispbe port 2HDR stitchingpispbe-stitch_output /dev/video6
pispbe-config /dev/video7pispbe port 7Configuration parameters

DOT 원본의 `/dev/video0-7` mapping과 각 processing path를 구조화했습니다. `pispbe-config`는 pixel stream이 아니라 ISP parameter buffer를 공급합니다.

등록되는 video device node

47-58
NodeDeviceQueue direction용도
pispbe-input/dev/video0outputISP 처리 대상 image 입력
pispbe-tdn_input/dev/video1outputTemporal denoise 이전 frame 입력
pispbe-stitch_input/dev/video2outputHDR stitching 이전 frame 입력
pispbe-output0/dev/video3capture첫 번째 처리 image 출력
pispbe-output1/dev/video4capture두 번째 처리 image 출력
pispbe-tdn_output/dev/video5captureTemporal denoise frame 출력
pispbe-stitch_output/dev/video6captureHDR stitching frame 출력
pispbe-config/dev/video7outputISP configuration parameter 입력

pispbe-input

59-65

ISP에서 처리할 image는 `pispbe-input` output device node에 queue합니다. ISP가 input으로 지원하는 image format 목록은 Raspberry Pi Image Signal Processor(PiSP) Specification document를 참고하십시오.

pispbe-tdn_input과 pispbe-tdn_output

66-74

`pispbe-tdn_input` output video device는 temporal denoise block이 처리할 image를 받으며, 처리 결과는 `pispbe-tdn_output` capture video device에서 capture됩니다. Userspace는 두 device의 queue를 모두 유지하고, output에서 완료된 buffer가 다시 input에 queue되도록 해야 합니다.

pispbe-stitch_input과 pispbe-stitch_output

75-84

HDR(high dynamic range) image processing은 image stitching과 tonemapping block으로 구현합니다. `pispbe-stitch_output`은 image를 memory에 기록하고, `pispbe-stitch_input`은 앞서 기록한 frame을 받아 현재 input image와 함께 처리합니다. Userspace는 두 device의 queue를 유지하고, output에서 완료된 buffer를 input에 queue해야 합니다.

pispbe-output0과 pispbe-output1

85-89

두 capture device는 ISP가 처리한 pixel data를 memory에 기록합니다.

pispbe-config

90-100

`pispbe-config` output video device는 ISP가 수행할 image processing을 정의하는 configuration parameter buffer를 받습니다.

ISP configuration parameter format은 `pisp_be_tiles_config` C structure로 정의되며, 각 parameter의 의미는 Raspberry Pi Image Signal Processor(PiSP) Specification document에 설명되어 있습니다.

ISP configuration

101-109

ISP configuration은 오직 parameter buffer의 내용으로 설명됩니다. Userspace가 `V4L2 API`로 설정해야 하는 유일한 parameter는 output/capture video device의 image format이며, 이는 parameter buffer 내용의 validation에 사용됩니다.