[libcamera-devel] [PATCH v2 1/4] ipa: ipu3: Extend ipu3 ipa interface for sensor and lens controls

Hanlin Chen hanlinchen at chromium.org
Wed Nov 10 13:26:21 CET 2021


Hi Jean-Michel,
I'm sorry for the late reply.

On Thu, Nov 4, 2021 at 7:40 PM Jean-Michel Hautbois
<jeanmichel.hautbois at ideasonboard.com> wrote:
>
> Hi Han-Lin,
>
> Thanks for the patch.
>
> On 29/10/2021 13:59, Han-Lin Chen wrote:
> > IPU3Event and IPU3Action use single ControlList for both libcamera and V4L2
> > controls, and it's content could be either one based on the context.
> > Extend IPU3Event and IPU3Action for sensor and lens V4L2 controls, and preserve
> > the original one for only libcamera Controls to make the content of an event
> > more specific.
> >
> > Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
> > ---
> >   include/libcamera/ipa/ipu3.mojom     | 4 ++++
> >   src/ipa/ipu3/ipu3.cpp                | 2 +-
> >   src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
> >   3 files changed, 6 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom
> > index 2f254ed4..cc0d822f 100644
> > --- a/include/libcamera/ipa/ipu3.mojom
> > +++ b/include/libcamera/ipa/ipu3.mojom
> > @@ -23,11 +23,15 @@ struct IPU3Event {
> >       int64 frameTimestamp;
> >       uint32 bufferId;
> >       libcamera.ControlList controls;
> > +     libcamera.ControlList sensorControls;
> > +     libcamera.ControlList lensControls;
>
> I would split sensorControls adding and lensControls adding in two patch
> series, as the first one could be merged quickly, and could be useful
> also for the open IPA :-). One series would be "add sensorControls to
> use effective sensor values" and the second (biggest one) would then add
> (on top of it) the lens controls.
Thanks! The patches looks great to me.
>
> >   };
> >
> >   struct IPU3Action {
> >       IPU3Operations op;
> >       libcamera.ControlList controls;
> > +     libcamera.ControlList sensorControls;
> > +     libcamera.ControlList lensControls;
> >   };
> >
> >   struct IPAConfigInfo {
> > diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> > index 5c51607d..6775570e 100644
> > --- a/src/ipa/ipu3/ipu3.cpp
> > +++ b/src/ipa/ipu3/ipu3.cpp
> > @@ -646,7 +646,7 @@ void IPAIPU3::setControls(unsigned int frame)
> >       ControlList ctrls(ctrls_);
> >       ctrls.set(V4L2_CID_EXPOSURE, static_cast<int32_t>(exposure_));
> >       ctrls.set(V4L2_CID_ANALOGUE_GAIN, static_cast<int32_t>(gain_));
> > -     op.controls = ctrls;
> > +     op.sensorControls = ctrls;
> >
> >       queueFrameAction.emit(frame, op);
> >   }
> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> > index eb714aa6..8816efc5 100644
> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> > @@ -1248,7 +1248,7 @@ void IPU3CameraData::queueFrameAction(unsigned int id,
> >   {
> >       switch (action.op) {
> >       case ipa::ipu3::ActionSetSensorControls: {
> > -             const ControlList &controls = action.controls;
> > +             const ControlList &controls = action.sensorControls;
> >               delayedCtrls_->push(controls);
> >               break;
> >       }
> >


More information about the libcamera-devel mailing list