€• WŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ9/translations/zh_CN/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/zh_TW/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/it_IT/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/ja_JP/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/ko_KR/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/pt_BR/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ9/translations/sp_SP/admin-guide/media/raspberrypi-pisp-be”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/admin-guide/media/raspberrypi-pisp-be.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ9Raspberry Pi PiSP Back End Memory-to-Memory ISP (pisp-be)”h]”hŒ9Raspberry Pi PiSP Back End Memory-to-Memory ISP (pisp-be)”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒThe PiSP Back End”h]”hŒThe PiSP Back End”…””}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)”}”(hX+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.”h]”hX+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.”…””}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)”}”(hŒ‚The ISP registers and programming model are documented in the `Raspberry Pi Image Signal Processor (PiSP) Specification document`_”h]”(hŒ>The ISP registers and programming model are documented in the ”…””}”(hhþh²hh³Nh´NubhŒ reference”“”)”}”(hŒD`Raspberry Pi Image Signal Processor (PiSP) Specification document`_”h]”hŒARaspberry Pi Image Signal Processor (PiSP) Specification document”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒARaspberry Pi Image Signal Processor (PiSP) Specification document”Œrefuri”Œ_https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf”uh1jhhþŒresolved”Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)”}”(hŒð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 `_.”h]”(hŒ¼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 ”…””}”(hj!h²hh³Nh´Nubj)”}”(hŒ3`libpisp `_”h]”hŒlibpisp”…””}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œlibpisp”jŒ&https://github.com/raspberrypi/libpisp”uh1jhj!ubhŒtarget”“”)”}”(hŒ) ”h]”h}”(h]”Œlibpisp”ah ]”h"]”Œlibpisp”ah$]”h&]”Œrefuri”j9uh1j:Œ referenced”Khj!ubhŒ.”…””}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)”}”(hXgThe 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 `_ as part of the Raspberry Pi platform support.”h]”(hXThe 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 ”…””}”(hjTh²hh³Nh´Nubj)”}”(hŒ$`libcamera `_”h]”hŒ libcamera”…””}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ libcamera”jŒhttps://libcamera.org”uh1jhjTubj;)”}”(hŒ ”h]”h}”(h]”Œ libcamera”ah ]”h"]”Œ libcamera”ah$]”h&]”Œrefuri”jluh1j:jIKhjTubhŒ. as part of the Raspberry Pi platform support.”…””}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œthe-pisp-back-end”ah ]”h"]”Œthe pisp back end”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒThe pisp-be driver”h]”hŒThe pisp-be driver”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjŒh²hh³hÇh´Kubhï)”}”(hX_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`.”h]”(hŒyThe Raspberry Pi PiSP Back End (pisp-be) driver is located under drivers/media/platform/raspberrypi/pisp-be. It uses the ”…””}”(hjh²hh³Nh´NubhŒtitle_reference”“”)”}”(hŒ `V4L2 API`”h]”hŒV4L2 API”…””}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjubhŒ? to register a number of video capture and output devices, the ”…””}”(hjh²hh³Nh´Nubj¦)”}”(hŒ`V4L2 subdev API`”h]”hŒV4L2 subdev API”…””}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjubhŒp to register a subdevice for the ISP that connects the video devices in a single media graph realized using the ”…””}”(hjh²hh³Nh´Nubj¦)”}”(hŒ`Media Controller (MC) API`”h]”hŒMedia Controller (MC) API”…””}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjubhŒ.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hjŒh²hubhï)”}”(hŒKThe media topology registered by the `pisp-be` driver is represented below:”h]”(hŒ%The media topology registered by the ”…””}”(hjãh²hh³Nh´Nubj¦)”}”(hŒ `pisp-be`”h]”hŒpisp-be”…””}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjãubhŒ driver is represented below:”…””}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K&hjŒh²hubj;)”}”(hŒ.. _pips-be-topology:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œpips-be-topology”uh1j:h´K(hjŒh²hh³hÇubŒkfigure”Œ kernel_figure”“”)”}”(hhh]”hŒfigure”“”)”}”(hhh]”hŒimage”“”)”}”(hŒz.. kernel-figure:: raspberrypi-pisp-be.dot :alt: Diagram of the default media pipeline topology :align: center ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œalt”Œ.Diagram of the default media pipeline topology”Œuri”Œ)admin-guide/media/raspberrypi-pisp-be.dot”Œ candidates”}”Œ*”j)suh1jhjh³hÇh´Kubah}”(h]”h ]”h"]”h$]”h&]”Œalign”Œcenter”uh1jhjubah}”(h]”jah ]”h"]”Œpips-be-topology”ah$]”h&]”uh1jhjŒh²hh³hÇh´NŒexpect_referenced_by_name”}”j9jsŒexpect_referenced_by_id”}”jjsubhï)”}”(hŒ;The media graph registers the following video device nodes:”h]”hŒ;The media graph registers the following video device nodes:”…””}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K/hjŒh²hubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒQpispbe-input: output device for images to be submitted to the ISP for processing.”h]”hï)”}”(hŒQpispbe-input: output device for images to be submitted to the ISP for processing.”h]”hŒQpispbe-input: output device for images to be submitted to the ISP for processing.”…””}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K1hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ5pispbe-tdn_input: output device for temporal denoise.”h]”hï)”}”(hjoh]”hŒ5pispbe-tdn_input: output device for temporal denoise.”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K3hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ=pispbe-stitch_input: output device for image stitching (HDR).”h]”hï)”}”(hj†h]”hŒ=pispbe-stitch_input: output device for image stitching (HDR).”…””}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K4hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ:pispbe-output0: first capture device for processed images.”h]”hï)”}”(hjh]”hŒ:pispbe-output0: first capture device for processed images.”…””}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K5hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ;pispbe-output1: second capture device for processed images.”h]”hï)”}”(hj´h]”hŒ;pispbe-output1: second capture device for processed images.”…””}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K6hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ7pispbe-tdn_output: capture device for temporal denoise.”h]”hï)”}”(hjËh]”hŒ7pispbe-tdn_output: capture device for temporal denoise.”…””}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K7hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ?pispbe-stitch_output: capture device for image stitching (HDR).”h]”hï)”}”(hjâh]”hŒ?pispbe-stitch_output: capture device for image stitching (HDR).”…””}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K8hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´NubjT)”}”(hŒ?pispbe-config: output device for ISP configuration parameters. ”h]”hï)”}”(hŒ>pispbe-config: output device for ISP configuration parameters.”h]”hŒ>pispbe-config: output device for ISP configuration parameters.”…””}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K9hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jShjPh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jNh³hÇh´K1hjŒh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒ pispbe-input”h]”hŒ pispbe-input”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´Khjh²hubeh}”(h]”Œ pispbe-input”ah ]”h"]”Œ pispbe-input”ah$]”h&]”uh1hÈhjŒh²hh³hÇh´K