| Related |
show
-
[RFC,v4,00/23] ipa: libipa: agc: Take exposure margin into account
-
[RFC,v4,01/23] libcamera: controls: AeExposureMode: Add ExposureMaximize
-
[RFC,v4,02/23] ipa: libipa: agc: Change `AgcMSV` exposure mode
-
[RFC,v4,03/23] ipa: libipa: exposure_mode_helper: Remove defaulted destructor
-
[RFC,v4,04/23] ipa: libipa: exposure_mode_helper: Keep stage params together
-
[RFC,v4,05/23] ipa: libipa: exposure_mode_helper: Remove limit getters
-
[RFC,v4,06/23] ipa: libipa: exposure_mode_helper: Move `stageGain` variable
-
[RFC,v4,07/23] ipa: libipa: agc: Move tuning file parsing
-
[RFC,v4,08/23] ipa: libipa: agc: Initialize "Maximize" mode when none given
-
[RFC,v4,09/23] ipa: libipa: exposure_mode_helper: Consider last stage as hard-limit
-
[RFC,v4,10/23] ipa: libipa: agc: Do not report auto controls if not available
-
[RFC,v4,11/23] ipa: libipa: agc: Keep frame duration limits ordered
-
[RFC,v4,12/23] ipa: libipa: agc: Retrieve `FrameDurationLimits` earlier
-
[RFC,v4,13/23] ipa: libipa: agc: Report `FrameDurationLimits`
-
[RFC,v4,14/23] ipa: libipa: agc: Calculate vblank and frame duration sooner
-
[RFC,v4,15/23] ipa: libipa: agc: Better respect frame duration limits
-
[RFC,v4,16/23] ipa: libipa: agc: Take parameters from active state for calculation
-
[RFC,v4,17/23] libcamera: pipeline: Set vblank on more platforms
-
[RFC,v4,18/23] ipa: libipa: agc: Rework frame duration limit calculation
-
[RFC,v4,19/23] ipa: camera_sensor_helper: Introduce exposure margin
-
[RFC,v4,20/23] ipa: libipa: agc: Move control info map setup
-
[RFC,v4,21/23] ipa: libipa: agc: Do not run faster than 30 fps by default
-
[RFC,v4,22/23] ipa: libipa: agc: Do not run slower than 15fps by default
-
[RFC,v4,23/23] ipa: libipa: agc: Take exposure margin into account
|
The maximum available exposure depends on the frame duration, but this is not considered by the current agc implementation, it fixes the maximum exposure time based on whatever configuration was used to configure the algorithm. This means that in certain situations the full exposure range might not be used, even in dark scenes. This a third attempt at adapting https://patchwork.libcamera.org/project/libcamera/list/?series=5590 on the current master branch. But now that the agc handling is largely unified, fewer changes are needed to make this work on every platform. So effectively only patch 7 is taken directly, but only the exposure margin introduction part of it. This was mainly tested on rkisp1+imx219, softisp+ov2740, rppx1+imx708. changes in v4: * only add "maximize" exposure mode * it is "overridable" by the tuning file * only added implicitly if the tuning file has no stages * keep frame duration below 30 fps by default * keep frame duration above 15 fps by default if no stages are provided changes in v3: * last stage is hard limit * two new exposure modes: "maximize", "minimize" * no slower than 10 fps changes in v2: * report `FrameDurationLimits` in metadata * add exposure margin to more sensor helpers v3: https://patchwork.libcamera.org/cover/28367/ v2: https://patchwork.libcamera.org/cover/28367/ v1: https://patchwork.libcamera.org/cover/28111/ Barnabás Pőcze (22): libcamera: controls: AeExposureMode: Add ExposureMaximize ipa: libipa: agc: Change `AgcMSV` exposure mode ipa: libipa: exposure_mode_helper: Remove defaulted destructor ipa: libipa: exposure_mode_helper: Keep stage params together ipa: libipa: exposure_mode_helper: Remove limit getters ipa: libipa: exposure_mode_helper: Move `stageGain` variable ipa: libipa: agc: Move tuning file parsing ipa: libipa: agc: Initialize "Maximize" mode when none given ipa: libipa: exposure_mode_helper: Consider last stage as hard-limit ipa: libipa: agc: Do not report auto controls if not available ipa: libipa: agc: Keep frame duration limits ordered ipa: libipa: agc: Retrieve `FrameDurationLimits` earlier ipa: libipa: agc: Report `FrameDurationLimits` ipa: libipa: agc: Calculate vblank and frame duration sooner ipa: libipa: agc: Better respect frame duration limits ipa: libipa: agc: Take parameters from active state for calculation libcamera: pipeline: Set vblank on more platforms ipa: libipa: agc: Rework frame duration limit calculation ipa: libipa: agc: Move control info map setup ipa: libipa: agc: Do not run faster than 30 fps by default ipa: libipa: agc: Do not run slower than 15fps by default ipa: libipa: agc: Take exposure margin into account Jacopo Mondi (1): ipa: camera_sensor_helper: Introduce exposure margin src/ipa/ipu3/algorithms/agc.cpp | 2 +- src/ipa/ipu3/ipu3.cpp | 3 +- src/ipa/libipa/agc.cpp | 571 ++++++++++++++----- src/ipa/libipa/agc.h | 22 +- src/ipa/libipa/agc_mean_luminance.cpp | 246 +------- src/ipa/libipa/agc_mean_luminance.h | 22 +- src/ipa/libipa/camera_sensor_helper.cpp | 68 +++ src/ipa/libipa/camera_sensor_helper.h | 2 + src/ipa/libipa/exposure_mode_helper.cpp | 78 +-- src/ipa/libipa/exposure_mode_helper.h | 18 +- src/ipa/mali-c55/algorithms/agc.cpp | 2 +- src/ipa/mali-c55/mali-c55.cpp | 3 +- src/ipa/rkisp1/algorithms/agc.cpp | 2 +- src/ipa/rkisp1/rkisp1.cpp | 4 +- src/ipa/softisp/algorithms/agc.cpp | 2 +- src/ipa/softisp/softisp.cpp | 3 +- src/libcamera/control_ids_core.yaml | 19 + src/libcamera/pipeline/ipu3/ipu3.cpp | 1 + src/libcamera/pipeline/mali-c55/mali-c55.cpp | 1 + src/libcamera/pipeline/simple/simple.cpp | 1 + 20 files changed, 606 insertions(+), 464 deletions(-) -- 2.56.0