Message ID | 20240920183143.1674117-19-mzamazal@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Milan Thank you for the patch On 21/09/24 12:01 am, Milan Zamazal wrote: > The black level is likely to get updated, if ever, only after exposure > or gain changes. Don't compute its possible updates if exposure and > gain are unchanged. > > It's probably not worth trying to implement something more > sophisticated. Better to spend the effort on supporting tuning files. > > Signed-off-by: Milan Zamazal <mzamazal@redhat.com> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> > --- > src/ipa/simple/algorithms/blc.cpp | 9 ++++++++- > src/ipa/simple/algorithms/blc.h | 4 ++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp > index 755108b0..b9f2aaa6 100644 > --- a/src/ipa/simple/algorithms/blc.cpp > +++ b/src/ipa/simple/algorithms/blc.cpp > @@ -30,10 +30,15 @@ int BlackLevel::configure(IPAContext &context, > > void BlackLevel::process(IPAContext &context, > [[maybe_unused]] const uint32_t frame, > - [[maybe_unused]] IPAFrameContext &frameContext, > + IPAFrameContext &frameContext, > const SwIspStats *stats, > [[maybe_unused]] ControlList &metadata) > { > + if (frameContext.sensor.exposure == exposure_ && > + frameContext.sensor.gain == gain_) { > + return; > + } > + > const SwIspStats::Histogram &histogram = stats->yHistogram; > > /* > @@ -54,6 +59,8 @@ void BlackLevel::process(IPAContext &context, > seen += histogram[i]; > if (seen >= pixelThreshold) { > context.activeState.blc.level = i * histogramRatio; > + exposure_ = frameContext.sensor.exposure; > + gain_ = frameContext.sensor.gain; > LOG(IPASoftBL, Debug) > << "Auto-set black level: " > << i << "/" << SwIspStats::kYHistogramSize > diff --git a/src/ipa/simple/algorithms/blc.h b/src/ipa/simple/algorithms/blc.h > index 49bdcc61..828ad8b1 100644 > --- a/src/ipa/simple/algorithms/blc.h > +++ b/src/ipa/simple/algorithms/blc.h > @@ -24,6 +24,10 @@ public: > IPAFrameContext &frameContext, > const SwIspStats *stats, > ControlList &metadata) override; > + > +private: > + uint32_t exposure_; > + double gain_; > }; > > } /* namespace ipa::soft::algorithms */
diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp index 755108b0..b9f2aaa6 100644 --- a/src/ipa/simple/algorithms/blc.cpp +++ b/src/ipa/simple/algorithms/blc.cpp @@ -30,10 +30,15 @@ int BlackLevel::configure(IPAContext &context, void BlackLevel::process(IPAContext &context, [[maybe_unused]] const uint32_t frame, - [[maybe_unused]] IPAFrameContext &frameContext, + IPAFrameContext &frameContext, const SwIspStats *stats, [[maybe_unused]] ControlList &metadata) { + if (frameContext.sensor.exposure == exposure_ && + frameContext.sensor.gain == gain_) { + return; + } + const SwIspStats::Histogram &histogram = stats->yHistogram; /* @@ -54,6 +59,8 @@ void BlackLevel::process(IPAContext &context, seen += histogram[i]; if (seen >= pixelThreshold) { context.activeState.blc.level = i * histogramRatio; + exposure_ = frameContext.sensor.exposure; + gain_ = frameContext.sensor.gain; LOG(IPASoftBL, Debug) << "Auto-set black level: " << i << "/" << SwIspStats::kYHistogramSize diff --git a/src/ipa/simple/algorithms/blc.h b/src/ipa/simple/algorithms/blc.h index 49bdcc61..828ad8b1 100644 --- a/src/ipa/simple/algorithms/blc.h +++ b/src/ipa/simple/algorithms/blc.h @@ -24,6 +24,10 @@ public: IPAFrameContext &frameContext, const SwIspStats *stats, ControlList &metadata) override; + +private: + uint32_t exposure_; + double gain_; }; } /* namespace ipa::soft::algorithms */