From 51533fecae8d9efb82a436eb26504cb8a8db9170 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 25 Sep 2023 11:27:14 +0100 Subject: ipa: rpi: Fix frame count logic when running algorithms 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 Reviewed-by: David Plowman Tested-by: David Plowman Reviewed-by: Kieran Bingham Signed-off-by: Kieran Bingham --- src/ipa/rpi/common/ipa_base.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/ipa/rpi') diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp index f7e7ad5e..5d8344e3 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); -- cgit v1.2.1