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

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Tue Nov 9 14:26:26 CET 2021


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...

> 
>>   #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