[libcamera-devel] [PATCH v2 7/7] libcamera: pipeline: ipu3: Pass request metadata to IPA
Umang Jain
umang.jain at ideasonboard.com
Fri May 21 14:50:48 CEST 2021
Hi Kieran
On 5/21/21 2:47 PM, Kieran Bingham wrote:
> Hi Me and Others,
>
> On 19/05/2021 17:04, Laurent Pinchart wrote:
>> Hi Umang (and Kieran),
>>
>> Thank you for the patch.
>>
>> On Wed, May 19, 2021 at 03:49:54PM +0530, Umang Jain wrote:
>>> From: Kieran Bingham <kieran.bingham at ideasonboard.com>
>>>
>>> Pass the request metadata control list to the IPA when setting
>>> passing the statistics buffers, or after the raw buffer completion.
>>>
>>> This allows us to pass in the timestamp and other data from the request
>>> which will be used by the IPA.
>> As commented on the previous version, I think it would be better to pass
>> the timestamp explicitly.
> Yes, that could be ok.
>
> If there are specific things that always need to be passed, this should
> be added as an IPA interface sturcture like is done for the
> IPAConfigInfo perhaps so it's clear and common.
>
> I don't mind if this patch is just dropped from this series to get the
> rest moving.
>
> From what I can tell, only 1/7 needs a small change or a check to
> unblock the rest.
>
> And even that could also be done on top perhaps too.
Agreed. Because would also need to work out ipu3-ipa changes along with
this. It would be better if we address it as a separate task
altogether. I am dropping this patch in next iteration
>
> --
> Kieran
>
>
>>> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>>> ---
>>> src/libcamera/pipeline/ipu3/ipu3.cpp | 5 ++++-
>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
>>> index 5b15ca90..38f66919 100644
>>> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
>>> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
>>> @@ -1285,6 +1285,7 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
>>> ev.op = ipa::ipu3::EventFillParams;
>>> ev.frame = info->id;
>>> ev.bufferId = info->paramBuffer->cookie();
>>> + ev.controls = request->metadata();
>>> ipa_->processEvent(ev);
>>> }
>>>
>>> @@ -1314,6 +1315,8 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
>>> if (!info)
>>> return;
>>>
>>> + Request *request = info->request;
>>> +
>>> if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
>>> info->metadataProcessed = true;
>>>
>>> @@ -1321,7 +1324,6 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
>>> * tryComplete() will delete info if it completes the IPU3Frame.
>>> * In that event, we must have obtained the Request before hand.
>>> */
>>> - Request *request = info->request;
>>>
>>> if (frameInfos_.tryComplete(info))
>>> pipe_->completeRequest(request);
>>> @@ -1333,6 +1335,7 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
>>> ev.op = ipa::ipu3::EventStatReady;
>>> ev.frame = info->id;
>>> ev.bufferId = info->statBuffer->cookie();
>>> + ev.controls = request->metadata();
>>> ipa_->processEvent(ev);
>>> }
>>>
More information about the libcamera-devel
mailing list