[PATCH 2/2] ipa: rkisp1: agc: Set measurement window to full frame

Stefan Klug stefan.klug at ideasonboard.com
Tue Mar 25 14:57:26 CET 2025


Hi Kieran,

Thank you for the review. 

On Tue, Mar 25, 2025 at 10:19:54AM +0000, Kieran Bingham wrote:
> Quoting Stefan Klug (2025-03-19 16:01:37)
> > With the availability of metering modes and the corresponding weights,
> > there is a flexible way of defining the area that gets taken into
> > account when AEGC is calculated. There is no need to reduce that window
> > to an arbitrary region anymore. If need arises we can make this
> > parameter user configurable or add a control for it.
> > 
> > Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> > ---
> >  src/ipa/rkisp1/algorithms/agc.cpp | 12 ++++--------
> >  1 file changed, 4 insertions(+), 8 deletions(-)
> > 
> > diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
> > index 101cad5d0893..b3ac9400b74f 100644
> > --- a/src/ipa/rkisp1/algorithms/agc.cpp
> > +++ b/src/ipa/rkisp1/algorithms/agc.cpp
> > @@ -193,14 +193,10 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
> >         context.activeState.agc.minFrameDuration = std::chrono::microseconds(frameDurationLimits.min().get<int64_t>());
> >         context.activeState.agc.maxFrameDuration = std::chrono::microseconds(frameDurationLimits.max().get<int64_t>());
> >  
> > -       /*
> > -        * Define the measurement window for AGC as a centered rectangle
> > -        * covering 3/4 of the image width and height.
> > -        */
> 
> Do the existing weights already match this? Where are the weights
> currently coming from for this ? Are they filled in from the tuning file
> generator ? or is there a default somewhere?

Yes, the weights come from the tuning file generator. This code here
dates back to 2022 8917c9e7ba64 ("ipa: rkisp1: agc: Add a
histogram-based gain") and I believe the intention was to add a bit of a
spot measurement. We should have changed it when the metering modes were
added. You are right, the behavior of existing cameras with existing
tuning files change a bit. So we should strive for updated tuning files
in the near future. We could add the default metering modes to all
existing tuning files in a follow up patch.

Cheers,
Stefan

> 
> > -       context.configuration.agc.measureWindow.h_offs = configInfo.outputSize.width / 8;
> > -       context.configuration.agc.measureWindow.v_offs = configInfo.outputSize.height / 8;
> > -       context.configuration.agc.measureWindow.h_size = 3 * configInfo.outputSize.width / 4;
> > -       context.configuration.agc.measureWindow.v_size = 3 * configInfo.outputSize.height / 4;
> > +       context.configuration.agc.measureWindow.h_offs = 0;
> > +       context.configuration.agc.measureWindow.v_offs = 0;
> > +       context.configuration.agc.measureWindow.h_size = configInfo.outputSize.width;
> > +       context.configuration.agc.measureWindow.v_size = configInfo.outputSize.height;
> >  
> >         setLimits(context.configuration.sensor.minExposureTime,
> >                   context.configuration.sensor.maxExposureTime,
> > -- 
> > 2.43.0
> >


More information about the libcamera-devel mailing list