summaryrefslogtreecommitdiff
path: root/src/ipa/ipu3
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-07-21 13:13:10 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-09-28 05:41:07 +0300
commit6349cf6ea5a6641476e0e85e93442a87dbe56909 (patch)
treec3ec214895f5b09cb11578a7dcdec7267d49ebe2 /src/ipa/ipu3
parent85c5c47325ab7e5017e6e98421be0e18fcf69be2 (diff)
ipa: ipu3: Pass controls to algorithm's queueRequest() handler
Call the Algorithm::queueRequest() function of all algorithms when a request is queued, 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@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/ipa/ipu3')
-rw-r--r--src/ipa/ipu3/ipa_context.cpp3
-rw-r--r--src/ipa/ipu3/ipa_context.h3
-rw-r--r--src/ipa/ipu3/ipu3.cpp5
3 files changed, 2 insertions, 9 deletions
diff --git a/src/ipa/ipu3/ipa_context.cpp b/src/ipa/ipu3/ipa_context.cpp
index 6904ccbb..bd71b615 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 bfc0196e..36099353 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 96dc2af2..d1ea081d 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -663,11 +663,10 @@ void IPAIPU3::processStatsBuffer(const uint32_t frame,
*/
void IPAIPU3::queueRequest(const uint32_t frame, const ControlList &controls)
{
- /* \todo Start processing for 'frame' based on 'controls'. */
IPAFrameContext &frameContext = context_.frameContexts.alloc(frame);
- /* \todo Implement queueRequest to each algorithm. */
- frameContext.frameControls = controls;
+ for (auto const &algo : algorithms())
+ algo->queueRequest(context_, frame, frameContext, controls);
}
/**