[libcamera-devel] [PATCH v4 11/32] ipa: ipu3: Pass controls to algorithm's queueRequest() handler

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Sep 8 03:41:39 CEST 2022


The the Algorithm::queueRequest() function of all algorithms when a
request is queue, to pass the request controls to the algorithms. We can
now drop the copy of the control list stored in IPAFrameContext as it
isn't used anymore.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/ipa/ipu3/ipa_context.cpp | 3 ---
 src/ipa/ipu3/ipa_context.h   | 3 ---
 src/ipa/ipu3/ipu3.cpp        | 4 ++--
 3 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/src/ipa/ipu3/ipa_context.cpp b/src/ipa/ipu3/ipa_context.cpp
index 6904ccbbdf8b..bd71b615365d 100644
--- a/src/ipa/ipu3/ipa_context.cpp
+++ b/src/ipa/ipu3/ipa_context.cpp
@@ -168,9 +168,6 @@ namespace libcamera::ipa::ipu3 {
  * \struct IPAFrameContext
  * \brief IPU3-specific FrameContext
  *
- * \var IPAFrameContext::frameControls
- * \brief Controls sent in by the application while queuing the request
- *
  * \var IPAFrameContext::sensor
  * \brief Effective sensor values that were applied for the frame
  *
diff --git a/src/ipa/ipu3/ipa_context.h b/src/ipa/ipu3/ipa_context.h
index bfc0196e098a..36099353e9f2 100644
--- a/src/ipa/ipu3/ipa_context.h
+++ b/src/ipa/ipu3/ipa_context.h
@@ -12,7 +12,6 @@
 
 #include <libcamera/base/utils.h>
 
-#include <libcamera/controls.h>
 #include <libcamera/geometry.h>
 
 #include <libipa/fc_queue.h>
@@ -78,8 +77,6 @@ struct IPAFrameContext : public FrameContext {
 		uint32_t exposure;
 		double gain;
 	} sensor;
-
-	ControlList frameControls;
 };
 
 struct IPAContext {
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index 8158ca0883e8..844ab6de03c7 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -666,8 +666,8 @@ void IPAIPU3::queueRequest(const uint32_t frame, const ControlList &controls)
 	/* \todo Start processing for 'frame' based on 'controls'. */
 	IPAFrameContext &frameContext = context_.frameContexts.init(frame);
 
-	/* \todo Implement queueRequest to each algorithm. */
-	frameContext.frameControls = controls;
+	for (auto const &algo : algorithms())
+		algo->queueRequest(context_, frame, frameContext, controls);
 }
 
 /**
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list