[libcamera-devel] [PATCH v4 5/7] libcamera: delayed_controls: Fix off-by-one error in get()
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Mar 12 14:34:52 CET 2021
On 04/03/2021 08:17, 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")
> Tested-by: David Plowman <david.plowman at raspberrypi.com>
> Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham 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 5a05741c0285..138761c9852e 100644
> --- a/src/libcamera/delayed_controls.cpp
> +++ b/src/libcamera/delayed_controls.cpp
> @@ -184,7 +184,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());
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list