| Related |
show
-
[RFC,v2,00/43] ipa: libipa: agc rework
-
[RFC,v2,01/43] libcamera: software_isp: init(): Fix documentation typo
-
[RFC,v2,02/43] ipa: simple: Remove control presence sanity check
-
[RFC,v2,03/43] ipa: simple: agc: Do not overwrite sensor exposure/gain
-
[RFC,v2,04/43] ipa: rkisp1: Remove `IPASessionConfiguration::sensor.defVBlank`
-
[RFC,v2,05/43] ipa: libipa: agc_mean_luminance: Remove the need for inheritance
-
[RFC,v2,06/43] ipa: rkisp1: Move sensor control info map to context
-
[RFC,v2,07/43] ipa: rkisp1: Update sensor info when configuring
-
[RFC,v2,08/43] ipa: rkisp1: updateControls(): Use sensor info from context
-
[RFC,v2,09/43] ipa: rkisp1: Move AGC related controls into AGC algorithm
-
[RFC,v2,10/43] ipa: mali-c55: Remove `DigitalGain` support
-
[RFC,v2,11/43] ipa: libipa: agc_mean_luminance: Avoid some duplicate lookups
-
[RFC,v2,12/43] ipa: libipa: agc_mean_luminance: Remove unnecessary `std::shared_ptr`
-
[RFC,v2,13/43] ipa: libipa: agc_mean_luminance: calculateNewEv(): Fix typo
-
[RFC,v2,14/43] ipa: libipa: agc_mean_luminance: calculateNewEv(): Collect params
-
[RFC,v2,15/43] ipa: libipa: agc_mean_luminance: constraintClampGain(): Mark `const`
-
[RFC,v2,16/43] ipa: libipa: agc_mean_luminance: calculateNewEv(): Collect results
-
[RFC,v2,17/43] ipa: libipa: agc_mean_luminance: calculateNewEv(): Return y target
-
[RFC,v2,18/43] ipa: libipa: agc_mean_luminance: Remove persistent params
-
[RFC,v2,19/43] ipa: libipa: agc_mean_luminance: Reset `filteredExposure_` when configuring
-
[RFC,v2,20/43] ipa: Simplify sensor exposure/gain setting/getting
-
[RFC,v2,21/43] ipa: libipa: Add `AgcAlgorithm`
-
[RFC,v2,22/43] ipa: libipa: agc: Clamp exposure value
-
[RFC,v2,23/43] ipa: libipa: agc: Adjust debug messages slightly
-
[RFC,v2,24/43] ipa: libipa: agc: Use full range as default `FrameDurationLimits`
-
[RFC,v2,25/43] ipa: libipa: agc: Use default exposure
-
[RFC,v2,26/43] ipa: rkisp1: agc: Port to `AgcAlgorithm`
-
[RFC,v2,27/43] ipa: mali-c55: agc: Port to `AgcAlgorithm`
-
[RFC,v2,28/43] ipa: ipu3: agc: Port to `AgcAlgorithm`
-
[RFC,v2,29/43] ipa: libipa: agc_mean_luminance: Remove control handling
-
[RFC,v2,30/43] ipa: libipa: histogram: total(): Use `back()`
-
[RFC,v2,31/43] ipa: libipa: histogram: Add `operator[]` to query bin
-
[RFC,v2,32/43] ipa: simple: Store exposure as `uint32_t`
-
[RFC,v2,33/43] ipa: simple: agc: Separate MSV calculation
-
[RFC,v2,34/43] ipa: simple: agc: Simplify min gain step handling
-
[RFC,v2,35/43] ipa: simple: agc: Use `Histogram`
-
[RFC,v2,36/43] ipa: simple: agc: Adjust histogram for black level
-
[RFC,v2,37/43] ipa: simple: agc: Move to libipa
-
[RFC,v2,38/43] ipa: libipa: agc_msv: Ensure limits are always respected
-
[RFC,v2,39/43] ipa: libipa: agc_msv: Handle min gain > 1.0 case
-
[RFC,v2,40/43] ipa: simple: Move sensor helper and controls to context
-
[RFC,v2,41/43] ipa: simple: Update controls after configuration
-
[RFC,v2,42/43] ipa: libipa: agc: Work without `CameraSensorHelper`
-
[RFC,v2,43/43] ipa: simple: agc: Port to `AgcAlgorithm`
|
Unfortunately the first version did not work out because there is a desire for at least some kind of rudimentary operation even without a CameraSensorHelper in the general algorithm. So this version 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 version, 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. v1: https://patchwork.libcamera.org/cover/27179/ Barnabás Pőcze (43): 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: Clamp exposure value ipa: libipa: agc: Adjust debug messages slightly ipa: libipa: agc: Use full range as default `FrameDurationLimits` ipa: libipa: agc: Use default exposure 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: simple: agc: Port to `AgcAlgorithm` .../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 | 141 +--- src/ipa/libipa/agc.cpp | 756 ++++++++++++++++++ src/ipa/libipa/agc.h | 152 ++++ src/ipa/libipa/agc_mean_luminance.cpp | 229 +++--- src/ipa/libipa/agc_mean_luminance.h | 58 +- 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 | 203 ++--- 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 | 127 +-- 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/simple/simple.cpp | 2 +- src/libcamera/software_isp/software_isp.cpp | 12 +- 35 files changed, 1871 insertions(+), 1651 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