[RFC PATCH 6/7] ipa: rkisp1: Add a lookahead of one frame when sending sensor controls

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Jan 12 23:12:37 CET 2025


Hi Stefan,

Thank you for the patch.

On Fri, Dec 20, 2024 at 05:26:52PM +0100, Stefan Klug wrote:
> When the delayed controls instance of the pipeline is reset, it initializes
> the values for frame 0 as being sent out to the sensor (which is
> correct). The next sequence number that can be pushed to delayed
> controls is therefore number 1. Ensure that the IPA never tries to
> queue controls for frame 0.

What happens to the controls passed in request 0 ?

I know the existing code doesn't behave correctly, but it feels that
this series is piling hacks towards a result that will be even more
difficult to untangle :-S I'd like a second opinion on this.

> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> ---
>  src/ipa/rkisp1/rkisp1.cpp | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> index 799fe0846635..5d439e0d727b 100644
> --- a/src/ipa/rkisp1/rkisp1.cpp
> +++ b/src/ipa/rkisp1/rkisp1.cpp
> @@ -386,10 +386,13 @@ void IPARkISP1::processStats(const uint32_t frame, const uint32_t bufferId,
>  
>  	/*
>  	 * \todo: Here we should do a lookahead that takes the sensor delays
> -	 * into account.
> +	 * into account. A lookahead of 1 is the smallest lookahead possible to
> +	 * ensure we don't try to send the controls for a frame that we already
> +	 * received.
>  	 */
> -	ControlList ctrls = getSensorControls(frame);
> -	setSensorControls.emit(frame, ctrls);
> +	int lookahead = 1;
> +	ControlList ctrls = getSensorControls(frame + lookahead);
> +	setSensorControls.emit(frame + lookahead, ctrls);
>  
>  	context_.debugMetadata.moveEntries(metadata);
>  	metadataReady.emit(frame, metadata);

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list