[libcamera-devel] [PATCH v2 5/5] libcamera: delayed_controls: Fix off-by-one error in get()

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Mon Mar 1 10:54:35 CET 2021


Hi Naush,

On Tue, Feb 16, 2021 at 08:53:42AM +0000, Naushir Patuck wrote:
> There was an off-by-one error in DelayedControls::get() when picking
> controls from the queue to return back to the pipeline handler.
> This is only noticeable as small oscillations in brightness when closely
> viewing frame while AGC is running. The old StaggeredCtrl did not show
> this error as the startup queuing mechanism has changed in
> DelayedControls.
> 
> Fix this by indexing to the correct position in the queue.
> 
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> Reported-by: David Plowman <david.plowman at raspberrypi.com>
> Fixes: 3d4b7b005911 ("libcamera: delayed_controls: Add helper for controls that apply with a delay")

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/libcamera/delayed_controls.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/delayed_controls.cpp b/src/libcamera/delayed_controls.cpp
> index d1b79dc3570e..3f829e8c40f2 100644
> --- a/src/libcamera/delayed_controls.cpp
> +++ b/src/libcamera/delayed_controls.cpp
> @@ -183,7 +183,7 @@ bool DelayedControls::push(const ControlList &controls)
>   */
>  ControlList DelayedControls::get(uint32_t sequence)
>  {
> -	uint32_t adjustedSeq = sequence - firstSequence_ + 1;
> +	uint32_t adjustedSeq = sequence - firstSequence_;
>  	unsigned int index = std::max<int>(0, adjustedSeq - maxDelay_);
>  
>  	ControlList out(device_->controls());
> -- 
> 2.25.1
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list