[libcamera-devel] [PATCH 02/22] ipu3: ipa: Report effective sensor controls with statistics to IPA

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Nov 10 11:10:49 CET 2021


Quoting Jean-Michel Hautbois (2021-11-09 13:26:26)
> Hi Kieran,
> 
> On 08/11/2021 14:48, Kieran Bingham wrote:
> > Quoting Jean-Michel Hautbois (2021-11-08 13:13:30)
> >> From: Han-Lin Chen <hanlinchen at chromium.org>
> >>
> >> The Intel close sourced IPA requires the effective controls applied to
> >> the sensor when the statistics are generated. Report effective sensor controls
> >> with the stastistics to IPA.
> >>
> >> Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
> >> [Jean-Michel: Reword s/stastistics/statistics]
> > 
> > You missed one in the commit message ;-)
> 
> Thanks :-)
> 
> > 
> >> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> >> ---
> >>   src/libcamera/pipeline/ipu3/frames.h | 3 +++
> >>   src/libcamera/pipeline/ipu3/ipu3.cpp | 5 +++++
> >>   2 files changed, 8 insertions(+)
> >>
> >> diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h
> >> index 3ef7e445..a897e307 100644
> >> --- a/src/libcamera/pipeline/ipu3/frames.h
> >> +++ b/src/libcamera/pipeline/ipu3/frames.h
> >> @@ -12,6 +12,7 @@
> >>   #include <queue>
> >>   #include <vector>
> >>   
> >> +#include <libcamera/controls.h>
> > 
> > I suspect checkstyle would suggest a separate group here.
> 
> Not on my side...

Seems other patches I've seen lately haven't been showing up in
checkstyle either, but running clang-format directly highlights:


--- src/libcamera/pipeline/ipu3/frames.h
+++ src/libcamera/pipeline/ipu3/frames.h.clang
@@ -9,12 +9,14 @@

 #include <map>
 #include <memory>
 #include <vector>

-#include <libcamera/controls.h>
 #include <libcamera/base/signal.h>

+#include <libcamera/controls.h>
+
 namespace libcamera {

 class FrameBuffer;

(Ignore the '<queue>' move if you see that locally, that's a known
false-positive)

> 
> > 
> >>   #include <libcamera/base/signal.h>
> >>   
> >>   namespace libcamera {
> >> @@ -34,6 +35,8 @@ public:
> >>                  FrameBuffer *paramBuffer;
> >>                  FrameBuffer *statBuffer;
> >>   
> >> +               ControlList effectiveSensorControls;
> >> +
> >>                  bool paramDequeued;
> >>                  bool metadataProcessed;
> >>          };
> >> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> >> index 8816efc5..6a7f5b9a 100644
> >> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> >> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> >> @@ -667,6 +667,8 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
> >>                  return ret;
> >>          }
> >>   
> >> +       data->delayedCtrls_->reset();
> >> +
> > 
> > Did I see a commit titled that moves this later?
> 
> Yes, I will squash both ;-)
> > 
> >>          return updateControls(data);
> >>   }
> >>   
> >> @@ -1363,6 +1365,8 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
> >>          request->metadata().set(controls::SensorTimestamp,
> >>                                  buffer->metadata().timestamp);
> >>   
> >> +       info->effectiveSensorControls = delayedCtrls_->get(buffer->metadata().sequence);
> >> +
> >>          if (request->findBuffer(&rawStream_))
> >>                  pipe()->completeBuffer(request, buffer);
> >>   
> >> @@ -1419,6 +1423,7 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
> >>          ev.frame = info->id;
> >>          ev.bufferId = info->statBuffer->cookie();
> >>          ev.frameTimestamp = request->metadata().get(controls::SensorTimestamp);
> >> +       ev.sensorControls = info->effectiveSensorControls;
> >>          ipa_->processEvent(ev);
> >>   }
> >>   
> >> -- 
> >> 2.32.0
> >>


More information about the libcamera-devel mailing list