[PATCH 07/12] ipa: rkisp1: agc: Don't update histogram parameters unnecessarily

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jun 17 14:05:53 CEST 2024


On Mon, Jun 17, 2024 at 08:47:44PM +0900, Paul Elder wrote:
> On Sun, Jun 16, 2024 at 07:39:05PM +0300, Laurent Pinchart wrote:
> > The ISP histogram parameters depends on the AE metering mode, but not on
> > the other AE algorithm controls. The exposure mode, constraints mode and
> > frame duration limits influence the behaviour of the algorithm, but not
> > the histogram computation parameters. Update the histogram parameters
> > only when AE metering mode changes.
> > 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> >  src/ipa/rkisp1/algorithms/agc.cpp | 9 ++-------
> >  1 file changed, 2 insertions(+), 7 deletions(-)
> > 
> > diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
> > index 9dac60bdb24e..9f3b59b45f95 100644
> > --- a/src/ipa/rkisp1/algorithms/agc.cpp
> > +++ b/src/ipa/rkisp1/algorithms/agc.cpp
> > @@ -261,26 +261,21 @@ void Agc::queueRequest(IPAContext &context,
> >  	frameContext.agc.meteringMode = agc.meteringMode;
> >  
> >  	const auto &exposureMode = controls.get(controls::AeExposureMode);
> > -	if (exposureMode) {
> > -		frameContext.agc.update = agc.exposureMode != *exposureMode;
> 
> I wonder if this should be renamed to updateMetering or something like
> that? It's not a big deal at this point though I suppose.

Good idea. I'll send a patch on top.

> Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
> 
> > +	if (exposureMode)
> >  		agc.exposureMode =
> >  			static_cast<controls::AeExposureModeEnum>(*exposureMode);
> > -	}
> >  	frameContext.agc.exposureMode = agc.exposureMode;
> >  
> >  	const auto &constraintMode = controls.get(controls::AeConstraintMode);
> > -	if (constraintMode) {
> > -		frameContext.agc.update = agc.constraintMode != *constraintMode;
> > +	if (constraintMode)
> >  		agc.constraintMode =
> >  			static_cast<controls::AeConstraintModeEnum>(*constraintMode);
> > -	}
> >  	frameContext.agc.constraintMode = agc.constraintMode;
> >  
> >  	const auto &frameDurationLimits = controls.get(controls::FrameDurationLimits);
> >  	if (frameDurationLimits) {
> >  		utils::Duration maxShutterSpeed =
> >  			std::chrono::milliseconds((*frameDurationLimits).back());
> > -		frameContext.agc.update = agc.maxShutterSpeed != maxShutterSpeed;
> >  		agc.maxShutterSpeed = maxShutterSpeed;
> >  	}
> >  	frameContext.agc.maxShutterSpeed = agc.maxShutterSpeed;

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list