diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-07-21 13:13:10 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-09-28 05:41:07 +0300 |
commit | 6349cf6ea5a6641476e0e85e93442a87dbe56909 (patch) | |
tree | c3ec214895f5b09cb11578a7dcdec7267d49ebe2 /src/ipa | |
parent | 85c5c47325ab7e5017e6e98421be0e18fcf69be2 (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')
-rw-r--r-- | src/ipa/ipu3/ipa_context.cpp | 3 | ||||
-rw-r--r-- | src/ipa/ipu3/ipa_context.h | 3 | ||||
-rw-r--r-- | src/ipa/ipu3/ipu3.cpp | 5 |
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); } /** |