[libcamera-devel] [PATCH] ipa: rpi: Fix frame count logic when running algorithms
David Plowman
david.plowman at raspberrypi.com
Mon Sep 25 12:40:11 CEST 2023
Hi Naush
Thanks for the fixes! Indeed, I was noticing this...
On Mon, 25 Sept 2023 at 11:27, Naushir Patuck <naush at raspberrypi.com> wrote:
>
> The frame counter test to determine if we run the IPA algorithms has a
> logic bug where it treats dropFrameCount_ and mistrustCount_ as frame
> numbers, not counts of frames (which it is). The implication is that
> startup convergence and initial settings take one extra frame to apply.
> Fix this.
>
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
Tested-by: David Plowman <david.plowman at raspberrypi.com>
Thanks!
David
> ---
> src/ipa/rpi/common/ipa_base.cpp | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
> index f7e7ad5ee499..5d8344e3e7e3 100644
> --- a/src/ipa/rpi/common/ipa_base.cpp
> +++ b/src/ipa/rpi/common/ipa_base.cpp
> @@ -409,7 +409,7 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
>
> /* Allow a 10% margin on the comparison below. */
> Duration delta = (frameTimestamp - lastRunTimestamp_) * 1.0ns;
> - if (lastRunTimestamp_ && frameCount_ > dropFrameCount_ &&
> + if (lastRunTimestamp_ && frameCount_ >= dropFrameCount_ &&
> delta < controllerMinFrameDuration * 0.9) {
> /*
> * Ensure we merge the previous frame's metadata with the current
> @@ -451,7 +451,7 @@ void IpaBase::processStats(const ProcessParams ¶ms)
> {
> unsigned int ipaContext = params.ipaContext % rpiMetadata_.size();
>
> - if (processPending_ && frameCount_ > mistrustCount_) {
> + if (processPending_ && frameCount_ >= mistrustCount_) {
> RPiController::Metadata &rpiMetadata = rpiMetadata_[ipaContext];
>
> auto it = buffers_.find(params.buffers.stats);
> --
> 2.34.1
>
More information about the libcamera-devel
mailing list