[libcamera-devel] [PATCH] libcamera: ipu3: Do not over-write metadata

Niklas Söderlund niklas.soderlund at ragnatech.se
Fri Feb 19 15:28:34 CET 2021


Hi Jacopo,

Thanks for your work.

On 2021-02-19 12:22:57 +0100, Jacopo Mondi wrote:
> When a Request is completed upon receiving the IPA produced metadata,
> the metadata associated with the Request are over-written, deleting
> the information set, in example, at ImgU output buffer completion time.
> 
> If any additional Request metadata should be registered by inspecting
> the IPA produced metadata it has to be done without deleting the already
> registered entries.
> 
> Fix this by replacing the metadata over-write with a todo entry.
> 
> This change fixes CTS which was broken due to missing metadata in
> the completed requests.
> 
> Fixes: 9708f49fecf2 ("libcamera: ipu3: Share parameter and statistic buffers with IPA")
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
>  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 2aed826a892a..9e867ab2e98a 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -1101,8 +1101,11 @@ void IPU3CameraData::queueFrameAction(unsigned int id,
>  		if (!info)
>  			break;
> 
> +		/*
> +		 * \todo Parse the value of the controls returned by the IPA
> +		 * in action.controls to register additional request metadata.
> +		 */
>  		Request *request = info->request;
> -		request->metadata() = action.controls;

I understand the intent is to keep metadata set by the pipeline but this 
change simply moves the problem. With this change any metadata reported 
by the IPA is discarded. I thought the idea was that all metadata would 
be generated by the IPA? If not I think we need to merge the two here.

If we wish to take this in the direction of this patch I think the IPA 
interface and IPA should also be updated to not report any metadata.

>  		info->metadataProcessed = true;
>  		if (frameInfos_.tryComplete(info))
>  			pipe_->completeRequest(request);
> --
> 2.30.0
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list