[libcamera-devel] [PATCH v2 03/14] ipa: ipu3: Use sensor controls to update frameContext

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Wed Nov 10 23:10:54 CET 2021


Hi Kieran,

On 10/11/2021 22:50, Kieran Bingham wrote:
> Hi JM,
> 
> Quoting Jean-Michel Hautbois (2021-11-10 19:58:50)
>> The pipeline handler populates the new sensorControls ControlList, to
>> have the effective exposure and gain values for the current frame. This
>> is done when a statistics buffer is received.
>>
>> Make those values the frameContext::agc values for the frame when the
>> EventStatReady event is received.
>>
>> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
>> ---
>>   src/ipa/ipu3/ipu3.cpp | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
>> index bcc3863b..1111f200 100644
>> --- a/src/ipa/ipu3/ipu3.cpp
>> +++ b/src/ipa/ipu3/ipu3.cpp
>> @@ -549,6 +549,10 @@ void IPAIPU3::processEvent(const IPU3Event &event)
>>                  const ipu3_uapi_stats_3a *stats =
>>                          reinterpret_cast<ipu3_uapi_stats_3a *>(mem.data());
>>   
>> +               /* \todo move those into processControls ? */
>> +               context_.frameContext.agc.exposure = event.sensorControls.get(V4L2_CID_EXPOSURE).get<int32_t>();
>> +               context_.frameContext.agc.gain = camHelper_->gain(event.sensorControls.get(V4L2_CID_ANALOGUE_GAIN).get<int32_t>());
> 
> My only worry with this reading it now, is that we are storing the
> exposure and gain of the frame that that is associated with the
> statistics in what I had thought was a structure that maps the 'output'
> of the algorithms.

I am not sure it is only the output, it is a frame context, input and 
output.

> 
> You've explored this a bit more now - so you probably have a much better
> idea than me. This is ultimately an 'input' to the algorithms. Do we
> need to distinguish between the 'input' and 'output' ? (I.e. do we need
> to have both values kept so that the algorithm can determine how much it
> is changing? Or is that not a problem because it's all handled
> internally anyway....

We update the value for the input of the algorithms, and they will 
update those values. It is debatable though: should we have two 
frameContexts, one before and one after the algorithm for instance ? I 
can't see a real value to add this though.

> 
>> +
>>                  parseStatistics(event.frame, event.frameTimestamp, stats);
>>                  break;
>>          }
>> -- 
>> 2.32.0
>>


More information about the libcamera-devel mailing list