[libcamera-devel] [PATCH] ipa: rpi: Fix frame count logic when running algorithms
Naushir Patuck
naush at raspberrypi.com
Mon Sep 25 12:27:14 CEST 2023
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>
---
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