[libcamera-devel] [PATCH] ipa: rkisp1: ipa_context: Add camera data to IPAContext
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Jun 4 06:16:24 CEST 2023
Hi Kieran,
On Sat, Apr 29, 2023 at 10:42:20PM +0100, Kieran Bingham wrote:
> Quoting Laurent Pinchart via libcamera-devel (2023-04-26 02:10:37)
> > The IPARkISP1 class caches data that is immutable over the life time of
> > the camera in private class members at init() time. This covers the
> > current needs to the IPA module, but doesn't provide a mechanism to
> > access that data from IPA algorithms. This will be needed for instance
> > by the upcoming auto-focus algorithm.
> >
> > To prepare for such use cases, create a new IPACameraData structure that
> > stores immutable camera data, and instantiate it in the IPAContext
> > structure. The IPACameraData structure is currently empty, new members
> > will be added as needed.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> >
> > Bikeshedding on the IPACameraData and IPAContext::data names is welcome
> > :-)
>
> No specific worries about the name ... but given how this doesn't
> actually add the data, but just the structure and 'design' - should we
> add it to the IPU3 as well?
It's a good idea, yes.
> There aren't (currently) specific calls there for init() but perhaps
> that should be improved as well?
>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>
> > ---
> > src/ipa/rkisp1/ipa_context.cpp | 13 +++++++++++++
> > src/ipa/rkisp1/ipa_context.h | 4 ++++
> > src/ipa/rkisp1/rkisp1.cpp | 2 +-
> > 3 files changed, 18 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp
> > index 9bbf368432fa..986b955ea29d 100644
> > --- a/src/ipa/rkisp1/ipa_context.cpp
> > +++ b/src/ipa/rkisp1/ipa_context.cpp
> > @@ -14,6 +14,15 @@
> >
> > namespace libcamera::ipa::rkisp1 {
> >
> > +/**
> > + * \struct IPACameraData
> > + * \brief Camera data for the IPA module
> > + *
> > + * The camera data contains all information about the camera that remains
> > + * constant for the lifetime of the IPA context. It is typically set during the
> > + * init() operation of the IPA module.
> > + */
> > +
> > /**
> > * \struct IPASessionConfiguration
> > * \brief Session configuration for the IPA module
> > @@ -337,6 +346,10 @@ namespace libcamera::ipa::rkisp1 {
> > * \struct IPAContext
> > * \brief Global IPA context data shared between all algorithms
> > *
> > + * \var IPAContext::data
> > + * \brief The IPA camera data, initialized at init time and immutable for the
> > + * lifetime of the context
> > + *
> > * \var IPAContext::configuration
> > * \brief The IPA session configuration, immutable during the session
> > *
> > diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
> > index b9b2065328d6..53b79110c932 100644
> > --- a/src/ipa/rkisp1/ipa_context.h
> > +++ b/src/ipa/rkisp1/ipa_context.h
> > @@ -20,6 +20,9 @@ namespace libcamera {
> >
> > namespace ipa::rkisp1 {
> >
> > +struct IPACameraData {
> > +};
> > +
> > struct IPASessionConfiguration {
> > struct {
> > struct rkisp1_cif_isp_window measureWindow;
> > @@ -143,6 +146,7 @@ struct IPAFrameContext : public FrameContext {
> > };
> >
> > struct IPAContext {
> > + IPACameraData data;
> > IPASessionConfiguration configuration;
> > IPAActiveState activeState;
> >
> > diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> > index 6544c925ba25..2fe66d34b6d4 100644
> > --- a/src/ipa/rkisp1/rkisp1.cpp
> > +++ b/src/ipa/rkisp1/rkisp1.cpp
> > @@ -111,7 +111,7 @@ const ControlInfoMap::Map rkisp1Controls{
> > } /* namespace */
> >
> > IPARkISP1::IPARkISP1()
> > - : context_({ {}, {}, { kMaxFrameContexts } })
> > + : context_({ {}, {}, {}, { kMaxFrameContexts } })
> > {
> > }
> >
> >
> > base-commit: 683c6da83f078d09fc020d2b48a4abe471853b2b
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list