[PATCH v3 00/23] Software ISP refactoring
Milan Zamazal
mzamazal at redhat.com
Wed Jul 17 10:54:21 CEST 2024
The purpose of this patch series is to bring software ISP code
structuring closer to the hardware pipelines. Most notably, the API
around algorithm.h is used now. This should make software ISP easier to
understand, extend, maintain, and code-share with the other pipelines.
What is omitted in the patch series:
- Any bigger or unrelated functional changes. The purpose of this
series is code restructuring, which is enough already.
- Stats and params buffers are still used in the original way. Making
their handling closer to the hardware pipelines will be a subject of
followup patches. This series is a preparation step for that.
- Any IPA code sharing with hardware pipelines. If there is an
opportunity for this, it can be addressed in followup patches.
Available in git at
https://gitlab.freedesktop.org/mzamazal/libcamera-softisp/-/commits/pdm-algorithm
Changes in v3:
- SoftwareIsp::queueRequest changed to async.
- IPAActiveState docstring reworded.
- Minor formatting fixes.
Changes in v2:
- Several cosmetic changes and patch arrangement problems pointed out by
Umang applied.
- Added ipa_context.cpp, as a documentation file for ipa_context.h.
- Added a clarification source comment why SoftwareIsp::queueBuffers needs
to get the frame number as a separate argument.
- core_ipa_interface.h no longer included in module.h.
- The context used by "14/19 Move black level to an algorithm module"
was changed and the black level changes tracking was put closer to the
pre-refactoring version, which makes more sense.
Milan Zamazal (19):
libcamera: software_isp: Remove superfluous includes
libcamera: software_isp: Move BlackLevel to libcamera::ipa::soft
libcamera: simple: Fix a typo in a doc string
libcamera: software_isp: Define skeletons for IPA refactoring
libcamera: software_isp: Let IPASoftSimple inherit Module
libcamera: software_isp: Make stats frame and buffer aware
libcamera: software_isp: Remove final dots in debayer.cpp docstrings
libcamera: software_isp: Track and pass frame ids
libcamera: software_isp: Create algorithms
libcamera: software_isp: Call Algorithm::configure
libcamera: software_isp: Call Algorithm::queueRequest
libcamera: software_isp: Call Algorithm::prepare
libcamera: software_isp: Call Algorithm::process
libcamera: software_isp: Move black level to an algorithm module
libcamera: software_isp: Move color handling to an algorithm module
libcamera: software_isp: Use floating point for color parameters
libcamera: software_isp: Use DelayedControls
libcamera: software_isp: Move exposure+gain to an algorithm module
libcamera: software_isp: Update black level only on exposure changes
Umang Jain (4):
libcamera: rkisp1: Drop base IPA headers inclusion
libcamera: ipa: ipu3: Drop ipa_interface.h header
libcamera: vimc: Drop ipa_interface.h header
libcamera: ipa: soft_simple: Drop ipa_interface.h header
.../internal/software_isp/software_isp.h | 15 +-
include/libcamera/ipa/soft.mojom | 10 +-
src/ipa/ipu3/ipu3.cpp | 1 -
src/ipa/rkisp1/rkisp1.cpp | 1 -
src/ipa/simple/algorithms/agc.cpp | 139 +++++++++
src/ipa/simple/algorithms/agc.h | 36 +++
src/ipa/simple/algorithms/algorithm.h | 22 ++
src/ipa/simple/algorithms/blc.cpp | 78 +++++
src/ipa/simple/algorithms/blc.h | 41 +++
src/ipa/simple/algorithms/colors.cpp | 123 ++++++++
src/ipa/simple/algorithms/colors.h | 46 +++
src/ipa/simple/algorithms/meson.build | 7 +
src/ipa/simple/black_level.cpp | 88 ------
src/ipa/simple/black_level.h | 29 --
src/ipa/simple/data/uncalibrated.yaml | 4 +
src/ipa/simple/ipa_context.cpp | 102 +++++++
src/ipa/simple/ipa_context.h | 67 ++++
src/ipa/simple/meson.build | 9 +-
src/ipa/simple/module.h | 30 ++
src/ipa/simple/soft_simple.cpp | 285 ++++++------------
src/ipa/vimc/vimc.cpp | 1 -
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 1 -
src/libcamera/pipeline/simple/simple.cpp | 47 ++-
src/libcamera/pipeline/vimc/vimc.cpp | 1 -
src/libcamera/software_isp/TODO | 39 ---
src/libcamera/software_isp/debayer.cpp | 51 ++--
src/libcamera/software_isp/debayer.h | 2 +-
src/libcamera/software_isp/debayer_cpu.cpp | 9 +-
src/libcamera/software_isp/debayer_cpu.h | 2 +-
src/libcamera/software_isp/software_isp.cpp | 43 ++-
src/libcamera/software_isp/swstats_cpu.cpp | 4 +-
src/libcamera/software_isp/swstats_cpu.h | 4 +-
32 files changed, 908 insertions(+), 429 deletions(-)
create mode 100644 src/ipa/simple/algorithms/agc.cpp
create mode 100644 src/ipa/simple/algorithms/agc.h
create mode 100644 src/ipa/simple/algorithms/algorithm.h
create mode 100644 src/ipa/simple/algorithms/blc.cpp
create mode 100644 src/ipa/simple/algorithms/blc.h
create mode 100644 src/ipa/simple/algorithms/colors.cpp
create mode 100644 src/ipa/simple/algorithms/colors.h
create mode 100644 src/ipa/simple/algorithms/meson.build
delete mode 100644 src/ipa/simple/black_level.cpp
delete mode 100644 src/ipa/simple/black_level.h
create mode 100644 src/ipa/simple/ipa_context.cpp
create mode 100644 src/ipa/simple/ipa_context.h
create mode 100644 src/ipa/simple/module.h
--
2.44.1
More information about the libcamera-devel
mailing list