| Message ID | 20250929201924.45019-8-mzamazal@redhat.com |
|---|---|
| State | Accepted |
| Headers | show |
| Series |
|
| Related | show |
Quoting Milan Zamazal (2025-09-29 21:19:24) > If the histogram size is non-zero but lower than the number of bins, > yHistValsPerBin is zero and then the AGC processing crashes on division > by it. Let's check yHistValsPerBin for being zero and stop AGC > processing in such a case. The condition also covers the cases where > histogramSize or yHistValsPerBinMod are zero. > > Tested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > Reviewed-by: Hans de Goede <hansg@kernel.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > Signed-off-by: Milan Zamazal <mzamazal@redhat.com> > --- > src/ipa/simple/algorithms/agc.cpp | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/src/ipa/simple/algorithms/agc.cpp b/src/ipa/simple/algorithms/agc.cpp > index c46bb0ebe..e47949ec4 100644 > --- a/src/ipa/simple/algorithms/agc.cpp > +++ b/src/ipa/simple/algorithms/agc.cpp > @@ -124,6 +124,12 @@ void Agc::process(IPAContext &context, > unsigned int denom = 0; > unsigned int num = 0; > > + if (yHistValsPerBin == 0) { > + LOG(IPASoftExposure, Debug) > + << "Not adjusting exposure due to insufficient histogram data"; > + return; > + } > + > for (unsigned int i = 0; i < histogramSize; i++) { > unsigned int idx = (i - (i / yHistValsPerBinMod)) / yHistValsPerBin; > exposureBins[idx] += histogram[blackLevelHistIdx + i]; > -- > 2.51.0 >
diff --git a/src/ipa/simple/algorithms/agc.cpp b/src/ipa/simple/algorithms/agc.cpp index c46bb0ebe..e47949ec4 100644 --- a/src/ipa/simple/algorithms/agc.cpp +++ b/src/ipa/simple/algorithms/agc.cpp @@ -124,6 +124,12 @@ void Agc::process(IPAContext &context, unsigned int denom = 0; unsigned int num = 0; + if (yHistValsPerBin == 0) { + LOG(IPASoftExposure, Debug) + << "Not adjusting exposure due to insufficient histogram data"; + return; + } + for (unsigned int i = 0; i < histogramSize; i++) { unsigned int idx = (i - (i / yHistValsPerBinMod)) / yHistValsPerBin; exposureBins[idx] += histogram[blackLevelHistIdx + i];