| Related |
show
-
[RFC,v3,00/50] ipa: libipa: agc rework
-
[RFC,v3,01/50] libcamera: software_isp: init(): Fix documentation typo
-
[RFC,v3,02/50] ipa: simple: Remove control presence sanity check
-
[RFC,v3,03/50] ipa: simple: agc: Do not overwrite sensor exposure/gain
-
[RFC,v3,04/50] ipa: rkisp1: Remove `IPASessionConfiguration::sensor.defVBlank`
-
[RFC,v3,05/50] ipa: libipa: agc_mean_luminance: Remove the need for inheritance
-
[RFC,v3,06/50] ipa: rkisp1: Move sensor control info map to context
-
[RFC,v3,07/50] ipa: rkisp1: Update sensor info when configuring
-
[RFC,v3,08/50] ipa: rkisp1: updateControls(): Use sensor info from context
-
[RFC,v3,09/50] ipa: rkisp1: Move AGC related controls into AGC algorithm
-
[RFC,v3,10/50] ipa: mali-c55: Remove `DigitalGain` support
-
[RFC,v3,11/50] ipa: libipa: agc_mean_luminance: Avoid some duplicate lookups
-
[RFC,v3,12/50] ipa: libipa: agc_mean_luminance: Remove unnecessary `std::shared_ptr`
-
[RFC,v3,13/50] ipa: libipa: agc_mean_luminance: calculateNewEv(): Fix typo
-
[RFC,v3,14/50] ipa: libipa: agc_mean_luminance: calculateNewEv(): Collect params
-
[RFC,v3,15/50] ipa: libipa: agc_mean_luminance: constraintClampGain(): Mark `const`
-
[RFC,v3,16/50] ipa: libipa: agc_mean_luminance: calculateNewEv(): Collect results
-
[RFC,v3,17/50] ipa: libipa: agc_mean_luminance: calculateNewEv(): Return y target
-
[RFC,v3,18/50] ipa: libipa: agc_mean_luminance: Remove persistent params
-
[RFC,v3,19/50] ipa: libipa: agc_mean_luminance: Reset `filteredExposure_` when configuring
-
[RFC,v3,20/50] ipa: Simplify sensor exposure/gain setting/getting
-
[RFC,v3,21/50] ipa: libipa: Add `AgcAlgorithm`
-
[RFC,v3,22/50] ipa: libipa: agc: Omit `setLimits()` in `configure()`
-
[RFC,v3,23/50] ipa: libipa: agc: Use default exposure
-
[RFC,v3,24/50] ipa: libipa: agc: Use full range as default `FrameDurationLimits`
-
[RFC,v3,25/50] ipa: libipa: agc: Adjust debug messages slightly
-
[RFC,v3,26/50] ipa: libipa: agc: Store digital gain
-
[RFC,v3,27/50] ipa: libipa: agc: Use minimum line length
-
[RFC,v3,28/50] ipa: libipa: agc: Fix multiplication type
-
[RFC,v3,29/50] ipa: libipa: agc: Calculate vblank and frame duration sooner
-
[RFC,v3,30/50] ipa: rkisp1: agc: Port to `AgcAlgorithm`
-
[RFC,v3,31/50] ipa: mali-c55: agc: Port to `AgcAlgorithm`
-
[RFC,v3,32/50] ipa: ipu3: agc: Port to `AgcAlgorithm`
-
[RFC,v3,33/50] ipa: libipa: agc_mean_luminance: Remove control handling
-
[RFC,v3,34/50] ipa: libipa: histogram: total(): Use `back()`
-
[RFC,v3,35/50] ipa: libipa: histogram: Add `operator[]` to query bin
-
[RFC,v3,36/50] ipa: simple: Store exposure as `uint32_t`
-
[RFC,v3,37/50] ipa: simple: agc: Separate MSV calculation
-
[RFC,v3,38/50] ipa: simple: agc: Simplify min gain step handling
-
[RFC,v3,39/50] ipa: simple: agc: Use `Histogram`
-
[RFC,v3,40/50] ipa: simple: agc: Adjust histogram for black level
-
[RFC,v3,41/50] ipa: simple: agc: Move to libipa
-
[RFC,v3,42/50] ipa: libipa: agc_msv: Ensure limits are always respected
-
[RFC,v3,43/50] ipa: libipa: agc_msv: Handle min gain > 1.0 case
-
[RFC,v3,44/50] ipa: simple: Move sensor helper and controls to context
-
[RFC,v3,45/50] ipa: simple: Update controls after configuration
-
[RFC,v3,46/50] ipa: libipa: agc: Work without `CameraSensorHelper`
-
[RFC,v3,47/50] ipa: libipa: agc: Take parameters from active state for calculation
-
[RFC,v3,48/50] ipa: simple: agc: Port to `AgcAlgorithm`
-
[RFC,v3,49/50] libcamera: pipeline: Set vblank on more platforms
-
[RFC,v3,50/50] ipa: libipa: agc_mean_luminance: Fold resetFrameCount() in configure()
|
This adds an `AgcAlgorithm` that is essentially a copy of the rkisp1 agc algorithm, only that it can either use AgcMeanLuminance or the agc algorithm from the simple ipa module (which is now moved into libipa). Similarly to the previous versions, the following ipa modules are converted: * ipu3 * mali-c55 * rkisp1 * simple This applies on top of the current master branch, not rebased on any of the libipa rework yet. Conflicts should be minimal. v2: https://patchwork.libcamera.org/cover/27449/ v1: https://patchwork.libcamera.org/cover/27179/ Barnabás Pőcze (49): libcamera: software_isp: init(): Fix documentation typo ipa: simple: Remove control presence sanity check ipa: simple: agc: Do not overwrite sensor exposure/gain ipa: rkisp1: Remove `IPASessionConfiguration::sensor.defVBlank` ipa: libipa: agc_mean_luminance: Remove the need for inheritance ipa: rkisp1: Move sensor control info map to context ipa: rkisp1: Update sensor info when configuring ipa: rkisp1: updateControls(): Use sensor info from context ipa: rkisp1: Move AGC related controls into AGC algorithm ipa: mali-c55: Remove `DigitalGain` support ipa: libipa: agc_mean_luminance: Avoid some duplicate lookups ipa: libipa: agc_mean_luminance: Remove unnecessary `std::shared_ptr` ipa: libipa: agc_mean_luminance: calculateNewEv(): Fix typo ipa: libipa: agc_mean_luminance: calculateNewEv(): Collect params ipa: libipa: agc_mean_luminance: constraintClampGain(): Mark `const` ipa: libipa: agc_mean_luminance: calculateNewEv(): Collect results ipa: libipa: agc_mean_luminance: calculateNewEv(): Return y target ipa: libipa: agc_mean_luminance: Remove persistent params ipa: libipa: agc_mean_luminance: Reset `filteredExposure_` when configuring ipa: Simplify sensor exposure/gain setting/getting ipa: libipa: Add `AgcAlgorithm` ipa: libipa: agc: Omit `setLimits()` in `configure()` ipa: libipa: agc: Use default exposure ipa: libipa: agc: Use full range as default `FrameDurationLimits` ipa: libipa: agc: Adjust debug messages slightly ipa: libipa: agc: Store digital gain ipa: libipa: agc: Use minimum line length ipa: libipa: agc: Fix multiplication type ipa: libipa: agc: Calculate vblank and frame duration sooner ipa: rkisp1: agc: Port to `AgcAlgorithm` ipa: mali-c55: agc: Port to `AgcAlgorithm` ipa: ipu3: agc: Port to `AgcAlgorithm` ipa: libipa: agc_mean_luminance: Remove control handling ipa: libipa: histogram: total(): Use `back()` ipa: libipa: histogram: Add `operator[]` to query bin ipa: simple: Store exposure as `uint32_t` ipa: simple: agc: Separate MSV calculation ipa: simple: agc: Simplify min gain step handling ipa: simple: agc: Use `Histogram` ipa: simple: agc: Adjust histogram for black level ipa: simple: agc: Move to libipa ipa: libipa: agc_msv: Ensure limits are always respected ipa: libipa: agc_msv: Handle min gain > 1.0 case ipa: simple: Move sensor helper and controls to context ipa: simple: Update controls after configuration ipa: libipa: agc: Work without `CameraSensorHelper` ipa: libipa: agc: Take parameters from active state for calculation ipa: simple: agc: Port to `AgcAlgorithm` libcamera: pipeline: Set vblank on more platforms Jacopo Mondi (1): ipa: libipa: agc_mean_luminance: Fold resetFrameCount() in configure() .../internal/software_isp/software_isp.h | 3 +- include/libcamera/ipa/soft.mojom | 2 +- src/ipa/ipu3/algorithms/agc.cpp | 197 +++-- src/ipa/ipu3/algorithms/agc.h | 21 +- src/ipa/ipu3/ipa_context.cpp | 49 +- src/ipa/ipu3/ipa_context.h | 27 +- src/ipa/ipu3/ipu3.cpp | 138 +--- src/ipa/libipa/agc.cpp | 723 ++++++++++++++++++ src/ipa/libipa/agc.h | 160 ++++ src/ipa/libipa/agc_mean_luminance.cpp | 254 +++--- src/ipa/libipa/agc_mean_luminance.h | 61 +- src/ipa/libipa/agc_msv.cpp | 224 ++++++ src/ipa/libipa/agc_msv.h | 51 ++ src/ipa/libipa/exposure_mode_helper.cpp | 19 +- src/ipa/libipa/exposure_mode_helper.h | 11 +- src/ipa/libipa/histogram.cpp | 6 + src/ipa/libipa/histogram.h | 9 +- src/ipa/libipa/meson.build | 4 + src/ipa/mali-c55/algorithms/agc.cpp | 206 ++--- src/ipa/mali-c55/algorithms/agc.h | 9 +- src/ipa/mali-c55/ipa_context.h | 38 +- src/ipa/mali-c55/mali-c55.cpp | 165 +--- src/ipa/rkisp1/algorithms/agc.cpp | 460 +++-------- src/ipa/rkisp1/algorithms/agc.h | 15 +- src/ipa/rkisp1/algorithms/lux.cpp | 2 +- src/ipa/rkisp1/ipa_context.cpp | 104 +-- src/ipa/rkisp1/ipa_context.h | 50 +- src/ipa/rkisp1/rkisp1.cpp | 128 +--- src/ipa/simple/algorithms/agc.cpp | 226 ++---- src/ipa/simple/algorithms/agc.h | 15 +- src/ipa/simple/algorithms/blc.cpp | 12 + src/ipa/simple/ipa_context.h | 22 +- src/ipa/simple/soft_simple.cpp | 101 +-- src/libcamera/pipeline/ipu3/ipu3.cpp | 1 + src/libcamera/pipeline/mali-c55/mali-c55.cpp | 1 + src/libcamera/pipeline/simple/simple.cpp | 3 +- src/libcamera/software_isp/software_isp.cpp | 12 +- 37 files changed, 1853 insertions(+), 1676 deletions(-) create mode 100644 src/ipa/libipa/agc.cpp create mode 100644 src/ipa/libipa/agc.h create mode 100644 src/ipa/libipa/agc_msv.cpp create mode 100644 src/ipa/libipa/agc_msv.h -- 2.55.0