[libcamera-devel] [RFCv2 2/7] libcamera: pipeline: rkisp1: Queue parameters even if they are not ready

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Mar 26 17:49:13 CET 2020


Hi Niklas,

Thank you for the patch.

On Thu, Mar 26, 2020 at 05:08:14PM +0100, Niklas Söderlund wrote:
> If the IPA have not filled in the parameters buffer still queue it to

s/have/has/

> hardware. Not queuing the buffer results in the pipeline and hardware
> going out of sync.
> 
> This is not a permanent fix of the problem and a todo is added to fix it
> properly. This change do not make the situation worse as the state of

s/do/does/

> the pipeline is just as unknown as if no param buffer is queued as if one
> with old content in it.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 2f909cef7c75ba0f..4ec74c5aa8286ffb 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -351,13 +351,23 @@ protected:
>  		if (!info)
>  			LOG(RkISP1, Fatal) << "Frame not known";
>  
> -		if (info->paramFilled)
> -			pipe_->param_->queueBuffer(info->paramBuffer);
> -		else
> +		/*
> +		 * \todo: If parameters are not filled a better method to handle
> +		 * the situation then queing a buffer with unkown content should

s/then/than/
s/unkown/unknown/

> +		 * be used.
> +		 *
> +		 * It seems obsessive to keep an internal zeroed scratch

obsessive ? Did you mean excessive ?

> +		 * parameters buffer around as this should not happen uless the

s/uless/unless/

> +		 * devices is under too much load. Perhaps failing the request
> +		 * and returning it to the applicaiton with an error code is better

s/applicaiton/application/

> +		 * then to queue it to hardware?

s/then to queue/than queuing/

Acked-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> +		 */
> +		if (!info->paramFilled)
>  			LOG(RkISP1, Error)
>  				<< "Parameters not ready on time for frame "
> -				<< frame() << ", ignore parameters.";
> +				<< frame();
>  
> +		pipe_->param_->queueBuffer(info->paramBuffer);
>  		pipe_->stat_->queueBuffer(info->statBuffer);
>  		pipe_->video_->queueBuffer(info->videoBuffer);
>  	}

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list