[PATCH v3] ipa: libipa: histogram: Add transform parameter to constructor
Paul Elder
paul.elder at ideasonboard.com
Wed May 8 16:56:15 CEST 2024
On Wed, May 08, 2024 at 01:08:31PM +0000, Barnabás Pőcze wrote:
> Hi
>
>
> 2024. május 8., szerda 12:35 keltezéssel, Paul Elder <paul.elder at ideasonboard.com> írta:
>
> > Add a parameter to the histogram constructor that takes a transformation
> > function to apply to all the bins upon construction.
> >
> > This is necessary notably for the rkisp1, as the values reported from
> > the hardware are 20 bits where the upper 16-bits are meaningful integer
> > values and the lower 4 bits are fractional and meant to be discarded. As
> > adding a right-shift parameter is probably too specialized, a generic
> > function is added as a parameter instead.
> >
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> >
> > [...]
> > diff --git a/src/ipa/libipa/histogram.h b/src/ipa/libipa/histogram.h
> > index 54bb2a19..26326125 100644
> > --- a/src/ipa/libipa/histogram.h
> > +++ b/src/ipa/libipa/histogram.h
> > @@ -10,10 +10,10 @@
> > #include <assert.h>
> > #include <limits.h>
> > #include <stdint.h>
> > -
> > #include <vector>
> >
> > #include <libcamera/base/span.h>
> > +#include <libcamera/base/utils.h>
> >
> > namespace libcamera {
> >
> > @@ -23,7 +23,17 @@ class Histogram
> > {
> > public:
> > Histogram() { cumulative_.push_back(0); }
> > - Histogram(Span<const uint32_t> data);
> > +
> > + template<typename Transform>
> > + Histogram(Span<const uint32_t> data,
> > + Transform transform = [](uint32_t x) { return x; })
> > + {
> > + cumulative_.resize(data.size() + 1);
> > + cumulative_[0] = 0;
> > + for (const auto &[i, value] : utils::enumerate(data))
> > + cumulative_[i + 1] = cumulative_[i] + transform(value);
> > + }
>
> As far as I am aware this won't compile if called with just a single argument.
>
> You can solve that by adding another constructor, like this:
>
> Histogram(Span<const uint32_t> data)
> : Histogram(data, [](uint32_t x) { return x; })
> { }
Yeeep I realized that soon after...
New version incoming!
Paul
>
> and removing the default argument from the other.
>
>
> > [...]
>
More information about the libcamera-devel
mailing list